def cargar_grilla_detalles(self): # Cargar campo Total cursor = Op.consultar( self.conexion, "Total", self.tabla + "_s", " WHERE NroPedidoVenta = " + self.obj("txt_00").get_text()) self.obj("txt_total").set_text(str(cursor.fetchall()[0][0])) # Cargar los Detalles de la Factura cursor = Op.consultar( self.conexion, "idDetalle, Nombre, Cantidad, " + "Precio, SubTotal, idItem", self.tabla + "_detalles_s", " WHERE " + "NroPedidoVenta = " + self.obj("txt_00").get_text() + " ORDER BY idItem") 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], datos[i][4], datos[i][5] ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def eliminar_nota_lote(self, item): nota = self.obj("txt_00_3").get_text() timb = self.obj("txt_01_1").get_text() # Seleccionar Lotes del item seleccionado cursor = Op.consultar( self.conexion, "NroLote, Cantidad", self.tabla + "_lotes_s", " WHERE NroTimbrado = " + timb + " AND NroNotaDebito = " + nota + " AND idItem = " + item) datos = cursor.fetchall() cant = cursor.rowcount self.obj("barraestado").push( 0, "Se han encontrado " + str(cant) + " Lotes a Modificar.") for i in range(0, cant): cursor = Op.consultar( self.conexion, "Cantidad", "lotes", " WHERE NroLote = '" + datos[i][0] + "' AND idItem = " + item) cant_lote = cursor.fetchall()[0][0] - datos[i][1] Op.modificar( self.conexion, "lotes_cantidad", "'" + datos[i][0] + "', " + item + ", " + str(cant_lote)) self.obj("barraestado").push( 0, "Modificando el Lote Nº " + str(i + 1) + " de " + str(cant) + ".") # Eliminar Nota de Debito con Lotes Op.eliminar( self.conexion, self.tabla + "_lotes", timb + ", " + nota + ", '" + datos[i][0] + "', " + item)
def buscar_clientes(self, objeto, campo, valor, nombre): conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "idPersona, RazonSocial, NroDocumento, " + "idTipoDocumento, DireccionPrincipal, TelefonoPrincipal", "personas_s", " WHERE " + campo + " = " + valor + " AND Cliente = 1") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if cant > 0: direc = "" if datos[0][4] is None else datos[0][4] telef = "" if datos[0][5] is None else datos[0][5] 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(direc) self.obj("txt_01_4").set_text(telef) # Asignación de Tipo de Documento en Combo model, i = self.obj("cmb_tipo_doc").get_model(), 0 while model[i][0] != datos[0][3]: i += 1 self.obj("cmb_tipo_doc").set_active(i) # Buscar Tipo de Cliente y Vendedor conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "idTipoCliente, idVendedor, " + "NombreApellido", "clientes_s", " WHERE idCliente = " + str(datos[0][0])) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión self.idTipoCliente = str(datos[0][0]) self.obj("txt_02").set_text(str(datos[0][1])) self.obj("txt_02_1").set_text(datos[0][2]) self.obj("barraestado").push(0, "") self.verificacion(0) else: self.estadoguardar(False) objeto.grab_focus() 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 eliminar(self): seleccion, iterador = self.obj("grilla").get_selection().get_selected() valor0 = seleccion.get_value(iterador, 1) valor1 = str(seleccion.get_value(iterador, 0)) valor2 = seleccion.get_value(iterador, 2) valor3 = seleccion.get_value(iterador, 4) valor4 = str(seleccion.get_value(iterador, 9)) valor5 = str(seleccion.get_value(iterador, 10)) valor6 = seleccion.get_value(iterador, 13) confirmado = seleccion.get_value(iterador, 14) mensaje = "Seleccionó:\n\nNro. de Factura: " + valor0 + "\nNro. de Timbrado: " + valor1 + \ "\nFecha: " + valor2 + "\nProveedor: " + valor3 + "\nTotal a Pagar: " + valor4 + \ "\nTotal Liq. del IVA: " + valor5 + "\nResponsable: " + valor6 if confirmado != 1: eleccion = Mens.pregunta_borrar(mensaje) self.obj("grilla").get_selection().unselect_all() self.obj("barraestado").push(0, "") if eleccion: conexion = Op.conectar(self.datos_conexion) # Modificar Cantidades de Lotes afectados cursor = Op.consultar(conexion, "NroLote, idItem, Cantidad", self.tabla + "_lotes_s", " WHERE NroTimbrado = " + valor1 + " AND NroFactura = '" + valor0 + "' ORDER BY idItem") datos = cursor.fetchall() cant = cursor.rowcount self.obj("barraestado").push(0, "Se han encontrado " + str(cant) + " Lotes a Modificar.") for i in range(0, cant): cursor = Op.consultar(conexion, "Cantidad", "lotes", " WHERE NroLote = '" + datos[i][0] + "'" + " AND idItem = " + str(datos[i][1])) cant_lote = cursor.fetchall()[0][0] - datos[i][2] Op.modificar(conexion, "lotes_cantidad", "'" + datos[i][0] + "', " + str(datos[i][1]) + ", " + str(cant_lote)) self.obj("barraestado").push(0, "Modificando el Lote " + "Nº " + str(i + 1) + " de " + str(cant) + ".") # Eliminar Factura de Compra Op.eliminar(conexion, self.tabla, valor1 + ", '" + valor0 + "'") conexion.commit() conexion.close() # Finaliza la conexión cargar_grilla(self) else: Mens.no_puede_modificar_eliminar_anular(2, mensaje + "\n\nEsta Factura de Compra ya ha sido Confirmada." + "\nSolo puede eliminar Facturas pendientes de confirmación.")
def cargar_grilla(self): if self.campo_buscar in ("FechaHora", "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() + "%'" conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar(conexion, "idAnticipo, NroContrato, idEmpleado, " + "idTipoDocumento, NroDocumento, NombreApellido, FechaNacimiento, " + "Edad, Cargo, NroComprobante, FechaHoraExp, Monto, FechaHora, " + "Observaciones, Alias, NroDocUsuario, NombreUsuario", self.tabla + "_s", opcion + " ORDER BY NroContrato, " + 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]) fechacomp = "" if datos[i][10] is None else Cal.mysql_fecha_hora(datos[i][10]) fechaexp = "" if datos[i][12] is None else Cal.mysql_fecha_hora(datos[i][12]) 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], datos[i][9], fechacomp, datos[i][11], fechaexp, datos[i][13], datos[i][14], datos[i][15], datos[i][16], str(datos[i][6]), str(datos[i][10]), str(datos[i][12])]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self): 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(): activo = "1" if self.obj("rad_act").get_active() else "0" opcion += " WHERE " if len(opcion) == 0 else " AND " opcion += "Activo = " + activo conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "NroEstablecimiento, Nombre, " + "NroDocumento, RazonSocial, Ciudad, Barrio, Direccion, " + "NroTelefono, Activo, idEmpresa, idDireccion", 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] ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_item_pedido(self): self.pedido_guardado = False self.guardar_encabezado() orden = self.obj("txt_00").get_text() pedido = self.obj("txt_02").get_text() # Eliminando Items del Pedido anterior datos = self.obj("grilla").get_model() cant = len(datos) if cant > 0: # Si existen ítems registrados en la Orden, los elimina for i in range(0, cant): Op.eliminar(self.conexion, "ordencompras_detalles", orden + ", " + str(datos[i][0])) # Obteniendo Items desde Pedido seleccionado conexion = Op.conectar(self.nav.datos_conexion) cursor = Op.consultar(conexion, "idItem, Cantidad", "pedidocompras_detalles_s", " WHERE NroPedidoCompra = " + pedido) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión # Cargando Items desde Pedido seleccionado for i in range(0, cant): Op.insertar( self.conexion, "ordencompras_detalles", orden + ", " + str(datos[i][0]) + ", " + str(datos[i][1]) + ", NULL, NULL, NULL") self.cargar_grilla_items() self.verificacion(0)
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_items(self, objeto, campo, valor, nombre): conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "idItem, CodigoBarras, Nombre, " + "idPresentacion, Presentacion, idCategoria, Categoria, Porcentaje", "items_s", " WHERE " + campo + " = " + valor) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if cant > 0: self.obj("txt_00").set_text(str(datos[0][0])) codbar = "" if datos[0][1] is None else datos[0][1] self.obj("txt_00_1").set_text(codbar) self.obj("txt_00_2").set_text(datos[0][2]) self.obj("txt_00_3").set_text(str(datos[0][3])) self.obj("txt_00_4").set_text(datos[0][4]) self.obj("txt_00_5").set_text(str(datos[0][5])) self.obj("txt_00_6").set_text(datos[0][6]) self.obj("txt_00_7").set_text(str(datos[0][7])) self.cargar_grilla_lotes() self.estadoguardar(True) else: objeto.grab_focus() self.estadoguardar(False) self.obj("barraestado").push(0, "El " + nombre + " no es válido.") otro = self.obj("txt_00_1") if objeto == self.obj( "txt_00") else self.obj("txt_00") self.limpiar_items() otro.set_text("")
def cargar_grilla(self): 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 + ", NroDocumento, " + "DigitoVerificador, RazonSocial, NombreFantasia, idPropietario, " + "NroDocPropietario, NombreApellido, DireccionPrincipal, " + "TelefonoPrincipal, NroPatronalIPS, NroPatronalMJT", 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): documento = str(datos[i][1]) + "-" + str(datos[i][2]) lista.append([datos[i][0], documento, 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][2]]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_item_orden(self): self.guardar_encabezado() fact = self.obj("txt_00").get_text() timb = self.obj("txt_01").get_text() orden = self.obj("txt_orden").get_text() # Eliminando Items de la Orden anterior datos = self.obj("grilla").get_model() cant = len(datos) if cant > 0: # Si existen ítems registrados en la Factura, los elimina for i in range(0, cant): Op.eliminar(self.nav.conexion, self.nav.tabla + "_detalles", timb + ", '" + fact + "', " + str(datos[i][0])) # Obteniendo Items desde Orden seleccionada cursor = Op.consultar(self.nav.conexion, "idItem, Cantidad, PrecioAcordado, Porcentaje", "ordencompras_detalles_s", " WHERE NroOrdenCompra = " + orden) datos = cursor.fetchall() cant = cursor.rowcount # Cargando Items desde Orden seleccionada for i in range(0, cant): Op.insertar(self.nav.conexion, self.nav.tabla + "_detalles", timb + ", '" + fact + "', " + str(datos[i][0]) + ", " + str(datos[i][1]) + ", " + str(datos[i][2]) + ", " + str(datos[i][3])) self.cargar_grilla_detalles() self.estadoguardar(True)
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(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 cargar_grilla_buscar(self): if self.campo_buscar == "FechaHora": 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() + "%'" opcion += " WHERE " if len(opcion) == 0 else " AND " opcion += "Anulado <> 1" cursor = Op.consultar( self.conexion, "NroTimbrado, NroNotaDebito, " + "FechaHora, NroTimbradoFact, NroFactura, idTipoDocCliente, NroDocCliente, " + "RazonSocial, DireccionPrincipal, Total, TotalLiquidacionIVA, " + "Alias, NroDocUsuario, NombreApellido, Anulado, idCliente", "notadebitoventas_s", opcion + " ORDER BY FechaHora DESC") datos = cursor.fetchall() cant = cursor.rowcount lista = self.obj("grilla_buscar").get_model() lista.clear() for i in range(0, cant): lista.append([ datos[i][0], datos[i][1], Cal.mysql_fecha_hora(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][2], datos[i][15] ]) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def buscar_nro_nota_debito(self): timb = self.obj("txt_01_1").get_text() cursor = Op.consultar( self.conexion, "NumeroInicio, NumeroFin", "timbrados_s", " WHERE NroTimbrado = " + timb + " AND " + "idTipoDocumento = 3 AND FechaVencimiento > NOW() AND Anulado <> 1" ) datos = cursor.fetchall() ini, fin = datos[0][0], datos[0][1] num_nota = Op.nuevoid(self.conexion, self.tabla + "_s WHERE NroTimbrado = " + timb, "NroNotaDebito") if int(num_nota) >= ini and int(num_nota) <= fin: self.obj("txt_00_3").set_text(Op.cadenanumeros(num_nota, 7)) elif int(num_nota) < ini: self.obj("txt_00_3").set_text(Op.cadenanumeros(str(ini), 7)) elif int(num_nota) > fin: Mens.error_generico( "¡ERROR!", "El nuevo Número de Nota de Débito es mayor " + "al último número\npara el Timbrado asignado a este Punto de Expedición." + "\n\nHable con el Administrador par resolver el problema.") self.estadoedicion(False) self.limpiarcampos()
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_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 funcion_items(self): self.guardar_principal_vendedores() if self.editando_item: seleccion, iterador = self.obj("grilla_items").get_selection().get_selected() com = seleccion.get_value(iterador, 11) self.obj("txt_it_03").set_value(com) self.obj("txt_it_00").set_text(self.cond_item) self.focus_out_event(self.obj("txt_it_00"), 0) # Verificar si se registró el Ítem individualmente cursor = Op.consultar(self.conexion, "idItem", "vendedorcomisionitems_s", " WHERE idVendedor = " + self.obj("txt_00").get_text()) datos = cursor.fetchall() cant = cursor.rowcount if not cant > 0: self.editando_item = False self.obj("notebook").set_show_tabs(False) self.estadoedicion(True) self.obj("btn_guardar_item").set_sensitive(False) self.obj("grilla_items").get_selection().unselect_all() self.obj("barraestado").push(0, "")
def concesion_de_permisos_grupos(self, codigo): cant = len(self.obj("grilla").get_model()) if cant > 0: eleccion = Mens.pregunta_generico( "¿Desea conservar los permisos?", "El usuario ya posee pemisos sobre unas " + str(cant) + " entidades.") if not eleccion: self.on_btn_per_todos_clicked(0) conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "*", "grupousuarios_permisos_s", " WHERE idGrupoUsuario = " + codigo + " ORDER BY idTabla") datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión for i in range(0, cant): self.idTabla = datos[i][2] con = True if datos[i][4] == 1 else False ins = True if datos[i][5] == 1 else False act = True if datos[i][6] == 1 else False eli = True if datos[i][7] == 1 else False anu = True if datos[i][8] == 1 else False self.permisos_tablas(con, ins, act, eli, anu, True) self.cargar_grilla()
def on_btn_consulta_clicked(self, objeto): cont = self.obj("txt_02").get_text() if len(cont) > 0: conexion = Op.conectar(self.nav.datos_conexion) # Obtener monto total cobrado durante el presente año cursor = Op.consultar( conexion, "IFNULL(SUM(TotalPagar), 0)", "comprobantepagos_s", " WHERE (YEAR(FechaHoraExp) = YEAR(NOW())) AND (NroContrato = " + cont + ")") datos = cursor.fetchall() cant = cursor.rowcount if datos[0][0] == 0: Mens.informa_generico( "Revise los datos", "No se han encontrado registros de pagos realizados\n" + "al Empleado relacionado al Contrato Nro. " + cont) total = Decimal(0.00) else: total = round(Decimal(datos[0][0])) self.obj("txt_03").set_text(str(total)) # Cálculo del Aguinaldo monto = round(total / 12) self.obj("txt_04").set_text(str(monto)) else: self.obj("barraestado").push( 0, "Seleccione un Contrato primero, luego podrá consultar.")
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 buscar_empleados(self, objeto, campo, valor, nombre): conexion = Op.conectar(self.nav.datos_conexion) cursor = Op.consultar( conexion, "idPersona, RazonSocial, " + "NroDocumento, idTipoDocumento", "personas_s", " WHERE " + campo + " = " + valor + " AND Empleado = 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]) # Asignación de Tipo de Documento en Combo model, i = self.obj("cmb_tipo_doc").get_model(), 0 while model[i][0] != datos[0][3]: i += 1 self.obj("cmb_tipo_doc").set_active(i) self.obj("barraestado").push(0, "") self.verificacion(0) else: self.estadoguardar(False) objeto.grab_focus() 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("")
def cargar_grilla_conceptos(self): cursor = Op.consultar( self.conexion, "idDetalle, idConcepto, Concepto, " + "Cantidad, Monto, Suma, Observaciones", "comprobantepagos_detalles_s", " WHERE NroComprobante = " + self.obj("txt_00").get_text() + " ORDER BY idDetalle") datos = cursor.fetchall() cant = cursor.rowcount total = 0 # Monto Total a Pagar lista = self.obj("grilla").get_model() lista.clear() for i in range(0, cant): cantidad = "" if datos[i][3] is None else str(datos[i][3]) obs = "" if datos[i][6] is None else " " + datos[i][6] total += datos[i][4] lista.append([ datos[i][0], datos[i][1], datos[i][2] + obs, cantidad, datos[i][4], datos[i][5], obs ]) self.obj("txt_total").set_text(str(total)) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def buscar_foraneos(self, objeto, companero, nombre, tabla, campo, valor, condicion=""): if Op.comprobar_numero(int, objeto, "Cód. de " + nombre, self.obj("barraestado")): conexion = Op.conectar(self.nav.datos_conexion) cursor = Op.consultar( conexion, "Nombre", tabla, " WHERE " + campo + " = " + valor + condicion) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if cant > 0: companero.set_text(datos[0][0]) self.obj("barraestado").push(0, "") if self.nav.tabla == "ciudades" and objeto == self.obj("txt_02") \ and len(self.obj("txt_03_1").get_text()) == 0: # Con paises, si no aparece el nombre del departamento, lo buscará self.focus_out_event(self.obj("txt_03"), 0) else: self.focus_out_event(self.obj("txt_00"), 0) else: self.obj("btn_guardar").set_sensitive(False) objeto.grab_focus() self.obj("barraestado").push( 0, "El Cód. de " + nombre + " no es válido.") companero.set_text("")
def cargar_grilla_items(self): cursor = Op.consultar( self.conexion, "idItem, CodigoBarras, Nombre, " + "Categoria, Presentacion, Cantidad, PrecioAcordado, PorcDescuento, " + "MontoDescuento, SubTotal, Observaciones", "ordencompras_detalles_s", " WHERE NroOrdenCompra = " + self.obj("txt_00").get_text() + " ORDER BY idItem") datos = cursor.fetchall() cant = cursor.rowcount total = 0.0 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] ]) total += datos[i][9] self.obj("txt_total").set_text(str(total)) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def cargar_grilla(self): opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \ " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'" if len(self.condicion) > 0: self.condicion = " WHERE " + self.condicion if len(opcion) == 0 \ else " AND " + self.condicion campos, camporden = self.campoid + ", Nombre, idPais, Pais", "" if self.tabla == "ciudades": campos += ", idDepartamento, Departamento" camporden += "idDepartamento, " conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, campos, self.tabla + "_s", opcion + self.condicion + " ORDER BY idPais, " + camporden + 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): fila = [datos[i][0], datos[i][1], datos[i][2], datos[i][3]] if self.tabla == "ciudades": fila += [datos[i][4], datos[i][5]] lista.append(fila) cant = str(cant) + " registro encontrado." if cant == 1 \ else str(cant) + " registros encontrados." self.obj("barraestado").push(0, cant)
def txt_tabla_focus_out(self, objeto, datos_conexion, boton_guardar): codigo = objeto.get_text() if len(codigo) > 0 and Op.comprobar_numero(int, objeto, "Código", self.obj("barraestado")): conexion = Op.conectar(datos_conexion) cursor = Op.consultar(conexion, "Nombre, Tabla", "sistematablas", " WHERE idTabla = " + codigo) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if cant > 0: self.idTabla = int(codigo) self.obj("txt_des_tabla").set_text(datos[0][0]) self.editando_tabla = cambiar_tabla_seleccionada(self) else: objeto.grab_focus() self.obj("txt_des_tabla").set_text("") boton_guardar.set_sensitive(False) self.obj("barraestado").push(0, "El Código de Tabla no es válido.") else: self.obj("txt_des_tabla").set_text("") boton_guardar.set_sensitive(False) self.idTabla = -1 visibilidad_permisos(self)
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_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 focus_out_event(self, objeto, evento): if len(self.obj("txt_fact").get_text()) == 0 or len( self.obj("txt_timb").get_text()) == 0: self.obj("barraestado").push(0, "") else: fact = self.obj("txt_fact").get_text() timb = self.obj("txt_timb").get_text() if self.tabla == "cuentaspagar": fact = "'" + fact + "'" tabla = "facturacompras_s" else: tabla = "facturaventas_s" conexion = Op.conectar(self.datos_conexion) cursor = Op.consultar( conexion, "Total", tabla, " WHERE " + "NroTimbrado = " + timb + " AND NroFactura = " + fact) datos = cursor.fetchall() cant = cursor.rowcount conexion.close() # Finaliza la conexión if cant > 0: self.obj("txt_total_fact").set_text(str(datos[0][0])) self.obj("barraestado").push(0, "") self.cargar_grilla_cuotas() else: self.estadoguardar(False) self.obj("txt_fact").grab_focus() self.obj("barraestado").push( 0, "El Nro. Factura introducido no es válido (NO EXISTE).") self.obj("txt_total_fact").set_text("") self.obj("txt_no_asignado").set_text("")