Exemple #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()
Exemple #2
0
    def GrabaFE(self, *args, **kwargs):
        self.view.layoutFactura.AssignNumero()
        cabfact = Cabfact()
        cabfact.tipocomp = self.tipo_cpte
        cabfact.cliente = self.cliente.idcliente
        cabfact.fecha = self.view.lineEditFecha.date().toPyDate()
        cabfact.numero = self.view.layoutFactura.numero
        cabfact.neto = sum([i for i in self.netos.values()])
        cabfact.netoa = self.netos[21]
        cabfact.netob = self.netos[10.5]
        cabfact.iva = self.view.lineEditTotalIVA.value()
        cabfact.total = self.view.lineEditTotal.value()
        if self.view.cboFormaPago.text() == 'Contado':
            cabfact.saldo = 0.00
        else:
            cabfact.saldo = self.view.lineEditTotal.value()
        cabfact.tipoiva = self.cliente.tiporesp.idtiporesp
        cabfact.cajero = 1  #por defecto cajero
        cabfact.formapago = 1 if self.view.cboFormaPago.text(
        ) == 'Contado' else 2
        cabfact.percepciondgr = self.view.lineEditTributos.value()
        cabfact.nombre = self.view.lblNombreCliente.text()
        cabfact.domicilio = self.view.lineEditDomicilio.text()
        cabfact.cae = self.view.lineditCAE.text()
        cabfact.venccae = self.view.fechaVencCAE.date().toPyDate()
        cabfact.concepto = self.concepto
        cabfact.desde = self.view.fechaDesde.date().toPyDate()
        cabfact.hasta = self.view.fechaHasta.date().toPyDate()
        cabfact.save()

        for x in range(self.view.gridFactura.rowCount()):
            codigo = self.view.gridFactura.ObtenerItem(fila=x, col='Codigo')
            cantidad = float(
                self.view.gridFactura.ObtenerItem(fila=x, col='Cant.'))
            importe = float(
                self.view.gridFactura.ObtenerItem(fila=x, col='SubTotal'))
            iva = float(self.view.gridFactura.ObtenerItem(fila=x, col='IVA'))
            detalle = self.view.gridFactura.ObtenerItem(fila=x, col='Detalle')
            try:
                articulo = Articulo.get_by_id(codigo)
                detfact = Detfact()
                detfact.idcabfact = cabfact.idcabfact
                detfact.idarticulo = codigo
                detfact.cantidad = cantidad
                detfact.unidad = articulo.unidad
                detfact.costo = articulo.costo

                if LeerIni(clave='cat_iva', key='WSFEv1') == 1:
                    if self.tipo_cpte in [6, 7, 8]:
                        detfact.precio = importe / cantidad
                    else:
                        detfact.precio = (importe +
                                          importe * iva / 100) / cantidad
                else:
                    detfact.precio = importe / cantidad
                try:
                    ti = Tipoiva.get(Tipoiva.iva == iva)
                    detfact.tipoiva = ti.codigo
                except Tipoiva.DoesNotExist:
                    detfact.tipoiva = articulo.tipoiva.codigo
                if self.tipo_cpte in [6, 7, 8]:
                    detfact.montoiva = importe * iva / 100
                else:
                    neto = round(importe / ((iva / 100) + 1), 3)
                    detfact.montoiva = neto * iva / 100
                if self.view.lineEditTributos.value() > 0:
                    detfact.montodgr = importe * float(
                        self.cliente.percepcion.porcentaje) / 100
                else:
                    detfact.montodgr = 0.00
                detfact.montomuni = 0.00
                detfact.descad = detalle
                detfact.detalle = detalle[:40]
                detfact.descuento = 0.00
                detfact.save()
            except peewee.DoesNotExist:
                pass
        # Agregar comprobantes asociados(si es una NC / ND):
        if str(self.view.cboComprobante.text()).find('credito'):
            cpbte = CpbteRel()
            cpbte.idcabfact = cabfact.idcabfact
            if self.tipo_cpte == 13:
                cpbte.idtipocpbte = 11
            else:
                if self.cliente.tiporesp.idtiporesp == 2:  # resp inscripto
                    cpbte.idtipocpbte = 1
                else:
                    cpbte.idtipocpbte = 6
            cpbte.numero = self.view.layoutCpbteRelacionado.numero
            cpbte.save()
        self.ImprimeFactura(idcabecera=cabfact.idcabfact)