Merge lp:~inddiana/sisb/sisb_add_modulo_unidad_de_calculo_plus_cchica into lp:sisb

Proposed by [SISB] Aryrosa Fuentes
Status: Merged
Merged at revision: 987
Proposed branch: lp:~inddiana/sisb/sisb_add_modulo_unidad_de_calculo_plus_cchica
Merge into: lp:sisb
Diff against target: 783 lines (+742/-0)
7 files modified
sisb_calculation_unit/__init__.py (+3/-0)
sisb_calculation_unit/__openerp__.py (+21/-0)
sisb_calculation_unit/i18n/es_VE.po (+153/-0)
sisb_calculation_unit/model/__init__.py (+3/-0)
sisb_calculation_unit/model/sisb_calculation_unit.py (+379/-0)
sisb_calculation_unit/security/ir.model.access.csv (+7/-0)
sisb_calculation_unit/view/sisb_calculation_unit_view.xml (+176/-0)
To merge this branch: bzr merge lp:~inddiana/sisb/sisb_add_modulo_unidad_de_calculo_plus_cchica
Reviewer Review Type Date Requested Status
Juan Lugo Pending
Review via email: mp+337436@code.launchpad.net

Description of the change

[ADD] Módulo que toma en cuenta la nueva unidad para el cálculo aritmético del
umbral máximo y mínimo (UCAU), será utilizada como sustituto de la unidad
tributaria en las operaciones aritméticas basadas en dicho indicador para
el establecimiento del monto máximo de constitución de los fondos de
caja chica.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory 'sisb_calculation_unit'
2=== added file 'sisb_calculation_unit/__init__.py'
3--- sisb_calculation_unit/__init__.py 1970-01-01 00:00:00 +0000
4+++ sisb_calculation_unit/__init__.py 2018-02-09 12:50:59 +0000
5@@ -0,0 +1,3 @@
6+# -*- coding: utf-8 -*-
7+
8+import model
9
10=== added file 'sisb_calculation_unit/__openerp__.py'
11--- sisb_calculation_unit/__openerp__.py 1970-01-01 00:00:00 +0000
12+++ sisb_calculation_unit/__openerp__.py 2018-02-09 12:50:59 +0000
13@@ -0,0 +1,21 @@
14+# -*- coding: utf-8 -*-
15+
16+{
17+ 'name': 'Registration of Calculation Units',
18+ 'version': '0.1',
19+ 'category': 'Account',
20+ 'description':'Registration of Calculation Units for UCAU among others',
21+ 'author': 'Industrias Diana, C.A.',
22+ 'website': 'http://www.industriasdiana.gob.ve',
23+ 'depends': ['account',
24+ 'l10n_ve_caja_chica',
25+ ],
26+ 'update_xml': [
27+ 'security/ir.model.access.csv',
28+ 'view/sisb_calculation_unit_view.xml',
29+ ],
30+ 'data': [
31+ ],
32+ 'installable': True,
33+ 'active': False,
34+}
35
36=== added directory 'sisb_calculation_unit/i18n'
37=== added file 'sisb_calculation_unit/i18n/es_VE.mo'
38Binary files sisb_calculation_unit/i18n/es_VE.mo 1970-01-01 00:00:00 +0000 and sisb_calculation_unit/i18n/es_VE.mo 2018-02-09 12:50:59 +0000 differ
39=== added file 'sisb_calculation_unit/i18n/es_VE.po'
40--- sisb_calculation_unit/i18n/es_VE.po 1970-01-01 00:00:00 +0000
41+++ sisb_calculation_unit/i18n/es_VE.po 2018-02-09 12:50:59 +0000
42@@ -0,0 +1,153 @@
43+# Translation of OpenERP Server.
44+# This file contains the translation of the following modules:
45+# * sisb_calculation_unit
46+#
47+msgid ""
48+msgstr ""
49+"Project-Id-Version: OpenERP Server 6.0.4\n"
50+"Report-Msgid-Bugs-To: support@openerp.com\n"
51+"POT-Creation-Date: 2018-02-07 19:41+0000\n"
52+"PO-Revision-Date: 2018-02-07 15:11-0400\n"
53+"Last-Translator: Aryrosa Fuentes <afuentes@industriasdiana.gob.ve>\n"
54+"Language-Team: \n"
55+"MIME-Version: 1.0\n"
56+"Content-Type: text/plain; charset=UTF-8\n"
57+"Content-Transfer-Encoding: 8bit\n"
58+"Plural-Forms: \n"
59+
60+#. module: sisb_calculation_unit
61+#: help:sisb.calculation.unit,amount:0
62+msgid "Amount of the calculation unit in Bs"
63+msgstr "Monto del cálculo en Bs."
64+
65+#. module: sisb_calculation_unit
66+#: model:ir.model,name:sisb_calculation_unit.model_caja_reposicion
67+msgid "Reposicion de Caja Chica"
68+msgstr "Reposición de Caja Chica"
69+
70+#. module: sisb_calculation_unit
71+#: field:caja.chica,calculation_unit:0
72+#: model:ir.actions.act_window,name:sisb_calculation_unit.act_sisb_calculation_unit_tree
73+#: model:ir.model,name:sisb_calculation_unit.model_sisb_calculation_unit
74+#: model:ir.ui.menu,name:sisb_calculation_unit.conf_sisb_calc_unit
75+#: model:ir.ui.menu,name:sisb_calculation_unit.menu_action_sisb_calculation_unit_tree
76+#: view:sisb.calculation.unit:0
77+msgid "Calculation Unit"
78+msgstr "Unidad de Cálculo"
79+
80+#. module: sisb_calculation_unit
81+#: constraint:caja.chica:0
82+msgid "El saldo de la caja chica es superior al monto permitido para una caja chica"
83+msgstr "El saldo de la caja chica es superior al monto permitido para una caja chica"
84+
85+#. module: sisb_calculation_unit
86+#: view:sisb.calculation.unit:0
87+msgid "Group By..."
88+msgstr "Agrupado por..."
89+
90+#. module: sisb_calculation_unit
91+#: selection:caja.chica,calculation_unit:0
92+msgid "Other"
93+msgstr "Otra Unidad"
94+
95+#. module: sisb_calculation_unit
96+#: model:ir.model,name:sisb_calculation_unit.model_caja_reposicion_linea
97+msgid "Lineas la Reposicion de Caja"
98+msgstr "Líneas la Reposición de Caja"
99+
100+#. module: sisb_calculation_unit
101+#: selection:caja.chica,calculation_unit:0
102+msgid "U.T"
103+msgstr "Unidad Tributaria"
104+
105+#. module: sisb_calculation_unit
106+#: field:sisb.calculation.unit.type,name:0
107+#: help:sisb.calculation.unit.type,name:0
108+msgid "Unit type"
109+msgstr "Tipo de unidad"
110+
111+#. module: sisb_calculation_unit
112+#: field:caja.chica,unit_type_id:0
113+#: view:sisb.calculation.unit:0
114+#: field:sisb.calculation.unit,unit_type_id:0
115+msgid "Unit Type"
116+msgstr "Tipo de Unidad"
117+
118+#. module: sisb_calculation_unit
119+#: model:ir.actions.act_window,name:sisb_calculation_unit.act_sisb_calculation_unit_type_tree
120+#: model:ir.model,name:sisb_calculation_unit.model_sisb_calculation_unit_type
121+#: model:ir.ui.menu,name:sisb_calculation_unit.menu_action_sisb_calculation_unit_type_tree
122+#: view:sisb.calculation.unit.type:0
123+msgid "Calculation Unit Type"
124+msgstr "Tipo de unidad de cálculo"
125+
126+#. module: sisb_calculation_unit
127+#: help:sisb.calculation.unit,name:0
128+msgid "Reference number under the law"
129+msgstr "Número de referencia de la gaceta oficial"
130+
131+#. module: sisb_calculation_unit
132+#: model:ir.actions.act_window,help:sisb_calculation_unit.act_sisb_calculation_unit_type_tree
133+msgid "Defines the type of calculation unit."
134+msgstr "Define el tipo de unidad de cálculo."
135+
136+#. module: sisb_calculation_unit
137+#: field:sisb.calculation.unit,date:0
138+msgid "Date"
139+msgstr "Fecha"
140+
141+#. module: sisb_calculation_unit
142+#: constraint:caja.reposicion.linea:0
143+msgid "El monto de la linea excede las unidades de calculo permitidas. No puede ser aprobada la reposicion."
144+msgstr "El monto de la linea excede las unidades de calculo permitidas. No puede ser aprobada la reposicion."
145+
146+#. module: sisb_calculation_unit
147+#: help:sisb.calculation.unit,date:0
148+msgid "Date on which goes into effect the new Unit Calculation Unit"
149+msgstr "Fecha donde entrará en vigencia la nueva unidad para la unidad de cálculo."
150+
151+#. module: sisb_calculation_unit
152+#: field:sisb.calculation.unit,user_id:0
153+msgid "Responsible"
154+msgstr "Responsable"
155+
156+#. module: sisb_calculation_unit
157+#: model:ir.model,name:sisb_calculation_unit.model_caja_chica
158+msgid "Caja Chica"
159+msgstr "Caja Chica"
160+
161+#. module: sisb_calculation_unit
162+#: view:sisb.calculation.unit.type:0
163+msgid "Search Calculation Unit Type"
164+msgstr "Búsqueda de tipo de unidad de cálculo"
165+
166+#. module: sisb_calculation_unit
167+#: field:sisb.calculation.unit,amount:0
168+msgid "Amount"
169+msgstr "Monto"
170+
171+#. module: sisb_calculation_unit
172+#: view:sisb.calculation.unit:0
173+msgid "Search Calculation Unit"
174+msgstr "Búsqueda de unidad de cálculo"
175+
176+#. module: sisb_calculation_unit
177+#: field:sisb.calculation.unit,name:0
178+msgid "Reference number"
179+msgstr "Número de referencia"
180+
181+#. module: sisb_calculation_unit
182+#: model:ir.actions.act_window,help:sisb_calculation_unit.act_sisb_calculation_unit_tree
183+msgid "With Calculation Unit you can create and manage the calculation unit. The Calculation Unit is established under the law of each country, is used for the petty cash, viatical and travel expenses, among others."
184+msgstr "Con la unidad de cálculo puede crear y administrar la unidad de cálculo aritmético. La unidad de cálculo se establece bajo la ley de cada país, se utiliza para el efectivo de caja chica, viáticos y gastos de viaje, entre others."
185+
186+#. module: sisb_calculation_unit
187+#: view:caja.chica:0
188+msgid "Calculating Unit"
189+msgstr "Unidad de Cálculo"
190+
191+#. module: sisb_calculation_unit
192+#: view:sisb.calculation.unit:0
193+msgid "Calculation Unit per date"
194+msgstr "Unidad de cálculo por fecha"
195+
196
197=== added directory 'sisb_calculation_unit/model'
198=== added file 'sisb_calculation_unit/model/__init__.py'
199--- sisb_calculation_unit/model/__init__.py 1970-01-01 00:00:00 +0000
200+++ sisb_calculation_unit/model/__init__.py 2018-02-09 12:50:59 +0000
201@@ -0,0 +1,3 @@
202+# -*- coding: utf-8 -*-
203+
204+import sisb_calculation_unit
205
206=== added file 'sisb_calculation_unit/model/sisb_calculation_unit.py'
207--- sisb_calculation_unit/model/sisb_calculation_unit.py 1970-01-01 00:00:00 +0000
208+++ sisb_calculation_unit/model/sisb_calculation_unit.py 2018-02-09 12:50:59 +0000
209@@ -0,0 +1,379 @@
210+#!/usr/bin/python
211+# -*- encoding: utf-8 -*-
212+###########################################################################
213+# Copyright (C) Industrias Diana, C.A. (www.industriasdiana.gob.ve)
214+# All Rights Reserved
215+###############Credits######################################################
216+# Developed by: Industrias Diana, C.A.
217+##############################################################################
218+
219+from osv import osv
220+from osv import fields
221+from tools import config
222+from tools.translate import _
223+import time
224+import decimal_precision as dp
225+import unicodedata
226+
227+
228+def elimina_tildes(s):
229+ """
230+ Funcion para eliminar las tildes de algun texto utilizando el modulo unicodedata.
231+ """
232+ return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn')).replace("'","")
233+
234+
235+
236+
237+class sisb_calculation_unit_type(osv.osv):
238+
239+ _name = 'sisb.calculation.unit.type'
240+ _description = 'Calculation Unit Type'
241+ _columns = {
242+ 'name':fields.char('Unit type', size=64, required=True, readonly=False, help="Unit type"),
243+ }
244+
245+sisb_calculation_unit_type()
246+
247+
248+class sisb_calculation_unit(osv.osv):
249+
250+ _name = 'sisb.calculation.unit'
251+ _description = 'Calculation Unit'
252+ _order = 'date desc'
253+ _columns = {
254+ 'name':fields.char('Reference number', size=64, required=True, readonly=False, help="Reference number under the law"),
255+ 'date': fields.date('Date', required=True, help="Date on which goes into effect the new Unit Calculation Unit"),
256+ 'amount': fields.float('Amount',digits_compute= dp.get_precision('Amount Bs per UT'), help="Amount of the calculation unit in Bs", required=True),
257+ 'user_id': fields.many2one('res.users', 'Responsible', readonly=True),
258+ 'unit_type_id': fields.many2one('sisb.calculation.unit.type', 'Unit Type', required=True),
259+ }
260+ _defaults = {
261+ 'name': lambda *a: None,
262+ 'user_id': lambda s, cr, u, c: u,
263+ }
264+
265+
266+ def get_amount_cu(self, cr, uid, name_type_cu, date=False, *args):
267+ """
268+ name_type_cu: nombre del tipo de unidad de calculo
269+ """
270+ #consultar type_cu
271+ type_cu_obj = self.pool.get('sisb.calculation.unit.type')
272+ type_cu_id = type_cu_obj.search(cr, uid, [('name','=', name_type_cu)])
273+ type_cu_id = type_cu_id and type_cu_id[0] or False
274+ #Extraer valor de la unidad segun el tipo
275+ rate = 0
276+ if type_cu_id:
277+ date= date or time.strftime('%Y-%m-%d')
278+ cr.execute("SELECT amount FROM sisb_calculation_unit WHERE unit_type_id = '%s' and date <= '%s' ORDER BY date desc LIMIT 1" % (type_cu_id, date))
279+ if cr.rowcount:
280+ rate=cr.fetchall()[0][0]
281+ return rate
282+
283+ def compute(self, cr, uid, from_amount, name_type_cu, date=False, context={}):
284+ result = 0.0
285+ cu = self.get_amount_cu(cr, uid, name_type_cu, date=False)
286+ if cu:
287+ result = from_amount / cu
288+
289+ return result
290+
291+ def compute_cu_to_money(self, cr, uid, amount_cu, name_type_cu, date=False, context={}):
292+ money = 0.0
293+ cu = self.get_amount_cu(cr, uid, name_type_cu, date)
294+ if cu:
295+ money = amount_cu * cu
296+ return money
297+
298+sisb_calculation_unit()
299+
300+class caja_chica(osv.osv):
301+ _inherit = "caja.chica"
302+
303+ #Se sobrescribe la funcion del constraint del modelo de caja.chica
304+ def _check_monto_caja_chica(self, cr, uid, ids, context=None):
305+ """ Verificar que el monto de la caja chica, no exceda la cantidad de
306+ unidades permitidas configurado para caja chica.
307+ @return: True (bien) or False (mal)
308+ """
309+ print '_check_monto_caja_chica'
310+ if context is None:
311+ context = {}
312+
313+ lista_ut = []
314+ lista_uc = []
315+ resultado = True
316+ for ca_ch in self.browse(cr, uid, ids):
317+
318+ if ca_ch.calculation_unit == 'ut':
319+ lista_ut.append(ca_ch.id)
320+ else:
321+ lista_uc.append(ca_ch.id)
322+
323+ if lista_ut:
324+ resultado = super(caja_chica, self)._check_monto_caja_chica(cr, uid, lista_ut, context=context)
325+
326+ if resultado and lista_uc:
327+ for ca_ch in self.browse(cr, uid, lista_uc, context=context):
328+ if not ca_ch.config:
329+ raise osv.except_osv(('Error !'), ('No existe configuracion para caja chica creada'))
330+
331+
332+ ####OBTENER CONFIGURACION DE LA UNIDAD DE CALCULO#####
333+ calc_unit_type = ca_ch.unit_type_id and ca_ch.unit_type_id.name or False
334+ cu_obj = self.pool.get('sisb.calculation.unit')
335+ fecha_actual = time.strftime('%Y-%m-%d')
336+ ut_ser = cu_obj.get_amount_cu(cr, uid, calc_unit_type, fecha_actual)
337+
338+ if not ut_ser:
339+ raise osv.except_osv(('Error !'), ('No existe unidad de calculo creada para la caja chica'))
340+ ###########################################################
341+
342+ maximo_ut = float(ca_ch.config.max_reposicion)
343+ ut_amount = float(ut_ser)
344+ monto_caja = float(ca_ch.amount)
345+ monto_permitido = maximo_ut * ut_amount
346+ print 'monto_permitido',monto_permitido
347+ if (monto_permitido - monto_caja) < 0:
348+ raise osv.except_osv(('Error !'), ('El saldo de la caja chica es superior a las %s %s permitida'%(maximo_ut, calc_unit_type)))
349+ return False
350+
351+ return True
352+
353+ return resultado
354+
355+ _columns = {
356+ 'calculation_unit': fields.selection([('other','Other'),('ut','U.T')], 'Calculation Unit', required=True, readonly=True, states={'draft': [('readonly', False)]}, select=True),
357+ 'unit_type_id': fields.many2one('sisb.calculation.unit.type', 'Unit Type', readonly=True, states={'draft': [('readonly', False)]}, select=True),
358+ }
359+
360+ _defaults = {
361+ 'calculation_unit':'other',
362+ }
363+
364+ _constraints = [(_check_monto_caja_chica, 'El saldo de la caja chica es superior al monto permitido para una caja chica', ['amount'])]
365+
366+ def onchange_calculation_unit(self, cr, uid, ids, calculation_unit, context=None):
367+ if calculation_unit == 'ut':
368+ return {'value': {'unit_type_id': False}}
369+ else:
370+ return {'value': {}}
371+
372+caja_chica()
373+
374+
375+class caja_reposicion_linea(osv.osv):
376+ _inherit = "caja.reposicion.linea"
377+
378+ def _check_linea_reposicion(self, cr, uid, ids, context=None):
379+ """ Verificar que las lineas de la reposicion de caja chica,
380+ no exceda la cantidad de unidades permitidas configurado para caja chica.
381+ @return: True (bien) or False (mal)
382+ """
383+ print '_check_linea_reposicion'
384+ if context is None:
385+ context = {}
386+
387+ lista_repo_line_ut = []
388+ lista_repo_line_uc = []
389+ resultado = True
390+ for repo_line in self.browse(cr, uid, ids):
391+
392+ if repo_line.caja_reposicion_id.caja_chica_id.calculation_unit == 'ut':
393+ lista_repo_line_ut.append(repo_line.id)
394+ else:
395+ lista_repo_line_uc.append(repo_line.id)
396+
397+ if lista_repo_line_ut:
398+ resultado = super(caja_reposicion_linea, self)._check_linea_reposicion(cr, uid, lista_repo_line_ut, context=context)
399+
400+ if resultado and lista_repo_line_uc:
401+ for lin_rep in self.browse(cr, uid, lista_repo_line_uc, context=context):
402+ if lin_rep.amount <= 0:
403+ raise osv.except_osv(('Error !'), ('Debe colocar un monto mayor a 0'))
404+
405+
406+ ####OBTENER CONFIGURACION DE LA UNIDAD DE CALCULO#####
407+ calc_unit_type = lin_rep.caja_reposicion_id.caja_chica_id.unit_type_id and lin_rep.caja_reposicion_id.caja_chica_id.unit_type_id.name or False
408+ cu_obj = self.pool.get('sisb.calculation.unit')
409+ fecha_actual = time.strftime('%Y-%m-%d')
410+ ut_ser = cu_obj.get_amount_cu(cr, uid, calc_unit_type, fecha_actual)
411+
412+ if not ut_ser:
413+ raise osv.except_osv(('Error !'), ('No existe unidad de calculo creada para la caja chica'))
414+ ###########################################################
415+
416+ max_line_total = 0
417+ config_brw = lin_rep.caja_reposicion_id.caja_chica_id and lin_rep.caja_reposicion_id.caja_chica_id.config or False
418+ if not config_brw:
419+ config_brw = config_obj.browse(cr, uid, [config_ser[0]])[0]
420+ if not config_brw:
421+ raise osv.except_osv(('Error !'), ('Se debe crear una configuracion para el manejo de caja chica.'))
422+
423+ ut_amount = float(ut_ser)
424+ max_line_ut = config_brw.max_linea
425+ max_line_total = max_line_ut * ut_amount
426+ print 'max_line_total',max_line_total
427+ if lin_rep.amount - max_line_total > 0.0001:
428+ raise osv.except_osv(('Error !'), ('La linea "%s" excede las %s de %s. No puede ser aprobada la reposicion.'%(lin_rep.name,max_line_ut,calc_unit_type)))
429+ return False
430+
431+ return True
432+
433+ return resultado
434+
435+
436+ _constraints = [(_check_linea_reposicion, 'El monto de la linea excede las unidades de calculo permitidas. No puede ser aprobada la reposicion.', ['amount'])]
437+
438+
439+caja_reposicion_linea()
440+
441+class caja_reposicion(osv.osv):
442+ _inherit = "caja.reposicion"
443+
444+ def validar_reposicion(self, cr, uid, ids, context=None):
445+ """
446+ Aqui se aprueba y se generan los asientos contables al momento de aprobar
447+ la reposicion.
448+ """
449+ print 'validar_reposicion'
450+ if context is None:
451+ context = {}
452+
453+ lista_repo_ut = []
454+ lista_repo_uc = []
455+ resultado = True
456+ for repo in self.browse(cr, uid, ids):
457+
458+ if repo.caja_chica_id.calculation_unit == 'ut':
459+ lista_repo_ut.append(repo.id)
460+ else:
461+ lista_repo_uc.append(repo.id)
462+
463+ if lista_repo_ut:
464+ resultado = super(caja_reposicion, self).validar_reposicion(cr, uid, lista_repo_ut, context=context)
465+
466+ if resultado and lista_repo_uc:
467+ move_obj = self.pool.get('account.move')
468+ move_line_obj = self.pool.get('account.move.line')
469+ repo_line_obj = self.pool.get('caja.reposicion.linea')
470+ config_obj = self.pool.get('caja.chica.configuracion')
471+ obj_company = self.pool.get('res.company')
472+
473+ repo_brw = self.browse(cr, uid, lista_repo_uc, context=context)
474+
475+ """
476+ Inicio de validacion de las lineas de la caja chica para que no excedan
477+ el limite definido para las cajas chicas.
478+ """
479+
480+ for repo in repo_brw:
481+
482+ ####OBTENER CONFIGURACION DE LA UNIDAD DE CALCULO#####
483+ #~ ut_ser
484+ calc_unit_type = repo.caja_chica_id.unit_type_id and repo.caja_chica_id.unit_type_id.name or False
485+ cu_obj = self.pool.get('sisb.calculation.unit')
486+ fecha_actual = time.strftime('%Y-%m-%d')
487+ ut_ser = cu_obj.get_amount_cu(cr, uid, calc_unit_type, fecha_actual)
488+
489+ if not ut_ser:
490+ raise osv.except_osv(('Error !'), ('No existe unidad de calculo creada para la caja chica'))
491+ #####################################
492+
493+ max_line_total = 0
494+ config_brw = repo.caja_chica_id.config
495+ if not config_brw:
496+ config_brw = config_obj.browse(cr, uid, [config_ser[0]])[0]
497+ if not config_brw:
498+ raise osv.except_osv(('Error !'), ('Se debe crear una configuracion para el manejo de caja chica.'))
499+
500+ ut_amount = float(ut_ser)
501+ max_line_ut = config_brw.max_linea
502+ max_line_total = max_line_ut * ut_amount
503+ print 'max_line_total',max_line_total
504+ for line in repo.reposicion_linea_ids:
505+ if line.amount - max_line_total > 0.0001:
506+ raise osv.except_osv(('Error !'), ('La linea "%s" excede las %s de %s. No puede ser aprobada la reposicion.'%(lin_rep.name,max_line_ut,calc_unit_type)))
507+ if line.account_id.type == 'view':
508+ raise osv.except_osv(('Error !'), ('Imposible aprobar la reposicion. En la linea %s, se eligio una cuenta de tipo vista. (%s %s)' % (line.name, line.account_id.code, line.account_id.name)))
509+
510+ #Fin de la validacion
511+
512+ for repo in repo_brw:
513+ caja_brw = repo.caja_chica_id
514+ move_dict = {}
515+ ref = elimina_tildes(repo.name + ' / ' + repo.ref)
516+ move_dict = {
517+ 'ref': ref,
518+ 'journal_id': caja_brw.journal_move_id and caja_brw.journal_move_id.id or None,
519+ 'to_check': True,
520+ }
521+ move_id = move_obj.create(cr, uid, move_dict)
522+ move_brw = move_obj.browse(cr, uid, [move_id])[0]
523+ periodo_id = move_brw.period_id.id
524+ context.update({'period_id': periodo_id})
525+
526+ move_line_ids = []
527+ company_id = obj_company._company_default_get(cr, uid, 'account.move', context=context)
528+ for line in repo.reposicion_linea_ids:
529+ move_line_dict = {}
530+ name = elimina_tildes(line.name + ' / ' + line.concepto)
531+ move_line_dict = {
532+ 'name': name[:64],
533+ 'ref': ref[:64],
534+ #~ 'quantity': ,
535+ #~ 'product_uom_id': ,
536+ 'product_id': line.product_id and line.product_id.id or None,
537+ 'debit': line.amount,
538+ 'credit': 0.00,
539+ 'account_id': line.account_id and line.account_id.id or None,
540+ 'move_id': move_id,
541+ 'journal_id': caja_brw.journal_move_id and caja_brw.journal_move_id.id or None,
542+ 'analytic_account_id': line.analytic_id and line.analytic_id.id or 'NULL',
543+ 'state': 'valid',
544+ 'period_id': periodo_id,
545+ }
546+
547+ #Creacion de apunte contable para debito por medio de query
548+ cr.execute("insert into account_move_line (account_id,name,ref,centralisation,journal_id,company_id,currency_id,credit,state,period_id,debit,date,date_created,move_id,blocked,create_uid,create_date,product_id,analytic_account_id) values (%s,'%s','%s','normal',%s,%s,NULL,%s,'%s',%s,%s,'%s',now(),%s,False,%s,now(),%s,%s)"%(move_line_dict['account_id'],move_line_dict['name'],move_line_dict['ref'],move_line_dict['journal_id'],int(company_id),move_line_dict['credit'],move_line_dict['state'],move_line_dict['period_id'],move_line_dict['debit'],str(fecha_actual),move_line_dict['move_id'],uid,move_line_dict['product_id'],move_line_dict['analytic_account_id']))
549+ cr.commit()
550+
551+ move_line_dict.update({'debit': 0.00, 'credit': line.amount, 'account_id': caja_brw.account_id and caja_brw.account_id.id or None, 'partner_id': repo.company_id.partner_id.id})
552+
553+ #Creacion de apunte contable para credito por medio de query
554+ #se incorpora el partner en el apunte
555+ cr.execute("insert into account_move_line (account_id,name,ref,centralisation,journal_id,company_id,currency_id,credit,state,period_id,debit,date,date_created,move_id,blocked,create_uid,create_date,product_id,analytic_account_id,partner_id) values (%s,'%s','%s','normal',%s,%s,NULL,%s,'%s',%s,%s,'%s',now(),%s,False,%s,now(),%s,%s,%s)"%(move_line_dict['account_id'],move_line_dict['name'],move_line_dict['ref'],move_line_dict['journal_id'],int(company_id),move_line_dict['credit'],move_line_dict['state'],move_line_dict['period_id'],move_line_dict['debit'],str(fecha_actual),move_line_dict['move_id'],uid,move_line_dict['product_id'],move_line_dict['analytic_account_id'],move_line_dict['partner_id']))
556+ cr.commit()
557+
558+ #relacionar la linea de la reposicion con el apunte contable asociado a la caja chica
559+ apunte_id = move_line_obj.search(cr, uid, [('move_id', '=',move_id),('partner_id','!=',False)], context=context)
560+ if apunte_id:
561+ dict_linea = {
562+ 'move_line_id':apunte_id[0],
563+ }
564+ repo_line_obj.write(cr, uid, [line.id], dict_linea, context=context)
565+ else:
566+ raise osv.except_osv(('Error !'), ('Error in create the move.'))
567+
568+ #Asentar el asiento contable de la caja chica.
569+ move_obj.button_validate(cr, uid, [move_id], context=context)
570+
571+ #Unir lineas de asiento a la reposicion
572+ move_line_ids = [mo.id for mo in move_brw.line_id]
573+ self.write(cr, uid, [repo.id], {'move_ids': [(6, 0, move_line_ids)]}, context=context)
574+
575+
576+ self.write(cr, uid, lista_repo_uc, {'state': 'done', 'aprobado_por': uid,
577+ 'fecha_aprobado': fecha_actual, 'period_id': periodo_id}, context=context)
578+ for repo in self.browse(cr, uid, lista_repo_uc):
579+ context.update({'estado': repo.state})
580+ self.log_reposicion(cr, uid, repo.id, context=context)
581+
582+ return True
583+
584+
585+ return resultado
586+
587+
588+caja_reposicion()
589
590=== added directory 'sisb_calculation_unit/security'
591=== added file 'sisb_calculation_unit/security/ir.model.access.csv'
592--- sisb_calculation_unit/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
593+++ sisb_calculation_unit/security/ir.model.access.csv 2018-02-09 12:50:59 +0000
594@@ -0,0 +1,7 @@
595+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
596+"access_account_sisb_calculation_unit_user","sisb.calculation.unit","model_sisb_calculation_unit","account.group_account_user",1,0,0,0
597+"access_account_sisb_calculation_unit_manager","sisb.calculation.unit","model_sisb_calculation_unit","account.group_account_manager",1,1,1,1
598+"access_account_sisb_calculation_unit_type_user","sisb.calculation.unit.type","model_sisb_calculation_unit_type","account.group_account_user",1,0,0,0
599+"access_account_sisb_calculation_unit_type_manager","sisb.calculation.unit.type","model_sisb_calculation_unit_type","account.group_account_manager",1,1,1,1
600+
601+
602
603=== added directory 'sisb_calculation_unit/view'
604=== added file 'sisb_calculation_unit/view/sisb_calculation_unit_view.xml'
605--- sisb_calculation_unit/view/sisb_calculation_unit_view.xml 1970-01-01 00:00:00 +0000
606+++ sisb_calculation_unit/view/sisb_calculation_unit_view.xml 2018-02-09 12:50:59 +0000
607@@ -0,0 +1,176 @@
608+<?xml version="1.0"?>
609+<openerp>
610+ <data>
611+<!--
612+Calculation Unit
613+-->
614+ <record id="view_sisb_calculation_unit_filter" model="ir.ui.view">
615+ <field name="name">sisb.calculation.unit.search</field>
616+ <field name="model">sisb.calculation.unit</field>
617+ <field name="type">search</field>
618+ <field name="arch" type="xml">
619+ <search string="Search Calculation Unit">
620+ <group col="10" colspan="4">
621+ <field name="name"/>
622+ <field name="unit_type_id" widget="selection"/>
623+ <field name="date"/>
624+ <field name="amount"/>
625+ </group>
626+ <newline/>
627+ <group expand="1" string="Group By...">
628+ <filter string="Unit Type" icon="terp-go-month" domain="[]" context="{'group_by':'unit_type_id'}"/>
629+ </group>
630+ </search>
631+ </field>
632+ </record>
633+
634+ <record model="ir.ui.view" id="view_sisb_calculation_unit_form">
635+ <field name="name">sisb.calculation.unit.form</field>
636+ <field name="model">sisb.calculation.unit</field>
637+ <field name="type">form</field>
638+ <field name="arch" type="xml">
639+ <form string="Calculation Unit">
640+ <group col="6" colspan="4">
641+ <field name="unit_type_id" select="1"/>
642+ <field name="name" select="1" colspan="4"/>
643+ <field name="date" select="1"/>
644+ <field name="amount" select="1"/>
645+ </group>
646+ </form>
647+ </field>
648+ </record>
649+
650+ <record model="ir.ui.view" id="view_sisb_calculation_unit_tree">
651+ <field name="name">sisb.calculation.unit.tree</field>
652+ <field name="model">sisb.calculation.unit</field>
653+ <field name="type">tree</field>
654+ <field name="arch" type="xml">
655+ <tree string="Calculation Unit per date" editable="top">
656+ <field name="unit_type_id" widget="selection"/>
657+ <field name="name"/>
658+ <field name="date"/>
659+ <field name="amount"/>
660+ </tree>
661+ </field>
662+ </record>
663+
664+ <record id="act_sisb_calculation_unit_tree" model="ir.actions.act_window">
665+ <field name="name">Calculation Unit</field>
666+ <field name="res_model">sisb.calculation.unit</field>
667+ <field name="view_type">form</field>
668+ <field name="view_mode">tree,form</field>
669+ <field name="search_view_id" ref="view_sisb_calculation_unit_filter"/>
670+ <field name="help">With Calculation Unit you can create and manage the calculation unit. The Calculation Unit is established under the law of each country, is used for the petty cash, viatical and travel expenses, among others.</field>
671+ </record>
672+
673+ <menuitem id="conf_sisb_calc_unit" name="Calculation Unit" parent="account.menu_finance_accounting"/>
674+ <menuitem
675+ parent="conf_sisb_calc_unit"
676+ id="menu_action_sisb_calculation_unit_tree"
677+ action="act_sisb_calculation_unit_tree"/>
678+
679+<!--
680+Calculation Unit Type
681+-->
682+ <record id="view_sisb_calculation_unit_type_filter" model="ir.ui.view">
683+ <field name="name">sisb.calculation.unit.type.search</field>
684+ <field name="model">sisb.calculation.unit.type</field>
685+ <field name="type">search</field>
686+ <field name="arch" type="xml">
687+ <search string="Search Calculation Unit Type">
688+ <group col="10" colspan="4">
689+ <field name="name"/>
690+ </group>
691+ </search>
692+ </field>
693+ </record>
694+
695+ <record model="ir.ui.view" id="view_sisb_calculation_unit_type_form">
696+ <field name="name">sisb.calculation.unit.type.form</field>
697+ <field name="model">sisb.calculation.unit.type</field>
698+ <field name="type">form</field>
699+ <field name="arch" type="xml">
700+ <form string="Calculation Unit Type">
701+ <group col="6" colspan="4">
702+ <field name="name" select="1" colspan="4"/>
703+ </group>
704+ </form>
705+ </field>
706+ </record>
707+
708+ <record model="ir.ui.view" id="view_sisb_calculation_unit_type_tree">
709+ <field name="name">sisb.calculation.unit.type.tree</field>
710+ <field name="model">sisb.calculation.unit.type</field>
711+ <field name="type">tree</field>
712+ <field name="arch" type="xml">
713+ <tree string="Calculation Unit Type" editable="top">
714+ <field name="name"/>
715+ </tree>
716+ </field>
717+ </record>
718+
719+ <record id="act_sisb_calculation_unit_type_tree" model="ir.actions.act_window">
720+ <field name="name">Calculation Unit Type</field>
721+ <field name="res_model">sisb.calculation.unit.type</field>
722+ <field name="view_type">form</field>
723+ <field name="view_mode">tree,form</field>
724+ <field name="search_view_id" ref="view_sisb_calculation_unit_type_filter"/>
725+ <field name="help">Defines the type of calculation unit.</field>
726+ </record>
727+ <menuitem
728+ parent="conf_sisb_calc_unit"
729+ id="menu_action_sisb_calculation_unit_type_tree"
730+ action="act_sisb_calculation_unit_type_tree"/>
731+
732+<!--
733+ Herencia Caja Chica
734+-->
735+
736+<!--
737+ Arbol
738+-->
739+ <record id="inherit_view_caja_chica_tree" model="ir.ui.view">
740+ <field name="name">inherit.view.caja.chica.tree</field>
741+ <field name="model">caja.chica</field>
742+ <field name="type">tree</field>
743+ <field name="inherit_id" ref="l10n_ve_caja_chica.view_caja_chica_tree"/>
744+ <field name="arch" type="xml">
745+ <xpath expr='/tree/field[@name="state"]' position='after'>
746+ <field name="calculation_unit"/>
747+ </xpath>
748+ </field>
749+ </record>
750+<!--
751+ Formulario
752+-->
753+ <record id="inherit_unit_calc_view_caja_chica_form" model="ir.ui.view">
754+ <field name="name">inherit.unit.calc.view.caja.chica.form</field>
755+ <field name="model">caja.chica</field>
756+ <field name="type">form</field>
757+ <field name="inherit_id" ref="l10n_ve_caja_chica.view_caja_chica_form"/>
758+ <field name="arch" type="xml">
759+ <xpath expr='/form/notebook/page/group' position="after">
760+ <separator string="Calculating Unit" />
761+ <field name='calculation_unit' on_change="onchange_calculation_unit(calculation_unit)"/>
762+ <field name='unit_type_id' widget="selection" attrs="{'invisible':[('calculation_unit','=','ut')], 'required':[('calculation_unit','!=','ut')]}"/>
763+ </xpath>
764+ </field>
765+ </record>
766+
767+
768+<!--
769+ Busqueda
770+-->
771+ <record id="view_caja_chica_filter_inherit" model="ir.ui.view">
772+ <field name="name">caja.chica.search.inherit</field>
773+ <field name="model">caja.chica</field>
774+ <field name="inherit_id" ref="l10n_ve_caja_chica.view_caja_chica_filter"/>
775+ <field name="type">search</field>
776+ <field name="arch" type="xml">
777+ <xpath expr="/search/group/field[@name='fiscalyear_id']" position="after">
778+ <field name="calculation_unit"/>
779+ </xpath>
780+ </field>
781+ </record>
782+ </data>
783+</openerp>

Subscribers

People subscribed via source and target branches