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 periodo_it(self, anio, mes, acumulado = False): """ Calcula el perido de una baja por IT en vigor respecto de las fechas del contrato. Devuelve una tupla con la fecha de baja y la fecha de alta """ anio = int(anio) mes = int(mes) if not acumulado: d1 = datetime.date(anio, mes, 1) else: d1 = self.baja_fecha d2 = datetime.date(anio, mes, ultimodiames(mes, anio)) f1 = self.baja_fecha if self.alta_fecha is None: f2 = d2 else: f2 = self.alta_fecha if f2 > d2: f2 = d2 if d1 <= f2 <= d2: if f1 < d1: f1 = d1 dato = (f1, f2) return dato
def ac_cantidad_mes(self): anio = self.nomina.fecha_anio mes = self.nomina.fecha_mes valor = 0 if self.nomina.contrato.contrato.es_tiempo_completo and self.es_importe_mensual: valor = float(self.nomina.dias_cotizados()) / float(ultimodiames(mes, anio)) valor = round(valor, 2) self.ac_campo('imp_cuantia', valor) return valor
def ac_cantidad_mes(self): anio = self.nomina.fecha_anio mes = self.nomina.fecha_mes valor = 0 if self.nomina.contrato.contrato.es_tiempo_completo and self.es_importe_mensual: valor = float(self.nomina.dias_cotizados()) / float( ultimodiames(mes, anio)) valor = round(valor, 2) self.ac_campo('imp_cuantia', valor) return valor
def __init__(self, empresa, mes, anio, esnomina=True, esfiniquito=False, esnominapextra=False): self.empresa = empresa self.dia = ultimodiames(mes, anio) self.mes = mes self.anio = anio self.nomina = SqlNominas(0) self.NomDev = Nomina_Devengo self.num_nominas = Contrato(0).contratos_activos_mes(self.empresa, self.anio, self.mes) self.fecha = str(self.anio) + "-" + str(self.mes) + "-" + str(self.dia) 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.esnomina = esnomina self.esfiniquito = esfiniquito self.esnominapextra = esnominapextra self.borrarnominas = NomBorrar(self.empresa, self.mes, self.anio, 0, self.esnomina, self.esfiniquito, self.esnominapextra) print "Empieza el calculo ..."
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 periodo_nomina(self, anio, mes): """ Calcula el perido de una nomina en vigor respecto de las fechas del contrato. Devuelve una tupla con la fecha inicial y la final """ f2 = None anio = int(anio) mes = int(mes) d1 = datetime.date(anio, mes, 1) d2 = datetime.date(anio, mes, ultimodiames(mes, anio)) f1 = self.inicio_fecha if self.final_fecha is None: f2 = d2 else: f2 = self.final_fecha if f2 > d2: f2 = d2 if d1 <= f2 <= d2: if f1 < d1: f1 = d1 dato = (f1, f2) return dato
def nolaboral(self): """ Calcula el número de fines de semana y festivos entre las fechas introducias y devuelve los valores de (sab, dom, fes) """ sab = 0 dom = 0 fes = 0 for xanio in range(self.desdeanio, self.hastaanio + 1): if xanio < self.hastaanio and xanio == self.desdeanio: for xmes in range(self.desdemes, 12 + 1): if xmes == self.desdemes: sab = sab + self.diasemana_delmes( xanio, xmes, self.desdedia, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes( xanio, xmes, self.desdedia, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes( self.calendario_id, xanio, xmes, self.desdedia, self.hastadia) else: sab = sab + self.diasemana_delmes( xanio, xmes, 1, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes( xanio, xmes, 1, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes( self.calendario_id, xanio, xmes, 1, ultimodiames(xmes, xanio)) elif self.hastaanio > xanio > self.desdeanio: for xmes in range(1, 12 + 1): sab = sab + self.diasemana_delmes( xanio, xmes, 1, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes( xanio, xmes, 1, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, 1, ultimodiames(xmes, xanio)) elif xanio == self.hastaanio and xanio > self.desdeanio: for xmes in range(1, self.hastames + 1): if xmes == self.hastames: sab = sab + self.diasemana_delmes( xanio, xmes, 1, self.hastadia, 5) dom = dom + self.diasemana_delmes( xanio, xmes, 1, self.hastadia, 6) fes = fes + self.festivosdelmes( self.calendario_id, xanio, xmes, 1, self.hastadia) else: sab = sab + self.diasemana_delmes( xanio, xmes, 1, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes( xanio, xmes, 1, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes( self.calendario_id, xanio, xmes, 1, ultimodiames(xmes, xanio)) elif xanio == self.hastaanio and xanio == self.desdeanio: for xmes in range(self.desdemes, self.hastames + 1): if xmes == self.desdemes and xmes < self.hastames: sab = sab + self.diasemana_delmes( xanio, xmes, self.desdedia, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes( xanio, xmes, self.desdedia, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes( self.calendario_id, xanio, xmes, self.desdedia, ultimodiames(xmes, xanio)) elif self.desdemes < xmes < self.hastames: sab = sab + self.diasemana_delmes( xanio, xmes, 1, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes( xanio, xmes, 1, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes( self.calendario_id, xanio, xmes, 1, ultimodiames(xmes, xanio)) elif xmes > self.desdemes and xmes == self.hastames: sab = sab + self.diasemana_delmes( xanio, xmes, 1, self.hastadia, 5) dom = dom + self.diasemana_delmes( xanio, xmes, 1, self.hastadia, 6) fes = fes + self.festivosdelmes( self.calendario_id, xanio, xmes, 1, self.hastadia) elif xmes == self.desdemes and xmes == self.hastames: sab = sab + self.diasemana_delmes( xanio, xmes, self.desdedia, self.hastadia, 5) dom = dom + self.diasemana_delmes( xanio, xmes, self.desdedia, self.hastadia, 6) fes = fes + self.festivosdelmes( self.calendario_id, xanio, xmes, self.desdedia, self.hastadia) self.totaldomingos = dom self.totalsabados = sab self.totalfestivos = fes self.diastotales = (self.ultimo - self.primero).days + 1 self.totalefectivos = self.diastotales - self.totalsabados - self.totaldomingos - self.totalfestivos return sab, dom, fes
def nolaboral(self): """ Calcula el número de fines de semana y festivos entre las fechas introducias y devuelve los valores de (sab, dom, fes) """ sab = 0 dom = 0 fes = 0 for xanio in range(self.desdeanio, self.hastaanio + 1): if xanio < self.hastaanio and xanio == self.desdeanio: for xmes in range(self.desdemes, 12 + 1): if xmes == self.desdemes: sab = sab + self.diasemana_delmes(xanio, xmes, self.desdedia, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes(xanio, xmes, self.desdedia, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, self.desdedia, self.hastadia) else : sab = sab + self.diasemana_delmes(xanio, xmes, 1, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes(xanio, xmes, 1, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes(self.calendario_id,xanio, xmes, 1, ultimodiames(xmes, xanio)) elif self.hastaanio > xanio > self.desdeanio: for xmes in range(1,12+1): sab = sab + self.diasemana_delmes(xanio, xmes, 1, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes(xanio, xmes, 1, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, 1, ultimodiames(xmes, xanio)) elif xanio == self.hastaanio and xanio > self.desdeanio: for xmes in range(1, self.hastames + 1): if xmes == self.hastames: sab = sab + self.diasemana_delmes(xanio, xmes, 1, self.hastadia, 5) dom = dom + self.diasemana_delmes(xanio, xmes, 1, self.hastadia, 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, 1, self.hastadia) else: sab = sab + self.diasemana_delmes(xanio, xmes, 1, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes(xanio, xmes, 1, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, 1, ultimodiames(xmes, xanio)) elif xanio == self.hastaanio and xanio == self.desdeanio: for xmes in range(self.desdemes, self.hastames + 1): if xmes == self.desdemes and xmes < self.hastames: sab = sab + self.diasemana_delmes(xanio, xmes, self.desdedia, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes(xanio, xmes, self.desdedia, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, self.desdedia, ultimodiames(xmes, xanio)) elif self.desdemes < xmes < self.hastames: sab = sab + self.diasemana_delmes(xanio, xmes, 1, ultimodiames(xmes, xanio), 5) dom = dom + self.diasemana_delmes(xanio, xmes, 1, ultimodiames(xmes, xanio), 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, 1, ultimodiames(xmes, xanio)) elif xmes > self.desdemes and xmes == self.hastames: sab = sab + self.diasemana_delmes(xanio, xmes, 1, self.hastadia, 5) dom = dom + self.diasemana_delmes(xanio, xmes, 1, self.hastadia, 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, 1, self.hastadia) elif xmes == self.desdemes and xmes == self.hastames: sab = sab + self.diasemana_delmes(xanio, xmes, self.desdedia, self.hastadia, 5) dom = dom + self.diasemana_delmes(xanio, xmes, self.desdedia, self.hastadia, 6) fes = fes + self.festivosdelmes(self.calendario_id, xanio, xmes, self.desdedia, self.hastadia) self.totaldomingos = dom self.totalsabados = sab self.totalfestivos = fes self.diastotales = (self.ultimo - self.primero).days + 1 self.totalefectivos = self.diastotales - self.totalsabados - self.totaldomingos - self.totalfestivos return sab,dom, fes