Example #1
0
    def onClickGraba(self):
        self.SumaDeuda()
        self.SumaPagos()
        cliente = Cliente.get_by_id(int(self.view.controles['cliente'].text()))
        recibo = Cabfact()
        recibo.tipocomp = Tipocomprobantes.CODIGO_RECIBO
        recibo.cliente = cliente.idcliente
        recibo.fecha = datetime.today()
        recibo.numero = str(TipoComprobante().SiguienteNumero(
            Tipocomprobantes.CODIGO_RECIBO)).zfill(12)
        recibo.total = float(self.view.controles['pagos'].text())
        if float(self.view.controles['saldo'].text()) < 0:
            recibo.saldo = abs(float(self.view.controles['saldo'].text()))

        recibo.tipoiva = cliente.tiporesp.idtiporesp
        recibo.formapago = Tipocomprobantes.FORMA_PAGO['Cta Cte']
        recibo.nombre = cliente.nombre
        recibo.domicilio = cliente.domicilio
        recibo.save()

        for x in range(self.view.gridDeuda.rowCount()):
            id = self.view.gridDeuda.ObtenerItem(fila=x, col='id') or 0
            importe = float(
                self.view.gridDeuda.ObtenerItem(fila=x, col='a Saldar') or 0)
            cabecera = Cabfact.get_by_id(int(id))
            cabecera.saldo = float(cabecera.saldo) - abs(importe)
            cabecera.desde = "0000-00-00"
            cabecera.hasta = "0000-00-00"
            cabecera.venccae = "0000-00-00"
            cabecera.save()
    def CargaDatosCliente(self, *args, **kwargs):
        if not self.view.validaCliente.text():
            return
        try:
            self.cliente = Cliente.select().where(Cliente.idcliente == self.view.validaCliente.text()).get()
            cliente = self.cliente
            self.view.lineEditDomicilio.setText(cliente.domicilio)
            if cliente.tiporesp.idtiporesp in [1, 2, 4]: #monotributo o resp inscripto
                self.view.lineEditDocumento.setText(cliente.cuit.replace('-',''))
                self.view.lineEditDocumento.setInputMask("99-99999999-9")
                if ParamSist.ObtenerParametro("EMITE_FCE") == "S":
                    wsfecred = WsFECred()
                    obligado, minimo = wsfecred.ConsultarMontoObligado(cliente.cuit.replace('-',''), LeerIni('cuit', key='WSFEv1'))
                    if obligado and not self.informo:
                        Ventanas.showAlert("Sistema", "Se debe emitir FCE al cliente desde un monto de {}".format(minimo))
                self.informo = True
            else:
                self.view.lineEditDocumento.setText(str(cliente.dni))
                self.view.lineEditDocumento.setInputMask("99999999")
            if int(LeerIni(clave='cat_iva', key='WSFEv1')) == 1: #si es Resp insc el contribuyente veo si teiene que emitira A o B
                if cliente.tiporesp.idtiporesp == 2: #resp inscripto
                    self.view.cboComprobante.setText('Factura A')
                else:
                    self.view.cboComprobante.setText('Factura B')
            else:
                self.view.cboComprobante.setText('Factura C')

            self.view.cboTipoIVA.setText(cliente.tiporesp.nombre)
            self.ObtieneNumeroFactura()
        except Cliente.DoesNotExist:
            Ventanas.showAlert("Sistema", "Cliente no encontrado en el sistema")
Example #3
0
 def onClickAgregaCliente(self):
     padron = PadronAfip()
     ok = padron.ConsultarPersona(
         cuit=str(self.view.textCUIT.text()).replace("-", ""))
     if padron.errores:
         Ventanas.showAlert(LeerIni("nombre_sistema"),
                            "Error al leer informacion en la AFIP")
     else:
         cliente = Cliente()
         cliente.nombre = padron.denominacion[:30]
         cliente.domicilio = padron.direccion[:30]
         try:
             localidad = Localidad().select().where(
                 Localidad.nombre.contains(padron.localidad)).get()
         except Localidad.DoesNotExist:
             localidad = Localidad().get_by_id(1)
         cliente.localidad = localidad
         cliente.cuit = padron.cuit
         cliente.dni = padron.dni
         cliente.tipodocu = 80 if padron.tipo_doc == 80 else 0
         cliente.tiporesp = 2 if padron.tipo_doc == 80 else 0
         cliente.formapago = 1
         cliente.percepcion = 1
         cliente.save()
         Ventanas.showAlert(
             LeerIni("nombre_sistema"),
             "Verifique si los datos cargados son los correctos")
 def btnAceptarClicked(self, *args, **kwargs):
     if self.tipo == 'M':
         cliente = Cliente.get_by_id(
             self.controles[Cliente.idcliente.column_name].text())
         cliente.idcliente = self.controles['idcliente'].text()
     else:
         if self.controles['dni'].text() != '0':
             doc = Cliente.select().where(
                 Cliente.dni == self.controles['dni'].text())
         else:
             doc = Cliente.select().where(
                 Cliente.cuit == self.controles['cuit'].text() or '0')
         if doc.count() > 0:
             Ventanas.showAlert(
                 "Sistema",
                 "Cliente con el numero documento de documento cargado, ya dado de alta"
             )
             return
         cliente = Cliente()
     cliente.nombre = self.controles['nombre'].text()
     cliente.telefono = self.controles['telefono'].text()
     cliente.localidad = self.controles['localidad'].text() or 1
     cliente.domicilio = self.controles['domicilio'].text()
     cliente.tipodocu = self.controles['tipodocu'].text() or 0
     cliente.dni = self.controles['dni'].text(
     ) if self.controles['dni'].text() else '0'
     cliente.cuit = self.controles['cuit'].text() if str(
         self.controles['cuit'].text()).replace('-', '') else '0'
     cliente.tiporesp = self.controles['tiporesp'].text() or 3
     cliente.formapago = '1'
     cliente.percepcion = self.controles['percepcion'].text() or 1
     #if self.tipo == 'M': #actualizacion
     cliente.save()
     ABM.btnAceptarClicked(self)
class ClientesView(ABM):

    model = Cliente()
    camposAMostrar = [Cliente.idcliente, Cliente.nombre]
    ordenBusqueda = Cliente.nombre
    campoClave = Cliente.idcliente

    def __init__(self, *args, **kwargs):
        ABM.__init__(self, *args, **kwargs)

    @inicializar_y_capturar_excepciones
    def ArmaCarga(self, *args, **kwargs):
        self.layoutID = self.ArmaEntrada('idcliente', texto='Codigo')
        self.ArmaEntrada('nombre', boxlayout=self.layoutID)
        self.layoutDomi = self.ArmaEntrada('domicilio')
        self.ArmaEntrada('telefono', boxlayout=self.layoutDomi)
        self.layoutLocalidad = self.ArmaEntrada(nombre='localidad',
                                                control=Localidades.Valida())
        self.lblNombreLocalidad = Etiqueta()
        self.layoutLocalidad.addWidget(self.lblNombreLocalidad)
        self.controles['localidad'].widgetNombre = self.lblNombreLocalidad
        self.layoutDocumento = self.ArmaEntrada(nombre='tipodocu',
                                                control=Tipodoc.ComboTipoDoc(),
                                                texto="Tipo de docuemnto")
        self.lblNombreTipodoc = Etiqueta()
        self.layoutDocumento.addWidget(self.lblNombreTipodoc)
        self.controles['tipodocu'].widgetNombre = self.lblNombreTipodoc
        self.ArmaEntrada(nombre='dni', boxlayout=self.layoutDocumento)
        self.ArmaEntrada(nombre='cuit', boxlayout=self.layoutDocumento)
        self.layoutImpuesto = self.ArmaEntrada(
            nombre='percepcion',
            control=Impuestos.ComboImpuesto(),
            texto="Tipo de impuesto")
        self.lblNombreImpuesto = Etiqueta()
        self.layoutImpuesto.addWidget(self.lblNombreImpuesto)
        self.controles['percepcion'].widgetNombre = self.lblNombreImpuesto
        self.campoFoco = self.controles['nombre']

        self.ArmaEntrada(nombre='tiporesp',
                         boxlayout=self.layoutImpuesto,
                         control=Tiporesp.Combo(),
                         texto="Responsabilidad frente al iva")
        self.lblNombreTiporesp = Etiqueta()
        self.layoutDocumento.addWidget(self.lblNombreTiporesp)
        self.controles['tiporesp'].widgetNombre = self.lblNombreTiporesp

    @inicializar_y_capturar_excepciones
    def btnAceptarClicked(self, *args, **kwargs):
        if self.tipo == 'M':
            cliente = Cliente.get_by_id(
                self.controles[Cliente.idcliente.column_name].text())
            cliente.idcliente = self.controles['idcliente'].text()
        else:
            if self.controles['dni'].text() != '0':
                doc = Cliente.select().where(
                    Cliente.dni == self.controles['dni'].text())
            else:
                doc = Cliente.select().where(
                    Cliente.cuit == self.controles['cuit'].text() or '0')
            if doc.count() > 0:
                Ventanas.showAlert(
                    "Sistema",
                    "Cliente con el numero documento de documento cargado, ya dado de alta"
                )
                return
            cliente = Cliente()
        cliente.nombre = self.controles['nombre'].text()
        cliente.telefono = self.controles['telefono'].text()
        cliente.localidad = self.controles['localidad'].text() or 1
        cliente.domicilio = self.controles['domicilio'].text()
        cliente.tipodocu = self.controles['tipodocu'].text() or 0
        cliente.dni = self.controles['dni'].text(
        ) if self.controles['dni'].text() else '0'
        cliente.cuit = self.controles['cuit'].text() if str(
            self.controles['cuit'].text()).replace('-', '') else '0'
        cliente.tiporesp = self.controles['tiporesp'].text() or 3
        cliente.formapago = '1'
        cliente.percepcion = self.controles['percepcion'].text() or 1
        #if self.tipo == 'M': #actualizacion
        cliente.save()
        ABM.btnAceptarClicked(self)

    def BotonesAdicionales(self):
        self.btnEmail = Boton(self.tabLista,
                              texto="Email Cliente",
                              imagen=imagen("email.png"),
                              tamanio=QSize(32, 32),
                              tooltip='Agrega email del cliente')
        self.btnEmail.setObjectName("btnEmail")
        self.horizontalLayout.addWidget(self.btnEmail)
Example #6
0
from modelos.Proveedores import Proveedor
from modelos.Tipocomprobantes import TipoComprobante
from modelos.Tipodoc import Tipodoc
from modelos.Tipoiva import Tipoiva
from modelos.Tiporesp import Tiporesp
from modelos.Unidades import Unidad

if 'drop' in sys.argv:
    CpbteRel().drop_table()
    CtaCte().drop_table()
    Detfact().drop_table()
    Cabfact().drop_table()
    CabFactProv().drop_table()
    DetFactProv().drop_table()
    EmailCliente().drop_table()
    Cliente().drop_table()
    Articulo().drop_table()
    Proveedor().drop_table()
    Unidad().drop_table()
    Grupo().drop_table()
    Impuesto().drop_table()
    Formapago().drop_table()
    Tiporesp().drop_table()
    Tipodoc().drop_table()
    Localidad().drop_table()
    Tipoiva().drop_table()
    Cajero().drop_table()
    TipoComprobante().drop_table()
    CentroCosto().drop_table()

Grupo().create_table()
Example #7
0
    def VerificaCliente(self, tipo_doc, nro_doc, nombre):
        if self.view.consultaAFIP.isChecked():
            padron = PadronAfip()
            ok = padron.ConsultarPersona(cuit=str(nro_doc).replace("-", ""))
        try:
            if tipo_doc == "80":
                cliente = Cliente.get(Cliente.tipodocu == tipo_doc,
                                      Cliente.cuit == nro_doc)
            else:
                cliente = Cliente.get(Cliente.tipodocu == tipo_doc,
                                      Cliente.dni == nro_doc)
        except DoesNotExist:
            cliente = Cliente()
            cliente.formapago = 1
            cliente.percepcion = 1
        if self.view.consultaAFIP.isChecked():
            cliente.nombre = padron.denominacion[:Cliente.nombre.max_length]
            cliente.domicilio = padron.direccion[:Cliente.nombre.max_length]
            try:
                localidad = Localidad().select().where(
                    Localidad.nombre.contains(padron.localidad)).get()
            except Localidad.DoesNotExist:
                localidad = Localidad().get_by_id(1)
            cliente.localidad = localidad
            cliente.cuit = padron.cuit if padron.cuit else ''
            cliente.dni = padron.dni if padron.dni else 0
            cliente.tipodocu = 80 if padron.tipo_doc == 80 else 0
            cliente.tiporesp = 2 if padron.tipo_doc == 80 else 0
        else:
            cliente.nombre = nombre
            cliente.domicilio = ""
            cliente.localidad = 1
            cliente.cuit = nro_doc if tipo_doc == "80" else ""
            cliente.dni = nro_doc if tipo_doc != "80" else 0
            cliente.tipodocu = nro_doc
            cliente.tiporesp = 2 if tipo_doc == "80" else 0
        cliente.save()

        return cliente