Ejemplo n.º 1
0
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(829, 556)
        Dialog.setWindowTitle("Busqueda de datos en {}".format(
            self.modelo._meta.name if self.modelo else ""))
        self.verticalLayout = QVBoxLayout(Dialog)
        self.verticalLayout.setObjectName("verticalLayout")
        self.lineEdit = EntradaTexto(Dialog,
                                     tooltip='Ingresa tu busqueda',
                                     placeholderText="Ingresa tu busqueda")
        self.lineEdit.setObjectName("lineEdit")
        self.verticalLayout.addWidget(self.lineEdit)
        self.tableView = QTableWidget(Dialog)
        self.tableView.setObjectName("tableView")
        font = QFont()
        font.setPointSize(12)
        self.tableView.setFont(font)
        self.verticalLayout.addWidget(self.tableView)
        self.horizontalLayout = QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.btnAceptar = BotonAceptar(textoBoton="&Seleccionar")
        self.btnAceptar.setObjectName("btnAceptar")
        self.horizontalLayout.addWidget(self.btnAceptar)
        self.btnCancelar = BotonCerrarFormulario()
        self.btnCancelar.setObjectName("btnCancelar")
        self.horizontalLayout.addWidget(self.btnCancelar)
        self.verticalLayout.addLayout(self.horizontalLayout)

        #self.retranslateUi(Dialog)
        self.btnCancelar.clicked.connect(self.Cerrar)
        self.lineEdit.textChanged.connect(self.CargaDatos)
        self.btnAceptar.clicked.connect(self.Aceptar)
        self.tableView.cellClicked.connect(self.cell_was_clicked)
        self.tableView.doubleClicked.connect(self.Aceptar)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
 def __init__(self, parent=None, *args, **kwargs):
     EntradaTexto.__init__(self, parent, *args, **kwargs)
     font = QFont()
     font.setPointSizeF(12)
     self.setFont(font)
     if self.largo != 0:
         self.setMaxLength(self.largo)
     self.setMaximumWidth(50)
    def setupUi(self, Form):
        self.setWindowTitle("Importacion comprobantes AFIP")
        layoutPpal = QVBoxLayout(Form)

        self.avance = Avance()
        layoutPpal.addWidget(self.avance)

        layout_archivo_cab = QHBoxLayout()
        lblArchivo = Etiqueta(texto="Archivo cabecera")
        self.textArchivo = EntradaTexto(placeholderText="Ubicacion cabecera")
        self.btnArchivo = Boton(imagen=imagen("folder_search.png"))
        layout_archivo_cab.addWidget(lblArchivo)
        layout_archivo_cab.addWidget(self.textArchivo)
        layout_archivo_cab.addWidget(self.btnArchivo)
        layoutPpal.addLayout(layout_archivo_cab)

        layout_archivo_det = QHBoxLayout()
        lblArchivo_det = Etiqueta(texto="Archivo IVA")
        self.textArchivo_det = EntradaTexto(placeholderText="Ubicacion IVA")
        self.btnArchivo_det = Boton(imagen=imagen("folder_search.png"))
        layout_archivo_det.addWidget(lblArchivo_det)
        layout_archivo_det.addWidget(self.textArchivo_det)
        layout_archivo_det.addWidget(self.btnArchivo_det)
        layoutPpal.addLayout(layout_archivo_det)

        layoutFechas = QHBoxLayout()
        lblDesdeFecha = Etiqueta(texto="Desde fecha")
        self.textDesdeFecha = Fecha(fecha=InicioMes())
        lblHastaFecha = Etiqueta(texto="Hasta fecha")
        self.textHastaFecha = Fecha(fecha=FinMes())
        layoutFechas.addWidget(lblDesdeFecha)
        layoutFechas.addWidget(self.textDesdeFecha)
        layoutFechas.addWidget(lblHastaFecha)
        layoutFechas.addWidget(self.textHastaFecha)
        layoutPpal.addLayout(layoutFechas)

        layoutParametros = QHBoxLayout()
        self.checkBorra = CheckBox(texto="Borra los movimientos?",
                                   checked=True)
        self.consultaAFIP = CheckBox(texto="Consulta datos con AFIP?")
        layoutParametros.addWidget(self.checkBorra)
        layoutParametros.addWidget(self.consultaAFIP)
        layoutPpal.addLayout(layoutParametros)

        layoutBotones = QHBoxLayout()
        self.btnImportar = Boton(texto="Importar",
                                 imagen=imagen("importar.png"))
        self.btnCerrar = BotonCerrarFormulario()
        layoutBotones.addWidget(self.btnImportar)
        layoutBotones.addWidget(self.btnCerrar)
        layoutPpal.addLayout(layoutBotones)
    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)
Ejemplo n.º 8
0
    def ArmaEntrada(self,
                    nombre="",
                    boxlayout=None,
                    texto='',
                    *args,
                    **kwargs):
        if not nombre:
            return
        if not boxlayout:
            boxlayout = QHBoxLayout()
            lAgrega = True
        else:
            lAgrega = False

        if not texto:
            if isinstance(nombre, str):
                texto = nombre.capitalize()
            else:
                texto = nombre.verbose_name if nombre.verbose_name else nombre.name.capitalize(
                )

        if not isinstance(
                nombre, str
        ):  #si no es un campo texto intento convertir de un campo de pewee
            nombre = nombre.name

        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
Ejemplo n.º 9
0
    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']

        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 setupUi(self, Form):
        self.setWindowTitle("Envio de correo electronico")

        layoutPpal = QVBoxLayout(Form)

        layoutParam = QGridLayout()
        self.btnPara = Boton(texto="Para:")
        self.textPara = EmailCompleter(placeholderText="Para")
        layoutParam.addWidget(self.btnPara, 0,0)
        layoutParam.addWidget(self.textPara, 0, 1)

        self.btnCC = Boton(texto="CC:")
        self.textCC = EmailCompleter(placeholderText="Con copia")
        layoutParam.addWidget(self.btnCC, 1, 0)
        layoutParam.addWidget(self.textCC, 1, 1)

        self.btnCCO = Boton(texto="CCO:")
        self.textCCO = EmailCompleter(placeholderText="Con copia oculta")
        layoutParam.addWidget(self.btnCCO, 2, 0)
        layoutParam.addWidget(self.textCCO, 2, 1)

        self.btnAdjunto = Boton(texto="Adjunto:")
        self.textAdjunto = EntradaTexto(enabled=False)
        layoutParam.addWidget(self.btnAdjunto, 3, 0)
        layoutParam.addWidget(self.textAdjunto, 3, 1)

        lblAsunto = Etiqueta(texto="Asunto")
        self.textAsunto = EntradaTexto(placeholderText="Asunto")
        layoutParam.addWidget(lblAsunto, 4, 0)
        layoutParam.addWidget(self.textAsunto, 4, 1, 1, 2)
        layoutPpal.addLayout(layoutParam)

        self.listaAdjuntos = Lista()
        layoutParam.addWidget(self.listaAdjuntos, 0, 2, 4, 1)

        self.textMensaje = TextoEnriquecido()
        layoutPpal.addWidget(self.textMensaje)

        layoutBotones = QHBoxLayout()
        self.btnEnviar = Boton(texto="Enviar", imagen=imagen("email.png"))
        self.btnCerrar = BotonCerrarFormulario()
        layoutBotones.addWidget(self.btnEnviar)
        layoutBotones.addWidget(self.btnCerrar)
        layoutPpal.addLayout(layoutBotones)
Ejemplo n.º 11
0
    def initUi(self):
        self.setGeometry(150, 150, 650, 450)
        layoutPpal = QVBoxLayout(self)

        layoutIdiomas = QHBoxLayout()
        lblDesde = Etiqueta(texto="Desde")
        self.cboIdiomaDesde = ComboIdiomas()
        lblHasta = Etiqueta(texto="Hasta")
        self.cboIdiomaHasta = ComboIdiomas()
        layoutIdiomas.addWidget(lblDesde)
        layoutIdiomas.addWidget(self.cboIdiomaDesde)
        layoutIdiomas.addWidget(lblHasta)
        layoutIdiomas.addWidget(self.cboIdiomaHasta)
        layoutPpal.addLayout(layoutIdiomas)

        layoutPagina = QHBoxLayout()
        lblPagina = Etiqueta(texto="URL de la pagina")
        self.textURL = EntradaTexto()
        layoutPagina.addWidget(lblPagina)
        layoutPagina.addWidget(self.textURL)
        layoutPpal.addLayout(layoutPagina)

        self.textTextoTraducir = TextEdit(placeholdertext="Texto a traducir")
        layoutPpal.addWidget(self.textTextoTraducir)

        self.textTraducido = TextEdit(placeholdertext="Texto traducido")
        layoutPpal.addWidget(self.textTraducido)

        layoutBotones = QHBoxLayout()
        self.btnTraducir = Boton(
            texto="Tradudir",
            imagen=imagen(
                "iconfinder_logo_brand_brands_logos_translate_google_2230965.png"
            ))
        self.btnCerrar = Boton(texto="Salir",
                               imagen=imagen("iconfinder_free-29_618316.png"))
        layoutBotones.addWidget(self.btnTraducir)
        layoutBotones.addWidget(self.btnCerrar)
        layoutPpal.addLayout(layoutBotones)
    def setupUi(self, Form):
        self.setWindowTitle("Obtiene CAEA")
        layoutPpal = QVBoxLayout(Form)
        lblTitulo = EtiquetaTitulo(texto=self.windowTitle())
        layoutPpal.addWidget(lblTitulo)

        layoutLinea1 = QHBoxLayout()
        self.layoutPeriodo = Periodo(texto="Periodo")
        layoutLinea1.addLayout(self.layoutPeriodo)
        lblOrden = Etiqueta(texto="Orden")
        self.textOrden = EntradaTexto()
        layoutLinea1.addWidget(lblOrden)
        layoutLinea1.addWidget(self.textOrden)
        layoutPpal.addLayout(layoutLinea1)

        layoutBotones = QHBoxLayout()
        self.btnObtener = Boton(
            texto="Obtener CAEA",
            imagen='imagenes/if_product-sales-report_49607.png')
        self.btnCerrar = BotonCerrarFormulario()
        layoutBotones.addWidget(self.btnObtener)
        layoutBotones.addWidget(self.btnCerrar)
        layoutPpal.addLayout(layoutBotones)
    def setupUi(self, Form):
        self.setWindowTitle("Constatacion de comprobantes")

        self.layoutPpal = QVBoxLayout(Form)
        self.lblTitulo = EtiquetaTitulo(texto=self.windowTitle())
        self.layoutPpal.addWidget(self.lblTitulo)
        self.formLayout = QFormLayout()

        self.lblComboTipo = Etiqueta(texto="Tipo de constatacion")
        self.cboComboTipo = ComboConstComp()
        self.formLayout.addRow(self.lblComboTipo, self.cboComboTipo)
        self.layoutPpal.addLayout(self.formLayout)

        self.lblCuit = Etiqueta(texto="CUIT")
        self.textCuit = CUIT(placeholderText="CUIT")
        self.formLayout.addRow(self.lblCuit, self.textCuit)

        self.lblCae = Etiqueta(texto="CAE/CAI")
        self.textCae = EntradaTexto(placeholderText="CAE/CAI")
        self.formLayout.addRow(self.lblCae, self.textCae)

        self.lblFechaEm = Etiqueta(texto="Fecha de emision")
        self.textFecha = Fecha()
        self.textFecha.setFecha()
        self.formLayout.addRow(self.lblFechaEm, self.textFecha)

        self.lblTipoComp = Etiqueta(texto="Tipo de comprobante")
        self.layoutTipoComp = QHBoxLayout()
        self.textTipoComp = Tipocomprobantes.Valida()
        self.lblNombreComp = Etiqueta()
        self.textTipoComp.widgetNombre = self.lblNombreComp
        self.layoutTipoComp.addWidget(self.textTipoComp)
        self.layoutTipoComp.addWidget(self.lblNombreComp)
        self.formLayout.addRow(self.lblTipoComp, self.layoutTipoComp)

        self.lblFactura = Etiqueta(texto=u"Nº Factura")
        self.textFactura = Factura(titulo="")
        self.formLayout.addRow(self.lblFactura, self.textFactura)

        self.lblImpTotal = Etiqueta(texto="Importe total")
        self.textImpTotal = EntradaTexto(placeholderText="Importe Total")
        self.formLayout.addRow(self.lblImpTotal, self.textImpTotal)

        self.lblTipoDocReceptor = Etiqueta(texto="Tipo Doc. Receptor")
        self.textTipoDocReceptor = Tipodoc.Valida()
        self.textTipoDocReceptor.setText('80')
        self.formLayout.addRow(self.lblTipoDocReceptor,
                               self.textTipoDocReceptor)

        self.lblNroDoc = Etiqueta(texto="Nro Doc. Receptor")
        self.textNroDoc = EntradaTexto(placeholderText="Nro Doc. Receptor")
        self.textNroDoc.setText(LeerIni(clave='cuit', key='WSCDC'))
        self.formLayout.addRow(self.lblNroDoc, self.textNroDoc)

        self.lblResultado = Etiqueta()
        self.layoutPpal.addWidget(self.lblResultado)

        self.layoutBotones = QHBoxLayout()
        self.btnConsultar = Boton(
            texto="Consultar",
            imagen=imagen('if_SEO_usability_audit_search__969250.png'))
        self.btnImprimir = Boton(texto="Imprimir", imagen=imagen("print.png"))
        self.btnImprimir.setEnabled(False)
        self.btnCerrar = BotonCerrarFormulario()
        self.layoutBotones.addWidget(self.btnConsultar)
        self.layoutBotones.addWidget(self.btnImprimir)
        self.layoutBotones.addWidget(self.btnCerrar)
        self.layoutPpal.addLayout(self.layoutBotones)

        self.cboComboTipo.setFocus()
Ejemplo n.º 14
0
    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)
    def setupUi(self, Form):
        self.setWindowTitle("Carga facturas de proveedor")

        self.layoutPpal = QVBoxLayout(Form)
        self.lblTitulo = EtiquetaTitulo(texto=self.windowTitle())
        self.layoutPpal.addWidget(self.lblTitulo)

        self.gridLayout = QGridLayout()
        self.lblCodigoProv = Etiqueta(texto="Proveedor")
        self.textProveedor = Proveedores.Valida()
        self.lblNombProv = Etiqueta()
        self.textProveedor.widgetNombre = self.lblNombProv
        self.gridLayout.addWidget(self.lblCodigoProv, 0, 0, 1, 1)
        self.gridLayout.addWidget(self.textProveedor, 0, 1, 1, 1)
        self.gridLayout.addWidget(self.lblNombProv, 0, 2, 1, 1)

        self.lblCodTipoComp = Etiqueta(texto="Tipo comprobante")
        self.textTipoComp = Tipocomprobantes.Valida()
        self.lblNomTipoComp = Etiqueta()
        self.textTipoComp.widgetNombre = self.lblNomTipoComp
        self.gridLayout.addWidget(self.lblCodTipoComp, 1, 0, 1, 1)
        self.gridLayout.addWidget(self.textTipoComp, 1, 1, 1, 1)
        self.gridLayout.addWidget(self.lblNomTipoComp, 1, 2, 1, 1)

        self.lblFactura = Etiqueta(texto='Numero')
        self.textFactura = Factura()
        self.gridLayout.addWidget(self.lblFactura, 1, 3, 1, 1)
        self.gridLayout.addLayout(self.textFactura, 1, 4, 1, 1)

        self.lblFechaCarga = Etiqueta(texto="Fecha Carga")
        self.fechaCarga = Fecha()
        self.fechaCarga.setFecha()
        self.gridLayout.addWidget(self.lblFechaCarga, 2, 0, 1, 1)
        self.gridLayout.addWidget(self.fechaCarga, 2, 1, 1, 1)

        self.lblFechaEm = Etiqueta(texto="Fecha Emision")
        self.fechaEmision = Fecha()
        self.fechaEmision.setFecha()
        self.gridLayout.addWidget(self.lblFechaEm, 2, 3, 1, 1)
        self.gridLayout.addWidget(self.fechaEmision, 2, 4, 1, 1)

        self.lblPeriodo = Etiqueta(texto="Periodo")
        self.periodo = Periodo()
        self.gridLayout.addWidget(self.lblPeriodo, 2, 5, 1, 1)
        self.gridLayout.addLayout(self.periodo, 2, 6, 1, 1)

        self.lblModoCpte = Etiqueta(texto="Modo comprobante")
        self.cboModoCpte = ComboConstComp()
        self.gridLayout.addWidget(self.lblModoCpte, 3, 0, 1, 1)
        self.gridLayout.addWidget(self.cboModoCpte, 3, 1, 1, 1)

        self.lblCAE = Etiqueta(texto='CAE/CAI')
        self.textCAE = EntradaTexto(placeholderText='CAE/CAI')
        self.gridLayout.addWidget(self.lblCAE, 3, 2, 1, 1)
        self.gridLayout.addWidget(self.textCAE, 3, 3, 1, 1)
        self.layoutPpal.addLayout(self.gridLayout)

        self.gridDatos = GrillaFactProv()
        self.layoutPpal.addWidget(self.gridDatos)

        self.gridTotales = QGridLayout()
        self.lblExentos = Etiqueta(texto="Exentos")
        self.textExentos = EntradaTexto(placeholderText="Exentos")
        self.gridTotales.addWidget(self.lblExentos, 0, 0)
        self.gridTotales.addWidget(self.textExentos, 0, 1)
        lblInternos = Etiqueta(texto="Imp. Internos")
        self.textInternos = EntradaTexto(placeholderText="Imp. Internos")
        self.gridTotales.addWidget(lblInternos, 0, 2)
        self.gridTotales.addWidget(self.textInternos, 0, 3)
        self.lblNeto = Etiqueta(texto="Netos")
        self.textNeto = EntradaTexto(enabled=False, placeholderText="Neto")
        self.gridTotales.addWidget(self.lblNeto, 0, 4)
        self.gridTotales.addWidget(self.textNeto, 0, 5)

        self.lblNoGravado = Etiqueta(texto="No gravados")
        self.textNoGravado = EntradaTexto(placeholderText="No gravados")
        self.gridTotales.addWidget(self.lblNoGravado, 1, 0)
        self.gridTotales.addWidget(self.textNoGravado, 1, 1)
        self.lblPercepcionDGR = Etiqueta(texto="Percepcion DGR")
        self.textPercepcionDGR = EntradaTexto(placeholderText="Percepcion DGR", enabled=False)
        self.gridTotales.addWidget(self.lblPercepcionDGR, 1, 2)
        self.gridTotales.addWidget(self.textPercepcionDGR, 1, 3)
        self.lblIVA = Etiqueta(texto="IVA")
        self.textIVA = EntradaTexto(enabled=False)
        self.gridTotales.addWidget(self.lblIVA, 1, 4)
        self.gridTotales.addWidget(self.textIVA, 1, 5)

        self.lblPercepcionIVA = Etiqueta(texto="Percepcion IVA")
        self.textPercepcionIVA = EntradaTexto(placeholderText="Percepcion IVA")
        self.gridTotales.addWidget(self.lblPercepcionIVA, 2, 0)
        self.gridTotales.addWidget(self.textPercepcionIVA, 2, 1)
        self.lblTotal = Etiqueta(texto="Total")
        self.textTotal = EntradaTexto(enabled=False)
        self.gridTotales.addWidget(self.lblTotal, 2, 4)
        self.gridTotales.addWidget(self.textTotal, 2, 5)

        self.layoutPpal.addLayout(self.gridTotales)

        self.layoutBotones = QHBoxLayout()
        self.btnGrabar = Boton(texto="Grabar", imagen='imagenes/if_save.png', autodefault=False, enabled=False)
        self.btnConstatacion = Boton(texto="Constatacion", imagen="imagenes/logoafipfondoblanco.png",
                                     autodefault=False, enabled=False)
        self.btnPercepDGR = Boton(texto="Percepcion DGR", imagen='imagenes/dgr-misiones.png',
                                  enabled=False, autodefault=False)
        self.btnCerrar = BotonCerrarFormulario(autodefault=False)
        self.layoutBotones.addWidget(self.btnGrabar)
        self.layoutBotones.addWidget(self.btnPercepDGR)
        self.layoutBotones.addWidget(self.btnConstatacion)
        self.layoutBotones.addWidget(self.btnCerrar)
        self.layoutPpal.addLayout(self.layoutBotones)
Ejemplo n.º 16
0
    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)
Ejemplo n.º 17
0
class UiBusqueda(Formulario):

    modelo = None  #modelo sobre la que se realiza la busqueda
    cOrden = ""  #orden de busqueda
    limite = 100  #maximo registros a mostrar
    campos = []  #campos a mostrar
    campoBusqueda = "nombre"  #campo sobre el cual realizar la busqueda
    lRetval = False  #indica si presiono en aceptar o cancelar
    ValorRetorno = ''  #valor que selecciono el usuario
    camposTabla = None  #los campos de la tabla
    campoRetorno = None  #campo del cual obtiene el dato para retornar el codigo/valor
    colRetorno = 0  #la columna de donde retorna el valor
    colBusqueda = 0  #la columno que establece la busqueda
    campoRetornoDetalle = ''  #campo que retorna el detalle
    condiciones = ''  #condiciones de filtrado

    def __init__(self):
        Formulario.__init__(self)
        self.setupUi(self)
        #self.CargaDatos()

    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(829, 556)
        Dialog.setWindowTitle("Busqueda de datos en {}".format(
            self.modelo._meta.name if self.modelo else ""))
        self.verticalLayout = QVBoxLayout(Dialog)
        self.verticalLayout.setObjectName("verticalLayout")
        self.lineEdit = EntradaTexto(Dialog,
                                     tooltip='Ingresa tu busqueda',
                                     placeholderText="Ingresa tu busqueda")
        self.lineEdit.setObjectName("lineEdit")
        self.verticalLayout.addWidget(self.lineEdit)
        self.tableView = QTableWidget(Dialog)
        self.tableView.setObjectName("tableView")
        font = QFont()
        font.setPointSize(12)
        self.tableView.setFont(font)
        self.verticalLayout.addWidget(self.tableView)
        self.horizontalLayout = QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.btnAceptar = BotonAceptar(textoBoton="&Seleccionar")
        self.btnAceptar.setObjectName("btnAceptar")
        self.horizontalLayout.addWidget(self.btnAceptar)
        self.btnCancelar = BotonCerrarFormulario()
        self.btnCancelar.setObjectName("btnCancelar")
        self.horizontalLayout.addWidget(self.btnCancelar)
        self.verticalLayout.addLayout(self.horizontalLayout)

        #self.retranslateUi(Dialog)
        self.btnCancelar.clicked.connect(self.Cerrar)
        self.lineEdit.textChanged.connect(self.CargaDatos)
        self.btnAceptar.clicked.connect(self.Aceptar)
        self.tableView.cellClicked.connect(self.cell_was_clicked)
        self.tableView.doubleClicked.connect(self.Aceptar)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog",
                                         "Busqueda en " + self.tabla))
        self.btnAceptar.setText(_translate("Dialog", "Aceptar"))
        self.btnCancelar.setText(_translate("Dialog", "Cerrar"))

    def Aceptar(self):
        self.lRetval = True
        if self.tableView.currentItem():
            self.ValorRetorno = self.tableView.currentItem().text()
            self.ValorRetorno = self.tableView.item(
                self.tableView.currentRow(), self.colRetorno).text()
            self.campoRetornoDetalle = self.tableView.item(
                self.tableView.currentRow(), self.colBusqueda).text()
            print("Seleccionado {} columna {} fila {}".format(
                self.ValorRetorno, self.tableView.currentColumn(),
                self.tableView.currentRow()))
            self.close()

    def cell_was_clicked(self, row, column):
        item = self.tableView.item(row, column)

        self.ValorRetorno = item.text()
        logging.info(
            "Row {} and Column {} was clicked value {} item {}".format(
                row, column,
                self.tableView.currentItem().text(), item))

    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 keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_Down:
            self.tableView.setFocus()
        elif event.key() == QtCore.Qt.Key_Enter or event.key(
        ) == QtCore.Qt.Key_Return:
            self.btnAceptar.click()
Ejemplo n.º 18
0
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()