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)
Пример #2
0
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)
Пример #3
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()
Пример #4
0
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)