class Bases: ''' :return: ''' def __init__(self, nomina): self.id = nomina self.nomina = SqlNominas(self.id) self.grupo_cot_id = self.nomina.grupo_cotizacion_id self.anio = self.nomina.fecha_anio self.mes = self.nomina.fecha_mes self.contrato_id = self.nomina.contrato_id self.cta_cot_id = self.nomina.cta_cot_id self.coef_pextra = self.nomina.cta_cot.coef_pextra self.lista_devengos = self.nomina.lista_devengos_nomina() self.lista_pextra = self.nomina.lista_pagas_extras() self.calendario = Calendario(self.cta_cot_id, self.anio) self.bases_cotizacion() def __call__(self, nomina): self.__init__(nomina) def bases_cotizacion(self): ''' :return: ''' self.base_irpf = 0 self.base_remuneracion = 0 self.base_irpf_especie = 0 self.base_ppextra = 0 self.base_irpf_segsoc = 0 self.base_segsoc_sinirpf = 0 self.base_irpf_sinsegsoc = 0 self.no_cotizan = 0 self.nomina.actualiza_ppextra() self.nomina = SqlNominas(self.id) self.base_ppextra = self.nomina.base_ppextra # Para calcular las bases de cotización distinguimos entre devengos y pagas extras # Comprobamos que los devengos cotizan a la seguridad social al igual que las pagas extras # Comprobamos que los devengos cotizan en el IRPF al igual que las pagas extras # Los prorrateos de pagas extras se calculan en SqlNominas.devengo_ppextra() for x in (self.lista_devengos + self.lista_pextra): devengo = Nomina_Devengo(x[0]) print ' ....****>>>> Devengo/segsoc/irpf', devengo.concepto, devengo.cotiza_segsocial, devengo.cotiza_irpf if devengo.cotiza_segsocial: self.base_remuneracion = self.base_remuneracion + devengo.devengado if devengo.cotiza_irpf: if devengo.es_devengo_especie: self.base_irpf_especie = self.base_irpf_especie + devengo.devengado else: self.base_irpf = self.base_irpf + devengo.devengado if devengo.cotiza_irpf and devengo.cotiza_segsocial: self.base_irpf_segsoc = self.base_irpf_segsoc + devengo.devengado if not devengo.cotiza_irpf and devengo.cotiza_segsocial: self.base_segsoc_sinirpf = self.base_segsoc_sinirpf + devengo.devengado if devengo.cotiza_irpf and not devengo.cotiza_segsocial: self.base_irpf_sinsegsoc = self.base_irpf_sinsegsoc + devengo.devengado if not devengo.cotiza_irpf and not devengo.cotiza_segsocial: self.no_cotizan = self.no_cotizan + devengo.devengado self.base_segsocial = self.base_ppextra + self.base_remuneracion def base_it(self): base_it_tot = 0 try: self.it_nomina = It_nomina(self.id) self.dias_pendientes = self.it_nomina.it_dias_pendientes dias_acumulados = self.it_nomina.it_dias_acumulados dias_aplicados = dias_acumulados - self.dias_pendientes base_it_dia = self.it_nomina.it.basecot_diaria_it if self.it_nomina.it.es_cont_comun: sql = ("Select " "desdedia, hastadia, porcentaje " "From " "tb_it " "Where " "es_contcomun " "order by desdedia ") dato = select_sql(sql, 1) for j in dato: if j[0] >= dias_aplicados and self.dias_pendientes > 0: if (j[1] - j[0] + 1) >= self.dias_pendientes: base_it_tot += base_it_dia * j[ 2] * self.dias_pendientes dias_aplicados = dias_aplicados + self.dias_pendientes self.dias_pendientes = self.dias_pendientes - self.dias_pendientes else: base_it_tot += base_it_dia * j[2] * (j[1] - j[0] + 1) dias_aplicados = dias_aplicados + j[1] - j[0] + 1 self.dias_pendientes -= dias_aplicados if self.it_registro.es_enfermedad_prof: pass except: pass return base_it_tot def no_cotizan(self): """ Devengos que no cotizan ni en seguridad social ni en irpf """ sql = ("SELECT " "sum(imp_devengo) as importe " "FROM " "nomina_devengos " "WHERE " "esdevengo " "and (not cont_com " "AND not irpf) " "and idnomina = %s;") dato = select_sql((sql, (self.id)))[0] if dato is None: dato = 0 return dato def control_base_min_max(self): sql = ("Select " "B.idtb_grupocot_base " "From " "tb_grupos_cotizacion A " "inner join " "tb_gruposcot_bases B" "on A.idgrupos_cotizacion = B.idtb_grupo_cotizacion " "Where " "A.idgrupos_cotizacion = %s " "and B.ejercicio = %s ") dato = select_sql((sql, (self.grupo_cot_id, self.anio)))[0] self.grupo_cot_bases = Grupo_cotizacion_bases(dato)
class Bases: ''' :return: ''' def __init__(self, nomina): self.id = nomina self.nomina = SqlNominas(self.id) self.grupo_cot_id = self.nomina.grupo_cotizacion_id self.anio = self.nomina.fecha_anio self.mes = self.nomina.fecha_mes self.contrato_id = self.nomina.contrato_id self.cta_cot_id = self.nomina.cta_cot_id self.coef_pextra = self.nomina.cta_cot.coef_pextra self.lista_devengos = self.nomina.lista_devengos_nomina() self.lista_pextra = self.nomina.lista_pagas_extras() self.calendario = Calendario(self.cta_cot_id, self.anio) self.bases_cotizacion() def __call__(self, nomina): self.__init__(nomina) def bases_cotizacion(self): ''' :return: ''' self.base_irpf = 0 self.base_remuneracion = 0 self.base_irpf_especie = 0 self.base_ppextra = 0 self.base_irpf_segsoc = 0 self.base_segsoc_sinirpf = 0 self.base_irpf_sinsegsoc = 0 self.no_cotizan = 0 self.nomina.actualiza_ppextra() self.nomina = SqlNominas(self.id) self.base_ppextra = self.nomina.base_ppextra # Para calcular las bases de cotización distinguimos entre devengos y pagas extras # Comprobamos que los devengos cotizan a la seguridad social al igual que las pagas extras # Comprobamos que los devengos cotizan en el IRPF al igual que las pagas extras # Los prorrateos de pagas extras se calculan en SqlNominas.devengo_ppextra() for x in (self.lista_devengos + self.lista_pextra): devengo = Nomina_Devengo(x[0]) print ' ....****>>>> Devengo/segsoc/irpf', devengo.concepto, devengo.cotiza_segsocial, devengo.cotiza_irpf if devengo.cotiza_segsocial: self.base_remuneracion = self.base_remuneracion + devengo.devengado if devengo.cotiza_irpf: if devengo.es_devengo_especie: self.base_irpf_especie = self.base_irpf_especie + devengo.devengado else: self.base_irpf = self.base_irpf + devengo.devengado if devengo.cotiza_irpf and devengo.cotiza_segsocial: self.base_irpf_segsoc = self.base_irpf_segsoc + devengo.devengado if not devengo.cotiza_irpf and devengo.cotiza_segsocial: self.base_segsoc_sinirpf = self.base_segsoc_sinirpf + devengo.devengado if devengo.cotiza_irpf and not devengo.cotiza_segsocial: self.base_irpf_sinsegsoc = self.base_irpf_sinsegsoc + devengo.devengado if not devengo.cotiza_irpf and not devengo.cotiza_segsocial: self.no_cotizan = self.no_cotizan + devengo.devengado self.base_segsocial = self.base_ppextra + self.base_remuneracion def base_it(self): base_it_tot = 0 try: self.it_nomina = It_nomina(self.id) self.dias_pendientes = self.it_nomina.it_dias_pendientes dias_acumulados = self.it_nomina.it_dias_acumulados dias_aplicados = dias_acumulados - self.dias_pendientes base_it_dia = self.it_nomina.it.basecot_diaria_it if self.it_nomina.it.es_cont_comun: sql = ( "Select " "desdedia, hastadia, porcentaje " "From " "tb_it " "Where " "es_contcomun " "order by desdedia ") dato = select_sql(sql,1) for j in dato: if j[0] >= dias_aplicados and self.dias_pendientes >0: if (j[1]-j[0]+1) >= self.dias_pendientes: base_it_tot += base_it_dia * j[2] * self.dias_pendientes dias_aplicados = dias_aplicados + self.dias_pendientes self.dias_pendientes = self.dias_pendientes - self.dias_pendientes else: base_it_tot += base_it_dia * j[2] * (j[1] - j[0] + 1) dias_aplicados = dias_aplicados + j[1]-j[0]+1 self.dias_pendientes -= dias_aplicados if self.it_registro.es_enfermedad_prof: pass except: pass return base_it_tot def no_cotizan(self): """ Devengos que no cotizan ni en seguridad social ni en irpf """ sql = ( "SELECT " "sum(imp_devengo) as importe " "FROM " "nomina_devengos " "WHERE " "esdevengo " "and (not cont_com " "AND not irpf) " "and idnomina = %s;") dato = select_sql((sql, (self.id)))[0] if dato is None: dato = 0 return dato def control_base_min_max(self): sql = ( "Select " "B.idtb_grupocot_base " "From " "tb_grupos_cotizacion A " "inner join " "tb_gruposcot_bases B" "on A.idgrupos_cotizacion = B.idtb_grupo_cotizacion " "Where " "A.idgrupos_cotizacion = %s " "and B.ejercicio = %s ") dato = select_sql((sql, (self.grupo_cot_id, self.anio)))[0] self.grupo_cot_bases = Grupo_cotizacion_bases(dato)