def cargar_grilla(self): if self.campo_buscar in ("Fecha", "FechaNacimiento"): opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar(conexion, "idEntrada, idEmpleado, " + "idTipoDocumento, NroDocumento, NombreApellido, FechaNacimiento, " + "Edad, Fecha, Observaciones, Alias, NroDocUsuario, NombreUsuario", self.tabla + "_s", opcion + " ORDER BY " + self.campoid) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): fechanac = "" if datos[i][5] is None else Cal.mysql_fecha(datos[i][5]) fecha = "" if datos[i][7] is None else Cal.mysql_fecha(datos[i][7]) lista.append([datos[i][0], datos[i][1], datos[i][2], datos[i][3], datos[i][4], fechanac, datos[i][6], fecha, datos[i][8], datos[i][9], datos[i][10], datos[i][11], str(datos[i][5]), str(datos[i][7])]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self): if self.campo_buscar in ("FechaFin", "FechaInicio", "PruebaFin", "PruebaInicio"): opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" if self.obj("rad_act").get_active() or self.obj("rad_ina").get_active(): anulado = "1" if self.obj("rad_act").get_active() else "0" opcion += " WHERE " if len(opcion) == 0 else " AND " opcion += "Anulado = " + anulado condicion = "" if len(self.condicion) > 0: condicion = " WHERE " + self.condicion if len(opcion) == 0 \ else " AND " + self.condicion conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar(conexion, self.campoid + ", idEmpleado, idTipoDocumento, " + "NroDocumento, NombreApellido, Edad, DireccionPrincipal, TelefonoPrincipal, " + "idTipoSeguro, TipoSeguro, NroSeguroIPS, idAsegurado, idCargo, Cargo, " + "idFormaPago, FormaPago, idPeriodoPago, PeriodoPago, idTipoContrato, TipoContrato, " + "idTipoSalario, TipoSalario, FechaInicio, FechaFin, Salario, PruebaInicio, " + "PruebaFin, Alias, NombreApellidoUsuario, Anulado, SalarioMinimo, CantSalMinimo", self.tabla + "_s", opcion + condicion + " ORDER BY " + self.campoid) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): fechaini = Cal.mysql_fecha(datos[i][22]) fechafin = Cal.mysql_fecha(datos[i][23]) if datos[i][23] is not None else "" pruebaini = Cal.mysql_fecha(datos[i][25]) if datos[i][25] is not None else "" pruebafin = Cal.mysql_fecha(datos[i][26]) if datos[i][26] is not None else "" ffin = None if datos[i][23] is None else str(datos[i][23]) pini = None if datos[i][25] is None else str(datos[i][25]) pfin = None if datos[i][26] is None else str(datos[i][26]) cantsal = None if datos[i][31] is None else str(datos[i][31]) lista.append([datos[i][0], datos[i][1], datos[i][2], datos[i][3], datos[i][4], datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9], datos[i][10], datos[i][11], datos[i][12], datos[i][13], datos[i][14], datos[i][15], datos[i][16], datos[i][17], datos[i][18], datos[i][19], datos[i][20], datos[i][21], fechaini, fechafin, datos[i][24], pruebaini, pruebafin, datos[i][27], datos[i][28], datos[i][29], str(datos[i][22]), ffin, pini, pfin, datos[i][30], cantsal]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self): if self.campo_buscar in ("FechaInicio", "FechaFin", "FechaHoraExp", "FechaNacimiento"): opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" if self.obj("rad_act").get_active() or self.obj("rad_ina").get_active(): confirmado = "1" if self.obj("rad_act").get_active() else "0" opcion += " WHERE " if len(opcion) == 0 else " AND " opcion += "Confirmado = " + confirmado conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "NroComprobante, NroContrato, idEmpleado, " + "idTipoDocumento, NroDocumento, NombreApellido, FechaNacimiento, " + "Edad, Cargo, FechaInicio, FechaFin, CantDias, TotalPagar, " + "FechaHoraExp, Observaciones, Alias, NroDocUsuario, NombreUsuario, " + "Confirmado, Anulado", self.tabla + "_s", opcion + " ORDER BY " + self.campoid) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): fechanac = "" if datos[i][6] is None else Cal.mysql_fecha(datos[i][6]) fechaini = "" if datos[i][9] is None else Cal.mysql_fecha(datos[i][9]) fechafin = "" if datos[i][10] is None else Cal.mysql_fecha( datos[i][10]) fechaexp = "" if datos[i][13] is None else Cal.mysql_fecha_hora( datos[i][13]) lista.append([ datos[i][0], datos[i][1], datos[i][2], datos[i][3], datos[i][4], datos[i][5], fechanac, datos[i][7], datos[i][8], fechaini, fechafin, datos[i][11], datos[i][12], fechaexp, datos[i][14], datos[i][15], datos[i][16], datos[i][17], datos[i][18], datos[i][19], str(datos[i][6]), str(datos[i][9]), str(datos[i][10]), str(datos[i][13]) ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self): if self.campo_buscar in ("FechaEntrada", "FechaNacimiento", "FechaPreaviso", "FechaSalida"): opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" if self.obj("rad_act").get_active() or self.obj("rad_ina").get_active(): trabajador = "1" if self.obj("rad_act").get_active() else "0" opcion += " WHERE " if len(opcion) == 0 else " AND " opcion += "TrabajadorPresenta = " + trabajador conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "idPreaviso, NroContrato, idEmpleado, " + "idTipoDocumento, NroDocumento, NombreApellido, FechaNacimiento, " + "Edad, Cargo, FechaEntrada, Antiguedad, FechaPreaviso, FechaSalida, " + "CantDias, TrabajadorPresenta, Alias, NroDocUsuario, NombreUsuario", self.tabla + "_s", opcion + " ORDER BY " + self.campoid) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): fechanac = "" if datos[i][6] is None else Cal.mysql_fecha(datos[i][6]) fechaent = "" if datos[i][9] is None else Cal.mysql_fecha(datos[i][9]) fechapre = "" if datos[i][11] is None else Cal.mysql_fecha( datos[i][11]) fechasal = "" if datos[i][12] is None else Cal.mysql_fecha( datos[i][12]) presentador = "Trabajador" if datos[i][14] == 1 else "Empleador" lista.append([ datos[i][0], datos[i][1], datos[i][2], datos[i][3], datos[i][4], datos[i][5], fechanac, datos[i][7], datos[i][8], fechaent, datos[i][10], fechapre, fechasal, datos[i][13], presentador, datos[i][15], datos[i][16], datos[i][17], str(datos[i][6]), str(datos[i][9]), str(datos[i][11]), str(datos[i][12]), datos[i][14] ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla_lotes(self): self.disponible = self.maximo cursor = Op.consultar( self.conexion, "NroLote, FechaVencimiento, " + "CantidadInv, idMovimiento, idDeposito, Observaciones", self.tabla + "_inventario_s", " WHERE " + self.cond_buscar + " AND idItem = " + self.idItem + " ORDER BY FechaVencimiento DESC") datos = cursor.fetchall() cant = cursor.rowcount lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): if datos[i][0] is None: fecha = "" # Si Lote es NULL, la cantidad está disponible else: fecha = Cal.mysql_fecha(datos[i][1]) self.disponible -= datos[i][2] # Resta Cantidad a Máximo lista.append([ datos[i][0], fecha, datos[i][2], str(datos[i][1]), datos[i][3] ]) self.dep = "NULL" if datos[0][4] is None else str(datos[0][4]) self.obs = "NULL" if datos[0][5] is None else "'" + datos[0][5] + "'" self.obj("txt_total").set_text(str(self.maximo)) self.obj("txt_disponible").set_text(str(self.disponible)) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla_buscar(self): if self.campo_buscar == "FechaVencimiento": opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" conexion = Op.conectar(self.origen.datos_conexion) cursor = Op.consultar( conexion, "NroTimbrado, NroFactura, " + "NroCuota, FechaVencimiento, Monto", "cuentascobrar", opcion + " ORDER BY FechaVencimiento") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla_buscar").get_model() lista.clear() for i in range(0, cant): lista.append([ datos[i][0], datos[i][1], datos[i][2], Cal.mysql_fecha(datos[i][3]), datos[i][4], str(datos[i][3]) ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self, grilla, barraestado): opcion = "" if not self.obj("chk_empleado").get_active() else \ " AND NroContrato = " + self.obj("txt_02").get_text() conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar(conexion, "NroContrato, idEmpleado, " + "idTipoDocumento, NroDocumento, NombreApellido, Cargo, " + "Fecha, Hora, Entrada, Puntual, Observaciones, Alias", "asistencias_s", " WHERE Fecha BETWEEN '" + self.fechaini + "'" + " AND '" + self.fechafin + "'" + opcion + " ORDER BY Fecha, Hora") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = grilla.get_model() lista.clear() for i in range(0, cant): estado = "Entrada" if datos[i][8] == 1 else "Salida" puntual = "Puntual" if datos[i][9] == 1 else "" obs = "" if datos[i][10] is None else datos[i][10] lista.append([str(datos[i][0]), str(datos[i][1]), datos[i][2], datos[i][3], datos[i][4], datos[i][5], Cal.mysql_fecha(datos[i][6]), str(datos[i][7]), estado, puntual, obs, datos[i][11], str(datos[i][6])]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." barraestado.push(0, cant)
def cargar_grilla_cuotas(self): fact = self.obj("txt_fact").get_text() fact = "'" + fact + "'" if self.tabla == "cuentaspagar" else fact timb = self.obj("txt_timb").get_text() cursor = Op.consultar( self.conexion, "NroCuota, FechaVencimiento, " + "Monto", self.tabla, " WHERE NroTimbrado = " + timb + " AND NroFactura = " + fact + " ORDER BY NroCuota") datos = cursor.fetchall() cant = cursor.rowcount monto = 0.0 lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): lista.append([ datos[i][0], Cal.mysql_fecha(datos[i][1]), datos[i][2], str(datos[i][1]) ]) monto += datos[i][2] fact = float(self.obj("txt_total_fact").get_text()) self.obj("txt_total").set_text(str(monto)) self.obj("txt_no_asignado").set_text(str(fact - monto)) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self): if self.campo_buscar == "Fecha": opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, self.campoid + ", idMoneda, Moneda, " + "Fecha, Compra, Venta", self.tabla + "_s", opcion + " ORDER BY Fecha DESC") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): lista.append([ datos[i][0], datos[i][1], datos[i][2], Cal.mysql_fecha(datos[i][3]), datos[i][4], datos[i][5], str(datos[i][3]) ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla_beneficiarios(self): cursor = Op.consultar( self.conexion, "idFamiliar, idTipoDocFamiliar, " + "NroDocFamiliar, NombreApellidoFamiliar, FechaNacFamiliar, " + "EdadFamiliar, idGeneroFamiliar, GeneroFamiliar, " + "idTipoParentesco, TipoParentesco, Observaciones", self.nav.tabla + "_s", " WHERE idEmpleado = " + self.obj("txt_00").get_text() + " ORDER BY idFamiliar") datos = cursor.fetchall() cant = cursor.rowcount lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): lista.append([ datos[i][0], datos[i][1], datos[i][2], datos[i][3], Cal.mysql_fecha(datos[i][4]), datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9], datos[i][10], str(datos[i][4]) ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def on_btn_nuevo_clicked(self, objeto): self.estadoedicion(True) self.obj("cmb_tipo_doc").set_active(0) self.obj("txt_01").grab_focus() # Contrato self.obj("btn_guardar").set_sensitive(False) self.obj("lbl_fecha").set_text(Cal.mysql_fecha(date.today())) self.obj("lbl_hora").set_text(strftime('%H:%M:%S'))
def cargar_grilla(self): if self.campo_buscar == "FechaVencimiento": opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar(conexion, self.campoid + ", idBanco, BancoTipoDocumento, " + "BancoNroDocumento, BancoRazonSocial, BancoDireccion, BancoTelefono, " + "idTitular, TitularTipoDocumento, TitularNroDocumento, TitularRazonSocial, " + "idMarcaTarjeta, MarcaTarjeta, idTipoTarjeta, TipoTarjeta, FechaVencimiento", self.tabla + "_s", opcion + " ORDER BY " + self.campoid) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): lista.append([datos[i][0], datos[i][1], datos[i][2], datos[i][3], datos[i][4], datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9], datos[i][10], datos[i][11], datos[i][12], datos[i][13], datos[i][14], Cal.mysql_fecha(datos[i][15]), str(datos[i][15])]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def guardar_encabezado(self, aprobado="0"): # Si el encabezado no ha sido registrado if not self.encabezado_guardado: orden = self.obj("txt_00").get_text() prov = self.obj("txt_01").get_text() pedido = self.obj("txt_01").get_text() sql = orden + ", " + prov + ", " + str(self.idFormaPago) if not self.editando: Op.insertar(self.conexion, self.nav.tabla, sql) else: Op.modificar(self.conexion, self.nav.tabla, self.cond + ", " + sql + ", " + aprobado) self.obj("txt_fecha").set_text(Cal.mysql_fecha(date.today())) self.cond = orden # Nuevo Nro. Orden original self.encabezado_guardado = self.editando = True if not self.pedido_guardado: sql = orden + ", " + pedido if not self.editando_pedido: Op.insertar(self.conexion, "ordencompras_pedidos", sql) else: Op.modificar(self.conexion, "ordencompras_pedidos", sql) self.editando_pedido = True
def cargar_grilla_buscar(self): buscar = self.obj("txt_buscar").get_text() if self.campo_buscar == "FechaVencimiento": opcion = "" if len(buscar) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(buscar) == 0 else \ " AND " + self.campo_buscar + " LIKE '%" + buscar + "%'" conexion = Op.conectar(self.origen.datos_conexion) cursor = Op.consultar( conexion, "NroLote, FechaVencimiento, " + "Cantidad", "lotes", " WHERE idItem = " + self.idItem + opcion + " ORDER BY FechaVencimiento DESC") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla_buscar").get_model() lista.clear() for i in range(0, cant): lista.append([ datos[i][0], Cal.mysql_fecha(datos[i][1]), datos[i][2], str(datos[i][1]) ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self, grilla, barraestado): condicion = "" if self.obj("chk_01").get_active(): condicion += "idProveedor = " + self.obj("txt_prov_01").get_text() if self.obj("chk_02").get_active(): if len(condicion) > 0: condicion += " AND " condicion += "idTipoFactura = " + str(self.idTipoFact) if self.obj("chk_03").get_active(): if len(condicion) > 0: condicion += " AND " condicion += "Fecha BETWEEN '" + self.fecha_ini + "'" + \ " AND '" + self.fecha_fin + "'" if self.obj("chk_04").get_active(): if len(condicion) > 0: condicion += " AND " condicion += "Total " total = str(self.obj("txt_total_ini").get_value()) if self.idTotal == 1: # Entre condicion += "> " + total + \ " AND Total < " + str(self.obj("txt_total_fin").get_value()) elif self.idTotal == 2: # Mayor que condicion += "> " + total elif self.idTotal == 3: # Mayor o igual que condicion += ">= " + total elif self.idTotal == 4: # Menor que condicion += "< " + total elif self.idTotal == 5: # Menor o igual que condicion += "<= " + total if self.obj("rad_confirmadas").get_active(): if len(condicion) > 0: condicion += " AND " condicion += "Confirmado = 1" # Obtener datos de Facturas de Compra conexion = conectar(self.datos_conexion) cursor = consultar(conexion, "NroTimbrado, NroFactura, " + "Fecha, TipoFactura, NroDocProveedor, RazonSocial, Total", "facturacompras_s", " WHERE " + condicion) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = grilla.get_model() lista.clear() for i in range(0, cant): lista.append([datos[i][0], datos[i][1], mysql_fecha(datos[i][2]), datos[i][3], datos[i][4], datos[i][5], datos[i][6]]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." barraestado.push(0, cant)
def cargar_grilla(self): if self.campo_buscar == "Fecha": opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" if self.obj("rad_act").get_active() or self.obj("rad_ina").get_active(): confirmado = "1" if self.obj("rad_act").get_active() else "0" opcion += " WHERE " if len(opcion) == 0 else " AND " opcion += "Confirmado = " + confirmado condicion = "" if len(self.condicion) > 0: condicion = " WHERE " + self.condicion if len(opcion) == 0 \ else " AND " + self.condicion conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar(conexion, "NroTimbrado, NroFactura, Fecha, " + "NroDocProveedor, RazonSocial, DireccionPrincipal, TelefonoPrincipal, " + "idTipoFactura, TipoFactura, Total, TotalLiquidacionIVA, " + "Alias, NroDocUsuario, NombreApellido, Confirmado, idProveedor, " + "idTipoDocProveedor, NroOrdenCompra, FechaHoraOrden", self.tabla + "_s", opcion + condicion + " ORDER BY Fecha DESC") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): orden = "" if datos[i][17] is None else str(datos[i][17]) fecha = "" if datos[i][18] is None else Cal.mysql_fecha(datos[i][18]) lista.append([datos[i][0], datos[i][1], Cal.mysql_fecha(datos[i][2]), datos[i][3], datos[i][4], datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9], datos[i][10], datos[i][11], datos[i][12], datos[i][13], datos[i][14], str(datos[i][2]), datos[i][15], datos[i][16], orden, fecha]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self): if self.campo_buscar in ("FechaEmision", "FechaVencimiento"): opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " = '" + self.fecha + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" if self.obj("rad_act").get_active() or self.obj("rad_ina").get_active(): anulado = "1" if self.obj("rad_act").get_active() else "0" opcion += " WHERE " if len(opcion) == 0 else " AND " opcion += "Anulado = " + anulado conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, self.campoid + ", FechaEmision, " + "FechaVencimiento, NroInicio, NroFin, idTipoDocumentoComercial, " + "TipoDocumentoComercial, NroPuntoExpedicion, PuntoExpedicion, " + "NroEstablecimiento, Establecimiento, NroDocumento, RazonSocial, " + "Ciudad, Barrio, Direccion, NroTelefono, Anulado, Estado", self.tabla + "_s", opcion + " ORDER BY " + self.campoid + " DESC") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): lista.append([ datos[i][0], Cal.mysql_fecha(datos[i][1]), Cal.mysql_fecha(datos[i][2]), datos[i][3], datos[i][4], datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9], datos[i][10], datos[i][11], datos[i][12], datos[i][13], datos[i][14], datos[i][15], datos[i][16], datos[i][17], str(datos[i][1]), str(datos[i][2]), datos[i][18] ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def buscar_familiar(self, objeto, campo, valor, nombre): conexion = Op.conectar(self.nav.datos_conexion) cursor = Op.consultar( conexion, "idPersona, RazonSocial, NroDocumento, " + "idTipoDocumento, FechaNacimiento, Genero", "personas_s", " WHERE " + campo + " = " + valor + " AND Empleado <> 1 " + "AND Empresa <> 1") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if cant > 0: self.obj("txt_01").set_text(str(datos[0][0])) self.obj("txt_01_1").set_text(datos[0][1]) self.obj("txt_01_2").set_text(datos[0][2]) self.obj("txt_01_3").set_text(Cal.mysql_fecha(datos[0][4])) self.obj("txt_01_4").set_text(datos[0][5]) # Asignación de Tipo de Documento en Combo model, i = self.obj("cmb_tipo_doc_ben").get_model(), 0 while model[i][0] != datos[0][3]: i += 1 self.obj("cmb_tipo_doc_ben").set_active(i) self.obj("barraestado").push(0, "") self.verificacion_benef(0) # Verificar que no se haya regitrado ya como Beneficiario por el Empleado actual if Op.comprobar_unique( self.conexion, "beneficiarios_s", "idFamiliar", self.obj("txt_01").get_text() + " AND idEmpleado = " + self.obj("txt_00").get_text(), self.obj("txt_01"), self.obj("btn_guardar_benef"), self.obj("barraestado"), "El Familiar introducido ya ha sido registado."): # Si no encuentra coincidencias verifica si está registrado por otro Empleado Op.comprobar_unique( self.nav.datos_conexion, "beneficiarios_s", "idFamiliar", valor, self.obj("txt_00"), self.obj("btn_guardar_benef"), self.obj("barraestado"), "El Familiar introducido ha sido registado por otro Empleado." ) else: objeto.grab_focus() self.obj("btn_guardar_benef").set_sensitive(False) self.obj("barraestado").push(0, "El " + nombre + " no es válido.") otro = self.obj("txt_01_2") if objeto == self.obj( "txt_01") else self.obj("txt_01") otro.set_text("") self.obj("txt_01_1").set_text("") self.obj("txt_01_3").set_text("") self.obj("txt_01_4").set_text("")
def cargar_grilla(self): if self.campo_buscar in ("FechaEmision", "FechaCobro"): opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" if self.obj("rad_act").get_active() or self.obj("rad_ina").get_active(): anulado = "1" if self.obj("rad_act").get_active() else "0" opcion += " WHERE " if len(opcion) == 0 else " AND " opcion += "Anulado = " + anulado conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar(conexion, self.campoid + ", NroCheque, NroCuenta, " + "idBanco, BancoTipoDocumento, BancoNroDocumento, BancoRazonSocial, " + "BancoDireccion, BancoTelefono, idTitular, TitularTipoDocumento, " + "TitularNroDocumento, TitularRazonSocial, idTipoCheque, TipoCheque, " + "FechaEmision, FechaCobro, Monto, Anulado", self.tabla + "_s", opcion + " ORDER BY " + self.campoid + " DESC") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): lista.append([datos[i][0], datos[i][1], datos[i][2], datos[i][3], datos[i][4], datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9], datos[i][10], datos[i][11], datos[i][12], datos[i][13], datos[i][14], Cal.mysql_fecha(datos[i][15]), Cal.mysql_fecha(datos[i][16]), datos[i][17], datos[i][18], str(datos[i][15]), str(datos[i][16])]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def guardar_encabezado(self): # Si el encabezado no ha sido registrado if not self.encabezado_guardado: pedido = self.obj("txt_00").get_text() if not self.editando: Op.insertar(self.conexion, self.nav.tabla, pedido) else: Op.modificar(self.conexion, self.nav.tabla, self.cond + ", " + pedido) self.obj("txt_fecha").set_text(Cal.mysql_fecha(date.today())) self.encabezado_guardado = True self.editando = True self.cond = pedido
def cargar_grilla_vacaciones(self): cursor = Op.consultar( self.conexion, "idToma, FechaInicio, FechaFin, " + "CantDias, NroComprobante, FechaHoraExp", "vacacionestomadas_s", " WHERE idVacacion = " + self.obj("txt_00").get_text() + " AND NroContrato = " + self.obj("txt_02").get_text() + " ORDER BY idToma") datos = cursor.fetchall() cant = cursor.rowcount maximo = int(self.obj("txt_03_2").get_text()) dias = 0 # Cantidad de Días asignados lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): comprobante = "" if datos[i][4] is None else str(datos[i][4]) fechaexp = "" if datos[i][5] is None else Cal.mysql_fecha_hora( datos[i][5]) dias += datos[i][3] lista.append([ datos[i][0], Cal.mysql_fecha(datos[i][1]), Cal.mysql_fecha(datos[i][2]), datos[i][3], comprobante, fechaexp, str(datos[i][1]), str(datos[i][2]), str(datos[i][5]) ]) self.obj("txt_03_3").set_text(str(maximo - dias)) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def on_lote_focus_out_event(self, objeto, evento): valor = objeto.get_text() if len(valor) == 0: self.obj("barraestado").push(0, "") else: if objeto == self.obj("txt_01"): cursor = Op.consultar( self.conexion, "FechaVencimiento", "lotes", " WHERE idItem = " + self.idItem + " AND NroLote = '" + valor + "'") datos = cursor.fetchall() cant = cursor.rowcount if cant > 0: if self.tabla == "facturacompras": self.editando_lote = True self.cond_lote = valor self.fecha_venc = str(datos[0][0]) fecha = Cal.mysql_fecha(datos[0][0]) self.obj("txt_02").set_text(fecha) busq = "" if not self.editando else " AND NroLote <> '" + self.cond_lote + "'" # Comprueba si el Nro. de Lote introducido ya ha sido registado Op.comprobar_unique( self.conexion, self.tabla + "_inventario_s", "NroLote", "'" + valor + "' AND " + self.cond_buscar + " AND idItem = " + self.idItem + busq, objeto, self.obj("btn_guardar_lote"), self.obj("barraestado"), "El Nro. de Lote introducido ya ha sido registado (VEA LA TABLA)." ) else: if self.tabla == "facturacompras": self.editando_lote = False if not self.editando else True else: self.obj("txt_01").grab_focus() self.obj("barraestado").push( 0, "El Nro. de Lote NO es válido.") self.obj("btn_guardar_lote").set_sensitive(False) elif objeto == self.obj("txt_02"): self.obj("barraestado").push(0, "") elif objeto == self.obj("txt_03"): Op.comprobar_numero(float, objeto, "Cantidad de Ítems", self.obj("barraestado"))
def cargar_grilla_descuentos(self): cursor = Op.consultar(self.conexion, "idCobro, Monto, FechaCobro", "descuentos_periodocobros", " WHERE idDescuento = " + self.obj("txt_00").get_text() + " ORDER BY idCobro") datos = cursor.fetchall() cant = cursor.rowcount monto = 0.0 lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): monto += datos[i][1] lista.append([datos[i][0], datos[i][1], Cal.mysql_fecha(datos[i][2]), str(datos[i][2])]) self.obj("txt_total").set_text(str(monto)) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def __init__(self, datos, v_or): self.datos_conexion = datos self.origen = v_or arch = Op.archivo("caja_aperturas") self.obj = arch.get_object self.obj("ventana").set_position(1) self.obj("ventana").set_title("Aperturas de Cajas") Mens.boton_guardar_cancelar(self.obj("btn_guardar"), self.obj("btn_cancelar")) self.obj("txt_00").set_max_length(10) self.obj("txt_01").set_max_length(10) self.obj("txt_02").set_max_length(7) self.obj("txt_03").set_max_length(15) self.obj("txt_00").set_tooltip_text(Mens.usar_boton("el Establecimiento que afectará")) self.obj("txt_00_1").set_tooltip_text("Nombre del Establecimiento") self.obj("txt_00_2").set_tooltip_text("Dirección o Localización del Establecimiento") self.obj("txt_00_2").set_tooltip_text("Teléfono del Establecimiento") self.obj("txt_01").set_tooltip_text(Mens.usar_boton("el Punto de Expedición que afectará")) self.obj("txt_01_1").set_tooltip_text("Nombre del Punto de Expedición") self.obj("txt_02").set_tooltip_text("Ingrese el Número Inicial del Documento a emitir") self.obj("txt_03").set_tooltip_text("Ingrese el Monto de Dinero disponible en Caja en este momento") self.txt_nro_est, self.txt_nom_est = self.obj("txt_00"), self.obj("txt_00_1") self.txt_dir_est, self.txt_tel_est = self.obj("txt_00_2"), self.obj("txt_00_3") self.txt_nro_cja, self.txt_nom_cja = self.obj("txt_01"), self.obj("txt_01_1") self.idTipoDoc = -1 Op.combos_config(self.datos_conexion, self.obj("cmb_tipo_doc"), "tipodocumentocomerciales", "idTipoDocumentoComercial") arch.connect_signals(self) self.obj("txt_fecha").set_text(Cal.mysql_fecha(date.today())) self.obj("txt_hora").set_text(strftime('%H:%M:%S')) self.obj("ventana").show()
def cargar_grilla(self): if self.campo_buscar == "FechaNacFamiliar": opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'" else: opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "idEmpleado, idTipoDocEmpleado, " + "NroDocEmpleado, NombreApellidoEmpleado, NroSeguroIPS, idAsegurado, " + "idFamiliar, idTipoDocFamiliar, NroDocFamiliar, NombreApellidoFamiliar, " + "FechaNacFamiliar, EdadFamiliar, idGeneroFamiliar, GeneroFamiliar, " + "idTipoParentesco, TipoParentesco, Observaciones", self.tabla + "_s", opcion + " ORDER BY idFamiliar, idEmpleado") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): lista.append([ datos[i][0], datos[i][1], datos[i][2], datos[i][3], datos[i][4], datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9], Cal.mysql_fecha(datos[i][10]), datos[i][11], datos[i][12], datos[i][13], datos[i][14], datos[i][15], datos[i][16], str(datos[i][10]) ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def buscar_nro_timbrado(self): cursor = Op.consultar( self.conexion, "NroTimbrado, FechaVencimiento", "timbrados_s", " WHERE NroEstablecimiento = " + self.estab + " AND NroCaja = " + self.caja + " AND FechaVencimiento > NOW() AND idTipoDocumento = 3 AND Anulado <> 1 ORDER BY NroTimbrado" ) datos = cursor.fetchall() if cursor.rowcount > 0: # Datos del Timbrado self.obj("txt_01_1").set_text(str(datos[0][0])) self.obj("txt_01_2").set_text(Cal.mysql_fecha(datos[0][1])) # Datos del Punto de Expedición self.obj("txt_00_1").set_text(Op.cadenanumeros(self.estab, 3)) self.obj("txt_00_2").set_text(Op.cadenanumeros(self.caja, 3)) else: Mens.error_generico( "¡ERROR!", "No se ha encontrado un Timbrado\npara este Punto de Expedición." + "\nConsulte al Administrador del Sistema.\n\nLa ventana de Nota de Débitos se cerrará." ) self.obj("ventana").destroy()
def buscar_empleado(self, objeto, campo, valor, nombre): conexion = Op.conectar(self.nav.datos_conexion) cursor = Op.consultar( conexion, "idPersona, RazonSocial, NroDocumento, " + "idTipoDocumento, NroSeguroIPS, idAsegurado, Genero, Nacionalidad, " + "EstadoCivil, FechaNacimiento, LugarNacimiento", "personas_s", " WHERE " + campo + " = " + valor + " AND Empleado = 1") datos = cursor.fetchall() cant = cursor.rowcount if cant > 0: nro_seg = "" if datos[0][4] is None else datos[0][4] id_aseg = "" if datos[0][5] is None else datos[0][5] self.obj("txt_00").set_text(str(datos[0][0])) self.obj("txt_00_1").set_text(datos[0][1]) self.obj("txt_00_2").set_text(datos[0][2]) self.obj("txt_00_3").set_text(nro_seg) self.obj("txt_00_4").set_text(id_aseg) self.obj("txt_00_5").set_text(datos[0][6]) self.obj("txt_00_6").set_text(datos[0][7]) self.obj("txt_00_7").set_text(datos[0][8]) self.obj("txt_00_8").set_text(Cal.mysql_fecha(datos[0][9])) self.obj("txt_00_9").set_text(datos[0][10]) # Asignación de Tipo de Documento en Combo model, i = self.obj("cmb_tipo_doc_emp").get_model(), 0 while model[i][0] != datos[0][3]: i += 1 self.obj("cmb_tipo_doc_emp").set_active(i) # Buscar Dirección Actual cursor = Op.consultar( conexion, "CONCAT(Direccion, " + "IFNULL(CONCAT(' Nº ', NroCasa), '')), " + "Barrio, Ciudad", "personas_direcciones_s", " WHERE idPersona = " + self.obj("txt_00").get_text()) datos = cursor.fetchall() if cursor.rowcount > 0: self.obj("txt_00_10").set_text(datos[0][0]) self.obj("txt_00_11").set_text(datos[0][1]) # Barrio self.obj("txt_00_12").set_text(datos[0][2]) # Ciudad # Buscar Teléfono Laboral (2) cursor = Op.consultar( conexion, "Descripcion", "personas_mediocontactos_s", " WHERE idPersona = " + self.obj("txt_00").get_text() + " AND idTipoMedioContacto = 2") datos = cursor.fetchall() if cursor.rowcount > 0: medio = "" if len(datos[0][0]) == 0 else datos[0][0] self.obj("txt_00_13").set_text(medio) # Buscar Teléfono Particular (1) cursor = Op.consultar( conexion, "Descripcion", "personas_mediocontactos_s", " WHERE idPersona = " + self.obj("txt_00").get_text() + " AND idTipoMedioContacto = 1") datos = cursor.fetchall() if cursor.rowcount > 0: medio = "" if len(datos[0][0]) == 0 else datos[0][0] self.obj("txt_00_14").set_text(medio) # Buscar Teléfono Móvil o Celular (3) cursor = Op.consultar( conexion, "Descripcion", "personas_mediocontactos_s", " WHERE idPersona = " + self.obj("txt_00").get_text() + " AND idTipoMedioContacto = 3") datos = cursor.fetchall() if cursor.rowcount > 0: medio = "" if len(datos[0][0]) == 0 else datos[0][0] self.obj("txt_00_15").set_text(medio) # Buscar Correo Electrónico (4) cursor = Op.consultar( conexion, "Descripcion", "personas_mediocontactos_s", " WHERE idPersona = " + self.obj("txt_00").get_text() + " AND idTipoMedioContacto = 4") datos = cursor.fetchall() if cursor.rowcount > 0: medio = "" if len(datos[0][0]) == 0 else datos[0][0] self.obj("txt_00_16").set_text(medio) # Verificar si el Empleado ya fue registrado cursor = Op.consultar( conexion, "idEmpleado", "beneficiarios_s", " WHERE idEmpleado = " + self.obj("txt_00").get_text()) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if cant > 0: if len(self.obj( "grilla").get_model()) > 0: # Ya hay datos cargados eleccion = Mens.pregunta_generico( "¿Qué Desea?", "Este Empleado ya posee familiares beneficiados con el Seguro de IPS" ) # - Si hay datos cargados preguntar si desea vincularlos al empleado actual o eliminarlos # - - modificar o eliminar (se usa condicion) self.cond_empleado = self.obj("txt_00").get_text() self.cargar_grilla_beneficiarios() self.obj("barraestado").push(0, "") self.verificacion(0) else: conexion.close() # Finaliza la conexión objeto.grab_focus() self.estadoguardar(False) self.obj("barraestado").push(0, "El " + nombre + " no es válido.") otro = self.obj("txt_00_2") if objeto == self.obj( "txt_00") else self.obj("txt_00") otro.set_text("") self.limpiar_empleado()
def genera_comprobante_pago(datos_conexion, nro_comp): ubicacion_archivo = dialogo_guardar("Comprobante de Pago") if ubicacion_archivo is not None: # Si no tiene la terminación .pdf se le agrega if ubicacion_archivo[-4:].lower() != ".pdf": ubicacion_archivo += ".pdf" story = [] titulo = tabla_celda_titulo() texto = tabla_celda_just_izquierdo() numero = tabla_celda_just_derecho() centro = tabla_celda_centrado() tabla = Table([[ Paragraph( "<b><font size=15>Distribuidora María Auxiliadora</font></b><br/><br/>" + "<i><font size=12>Productos y Servicios S.A.</font></i><br/><br/><br/>" + "<font size=8>Caaguazú - Paraguay</font>", centro), Paragraph( "RUC:<br/><br/>" + "<b><font size=15>RECIBO DE PAGO</font></b><br/><br/>" + "<i><font size=7>Liquidación de Sueldo y Otras Remuneraciones<br/>" + "(Conforme al Art. 235 del Código Laboral)</font></i><br/><br/>" + "<b><font size=15>" + cadenanumeros(nro_comp, 7) + "</font></b>", centro), ]], [350, 150]) tabla.setStyle([ ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('BOX', (0, 0), (-1, -1), 0.25, colors.black), # Borde Exterior de la Tabla ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), # Grilla Interior de la Tabla ]) story.append(tabla) story.append(Spacer(0, 20)) # Establece la conexión con la Base de Datos conexion = conectar(datos_conexion) cursor = consultar( conexion, "idEmpleado, NroDocumento, " + "NombreApellido, FechaInicio, FechaFin, TotalPagar", "comprobantepagos_s", " WHERE NroComprobante = " + nro_comp) datos_comp = cursor.fetchall() # Buscar otros datos del Empleado cursor = consultar(conexion, "DireccionPrincipal", "personas_s", " WHERE idPersona = " + str(datos_comp[0][0])) datos_empl = cursor.fetchall() if cursor.rowcount > 0: direccion = "" if datos_empl[0][0] is None else datos_empl[0][0] else: direccion = "" # Buscar datos de la Empresa cursor = consultar(conexion, "NroPatronalIPS, NroPatronalMJT", "empresas_s", " ORDER BY idEmpresa") datos_empr = cursor.fetchall() if cursor.rowcount > 0: ips = "" if datos_empr[0][0] is None else datos_empr[0][0] mjt = "" if datos_empr[0][1] is None else datos_empr[0][1] else: ips = mjt = "" tabla = Table( [[ Paragraph("<b>Lugar y Fecha:</b>", texto), Paragraph("Caaguazú, " + fecha_hoy(), texto), '', '' ], [ Paragraph("<b>Trabajador:</b>", texto), Paragraph(datos_comp[0][2], texto), Paragraph("<b>C.I. Nro.:</b>", texto), Paragraph(datos_comp[0][1], texto) ], [ Paragraph("<b>Dirección:</b>", texto), Paragraph(direccion, texto), '', '' ], [ Paragraph("<b>Sucursal:</b>", texto), Paragraph("Caaguazú", texto), '', '' ], [ Paragraph("<b>Periodo de Pago:</b>", texto), Paragraph( "Desde " + mysql_fecha(datos_comp[0][3]) + " hasta " + mysql_fecha(datos_comp[0][4]), texto), '', '' ], [ Paragraph("<b>Nro. Patronal:</b>", texto), Paragraph(ips + " / " + str(mjt), texto), '', '' ]], [100, 275, 50, 75]) tabla.setStyle([ ('SPAN', (1, 0), (-1, 0)), # Combina columnas, primera fila ('ALIGN', (0, 0), (0, -1), 'RIGHT'), # Alineación de la Primera Columna ('ALIGN', (1, 1), (-1, -1), 'LEFT'), # Alineación de Otras Columnas ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('TOPPADDING', (0, 0), (-1, -1), 1), # Espacio Arriba ('BOTTOMPADDING', (0, 0), (-1, -1), 3), # Espacio Abajo ('LEFTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Izquierda ('RIGHTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Derecha ('SPAN', (1, 2), (-1, 2)), # Combina columnas, segunda fila ('SPAN', (1, 3), (-1, 3)), # Combina columnas, tercera fila ('SPAN', (1, 4), (-1, 4)), # Combina columnas, cuarta fila ('SPAN', (1, 5), (-1, 5)), # Combina columnas, quinta fila ]) story.append(tabla) story.append(Spacer(0, 20)) cursor = consultar(conexion, "Cantidad, Concepto, Monto", "comprobantepagos_detalles_s", " WHERE NroComprobante = " + nro_comp) datos_det = cursor.fetchall() cant = cursor.rowcount lista = [[ Paragraph("Cantidad", titulo), Paragraph("Descripción", titulo), Paragraph("Importe", titulo) ]] for i in range(0, cant): cantidad = "" if datos_det[i][0] is None else str(datos_det[i][0]) lista.append([ Paragraph(cantidad, centro), Paragraph(datos_det[i][1], texto), Paragraph(str(datos_det[i][2]), numero) ]) if cant < 16: # Completar hasta 16 casillas for i in range(cant, 16): lista.append(["", "", ""]) # Total a Pagar lista.append([ Paragraph("Total a Pagar:", numero), '', Paragraph(str(datos_comp[0][5]), numero) ]) tabla = Table(lista, [100, 300, 100]) tabla = tabla_style(tabla) tabla.setStyle([ ('SPAN', (0, -1), (-2, -1)), # Combina columnas, última fila ]) story.append(tabla) #ubicacion_archivo = path.join(path.expanduser("~"), "Desktop", "listado.pdf") doc = SimpleDocTemplate( ubicacion_archivo, pagesize=A4, # Tamaño de Página (landscape(A4) hoja horizontal) leftMargin=3 * cm, # Margen Izquierdo rightMargin=3 * cm, # Margen Derecho topMargin=2.5 * cm, # Margen Superior bottomMargin=2.5 * cm, # Margen Inferior allowSplitting=1, title="Comprobante de Pago Nro. " + cadenanumeros(nro_comp, 7), author="Sistema Distribuidora") try: # Generar Archivo doc.build(story) popen(ubicacion_archivo) except PermissionError as e: error_permiso_archivo(str(e))
def __init__(self, edit, origen): self.editando = edit self.nav = origen arch = Op.archivo("compra_ordenes") self.obj = arch.get_object self.obj("ventana").set_position(1) self.obj("ventana").set_default_size(650, 600) self.obj("ventana").set_modal(True) edit = "Creando" if not self.editando else "Editando" self.obj("ventana").set_title(edit + " Registro de " + self.nav.titulo) Mens.boton_guardar_cancelar(self.obj("btn_guardar"), self.obj("btn_cancelar")) self.estadoedicion(True) self.estadoguardar(False) self.estadoitem(False) self.config_grilla_items() self.obj("txt_00").set_max_length(10) self.obj("txt_01").set_max_length(10) self.obj("txt_01_2").set_max_length(12) self.obj("txt_02").set_max_length(10) self.obj("txt_00").set_tooltip_text("Ingrese el Número de " + self.nav.titulo) self.obj("txt_01").set_tooltip_text( Mens.usar_boton("al Proveedor de los ítems")) self.obj("txt_01_1").set_tooltip_text("Razón Social del Proveedor") self.obj("txt_01_2").set_tooltip_text( "Nro. de Documento de Identidad del Proveedor") self.obj("txt_01_3").set_tooltip_text( "Dirección principal del Proveedor") self.obj("txt_01_4").set_tooltip_text( "Teléfono principal del Proveedor") self.obj("txt_02").set_tooltip_text( Mens.usar_boton("un Pedido de Compra para cargar la Orden")) self.obj("txt_00").grab_focus() self.obj("txt_it_01").set_max_length(10) self.obj("txt_it_01_1").set_max_length(40) self.obj("txt_it_02").set_max_length(14) self.obj("txt_it_03").set_max_length(14) self.obj("txt_it_05").set_max_length(100) self.obj("txt_it_01").set_tooltip_text("Ingrese el Código del Ítem") self.obj("txt_it_01_1").set_tooltip_text( "Ingrese el Código de Barras del Ítem") self.obj("txt_it_01_2").set_tooltip_text("Descripción del Ítem") self.obj("txt_it_01_3").set_tooltip_text("Presentación del Ítem") self.obj("txt_it_01_4").set_tooltip_text("Categoría del Ítem") self.obj("txt_it_02").set_tooltip_text("Ingrese la Cantidad de Ítems") self.obj("txt_it_03").set_tooltip_text( "Ingrese el Precio Acordado del Ítem") self.obj("txt_it_04").set_tooltip_text( "Ingrese el Porcentaje de Descuento Acordado") self.obj("txt_it_05").set_tooltip_text( "Ingrese una Observación sobre el Ítems") self.idFormaPago = self.idTipoDoc = -1 self.txt_cod_per, self.txt_rzn_scl = self.obj("txt_01"), self.obj( "txt_01_1") self.txt_nro_doc, self.cmb_tip_doc = self.obj("txt_01_2"), self.obj( "cmb_tipo_doc") self.txt_dir_per, self.txt_tel_per = self.obj("txt_01_3"), self.obj( "txt_01_4") self.txt_nro_ped = self.obj("txt_02") self.txt_cod_it = self.obj("txt_it_01") self.txt_bar_it, self.txt_nom_it = self.obj("txt_it_01_1"), self.obj( "txt_it_01_2") self.txt_des_pres, self.txt_des_cat = self.obj( "txt_it_01_3"), self.obj("txt_it_01_4") Op.combos_config(self.nav.datos_conexion, self.obj("cmb_tipo_doc"), "tipodocumentos", "idTipoDocumento") Op.combos_config(self.nav.datos_conexion, self.obj("cmb_pago"), "formapagos", "idFormaPago") arch.connect_signals(self) if self.editando: seleccion, iterador = self.nav.obj( "grilla").get_selection().get_selected() self.cond = str(seleccion.get_value(iterador, 0)) fecha = seleccion.get_value(iterador, 1)[0:-9] # Quita la Hora ruc = seleccion.get_value(iterador, 2) nombre = seleccion.get_value(iterador, 3) direc = seleccion.get_value(iterador, 4) telef = seleccion.get_value(iterador, 5) pago = seleccion.get_value(iterador, 7) resp = seleccion.get_value(iterador, 11) aprob = seleccion.get_value(iterador, 12) idper = str(seleccion.get_value(iterador, 14)) tipodoc = str(seleccion.get_value(iterador, 15)) pedido = str(seleccion.get_value(iterador, 16)) direc = "" if direc is None else direc telef = "" if telef is None else telef self.obj("txt_00").set_text(self.cond) self.obj("txt_fecha").set_text(fecha) self.obj("txt_01").set_text(idper) self.obj("txt_01_1").set_text(nombre) self.obj("txt_01_2").set_text(ruc) self.obj("txt_01_2").set_text(direc) self.obj("txt_01_3").set_text(telef) self.obj("txt_02").set_text(pedido) # Asignación de Tipo de Documento en Combo model, i = self.obj("cmb_tipo_doc").get_model(), 0 while model[i][0] != tipodoc: i += 1 self.obj("cmb_tipo_doc").set_active(i) # Asignación de Forma de Pago en Combo model, i = self.obj("cmb_pago").get_model(), 0 while model[i][0] != pago: i += 1 self.obj("cmb_pago").set_active(i) if aprob != 1: self.obj("btn_aprobar").set_sensitive(True) self.obj("btn_rechazar").set_sensitive(True) else: self.obj("hbox1").set_sensitive(False) self.obj("vbox1").set_sensitive(False) self.obj("vbox3").set_sensitive(False) self.obj("hbox16").set_sensitive(False) self.obj("grilla").set_sensitive(False) self.obj("hbox18").set_sensitive(False) Mens.no_puede_modificar_eliminar_anular( 1, "Seleccionó:\n\nNro. de Orden: " + self.cond + "\nFecha: " + fecha + "\nResponsable: " + resp + "\n\nEsta Orden de Compra ya ha sido Aprobada." + "\nSolo puede modificar Órdenes pendientes de aprobación.") self.encabezado_guardado = True self.editando_pedido = True if len(pedido) > 0 else False else: self.obj("txt_00").set_text( Op.nuevoid(self.nav.datos_conexion, self.nav.tabla + "_s", self.nav.campoid)) self.obj("txt_fecha").set_text(Cal.mysql_fecha(date.today())) self.obj("cmb_tipo_doc").set_active(0) self.obj("cmb_pago").set_active(0) self.encabezado_guardado = self.editando_pedido = False self.pedido_guardado = True self.conexion = Op.conectar(self.nav.datos_conexion) self.cargar_grilla_items() self.nav.obj("grilla").get_selection().unselect_all() self.nav.obj("barraestado").push(0, "") self.obj("ventana").show()
def focus_out_event(self, objeto, evento): valor = objeto.get_text() if len(valor) == 0: self.obj("barraestado").push(0, "") if objeto == self.obj("txt_01"): # Código de Empleado self.idPersona == None self.obj("txt_01_1").set_text("") self.obj("txt_01_2").set_text("") elif objeto == self.obj("txt_01_2") \ and len(self.obj("txt_01").get_text()) == 0: # Nro. Documento de Empleado self.obj("txt_01_1").set_text("") elif objeto == self.obj("txt_02"): # Número de Contrato self.obj("txt_02_1").set_text("") self.obj("txt_02_2").set_text("") self.obj("txt_02_3").set_text("") else: if objeto == self.obj("txt_00"): # Cuando crea nuevo registro o, al editar, valor es diferente del original, # y si es un numero entero, comprueba si ya ha sido registado if (not self.editando or valor != self.cond) and \ Op.comprobar_numero(int, objeto, "Nro. de Comprobante", self.obj("barraestado")): Op.comprobar_unique( self.nav.datos_conexion, self.nav.tabla + "_s", self.nav.campoid, valor, objeto, self.estadoguardar, self.obj("barraestado"), "El Nro. de Comprobante introducido ya ha sido registado." ) elif objeto == self.obj("txt_01"): if Op.comprobar_numero(int, objeto, "Cód. de Empleado", self.obj("barraestado")): self.buscar_empleados(objeto, "idPersona", valor, "Cód. de Empleado") elif objeto == self.obj("txt_01_2"): self.buscar_empleados( objeto, "NroDocumento", "'" + valor + "'" + " AND idTipoDocumento = '" + str(self.idTipoDoc) + "'", "Nro. de Documento") elif objeto == self.obj("txt_02"): if Op.comprobar_numero(int, objeto, "Nro. de Contrato", self.obj("barraestado")): conexion = Op.conectar(self.nav.datos_conexion) cursor = Op.consultar( conexion, "idEmpleado, Cargo, " + "Salario, PeriodoPago, idPeriodoPago, Vigente", "contratos_s", " WHERE NroContrato = " + valor) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if cant > 0: if datos[0][5] == 1: self.obj("txt_01").set_text(str(datos[0][0])) self.obj("txt_02_1").set_text(datos[0][1]) self.obj("txt_02_2").set_text(str(datos[0][2])) self.obj("txt_02_3").set_text(datos[0][3]) self.idPeriodoPago = datos[0][4] self.obj("barraestado").push(0, "") if len(self.obj("txt_03").get_text()) == 0: # Buscar último pago y comparar fechas conexion = Op.conectar(self.nav.datos_conexion) cursor = Op.consultar( conexion, "MAX(FechaFin)", "comprobantepagos_s", " WHERE (NroContrato = " + valor + ")") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if datos[0][0] is None: fecha = "" else: fecha = Cal.mysql_fecha(datos[0][0]) self.fechaini = str(datos[0][0]) self.obj("txt_03").set_text(fecha) self.borrar_contrato = False self.focus_out_event(self.obj("txt_01"), 0) else: objeto.grab_focus() self.estadoguardar(False) self.obj("barraestado").push( 0, "El Contrato seleccionado ya no se encuentra vigente." ) else: objeto.grab_focus() self.estadoguardar(False) self.obj("barraestado").push( 0, "El Nro. de Contrato no es válido.") elif objeto == self.obj("txt_03"): if Op.compara_fechas(self.nav.datos_conexion, "'" + self.fechaini + "'", ">", "NOW()"): self.estadoguardar(False) objeto.grab_focus() self.obj("barraestado").push( 0, "La Fecha de Inicio del Periodo de Pago NO puede estar en el Futuro." ) else: self.comparar_fechas_periodo_pago() elif objeto == self.obj("txt_04"): if Op.compara_fechas(self.nav.datos_conexion, "'" + self.fechafin + "'", ">", "NOW()"): self.estadoguardar(False) objeto.grab_focus() self.obj("barraestado").push( 0, "La Fecha de Finalización del Periodo de Pago NO puede estar en el Futuro." ) else: self.comparar_fechas_periodo_pago()