def __init__(self, mes, anio, empresa, trabajador=0, esnomina=True, esfiniquito=False, esnominapextra=False): """ Constructor """ self.mes = mes self.anio = anio self.dia = ultimodiames(mes, anio) self.fecha = str(self.anio) + "-" + str(self.mes) + "-" + str(self.dia) self.empresa = empresa self.es_finiquito = esfiniquito self.es_nomina = esnomina self.es_nominapextra = esnominapextra locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8') self.estemes = time.strftime( "%B", time.strptime(str(self.mes) + ',' + str(self.anio), '%m,%Y')) self.trabajador_id = trabajador self.SqlNom = SqlNominas() self.cabecera = Cabecera(self.empresa, self.mes, self.anio, self.trabajador_id) print "*********** ALTA NOMINA **************" print 'Nomina:', self.es_nomina, ' Finiquito:', self.es_finiquito self.nominas_empresa()
def __init__(self, mes, anio, empresa, trabajador=0, esnomina=True, esfiniquito=False, esnominapextra=False): """ Constructor """ self.mes = mes self.anio = anio self.dia = ultimodiames(mes, anio) self.fecha = str(self.anio) + "-" + str(self.mes) + "-" + str(self.dia) self.empresa = empresa self.es_finiquito = esfiniquito self.es_nomina = esnomina self.es_nominapextra = esnominapextra locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8') self.estemes = time.strftime("%B", time.strptime(str(self.mes) + ',' + str(self.anio), '%m,%Y')) self.trabajador_id = trabajador self.SqlNom = SqlNominas() self.cabecera = Cabecera(self.empresa, self.mes, self.anio, self.trabajador_id) print "*********** ALTA NOMINA **************" print 'Nomina:', self.es_nomina, ' Finiquito:', self.es_finiquito self.nominas_empresa()
def __init__(self, nomina=0): self.id = nomina self.base_ppextra = self.dato_nomina('base_ppextra') self.base_irpf = self.dato_nomina('base_irpf') self.base_cc = self.dato_nomina('base_cc') self.cif = self.dato_nomina("cif") self.contrato_id = self.dato_nomina('idemp_contratos') self.contrato = Contrato(self.contrato_id) try: self.dirtrabajador = self.contrato.trabajador.direccion_completa self.cptrabajador = self.contrato.trabajador.cod_postal self.pobtrabajador = poblacion(self.cptrabajador) self.provtrabajador = provincia(self.cptrabajador) self.motivoextincion = self.contrato.motivoextincion except: pass self.cta_cot_id = self.dato_nomina('idcta_cot') try: self.cta_cot = Cod_cotizacion(self.cta_cot_id) self.dirempresa = self.cta_cot.centro_trabajo.dircompleta self.cpempresa = self.cta_cot.centro_trabajo.dir_codpostal self.pobempresa = poblacion(self.cpempresa) self.provempresa = provincia(self.cpempresa) except: print 'No se activa la cta_cot' self.cta_cot = 0 self.descripcion = self.dato_nomina('descripcion') self.empresa_id = self.dato_nomina('idempresa') self.es_finiquito = si_no(self.dato_nomina('es_finiquito')) self.es_nominapextra = si_no(self.dato_nomina('es_nominapextra')) self.epigrafe_id = self.dato_nomina('idtb_epigrafe') self.fecha = self.dato_nomina('fecha') self.fecha_dia = self.dato_nomina('dayofmonth(fecha)') self.grupo_cotizacion_id = self.dato_nomina('idgrupos_cotizacion') self.imp_pextra = self.dato_nomina('imp_pextra') self.imp_remumes = self.dato_nomina('imp_remumes') self.nif = self.dato_nomina('dni') self.naf = self.dato_nomina('naf') self.nombre_trabajador = self.dato_nomina('nombre') self.nombreempresa = SqlEmpresa(self.empresa_id).razon_social self.periodo = self.dato_nomina('periodo') self.puesto = self.dato_nomina('categoria') self.fecha_anio = self.dato_nomina('year(fecha)') self.fecha_mes = self.dato_nomina('month(fecha)') self.dia_nomina = self.dato_nomina('dayofmonth(fecha)') try: self.fecha_datetime = datetime.date(self.fecha_anio, self.fecha_mes, self.dia_nomina) locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8') self.fecha_formlargo = self.fecha_datetime.strftime( '%d de %B de %Y') self.periodos = self.contrato.periodo_nomina( self.fecha_anio, self.fecha_mes) except ValueError: print( 'No hay nomina activa, no se crea fecha_datetime y tampoco hay periodo de tiempo' ) self.fecha_datetime = 0 self.numero_nominas_mes = self.contrato.contratos_activos_mes( self.empresa_id, self.fecha_anio, self.fecha_mes) try: self.cabecera = Cabecera(self.empresa_id, self.fecha_mes, self.fecha_anio, self.contrato.trabajador.id) except AttributeError: print( 'Si no hay nómina, no hay contrato y tampoco trabajador. Se pierde la cabecera' ) self.total_devengos = self.dato_nomina('imp_totdev') self.total_deducciones = self.dato_nomina('tot_deducir') self.liquido = self.dato_nomina('liquido') self.liquido_letras = to_word(self.liquido)
class Alta: """ classdocs """ def __init__(self, mes, anio, empresa, trabajador=0, esnomina=True, esfiniquito=False, esnominapextra=False): """ Constructor """ self.mes = mes self.anio = anio self.dia = ultimodiames(mes, anio) self.fecha = str(self.anio) + "-" + str(self.mes) + "-" + str(self.dia) self.empresa = empresa self.es_finiquito = esfiniquito self.es_nomina = esnomina self.es_nominapextra = esnominapextra locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8') self.estemes = time.strftime("%B", time.strptime(str(self.mes) + ',' + str(self.anio), '%m,%Y')) self.trabajador_id = trabajador self.SqlNom = SqlNominas() self.cabecera = Cabecera(self.empresa, self.mes, self.anio, self.trabajador_id) print "*********** ALTA NOMINA **************" print 'Nomina:', self.es_nomina, ' Finiquito:', self.es_finiquito self.nominas_empresa() def nominas_empresa(self): """ 1. Insertamos las cabeceras de las nominas sin calculos basados en los contratos de la empresa ACTUALIZADOS """ print "insertamos los nuevos registros ...." f = self.cabecera.nomina(self.es_nomina, self.es_finiquito, self.es_nominapextra) sql = "Select max(idnomina) as maxid from nominas" j = select_sql(sql)[0] if not j: j = 0 for filas in f: j += 1 # numero de nomina o idnomina print "Insertamos las cabeceras de la nomina ************************", j sql = ('INSERT INTO nominas ' '(`idnomina`, `idempresa`, `idemp_contratos`, ' '`idgrupos_cotizacion`, `idtb_epigrafe`, `antig`, ' '`descripcion`, `liquido`, `naf`, `tarifa`, `epigrafe`, ' '`matricula`, `nombre`, `categoria`, `dni`, `empresa`, ' '`dir`, `cta_cot`, `cif`, fecha, idcta_cot, es_finiquito) ' 'VALUES ' '(%s ,%s, %s, %s, %s, %s, %s, %s, %s, %s, ' '%s ,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)') select_sql((sql, (j, filas[0], filas[1], filas[2], filas[3], str(filas[4]), ("Nominas de " + self.estemes + " de " + str(self.anio)), filas[5], filas[6], filas[7], filas[8], filas[9], filas[10], filas[11], filas[12], filas[13], filas[14], filas[15], filas[16], self.fecha, filas[18], self.es_finiquito))) # Comprobamos si el contrato es de jornada parcial self.SqlNom(j) z = self.SqlNom.nomina_a_tiempo_parcial() # ## Insertamos los devengos de nominas print "Insertamos los devengos de nominas ***************************", j, self.SqlNom.contrato.trabajador.nombre """ 2. Insertamos los devengos de las nominas a las nóminas a calcular """ sql = ('SELECT ' 'idemp_devengo, orden, concepto, importe, irpf, cont_com, ' 'desempleo, fp, fgs, it, ims, ppextra, mensual, diario, ' 'horas, idemp_pextra, dias_efectivos, dias_naturales, ' 'esdevengo, esirpf, esdieta, esespecie, esporcentaje, ' 'esmanual, coef_pextra, fraccionhoras, idform_concepto, ' 'esvacaciones, pagavacaciones, es_complemento_it_cc, ' 'es_complemento_it_ef, es_indemnizacion ' 'FROM ' 'emp_devengos ' 'WHERE ' 'idemp_contrato = %s ') sql1 = sql + ('and ' '(esdevengo ' 'and not es_indemnizacion ' 'and not esvacaciones ' 'and not es_complemento_it_cc ' 'and not es_complemento_it_ef ' 'and (not idemp_pextra or idemp_pextra is null)) ') sql1 += 'ORDER by idemp_contrato, orden ' h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) + 1 " "from nomina_devengos")[0] orden = 0 sql2 = ("INSERT INTO nomina_devengos " "(`idnomina_devengo`, `idnomina`, `idemp_devengo`, " "`orden`, `concepto`, `importe`, `irpf`, `cont_com`, " "`desempleo`,`fp`, `fgs`, `it`, `ims`, `ppextra`, " "`mensual`, `diario`, `horas`, `idemp_pextra`, " "`dias_efectivos`, `dias_naturales`, `esdevengo`, " "esirpf, esdieta, esespecie, esporcentaje, esmanual, " "coef_pextra, fraccionhoras, idform_concepto, " "esvacaciones, pagavacaciones, es_complemento_it_cc, " "es_complemento_it_ef, es_indemnizacion) " "VALUES " "(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, " "%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, " "%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, " "%s, %s, %s, %s)") print "*********************** Devengos " if self.es_nomina: for col in h: print ' ',col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) """ 3. Insertamos las pagas extras si están prorrateadas de las nóminas a calcular o es finiquito o es nomina """ contrato = Contrato(filas[1]) if (contrato.con_prorrata_pextra or ( not contrato.con_prorrata_pextra and self.es_finiquito) or self.es_nominapextra): print "*********************** Prorrateo pagas extras / Finiquito " sql1 = sql + ("and " "(esdevengo " "and not es_indemnizacion " "and not esvacaciones " "and not es_complemento_it_cc " "and not es_complemento_it_ef " "and idemp_pextra) " "ORDER by " "orden") h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) " "from nomina_devengos")[0] for col in h: print ' ',col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) """ 4. Insertamos los devengos si hay baja por enfermedad """ # Comprobamos si hay baja por IT base = Bases(j) print "*********************** Bases" try: base.it_nomina.it_dias_mes print "*********************** IT " sql1 = sql + ("and es_complemento_it_cc " "ORDER by " "idemp_contrato, orden") h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) " "from nomina_devengos")[0] for col in h: print ' ',col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) except: pass ''' 5. Insertamos la indemnización si es un finiquito ''' print "*********************** Indemnizacion Finiquito" if self.es_finiquito: sql1 = sql + (" and (es_indemnizacion " " or esvacaciones) " " ORDER by " " idemp_contrato, orden ") h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) " "from nomina_devengos")[0] for col in h: print ' ', col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) """ 6. Insertamos las deducciones """ sql1 = sql + ("and not esdevengo " "ORDER by " "idemp_contrato, orden") h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) + 1 " "from nomina_devengos")[0] print "*********************** Deducciones " for col in h: print ' ', col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) # self.actualizar = Actualizar(j) return
class Alta: """ classdocs """ def __init__(self, mes, anio, empresa, trabajador=0, esnomina=True, esfiniquito=False, esnominapextra=False): """ Constructor """ self.mes = mes self.anio = anio self.dia = ultimodiames(mes, anio) self.fecha = str(self.anio) + "-" + str(self.mes) + "-" + str(self.dia) self.empresa = empresa self.es_finiquito = esfiniquito self.es_nomina = esnomina self.es_nominapextra = esnominapextra locale.setlocale(locale.LC_ALL, 'es_ES.UTF-8') self.estemes = time.strftime( "%B", time.strptime(str(self.mes) + ',' + str(self.anio), '%m,%Y')) self.trabajador_id = trabajador self.SqlNom = SqlNominas() self.cabecera = Cabecera(self.empresa, self.mes, self.anio, self.trabajador_id) print "*********** ALTA NOMINA **************" print 'Nomina:', self.es_nomina, ' Finiquito:', self.es_finiquito self.nominas_empresa() def nominas_empresa(self): """ 1. Insertamos las cabeceras de las nominas sin calculos basados en los contratos de la empresa ACTUALIZADOS """ print "insertamos los nuevos registros ...." f = self.cabecera.nomina(self.es_nomina, self.es_finiquito, self.es_nominapextra) sql = "Select max(idnomina) as maxid from nominas" j = select_sql(sql)[0] if not j: j = 0 for filas in f: j += 1 # numero de nomina o idnomina print "Insertamos las cabeceras de la nomina ************************", j sql = ('INSERT INTO nominas ' '(`idnomina`, `idempresa`, `idemp_contratos`, ' '`idgrupos_cotizacion`, `idtb_epigrafe`, `antig`, ' '`descripcion`, `liquido`, `naf`, `tarifa`, `epigrafe`, ' '`matricula`, `nombre`, `categoria`, `dni`, `empresa`, ' '`dir`, `cta_cot`, `cif`, fecha, idcta_cot, es_finiquito) ' 'VALUES ' '(%s ,%s, %s, %s, %s, %s, %s, %s, %s, %s, ' '%s ,%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)') select_sql( (sql, (j, filas[0], filas[1], filas[2], filas[3], str(filas[4]), ("Nominas de " + self.estemes + " de " + str(self.anio)), filas[5], filas[6], filas[7], filas[8], filas[9], filas[10], filas[11], filas[12], filas[13], filas[14], filas[15], filas[16], self.fecha, filas[18], self.es_finiquito))) # Comprobamos si el contrato es de jornada parcial self.SqlNom(j) z = self.SqlNom.nomina_a_tiempo_parcial() # ## Insertamos los devengos de nominas print "Insertamos los devengos de nominas ***************************", j, self.SqlNom.contrato.trabajador.nombre """ 2. Insertamos los devengos de las nominas a las nóminas a calcular """ sql = ('SELECT ' 'idemp_devengo, orden, concepto, importe, irpf, cont_com, ' 'desempleo, fp, fgs, it, ims, ppextra, mensual, diario, ' 'horas, idemp_pextra, dias_efectivos, dias_naturales, ' 'esdevengo, esirpf, esdieta, esespecie, esporcentaje, ' 'esmanual, coef_pextra, fraccionhoras, idform_concepto, ' 'esvacaciones, pagavacaciones, es_complemento_it_cc, ' 'es_complemento_it_ef, es_indemnizacion ' 'FROM ' 'emp_devengos ' 'WHERE ' 'idemp_contrato = %s ') sql1 = sql + ('and ' '(esdevengo ' 'and not es_indemnizacion ' 'and not esvacaciones ' 'and not es_complemento_it_cc ' 'and not es_complemento_it_ef ' 'and (not idemp_pextra or idemp_pextra is null)) ') sql1 += 'ORDER by idemp_contrato, orden ' h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) + 1 " "from nomina_devengos")[0] orden = 0 sql2 = ("INSERT INTO nomina_devengos " "(`idnomina_devengo`, `idnomina`, `idemp_devengo`, " "`orden`, `concepto`, `importe`, `irpf`, `cont_com`, " "`desempleo`,`fp`, `fgs`, `it`, `ims`, `ppextra`, " "`mensual`, `diario`, `horas`, `idemp_pextra`, " "`dias_efectivos`, `dias_naturales`, `esdevengo`, " "esirpf, esdieta, esespecie, esporcentaje, esmanual, " "coef_pextra, fraccionhoras, idform_concepto, " "esvacaciones, pagavacaciones, es_complemento_it_cc, " "es_complemento_it_ef, es_indemnizacion) " "VALUES " "(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, " "%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, " "%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, " "%s, %s, %s, %s)") print "*********************** Devengos " if self.es_nomina: for col in h: print ' ', col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) """ 3. Insertamos las pagas extras si están prorrateadas de las nóminas a calcular o es finiquito o es nomina """ contrato = Contrato(filas[1]) if (contrato.con_prorrata_pextra or (not contrato.con_prorrata_pextra and self.es_finiquito) or self.es_nominapextra): print "*********************** Prorrateo pagas extras / Finiquito " sql1 = sql + ("and " "(esdevengo " "and not es_indemnizacion " "and not esvacaciones " "and not es_complemento_it_cc " "and not es_complemento_it_ef " "and idemp_pextra) " "ORDER by " "orden") h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) " "from nomina_devengos")[0] for col in h: print ' ', col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) """ 4. Insertamos los devengos si hay baja por enfermedad """ # Comprobamos si hay baja por IT base = Bases(j) print "*********************** Bases" try: base.it_nomina.it_dias_mes print "*********************** IT " sql1 = sql + ("and es_complemento_it_cc " "ORDER by " "idemp_contrato, orden") h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) " "from nomina_devengos")[0] for col in h: print ' ', col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) except: pass ''' 5. Insertamos la indemnización si es un finiquito ''' print "*********************** Indemnizacion Finiquito" if self.es_finiquito: sql1 = sql + (" and (es_indemnizacion " " or esvacaciones) " " ORDER by " " idemp_contrato, orden ") h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) " "from nomina_devengos")[0] for col in h: print ' ', col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) """ 6. Insertamos las deducciones """ sql1 = sql + ("and not esdevengo " "ORDER by " "idemp_contrato, orden") h = select_sql((sql1, (filas[1])), 1) k = select_sql("Select max(idnomina_devengo) + 1 " "from nomina_devengos")[0] print "*********************** Deducciones " for col in h: print ' ', col[2], col[3] orden += 1 if not k: k = 1 else: k += 1 campos = (k, j, col[0], orden, col[2], col[3], col[4], col[5], col[6], col[7], col[8], col[9], col[10], col[11], col[12], col[13], z, col[15], col[16], col[17], col[18], col[19], col[20], col[21], col[22], col[23], col[24], col[25], col[26], col[27], col[28], col[29], col[30], col[31]) select_sql((sql2, campos)) # self.actualizar = Actualizar(j) return