Esempio n. 1
0
 def BorraComprobantes(self):
     cabecera = Cabfact.select().where(
         Cabfact.fecha.between(lo=self.view.textDesdeFecha.toPyDate(),
                               hi=self.view.textHastaFecha.toPyDate()))
     total = len(cabecera)
     avance = 0
     for cab in cabecera:
         avance += 1
         QApplication.processEvents()
         self.view.avance.actualizar(avance / total * 100)
         cab.delete_instance(recursive=True)
    def CuentaCorriente(self):
        if not self.view.lineEditCliente.text():
            return
        modelo = Cabfact()
        modelo = modelo.select().where(Cabfact.cliente == self.view.lineEditCliente.text(),
                                       Cabfact.fecha.between(self.view.desdeFecha.date().toPyDate(),
                                                             self.view.hastaFecha.date().toPyDate()))
        data = []
        saldo = decimal.Decimal.from_float(0.)
        for m in modelo:
            if m.tipocomp.lado == 'H':
                debe = decimal.Decimal.from_float(0)
                haber = m.total
            else:
                haber = decimal.Decimal.from_float(0)
                debe = m.total
            if m.formapago.ctacte:
                saldo += debe - haber
            item = [m.formapago.detalle.strip(), m.tipocomp.nombre.strip(), m.numero, m.fecha, debe, haber, saldo]
            data.append(item)

        self.view.MostrarDeuda(data=data)
Esempio n. 3
0
    def Procesar(self):
        #arch = open(Constantes.ARCHIVO_CITI_VTAS + "ventas" + self.periodo.cPeriodo + ".txt", "w")
        #archDet = open(Constantes.ARCHIVO_CITI_VTAS + "alicuotas-ventas" + self.periodo.cPeriodo + ".txt", "w")
        if not os.path.isdir("cpras-vtas"):
            os.mkdir("cpras-vtas")

        data = Cabfact.select().where(
            Cabfact.fecha.between(lo=self.view.periodo.dInicio,
                                  hi=self.view.periodo.dFin))
        arch = open(
            GuardarArchivo(caption="Guardar archivo",
                           directory="cpras-vtas",
                           filter="*.TXT",
                           filename="REGINFO_CV_VENTAS_CBTE_{}".format(
                               self.view.periodo.cPeriodo)), "w")
        archDet = open(
            GuardarArchivo(caption="Guardar archivo",
                           directory="cpras-vtas",
                           filter="*.TXT",
                           filename="REGINFO_CV_VENTAS_ALICUOTAS_{}".format(
                               self.view.periodo.cPeriodo)), "w")
        if not arch or not archDet:
            return

        anchos = [
            8, 3, 5, 20, 20, 2, 20, 30, 15, 15, 15, 15, 15, 15, 15, 15, 3, 10,
            1, 1, 15, 8
        ]
        anchosDet = [3, 5, 20, 15, 4, 15]

        totalData = len(data)
        cant = 0.0
        for d in data:
            QApplication.processEvents()
            cant += 1.
            self.view.avance.actualizar(cant / totalData * 100.)
            if d.tipocomp.exporta:
                fecha = FechaMysql(d.fecha)
                tipocomp = str(d.tipocomp.codigo).zfill(3)
                ptovta = d.numero[:4].zfill(5)
                numero = d.numero[4:].zfill(20)
                if d.cliente.tiporesp.idtiporesp == 3:  #consumidor final
                    if d.total > 1000:
                        tipodoc = '96'
                        ndoc = str(d.cliente.dni).zfill(
                            20) if d.cliente.dni != 0 else '11111111'.zfill(20)
                    else:
                        tipodoc = '99' if d.cliente.dni == 0 or d.cliente.dni == '11111111' else '96'
                        ndoc = ''.zfill(
                            20) if d.cliente.dni == '11111111' else str(
                                d.cliente.dni).zfill(20)
                else:
                    tipodoc = '80'
                    ndoc = d.cliente.cuit.replace('-', '').zfill(20)
                nombre = Normaliza(d.nombre[:30])
                total = '{:.{prec}f}'.format(d.total,
                                             prec=2).replace('.', '').zfill(15)
                nogravado, nocategorizado, exentas, percepcion, municipal, impinterno, otros = \
                    ''.zfill(15), ''.zfill(15), ''.zfill(15), ''.zfill(15), ''.zfill(15),''.zfill(15),''.zfill(15)
                percepciondgr = '{:.{prec}f}'.format(
                    d.percepciondgr, prec=2).replace('.', '').zfill(15)
                moneda = 'PES'
                cambio = '1000000'.zfill(10)
                if d.netoa != 0 and d.netob != 0:
                    cantalic = '2'
                elif d.netoa != 0 and d.netob == 0:
                    cantalic = '1'
                elif d.netoa == 0 and d.netob != 0:
                    cantalic = '1'
                else:
                    cantalic = '1'

                if d.netoa == 0 and d.netob == 0:
                    codop = 'A'
                else:
                    codop = '0'
                vencepago = ''.zfill(8)
                items = [
                    fecha, tipocomp, ptovta, numero, numero, tipodoc, ndoc,
                    nombre, total, nogravado, nocategorizado, exentas,
                    percepcion, percepciondgr, municipal, impinterno, moneda,
                    cambio, cantalic, codop, otros, vencepago
                ]
                arch.write("".join("%*s" % i for i in zip(anchos, items)))
                arch.write("\n")

                if d.netoa != 0:
                    alicuota = Constantes.ALICUOTA_AFIP[21]
                    impuesto = '{:.{prec}f}'.format(round(float(d.netoa) * 21. / 100,2), prec=2)\
                        .replace(".","").zfill(15)
                    items = [
                        tipocomp, ptovta, numero,
                        str(d.netoa).replace(".", "").zfill(15), alicuota,
                        impuesto
                    ]
                    archDet.write("".join("%*s" % i
                                          for i in zip(anchosDet, items)))
                    archDet.write("\n")

                if d.netob != 0:
                    alicuota = Constantes.ALICUOTA_AFIP[10.5]
                    impuesto = '{:.{prec}f}'.format(round(float(d.netob) * 10.5 / 100,2), prec=2)\
                        .replace(".","").zfill(15)
                    items = [
                        tipocomp, ptovta, numero,
                        str(d.netob).replace(".", "").zfill(15), alicuota,
                        impuesto
                    ]
                    archDet.write("".join("%*s" % i
                                          for i in zip(anchosDet, items)))
                    archDet.write("\n")

                if d.netoa == 0 and d.netob == 0:
                    alicuota = Constantes.ALICUOTA_AFIP[0]
                    impuesto = '0'.zfill(15)
                    items = [
                        tipocomp, ptovta, numero,
                        str(d.netob).replace(".", "").zfill(15), alicuota,
                        impuesto
                    ]
                    archDet.write("".join("%*s" % i
                                          for i in zip(anchosDet, items)))
                    archDet.write("\n")

        arch.close()
        archDet.close()
        Ventanas.showAlert("Sistema", "Proceso finalizado")
        self.view.close()