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
=== added directory 'sisb_calculation_unit'
=== added file 'sisb_calculation_unit/__init__.py'
--- sisb_calculation_unit/__init__.py 1970-01-01 00:00:00 +0000
+++ sisb_calculation_unit/__init__.py 2018-02-09 12:50:59 +0000
@@ -0,0 +1,3 @@
1# -*- coding: utf-8 -*-
2
3import model
04
=== added file 'sisb_calculation_unit/__openerp__.py'
--- sisb_calculation_unit/__openerp__.py 1970-01-01 00:00:00 +0000
+++ sisb_calculation_unit/__openerp__.py 2018-02-09 12:50:59 +0000
@@ -0,0 +1,21 @@
1# -*- coding: utf-8 -*-
2
3{
4 'name': 'Registration of Calculation Units',
5 'version': '0.1',
6 'category': 'Account',
7 'description':'Registration of Calculation Units for UCAU among others',
8 'author': 'Industrias Diana, C.A.',
9 'website': 'http://www.industriasdiana.gob.ve',
10 'depends': ['account',
11 'l10n_ve_caja_chica',
12 ],
13 'update_xml': [
14 'security/ir.model.access.csv',
15 'view/sisb_calculation_unit_view.xml',
16 ],
17 'data': [
18 ],
19 'installable': True,
20 'active': False,
21}
022
=== added directory 'sisb_calculation_unit/i18n'
=== added file 'sisb_calculation_unit/i18n/es_VE.mo'
1Binary 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 differ23Binary 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
=== added file 'sisb_calculation_unit/i18n/es_VE.po'
--- sisb_calculation_unit/i18n/es_VE.po 1970-01-01 00:00:00 +0000
+++ sisb_calculation_unit/i18n/es_VE.po 2018-02-09 12:50:59 +0000
@@ -0,0 +1,153 @@
1# Translation of OpenERP Server.
2# This file contains the translation of the following modules:
3# * sisb_calculation_unit
4#
5msgid ""
6msgstr ""
7"Project-Id-Version: OpenERP Server 6.0.4\n"
8"Report-Msgid-Bugs-To: support@openerp.com\n"
9"POT-Creation-Date: 2018-02-07 19:41+0000\n"
10"PO-Revision-Date: 2018-02-07 15:11-0400\n"
11"Last-Translator: Aryrosa Fuentes <afuentes@industriasdiana.gob.ve>\n"
12"Language-Team: \n"
13"MIME-Version: 1.0\n"
14"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Transfer-Encoding: 8bit\n"
16"Plural-Forms: \n"
17
18#. module: sisb_calculation_unit
19#: help:sisb.calculation.unit,amount:0
20msgid "Amount of the calculation unit in Bs"
21msgstr "Monto del cálculo en Bs."
22
23#. module: sisb_calculation_unit
24#: model:ir.model,name:sisb_calculation_unit.model_caja_reposicion
25msgid "Reposicion de Caja Chica"
26msgstr "Reposición de Caja Chica"
27
28#. module: sisb_calculation_unit
29#: field:caja.chica,calculation_unit:0
30#: model:ir.actions.act_window,name:sisb_calculation_unit.act_sisb_calculation_unit_tree
31#: model:ir.model,name:sisb_calculation_unit.model_sisb_calculation_unit
32#: model:ir.ui.menu,name:sisb_calculation_unit.conf_sisb_calc_unit
33#: model:ir.ui.menu,name:sisb_calculation_unit.menu_action_sisb_calculation_unit_tree
34#: view:sisb.calculation.unit:0
35msgid "Calculation Unit"
36msgstr "Unidad de Cálculo"
37
38#. module: sisb_calculation_unit
39#: constraint:caja.chica:0
40msgid "El saldo de la caja chica es superior al monto permitido para una caja chica"
41msgstr "El saldo de la caja chica es superior al monto permitido para una caja chica"
42
43#. module: sisb_calculation_unit
44#: view:sisb.calculation.unit:0
45msgid "Group By..."
46msgstr "Agrupado por..."
47
48#. module: sisb_calculation_unit
49#: selection:caja.chica,calculation_unit:0
50msgid "Other"
51msgstr "Otra Unidad"
52
53#. module: sisb_calculation_unit
54#: model:ir.model,name:sisb_calculation_unit.model_caja_reposicion_linea
55msgid "Lineas la Reposicion de Caja"
56msgstr "Líneas la Reposición de Caja"
57
58#. module: sisb_calculation_unit
59#: selection:caja.chica,calculation_unit:0
60msgid "U.T"
61msgstr "Unidad Tributaria"
62
63#. module: sisb_calculation_unit
64#: field:sisb.calculation.unit.type,name:0
65#: help:sisb.calculation.unit.type,name:0
66msgid "Unit type"
67msgstr "Tipo de unidad"
68
69#. module: sisb_calculation_unit
70#: field:caja.chica,unit_type_id:0
71#: view:sisb.calculation.unit:0
72#: field:sisb.calculation.unit,unit_type_id:0
73msgid "Unit Type"
74msgstr "Tipo de Unidad"
75
76#. module: sisb_calculation_unit
77#: model:ir.actions.act_window,name:sisb_calculation_unit.act_sisb_calculation_unit_type_tree
78#: model:ir.model,name:sisb_calculation_unit.model_sisb_calculation_unit_type
79#: model:ir.ui.menu,name:sisb_calculation_unit.menu_action_sisb_calculation_unit_type_tree
80#: view:sisb.calculation.unit.type:0
81msgid "Calculation Unit Type"
82msgstr "Tipo de unidad de cálculo"
83
84#. module: sisb_calculation_unit
85#: help:sisb.calculation.unit,name:0
86msgid "Reference number under the law"
87msgstr "Número de referencia de la gaceta oficial"
88
89#. module: sisb_calculation_unit
90#: model:ir.actions.act_window,help:sisb_calculation_unit.act_sisb_calculation_unit_type_tree
91msgid "Defines the type of calculation unit."
92msgstr "Define el tipo de unidad de cálculo."
93
94#. module: sisb_calculation_unit
95#: field:sisb.calculation.unit,date:0
96msgid "Date"
97msgstr "Fecha"
98
99#. module: sisb_calculation_unit
100#: constraint:caja.reposicion.linea:0
101msgid "El monto de la linea excede las unidades de calculo permitidas. No puede ser aprobada la reposicion."
102msgstr "El monto de la linea excede las unidades de calculo permitidas. No puede ser aprobada la reposicion."
103
104#. module: sisb_calculation_unit
105#: help:sisb.calculation.unit,date:0
106msgid "Date on which goes into effect the new Unit Calculation Unit"
107msgstr "Fecha donde entrará en vigencia la nueva unidad para la unidad de cálculo."
108
109#. module: sisb_calculation_unit
110#: field:sisb.calculation.unit,user_id:0
111msgid "Responsible"
112msgstr "Responsable"
113
114#. module: sisb_calculation_unit
115#: model:ir.model,name:sisb_calculation_unit.model_caja_chica
116msgid "Caja Chica"
117msgstr "Caja Chica"
118
119#. module: sisb_calculation_unit
120#: view:sisb.calculation.unit.type:0
121msgid "Search Calculation Unit Type"
122msgstr "Búsqueda de tipo de unidad de cálculo"
123
124#. module: sisb_calculation_unit
125#: field:sisb.calculation.unit,amount:0
126msgid "Amount"
127msgstr "Monto"
128
129#. module: sisb_calculation_unit
130#: view:sisb.calculation.unit:0
131msgid "Search Calculation Unit"
132msgstr "Búsqueda de unidad de cálculo"
133
134#. module: sisb_calculation_unit
135#: field:sisb.calculation.unit,name:0
136msgid "Reference number"
137msgstr "Número de referencia"
138
139#. module: sisb_calculation_unit
140#: model:ir.actions.act_window,help:sisb_calculation_unit.act_sisb_calculation_unit_tree
141msgid "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."
142msgstr "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."
143
144#. module: sisb_calculation_unit
145#: view:caja.chica:0
146msgid "Calculating Unit"
147msgstr "Unidad de Cálculo"
148
149#. module: sisb_calculation_unit
150#: view:sisb.calculation.unit:0
151msgid "Calculation Unit per date"
152msgstr "Unidad de cálculo por fecha"
153
0154
=== added directory 'sisb_calculation_unit/model'
=== added file 'sisb_calculation_unit/model/__init__.py'
--- sisb_calculation_unit/model/__init__.py 1970-01-01 00:00:00 +0000
+++ sisb_calculation_unit/model/__init__.py 2018-02-09 12:50:59 +0000
@@ -0,0 +1,3 @@
1# -*- coding: utf-8 -*-
2
3import sisb_calculation_unit
04
=== added file 'sisb_calculation_unit/model/sisb_calculation_unit.py'
--- sisb_calculation_unit/model/sisb_calculation_unit.py 1970-01-01 00:00:00 +0000
+++ sisb_calculation_unit/model/sisb_calculation_unit.py 2018-02-09 12:50:59 +0000
@@ -0,0 +1,379 @@
1#!/usr/bin/python
2# -*- encoding: utf-8 -*-
3###########################################################################
4# Copyright (C) Industrias Diana, C.A. (www.industriasdiana.gob.ve)
5# All Rights Reserved
6###############Credits######################################################
7# Developed by: Industrias Diana, C.A.
8##############################################################################
9
10from osv import osv
11from osv import fields
12from tools import config
13from tools.translate import _
14import time
15import decimal_precision as dp
16import unicodedata
17
18
19def elimina_tildes(s):
20 """
21 Funcion para eliminar las tildes de algun texto utilizando el modulo unicodedata.
22 """
23 return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn')).replace("'","")
24
25
26
27
28class sisb_calculation_unit_type(osv.osv):
29
30 _name = 'sisb.calculation.unit.type'
31 _description = 'Calculation Unit Type'
32 _columns = {
33 'name':fields.char('Unit type', size=64, required=True, readonly=False, help="Unit type"),
34 }
35
36sisb_calculation_unit_type()
37
38
39class sisb_calculation_unit(osv.osv):
40
41 _name = 'sisb.calculation.unit'
42 _description = 'Calculation Unit'
43 _order = 'date desc'
44 _columns = {
45 'name':fields.char('Reference number', size=64, required=True, readonly=False, help="Reference number under the law"),
46 'date': fields.date('Date', required=True, help="Date on which goes into effect the new Unit Calculation Unit"),
47 'amount': fields.float('Amount',digits_compute= dp.get_precision('Amount Bs per UT'), help="Amount of the calculation unit in Bs", required=True),
48 'user_id': fields.many2one('res.users', 'Responsible', readonly=True),
49 'unit_type_id': fields.many2one('sisb.calculation.unit.type', 'Unit Type', required=True),
50 }
51 _defaults = {
52 'name': lambda *a: None,
53 'user_id': lambda s, cr, u, c: u,
54 }
55
56
57 def get_amount_cu(self, cr, uid, name_type_cu, date=False, *args):
58 """
59 name_type_cu: nombre del tipo de unidad de calculo
60 """
61 #consultar type_cu
62 type_cu_obj = self.pool.get('sisb.calculation.unit.type')
63 type_cu_id = type_cu_obj.search(cr, uid, [('name','=', name_type_cu)])
64 type_cu_id = type_cu_id and type_cu_id[0] or False
65 #Extraer valor de la unidad segun el tipo
66 rate = 0
67 if type_cu_id:
68 date= date or time.strftime('%Y-%m-%d')
69 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))
70 if cr.rowcount:
71 rate=cr.fetchall()[0][0]
72 return rate
73
74 def compute(self, cr, uid, from_amount, name_type_cu, date=False, context={}):
75 result = 0.0
76 cu = self.get_amount_cu(cr, uid, name_type_cu, date=False)
77 if cu:
78 result = from_amount / cu
79
80 return result
81
82 def compute_cu_to_money(self, cr, uid, amount_cu, name_type_cu, date=False, context={}):
83 money = 0.0
84 cu = self.get_amount_cu(cr, uid, name_type_cu, date)
85 if cu:
86 money = amount_cu * cu
87 return money
88
89sisb_calculation_unit()
90
91class caja_chica(osv.osv):
92 _inherit = "caja.chica"
93
94 #Se sobrescribe la funcion del constraint del modelo de caja.chica
95 def _check_monto_caja_chica(self, cr, uid, ids, context=None):
96 """ Verificar que el monto de la caja chica, no exceda la cantidad de
97 unidades permitidas configurado para caja chica.
98 @return: True (bien) or False (mal)
99 """
100 print '_check_monto_caja_chica'
101 if context is None:
102 context = {}
103
104 lista_ut = []
105 lista_uc = []
106 resultado = True
107 for ca_ch in self.browse(cr, uid, ids):
108
109 if ca_ch.calculation_unit == 'ut':
110 lista_ut.append(ca_ch.id)
111 else:
112 lista_uc.append(ca_ch.id)
113
114 if lista_ut:
115 resultado = super(caja_chica, self)._check_monto_caja_chica(cr, uid, lista_ut, context=context)
116
117 if resultado and lista_uc:
118 for ca_ch in self.browse(cr, uid, lista_uc, context=context):
119 if not ca_ch.config:
120 raise osv.except_osv(('Error !'), ('No existe configuracion para caja chica creada'))
121
122
123 ####OBTENER CONFIGURACION DE LA UNIDAD DE CALCULO#####
124 calc_unit_type = ca_ch.unit_type_id and ca_ch.unit_type_id.name or False
125 cu_obj = self.pool.get('sisb.calculation.unit')
126 fecha_actual = time.strftime('%Y-%m-%d')
127 ut_ser = cu_obj.get_amount_cu(cr, uid, calc_unit_type, fecha_actual)
128
129 if not ut_ser:
130 raise osv.except_osv(('Error !'), ('No existe unidad de calculo creada para la caja chica'))
131 ###########################################################
132
133 maximo_ut = float(ca_ch.config.max_reposicion)
134 ut_amount = float(ut_ser)
135 monto_caja = float(ca_ch.amount)
136 monto_permitido = maximo_ut * ut_amount
137 print 'monto_permitido',monto_permitido
138 if (monto_permitido - monto_caja) < 0:
139 raise osv.except_osv(('Error !'), ('El saldo de la caja chica es superior a las %s %s permitida'%(maximo_ut, calc_unit_type)))
140 return False
141
142 return True
143
144 return resultado
145
146 _columns = {
147 'calculation_unit': fields.selection([('other','Other'),('ut','U.T')], 'Calculation Unit', required=True, readonly=True, states={'draft': [('readonly', False)]}, select=True),
148 'unit_type_id': fields.many2one('sisb.calculation.unit.type', 'Unit Type', readonly=True, states={'draft': [('readonly', False)]}, select=True),
149 }
150
151 _defaults = {
152 'calculation_unit':'other',
153 }
154
155 _constraints = [(_check_monto_caja_chica, 'El saldo de la caja chica es superior al monto permitido para una caja chica', ['amount'])]
156
157 def onchange_calculation_unit(self, cr, uid, ids, calculation_unit, context=None):
158 if calculation_unit == 'ut':
159 return {'value': {'unit_type_id': False}}
160 else:
161 return {'value': {}}
162
163caja_chica()
164
165
166class caja_reposicion_linea(osv.osv):
167 _inherit = "caja.reposicion.linea"
168
169 def _check_linea_reposicion(self, cr, uid, ids, context=None):
170 """ Verificar que las lineas de la reposicion de caja chica,
171 no exceda la cantidad de unidades permitidas configurado para caja chica.
172 @return: True (bien) or False (mal)
173 """
174 print '_check_linea_reposicion'
175 if context is None:
176 context = {}
177
178 lista_repo_line_ut = []
179 lista_repo_line_uc = []
180 resultado = True
181 for repo_line in self.browse(cr, uid, ids):
182
183 if repo_line.caja_reposicion_id.caja_chica_id.calculation_unit == 'ut':
184 lista_repo_line_ut.append(repo_line.id)
185 else:
186 lista_repo_line_uc.append(repo_line.id)
187
188 if lista_repo_line_ut:
189 resultado = super(caja_reposicion_linea, self)._check_linea_reposicion(cr, uid, lista_repo_line_ut, context=context)
190
191 if resultado and lista_repo_line_uc:
192 for lin_rep in self.browse(cr, uid, lista_repo_line_uc, context=context):
193 if lin_rep.amount <= 0:
194 raise osv.except_osv(('Error !'), ('Debe colocar un monto mayor a 0'))
195
196
197 ####OBTENER CONFIGURACION DE LA UNIDAD DE CALCULO#####
198 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
199 cu_obj = self.pool.get('sisb.calculation.unit')
200 fecha_actual = time.strftime('%Y-%m-%d')
201 ut_ser = cu_obj.get_amount_cu(cr, uid, calc_unit_type, fecha_actual)
202
203 if not ut_ser:
204 raise osv.except_osv(('Error !'), ('No existe unidad de calculo creada para la caja chica'))
205 ###########################################################
206
207 max_line_total = 0
208 config_brw = lin_rep.caja_reposicion_id.caja_chica_id and lin_rep.caja_reposicion_id.caja_chica_id.config or False
209 if not config_brw:
210 config_brw = config_obj.browse(cr, uid, [config_ser[0]])[0]
211 if not config_brw:
212 raise osv.except_osv(('Error !'), ('Se debe crear una configuracion para el manejo de caja chica.'))
213
214 ut_amount = float(ut_ser)
215 max_line_ut = config_brw.max_linea
216 max_line_total = max_line_ut * ut_amount
217 print 'max_line_total',max_line_total
218 if lin_rep.amount - max_line_total > 0.0001:
219 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)))
220 return False
221
222 return True
223
224 return resultado
225
226
227 _constraints = [(_check_linea_reposicion, 'El monto de la linea excede las unidades de calculo permitidas. No puede ser aprobada la reposicion.', ['amount'])]
228
229
230caja_reposicion_linea()
231
232class caja_reposicion(osv.osv):
233 _inherit = "caja.reposicion"
234
235 def validar_reposicion(self, cr, uid, ids, context=None):
236 """
237 Aqui se aprueba y se generan los asientos contables al momento de aprobar
238 la reposicion.
239 """
240 print 'validar_reposicion'
241 if context is None:
242 context = {}
243
244 lista_repo_ut = []
245 lista_repo_uc = []
246 resultado = True
247 for repo in self.browse(cr, uid, ids):
248
249 if repo.caja_chica_id.calculation_unit == 'ut':
250 lista_repo_ut.append(repo.id)
251 else:
252 lista_repo_uc.append(repo.id)
253
254 if lista_repo_ut:
255 resultado = super(caja_reposicion, self).validar_reposicion(cr, uid, lista_repo_ut, context=context)
256
257 if resultado and lista_repo_uc:
258 move_obj = self.pool.get('account.move')
259 move_line_obj = self.pool.get('account.move.line')
260 repo_line_obj = self.pool.get('caja.reposicion.linea')
261 config_obj = self.pool.get('caja.chica.configuracion')
262 obj_company = self.pool.get('res.company')
263
264 repo_brw = self.browse(cr, uid, lista_repo_uc, context=context)
265
266 """
267 Inicio de validacion de las lineas de la caja chica para que no excedan
268 el limite definido para las cajas chicas.
269 """
270
271 for repo in repo_brw:
272
273 ####OBTENER CONFIGURACION DE LA UNIDAD DE CALCULO#####
274 #~ ut_ser
275 calc_unit_type = repo.caja_chica_id.unit_type_id and repo.caja_chica_id.unit_type_id.name or False
276 cu_obj = self.pool.get('sisb.calculation.unit')
277 fecha_actual = time.strftime('%Y-%m-%d')
278 ut_ser = cu_obj.get_amount_cu(cr, uid, calc_unit_type, fecha_actual)
279
280 if not ut_ser:
281 raise osv.except_osv(('Error !'), ('No existe unidad de calculo creada para la caja chica'))
282 #####################################
283
284 max_line_total = 0
285 config_brw = repo.caja_chica_id.config
286 if not config_brw:
287 config_brw = config_obj.browse(cr, uid, [config_ser[0]])[0]
288 if not config_brw:
289 raise osv.except_osv(('Error !'), ('Se debe crear una configuracion para el manejo de caja chica.'))
290
291 ut_amount = float(ut_ser)
292 max_line_ut = config_brw.max_linea
293 max_line_total = max_line_ut * ut_amount
294 print 'max_line_total',max_line_total
295 for line in repo.reposicion_linea_ids:
296 if line.amount - max_line_total > 0.0001:
297 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)))
298 if line.account_id.type == 'view':
299 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)))
300
301 #Fin de la validacion
302
303 for repo in repo_brw:
304 caja_brw = repo.caja_chica_id
305 move_dict = {}
306 ref = elimina_tildes(repo.name + ' / ' + repo.ref)
307 move_dict = {
308 'ref': ref,
309 'journal_id': caja_brw.journal_move_id and caja_brw.journal_move_id.id or None,
310 'to_check': True,
311 }
312 move_id = move_obj.create(cr, uid, move_dict)
313 move_brw = move_obj.browse(cr, uid, [move_id])[0]
314 periodo_id = move_brw.period_id.id
315 context.update({'period_id': periodo_id})
316
317 move_line_ids = []
318 company_id = obj_company._company_default_get(cr, uid, 'account.move', context=context)
319 for line in repo.reposicion_linea_ids:
320 move_line_dict = {}
321 name = elimina_tildes(line.name + ' / ' + line.concepto)
322 move_line_dict = {
323 'name': name[:64],
324 'ref': ref[:64],
325 #~ 'quantity': ,
326 #~ 'product_uom_id': ,
327 'product_id': line.product_id and line.product_id.id or None,
328 'debit': line.amount,
329 'credit': 0.00,
330 'account_id': line.account_id and line.account_id.id or None,
331 'move_id': move_id,
332 'journal_id': caja_brw.journal_move_id and caja_brw.journal_move_id.id or None,
333 'analytic_account_id': line.analytic_id and line.analytic_id.id or 'NULL',
334 'state': 'valid',
335 'period_id': periodo_id,
336 }
337
338 #Creacion de apunte contable para debito por medio de query
339 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']))
340 cr.commit()
341
342 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})
343
344 #Creacion de apunte contable para credito por medio de query
345 #se incorpora el partner en el apunte
346 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']))
347 cr.commit()
348
349 #relacionar la linea de la reposicion con el apunte contable asociado a la caja chica
350 apunte_id = move_line_obj.search(cr, uid, [('move_id', '=',move_id),('partner_id','!=',False)], context=context)
351 if apunte_id:
352 dict_linea = {
353 'move_line_id':apunte_id[0],
354 }
355 repo_line_obj.write(cr, uid, [line.id], dict_linea, context=context)
356 else:
357 raise osv.except_osv(('Error !'), ('Error in create the move.'))
358
359 #Asentar el asiento contable de la caja chica.
360 move_obj.button_validate(cr, uid, [move_id], context=context)
361
362 #Unir lineas de asiento a la reposicion
363 move_line_ids = [mo.id for mo in move_brw.line_id]
364 self.write(cr, uid, [repo.id], {'move_ids': [(6, 0, move_line_ids)]}, context=context)
365
366
367 self.write(cr, uid, lista_repo_uc, {'state': 'done', 'aprobado_por': uid,
368 'fecha_aprobado': fecha_actual, 'period_id': periodo_id}, context=context)
369 for repo in self.browse(cr, uid, lista_repo_uc):
370 context.update({'estado': repo.state})
371 self.log_reposicion(cr, uid, repo.id, context=context)
372
373 return True
374
375
376 return resultado
377
378
379caja_reposicion()
0380
=== added directory 'sisb_calculation_unit/security'
=== added file 'sisb_calculation_unit/security/ir.model.access.csv'
--- sisb_calculation_unit/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ sisb_calculation_unit/security/ir.model.access.csv 2018-02-09 12:50:59 +0000
@@ -0,0 +1,7 @@
1"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
2"access_account_sisb_calculation_unit_user","sisb.calculation.unit","model_sisb_calculation_unit","account.group_account_user",1,0,0,0
3"access_account_sisb_calculation_unit_manager","sisb.calculation.unit","model_sisb_calculation_unit","account.group_account_manager",1,1,1,1
4"access_account_sisb_calculation_unit_type_user","sisb.calculation.unit.type","model_sisb_calculation_unit_type","account.group_account_user",1,0,0,0
5"access_account_sisb_calculation_unit_type_manager","sisb.calculation.unit.type","model_sisb_calculation_unit_type","account.group_account_manager",1,1,1,1
6
7
08
=== added directory 'sisb_calculation_unit/view'
=== added file 'sisb_calculation_unit/view/sisb_calculation_unit_view.xml'
--- sisb_calculation_unit/view/sisb_calculation_unit_view.xml 1970-01-01 00:00:00 +0000
+++ sisb_calculation_unit/view/sisb_calculation_unit_view.xml 2018-02-09 12:50:59 +0000
@@ -0,0 +1,176 @@
1<?xml version="1.0"?>
2<openerp>
3 <data>
4<!--
5Calculation Unit
6-->
7 <record id="view_sisb_calculation_unit_filter" model="ir.ui.view">
8 <field name="name">sisb.calculation.unit.search</field>
9 <field name="model">sisb.calculation.unit</field>
10 <field name="type">search</field>
11 <field name="arch" type="xml">
12 <search string="Search Calculation Unit">
13 <group col="10" colspan="4">
14 <field name="name"/>
15 <field name="unit_type_id" widget="selection"/>
16 <field name="date"/>
17 <field name="amount"/>
18 </group>
19 <newline/>
20 <group expand="1" string="Group By...">
21 <filter string="Unit Type" icon="terp-go-month" domain="[]" context="{'group_by':'unit_type_id'}"/>
22 </group>
23 </search>
24 </field>
25 </record>
26
27 <record model="ir.ui.view" id="view_sisb_calculation_unit_form">
28 <field name="name">sisb.calculation.unit.form</field>
29 <field name="model">sisb.calculation.unit</field>
30 <field name="type">form</field>
31 <field name="arch" type="xml">
32 <form string="Calculation Unit">
33 <group col="6" colspan="4">
34 <field name="unit_type_id" select="1"/>
35 <field name="name" select="1" colspan="4"/>
36 <field name="date" select="1"/>
37 <field name="amount" select="1"/>
38 </group>
39 </form>
40 </field>
41 </record>
42
43 <record model="ir.ui.view" id="view_sisb_calculation_unit_tree">
44 <field name="name">sisb.calculation.unit.tree</field>
45 <field name="model">sisb.calculation.unit</field>
46 <field name="type">tree</field>
47 <field name="arch" type="xml">
48 <tree string="Calculation Unit per date" editable="top">
49 <field name="unit_type_id" widget="selection"/>
50 <field name="name"/>
51 <field name="date"/>
52 <field name="amount"/>
53 </tree>
54 </field>
55 </record>
56
57 <record id="act_sisb_calculation_unit_tree" model="ir.actions.act_window">
58 <field name="name">Calculation Unit</field>
59 <field name="res_model">sisb.calculation.unit</field>
60 <field name="view_type">form</field>
61 <field name="view_mode">tree,form</field>
62 <field name="search_view_id" ref="view_sisb_calculation_unit_filter"/>
63 <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>
64 </record>
65
66 <menuitem id="conf_sisb_calc_unit" name="Calculation Unit" parent="account.menu_finance_accounting"/>
67 <menuitem
68 parent="conf_sisb_calc_unit"
69 id="menu_action_sisb_calculation_unit_tree"
70 action="act_sisb_calculation_unit_tree"/>
71
72<!--
73Calculation Unit Type
74-->
75 <record id="view_sisb_calculation_unit_type_filter" model="ir.ui.view">
76 <field name="name">sisb.calculation.unit.type.search</field>
77 <field name="model">sisb.calculation.unit.type</field>
78 <field name="type">search</field>
79 <field name="arch" type="xml">
80 <search string="Search Calculation Unit Type">
81 <group col="10" colspan="4">
82 <field name="name"/>
83 </group>
84 </search>
85 </field>
86 </record>
87
88 <record model="ir.ui.view" id="view_sisb_calculation_unit_type_form">
89 <field name="name">sisb.calculation.unit.type.form</field>
90 <field name="model">sisb.calculation.unit.type</field>
91 <field name="type">form</field>
92 <field name="arch" type="xml">
93 <form string="Calculation Unit Type">
94 <group col="6" colspan="4">
95 <field name="name" select="1" colspan="4"/>
96 </group>
97 </form>
98 </field>
99 </record>
100
101 <record model="ir.ui.view" id="view_sisb_calculation_unit_type_tree">
102 <field name="name">sisb.calculation.unit.type.tree</field>
103 <field name="model">sisb.calculation.unit.type</field>
104 <field name="type">tree</field>
105 <field name="arch" type="xml">
106 <tree string="Calculation Unit Type" editable="top">
107 <field name="name"/>
108 </tree>
109 </field>
110 </record>
111
112 <record id="act_sisb_calculation_unit_type_tree" model="ir.actions.act_window">
113 <field name="name">Calculation Unit Type</field>
114 <field name="res_model">sisb.calculation.unit.type</field>
115 <field name="view_type">form</field>
116 <field name="view_mode">tree,form</field>
117 <field name="search_view_id" ref="view_sisb_calculation_unit_type_filter"/>
118 <field name="help">Defines the type of calculation unit.</field>
119 </record>
120 <menuitem
121 parent="conf_sisb_calc_unit"
122 id="menu_action_sisb_calculation_unit_type_tree"
123 action="act_sisb_calculation_unit_type_tree"/>
124
125<!--
126 Herencia Caja Chica
127-->
128
129<!--
130 Arbol
131-->
132 <record id="inherit_view_caja_chica_tree" model="ir.ui.view">
133 <field name="name">inherit.view.caja.chica.tree</field>
134 <field name="model">caja.chica</field>
135 <field name="type">tree</field>
136 <field name="inherit_id" ref="l10n_ve_caja_chica.view_caja_chica_tree"/>
137 <field name="arch" type="xml">
138 <xpath expr='/tree/field[@name="state"]' position='after'>
139 <field name="calculation_unit"/>
140 </xpath>
141 </field>
142 </record>
143<!--
144 Formulario
145-->
146 <record id="inherit_unit_calc_view_caja_chica_form" model="ir.ui.view">
147 <field name="name">inherit.unit.calc.view.caja.chica.form</field>
148 <field name="model">caja.chica</field>
149 <field name="type">form</field>
150 <field name="inherit_id" ref="l10n_ve_caja_chica.view_caja_chica_form"/>
151 <field name="arch" type="xml">
152 <xpath expr='/form/notebook/page/group' position="after">
153 <separator string="Calculating Unit" />
154 <field name='calculation_unit' on_change="onchange_calculation_unit(calculation_unit)"/>
155 <field name='unit_type_id' widget="selection" attrs="{'invisible':[('calculation_unit','=','ut')], 'required':[('calculation_unit','!=','ut')]}"/>
156 </xpath>
157 </field>
158 </record>
159
160
161<!--
162 Busqueda
163-->
164 <record id="view_caja_chica_filter_inherit" model="ir.ui.view">
165 <field name="name">caja.chica.search.inherit</field>
166 <field name="model">caja.chica</field>
167 <field name="inherit_id" ref="l10n_ve_caja_chica.view_caja_chica_filter"/>
168 <field name="type">search</field>
169 <field name="arch" type="xml">
170 <xpath expr="/search/group/field[@name='fiscalyear_id']" position="after">
171 <field name="calculation_unit"/>
172 </xpath>
173 </field>
174 </record>
175 </data>
176</openerp>

Subscribers

People subscribed via source and target branches