def DescargarConstancia(self, cuit='', filename='', *args, **kwargs): padron = PadronAFIP() if LeerIni(clave='h**o') == 'S': padron.Conectar() ok = padron.DescargarConstancia(cuit, filename) filename = LeerIni("iniciosistema") + filename AbrirArchivo(filename)
def EnviaCorreo(self, *args, **kwargs): self.ExportaExcel(mostrar=False) if not self.cArchivoGenerado: return email_contador = LeerIni('email_contador') text, ok = QInputDialog.getText( self.view, 'Sistema', 'Ingrese el mail destinatario:', text=email_contador if email_contador else '') if ok: GrabarIni(clave='email_contador', key='param', valor=str(text)) pyemail = PyEmail() remitente = '*****@*****.**' destinatario = str(text).strip() mensaje = "Enviado desde mi Software de Gestion desarrollado por http://www.servinlgsm.com.ar" archivo = self.cArchivoGenerado motivo = "Se envia informe de ventas de {}".format( LeerIni(clave='empresa', key='FACTURA')) servidor = ParamSist.ObtenerParametro("SERVER_SMTP") clave = ParamSist.ObtenerParametro("CLAVE_SMTP") usuario = ParamSist.ObtenerParametro("USUARIO_SMTP") puerto = ParamSist.ObtenerParametro("PUERTO_SMTP") or 587 pyemail.Conectar(servidor=servidor, usuario=usuario, clave=clave, puerto=puerto) ok = pyemail.Enviar(remitente, motivo, destinatario, mensaje, archivo) if not ok: Ventanas.showAlert("Sistema", pyemail.Excepcion)
def ConstatarComprobantes(self, *args, **kwargs): cbte_modo = kwargs['cbte_modo'] # modalidad de emision: CAI, CAE, CAEA cuit_emisor = LeerIni(clave='cuit', key='WSFEv1') # proveedor pto_vta = kwargs['pto_vta'] # punto de venta habilitado en AFIP cbte_tipo = kwargs[ 'cbte_tipo'] # 1: factura A (ver tabla de parametros) cbte_nro = kwargs['cbte_nro'] # numero de factura cbte_fch = kwargs['cbte_fch'] # fecha en formato aaaammdd imp_total = kwargs['imp_total'] # importe total cod_autorizacion = kwargs[ 'cod_autorizacion'] # numero de CAI, CAE o CAEA doc_tipo_receptor = kwargs[ 'doc_tipo_receptor'] # CUIT (obligatorio Facturas A o M) doc_nro_receptor = kwargs[ 'doc_nro_receptor'] # numero de CUIT del cliente wscdc = WSCDC() ta = self.Autenticar() wscdc.SetTicketAcceso(ta_string=ta) wscdc.SetParametros(cuit=LeerIni(clave='cuit', key='WSFEv1'), token=self.Token, sign=self.Sign) ok = wscdc.ConstatarComprobante(cbte_modo, cuit_emisor, pto_vta, cbte_tipo, cbte_nro, cbte_fch, imp_total, cod_autorizacion, doc_tipo_receptor, doc_nro_receptor) if not ok: Ventanas.showAlert(LeerIni('nombre_sistema'), "ERROR: {}".format(wscdc.ErrMsg)) return ok
def Validacion(self): retorno = True if not self.view.validaCliente.text(): Ventanas.showAlert( LeerIni('nombre_sistema'), "ERROR: No se ha especificado un cliente valido") retorno = False for x in range(self.view.gridFactura.rowCount()): iva = float(self.view.gridFactura.ObtenerItem(fila=x, col='IVA')) if str(iva) not in FEv1().TASA_IVA: Ventanas.showAlert( LeerIni('nombre_sistema'), "Error el item {} no tiene un IVA valido".format(x + 1)) retorno = False codigo = self.view.gridFactura.ObtenerItem(fila=x, col='Codigo') try: articulo = Articulo.get_by_id(codigo) except Articulo.DoesNotExist: Ventanas.showAlert( LeerIni('nombre_sistema'), "Error el item {} tiene un articulo no valido".format(x + 1)) retorno = False return retorno
def CargaDatos(self): self.view.controles['cuit'].setText(LeerIni(clave='cuit', key='WSFEv1')) self.view.controles['empresa'].setText( LeerIni(clave='empresa', key='FACTURA')) self.view.controles['nombre'].setText( LeerIni(clave='empresa', key='FACTURA'))
def onClickAgregaCliente(self): padron = PadronAfip() ok = padron.ConsultarPersona( cuit=str(self.view.textCUIT.text()).replace("-", "")) if padron.errores: Ventanas.showAlert(LeerIni("nombre_sistema"), "Error al leer informacion en la AFIP") else: cliente = Cliente() cliente.nombre = padron.denominacion[:30] cliente.domicilio = padron.direccion[:30] try: localidad = Localidad().select().where( Localidad.nombre.contains(padron.localidad)).get() except Localidad.DoesNotExist: localidad = Localidad().get_by_id(1) cliente.localidad = localidad cliente.cuit = padron.cuit cliente.dni = padron.dni cliente.tipodocu = 80 if padron.tipo_doc == 80 else 0 cliente.tiporesp = 2 if padron.tipo_doc == 80 else 0 cliente.formapago = 1 cliente.percepcion = 1 cliente.save() Ventanas.showAlert( LeerIni("nombre_sistema"), "Verifique si los datos cargados son los correctos")
def UltimoComprobante(self, tipo=1, ptovta=1, *args, **kwargs): wsdl = self.WSDL print("WSDL {}".format(wsdl)) cache = None proxy = "" wrapper = "" # "pycurl" # cacert = True # geotrust.crt" cacert = LeerIni('iniciosistema') + LeerIni(clave='cacert', key='WSFEv1') wrapper = "" # if int(platform.release()) < 10: # cacert = None # else: # cacert = LeerIni('iniciosistema') + LeerIni(clave='cacert', key='WSFEv1') # cacert = LeerIni('iniciosistema') + LeerIni(clave='cacert', key='WSFEv1') # cacert = None ok = self.Conectar(cache, wsdl, proxy, wrapper, cacert) if not ok: raise RuntimeError(self.Excepcion) ta = self.Autenticar() self.SetTicketAcceso(ta) self.Cuit = LeerIni(clave="cuit", key='WSFEv1') ultimo = self.CompUltimoAutorizado(tipo_cbte=tipo, punto_vta=ptovta) return ultimo
def __init__(self): super(Main, self).__init__() if LeerIni("base") == "sqlite": #pongo todo en un try para que en caso de que no exista aun la base de datos continue de todas formas try: copyfile("sistema.db", "sistema-res.db") except: pass self.view = MainView() self.view.initUi() self.conectarWidgets() self.model = ModeloBase() self.model.getDb() if not LeerIni("ultima_copia"): GrabarIni(clave='ultima_copia', key='param', valor='00000000') ult = LeerIni("ultima_copia") if LeerIni("base") == "sqlite": if ult < FechaMysql(): resguardo = ResguardoController() resguardo.Cargar("sistema-res.db") resguardo.Cargar("sistema.ini") GrabarIni(clave='ultima_copia', key='param', valor=FechaMysql()) self.CreaTablas() self.Migraciones() self.initUi()
def onClickBtnConstata(self): WSCDC = WSConstComp() self.cbte_modo = self.view.cboModoCpte.valor() if self.cbte_modo in ['CF']: Ventanas.showAlert( LeerIni('nombre_sistema'), "No se puede constatar facturas emitidas con controlador fiscal" ) proveedor = Proveedor.get_by_id(self.view.textProveedor.text()) self.cuit_emisor = proveedor.cuit.replace("-", "") # proveedor self.pto_vta = str(self.view.textFactura.lineEditPtoVta.text() ) # punto de venta habilitado en AFIP self.cbte_tipo = int(self.view.textTipoComp.text() ) # 1: factura A (ver tabla de parametros) self.cbte_nro = str( self.view.textFactura.lineEditNumero.text()) # numero de factura self.cbte_fch = FechaMysql(self.view.fechaEmision.date().toPyDate() ) # fecha en formato aaaammdd self.cod_autorizacion = str( self.view.textCAE.text()) # numero de CAI, CAE o CAEA # if self.cbte_modo == 'CAI': # self.imp_total = "0" # importe total # self.doc_tipo_receptor = "" # CUIT (obligatorio Facturas A o M) # self.doc_nro_receptor = "" # numero de CUIT del cliente # else: self.imp_total = str(self.view.textTotal.text()) # importe total self.doc_tipo_receptor = "80" # CUIT (obligatorio Facturas A o M) self.doc_nro_receptor = LeerIni( clave='cuit', key='WSFEv1') # numero de CUIT del cliente ok = WSCDC.Comprobar(cbte_modo=self.cbte_modo, cuit_emisor=self.cuit_emisor, pto_vta=self.pto_vta, cbte_tipo=self.cbte_tipo, cbte_nro=self.cbte_nro, cbte_fch=self.cbte_fch, imp_total=self.imp_total, cod_autorizacion=self.cod_autorizacion, doc_tipo_receptor=self.doc_tipo_receptor, doc_nro_receptor=self.doc_nro_receptor) if WSCDC.Resultado == "R": detalle = "Rechazado" elif WSCDC.Resultado == "A": detalle = "Aprobado" else: detalle = "Observado" self.estado = detalle self.obs = WSCDC.Obs.encode('utf-8') detalle += WSCDC.Obs if WSCDC.Resultado == "R": detalle = WSCDC.ErrMsg self.Imprimir()
def ConsultarCAE(self, tipocbte, puntoventa, numero): self.CAE = "" self.Cuit = LeerIni(clave="cuit", key='WSFEv1') ta = self.Autenticar() self.SetTicketAcceso(ta_string=ta) if LeerIni(clave='h**o') == 'S': # homologacion self.Conectar() else: ok = self.Conectar("", self.WSDL) #Producción print("Tipo comprobante {}".format(tipocbte)) caeconsultado = self.CompConsultar(tipo_cbte=tipocbte, punto_vta=puntoventa, cbte_nro=numero)
def Cargar(self, filename, callback=None): try: self.connect("ftp.servinlgsm.com.ar") self.login("*****@*****.**", "Factura2019") folderName = LeerIni("empresa", key='FACTURA') if not folderName in self.nlst(): self.mkd(LeerIni("empresa", key='FACTURA')) self.cwd(LeerIni("empresa", key='FACTURA')) with open(filename, "rb") as f: self.storbinary("STOR " + filename, f, callback=self.handle, blocksize=1024) except Exception as e: print("Error no se pudo copiar {}".format(filename))
def CargaDatosCliente(self, *args, **kwargs): if not self.view.validaCliente.text(): return try: self.cliente = Cliente.select().where(Cliente.idcliente == self.view.validaCliente.text()).get() cliente = self.cliente self.view.lineEditDomicilio.setText(cliente.domicilio) if cliente.tiporesp.idtiporesp in [1, 2, 4]: #monotributo o resp inscripto self.view.lineEditDocumento.setText(cliente.cuit.replace('-','')) self.view.lineEditDocumento.setInputMask("99-99999999-9") if ParamSist.ObtenerParametro("EMITE_FCE") == "S": wsfecred = WsFECred() obligado, minimo = wsfecred.ConsultarMontoObligado(cliente.cuit.replace('-',''), LeerIni('cuit', key='WSFEv1')) if obligado and not self.informo: Ventanas.showAlert("Sistema", "Se debe emitir FCE al cliente desde un monto de {}".format(minimo)) self.informo = True else: self.view.lineEditDocumento.setText(str(cliente.dni)) self.view.lineEditDocumento.setInputMask("99999999") if int(LeerIni(clave='cat_iva', key='WSFEv1')) == 1: #si es Resp insc el contribuyente veo si teiene que emitira A o B if cliente.tiporesp.idtiporesp == 2: #resp inscripto self.view.cboComprobante.setText('Factura A') else: self.view.cboComprobante.setText('Factura B') else: self.view.cboComprobante.setText('Factura C') self.view.cboTipoIVA.setText(cliente.tiporesp.nombre) self.ObtieneNumeroFactura() except Cliente.DoesNotExist: Ventanas.showAlert("Sistema", "Cliente no encontrado en el sistema")
def inicio(): initialize_logger(LeerIni("iniciosistema")) # logging.basicConfig(filename=join(LeerIni("iniciosistema"), 'errors.log'), level=logging.DEBUG, # format='%(asctime)s %(message)s', # datefmt='%m/%d/%Y %I:%M:%S %p') if LeerIni(clave='h**o') == 'S': print("Sistema en modo homologacion") else: print("Sistema en modo produccion") # Instancia para iniciar una aplicación args = [] #args = ['', '-style', 'Cleanlooks'] app = QApplication(args) ex = Main() ex.run() sys.exit(app.exec_())
def tabArticuloUI(self): layoutppal = QVBoxLayout() self.gridFactura = Grilla(tamanio=10) cabeceras = [ 'Cant.', 'Codigo', 'Detalle', 'Unitario', 'IVA', 'SubTotal' ] self.gridFactura.ArmaCabeceras(cabeceras=cabeceras) self.gridFactura.enabled = True if int(LeerIni(clave='cat_iva', key='WSFEv1')) != 6: self.gridFactura.columnasHabilitadas = [0, 1, 2, 3, 4] else: self.gridFactura.columnasHabilitadas = [0, 1, 2, 3] item = [1, 1, '', 0, 21, 0] self.gridFactura.AgregaItem(items=item) layoutppal.addWidget(self.gridFactura) layoutBotones = QHBoxLayout() self.botonAgregaArt = Boton(texto="Agrega", imagen=imagen("new.png"), tamanio=QSize(16, 16), autodefault=False) self.botonBorrarArt = Boton(texto="Borrar", imagen=imagen("delete.png"), tamanio=QSize(16, 16), autodefault=False) layoutBotones.addWidget(self.botonAgregaArt) layoutBotones.addWidget(self.botonBorrarArt) layoutppal.addLayout(layoutBotones) self.tabArticulo.setLayout(layoutppal)
def __init__(self, *args, **kwargs): kwargs['texto'] = kwargs[ 'textoBoton'] if 'textoBoton' in kwargs else '&Cerrar' kwargs['imagen'] = LeerIni("iniciosistema") + 'imagenes/log-out.png' kwargs['tamanio'] = QSize(32, 32) Boton.__init__(self, *args, **kwargs) self.setDefault(False)
def Imprimir(self): pdf = PDFConstatatacion() pdf.estado = self.estado pdf.obs = self.obs pdf.cbte_modo = self.cbte_modo pdf.add_page() self.cbte_fch = self.view.fechaEmision.date().toPyDate().strftime( "%d/%m/%Y") pdf.imprimedetalle(cbte_modo=self.cbte_modo, cuit_emisor=self.cuit_emisor, pto_vta=self.pto_vta, cbte_tipo=self.cbte_tipo, cbte_nro=self.cbte_nro, cbte_fch=self.cbte_fch, imp_total=self.imp_total, cod_autorizacion=self.cod_autorizacion, doc_tipo_receptor=self.doc_tipo_receptor, doc_nro_receptor=self.doc_nro_receptor) if not os.path.isdir("tmp"): os.mkdir("tmp") filename = LeerIni('iniciosistema') + "tmp/constatacion{}.pdf".format( self.cuit_emisor.strip()) pdf.output(name=filename) AbrirArchivo(filename) padron = PadronAfip() cuit = self.doc_nro_receptor.replace("-", "") filename = "tmp/constancia{}.pdf".format(cuit) padron.DescargarConstancia(cuit=cuit, filename=filename)
def onClickConsulta(self): padron = PadronAfip() ok = padron.ConsultarPersona( cuit=str(self.view.textCUIT.text()).replace("-", "")) self.view.gridDatos.setRowCount(0) if padron.errores: error = padron.LeerError() item = ["Error", error] self.view.gridDatos.AgregaItem(item) Ventanas.showAlert(LeerIni("nombre_sistema"), "Error al leer informacion en la AFIP") else: item = ["Denominacion", padron.denominacion] self.view.gridDatos.AgregaItem(item) item = [ "Tipo", "{} {} {}".format(padron.tipo_persona, padron.tipo_doc, padron.dni) ] self.view.gridDatos.AgregaItem(item) item = ["Estado", padron.estado] self.view.gridDatos.AgregaItem(item) item = ["Direccion", padron.direccion] self.view.gridDatos.AgregaItem(item) item = ["Localidad", padron.localidad] self.view.gridDatos.AgregaItem(item) item = ["Provincia", padron.provincia] self.view.gridDatos.AgregaItem(item) item = ["Codigo Postal", padron.cod_postal] self.view.gridDatos.AgregaItem(item)
def onClickBtnFactura(self): menu = QMenu(self.view) emisionAction = menu.addAction(u"Emision de Factura") reimprimeAction = menu.addAction(u"Re imprime factura") ivaventasAction = menu.addAction(u"IVA Ventas") reciboAction = menu.addAction(u"Emision de recibo") citiAction = menu.addAction(u"RG 3685 AFIP") menu.addAction(u"Volver") action = menu.exec_(QCursor.pos()) if action == emisionAction: if LeerIni(key='FACTURA', clave='venta') == 'grilla': factura = FacturaController() else: factura = FacturaCodBarraController() factura.view.exec_() elif action == reimprimeAction: ventana = ReImprimeFacturaController() ventana.view.exec_() elif action == ivaventasAction: ventana = IVAVentasController() ventana.view.exec_() elif action == reciboAction: ventana = EmiteReciboController() ventana.view.exec_() elif action == citiAction: ventana = RG3685VentasController() ventana.view.exec_()
def EstadoServidores(self): ta = self.Autenticar() self.Dummy() Ventanas.showAlert(LeerIni('nombre_sistema'), "appserver status {} dbserver status {} authserver status {}".format( self.AppServerStatus, self.DbServerStatus, self.AuthServerStatus ))
def SeleccionaConcepto(self): if self.view.controles['concepto'].text() not in [ str(FEv1.SERVICIOS), str(FEv1.PRODUCTOYSERVICIOS), str(FEv1.PRODUCTOS) ]: Ventanas.showAlert( LeerIni('nombre_sistema'), 'Concepto no valido. Unicamente 1 (Productos), 2 (Servicios)')
def initUi(self): self.setGeometry(150, 150, 500, 150) self.setWindowTitle('Factura Electronica') self.layoutPpal = QVBoxLayout(self) self.lblTitulo = EtiquetaTitulo(texto="{}-{}".format( LeerIni(clave="nombre_sistema"), DeCodifica(LeerIni(clave='EMPRESA', key='FACTURA')))) self.layoutPpal.addWidget(self.lblTitulo) self.groupBoxBotones = Agrupacion() self.layoutBotones = QHBoxLayout() self.btnClientes = BotonMain(texto='&Clientes', imagen='imagenes/if_kuser_1400.png') self.layoutBotones.addWidget(self.btnClientes) self.btnFactura = BotonMain(texto='&Facturacion', imagen='imagenes/if_bill_416404.png') self.layoutBotones.addWidget(self.btnFactura) self.btnArticulo = BotonMain( texto='&Articulos', imagen='imagenes/if_product-sales-report_49607.png') self.layoutBotones.addWidget(self.btnArticulo) self.btnAFIP = BotonMain(texto='A&FIP', imagen='imagenes/logoafipfondoblanco.png') self.layoutBotones.addWidget(self.btnAFIP) self.btnCompras = BotonMain(texto='Compras', imagen='imagenes/compras.png') self.layoutBotones.addWidget(self.btnCompras) self.btnSeteo = BotonMain(texto='&Configuracion', imagen='imagenes/if_Settings-2_379349.png') self.layoutBotones.addWidget(self.btnSeteo) self.btnSalir = BotonMain(texto='&Salir', imagen='imagenes/if_Log Out_27856.png') self.layoutBotones.addWidget(self.btnSalir) # self.layoutPpal.addLayout(self.layoutBotones) self.groupBoxBotones.setLayout(self.layoutBotones) self.layoutPpal.addWidget(self.groupBoxBotones)
def ObtieneNumeroFactura(self): self.view.layoutFactura.lineEditPtoVta.setText(LeerIni(clave='pto_vta', key='WSFEv1').zfill(4)) # tipos = Tipocomprobantes.ComboTipoComp(tiporesp=int(LeerIni(clave='cat_iva', key='WSFEv1'))) # tipo_cpte = [k for (k, v) in tipos.valores.iteritems() if v == self.view.cboComprobante.text()][0] tipo_cpte = self.view.cboComprobante.text() nro = FEv1().UltimoComprobante(tipo=tipo_cpte, ptovta=self.view.layoutFactura.lineEditPtoVta.text()) self.tipo_cpte = tipo_cpte self.view.layoutFactura.lineEditNumero.setText(str(int(nro)+1).zfill(8)) self.SumaTodo()
def Comprobar(self, *args, **kwargs): cbte_modo = kwargs['cbte_modo'] # modalidad de emision: CAI, CAE, CAEA cuit_emisor = kwargs['cuit_emisor'].replace('-', '') # proveedor pto_vta = kwargs['pto_vta'] # punto de venta habilitado en AFIP cbte_tipo = kwargs[ 'cbte_tipo'] # 1: factura A (ver tabla de parametros) cbte_nro = kwargs['cbte_nro'] # numero de factura cbte_fch = kwargs['cbte_fch'] # fecha en formato aaaammdd cod_autorizacion = kwargs[ 'cod_autorizacion'] # numero de CAI, CAE o CAEA # if cbte_modo == 'CAI': # imp_total = "0" # importe total # doc_tipo_receptor = "" # CUIT (obligatorio Facturas A o M) # doc_nro_receptor = "" # numero de CUIT del cliente # else: imp_total = kwargs['imp_total'] # importe total doc_tipo_receptor = kwargs[ 'doc_tipo_receptor'] # CUIT (obligatorio Facturas A o M) doc_nro_receptor = kwargs['doc_nro_receptor'].replace( '-', '') # numero de CUIT del cliente wsfev1 = FEv1() ta = wsfev1.Autenticar(service='wscdc') self.SetTicketAcceso(ta_string=ta) self.Cuit = LeerIni(clave='cuit', key='WSCDC') #cuit de la empresa/persona if LeerIni(clave='h**o') == 'N': self.WSDL = LeerIni(clave='url_prod', key='WSCDC') self.Conectar("", self.WSDL) else: self.Conectar() # if cbte_modo == 'CAI': # ok = self.ConstatarComprobante(cbte_modo, cuit_emisor, pto_vta, cbte_tipo, # cbte_nro, cbte_fch, imp_total, cod_autorizacion) # else: ok = self.ConstatarComprobante(cbte_modo, cuit_emisor, pto_vta, cbte_tipo, cbte_nro, cbte_fch, imp_total, cod_autorizacion, doc_tipo_receptor, doc_nro_receptor) return ok
def ConsultarPersona(self, cuit=''): self.H**O = True if LeerIni(clave='h**o') == 'S' else False wsfev1 = FEv1() ta = wsfev1.Autenticar(service='ws_sr_padron_a5') # ta = wsfev1.Autenticar(service='ws_sr_padron_a13') self.SetTicketAcceso(ta_string=ta) self.Cuit = LeerIni(clave='cuit', key='WSFEv1') #cuit de la empresa/persona if LeerIni(clave='h**o') == 'N': self.WSDL = "https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA5?wsdl" # self.WSDL = "https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA13?wsdl" self.Conectar("", self.WSDL) else: self.Conectar() ok = self.Consultar(id_persona=cuit) # ok = self.Consultar(id_persona=23347203) return ok
def EnviaCorreo(self, *args, **kwargs): self.ExportaExcel(mostrar=False) if not self.cArchivoGenerado: return email_contador = LeerIni('email_contador') text, ok = QInputDialog.getText( self.view, 'Sistema', 'Ingrese el mail destinatario:', text=email_contador if email_contador else '') if ok: GrabarIni(clave='email_contador', key='param', valor=str(text)) destinatario = str(text).strip() archivo = self.cArchivoGenerado mensaje = "Enviado desde mi Software de Gestion desarrollado por http://www.servinlgsm.com.ar \n\n" \ "No responder este email" motivo = "Se envia informe de ventas de {}".format( LeerIni(clave='empresa', key='FACTURA')) servidor = ParamSist.ObtenerParametro("SERVER_SMTP") clave = ParamSist.ObtenerParametro("CLAVE_SMTP") usuario = ParamSist.ObtenerParametro("USUARIO_SMTP") puerto = ParamSist.ObtenerParametro("PUERTO_SMTP") or 587 responder = ParamSist.ObtenerParametro("RESPONDER") # envia_correo(from_address='', to_address='', message='', subject='', password_email='', to_cc='', # smtp='', smtp_port=587, files=''): ok = envia_correo(from_address=responder, to_address=destinatario, message=mensaje, subject=motivo, password_email=clave, smtp_port=puerto, smtp_server=servidor, files=archivo) if not ok: Ventanas.showAlert("Sistema", "Ha ocurrido un error al enviar el correo") else: Ventanas.showAlert("Sistema", "Archivo de ventas enviado correctamente")
def text(self): if LeerIni('base') == 'mysql': if self.isChecked(): return b'\01' else: return b'\00' else: if self.isChecked(): return True else: return False
def CargaDatos(self): if not self.modelo: Ventanas.showAlert( LeerIni('nombre_sistema'), "No se ha establecido el modelo para la busqueda") return textoBusqueda = self.lineEdit.text() rows = self.modelo.select().dicts() if self.condiciones: for c in self.condiciones: rows = rows.where(c) if textoBusqueda: rows = rows.where(self.campoBusqueda.contains(textoBusqueda)) self.tableView.setColumnCount(len(self.campos)) self.tableView.setRowCount(len(rows)) logging.info("SQL de condiciones de busqueda {}".format( self.condiciones)) #self.tableView.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) for col in range(0, len(self.campos)): if self.campos[col] == self.campoRetorno.column_name: self.colRetorno = col if self.campos[col] == self.campoBusqueda.column_name: self.colBusqueda = col self.tableView.setHorizontalHeaderItem( col, QTableWidgetItem(self.campos[col].capitalize())) fila = 0 for row in rows: for col in range(0, len(self.campos)): if isinstance(row[self.campos[col]], ( int, decimal.Decimal, )): item = QTableWidgetItem(str(row[self.campos[col]])) else: item = QTableWidgetItem( QTableWidgetItem(row[self.campos[col]])) item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) self.tableView.setItem(fila, col, item) fila += 1 self.tableView.resizeRowsToContents() self.tableView.resizeColumnsToContents()
def Autenticar(self, *args, **kwargs): if 'service' in kwargs: service = kwargs['service'] else: service = 'wsfe' wsaa = WSAA() archivo = ubicacion_sistema() + service + '-ta.xml' try: file = open(archivo, "r") ta = file.read() file.close() except: ta = '' if ta == '': #si no existe el archivo se solicita un ticket solicitar = True else: ok = wsaa.AnalizarXml(ta) expiracion = wsaa.ObtenerTagXml("expirationTime") solicitar = wsaa.Expirado(expiracion) #si el ticket esta vencido se solicita uno nuevo logging.info("Fecha expiracion de ticket acceso {}".format(expiracion)) if solicitar: #Generar un Ticket de Requerimiento de Acceso(TRA) tra = wsaa.CreateTRA(service=service) logging.debug("Ticket de acceso {}".format(tra)) #Generar el mensaje firmado(CMS) if LeerIni(clave='h**o') == 'S':#homologacion cms = wsaa.SignTRA(tra, abspath(LeerIni(clave="cert_homo", key="WSAA")), abspath(LeerIni(clave="privatekey_homo", key="WSAA"))) ok = wsaa.Conectar("", LeerIni(clave='url_homo', key='WSAA')) # Homologación else: cacert = LeerIni('iniciosistema') + LeerIni(clave='cacert', key='WSFEv1') cms = wsaa.SignTRA(tra, LeerIni(clave="cert_prod", key="WSAA"), LeerIni(clave="privatekey_prod", key="WSAA")) ok = wsaa.Conectar("", LeerIni(clave='url_prod', key='WSAA'), cacert=cacert) #Produccion #Llamar al web service para autenticar ta = wsaa.LoginCMS(cms) #Grabo el ticket de acceso para poder reutilizarlo file = open(archivo, 'w') file.write(ta) file.close() # devuelvo el ticket de acceso return ta
def __init__(self): super(Main, self).__init__() if LeerIni("base") == "sqlite": copyfile("sistema.db", "sistema-res.db") self.view = MainView() self.view.initUi() self.conectarWidgets() self.model = ModeloBase() self.model.getDb() if not LeerIni("ultima_copia"): GrabarIni(clave='ultima_copia', key='param', valor='00000000') ult = LeerIni("ultima_copia") if LeerIni("base") == "sqlite": if ult < FechaMysql(): resguardo = ResguardoController() resguardo.Cargar("sistema-res.db") resguardo.Cargar("sistema.ini") GrabarIni(clave='ultima_copia', key='param', valor=FechaMysql()) self.CreaTablas() self.Migraciones()
def ConsultarMontoObligado(self, cuit_consultada, cuit_emisor): if isinstance(cuit_emisor, bytes): self.Cuit = cuit_emisor.decode() else: self.Cuit = cuit_emisor cuit_consultada = cuit_consultada.replace('-', '') if LeerIni(clave='h**o') == 'S': self.Conectar("") else: self.Conectar("", wsdl=self.WSDL) tafce = self.Autenticar() self.SetTicketAcceso(tafce) minimo = self.ConsultarMontoObligadoRecepcion(cuit_consultada) if self.ErrMsg: Ventanas.showAlert("Sistema", self.ErrMsg) return self.Resultado == 'S', minimo