Exemple #1
0
    def VerificaFactura(self, tipo_comp, pto_vta, nro_comp):
        try:
            cabecera = Cabfact.get(
                Cabfact.tipocomp == tipo_comp,
                Cabfact.numero == '{}{}'.format(pto_vta[-4:], nro_comp[-8:]))
        except DoesNotExist:
            cabecera = Cabfact()

        return cabecera
Exemple #2
0
    def onClickBtnImportar(self, *args, **kwargs):
        if not os.path.isfile(self.view.textArchivo.text()) or \
            not os.path.isfile(self.view.textArchivo_det.text()):
            Ventanas.showAlert("Sistema",
                               "Archivos no validos o no encontrados")
            return

        if self.view.checkBorra.isChecked():
            self.BorraComprobantes()

        archivo = open(self.view.textArchivo.text(), "r")
        total = total_lineas_archivo(self.view.textArchivo.text())
        avance = 1
        for linea in archivo:
            avance += 1
            QApplication.processEvents()
            self.view.avance.actualizar(avance / total * 100)
            fecha_cbte = datetime.strptime(linea[0:8], "%Y%m%d").date()
            if self.view.textDesdeFecha.toPyDate(
            ) <= fecha_cbte <= self.view.textHastaFecha.toPyDate():
                tipo_doc = linea[56:58]
                nro_doc = linea[59:78][-11:]
                nombre = linea[78:108]
                pto_vta = linea[11:16]
                nro_comp = linea[17:36]
                tipo_comp = linea[8:11]
                cliente = self.VerificaCliente(tipo_doc, nro_doc, nombre)
                cabecera = self.VerificaFactura(tipo_comp, pto_vta, nro_comp)
                cabecera.tipocomp = tipo_comp
                cabecera.cliente = cliente.idcliente
                cabecera.fecha = fecha_cbte
                cabecera.numero = '{}{}'.format(pto_vta[-4:], nro_comp[-8:])
                if tipo_comp in ['011', '012', '013']:  #comprobantes sin iva
                    cabecera.neto = float(linea[109:123]) / 100
                    cabecera.iva = 0
                    cabecera.netoa = 0
                    cabecera.netob = 0
                    cabecera.descuento = 0
                    cabecera.recargo = 0
                    cabecera.total = cabecera.neto
                    cabecera.saldo = 0

                cabecera.tipoiva = cliente.tiporesp.idtiporesp
                cabecera.formapago = 1
                cabecera.cuotapago = 0
                cabecera.percepciondgr = float(linea[184:198]) / 100
                cabecera.nombre = nombre
                cabecera.domicilio = ""
                cabecera.obs = ""
                cabecera.save()
        archivo.close()

        archivo = open(self.view.textArchivo_det.text(), "r")
        total = total_lineas_archivo(self.view.textArchivo_det.text())
        avance = 1
        for linea in archivo:
            avance += 1
            QApplication.processEvents()
            self.view.avance.actualizar(avance / total * 100)
            try:
                cabecera = Cabfact.get(
                    Cabfact.tipocomp == linea[0:3],
                    Cabfact.numero == '{}{}'.format(linea[4:8], linea[20:28]))
                try:
                    detalle = Detfact.get(
                        Detfact.idcabfact == cabecera.idcabfact,
                        Detfact.idarticulo == 1)
                except DoesNotExist:
                    detalle = Detfact()
                articulo = Articulo.get_by_id(1)
                detalle.idcabfact = cabecera.idcabfact
                detalle.idarticulo = articulo.idarticulo
                detalle.cantidad = 1
                detalle.unidad = 'UN'
                detalle.costo = 0
                detalle.precio = cabecera.neto
                detalle.tipoiva = articulo.tipoiva.codigo
                detalle.montoiva = cabecera.total / (
                    articulo.tipoiva.iva / 100 +
                    1) * articulo.tipoiva.iva / 100
                detalle.montodgr = cabecera.percepciondgr
                detalle.montomuni = 0
                detalle.detalle = articulo.nombre
                detalle.descuento = 0
                detalle.save()
            except DoesNotExist:
                pass