def getConfiguration(): nameFunction = "getConfiguration" global actualMode global emailAdd global password global smtp global puerto try: if (nomArchivoAux == ""): setConfigurationSendEmail(nomArchivo, nomCliente, nameClass) RWConfig.setConfigurationRWConfig(nomArchivoAux, nomClienteAux, nomClassAux) WriteLog.setConfigurationWriteLog(nomArchivoAux, nomClienteAux, nomClassAux) actualMode = RWConfig.readData("actualMode") emailAdd = RWConfig.readData("email") password = RWConfig.readData("password") smtp = RWConfig.readData("smtp") puerto = RWConfig.readData("puerto") except Exception as err: WriteLog.writeLog(nameFunction, err) return
def createFile(src, fileInside, dot, last, numLine): nameFunction = "createFile" try: file = open(src, 'r') dst = copyDAT + "v" + str(numLine) + fileInside if (isfile(dst) == True): fileCopy = open(dst, 'w') else: fileCopy = open(dst, 'w+') numLine = 0 for line in file: if numLine == 0: fileCopy.write("\n") numLine = numLine + 1 if numLine >= dot - 1 and numLine <= last: lineAux = line.replace("ML0504\0\0", "") line = lineAux.replace("ML0504 ", "") fileCopy.write(line) file.close() fileCopy.close() except Exception as err: WriteLog.writeLog(nameFunction, err) return
def datosSAT(self, clave, rfcEmisorSAT, razonSocialEmisorSAT, rfcReceptorSAT, razonSocialReceptorSAT, statusSAT, conceptoSAT, facturaInterna, subtotalSAT, ivaSAT, NumCtaPagoSAT, fechaSAT, montoSAT): nameFunction = "datosSAT" try: self.diariosTodo[clave]["rfcEmisorSAT"] = rfcEmisorSAT self.diariosTodo[clave][ "razonSocialEmisorSAT"] = razonSocialEmisorSAT self.diariosTodo[clave]["rfcReceptorSAT"] = rfcReceptorSAT self.diariosTodo[clave][ "razonSocialReceptorSAT"] = razonSocialReceptorSAT self.diariosTodo[clave]["statusSAT"] = statusSAT self.diariosTodo[clave]["conceptoSAT"] = conceptoSAT self.diariosTodo[clave]["facturaInterna"] = facturaInterna self.diariosTodo[clave]["subtotalSAT"] = subtotalSAT self.diariosTodo[clave]["ivaSAT"] = ivaSAT self.diariosTodo[clave]["NumCtaPagoSAT"] = NumCtaPagoSAT self.diariosTodo[clave]["fechaSAT"] = fechaSAT self.diariosTodo[clave]["montoSAT"] = montoSAT except Exception as err: self.wriErr.addMensaje( "error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return
def createTitle(self, nomClienteTit): nameFunction = "createTitle-" + self.reporteType try: self.createArribaTitReporte(nomClienteTit) if self.reporteType == "VentasPdf": renglonTab = "%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s" % ( 5, "Serie".center(5), 8, " Factura".center(8), 12, "Fecha".center(12), 31, "Nombre Pasajero".center(31), 12, "No. Boleto".center(12), 31, "Concepto / Ruta".center(31), 10, "Forma Pago".center(10), 12, "Tarifa".center(12), 9, "IVA".center(9), 9, "TUA".center(9), 10, "TOTAL".center(10)) elif self.reporteType == "ComisionesPdf": renglonTab = "%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s%*s" % ( 5, "Serie".center(5), 8, " Fact/NC".center(8), 12, "Fecha".center(12), 31, "Nombre Pasajero".center(31), 12, "No. Boleto".center(12), 31, "Concepto / Ruta".center(31), 6, "Prov.".center(6), 12, "Importe Com.".center(12), 6, "% Com.".center(6), 10, " Com. Neta".center(10), 9, "IVA".center(9), 10, "Com. Total".center(10)) self.createAbajoTitReporte(renglonTab) except Exception as err: WriteLog.writeLog(nameFunction, err) return
def regresaComision(self, renglon): nameFunction = "regresaComision" try: res = "PendienteConf_" + renglon["lineaAerea"] strAux = renglon["idCliente"] + renglon["lineaAerea"] if (strAux in self.dicExcepciones): res = self.dicExcepciones[strAux] ##[:-1] elif (renglon["lineaAerea"] + renglon["paisOrigen"] + renglon["paisDestino"] in self.dicExcepciones): res = self.dicExcepciones[renglon["lineaAerea"] + renglon["paisOrigen"] + renglon["paisDestino"]] elif (renglon["lineaAerea"] + "***" + renglon["paisDestino"] in self.dicExcepciones): res = self.dicExcepciones[renglon["lineaAerea"] + "***" + renglon["paisDestino"]] elif (renglon["lineaAerea"] + renglon["paisOrigen"] + "***" in self.dicExcepciones): res = self.dicExcepciones[renglon["lineaAerea"] + renglon["paisOrigen"] + "***"] elif (renglon["lineaAerea"] in self.dicExcepciones): res = self.dicExcepciones[renglon["lineaAerea"]] ##[:-1] ##if(renglon["lineaAerea"] == "DL"): ##print(renglon["lineaAerea"] + renglon["ciudadOrigen"] + renglon["ciudadDestino"]) ##input(res) except Exception as err: self.wriErr.addMensaje( "error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return res
def addToReportVentas(self): nameFunction = "addToReportVentas" try: fileName = "ReporteCXC" + self.semana + ".csv" dst = self.directorio + fileName if not os.path.exists(os.path.dirname(dst)): os.makedirs(os.path.dirname(dst)) with open(dst, 'w') as csv_file: csv_file.write("SEMANA" + ",") csv_file.write("CLAVE CLIENTE" + ",") ##csv_file.write("CLIENTE" + ",") csv_file.write("TOTAL" + ",") csv_file.write("\n") with open(dst, 'a') as csv_file: if(self.total!=0): csv_file.write(self.semana + ",") csv_file.write(self.clienteAnterior + ",") ##csv_file.write(self.nomClienteAnterior + ",") csv_file.write(str(self.total) + ",") csv_file.write("\n") except Exception as err: WriteLog.writeLog(nameFunction, err) return
def __init__(self): nameFunction = "setInfoParametros" try: ### Global Variables self.mensajesErr = {} except Exception as err: WriteLog.writeLog(nameFunction, err)
def readExcepciones(self): nameFunction = "readExcepciones" try: ##self.dicExcepciones = [] self.dicExcepciones = {} src = self.directorio + "CodClienteAeroCom.csv" try: file1 = open(src, "r", encoding="utf8", errors='ignore') except Exception as err: self.addMensaje("error", "El archivo " + src + " no existe.") WriteLog.writeLog(nameFunction, "El archivo " + src + " no existe.") for line in file1: idCliente = line.split(',')[0].zfill(6) if (idCliente != "000000"): self.dicExcepciones[ idCliente + line.split(',')[1]] = line.split(',')[2] else: self.dicExcepciones[line.split(',')[1]] = line.split( ',')[2] except Exception as err: self.addMensaje("error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return
def createSumaryComisiones(self): nameFunction = "createSumaryComisiones" try: ##148 128 if(self.renglon < 128): self.renglon = 600 self.c.showPage() self.linePage = self.linePage + 1 self.createTitle(self.nomClienteAnterior) self.c.line(460,self.renglon-2,784,self.renglon-2) self.c.setFont('Courier',12) self.renglon = self.renglon - 12 self.c.drawString(300,self.renglon, "%+*s%-*s"%(50,"Importe Comisionable: ",50, str("$ {:,.2f}".format(self.importeComisiones)).rjust(15)[:15])) self.c.setFont('Courier-Bold',12) self.c.drawString(20,self.renglon, "CONCEPTO EN FACTURA: ") self.c.setFillColorRGB(0,0,255) self.c.drawString(170,self.renglon, "COMISIONES SEMANA " + self.semana ) self.c.setFillColorRGB(0,0,0) self.c.setFont('Courier',12) self.renglon = self.renglon - 20 self.c.drawString(300,self.renglon, "%+*s%-*s"%(50,"Comision Neta: ",50, str("$ {:,.2f}".format(self.comisionNeta)).rjust(15)[:15])) self.renglon = self.renglon - 12 totalIVA = self.comisionNeta*.16 self.c.drawString(300,self.renglon, "%+*s%-*s"%(50,"Total IVA (16%): ",50, str("$ {:,.2f}".format(totalIVA)).rjust(15)[:15])) self.c.line(660,self.renglon-2,785,self.renglon-2) self.c.line(660,self.renglon-4,785,self.renglon-4) self.renglon = self.renglon - 12 self.c.setFont('Courier-Bold',20) self.renglon = self.renglon - 20 total = self.comisionNeta*1.16 self.c.drawString(55,self.renglon, "%+*s%-*s"%(50,"Comision Total: ",50, str("$ {:,.2f}".format(total)).rjust(10)[:10])) self.c.line(460,self.renglon-2,785,self.renglon-2) ##self.c.line(460,self.renglon-4,785,self.renglon-4) self.c.setFont('Courier-Bold',16) self.renglon = self.renglon - 26 self.renglon = self.renglon - 26 ##self.renglon = self.renglon - 26 self.c.setFillColorRGB(255,0,0) self.c.drawString(30,self.renglon, "¡¡¡Favor de NO ELABORAR FACTURAS de comisiones los ÚLTIMOS 2 DIAS DEL MES!!!") self.renglon = self.renglon - 20 self.c.drawString(30,self.renglon, "%*s"%(45,"¡Muchas Gracias!")) self.renglon = self.renglon - 12 self.comisionNeta = self.comisionNeta*0 self.importeComisiones = self.importeComisiones*0 except Exception as err: WriteLog.writeLog(nameFunction, err) return
def updateMessage(parteMensaje): nameFunction = "updateMessage" global cadena try: cadena = cadena + parteMensaje except Exception as err: WriteLog.writeLog(nameFunction, err) return
def createArribaTitReporte(self, nomClienteTit): nameFunction = "createArribaReporte" try: self.renglon = 600 self.c.setLineWidth(.3) self.c.setFont('Courier-Bold', 16) self.c.line(8, 602, 786, 602) self.c.line(8, 6, 786, 6) self.c.line(8, 602, 8, 6) self.c.line(786, 602, 786, 6) self.c.line(6, 604, 788, 604) self.c.line(6, 4, 788, 4) self.c.line(6, 604, 6, 4) self.c.line(788, 604, 788, 4) self.c.line(4, 606, 790, 606) self.c.line(4, 2, 790, 2) self.c.line(4, 606, 4, 2) self.c.line(790, 606, 790, 2) self.c.setFont('Courier-Bold', 14) self.c.drawString(25, self.renglon, "") self.renglon = self.renglon - 12 self.c.drawString(120, self.renglon, nomClienteTit.center(68)) ##self.renglon = self.renglon - 14 self.c.setFont('Courier-Oblique', 12) fecha = time.strftime("%d/%m/%Y") self.c.drawString(25, self.renglon, "%-*s%+*s" % (52, "CONTRAVEL", 52, fecha)) self.renglon = self.renglon - 12 ##self.c.setFont('Courier-Bold',12) ##self.c.drawString(25,renglon,"") self.renglon = self.renglon - 8 self.c.setFont('Courier-Bold', 12) self.c.drawString( 25, self.renglon, "%-*s%*s%+*s" % (14, "Reporte de " + self.reporteType[:-3], 68, self.periodo.center(60, ' '), 16, "Página: " + str(self.linePage))) self.c.line(10, self.renglon - 4, 784, self.renglon - 4) self.c.line(10, self.renglon - 8, 784, self.renglon - 8) self.renglon = self.renglon - 12 self.c.drawString(25, self.renglon, "") self.renglon = self.renglon - 12 self.c.setFont('Courier-Bold', 8.5) except Exception as err: WriteLog.writeLog(nameFunction, err) return
def extractInfoVentas(self): nameFunction = "extractInfoVentas" try: for mes in self.meses: srcVentas = self.directorio + self.ano + "-" + str(mes).zfill(2) + "/Ventas " + self.agencia + ".csv" try: file = open(srcVentas, "r", encoding="utf8", errors='ignore') except Exception as err: print("El archivo " + srcVentas + " no existe.") self.wriErr.addMensaje("error", "El archivo " + srcVentas + " no existe.") break print("Voy a empezar a leer Ventas") for line in file: if (line.split(',')[1] != "datos_factura_id_serie" and line[0:3] != ",,,"): docDiario = line.split(',')[1] + " " numeroDocDiario = line.split(',')[2] clave = docDiario + numeroDocDiario fechaVenta = line.split(',')[13] tarifaBase = float(line.split(',')[7]) iva = float(line.split(',')[8]) tua = float(line.split(',')[9]) otros = float(line.split(',')[10]) if (clave in self.diariosTodo): self.diariosTodo[clave]["status"] = "OK1" elif (clave not in self.diariosTodo and docDiario[1] == "F"): self.diariosTodo[clave] = {} self.datosVentas(clave, "", "", 0, 0, 0, 0, 0) self.diariosTodo[clave]["status"] = "SOLO EN VENTAS" ##elif(clave in self.diariosTodo): if (clave in self.diariosTodo): docDiario = docDiario + "-" + self.diariosTodo[clave]["docDiario"] fechaVenta = fechaVenta + "-" + self.diariosTodo[clave]["fechaVenta"] tarifaBase = tarifaBase + self.diariosTodo[clave]["tarifaBaseVenta"] iva = iva + self.diariosTodo[clave]["ivaVenta"] tua = tua + self.diariosTodo[clave]["tuaVenta"] otros = otros + self.diariosTodo[clave]["otrosVenta"] total = tarifaBase + iva + tua + otros ##if(self.diariosTodo[clave]["datosPolizaFechaDiario"] != ""): ##self.diariosTodo[clave]["status"] = "OK1" self.datosVentas(clave,docDiario,fechaVenta,tarifaBase,iva, tua, otros,total) file.close() except Exception as err: self.wriErr.addMensaje("info", "Renglon:" + line) self.wriErr.addMensaje("error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return
def encripta(contrasenaD): nameFunction = "encripta" res = "" key = nomCliente + "1234567891011121" try: cipher = AES.new(key[:16], AES.MODE_CFB, IV) message = contrasenaD + "_1234567890123456789012345678901234567890" res = base64.b64encode(cipher.encrypt(message[:32])) except Exception as err: WriteLog.writeLog(nameFunction, err) return res.decode(encoding="utf-8", errors="strict")
def addMensaje(self, tipo, mensaje): nameFunction = "addMensaje" ##debug, info, success, warning, error try: tam = len(self.mensajesErr) self.mensajesErr[tam] = {} self.mensajesErr[tam]["mensaje"] = mensaje self.mensajesErr[tam]["tipo"] = tipo except Exception as err: WriteLog.writeLog(nameFunction, err) return
def createSumary(self): nameFunction = "createSumary-" + self.reporteType try: if self.reporteType == "VentasPdf": self.createSumaryVentas() elif self.reporteType == "ComisionesPdf": self.createSumaryComisiones() except Exception as err: WriteLog.writeLog(nameFunction, err) return
def desencripta(contrasenaE): nameFunction = "desencripta" res = "" key = nomCliente + "1234567891011121" try: cipher1 = AES.new(key[:16], AES.MODE_CFB, IV) res1 = cipher1.decrypt(base64.b64decode(contrasenaE)) pos = str(res1).find("_") res = res1[:pos - 2] except Exception as err: WriteLog.writeLog(nameFunction, err) return res
def createZip(self, path, path1, file): nameFunction = "createZip" try: fileName = path1 + file if (os.path.isfile(fileName)): os.remove(fileName) shutil.make_archive(fileName, 'zip', path) except Exception as err: WriteLog.writeLog(nameFunction, err) return file + ".zip"
def extractInfoSAT(self): nameFunction = "extractInfoSAT" try: for mes in self.meses: srcSAT = self.directorio + self.ano + "-" + str(mes).zfill(2) + "/SAT " + self.agencia + ".csv" try: file1 = open(srcSAT, "r", encoding="utf8", errors='ignore') except Exception as err: print("El archivo " + srcSAT + " no existe.") self.wriErr.addMensaje("error", "El archivo " + srcSAT + " no existe.") break print("Voy a empezar a leer SAT" + str(mes)) idMov = 0 for line in file1: ##input(line) if (line[0:3] != ",,," and line.count(",")>50 and line.split(',')[1] != "Estado SAT"): #print("-----------------"+line) UUIDSAT = line.split(',')[10].strip().upper() ##[:-1] statusSAT = line.split(',')[1] rfcEmisorSAT = line.split(',')[12] razonSocialEmisorSAT = line.split(',')[13] rfcReceptorSAT = line.split(',')[15] razonSocialReceptorSAT = line.split(',')[16] montoSAT = float(line.split(',')[27]) fechaSAT = line.split(',')[4] facturaInterna = line.split(',')[8] + line.split(',')[9] conceptoSAT = line.split(',')[40] subtotalSAT = line.split(',')[20] ivaSAT = line.split(',')[23] NumCtaPagoSAT = line.split(',')[38] ##clave = poliza + "-" + datosPolizaFecha + "-" + str(monto) clave = UUIDSAT idMov = self.agregarSatDicc(clave, rfcEmisorSAT, razonSocialEmisorSAT, rfcReceptorSAT, razonSocialReceptorSAT, statusSAT, conceptoSAT, facturaInterna, subtotalSAT, ivaSAT, NumCtaPagoSAT, fechaSAT, montoSAT, idMov) else: if (line.count(",") > 3 and line[0:3] != ",,," and line.split(',')[1] != "Estado SAT"): self.diariosTodo[line] = {} self.diariosTodo[line]["status"] = "renglon erroneo" file1.close() ##print( self.diariosTodo) except Exception as err: print(line) self.wriErr.addMensaje("info", "Renglon:" + line) self.wriErr.addMensaje("error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return
def setConfigurationSendEmail(nomArchivo1, nomCliente1, nameClass1): nameFunction = "setConfigurationSendEmail" global nomArchivoAux global nomClienteAux global nomClassAux try: nomArchivoAux = nomArchivo1 nomClienteAux = nomCliente1 nomClassAux = nameClass1 except Exception as err: WriteLog.writeLog(nameFunction, err) return
def createAbajoTitReporte(self, renglonTab): nameFunction = "createAbajoReporte" try: self.c.drawString(10, self.renglon, renglonTab) self.c.setFont('Courier-Bold', 20) self.c.line(10, self.renglon - 4, 784, self.renglon - 4) self.c.setFont('Courier', 8.5) self.c.drawString(15, self.renglon, "") self.renglon = self.renglon - 12 except Exception as err: WriteLog.writeLog(nameFunction, err) return
def readData(etiqueta): nameFunction = "readData" res = "" try: xmldoc = minidom.parse(nomArchivo) conflist = xmldoc.getElementsByTagName('Configurations') for conf in conflist: if (conf.attributes['nomCliente'].value == nomCliente and conf.attributes['nameClass'].value == nomClass): ### For Client gets configuration variables varlist = conf.getElementsByTagName(etiqueta) res = varlist[0].attributes['value'].value except Exception as err: WriteLog.writeLog(nameFunction, err) return res
def main(): nameFunction = "main" try: #if (True==True): ###-------------- ###actualizaVariable() ###changePass("password") ###-------------- ###setConfigurationRWConfig("C:\\LOG\\NOMARCHIVOCONF", "GONPARD", "InventariosGonpard-v1") ##print(readData("email")) print(readDictionary("CATEGORIA")) except Exception as err: WriteLog.writeLog(nameFunction, err) return
def changePass(etiqueta): nameFunction = "changePass" try: passw = getpass("Password del correo: \n -->") passw1 = getpass("Confirmar Password del correo: \n -->") if (passw == passw1): if (updateData(etiqueta, encripta(passw))): print("Password Actualizado!") else: print( "\n!!!Intentalo de nuevo: favor de escribir contrasenas identicas" ) changePass(etiqueta) except Exception as err: WriteLog.writeLog(nameFunction, err) return
def datosVentas(self, clave,docDiario,fechaVenta,tarifaBaseVenta,ivaVenta, tuaVenta, otrosVenta,totalVenta): nameFunction = "datosVentas" try: self.diariosTodo[clave]["docVenta"] = docDiario self.diariosTodo[clave]["fechaVenta"] = fechaVenta self.diariosTodo[clave]["tarifaBaseVenta"] = tarifaBaseVenta self.diariosTodo[clave]["ivaVenta"] = ivaVenta self.diariosTodo[clave]["tuaVenta"] = tuaVenta self.diariosTodo[clave]["otrosVenta"] = otrosVenta self.diariosTodo[clave]["totalVenta"] = totalVenta except Exception as err: self.wriErr.addMensaje("error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return
def regresaComision(self, renglon): nameFunction = "regresaComision" try: res = "PendienteConf_" + renglon["lineaAerea"] strAux = renglon["idCliente"] + renglon["lineaAerea"] if (strAux in self.dicExcepciones): res = self.dicExcepciones[strAux] ##[:-1] elif (renglon["lineaAerea"] in self.dicExcepciones): res = self.dicExcepciones[renglon["lineaAerea"]] ##[:-1] except Exception as err: self.addMensaje("error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return res
def createZip(self): nameFunction = "createZip" try: res = "" path = self.directorio + "ReportesS" + self.semana + self.ano if(os.path.isfile(path+".zip")): os.remove(path + ".zip") shutil.make_archive(path, 'zip', path + "//") res = "ReportesS" + self.semana + self.ano +".zip" except Exception as err: WriteLog.writeLog(nameFunction, err ) return res
def regresaPais(self, ciudad): nameFunction = "regresaPais" try: pais = "OTRO" if (ciudad == ""): pais = "OTRO" elif (ciudad in self.dicMEX): pais = "MEX" elif (ciudad in self.dicEUA): pais = "EUA" elif (ciudad in self.dicCAN): pais = "CAN" except Exception as err: self.addMensaje("error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return pais
def setConfigurationRWConfig(nomArchivoAux, nomClienteAux, nomClassAux): nameFunction = "setConfigurationRWConfig" global actualMode global nomArchivo global nomCliente global nomClass try: ##WriteLog.setConfigurationWriteLog(nomArchivo, nomCliente, nameClass) nomArchivo = nomArchivoAux nomCliente = nomClienteAux nomClass = nomClassAux actualMode = readData("actualMode") except Exception as err: WriteLog.writeLog(nameFunction, err) return
def datosDiario(self, clave, cuentaDiario, polizaDiario, datosPolizaFechaDiario, sucursalDiario, docDiario, referenciaDiario, referenciaDescripcionDiario, montoDiario): nameFunction = "datosDiarioVacios" try: self.diariosTodo[clave]["cuentaDiario"] = cuentaDiario self.diariosTodo[clave]["polizaDiario"] = polizaDiario self.diariosTodo[clave]["datosPolizaFechaDiario"] = datosPolizaFechaDiario self.diariosTodo[clave]["sucursalDiario"] = sucursalDiario self.diariosTodo[clave]["docDiario"] = docDiario self.diariosTodo[clave]["referenciaDiario"] = referenciaDiario self.diariosTodo[clave]["referenciaDescripcionDiario"] = referenciaDescripcionDiario self.diariosTodo[clave]["montoDiario"] = montoDiario except Exception as err: self.wriErr.addMensaje("error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return
def main(self): nameFunction = "main" try: ### Conciliacion DiariosSAT Icaav ##self.extractInfoDiarios() ##self.extractInfoSAT() ##self.extractInfoNomina() ##self.recorreResDiariosSATIcaav() ##print(self.i) print("Gracias por la espera, tus reportes estan listos." + self.agencia) except Exception as err: self.wriErr.addMensaje("error", "Error sistema: " + nameFunction + "-" + str(err)) WriteLog.writeLog(nameFunction, err) return