class EmailClienteView(Formulario): def __init__(self, *args, **kwargs): Formulario.__init__(self, *args, **kwargs) self.setupUi(self) def setupUi(self, Form): self.resize(650, 350) self.setWindowTitle("Email de clientes") self.verticalLayoutDatos = QVBoxLayout(Form) self.lblTitulo = EtiquetaTitulo(texto=self.windowTitle()) self.verticalLayoutDatos.addWidget(self.lblTitulo) self.gridEmail = Grilla() self.gridEmail.enabled = True cabeceras = ['EMail', 'idemailcliente'] self.gridEmail.columnasHabilitadas = [ 0, ] self.gridEmail.ArmaCabeceras(cabeceras=cabeceras) self.verticalLayoutDatos.addWidget(self.gridEmail) self.layoutBotones = QHBoxLayout() self.btnGraba = Boton(texto='Graba', imagen=imagen('guardar.png')) self.btnCerrar = BotonCerrarFormulario() self.btnAgregar = Boton(texto="Agregar", imagen=imagen('nuevo.png')) self.btnBorrar = Boton(texto="Borrar", imagen=imagen('delete.png')) self.layoutBotones.addWidget(self.btnAgregar) self.layoutBotones.addWidget(self.btnGraba) self.layoutBotones.addWidget(self.btnBorrar) self.layoutBotones.addWidget(self.btnCerrar) self.verticalLayoutDatos.addLayout(self.layoutBotones)
class ReImprimeFacturaView(Formulario): def __init__(self, *args, **kwargs): Formulario.__init__(self, *args, **kwargs) self.setupUi(self) def setupUi(self, Form): self.setWindowTitle("Re impresion de facturas") self.verticalLayoutDatos = QVBoxLayout(Form) self.lblTitulo = EtiquetaTitulo(texto=self.windowTitle()) self.verticalLayoutDatos.addWidget(self.lblTitulo) self.layoutCliente = self.ArmaEntrada('cliente', control=Clientes.Valida()) self.lblNombreCliente = Etiqueta() self.controles['cliente'].widgetNombre = self.lblNombreCliente self.layoutCliente.addWidget(self.lblNombreCliente) self.ArmaEntrada(boxlayout=self.layoutCliente, nombre='fecha', control=Fecha()) self.controles['fecha'].setFecha(-30) self.gridDatos = Grilla() self.gridDatos.enabled = True cabeceras = ['Fecha', 'Comprobante', 'Total', 'idcabecera'] self.verticalLayoutDatos.addWidget(self.gridDatos) self.gridDatos.ArmaCabeceras(cabeceras=cabeceras) self.layoutBotones = QHBoxLayout() self.btnImprimir = Boton(texto="Imprimir", imagen=imagen('print.png')) self.envioCorreo = Boton(texto="Enviar por correo", imagen=imagen('compras.png')) self.btnCerrar = BotonCerrarFormulario() self.layoutBotones.addWidget(self.btnImprimir) self.layoutBotones.addWidget(self.envioCorreo) self.layoutBotones.addWidget(self.btnCerrar) self.verticalLayoutDatos.addLayout(self.layoutBotones)
class FacturaCodBarraView(Formulario): def __init__(self): Formulario.__init__(self) self.setupUi(self) def setupUi(self, Form): self.layoutPpal = QVBoxLayout(Form) self.setWindowTitle("Emision de factura") self.resize(650, 750) layoutProd = QHBoxLayout() self.gridArticulos = Grilla() self.gridArticulos.enabled = True cabeceras = [ 'Cant', 'UN', 'Detalle', 'Unitario', 'Total', 'idArticulo' ] self.gridArticulos.ArmaCabeceras(cabeceras) layoutProd.addWidget(self.gridArticulos) self.layoutPpal.addLayout(layoutProd) layoutTotales = QHBoxLayout() self.textCodBarra = EntradaTexto(tamanio=15, placeholderText='Codigo de barra') layoutTotales.addWidget(self.textCodBarra) self.textTotal = EntradaTexto(tamanio=15, enabled=False) layoutTotales.addWidget(self.textTotal) self.layoutPpal.addLayout(layoutTotales) self.textCodBarra.setFocus()
class PercepDGRView(Formulario): def __init__(self): Formulario.__init__(self) self.setupUi(self) def setupUi(self, Form): self.setWindowTitle("Carga de percepciones de DGR") self.resize(650,550) layoutPpal = QVBoxLayout(Form) lblTitulo = EtiquetaTitulo(texto=self.windowTitle()) layoutPpal.addWidget(lblTitulo) self.gridPercepDGR = Grilla() self.gridPercepDGR.enabled = True cabeceras = [ 'Codigo', 'Nombre', 'Monto' ] self.gridPercepDGR.ArmaCabeceras(cabeceras=cabeceras) self.gridPercepDGR.columnasHabilitadas = [0, 2] items = [ '', '', '' ] for x in range(10): self.gridPercepDGR.AgregaItem(items=items) layoutPpal.addWidget(self.gridPercepDGR) layoutBotones = QHBoxLayout() self.btnCerrarDGR = BotonCerrarFormulario(autodefault=False) layoutBotones.addWidget(self.btnCerrarDGR) layoutPpal.addLayout(layoutBotones)
class ConsultaCtaCteView(VistaBase): def __init__(self, *args, **kwargs): VistaBase.__init__(self, *args, **kwargs) self.initUi() def initUi(self): self.setWindowTitle("Resumen cuenta corriente cliente") self.layoutPpal = QVBoxLayout(self) self.lblTitulo = EtiquetaTitulo(texto=self.windowTitle()) self.layoutPpal.addWidget(self.lblTitulo) self.layoutCliente = QHBoxLayout() self.lblCodigoCliente = Etiqueta(texto="Codigo") self.lineEditCliente = Clientes.Valida() self.lblNombreCliente = Etiqueta() self.lineEditCliente.widgetNombre = self.lblNombreCliente self.layoutCliente.addWidget(self.lblCodigoCliente) self.layoutCliente.addWidget(self.lineEditCliente) self.layoutCliente.addWidget(self.lblNombreCliente) self.layoutPpal.addLayout(self.layoutCliente) self.lblDesdeFecha = Etiqueta(texto="Desde Fecha") self.desdeFecha = Fecha() self.desdeFecha.setFecha(-30) self.lblHastaFecha = Etiqueta(texto="Hasta Fecha") self.hastaFecha = Fecha() self.hastaFecha.setFecha() self.layoutCliente.addWidget(self.lblDesdeFecha) self.layoutCliente.addWidget(self.desdeFecha) self.layoutCliente.addWidget(self.lblHastaFecha) self.layoutCliente.addWidget(self.hastaFecha) self.gridDatos = Grilla() self.gridDatos.enabled = True self.gridDatos.ArmaCabeceras(cabeceras=[ 'Cond Vta', 'Tipo', 'Numero', 'Fecha', 'Debe', 'Haber', 'Saldo' ]) self.layoutPpal.addWidget(self.gridDatos) self.layoutBotones = QHBoxLayout() self.btnMostrar = Boton(texto="&Mostrar", imagen='imagenes/buscar.png') self.btnExcel = Boton(texto="&Exportar", imagen='imagenes/excel.png') self.btnCerrar = BotonCerrarFormulario() self.layoutBotones.addWidget(self.btnMostrar) self.layoutBotones.addWidget(self.btnExcel) self.layoutBotones.addWidget(self.btnCerrar) self.layoutPpal.addLayout(self.layoutBotones) def MostrarDeuda(self, data): self.gridDatos.setRowCount(0) for d in data: item = d self.gridDatos.AgregaItem(item)
class ConsultaPadronAFIPView(VistaBase): def __init__(self, *args, **kwargs): VistaBase.__init__(self, *args, **kwargs) self.setupUi(self) def setupUi(self, Form): self.setWindowTitle("Consulta padron de la afip") self.resize(650, 450) self.layoutPpal = QVBoxLayout(Form) self.lblTitulo = EtiquetaTitulo(texto=self.windowTitle()) self.layoutPpal.addWidget(self.lblTitulo) self.layoutCUIT = QHBoxLayout() self.lblCUIT = Etiqueta(texto="CUIT") self.textCUIT = EntradaTexto(placeholderText="CUIT") self.textCUIT.setInputMask("99-99999999-99") self.layoutCUIT.addWidget(self.lblCUIT) self.layoutCUIT.addWidget(self.textCUIT) self.layoutPpal.addLayout(self.layoutCUIT) self.gridDatos = Grilla() self.gridDatos.enabled = True cabecera = ["Campo", "Valor"] self.gridDatos.ArmaCabeceras(cabeceras=cabecera) self.layoutPpal.addWidget(self.gridDatos) self.layoutBotones = QHBoxLayout() self.btnConsulta = Boton( texto="Consulta", imagen=imagen("if_SEO_usability_audit_search__969250.png")) self.btnImprimir = Boton(texto="Imprimir Constancia", imagen=imagen("print.png")) self.btnCerrar = BotonCerrarFormulario() self.btnAgregaCliente = Boton(texto="Agrega Cliente", imagen=imagen('nuevo.png')) self.layoutBotones.addWidget(self.btnConsulta) self.layoutBotones.addWidget(self.btnImprimir) self.layoutBotones.addWidget(self.btnAgregaCliente) self.layoutBotones.addWidget(self.btnCerrar) self.layoutPpal.addLayout(self.layoutBotones)
class ListaCorreosView(VistaBase): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setupUi(self) def setupUi(self, Form): self.setWindowTitle("Seleccion de correos electronico") self.resize(650, 350) layoutPpal = QVBoxLayout(self) layoutBusqueda = QHBoxLayout() lblBusqueda = Etiqueta(texto="Busqueda") self.textBusqueda = EntradaTexto(placeholderText="Busqueda") self.checkTodos = CheckBox(texto="Todos?") layoutBusqueda.addWidget(lblBusqueda) layoutBusqueda.addWidget(self.textBusqueda) layoutBusqueda.addWidget(self.checkTodos) layoutPpal.addLayout(layoutBusqueda) self.gridCorreos = Grilla() self.gridCorreos.enabled = True cabeceras = [ 'Selecciona', 'Nombre', 'Correo' ] self.gridCorreos.columnasHabilitadas = [0,] self.gridCorreos.ArmaCabeceras(cabeceras) layoutPpal.addWidget(self.gridCorreos) layoutBotones = QHBoxLayout() self.btnSeleccionar = Boton(texto="&Selecciona", imagen=imagen("check.png")) self.btnAgregar = Boton(texto="&Agregar correo", imagen=imagen("email.png")) self.btnCerrar = BotonCerrarFormulario() layoutBotones.addWidget(self.btnSeleccionar) layoutBotones.addWidget(self.btnAgregar) layoutBotones.addWidget(self.btnCerrar) layoutPpal.addLayout(layoutBotones)
class ConsultaCAEView(VistaBase): def __init__(self, *args, **kwargs): VistaBase.__init__(self, *args, **kwargs) self.initUi() def initUi(self): self.setWindowTitle("Consulta de CAE") layoutPpal = QVBoxLayout(self) lblTitulo = EtiquetaTitulo(texto=self.windowTitle()) layoutPpal.addWidget(lblTitulo) layoutTipoComp = QHBoxLayout() lblTipoComp = Etiqueta(texto="Tipo de comprobante") self.cboTipoComp = ComboTipoComp( tiporesp=int(LeerIni(key='WSFEv1', clave='cat_iva'))) layoutTipoComp.addWidget(lblTipoComp) layoutTipoComp.addWidget(self.cboTipoComp) self.layoutFactura = Factura(titulo=u"Nº de Comprobante") layoutTipoComp.addLayout(self.layoutFactura) layoutPpal.addLayout(layoutTipoComp) layoutCliente = QHBoxLayout() lblTipDoc = Etiqueta(texto="Tip Doc") self.textTipoDoc = EntradaTexto(enabled=False) layoutCliente.addWidget(lblTipDoc) layoutCliente.addWidget(self.textTipoDoc) lblCliente = Etiqueta(texto="Doc Cliente") self.textDocCli = EntradaTexto(enabled=False) layoutCliente.addWidget(lblCliente) layoutCliente.addWidget(self.textDocCli) lblFechComp = Etiqueta(texto="Fecha") self.textFecha = EntradaTexto(enabled=False) layoutCliente.addWidget(lblFechComp) layoutCliente.addWidget(self.textFecha) layoutPpal.addLayout(layoutCliente) layoutCAE = QHBoxLayout() lblCAE = Etiqueta(texto="CAE") self.textCAE = EntradaTexto() layoutCAE.addWidget(lblCAE) layoutCAE.addWidget(self.textCAE) lblImpTotal = Etiqueta(texto="Imp. Total") self.textTotal = EntradaTexto() lblNeto = Etiqueta(texto="Neto") self.textNeto = EntradaTexto() layoutCAE.addWidget(lblNeto) layoutCAE.addWidget(self.textNeto) layoutCAE.addWidget(lblImpTotal) layoutCAE.addWidget(self.textTotal) layoutPpal.addLayout(layoutCAE) layoutImp = QHBoxLayout() lblIVA = Etiqueta(texto='IVA') self.textIVA = EntradaTexto() layoutImp.addWidget(lblIVA) layoutImp.addWidget(self.textIVA) lblDGR = Etiqueta(texto='DGR') self.textDGR = EntradaTexto() layoutImp.addWidget(lblDGR) layoutImp.addWidget(self.textDGR) layoutPpal.addLayout(layoutImp) self.gridIVA = Grilla() self.gridIVA.enabled = True cabeceras = ['ID IVA', 'Base Imp', 'Importe'] self.gridIVA.ArmaCabeceras(cabeceras) layoutPpal.addWidget(self.gridIVA) layoutBotones = QHBoxLayout() self.btnConsultar = Boton(texto="Consultar CAE", imagen="imagenes/buscar.png") self.btnCerrar = BotonCerrarFormulario() layoutBotones.addWidget(self.btnConsultar) layoutBotones.addWidget(self.btnCerrar) layoutPpal.addLayout(layoutBotones)
class EmiteReciboView(VistaBase): def __init__(self, *args, **kwargs): VistaBase.__init__(self, *args, **kwargs) self.setupUi(self) def setupUi(self, Form): self.setWindowTitle("Emision de recibos de cta cte") self.resize(750, 550) self.verticalLayoutDatos = QVBoxLayout(Form) self.lblTitulo = EtiquetaTitulo(texto=self.windowTitle()) self.verticalLayoutDatos.addWidget(self.lblTitulo) self.layoutCliente = self.ArmaEntrada(nombre='cliente', control=Clientes.Valida()) self.lblNombreCliente = Etiqueta() self.controles['cliente'].widgetNombre = self.lblNombreCliente self.layoutCliente.addWidget(self.lblNombreCliente) self.ArmaEntrada(nombre='fecha', control=Fecha(enabled=False), boxlayout=self.layoutCliente) self.controles['fecha'].setFecha() self.gridDeuda = Grilla() self.gridDeuda.enabled = True cabecera = [ 'Tipo Comprobante', 'Comprobante', 'Fecha', 'Saldo', 'a Saldar', 'id' ] self.gridDeuda.columnasHabilitadas = [ 4, ] self.gridDeuda.ArmaCabeceras(cabeceras=cabecera) self.verticalLayoutDatos.addWidget(self.gridDeuda) self.layoutDeudas = self.ArmaEntrada('deuda', enabled=False) self.ArmaEntrada(boxlayout=self.layoutDeudas, nombre='saldo', enabled=False) self.gridPagos = Grilla() self.gridPagos.columnasHabilitadas = [0, 1, 2, 3, 4, 5, 6] self.gridPagos.enabled = True cabecera = [ 'TipoComp', 'Importe', 'Banco', 'Sucursal', 'Numero', 'Vence', 'CUIT', 'id' ] self.gridPagos.ArmaCabeceras(cabeceras=cabecera) self.gridPagos.columnasOcultas = [ 7, ] self.gridPagos.OcultaColumnas() self.verticalLayoutDatos.addWidget(self.gridPagos) self.layoutPagos = self.ArmaEntrada('pagos', enabled=False) self.layoutBotones = QHBoxLayout() self.btnGraba = Boton(texto='Aceptar', imagen=imagen('Accept.png'), autodefault=False) self.btnCerra = BotonCerrarFormulario(autodefault=False) self.btnAgrega = Boton(texto='Agrega Pago', imagen=imagen('Add_create_new.png'), autodefault=False) self.layoutBotones.addWidget(self.btnAgrega) self.layoutBotones.addWidget(self.btnGraba) self.layoutBotones.addWidget(self.btnCerra) self.verticalLayoutDatos.addLayout(self.layoutBotones)
class ABM(VistaBase): #diccionario que guarda los controles que se agreguen al abm controles = {} #modelo sobre el que se hace el abm model = None #indica si es un alta o una modificacion tipo = "A" #campos a mostrar en la grilla camposAMostrar = None #condicion para filtrar la tabla condicion = None #limite de registros limite = 100 #orden de busqueda ordenBusqueda = None #campo campoClave = None #campo clave autoincremental autoincremental = True #campo para el foco campoFoco = None def __init__(self, *args, **kwargs): VistaBase.__init__(self, *args, **kwargs) self.controles = {} self.initUi() @inicializar_y_capturar_excepciones def initUi(self, *args, **kwargs): self.resize(906, 584) nombre_tabla = self.model._meta.table_name.title() if self.model else '' self.setWindowTitle("ABM de {}".format(nombre_tabla)) self.verticalLayout = QVBoxLayout(self) self.lblTitulo = Etiqueta(tamanio=15, texto="ABM de {}".format(nombre_tabla)) self.verticalLayout.addWidget(self.lblTitulo) self.tabWidget = QTabWidget() self.tabLista = QWidget() self.gridLayout = QGridLayout(self.tabLista) self.lineEditBusqueda = EntradaTexto(self.tabLista, placeholderText="Busqueda") self.lineEditBusqueda.setObjectName("lineEditBusqueda") self.gridLayout.addWidget(self.lineEditBusqueda, 0, 0, 1, 1) self.tableView = Grilla(self.tabLista) self.tableView.setObjectName("tableView") self.tableView.enabled = True # extraigo los nombres de las columnas self.tableView.cabeceras = [x.column_name.capitalize() for x in self.camposAMostrar] self.tableView.ArmaCabeceras() self.gridLayout.addWidget(self.tableView, 1, 0, 1, 1) self.horizontalLayout = QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.BotonesAdicionales() self.btnAgregar = Boton(self.tabLista, imagen="imagenes/nuevo.png", tamanio=QSize(32,32), tooltip='Agrega nuevo registro') self.btnAgregar.setObjectName("btnAgregar") self.horizontalLayout.addWidget(self.btnAgregar) self.btnEditar = Boton(self.tabLista, imagen="imagenes/modificar.png", tamanio=QSize(32,32), tooltip='Modifica registro') self.btnEditar.setObjectName("btnEditar") self.horizontalLayout.addWidget(self.btnEditar) self.btnBorrar = Boton(self.tabLista, imagen="imagenes/delete.png", tamanio=QSize(32,32), tooltip='Borrar registro') self.btnBorrar.setObjectName("btnBorrar") self.horizontalLayout.addWidget(self.btnBorrar) self.btnCerrar = Boton(self.tabLista, imagen="imagenes/log-out.png", tamanio=QSize(32,32), tooltip='Cerrar ABM') self.btnCerrar.setObjectName("btnCerrar") self.horizontalLayout.addWidget(self.btnCerrar) self.gridLayout.addLayout(self.horizontalLayout, 2, 0, 1, 1) self.tabWidget.addTab(self.tabLista, "Lista") self.tabDetalle = QWidget() self.tabWidget.addTab(self.tabDetalle, "Detalle") self.tabDetalle.setEnabled(False) self.verticalLayout.addWidget(self.tabWidget) self.ArmaDatos() self.ArmaTabla() self.ConectaWidgets() def BotonesAdicionales(self): pass def ArmaTabla(self): self.tableView.setRowCount(0) if not self.model: #si no esta establecido el modelo no hago nada return data = self.model.select().dicts() if self.condicion: for c in self.condicion: data = data.where(c) if self.lineEditBusqueda.text(): if self.ordenBusqueda: data = data.where(self.ordenBusqueda.contains(self.lineEditBusqueda.text())) else: Ventanas.showAlert("Sistema", "Orden no establecido y no se puede realizar la busqueda") data = data.limit(self.limite) for d in data: if self.camposAMostrar: item = [d[x.column_name] for x in self.camposAMostrar] else: item = [d[x] for x in d] self.tableView.AgregaItem(item) def ArmaDatos(self): self.verticalLayoutDatos = QVBoxLayout(self.tabDetalle) self.verticalLayoutDatos.setObjectName("verticalLayoutDatos") self.ArmaCarga() fila = 0 self.grdBotones = QGridLayout() self.grdBotones.setObjectName("grdBotones") self.btnAceptar = Boton(self.tabDetalle, imagen="imagenes/guardar.png", tamanio=QSize(32,32)) self.btnAceptar.setObjectName("btnAceptar") self.grdBotones.addWidget(self.btnAceptar, 0, 0, 1, 1) self.btnCancelar = Boton(self.tabDetalle, imagen="imagenes/log-out.png", tamanio=QSize(32,32)) self.btnCancelar.setObjectName("btnCancelar") self.grdBotones.addWidget(self.btnCancelar, 0, 1, 1, 1) self.verticalLayoutDatos.addLayout(self.grdBotones) self.verticalLayout.addWidget(self.tabWidget) self.btnCancelar.clicked.connect(self.btnCancelarClicked) self.btnAceptar.clicked.connect(self.btnAceptarClicked) self.verticalLayoutDatos.addStretch(1) def Busqueda(self): self.ArmaTabla() def ConectaWidgets(self): self.lineEditBusqueda.textChanged.connect(self.Busqueda) self.btnCerrar.clicked.connect(self.cerrarformulario) self.btnBorrar.clicked.connect(self.Borrar) self.btnEditar.clicked.connect(self.Modifica) self.btnAgregar.clicked.connect(self.Agrega) @inicializar_y_capturar_excepciones def Borrar(self, *args, **kwargs): if not self.tableView.currentRow() != -1: return if not self.campoClave: Ventanas.showAlert("Sistema", "No tenes establecido el campo clave y no podemos continuar") id = self.tableView.ObtenerItem(fila=self.tableView.currentRow(), col=self.campoClave.column_name.capitalize()) data = self.model.get_by_id(id) data.delete_instance() self.ArmaTabla() def Modifica(self): self.tipo = 'M' if not self.tableView.currentRow() != -1: return if not self.campoClave: Ventanas.showAlert("Sistema", "No tenes establecido el campo clave y no podemos continuar") id = self.tableView.ObtenerItem(fila=self.tableView.currentRow(), col=self.campoClave.column_name.capitalize()) print(self.tableView.currentRow(), id) data = self.model.select().where(self.campoClave == int(id)).dicts() self.tabDetalle.setEnabled(True) self.tabWidget.setCurrentIndex(1) self.CargaDatos(data) if self.campoFoco: self.campoFoco.setFocus() def CargaDatos(self, data=None): # self.tipo = 'A' if not data: return for d in data: print(d) for k in d: if k in self.controles: if k == self.campoClave.column_name: self.controles[k].setEnabled(False) if isinstance(self.controles[k], QLineEdit): if isinstance(d[k], (int, decimal.Decimal)): self.controles[k].setText(str(d[k])) else: self.controles[k].setText(d[k]) elif isinstance(self.controles[k], Spinner): self.controles[k].setText(d[k]) elif isinstance(self.controles[k], (QCheckBox, CheckBox)): if EsVerdadero(d[k]) or d[k]: self.controles[k].setChecked(True) else: self.controles[k].setChecked(False) elif isinstance(self.controles[k], QComboBox): if isinstance(d[k], (bytes,)): if EsVerdadero(self.cursor[k]): self.controles[k].setCurrentIndex(self.controles[k].findData('Si')) else: self.controles[k].setCurrentIndex(self.controles[k].findData('No')) else: self.controles[k].setCurrentIndex(self.controles[k].findData(d[k])) self.controles[k].setStyleSheet("background-color: white") def ArmaEntrada(self, nombre="", boxlayout=None, texto='', *args, **kwargs): if not boxlayout: boxlayout = QHBoxLayout() lAgrega = True else: lAgrega = False if not texto: texto = nombre.capitalize() labelNombre = Etiqueta(texto=texto) labelNombre.setObjectName("labelNombre") boxlayout.addWidget(labelNombre) if 'control' in kwargs: lineEditNombre = kwargs['control'] else: lineEditNombre = EntradaTexto() if 'relleno' in kwargs: lineEditNombre.relleno = kwargs['relleno'] if 'inputmask' in kwargs: lineEditNombre.setInputMask(kwargs['inputmask']) #print(type(lineEditNombre)) lineEditNombre.setObjectName(nombre) boxlayout.addWidget(lineEditNombre) if 'enabled' in kwargs: lineEditNombre.setEnabled(kwargs['enabled']) self.controles[nombre] = lineEditNombre if lAgrega: self.verticalLayoutDatos.addLayout(boxlayout) return boxlayout def btnCancelarClicked(self): self.tabWidget.setCurrentIndex(0) self.tabDetalle.setEnabled(False) @inicializar_y_capturar_excepciones def btnAceptarClicked(self, *args, **kwargs): # data = self.model.get_by_id(self.controles[self.campoClave.column_name].text()) # data.nombre = self.controles['nombre'].text() self.ArmaTabla() self.btnCancelarClicked() def ArmaCarga(self): pass def Agrega(self): self.tipo = 'A' for x in self.controles: if self.autoincremental: if x == self.campoClave.column_name: self.controles[x].setEnabled(False) self.controles[x].setText('') self.controles[x].setStyleSheet("background-color: white") self.tabDetalle.setEnabled(True) self.tabWidget.setCurrentIndex(1) if self.campoFoco: self.campoFoco.setFocus()
class FacturaView(Formulario): def __init__(self): Formulario.__init__(self) self.setupUi(self) def setupUi(self, Form): self.layoutPpal = QVBoxLayout(Form) self.setWindowTitle("Emision de comprobante electronico") self.resize(850, 650) self.lblTitulo = EtiquetaTitulo(texto=self.windowTitle()) self.layoutPpal.addWidget(self.lblTitulo) self.layoutCliente = QGridLayout() self.agrupaCliente = Agrupacion(titulo="Cliente:") self.lblCodigoCliente = Etiqueta(texto="Codigo Cliente") self.lblNombreCliente = Etiqueta() self.validaCliente = Clientes.Valida() self.validaCliente.widgetNombre = self.lblNombreCliente self.layoutCliente.addWidget(self.lblCodigoCliente, 0, 0) self.layoutCliente.addWidget(self.validaCliente, 0, 1) self.layoutCliente.addWidget(self.lblNombreCliente, 0, 2, 1, 4) layoutIVA = QHBoxLayout() self.lblDomicilio = Etiqueta(texto="Domicilio") self.lineEditDomicilio = EntradaTexto( placeholderText="Domicilio cliente") self.layoutCliente.addWidget(self.lblDomicilio, 1, 0) self.layoutCliente.addWidget(self.lineEditDomicilio, 1, 1, 1, 1) self.lblDocumento = Etiqueta(texto=u"Nº Doc") self.lineEditDocumento = EntradaTexto(placeholderText="CUIT/CUIL/DNI") self.layoutCliente.addWidget(self.lblDocumento, 1, 2) self.layoutCliente.addWidget(self.lineEditDocumento, 1, 3) self.agrupaCliente.setLayout(self.layoutCliente) self.lblTipoIVA = Etiqueta(texto='IVA:') self.cboTipoIVA = Tiporesp.Combo() self.layoutCliente.addWidget(self.lblTipoIVA, 1, 4) self.layoutCliente.addWidget(self.cboTipoIVA, 1, 5) self.layoutPpal.addWidget(self.agrupaCliente) self.layoutComprobante = QHBoxLayout() self.lblComprobante = Etiqueta(texto="Comprobante", tamanio=10) self.cboComprobante = Tipocomprobantes.ComboTipoComp(tiporesp=int( LeerIni(clave='cat_iva', key='WSFEv1')), tamanio=10) self.layoutComprobante.addWidget(self.lblComprobante) self.layoutComprobante.addWidget(self.cboComprobante) self.layoutFactura = Factura(titulo=u"Nº", tamanio=10, enabled=False) self.layoutComprobante.addLayout(self.layoutFactura) self.lblFecha = Etiqueta(texto="Fecha", tamanio=10) self.layoutPpal.addWidget(self.lblFecha) self.layoutCpbteRelacionado = Factura(titulo='Cpbte Rel', tamanio=10, enabled=False) self.layoutComprobante.addLayout(self.layoutCpbteRelacionado) self.lineEditFecha = Fecha(tamanio=10) self.lineEditFecha.setFecha() self.layoutComprobante.addWidget(self.lblFecha) self.layoutComprobante.addWidget(self.lineEditFecha) self.layoutPpal.addLayout(self.layoutComprobante) self.layoutConceptoPeriodo = QHBoxLayout() self.agrupaConceptos = Agrupacion(titulo="Conceptos a incluir") self.layoutConceptos = QGridLayout() self.checkBoxProductos = CheckBox(texto="Productos") self.checkBoxServicios = CheckBox(texto="Servicios") self.layoutConceptos.addWidget(self.checkBoxProductos, 0, 0) self.layoutConceptos.addWidget(self.checkBoxServicios, 0, 1) self.lblFormaPago = Etiqueta(texto="Forma de pago") self.cboFormaPago = ComboFormapago() self.layoutConceptos.addWidget(self.lblFormaPago, 1, 0) self.layoutConceptos.addWidget(self.cboFormaPago, 1, 1) self.agrupaConceptos.setLayout(self.layoutConceptos) self.layoutConceptoPeriodo.addWidget(self.agrupaConceptos) self.agrupaPeriodo = Agrupacion(titulo="Periodo Facturado") self.layoutPeriodo = QGridLayout() self.lblDesde = Etiqueta(texto="Desde", tamanio=10) self.lblHasta = Etiqueta(texto="Hasta", tamanio=10) self.fechaDesde = Fecha() self.fechaDesde.setFecha() self.fechaDesde.setEnabled(False) self.fechaHasta = Fecha() self.fechaHasta.setFecha() self.fechaHasta.setEnabled(False) self.lblVencimiento = Etiqueta(texto="Vto. para el pago") self.vencPago = Fecha() self.vencPago.setFecha() self.layoutPeriodo.addWidget(self.lblDesde, 0, 0) self.layoutPeriodo.addWidget(self.fechaDesde, 0, 1) self.layoutPeriodo.addWidget(self.lblHasta, 0, 2) self.layoutPeriodo.addWidget(self.fechaHasta, 0, 3) self.agrupaPeriodo.setLayout(self.layoutPeriodo) self.layoutPeriodo.addWidget(self.lblVencimiento, 1, 1, 1, 2) self.layoutPeriodo.addWidget(self.vencPago, 1, 3) self.layoutConceptoPeriodo.addWidget(self.agrupaPeriodo) self.layoutPpal.addLayout(self.layoutConceptoPeriodo) self.paginaDatos = Pagina() self.tabArticulo = TabPagina() self.tabAlicuotaIVA = TabPagina() self.tabOtrosTributos = TabPagina() self.tabObs = TabPagina() self.tabArticuloUI() self.tabAlicuotaIVAUI() self.tabOtrosTributosUI() self.tabObsUI() self.paginaDatos.addTab(self.tabArticulo, "Articulo") self.paginaDatos.addTab(self.tabAlicuotaIVA, "Alicuotas IVA") self.paginaDatos.addTab(self.tabOtrosTributos, "Otros Tributos") self.paginaDatos.addTab(self.tabObs, "Observaciones") self.layoutPpal.addWidget(self.paginaDatos) self.layoutTotales = QHBoxLayout() self.agrupaAfip = Agrupacion(titulo="Autorizacion AFIP") self.layoutAfip = QGridLayout() self.lblCAE = Etiqueta(texto="CAE") self.lineditCAE = EntradaTexto(placeholderText="CAE", enabled=False) self.lblVencCAE = Etiqueta(texto="Venc. CAE") self.fechaVencCAE = Fecha(enabled=False) self.lblResultado = Etiqueta(texto="Resultado") self.lineEditResultado = EntradaTexto(placeholderText="Resultado", enabled=False) self.layoutAfip.addWidget(self.lblCAE, 0, 0) self.layoutAfip.addWidget(self.lineditCAE, 0, 1) self.layoutAfip.addWidget(self.lblVencCAE, 1, 0) self.layoutAfip.addWidget(self.fechaVencCAE, 1, 1) self.layoutAfip.addWidget(self.lblResultado, 2, 0) self.layoutAfip.addWidget(self.lineEditResultado, 2, 1) self.agrupaAfip.setLayout(self.layoutAfip) self.layoutTotales.addWidget(self.agrupaAfip) lblSubTotal = Etiqueta(texto="Sub Total: ", tamanio=10) self.textSubTotal = EntradaTexto(tamanio=10, enabled=False) self.lblTributos = Etiqueta(texto="Otros Tributos", tamanio=10) self.lineEditTributos = EntradaTexto(tamanio=10, enabled=False) self.lblTotalIVA = Etiqueta(texto="IVA", tamanio=10) self.lineEditTotalIVA = EntradaTexto(tamanio=10, enabled=False) self.lblTotalFactura = Etiqueta(texto='Total', tamanio=10) self.lineEditTotal = EntradaTexto(tamanio=10, enabled=False) self.gridLayoutTotales = QGridLayout() self.gridLayoutTotales.addWidget(lblSubTotal, 0, 0) self.gridLayoutTotales.addWidget(self.textSubTotal, 0, 1) self.gridLayoutTotales.addWidget(self.lblTributos, 0, 2) self.gridLayoutTotales.addWidget(self.lineEditTributos, 0, 3) self.gridLayoutTotales.addWidget(self.lblTotalIVA, 1, 0) self.gridLayoutTotales.addWidget(self.lineEditTotalIVA, 1, 1, 1, 3) self.gridLayoutTotales.addWidget(self.lblTotalFactura, 2, 0) self.gridLayoutTotales.addWidget(self.lineEditTotal, 2, 1, 1, 3) self.layoutTotales.addLayout(self.gridLayoutTotales) self.layoutPpal.addLayout(self.layoutTotales) self.layoutBotones = QHBoxLayout() self.btnGrabarFactura = Boton(texto="Emitir", imagen=imagen('save.png'), autodefault=False) self.btnCerrarFormulario = BotonCerrarFormulario(autodefault=False) self.layoutBotones.addWidget(self.btnGrabarFactura) self.layoutBotones.addWidget(self.btnCerrarFormulario) self.layoutPpal.addLayout(self.layoutBotones) 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 tabAlicuotaIVAUI(self): layoutppal = QVBoxLayout() self.gridAlicuotasIVA = Grilla(tamanio=10) cabeceras = ['IVA', 'Alicuota', 'Base Imponible', 'Importe'] self.gridAlicuotasIVA.ArmaCabeceras(cabeceras=cabeceras) layoutppal.addWidget(self.gridAlicuotasIVA) layoutBotones = QHBoxLayout() self.botonAgregaIVA = Boton(texto="Agrega", imagen=imagen("nuevo.png"), tamanio=QSize(16, 16), autodefault=False) self.botonBorrarIVA = Boton(texto="Borrar", imagen=imagen("delete.png"), tamanio=QSize(16, 16), autodefault=False) layoutBotones.addWidget(self.botonAgregaIVA) layoutBotones.addWidget(self.botonBorrarIVA) layoutppal.addLayout(layoutBotones) self.tabAlicuotaIVA.setLayout(layoutppal) def tabOtrosTributosUI(self): layoutppal = QVBoxLayout() self.gridAlicuotasTributos = Grilla(tamanio=10) cabeceras = ['Alicuota', 'Base Imponible', 'Importe'] self.gridAlicuotasTributos.ArmaCabeceras(cabeceras=cabeceras) layoutppal.addWidget(self.gridAlicuotasTributos) layoutBotones = QHBoxLayout() self.botonAgregaTributos = Boton(texto="Agrega", imagen=imagen("nuevo.png"), tamanio=QSize(16, 16), autodefault=False) self.botonBorrarTributos = Boton(texto="Borrar", imagen=imagen("delete.png"), tamanio=QSize(16, 16), autodefault=False) layoutBotones.addWidget(self.botonAgregaTributos) layoutBotones.addWidget(self.botonBorrarTributos) layoutppal.addLayout(layoutBotones) self.tabOtrosTributos.setLayout(layoutppal) def tabObsUI(self): layoutppal = QVBoxLayout() self.editObs = TextEdit() layoutppal.addWidget(self.editObs) self.tabObs.setLayout(layoutppal)