Beispiel #1
0
 def guardar(self, widget=None):
     """
     Guarda el contenido de los entry y demás widgets de entrada
     de datos en el objeto y lo sincroniza con la BD.
     """
     proveedor = self.objeto
     # Si la dirección fiscal está en blanco, copio la postal:
     if self.wids["e_direccionfacturacion"].get_text().strip() == "":
         self.wids["e_direccionfacturacion"].set_text(self.wids["e_direccion"].get_text())
         self.wids["e_ciudadfacturacion"].set_text(self.wids["e_ciudad"].get_text())
         self.wids["e_paisfacturacion"].set_text(self.wids["e_pais"].get_text())
         self.wids["e_cpfacturacion"].set_text(self.wids["e_cp"].get_text())
         self.wids["e_provinciafacturacion"].set_text(self.wids["e_provincia"].get_text())
         self.wids["e_email"].set_text(self.wids["e_correoe"].get_text())
     # Valores por defecto para forma de pago:
     # CWT:
     # No se le paga a todos los proveedores por igual. Se debe dejar que
     # este valor esté vacío para especificar que no hay día de pago
     # concreto.
     # if self.wids['e_diadepago'].get_text().strip() == "":
     #    self.wids['e_diadepago'].set_text("25")
     if self.leer_valor(self.wids["e_vencimiento"]).strip() == "":
         self.escribir_valor(self.wids["e_vencimiento"], "120 D.F.F.")
     if self.wids["e_documentodepago"].get_text().strip() == "":
         self.wids["e_documentodepago"].set_text("Pagaré a la orden")
     # campo formadepago DEPRECATED. Lo pongo igual que "vencimiento"
     # por si acaso.
     self.wids["e_formadepago"].set_text(self.leer_valor(self.wids["e_vencimiento"]))
     # Desactivo el notificador momentáneamente
     proveedor.notificador.set_func(lambda: None)
     # Actualizo los datos del objeto
     cif = self.wids["e_cif"].get_text()
     # TODO: Aquí habría que comprobar que el CIF no se duplica
     self.wids["e_cif"].set_text(utils.parse_cif(cif) or self.objeto.cif)
     for c in [c.name for c in proveedor.sqlmeta.columnList]:
         if c != "tipoDeProveedorID":
             valor = self.leer_valor(self.wids["e_%s" % c])
         else:
             valor = utils.combo_get_value(self.wids["cb_tipo_de_proveedor"])
         setattr(proveedor, c, valor)
     # Fuerzo la actualización de la BD y no espero a que SQLObject lo
     # haga por mí:
     proveedor.syncUpdate()
     pclases.Auditoria.modificado(proveedor, self.usuario, __file__)
     # Vuelvo a activar el notificador
     proveedor.notificador.set_func(self.aviso_actualizacion)
     self.objeto = proveedor
     self.actualizar_ventana()
     self.wids["b_guardar"].set_sensitive(False)
Beispiel #2
0
 def crear_nuevo_proveedor(self, widget):
     """
     Función callback del botón b_nuevo.
     Pide los datos básicos para crear un nuevo objeto.
     Una vez insertado en la BD hay que hacerlo activo
     en la ventana para que puedan ser editados el resto
     de campos que no se hayan pedido aquí.
     """
     proveedor = self.objeto
     nombre = utils.dialogo_entrada(
         texto="Introduzca el nombre del proveedor:", titulo="NOMBRE PROVEEDOR", padre=self.wids["ventana"]
     )
     if nombre == None:
         return
     cif = utils.dialogo_entrada(
         titulo="CIF DEL PROVEEDOR", texto="Introduzca CIF (campo obligatorio):", padre=self.wids["ventana"]
     )
     if cif == None:
         return
     # TODO: Si se mete el CIF en minúsculas, se traga el duplicado.
     while (
         utils.parse_cif(cif) == ""
         or pclases.Proveedor.select(
             pclases.AND(pclases.Proveedor.q.cif == utils.parse_cif(cif), pclases.Proveedor.q.inhabilitado == False)
         ).count()
     ):
         utils.dialogo_info(
             titulo="CIF INVÁLIDO",
             texto="El CIF tecleado %s no es válido o está repetido." % (cif),
             padre=self.wids["ventana"],
         )
         cif = utils.dialogo_entrada(
             titulo="CIF DEL PROVEEDOR", texto="Introduzca CIF (campo obligatorio):", padre=self.wids["ventana"]
         )
         if cif == None:
             return
     cif = utils.parse_cif(cif)
     if proveedor != None:
         proveedor.notificador.set_func(lambda: None)
     tipo_por_defecto = pclases.TipoDeProveedor.get_por_defecto()
     self.objeto = pclases.Proveedor(
         nombre=nombre,
         cif=cif,
         direccion="",  # La carta de
         # pago se envía a
         # esta dirección.
         pais="",
         ciudad="",
         provincia="",
         cp="",
         telefono="",
         fax="",
         contacto="",
         observaciones="",
         direccionfacturacion="",
         # La factura lleva esta
         # dirección.
         paisfacturacion="",
         ciudadfacturacion="",
         provinciafacturacion="",
         cpfacturacion="",
         email="",
         formadepago="120 D.F.F.",
         # Campo obsoleto.
         documentodepago="Pagaré a la orden",
         vencimiento="120 D.F.F.",
         diadepago="25",
         inhabilitado=False,
         tipoDeProveedor=tipo_por_defecto,
     )
     proveedor = self._objetoreciencreado = self.objeto
     pclases.Auditoria.nuevo(proveedor, self.usuario, __file__)
     proveedor.notificador.set_func(self.aviso_actualizacion)
     utils.dialogo_info(
         "PROVEEDOR CREADO", "Inserte el resto de la información del proveedor", padre=self.wids["ventana"]
     )
     self.actualizar_ventana()