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
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