def nomina(self): self.lista = Gtk.ListStore(long, str, str, str, str, str) render0 = Gtk.CellRendererText() render0.set_property("xalign", 1.0) render0.set_property("visible", False) render1 = Gtk.CellRendererText() render1.set_property("xalign", 0) render2 = Gtk.CellRendererText() render2.set_property("xalign", 1.0) render2.set_property("editable", True) render2.connect('edited', self.col2_edited_cb, self.lista) render3 = Gtk.CellRendererText() render3.set_property("xalign", 1.0) render3.set_property("editable", True) render3.connect('edited', self.col3_edited_cb, self.lista) render4 = Gtk.CellRendererText() render4.set_property("xalign", 1.0) render5 = Gtk.CellRendererText() render5.set_property("xalign", 1.0) SqlNom = SqlNominas(self.lanomina) #devengos = SqlNom.ver_devengos(self.trabajador, self.mes, self.anio) # self.tabla = Gtk.Table(len(devengos[0]),len(devengos)) lista_devengos = SqlNom.lista_devengos_nomina( ) + SqlNom.lista_pagas_extras() for k in lista_devengos: contenido = [] devengo = Nomina_Devengo(k[0]) #for l in k: # entrada = Gtk.Label(devengos[t][p]) # self.tabla.attach(entrada,p,p+1,t,t+1) # entrada.show() # print "Dev",devengos[t][p],t, p #if isinstance(devengo.precio, float): # l = "{0:,.2f}".format(l) decimales = '{0:,.2f}' contenido.append(devengo.id) contenido.append(devengo.concepto) contenido.append(decimales.format(devengo.cuantia)) contenido.append(decimales.format(devengo.precio)) contenido.append(decimales.format(devengo.devengado)) contenido.append(decimales.format(devengo.deducido)) self.lista.append(contenido) self.vista.set_model(self.lista) col1 = Gtk.TreeViewColumn("Num.", render0, text=0) col2 = Gtk.TreeViewColumn("Concepto", render1, text=1) col3 = Gtk.TreeViewColumn("Cant.", render2, text=2) col4 = Gtk.TreeViewColumn("Precio", render3, text=3) col5 = Gtk.TreeViewColumn("Devengo", render4, text=4) col6 = Gtk.TreeViewColumn("Deduccion", render5, text=5) self.vista.append_column(col1) self.vista.append_column(col2) self.vista.append_column(col3) self.vista.append_column(col4) self.vista.append_column(col5) self.vista.append_column(col6) self.vista.set_search_column(0) cabecera = SqlNom.ver_nomina(self.trabajador, self.mes, self.anio) self.lcif.set_text(SqlNom.cif) self.lcontrato.set_text(SqlNom.contrato.contrato.descripcion) ldir = SqlNom.cta_cot.centro_trabajo.dir_calle + ', ' + SqlNom.cta_cot.centro_trabajo.dir_numero self.ldireccion.set_text(ldir) self.lhoras.set_text(unicode(SqlNom.horas_cotizadas())) self.lidcontrato.set_text(unicode(SqlNom.contrato.codigo)) self.lidnomina.set_text(unicode(SqlNom.id)) self.lnaf.set_text(SqlNom.naf) self.lnif.set_text(SqlNom.nif) self.lncc.set_text(SqlNom.cta_cot.cuenta_cotizacion) self.lnumcontrato.set_text(unicode(SqlNom.contrato.idcontrato)) self.lperiodo.set_text("Del " + SqlNom.periodo) try: self.lppextra.set_text("{:,.2f}".format(SqlNom.base_ppextra)) self.lremuneracion.set_text("{:,.2f}".format(SqlNom.imp_remumes)) except: pass self.lpuesto.set_text(SqlNom.puesto) self.lempresa.set_text(SqlNom.nombreempresa) self.ld.set_text(unicode(SqlNom.dias_cotizados())) self.lantiguedad.set_text(str(cabecera[2])) if SqlNom.contrato.contrato.es_tiempo_parcial: self.rb_es_tpoparcial.set_active(True) elif SqlNom.contrato.contrato.es_tiempo_completo: self.rb_es_tpocompleto.set_active(True) if SqlNom.contrato.contrato.es_indefinido: self.rb_es_indefinido.set_active(True) elif SqlNom.contrato.contrato.es_temporal: self.rb_es_temporal.set_active(True) self.ltrabajador.set_text(SqlNom.nombre_trabajador) self.lb_irpf.set_text("{:,.2f}".format(SqlNom.base_irpf)) self.lliquido.set_text('{:,.2f}'.format(SqlNom.liquido)) self.lb_segsoc.set_text("{:,.2f}".format(SqlNom.base_cc)) self.vista.show() seleccion = self.vista.get_selection().get_selected() # self.tabla.show() # self.box14.add(self.tabla) self.box14.show()
def nomina(self): self.lista = Gtk.ListStore(long, str, str, str, str, str) render0 = Gtk.CellRendererText() render0.set_property("xalign", 1.0) render0.set_property("visible", False) render1 = Gtk.CellRendererText() render1.set_property("xalign", 0) render2 = Gtk.CellRendererText() render2.set_property("xalign", 1.0) render2.set_property("editable", True) render2.connect('edited', self.col2_edited_cb, self.lista) render3 = Gtk.CellRendererText() render3.set_property("xalign", 1.0) render3.set_property("editable", True) render3.connect('edited', self.col3_edited_cb, self.lista) render4 = Gtk.CellRendererText() render4.set_property("xalign", 1.0) render5 = Gtk.CellRendererText() render5.set_property("xalign", 1.0) SqlNom = SqlNominas(self.lanomina) #devengos = SqlNom.ver_devengos(self.trabajador, self.mes, self.anio) # self.tabla = Gtk.Table(len(devengos[0]),len(devengos)) lista_devengos = SqlNom.lista_devengos_nomina() + SqlNom.lista_pagas_extras() for k in lista_devengos: contenido = [] devengo = Nomina_Devengo(k[0]) #for l in k: # entrada = Gtk.Label(devengos[t][p]) # self.tabla.attach(entrada,p,p+1,t,t+1) # entrada.show() # print "Dev",devengos[t][p],t, p #if isinstance(devengo.precio, float): # l = "{0:,.2f}".format(l) decimales = '{0:,.2f}' contenido.append(devengo.id) contenido.append(devengo.concepto) contenido.append(decimales.format(devengo.cuantia)) contenido.append(decimales.format(devengo.precio)) contenido.append(decimales.format(devengo.devengado)) contenido.append(decimales.format(devengo.deducido)) self.lista.append(contenido) self.vista.set_model(self.lista) col1 = Gtk.TreeViewColumn("Num.", render0, text=0) col2 = Gtk.TreeViewColumn("Concepto", render1, text=1) col3 = Gtk.TreeViewColumn("Cant.", render2, text=2) col4 = Gtk.TreeViewColumn("Precio", render3, text=3) col5 = Gtk.TreeViewColumn("Devengo", render4, text=4) col6 = Gtk.TreeViewColumn("Deduccion", render5, text=5) self.vista.append_column(col1) self.vista.append_column(col2) self.vista.append_column(col3) self.vista.append_column(col4) self.vista.append_column(col5) self.vista.append_column(col6) self.vista.set_search_column(0) cabecera = SqlNom.ver_nomina(self.trabajador, self.mes, self.anio) self.lcif.set_text(SqlNom.cif) self.lcontrato.set_text(SqlNom.contrato.contrato.descripcion) ldir = SqlNom.cta_cot.centro_trabajo.dir_calle + ', ' + SqlNom.cta_cot.centro_trabajo.dir_numero self.ldireccion.set_text(ldir) self.lhoras.set_text(unicode(SqlNom.horas_cotizadas())) self.lidcontrato.set_text(unicode(SqlNom.contrato.codigo)) self.lidnomina.set_text(unicode(SqlNom.id)) self.lnaf.set_text(SqlNom.naf) self.lnif.set_text(SqlNom.nif) self.lncc.set_text(SqlNom.cta_cot.cuenta_cotizacion) self.lnumcontrato.set_text(unicode(SqlNom.contrato.idcontrato)) self.lperiodo.set_text("Del " + SqlNom.periodo) try: self.lppextra.set_text("{:,.2f}".format(SqlNom.base_ppextra)) self.lremuneracion.set_text("{:,.2f}".format(SqlNom.imp_remumes)) except: pass self.lpuesto.set_text(SqlNom.puesto) self.lempresa.set_text(SqlNom.nombreempresa) self.ld.set_text(unicode(SqlNom.dias_cotizados())) self.lantiguedad.set_text(str(cabecera[2])) if SqlNom.contrato.contrato.es_tiempo_parcial: self.rb_es_tpoparcial.set_active(True) elif SqlNom.contrato.contrato.es_tiempo_completo: self.rb_es_tpocompleto.set_active(True) if SqlNom.contrato.contrato.es_indefinido: self.rb_es_indefinido.set_active(True) elif SqlNom.contrato.contrato.es_temporal: self.rb_es_temporal.set_active(True) self.ltrabajador.set_text(SqlNom.nombre_trabajador) self.lb_irpf.set_text("{:,.2f}".format(SqlNom.base_irpf)) self.lliquido.set_text('{:,.2f}'.format(SqlNom.liquido)) self.lb_segsoc.set_text("{:,.2f}".format(SqlNom.base_cc)) self.vista.show() seleccion = self.vista.get_selection().get_selected() # self.tabla.show() # self.box14.add(self.tabla) self.box14.show()
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)