~inddiana/sisb/javier_sisb_reposos_medicos

« back to all changes in this revision

Viewing changes to sisb_nomina/report/hr_listado_conceptos_report.py


[MOD] Se cambio campo many2one a hr.sede en el reporte de listado de
conceptos por campo many2many al mismo objeto para que se puedan
sacar reportes por varias sedes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
            'create_lista_concepto':self.create_lista_concepto,
21
21
            'get_mes':self.get_mes,
22
22
            'get_concepto':self.get_concepto,
23
 
            'get_sede':self.get_sede,
 
23
            'get_sedes':self.get_sedes,
24
24
            'get_total':self.get_total,
25
25
            'get_final_date':self.get_final_date,
26
26
                    })
40
40
        hr_concept_obj = self.pool.get('hr.concept')
41
41
        hr_sede_obj = self.pool.get('hr.sede')
42
42
        hr_concept_brw = hr_concept_obj.browse(self.cr, self.uid, valor['concept_id'])
43
 
        if valor['sede_id']:
44
 
            hr_sede_brw = hr_sede_obj.browse(self.cr, self.uid, valor['sede_id'])
 
43
        if valor['sede_ids']:
 
44
            hr_sede_brw = hr_sede_obj.browse(self.cr, self.uid, valor['sede_ids'])
45
45
        period_brw = hr_monthr_brw.hr_period_ids
46
46
        
47
47
        if valor['payroll_id']:
59
59
        concept_id = hr_concept_brw
60
60
        if hr_sede_brw:
61
61
            line_ids = self.pool.get('hr.payslip.line').search(self.cr, self.uid, 
62
 
              [('code','=',concept_id.code),('sede_id','=',hr_sede_brw.id),
 
62
              [('code','=',concept_id.code),('sede_id','in',valor['sede_ids']),
63
63
              ('process_id','in',process_ids)])
64
64
        else:
65
65
            line_ids = self.pool.get('hr.payslip.line').search(self.cr, self.uid, 
75
75
            parameter_id = valor['name_concepts'][valor['concept_id']]
76
76
            parameter_brw = parameter_obj.browse(self.cr, self.uid, parameter_id)
77
77
            
78
 
            #~ if parameter_brw.type <> 'concepto_caja_ahorro':
79
 
                #~ empresa_porc = parameter_brw.porcentaje_empresa
80
 
                #~ if not empresa_porc:
81
 
                    #~ raise osv.except_osv(_('ERROR!'), _('No se definio el \
82
 
                      #~ porcentaje de aporte empresa para el parametro %s'%parameter_brw.type))
83
 
                #~ 
84
 
                #~ empleado_porc = parameter_brw.porcentaje_empleado
85
 
                #~ if not empleado_porc:
86
 
                    #~ raise osv.except_osv(_('ERROR!'), _('No se definio el porcentaje \
87
 
                      #~ de aporte trabajador para el parametro %s'%parameter_brw.type))
88
 
            #~ 
89
 
            #~ else:
90
 
                #~ empresa_porc = ''
91
 
                #~ empleado_porc = ''
92
 
           
93
78
            aporte_id = parameter_brw.concept_aporte_compania_id.id
94
79
            if not aporte_id:
95
80
                raise osv.except_osv(_('ERROR!'), _('No se definio el campo \
108
93
            payslib_obj = self.pool.get('hr.payslip.line')
109
94
            if hr_sede_brw:
110
95
                payslips_ids = payslib_obj.search(self.cr, self.uid, 
111
 
                  [('concept_id','in', concept_list),('sede_id','=',hr_sede_brw.id),
 
96
                  [('concept_id','in', concept_list),('sede_id','in',valor['sede_ids']),
112
97
                  ('process_id','in',process_ids)])
113
98
            else:
114
99
                payslips_ids = payslib_obj.search(self.cr, self.uid, 
219
204
        hr_concept_obj = self.pool.get('hr.concept')
220
205
        hr_sede_obj = self.pool.get('hr.sede')
221
206
        hr_concept_brw = hr_concept_obj.browse(self.cr, self.uid, valor['concept_id'])
222
 
        if valor['sede_id']:
223
 
            hr_sede_brw = hr_sede_obj.browse(self.cr, self.uid, valor['sede_id'])
224
 
            
 
207
        if valor['sede_ids']:
 
208
            hr_sede_brw = hr_sede_obj.browse(self.cr, self.uid, valor['sede_ids'])
225
209
        period_brw = hr_monthr_brw.hr_period_ids
226
210
        if valor['payroll_id']:
227
211
            hr_payroll_brw = hr_payroll_obj.browse(self.cr, self.uid, 
239
223
        
240
224
        if hr_sede_brw:
241
225
            line_ids = self.pool.get('hr.payslip.line').search(self.cr, self.uid, 
242
 
              [('code','=',concept_id.code),('sede_id','=',hr_sede_brw.id),
 
226
              [('code','=',concept_id.code),('sede_id','in',valor['sede_ids']),
243
227
              ('process_id','in',process_ids)])
244
228
        else:
245
229
            line_ids = self.pool.get('hr.payslip.line').search(self.cr, self.uid, 
256
240
            concept_acum = {'datos':[]}
257
241
            parameter_id = valor['name_concepts'][valor['concept_id']]
258
242
            parameter_brw = parameter_obj.browse(self.cr, self.uid, parameter_id)
259
 
            #~ empresa_porc = parameter_brw.porcentaje_empresa
260
 
            #~ empleado_porc = parameter_brw.porcentaje_empleado
261
243
            aporte_id = parameter_brw.concept_aporte_compania_id.id
262
244
            base_id = parameter_brw.concept_base_id.id
263
245
            concepto = concept_id.id
266
248
            concept_list.append(base_id)
267
249
            concept_list.append(concepto)
268
250
            payslib_obj = self.pool.get('hr.payslip.line')
269
 
           
270
251
            if hr_sede_brw:
271
 
                payslips_id = payslib_obj.search(self.cr, self.uid, 
272
 
                  [('concept_id','in', concept_list),('sede_id','=',hr_sede_brw.id),
 
252
                payslips_ids = payslib_obj.search(self.cr, self.uid, 
 
253
                  [('concept_id','in', concept_list),('sede_id','in',valor['sede_ids']),
273
254
                  ('process_id','in',process_ids)])
274
255
            else:
275
256
                payslips_ids = payslib_obj.search(self.cr, self.uid, 
276
257
                  [('concept_id','in', concept_list),('process_id','in',process_ids)])
277
258
            
278
 
            #~ payslips_id= payslib_obj.search(self.cr, self.uid, 
279
 
             #~ [('concept_id','in', concept_list),('process_id','in',process_ids)])
280
 
           
281
 
            for p in payslib_obj.browse(self.cr, self.uid, payslips_id):
 
259
            for p in payslib_obj.browse(self.cr, self.uid, payslips_ids):
282
260
                concept_acum['datos'].append({'empleado':(p.employee_id.cod_number, 
283
261
                  p.employee_id.identification_id, p.employee_id.name), 
284
262
                  'concepto':{'name':p.concept_id.id, 'total': round(p.total, 2)}})
285
 
            
286
263
            for i in concept_acum['datos']:
287
264
                acum[i['empleado']] = []
288
265
            
310
287
           
311
288
            total = 0    
312
289
            total_aporte_traba = 0    
313
 
            total_aporte_empresa = 0    
 
290
            total_aporte_empresa = 0
314
291
            for i in ordenador:
315
292
                if len(ordenador[i]) >= 3:
316
293
                    for n in ordenador[i]:
329
306
                    total = total + monto 
330
307
            result = (round(total, 2),round(total_aporte_traba, 2),round(total_aporte_empresa, 2)) 
331
308
            return result
332
 
        
333
309
        total = 0
334
310
        for line in line_brw:
335
311
            total = total + line.total
 
312
            
336
313
        return total
337
314
 
338
315
 
379
356
            }
380
357
        return res
381
358
        
382
 
    def get_sede(self, valor):
 
359
    def get_sedes(self, valor):
383
360
        obj_mes = self.pool.get('hr.sede')
384
361
        res = {}
385
 
        if valor['sede_id']:
386
 
            row_brw = obj_mes.browse(self.cr, self.uid, valor['sede_id'])
 
362
        if valor['sede_ids']:
 
363
            row_brw = obj_mes.browse(self.cr, self.uid, valor['sede_ids'])
 
364
            row_brw = [x.name for x in row_brw]
 
365
            name = ', '.join(row_brw)
387
366
            if not isinstance(row_brw, list):
388
367
                row_brw = [row_brw]
389
368
            for row in row_brw:
390
369
                res = {
391
 
                    'name':row.name,
 
370
                    'name':name,
392
371
                }
393
372
        else:
394
373
            res = {