Beispiel #1
0
class CalcPextra:
    '''
    classdocs
    '''
    def __init__(self, idnomina=0):
        '''
        Constructor
        '''
        self.id = idnomina
        self.nomina = SqlNominas(self.id)
        importe = 0
        for x in self.nomina.lista_devengos_nomina():
            self.devengo = Nomina_Devengo(x[0])
            importe = self.devengo.paga_extra() + importe
            print "paga extra", self.devengo.id, importe
Beispiel #2
0
class CalcPextra:
    '''
    classdocs
    '''


    def __init__(self, idnomina = 0):
        '''
        Constructor
        '''
        self.id = idnomina
        self.nomina = SqlNominas(self.id)
        importe = 0
        for x in self.nomina.lista_devengos_nomina():
            self.devengo = Nomina_Devengo(x[0])
            importe = self.devengo.paga_extra()+importe
            print "paga extra",self.devengo.id,importe
Beispiel #3
0
 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()
Beispiel #4
0
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)
Beispiel #5
0
 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()
Beispiel #6
0
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)