Exemplo n.º 1
0
class SubWindow(QWidget):
    def createSubWindow(self):
        parent = None
        super(SubWindow, self).__init__(parent)
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
        self.setObjectName("InterFazSalida")
        self.resize(1051, 721)

        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("../imagenes/medicina.png"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.setWindowIcon(icon)
        self.setStyleSheet("*{\n"
                           "font-family:century gothic;\n"
                           "font-size: 12px;\n"
                           "}\n"
                           "#Frame2{\n"
                           "border-radius:30;\n"
                           "}\n"
                           "QLineEdit{\n"
                           "    border:none;\n"
                           "    border-bottom: 1px solid black;\n"
                           "}\n"
                           "QFrame{\n"
                           "border-radius: 60px;\n"
                           " background:#fefefe;\n"
                           "}\n"
                           "QLabel{\n"
                           "    background:transparent;\n"
                           "}\n"
                           "QCalendarWidget QAbstractItemView\n"
                           "{ \n"
                           "selection-background-color: #042944; \n"
                           "selection-color: white;\n"
                           "selection-border:10px solid red;\n"
                           "\n"
                           "}\n"
                           "QCalendarWidget QWidget \n"
                           "{\n"
                           "  color:grey;\n"
                           "}\n"
                           "QCalendarWidget QTableView{\n"
                           "border-width:0px;\n"
                           "background-color:lightgrey;\n"
                           "}\n"
                           "\n"
                           "QPushButton:hover{\n"
                           "background:#dea806;\n"
                           "}")
        self.frame_2 = QtWidgets.QFrame(self)
        self.frame_2.setGeometry(QtCore.QRect(40, 110, 961, 560))
        self.frame_2.setStyleSheet("\n" " background:#fefefe;\n" "\n" "")
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.label_8 = QtWidgets.QLabel(self.frame_2)
        self.label_8.setGeometry(QtCore.QRect(20, 20, 81, 21))
        self.label_8.setObjectName("label_8")
        self.LineClaveSalida = QtWidgets.QLineEdit(self.frame_2)
        self.LineClaveSalida.setGeometry(QtCore.QRect(80, 20, 191, 31))
        self.LineClaveSalida.setObjectName("LineClaveSalida")
        self.label_9 = QtWidgets.QLabel(self.frame_2)
        self.label_9.setGeometry(QtCore.QRect(290, 20, 91, 21))
        self.label_9.setObjectName("label_9")
        self.btnFinalizarSalida = QtWidgets.QPushButton(self.frame_2)
        self.btnFinalizarSalida.setGeometry(QtCore.QRect(780, 520, 141, 31))
        self.btnFinalizarSalida.setStyleSheet("QPushButton{\n"
                                              "border-radius:15px;\n"
                                              "background:#ffc001;\n"
                                              "\n"
                                              "}\n"
                                              "QPushButton:hover{\n"
                                              "background:#dea806;\n"
                                              "}\n"
                                              "")
        self.btnFinalizarSalida.setObjectName("btnFinalizarSalida")
        self.TableSalida = QtWidgets.QTableWidget(self.frame_2)
        self.TableSalida.setGeometry(QtCore.QRect(10, 280, 941, 230))
        self.TableSalida.setObjectName("TableSalida")
        self.TableSalida.setColumnCount(9)
        self.TableSalida.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap("../imagenes/ic_delete_128_28267.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        item.setIcon(icon1)
        self.TableSalida.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableSalida.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableSalida.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableSalida.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableSalida.setHorizontalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableSalida.setHorizontalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableSalida.setHorizontalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableSalida.setHorizontalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableSalida.setHorizontalHeaderItem(8, item)

        #
        # #que la tabla no pueda ser editada
        self.TableSalida.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)
        #
        #

        self.tableViewSalida = QtWidgets.QTableView(self.frame_2)
        self.tableViewSalida.setGeometry(QtCore.QRect(10, 70, 941, 200))
        self.tableViewSalida.setEditTriggers(
            QtWidgets.QAbstractItemView.NoEditTriggers)
        self.tableViewSalida.setObjectName("tableViewSalida")
        self.LineDescripSalida = QtWidgets.QLineEdit(self.frame_2)
        self.LineDescripSalida.setGeometry(QtCore.QRect(370, 20, 541, 31))
        self.LineDescripSalida.setObjectName("LineDescripSalida")
        self.btnTotalEntradasEntra = QtWidgets.QPushButton(self.frame_2)
        self.btnTotalEntradasEntra.setGeometry(QtCore.QRect(710, 520, 51, 31))
        self.btnTotalEntradasEntra.setStyleSheet("QPushButton{\n"
                                                 "border-radius:15px;\n"
                                                 "background:#ffc001;\n"
                                                 "\n"
                                                 "}\n"
                                                 "QPushButton:hover{\n"
                                                 "background:#dea806;\n"
                                                 "}\n"
                                                 "")
        self.btnTotalEntradasEntra.setText("")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap("../imagenes/papeleo.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.btnTotalEntradasEntra.setIcon(icon2)
        self.btnTotalEntradasEntra.setIconSize(QtCore.QSize(30, 30))
        self.btnTotalEntradasEntra.setObjectName("btnTotalEntradasEntra")
        self.Frame2 = QtWidgets.QFrame(self)
        self.Frame2.setGeometry(QtCore.QRect(80, 20, 881, 71))
        self.Frame2.setStyleSheet("\n" " background:#fefefe;\n" "\n" "")
        self.Frame2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.Frame2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Frame2.setObjectName("Frame2")
        self.label_16 = QtWidgets.QLabel(self.Frame2)
        self.label_16.setGeometry(QtCore.QRect(30, 10, 61, 20))
        self.label_16.setObjectName("label_16")
        self.label_17 = QtWidgets.QLabel(self.Frame2)
        self.label_17.setGeometry(QtCore.QRect(550, 10, 91, 21))
        self.label_17.setObjectName("label_17")
        self.LineControlSalida = QtWidgets.QLineEdit(self.Frame2)
        self.LineControlSalida.setEnabled(False)
        self.LineControlSalida.setGeometry(QtCore.QRect(90, 10, 121, 21))
        self.LineControlSalida.setObjectName("LineControlSalida")
        self.DateFechaPSalida = QtWidgets.QDateEdit(self.Frame2)
        self.DateFechaPSalida.setGeometry(QtCore.QRect(640, 10, 121, 22))
        self.DateFechaPSalida.setAccelerated(False)
        self.DateFechaPSalida.setProperty("showGroupSeparator", False)
        self.DateFechaPSalida.setCalendarPopup(True)
        self.DateFechaPSalida.setTimeSpec(QtCore.Qt.UTC)
        self.DateFechaPSalida.setDate(QtCore.QDate(2020, 1, 1))
        self.DateFechaPSalida.setObjectName("DateFechaPSalida")
        self.label_18 = QtWidgets.QLabel(self.Frame2)
        self.label_18.setGeometry(QtCore.QRect(30, 40, 51, 20))
        self.label_18.setObjectName("label_18")
        self.LineAreaSalida = QtWidgets.QLineEdit(self.Frame2)
        self.LineAreaSalida.setGeometry(QtCore.QRect(90, 40, 121, 21))
        self.LineAreaSalida.setObjectName("LineAreaSalida")
        self.label_19 = QtWidgets.QLabel(self.Frame2)
        self.label_19.setGeometry(QtCore.QRect(550, 40, 91, 21))
        self.label_19.setObjectName("label_19")
        self.DateFechaESalida = QtWidgets.QDateEdit(self.Frame2)
        self.DateFechaESalida.setGeometry(QtCore.QRect(640, 40, 121, 22))
        self.DateFechaESalida.setAccelerated(False)
        self.DateFechaESalida.setProperty("showGroupSeparator", False)
        self.DateFechaESalida.setCalendarPopup(True)
        self.DateFechaESalida.setTimeSpec(QtCore.Qt.UTC)
        self.DateFechaESalida.setDate(QtCore.QDate(2020, 1, 1))
        self.DateFechaESalida.setObjectName("DateFechaESalida")
        self.comboboxSalida = QtWidgets.QComboBox(self.Frame2)
        self.comboboxSalida.setGeometry(QtCore.QRect(350, 20, 151, 22))
        self.comboboxSalida.setObjectName("comboboxSalida")
        self.comboboxSalida.addItem("")
        self.comboboxSalida.addItem("")
        self.label_20 = QtWidgets.QLabel(self.Frame2)
        self.label_20.setGeometry(QtCore.QRect(310, 20, 31, 20))
        self.label_20.setObjectName("label_20")

        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)
        self.setTabOrder(self.LineAreaSalida, self.comboboxSalida)
        self.setTabOrder(self.comboboxSalida, self.DateFechaPSalida)
        self.setTabOrder(self.DateFechaPSalida, self.DateFechaESalida)
        self.setTabOrder(self.DateFechaESalida, self.LineClaveSalida)
        self.setTabOrder(self.LineClaveSalida, self.btnTotalEntradasEntra)
        self.setTabOrder(self.btnTotalEntradasEntra, self.btnFinalizarSalida)
        self.setTabOrder(self.btnFinalizarSalida, self.tableViewSalida)
        self.setTabOrder(self.tableViewSalida, self.TableSalida)
        self.setTabOrder(self.TableSalida, self.LineControlSalida)
        self.setTabOrder(self.LineControlSalida, self.LineDescripSalida)
        self.LineControlSalida.setToolTip('Numero automatico de la salida')
        self.LineAreaSalida.setToolTip(
            'Destino de la salida de los medicamentos o materiales de curación'
        )
        self.comboboxSalida.setToolTip(
            'Eligir medicamento o material de curación')
        self.DateFechaPSalida.setToolTip('Introducir fecha del pedido')
        self.DateFechaESalida.setToolTip('Introducir fecha de la entrada')
        self.LineClaveSalida.setToolTip(
            'Clave del medicamento o matarial de curación')
        self.LineDescripSalida.setToolTip(
            'Descripción del medicamento o material de curación')
        self.btnFinalizarSalida.setToolTip(
            'Se envian los datos para generar reporte y se guardan al bd')

        # self.setTabOrder(self.LineClaveSalida, self.LineDescripSalida)
        # self.setTabOrder(self.LineDescripSalida, self.btnFinalizarSalida)

        #INICIO DEL CODIGO
        now = datetime.now()
        self.DateFechaESalida.setDate(now)
        self.DateFechaPSalida.setDate(now)

        self.NcontrolS()
        self.TableViewInsertSalida()
        self.comboboxSalida.currentIndexChanged.connect(
            self.TableViewInsertSalida)

        #cuando se le da el click a esto , le otorga los permisos de busqueda

        self.LineDescripSalida.mousePressEvent = self.click
        self.LineClaveSalida.mousePressEvent = self.click

        #funcion para enviar los datos a la base de datos y crear el archivo.
        self.btnFinalizarSalida.clicked.connect(self.bdFinalizarSalida)
        self.tableViewSalida.doubleClicked.connect(self.insertDatosTablaWid)
        self.listaId = []
        self.listaCantidad = []
        self.listaLote = []

        self.btnTotalEntradasEntra.clicked.connect(self.openRef)
        self.EnOsal = 0

    #mete los datos de la tabla a la base de datos
    def bdFinalizarSalida(self):
        try:
            DfSalida = pd.DataFrame()
            self.DfReport = pd.DataFrame()
            #el func.max es la funcion SELECT MAX de sql (obtiene el dato con mayor valor)
            Npedido = session.query(func.max(Salida.numero_pedido)).scalar()
            if Npedido is None:
                Npedido = 0
            self.Npedidoup = int(Npedido + 1)
            rows = self.TableSalida.rowCount()
            Column = self.TableSalida.columnCount()
            #TUVIMOS QUE ARREGLAR EL ORDEN DE LOS HEADERS PARA QUE JALE LA CONSULTA JUSTO CON LA TABLA DE BD Y EL DATAFRAME
            headers = [
                'clave_corta', 'cantidadSal', 'Caducidad', 'FechaPedido',
                'fechaEntrega', 'area', 'lote', 'numero_pedido', 'idFarmaco'
            ]
            for i in range(rows):
                for j in range(Column + 4):
                    # Este If es por que no necesitamos las columnas de descripcion y presentacion en el ingreso al DATAFRAME ya que al ingresar el dataframe a la BD no estan esos campos
                    if j != 3 and j != 4 and j != 0 and j != 9 and j != 10 and j != 11 and j != 1 and j != 12:
                        DfSalida.loc[i, j] = self.TableSalida.item(i, j).text()
                    if j == 9:
                        DfSalida.loc[i, j] = self.LineAreaSalida.text()
                    if j == 10:
                        DfSalida.loc[i, j] = self.listaLote[i]
                    if j == 11:
                        DfSalida.loc[i, j] = self.Npedidoup
                    if j == 12:
                        DfSalida.loc[i, j] = self.listaId[i]

            DfSalida.columns = headers
            #print(DfSalida)
            #Ingreso DEl dataframe a la bd tipo ingreso pandas(NO SQLALCHEMY)
            DfSalida.to_sql('salida', engine, index=False, if_exists="append")
            #ciclo para que vaya ejecutando el update de cada uno de ellos
            self.listaCantidad
            rango = len(self.listaId)
            for i in range(rango):
                idd = self.listaId[i]
                #obtengo todos los datos de ese ID y actualizo el de cantidad - la cantidad que se resta
                QueryUpdate = session.query(Farmaco).get(idd)
                QueryUpdate.cantidad = QueryUpdate.cantidad - int(
                    self.listaCantidad[i])
                loquequedo = QueryUpdate.cantidad
                if loquequedo == 0:
                    session.delete(QueryUpdate)

                #para que se realice el cambio
                session.commit()
                session.close()

            #aqui abrimos la ventana de observaciones
            self.vtnObserv = QtWidgets.QWidget()
            self.uiObser = Ui_Observaciones()
            self.uiObser.setupUi(self.vtnObserv)
            self.vtnObserv.show()
            self.uiObser.btnAceptarObservaciones.clicked.connect(
                self.observaciones)

            #receteamos el numero de control para que no exista problemas
            self.NcontrolS()
            #limpiamos la lista para que no contenga un ID y acepte todos nuevamente
            self.listaId[:] = []
            self.listaCantidad[:] = []
            # self.listaLote[:] =[]
            self.TableViewInsertSalida()
        except Exception as e:
            print(e)
            self.LineAreaSalida.setFocus()
            error_dialog = QtWidgets.QMessageBox()
            error_dialog.setIcon(QtWidgets.QMessageBox.Critical)
            error_dialog.setText("No hay datos en la tabla")
            error_dialog.setWindowTitle("Error")
            error_dialog.exec()

    def EnvioReport(self):
        # mandando datos para generar reportes
        datarow = [
            'Clave', 'Descripción', 'Presentación', 'Cantidad', 'Caducidad',
            'Lote'
        ]
        dataall = list()
        dataall.append(datarow)
        for row in range(self.TableSalida.rowCount()):
            datarow = []
            for column in range(self.TableSalida.columnCount()):
                if column > 1 and column < 7:
                    datarow.append(
                        str(self.TableSalida.item(row, column).text()))
            datarow.append(self.listaLote[row])
            dataall.append(datarow)

        print(dataall)
        # borramos los datos de la tablaWidget
        for i in reversed(range(self.TableSalida.rowCount())):
            self.TableSalida.removeRow(i)

        Date = self.DateFechaESalida.date()
        FechaEsalida = Date.toPyDate()
        Date = self.DateFechaPSalida.date()
        FechaPsalida = Date.toPyDate()
        idSalidaU = int(self.LineControlSalida.text()) - 1

        tipo = 1
        reportes(dataall, self.LineAreaSalida.text(), self.Npedidoup,
                 str(FechaEsalida), str(FechaPsalida), self.vObserva, tipo)

    def observaciones(self):
        self.vObserva = self.uiObser.textObservaciones.toPlainText()
        self.EnvioReport()
        self.closeVtn()

    #mete los datos al TableWidget
    def insertDatosTablaWid(self):
        indexTableview = self.tableViewSalida.currentIndex().row()
        #saca id ID de la tableView
        self.claveid = self.tableViewSalida.model().index(indexTableview,
                                                          0).data()
        self.Lote = self.tableViewSalida.model().index(indexTableview,
                                                       4).data()
        self.listaLote.append(self.Lote)
        print(self.claveid)
        #pregunta si el id de farmaco se repite en la tablaview, si no ... entra y si si... no puede
        if not self.claveid in self.listaId:
            #consulta para sacar los campos  y luego meterlos al tableWidget
            self.Query = session.query(
                Clave.descripcion, Clave.presentacion, Farmaco.cantidad,
                Farmaco.caducidad).join(Clave).filter(
                    Farmaco.idFarmaco == self.claveid).one()
            #print(self.Query)
            #aqui quiero preguntar la cantidad
            self.ventanaCanti = QtWidgets.QDialog()
            self.vtncanti = Ui_vtnCantidad()
            self.vtncanti.setupUi(self.ventanaCanti)
            self.ventanaCanti.show()
            self.vtncanti.btnAceptardialogSalida.clicked.connect(
                self.inserDatosBtn)
            self.vtncanti.btnCancelardialogSalida.clicked.connect(
                self.closeVtn)
            #hace que el LineEdit solo puedan introducir numeros
            intonly = QIntValidator()
            self.vtncanti.LineCantidaddialogSalida.setValidator(intonly)
        else:
            error_dialog = QtWidgets.QMessageBox()
            error_dialog.setIcon(QtWidgets.QMessageBox.Critical)
            error_dialog.setText("Este Farmaco ya esta agregado")
            error_dialog.setWindowTitle("Error")
            error_dialog.exec()

    #cierra la ventana de vtnCantidad
    def closeVtn(self):
        QtWidgets.qApp.activeWindow().close()

    def inserDatosBtn(self):
        try:
            error_dialog = QtWidgets.QMessageBox()
            error_dialog.setIcon(QtWidgets.QMessageBox.Critical)
            cantidadPuesta = int(self.vtncanti.LineCantidaddialogSalida.text())
            self.CantixId = cantidadPuesta
            if cantidadPuesta <= self.Query[2] and cantidadPuesta != 0:
                #####################################
                #cambio el formato de fecha
                Date = self.DateFechaESalida.date()
                FechaEsalida = Date.toPyDate()
                Date = self.DateFechaPSalida.date()
                FechaPsalida = Date.toPyDate()
                it = self.tableViewSalida.currentIndex().row()
                self.Clavecorta = self.tableViewSalida.model().index(it,
                                                                     1).data()
                Nrow = self.TableSalida.rowCount()
                self.TableSalida.insertRow(Nrow)
                #campos para el boton de eliminar
                self.btnDeleteSalida = QtWidgets.QPushButton(self)
                self.btnDeleteSalida.setGeometry(QtCore.QRect(320, 20, 21, 21))
                IconoDelete2 = QtGui.QIcon()
                IconoDelete2.addPixmap(
                    QtGui.QPixmap("../imagenes/ic_delete_128_28267.png"),
                    QtGui.QIcon.Normal, QtGui.QIcon.Off)
                self.btnDeleteSalida.setIcon(IconoDelete2)
                self.btnDeleteSalida.setStyleSheet("QPushButton{\n"
                                                   "border-radius:15px;\n"
                                                   "background:#fefefe;\n"
                                                   "\n"
                                                   "}\n"
                                                   "QPushButton:hover{\n"
                                                   "background:#dea806;\n"
                                                   "}\n"
                                                   "")

                #agrega al tableWidget
                self.TableSalida.setCellWidget(Nrow, 0, self.btnDeleteSalida)
                self.TableSalida.setItem(
                    Nrow, 1,
                    QTableWidgetItem(str(self.LineControlSalida.text())))
                self.TableSalida.setItem(
                    Nrow, 2, QTableWidgetItem(str(self.Clavecorta)))
                self.TableSalida.setItem(Nrow, 3,
                                         QTableWidgetItem(str(self.Query[0])))
                self.TableSalida.item(Nrow, 3).setToolTip(str(self.Query[0]))
                self.TableSalida.setItem(Nrow, 4,
                                         QTableWidgetItem(str(self.Query[1])))
                self.TableSalida.item(Nrow, 4).setToolTip(str(self.Query[1]))
                self.TableSalida.setItem(Nrow, 5,
                                         QTableWidgetItem(str(cantidadPuesta)))
                self.TableSalida.setItem(Nrow, 6,
                                         QTableWidgetItem(str(self.Query[3])))
                self.TableSalida.setItem(Nrow, 7,
                                         QTableWidgetItem(str(FechaEsalida)))
                self.TableSalida.setItem(Nrow, 8,
                                         QTableWidgetItem(str(FechaPsalida)))

                self.btnDeleteSalida.clicked.connect(self.contadorSalida)
                #aumenta el numero en el control de salida
                self.NcontrolS()
                #Agrega el id a una lsita para que no pueda repetir
                self.listaId.append(self.claveid)
                self.listaCantidad.append(self.CantixId)
                #cierra la ventana
                self.closeVtn()
            else:
                #el dato puesto no sea 0
                if cantidadPuesta == 0:
                    error_dialog.setText("Ingresa una cantidad mayor")
                    error_dialog.setWindowTitle("Error")
                    error_dialog.exec()
                else:
                    #si el dato puesto es mayor a la existencia
                    error_dialog.setText("Ingresa una cantidad Menor")
                    error_dialog.setWindowTitle("Error")
                    error_dialog.exec()
        except:
            error_dialog.setText("Cantidad Vacia")
            error_dialog.setWindowTitle("Error")
            error_dialog.exec()

    #funcion con la cual controlamos el control de salida
    def NcontrolS(self):
        #self.Ncontrol = session.query(func.max(Salida.numero_pedido)).scalar()
        self.Ncontrol = session.execute("""
    SELECT AUTO_INCREMENT
    FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = "farmaciadb"
    AND TABLE_NAME = "salida"
""").scalar()
        # if self.Ncontrol  is None:
        #     self.Ncontrol = 0

        self.LineControlSalida.setText(str(self.Ncontrol))
        session.close()

    #Elimina filas den tableWidget y resta a al control de salida
    def contadorSalida(self):
        rowC = self.TableSalida.currentRow()
        print(rowC)
        #aqui elimina el ID de la lista de los ID
        self.listaId.pop(rowC)
        self.listaCantidad.pop(rowC)
        self.listaLote.pop(rowC)
        self.TableSalida.removeRow(rowC)
        row2 = self.TableSalida.rowCount()

    #le pasa el parametro de busqueda al lineDescribe
    def click(self, event):
        if event.buttons() and QtCore.Qt.LeftButton:
            self.TableViewInsertSalida()

    #Rellena el TableView Atravez de un QstandarItem
    def TableViewInsertSalida(self):
        #poner otra columna del ID-FARMACO

        self.x = str(self.comboboxSalida.currentIndex())
        self.q = session.query(Farmaco.idFarmaco, Farmaco.clave_corta,
                               Clave.descripcion, Farmaco.caducidad,
                               Farmaco.lote, Farmaco.cantidad, Farmaco.area,
                               Farmaco.fechaIngreso).join(Clave).filter(
                                   Clave.tipo == self.x).all()
        #print(self.q)
        self.numero = session.query(Farmaco.clave_corta).join(Clave).filter(
            Clave.tipo == self.x).count()
        self.model = QStandardItemModel(0, 8)
        self.model.setHorizontalHeaderLabels([
            'Id farmaco', 'Clave', 'Descripción', 'Caducidad', 'Lote',
            'Cantidad', 'Area Almacen', 'Fecha Ingreso'
        ])
        self.tableViewSalida.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        print('cambio realizado')
        #aqui se necesita convertir a str por que el datatime hacia problemas
        for i, row in enumerate(self.q):
            for j, item in enumerate(row):
                add = QStandardItem(str(item))
                if j == 2:
                    add.setToolTip(str(item))
                if j == 6:
                    add.setToolTip(str(item))
                self.model.setItem(i, j, add)
        #se instancia la clase , esa clase nos ayuda que al escribir busque algo
        buscador = QSortFilterProxyModel()
        #este sirve para que puedan buscar alguna cosa no importa si es en mayusculas o minusculas
        buscador.setFilterCaseSensitivity(Qt.CaseInsensitive)
        buscador.setSourceModel(self.model)
        #aqui le indicamos en que columba de la tabla va a filter cosas segun lo que se escriba
        buscador.setFilterKeyColumn(1)
        self.LineClaveSalida.textChanged.connect(buscador.setFilterRegExp)
        #condicion para que pueda buscar en descripcion
        if self.LineDescripSalida.hasFocus():
            buscador.setFilterKeyColumn(2)
            self.LineDescripSalida.textChanged.connect(
                buscador.setFilterRegExp)
        self.tableViewSalida.setModel(buscador)
        #sirve para darle color a las celdas de cantidad las que tienen menor a 10 o 10
        for h in range(self.numero):
            cantiRojo = int(self.tableViewSalida.model().index(h, 5).data())
            #print(cantiRojo)
            if cantiRojo <= 10:
                self.model.setData(self.model.index(h, 5),
                                   QtGui.QBrush(QtCore.Qt.white),
                                   QtCore.Qt.ForegroundRole)
                self.model.setData(self.model.index(h, 5),
                                   QtGui.QBrush(QtGui.QColor(236, 47, 6)),
                                   QtCore.Qt.BackgroundRole)

        #poner de color rojo los farmacos que esten mejor de 10

        #IMPORTATE cerrar la sesion ya que una session tiene los datos de cuando fue abierta , si quieres obtener nuevos datos no podras por que necesitas una nueva session
        #y esa session tendra los nuevos datos
        #cerrar session y automaticamente se abre otra.
        session.close()

    def update(self):
        self.TableViewInsertSalida()

    def openRef(self):
        self.vtnRef = QtWidgets.QWidget()
        self.uiRef = Ui_VtnES(self.EnOsal)
        self.uiRef.setupUi(self.vtnRef)
        self.vtnRef.show()

    def retranslateUi(self):
        _translate = QtCore.QCoreApplication.translate
        #self.setWindowTitle(_translate("InterFazSalida", "Salidas"))
        self.label_8.setText(_translate("InterFazSalida", "Clave:"))
        self.label_9.setText(_translate("InterFazSalida", "Descripción:"))
        self.btnFinalizarSalida.setText(
            _translate("InterFazSalida", "Finalizar"))
        item = self.TableSalida.horizontalHeaderItem(0)
        item.setText(_translate("InterFazSalida", "Eliminar"))
        item = self.TableSalida.horizontalHeaderItem(1)
        item.setText(_translate("InterFazSalida", "N.Salida"))
        item = self.TableSalida.horizontalHeaderItem(2)
        item.setText(_translate("InterFazSalida", "Clave"))
        item = self.TableSalida.horizontalHeaderItem(3)
        item.setText(_translate("InterFazSalida", "Descripción"))
        item = self.TableSalida.horizontalHeaderItem(4)
        item.setText(_translate("InterFazSalida", "Presentación"))
        item = self.TableSalida.horizontalHeaderItem(5)
        item.setText(_translate("InterFazSalida", "Cantidad"))
        item = self.TableSalida.horizontalHeaderItem(6)
        item.setText(_translate("InterFazSalida", "Caducidad"))
        item = self.TableSalida.horizontalHeaderItem(7)
        item.setText(_translate("InterFazSalida", "Fecha pedido"))
        item = self.TableSalida.horizontalHeaderItem(8)
        item.setText(_translate("InterFazSalida", "Fecha Entrega"))

        self.btnTotalEntradasEntra.setShortcut(
            _translate("InterFazSalida", "Ctrl+E"))
        self.label_16.setText(_translate("InterFazSalida", "N.Salida:"))
        self.label_17.setText(_translate("InterFazSalida", "Fecha Entrega:"))
        self.DateFechaPSalida.setDisplayFormat(
            _translate("InterFazSalida", "dd/MM/yyyy"))
        self.label_18.setText(_translate("InterFazSalida", "Destino:"))
        self.label_19.setText(_translate("InterFazSalida", "Fecha Pedido:"))
        self.DateFechaESalida.setDisplayFormat(
            _translate("InterFazSalida", "dd/MM/yyyy"))
        self.comboboxSalida.setItemText(
            0, _translate("InterFazSalida", "Medicamento"))
        self.comboboxSalida.setItemText(
            1, _translate("InterFazSalida", "M.Curacion"))
        self.label_20.setText(_translate("InterFazSalida", "Tipo:"))
Exemplo n.º 2
0
 def openRef(self):
     self.vtnRef = QtWidgets.QWidget()
     self.uiRef = Ui_VtnES(self.EnOsal)
     self.uiRef.setupUi(self.vtnRef)
     self.vtnRef.show()
class Ui_Main(object):
    def setupUi(self, Main):
        Main.setObjectName("Main")
        Main.resize(1291, 911)
        Main.setMaximumSize(QtCore.QSize(1291, 911))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("../imagenes/Mono.png"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Main.setWindowIcon(icon)
        Main.setStyleSheet("*{\n"
                           "font-family:century gothic;\n"
                           "font-size: 15px;\n"
                           "}\n"
                           "QFrame{\n"
                           "border-radius: 60px;\n"
                           " background:#fefefe;\n"
                           "}\n"
                           "QLabel{\n"
                           "    background:transparent;\n"
                           "}\n"
                           "#Main{\n"
                           "background: #b8f4f0;\n"
                           "}\n"
                           "QLineEdit{\n"
                           "    border:none;\n"
                           "    border-bottom: 1px solid black;\n"
                           "}\n"
                           "\n"
                           "#FrameEntradaprimero{\n"
                           "border-radius:30px;\n"
                           "}")
        self.centralwidget = QtWidgets.QWidget(Main)
        self.centralwidget.setStyleSheet("")
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(0, 0, 121, 350))
        self.label.setText("")
        self.label.setPixmap(
            QtGui.QPixmap("../imagenes/decoracion10reves2.png"))
        self.label.setScaledContents(True)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(1170, 0, 121, 350))
        self.label_2.setText("")
        self.label_2.setPixmap(QtGui.QPixmap("../imagenes/volteada.png"))
        self.label_2.setScaledContents(True)
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(180, 10, 191, 70))
        self.label_3.setText("")
        self.label_3.setPixmap(QtGui.QPixmap("../imagenes/salud_logo.png"))
        self.label_3.setScaledContents(True)
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(840, 10, 201, 70))
        self.label_4.setText("")
        self.label_4.setPixmap(QtGui.QPixmap("../imagenes/chiapas.png"))
        self.label_4.setScaledContents(True)
        self.label_4.setObjectName("label_4")
        self.mdiArea = QtWidgets.QMdiArea(self.centralwidget)
        self.mdiArea.setGeometry(QtCore.QRect(120, 90, 1051, 721))
        self.mdiArea.setStyleSheet("background-color: rgb(184, 244, 240);\n"
                                   "")
        self.mdiArea.setObjectName("mdiArea")
        self.subwindowEntradas = QtWidgets.QWidget()
        self.subwindowEntradas.setStyleSheet(
            "QCalendarWidget QAbstractItemView\n"
            "{ \n"
            "selection-background-color: #042944; \n"
            "selection-color: white;\n"
            "selection-border:10px solid red;\n"
            "\n"
            "}\n"
            "QCalendarWidget QWidget \n"
            "{\n"
            "  color:grey;\n"
            "}\n"
            "QCalendarWidget QTableView{\n"
            "border-width:0px;\n"
            "background-color:lightgrey;\n"
            "}\n"
            "\n"
            "QPushButton:hover{\n"
            "background:#dea806;\n"
            "}")
        self.subwindowEntradas.setObjectName("subwindowEntradas")
        self.FrameEntradaprimero = QtWidgets.QFrame(self.subwindowEntradas)
        self.FrameEntradaprimero.setGeometry(QtCore.QRect(40, 20, 921, 81))
        self.FrameEntradaprimero.setStyleSheet("\n" "background:#fefefe;\n" "")
        self.FrameEntradaprimero.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.FrameEntradaprimero.setFrameShadow(QtWidgets.QFrame.Raised)
        self.FrameEntradaprimero.setObjectName("FrameEntradaprimero")
        self.label_5 = QtWidgets.QLabel(self.FrameEntradaprimero)
        self.label_5.setGeometry(QtCore.QRect(20, 10, 91, 20))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.FrameEntradaprimero)
        self.label_6.setGeometry(QtCore.QRect(650, 40, 71, 21))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.FrameEntradaprimero)
        self.label_7.setGeometry(QtCore.QRect(650, 10, 81, 20))
        self.label_7.setObjectName("label_7")
        self.LineOrigenEntra = QtWidgets.QLineEdit(self.FrameEntradaprimero)
        self.LineOrigenEntra.setGeometry(QtCore.QRect(110, 9, 141, 21))
        self.LineOrigenEntra.setObjectName("LineOrigenEntra")
        self.DateFechaEntra = QtWidgets.QDateEdit(self.FrameEntradaprimero)
        self.DateFechaEntra.setGeometry(QtCore.QRect(740, 40, 121, 22))
        self.DateFechaEntra.setAccelerated(False)
        self.DateFechaEntra.setProperty("showGroupSeparator", False)
        self.DateFechaEntra.setCalendarPopup(True)
        self.DateFechaEntra.setTimeSpec(QtCore.Qt.UTC)
        self.DateFechaEntra.setDate(QtCore.QDate(2020, 1, 1))
        self.DateFechaEntra.setObjectName("DateFechaEntra")
        self.LineControlEntra = QtWidgets.QLineEdit(self.FrameEntradaprimero)
        self.LineControlEntra.setEnabled(False)
        self.LineControlEntra.setGeometry(QtCore.QRect(740, 10, 121, 21))
        self.LineControlEntra.setObjectName("LineControlEntra")
        self.label_15 = QtWidgets.QLabel(self.FrameEntradaprimero)
        self.label_15.setGeometry(QtCore.QRect(330, 40, 41, 20))
        self.label_15.setObjectName("label_15")
        self.comboBoxEntradas = QtWidgets.QComboBox(self.FrameEntradaprimero)
        self.comboBoxEntradas.setGeometry(QtCore.QRect(370, 40, 171, 22))
        self.comboBoxEntradas.setObjectName("comboBoxEntradas")
        self.comboBoxEntradas.addItem("")
        self.comboBoxEntradas.addItem("")
        self.LineReferenciaEntra = QtWidgets.QLineEdit(
            self.FrameEntradaprimero)
        self.LineReferenciaEntra.setEnabled(True)
        self.LineReferenciaEntra.setGeometry(QtCore.QRect(130, 50, 121, 21))
        self.LineReferenciaEntra.setObjectName("LineReferenciaEntra")
        self.label_16 = QtWidgets.QLabel(self.FrameEntradaprimero)
        self.label_16.setGeometry(QtCore.QRect(20, 50, 101, 20))
        self.label_16.setObjectName("label_16")
        self.label_17 = QtWidgets.QLabel(self.FrameEntradaprimero)
        self.label_17.setGeometry(QtCore.QRect(330, 10, 101, 21))
        self.label_17.setObjectName("label_17")
        self.DateFreferenciaEntra = QtWidgets.QDateEdit(
            self.FrameEntradaprimero)
        self.DateFreferenciaEntra.setGeometry(QtCore.QRect(430, 10, 110, 24))
        self.DateFreferenciaEntra.setAccelerated(False)
        self.DateFreferenciaEntra.setProperty("showGroupSeparator", False)
        self.DateFreferenciaEntra.setCalendarPopup(True)
        self.DateFreferenciaEntra.setTimeSpec(QtCore.Qt.UTC)
        self.DateFreferenciaEntra.setDate(QtCore.QDate(2020, 1, 1))
        self.DateFreferenciaEntra.setObjectName("DateFreferenciaEntra")
        self.frame_2 = QtWidgets.QFrame(self.subwindowEntradas)
        self.frame_2.setGeometry(QtCore.QRect(40, 120, 921, 531))
        self.frame_2.setStyleSheet("\n" " background:#fefefe;\n" "\n" "")
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.label_8 = QtWidgets.QLabel(self.frame_2)
        self.label_8.setGeometry(QtCore.QRect(50, 20, 81, 21))
        self.label_8.setObjectName("label_8")
        self.LineClaveEntra = QtWidgets.QLineEdit(self.frame_2)
        self.LineClaveEntra.setGeometry(QtCore.QRect(100, 10, 191, 31))
        self.LineClaveEntra.setObjectName("LineClaveEntra")
        self.label_9 = QtWidgets.QLabel(self.frame_2)
        self.label_9.setGeometry(QtCore.QRect(360, 20, 101, 21))
        self.label_9.setObjectName("label_9")
        self.TextDescriEntra = QtWidgets.QTextEdit(self.frame_2)
        self.TextDescriEntra.setEnabled(False)
        self.TextDescriEntra.setGeometry(QtCore.QRect(460, 10, 301, 51))
        self.TextDescriEntra.setStyleSheet(
            "background-color: rgb(184, 244, 240);\n"
            "")
        self.TextDescriEntra.setObjectName("TextDescriEntra")
        self.label_10 = QtWidgets.QLabel(self.frame_2)
        self.label_10.setGeometry(QtCore.QRect(360, 80, 101, 21))
        self.label_10.setObjectName("label_10")
        self.TableEntra = QtWidgets.QTableWidget(self.frame_2)
        self.TableEntra.setGeometry(QtCore.QRect(20, 170, 881, 321))
        self.TableEntra.setObjectName("TableEntra")
        self.TableEntra.setColumnCount(11)
        self.TableEntra.setRowCount(0)
        item = QtWidgets.QTableWidgetItem()
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap("../imagenes/ic_delete_128_28267.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        item.setIcon(icon1)
        self.TableEntra.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(6, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(7, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(8, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(9, item)
        item = QtWidgets.QTableWidgetItem()
        item.setTextAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignTop)
        self.TableEntra.setHorizontalHeaderItem(10, item)
        self.label_11 = QtWidgets.QLabel(self.frame_2)
        self.label_11.setGeometry(QtCore.QRect(20, 60, 71, 21))
        self.label_11.setObjectName("label_11")
        self.LineCantidadEntra = QtWidgets.QLineEdit(self.frame_2)
        self.LineCantidadEntra.setGeometry(QtCore.QRect(100, 60, 191, 20))
        self.LineCantidadEntra.setObjectName("LineCantidadEntra")
        self.label_12 = QtWidgets.QLabel(self.frame_2)
        self.label_12.setGeometry(QtCore.QRect(360, 130, 101, 21))
        self.label_12.setObjectName("label_12")
        self.btnClaveEntra = QtWidgets.QPushButton(self.frame_2)
        self.btnClaveEntra.setGeometry(QtCore.QRect(300, 20, 21, 21))
        self.btnClaveEntra.setText("")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap("../imagenes/lupa.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.btnClaveEntra.setIcon(icon2)
        self.btnClaveEntra.setIconSize(QtCore.QSize(20, 20))
        self.btnClaveEntra.setObjectName("btnClaveEntra")
        self.label_13 = QtWidgets.QLabel(self.frame_2)
        self.label_13.setGeometry(QtCore.QRect(20, 130, 91, 21))
        self.label_13.setObjectName("label_13")
        self.label_14 = QtWidgets.QLabel(self.frame_2)
        self.label_14.setGeometry(QtCore.QRect(60, 93, 41, 20))
        self.label_14.setObjectName("label_14")
        self.LineLoteEntra = QtWidgets.QLineEdit(self.frame_2)
        self.LineLoteEntra.setGeometry(QtCore.QRect(100, 90, 191, 21))
        self.LineLoteEntra.setObjectName("LineLoteEntra")
        self.btnFinalizarEntra = QtWidgets.QPushButton(self.frame_2)
        self.btnFinalizarEntra.setGeometry(QtCore.QRect(770, 100, 141, 31))
        self.btnFinalizarEntra.setStyleSheet("QPushButton{\n"
                                             "border-radius:15px;\n"
                                             "background:#ffc001;\n"
                                             "\n"
                                             "}\n"
                                             "QPushButton:hover{\n"
                                             "background:#dea806;\n"
                                             "}\n"
                                             "")
        self.btnFinalizarEntra.setObjectName("btnFinalizarEntra")
        self.DateCaducidadEntra = QtWidgets.QDateEdit(self.frame_2)
        self.DateCaducidadEntra.setGeometry(QtCore.QRect(120, 130, 171, 22))
        self.DateCaducidadEntra.setCalendarPopup(True)
        self.DateCaducidadEntra.setTimeSpec(QtCore.Qt.LocalTime)
        self.DateCaducidadEntra.setDate(QtCore.QDate(2020, 1, 1))
        self.DateCaducidadEntra.setObjectName("DateCaducidadEntra")
        self.TextPresentaEntra = QtWidgets.QTextEdit(self.frame_2)
        self.TextPresentaEntra.setEnabled(False)
        self.TextPresentaEntra.setGeometry(QtCore.QRect(460, 70, 301, 51))
        self.TextPresentaEntra.setStyleSheet(
            "background-color: rgb(184, 244, 240);\n"
            "")
        self.TextPresentaEntra.setObjectName("TextPresentaEntra")
        self.radioButton = QtWidgets.QRadioButton(self.frame_2)
        self.radioButton.setGeometry(QtCore.QRect(470, 130, 91, 17))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.frame_2)
        self.radioButton_2.setGeometry(QtCore.QRect(580, 130, 82, 17))
        self.radioButton_2.setObjectName("radioButton_2")
        self.btnAgregarEntra = QtWidgets.QPushButton(self.frame_2)
        self.btnAgregarEntra.setGeometry(QtCore.QRect(770, 60, 141, 31))
        self.btnAgregarEntra.setStyleSheet("QPushButton{\n"
                                           "border-radius:15px;\n"
                                           "background:#ffc001;\n"
                                           "\n"
                                           "}\n"
                                           "QPushButton:hover{\n"
                                           "background:#dea806;\n"
                                           "}\n"
                                           "")
        self.btnAgregarEntra.setObjectName("btnAgregarEntra")
        self.btnTotalEntradasEntra = QtWidgets.QPushButton(self.frame_2)
        self.btnTotalEntradasEntra.setGeometry(QtCore.QRect(820, 20, 41, 31))
        self.btnTotalEntradasEntra.setStyleSheet("QPushButton{\n"
                                                 "border-radius:15px;\n"
                                                 "background:#ffc001;\n"
                                                 "\n"
                                                 "}\n"
                                                 "QPushButton:hover{\n"
                                                 "background:#dea806;\n"
                                                 "}\n"
                                                 "")
        self.btnTotalEntradasEntra.setText("")
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap("../imagenes/papeleo.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.btnTotalEntradasEntra.setIcon(icon3)
        self.btnTotalEntradasEntra.setIconSize(QtCore.QSize(30, 30))
        self.btnTotalEntradasEntra.setObjectName("btnTotalEntradasEntra")
        Main.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(Main)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1291, 26))
        self.menubar.setObjectName("menubar")
        self.menuEntradas = QtWidgets.QMenu(self.menubar)
        self.menuEntradas.setObjectName("menuEntradas")
        self.menuSalidas = QtWidgets.QMenu(self.menubar)
        self.menuSalidas.setObjectName("menuSalidas")
        self.menuConsultas = QtWidgets.QMenu(self.menubar)
        self.menuConsultas.setObjectName("menuConsultas")
        self.menuClaves = QtWidgets.QMenu(self.menubar)
        self.menuClaves.setObjectName("menuClaves")
        self.menuAyuda = QtWidgets.QMenu(self.menubar)
        self.menuAyuda.setObjectName("menuAyuda")
        Main.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(Main)
        self.statusbar.setObjectName("statusbar")
        Main.setStatusBar(self.statusbar)
        self.toolBar = QtWidgets.QToolBar(Main)
        self.toolBar.setIconSize(QtCore.QSize(32, 32))
        self.toolBar.setObjectName("toolBar")
        Main.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.actionEntradas = QtWidgets.QAction(Main)
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap("../imagenes/agregar clave (2).png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionEntradas.setIcon(icon4)
        self.actionEntradas.setObjectName("actionEntradas")
        self.actionSalidas = QtWidgets.QAction(Main)
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap("../imagenes/medicina.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionSalidas.setIcon(icon5)
        self.actionSalidas.setObjectName("actionSalidas")
        self.actionkardex = QtWidgets.QAction(Main)
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap("../imagenes/salidas.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionkardex.setIcon(icon6)
        self.actionkardex.setObjectName("actionkardex")
        self.actionAgregar_claves = QtWidgets.QAction(Main)
        icon7 = QtGui.QIcon()
        icon7.addPixmap(QtGui.QPixmap("../imagenes/agregar clave (1).png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionAgregar_claves.setIcon(icon7)
        self.actionAgregar_claves.setObjectName("actionAgregar_claves")
        self.actionAyuda = QtWidgets.QAction(Main)
        icon8 = QtGui.QIcon()
        icon8.addPixmap(QtGui.QPixmap("../imagenes/manual.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionAyuda.setIcon(icon8)
        self.actionAyuda.setObjectName("actionAyuda")
        self.menuEntradas.addAction(self.actionEntradas)
        self.menuSalidas.addAction(self.actionSalidas)
        self.menuConsultas.addAction(self.actionkardex)
        self.menuClaves.addAction(self.actionAgregar_claves)
        self.menuAyuda.addAction(self.actionAyuda)
        self.menubar.addAction(self.menuEntradas.menuAction())
        self.menubar.addAction(self.menuSalidas.menuAction())
        self.menubar.addAction(self.menuConsultas.menuAction())
        self.menubar.addAction(self.menuClaves.menuAction())
        self.menubar.addAction(self.menuAyuda.menuAction())
        self.toolBar.addAction(self.actionEntradas)
        self.toolBar.addAction(self.actionSalidas)
        self.toolBar.addAction(self.actionkardex)
        self.toolBar.addAction(self.actionAgregar_claves)

        self.retranslateUi(Main)
        self.btnFinalizarEntra.clicked.connect(self.LineCantidadEntra.clear)
        self.btnFinalizarEntra.clicked.connect(self.LineLoteEntra.clear)
        self.btnFinalizarEntra.clicked.connect(self.TextDescriEntra.clear)
        self.btnFinalizarEntra.clicked.connect(self.LineClaveEntra.clear)
        self.btnFinalizarEntra.clicked.connect(self.LineOrigenEntra.clear)
        self.btnFinalizarEntra.clicked.connect(self.TextPresentaEntra.clear)
        self.btnFinalizarEntra.clicked.connect(self.LineReferenciaEntra.clear)
        QtCore.QMetaObject.connectSlotsByName(Main)
        Main.setTabOrder(self.LineOrigenEntra, self.LineReferenciaEntra)
        Main.setTabOrder(self.LineReferenciaEntra, self.DateFreferenciaEntra)
        Main.setTabOrder(self.DateFreferenciaEntra, self.comboBoxEntradas)
        Main.setTabOrder(self.comboBoxEntradas, self.LineControlEntra)
        Main.setTabOrder(self.LineControlEntra, self.DateFechaEntra)
        Main.setTabOrder(self.DateFechaEntra, self.LineClaveEntra)
        Main.setTabOrder(self.LineClaveEntra, self.btnClaveEntra)
        Main.setTabOrder(self.btnClaveEntra, self.TextDescriEntra)
        Main.setTabOrder(self.TextDescriEntra, self.TextPresentaEntra)
        Main.setTabOrder(self.TextPresentaEntra, self.LineCantidadEntra)
        Main.setTabOrder(self.LineCantidadEntra, self.LineLoteEntra)
        Main.setTabOrder(self.LineLoteEntra, self.DateCaducidadEntra)
        Main.setTabOrder(self.DateCaducidadEntra, self.radioButton)
        Main.setTabOrder(self.radioButton, self.radioButton_2)
        Main.setTabOrder(self.radioButton_2, self.btnTotalEntradasEntra)
        Main.setTabOrder(self.btnTotalEntradasEntra, self.btnAgregarEntra)
        Main.setTabOrder(self.btnAgregarEntra, self.btnFinalizarEntra)
        Main.setTabOrder(self.btnFinalizarEntra, self.TableEntra)
        self.LineOrigenEntra.setToolTip('Introducir nombre del proveedor')
        self.DateFreferenciaEntra.setToolTip('Introducir fecha de referencia')
        self.LineReferenciaEntra.setToolTip('Introducir numero de referencia')
        self.comboBoxEntradas.setToolTip(
            'Eligir medicamento o material de curación')
        self.LineControlEntra.setToolTip('Numero automatico de la entrada')
        self.DateFechaEntra.setToolTip('Introduccir fecha de entrada')
        self.LineClaveEntra.setToolTip(
            'Clave del medicamento o material de curación')
        self.btnClaveEntra.setToolTip('Abrir ventana para busqueda de claves')
        self.TextDescriEntra.setToolTip(
            'Descripción correspondiente a la clave')
        self.TextPresentaEntra.setToolTip(
            'Presentación correspondiente a la clave')
        self.LineCantidadEntra.setToolTip('Introducir cantidad entrante')
        self.LineLoteEntra.setToolTip('Introducir lote')
        self.DateCaducidadEntra.setToolTip(
            'Introducir fecha de caducidad del medicamento o material de curación'
        )
        self.btnTotalEntradasEntra.setToolTip(
            'Abrir ventana para modificar entradas ya hechas')
        self.btnAgregarEntra.setToolTip('Agregar farmaco')
        self.btnFinalizarEntra.setToolTip(
            'Guardar los medicamentos y materiales de curación que se han introducido'
        )

        #comente el nombre de todos los titulos de cada pestaña para que no se pusieraS
        #agregando subwindow entrada ,Qt.WindowTitleHint para que no pueda minizar ni cerrar la subwindow
        self.mdiArea.addSubWindow(self.subwindowEntradas, Qt.WindowTitleHint)
        self.subwindowEntradas.showMaximized()

        # Agregando subwindow de salida  , se le coloca ,Qt.WindowTitleHint para que no pueda minizar ni cerrar la subwindow
        self.uiSalida = SubWindow()
        self.uiSalida.createSubWindow()
        self.mdiArea.addSubWindow(self.uiSalida, Qt.WindowTitleHint)

        #agregando subwindow Claves ,Qt.WindowTitleHint para que no pueda minizar ni cerrar la subwindow
        self.uiClave = vtnClave()
        self.uiClave.createSubWindow()
        self.mdiArea.addSubWindow(self.uiClave, Qt.WindowTitleHint)

        #agregando subwindow Consultas ,Qt.WindowTitleHint para que no pueda minizar ni cerrar la subwindow
        self.uiConsulta = vtnConsultas()
        self.uiConsulta.createSubWindow()
        self.mdiArea.addSubWindow(self.uiConsulta, Qt.WindowTitleHint)

        self.radioButton.setChecked(True)

        self.mdiArea.activateNextSubWindow()

        #inicio del codigo
        # Para que aparezca la ventana de entradas al iniciar

        self.actionEntradas.triggered.connect(self.abrirVentana)
        self.actionSalidas.triggered.connect(self.abrirSalidas)
        self.actionAgregar_claves.triggered.connect(self.abrirClaves)
        self.actionkardex.triggered.connect(self.abrirConsultas)
        self.actionAyuda.triggered.connect(self.manual)

        #agregar Items a la tabla de Entradas
        self.btnAgregarEntra.clicked.connect(self.enviar)

        #aumentar el numero de control
        self.conta = 0
        self.control()

        #coloca la fecha actual en los QdateEdit
        now = datetime.now()
        self.DateCaducidadEntra.setDate(now)
        self.DateFechaEntra.setDate(now)
        self.DateFreferenciaEntra.setDate(now)

        #Busqueda en tiempo real
        self.BusquedaTreal()
        #pone la desc y presentacion en los textEdit
        self.LineClaveEntra.returnPressed.connect(self.ConsultaDesc)
        #abre la ventana para buscar por DESC o PRESENTACION
        self.btnClaveEntra.clicked.connect(self.BusquedaDP)

        self.btnFinalizarEntra.clicked.connect(self.FinalizarTabla)

        #hace que el LineEdit solo puedan introducir numeros
        intonly = QIntValidator()
        self.LineCantidadEntra.setValidator(intonly)

        self.comboBoxEntradas.currentIndexChanged.connect(self.BusquedaTreal)
        self.btnTotalEntradasEntra.clicked.connect(self.openRef)
        self.EnOsal = 1


#FUNCIONES
# VER QUE BORRE EL FINALIZAR Y EL AGREGAR

    def abrirConsultas(self):
        self.subwindowEntradas.hide()
        self.uiClave.hide()
        self.uiSalida.hide()
        self.uiConsulta.showMaximized()
        if self.uiConsulta.isVisible():
            self.uiConsulta.consultar()

    def abrirClaves(self):
        self.uiConsulta.hide()
        self.subwindowEntradas.hide()
        self.uiSalida.hide()
        self.uiClave.showMaximized()

    def abrirSalidas(self):
        self.uiConsulta.hide()
        self.uiClave.hide()
        self.subwindowEntradas.hide()
        self.uiSalida.showMaximized()
        if self.uiSalida.isVisible() == True:
            self.uiSalida.update()

    def abrirVentana(self):
        self.uiConsulta.hide()
        self.uiClave.hide()
        self.uiSalida.hide()
        self.subwindowEntradas.showMaximized()
        if self.subwindowEntradas.isVisible():
            self.BusquedaTreal()

    def FinalizarTabla(self):
        try:
            self.Dp = pd.DataFrame()
            DpEntrada = pd.DataFrame()
            rows = self.TableEntra.rowCount()
            # print(rows)
            Column = self.TableEntra.columnCount()
            # print(Column)
            #TUVIMOS QUE ARREGLAR EL ORDEN DE LOS HEADERS PARA QUE JALE LA CONSULTA JUSTO CON LA TABLA DE BD Y EL DATAFRAME
            headers = [
                'origen', 'clave_corta', 'area', 'cantidad', 'caducidad',
                'lote', 'fechaIngreso'
            ]
            for i in range(rows):
                for j in range(Column):
                    print(j)
                    #Este If es por que no necesitamos las columnas de descripcion y presentacion en el ingreso al DATAFRAME ya que al ingresar el dataframe a la BD no estan esos campos
                    if j != 4 and j != 5 and j != 0 and j != 1:
                        self.Dp.loc[i, j] = self.TableEntra.item(i, j).text()
            self.Dp.columns = headers
            #print(Dp)
            #Ingreso DEl dataframe a la bd tipo ingreso pandas(NO SQLALCHEMY) a la tabla farmaco
            self.Dp.to_sql('farmaco', engine, index=False, if_exists="append")
            print((self.Dp))

            #Tabla de entrada en la base de datos
            headers1 = ['NoReferencia', 'FeReferencia', 'FeEntrada', 'origen']
            DpEntrada.loc[0, 1] = self.referencia
            Date = self.DateFreferenciaEntra.date()
            fechaReferencia = Date.toPyDate()
            DpEntrada.loc[0, 2] = str(fechaReferencia)
            Date = self.DateFechaEntra.date()
            fechaEntrada = Date.toPyDate()
            DpEntrada.loc[0, 3] = str(fechaEntrada)
            DpEntrada.loc[0, 4] = self.origen
            DpEntrada.columns = headers1
            print(DpEntrada)
            DpEntrada.to_sql('entrada',
                             engine,
                             index=False,
                             if_exists="append")
            session.close()

            self.insertRecord()

            for i in reversed(range(self.TableEntra.rowCount())):
                self.TableEntra.removeRow(i)
            self.conta = 0
            self.control()
            session.close()
            self.TextPresentaEntra.setText('')
            self.LineCantidadEntra.setText('')
            self.LineLoteEntra.setText('')
            self.TextDescriEntra.setText('')
            self.LineClaveEntra.setText('')
            self.LineOrigenEntra.setText('')

        except Exception as e:
            print(e)
            self.LineClaveEntra.setFocus()
            error_dialog = QtWidgets.QMessageBox()
            error_dialog.setIcon(QtWidgets.QMessageBox.Critical)
            error_dialog.setText("No hay datos en la tabla")
            error_dialog.setWindowTitle("Error")
            error_dialog.exec()

    def BusquedaDP(self):
        self.ventanaDP = QtWidgets.QMainWindow()
        self.x = str(self.comboBoxEntradas.currentIndex())
        self.ui = Ui_BDP(self.x)
        self.ui.setupUi(self.ventanaDP)
        self.ventanaDP.show()
        self.ui.tableView.doubleClicked.connect(self.fnti)
        #self.ui.tableView.doubleClicked.connect(self.fnti)

    def fnti(self):
        index = self.ui.tableView.currentIndex().row()
        value = self.ui.tableView.model().index(index, 0).data()
        self.LineClaveEntra.setText(value)
        self.ConsultaDesc()

    #Traer la descripcion y presentacion con la clave
    def ConsultaDesc(self):
        try:
            self.LineClaveEntra.setStyleSheet(
                "QLineEdit { border-color: black;}")
            tipos = self.comboBoxEntradas.currentIndex()
            Vclave = self.LineClaveEntra.text()
            if tipos == 0:
                Desc = session.query(Clave.descripcion,
                                     Clave.presentacion).filter_by(
                                         corta=Vclave, tipo=0).one()
            if tipos == 1:
                Desc = session.query(Clave.descripcion,
                                     Clave.presentacion).filter_by(
                                         corta=Vclave, tipo=1).one()

            # print(Desc[0])
            # print(Desc[1])
            self.TextDescriEntra.setText(Desc[0])
            self.TextPresentaEntra.setText(Desc[1])
        except:
            self.LineClaveEntra.setStyleSheet(
                "QLineEdit { border-color: red;}")
            error_dialog = QtWidgets.QMessageBox()
            error_dialog.setIcon(QtWidgets.QMessageBox.Information)
            error_dialog.setText("La clave no existe o el tipo es diferente")
            error_dialog.setWindowTitle("Informacion!!!")
            error_dialog.exec()

    #consulta para el Numero de control
    def control(self):
        #self.Ncontrol = session.query(func.max(Entrada.NoEntrada)).scalar()
        #self.conta = 1
        self.Ncontrol = session.execute("""
    SELECT AUTO_INCREMENT
    FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = "farmaciadb"
    AND TABLE_NAME = "entrada"
""").scalar()

        self.LineControlEntra.setText(str(self.Ncontrol))
        session.close()

    def queryClave(self):
        tipos = self.comboBoxEntradas.currentIndex()
        if tipos == 0:
            self.clave123 = session.query(Clave.corta).filter_by(tipo=0).all()
        if tipos == 1:
            self.clave123 = session.query(Clave.corta).filter_by(tipo=1).all()
        session.commit()

    # busqueda en tiempo real
    def BusquedaTreal(self):
        self.queryClave()
        list = []
        for n in self.clave123:
            for c in n:
                list.append(c)
        ListaClave = list
        completer = QCompleter(ListaClave)
        self.LineClaveEntra.setCompleter(completer)

    #Envia los datos a la tabla
    def enviar(self):
        error_dialog = QtWidgets.QMessageBox()
        error_dialog.setIcon(QtWidgets.QMessageBox.Information)
        #que no pueda poner una cantidad vacia
        if self.LineCantidadEntra.text(
        ) == "" or self.LineCantidadEntra.text == "0":
            self.LineCantidadEntra.setFocus()
            error_dialog.setText("Cantidad vacia")
            if self.LineCantidadEntra.text() == "0":
                error_dialog.setText("Introduzca un numero mayor")
            error_dialog.setWindowTitle("Error")
            error_dialog.exec()
        elif self.LineClaveEntra.text() == "":
            self.LineClaveEntra.setStyleSheet(
                "QLineEdit { border-color: red;}")
            self.LineClaveEntra.setFocus()
            error_dialog.setText("Clave vacia")
            error_dialog.setWindowTitle("Error")
            error_dialog.exec()
        if self.LineCantidadEntra.text(
        ) != "" and self.LineCantidadEntra.text != "0" and self.LineClaveEntra.text(
        ) != "":
            row = self.TableEntra.rowCount()
            rowPosition = self.TableEntra.rowCount()
            self.TableEntra.insertRow(rowPosition)
            #cambio el formato de fecha
            Date = self.DateCaducidadEntra.date()
            caducidad = Date.toPyDate()
            Date2 = self.DateFechaEntra.date()
            FechaIngreso = Date2.toPyDate()
            #self.TableEntra.verticalHeader().hide()
            self.btnDelete = QtWidgets.QPushButton(self.frame_2)
            self.btnDelete.setGeometry(QtCore.QRect(320, 20, 21, 21))
            ################################################################################ SE CREO MANUAL
            IconoDelete = QtGui.QIcon()
            IconoDelete.addPixmap(
                QtGui.QPixmap("../imagenes/ic_delete_128_28267.png"),
                QtGui.QIcon.Normal, QtGui.QIcon.Off)
            self.btnDelete.setIcon(IconoDelete)
            self.btnDelete.setStyleSheet("QPushButton{\n"
                                         "border-radius:15px;\n"
                                         "background:#fefefe;\n"
                                         "\n"
                                         "}\n"
                                         "QPushButton:hover{\n"
                                         "background:#dea806;\n"
                                         "}\n"
                                         "")

            #Ver que opcion hay en Area de resguardo
            if self.radioButton.isChecked():
                resguardo = 'Almacen'
            else:
                resguardo = 'Bodega'

            self.TableEntra.setCellWidget(row, 0, self.btnDelete)

            self.TableEntra.setItem(
                row, 1, QTableWidgetItem(str(self.LineControlEntra.text())))
            self.TableEntra.setItem(
                row, 2, QTableWidgetItem(str(self.LineOrigenEntra.text())))
            self.TableEntra.setItem(
                row, 3, QTableWidgetItem(str(self.LineClaveEntra.text())))
            self.TableEntra.setItem(
                row, 4,
                QTableWidgetItem(str(self.TextDescriEntra.toPlainText())))
            self.TableEntra.item(row, 4).setToolTip(
                str(self.TextDescriEntra.toPlainText()))
            self.TableEntra.setItem(
                row, 5,
                QTableWidgetItem(str(self.TextPresentaEntra.toPlainText())))
            self.TableEntra.item(row, 5).setToolTip(
                str(self.TextPresentaEntra.toPlainText()))
            self.TableEntra.setItem(row, 6, QTableWidgetItem(resguardo))
            self.TableEntra.setItem(
                row, 7, QTableWidgetItem(str(self.LineCantidadEntra.text())))
            self.TableEntra.setItem(row, 8, QTableWidgetItem(str(caducidad)))
            self.TableEntra.setItem(
                row, 9, QTableWidgetItem(str(self.LineLoteEntra.text())))
            self.TableEntra.setItem(row, 10,
                                    QTableWidgetItem(str(FechaIngreso)))
            self.control()
            self.btnDelete.clicked.connect(self.contador)
            self.LineLoteEntra.setText('')
            self.LineCantidadEntra.setText('')
            self.TextDescriEntra.setText('')
            self.LineClaveEntra.setText('')
            self.TextPresentaEntra.setText('')
            self.referencia = self.LineReferenciaEntra.text()
            self.origen = self.LineOrigenEntra.text()

    #Elimina las filas del tablewitget
    def contador(self):
        rowC = self.TableEntra.currentRow()
        self.TableEntra.removeRow(rowC)
        #self.conta = self.conta - 1
        #self.LineControlEntra.setText(str(self.Ncontrol + self.conta))
        row2 = self.TableEntra.rowCount()
        for a in range(row2):
            if a >= rowC:
                hola = int(self.TableEntra.item(a, 1).text())
                pedro = hola - 1
                self.TableEntra.setItem(a, 1, QTableWidgetItem(str(pedro)))

    def manual(self):
        Nombre_pdf = 'manual.pdf'
        Nombre_pdf = path.abspath(Nombre_pdf)
        wb.open_new(r'%s' % Nombre_pdf)
        # print(path.abspath(Nombre_pdf))

    def insertRecord(self):
        # Ingreso DEl dataframe a la bd tipo ingreso pandas(NO SQLALCHEMY) pero a la tabla historial
        self.Dp['Entrada_NoEntrada'] = session.query(
            func.max(Entrada.NoEntrada)).scalar()
        self.Dp.to_sql('historial', engine, index=False, if_exists="append")
        self.Dp.drop(columns=['Entrada_NoEntrada'])
        session.close()

    def openRef(self):
        self.vtnRef = QtWidgets.QWidget()
        self.uiRef = Ui_VtnES(self.EnOsal)
        self.uiRef.setupUi(self.vtnRef)
        self.vtnRef.show()

    def retranslateUi(self, Main):
        _translate = QtCore.QCoreApplication.translate
        Main.setWindowTitle(_translate("Main", "Sistema de Inventario"))
        #self.subwindowEntradas.setWindowTitle(_translate("Main", "Entradas"))
        self.label_5.setText(_translate("Main", "Proveedor:"))
        self.label_6.setText(_translate("Main", "F.Entrada:"))
        self.label_7.setText(_translate("Main", "N.Entrada:"))
        self.DateFechaEntra.setDisplayFormat(_translate("Main", "dd/MM/yyyy"))
        self.label_15.setText(_translate("Main", "Tipo:"))
        self.comboBoxEntradas.setItemText(0, _translate("Main", "Medicamento"))
        self.comboBoxEntradas.setItemText(1, _translate("Main", "M.Curacion"))
        self.label_16.setText(_translate("Main", "N.Referencia:"))
        self.label_17.setText(_translate("Main", "F.Referencia:"))
        self.DateFreferenciaEntra.setDisplayFormat(
            _translate("Main", "dd/MM/yyyy"))
        self.label_8.setText(_translate("Main", "Clave:"))
        self.label_9.setText(_translate("Main", "Descripción :"))
        self.label_10.setText(_translate("Main", "Presentación:"))
        item = self.TableEntra.horizontalHeaderItem(0)
        item.setText(_translate("Main", "Eliminar"))
        item = self.TableEntra.horizontalHeaderItem(1)
        item.setText(_translate("Main", "N.Entrada"))
        item = self.TableEntra.horizontalHeaderItem(2)
        item.setText(_translate("Main", "Proveedor"))
        item = self.TableEntra.horizontalHeaderItem(3)
        item.setText(_translate("Main", "Clave"))
        item = self.TableEntra.horizontalHeaderItem(4)
        item.setText(_translate("Main", "Descripción"))
        item = self.TableEntra.horizontalHeaderItem(5)
        item.setText(_translate("Main", "Presentación"))
        item = self.TableEntra.horizontalHeaderItem(6)
        item.setText(_translate("Main", "Area Almacen"))
        item = self.TableEntra.horizontalHeaderItem(7)
        item.setText(_translate("Main", "Cantidad"))
        item = self.TableEntra.horizontalHeaderItem(8)
        item.setText(_translate("Main", "Caducidad"))
        item = self.TableEntra.horizontalHeaderItem(9)
        item.setText(_translate("Main", "Lote"))
        item = self.TableEntra.horizontalHeaderItem(10)
        item.setText(_translate("Main", "Fecha"))
        self.label_11.setText(_translate("Main", "Cantidad:"))
        self.label_12.setText(_translate("Main", "A.resguardo:"))
        self.label_13.setText(_translate("Main", "Caducidad:"))
        self.label_14.setText(_translate("Main", "Lote:"))
        self.btnFinalizarEntra.setText(_translate("Main", "Finalizar"))
        self.DateCaducidadEntra.setDisplayFormat(
            _translate("Main", "dd/MM/yyyy"))
        self.radioButton.setText(_translate("Main", "Almacen"))
        self.radioButton_2.setText(_translate("Main", "Bodega"))
        self.btnAgregarEntra.setText(_translate("Main", "Agregar"))
        #self.pushButto.setShortcut(_translate("Main", "Enter"))
        self.btnTotalEntradasEntra.setShortcut(_translate("Main", "Ctrl+E"))
        self.menuEntradas.setTitle(_translate("Main", "Entradas"))
        self.menuSalidas.setTitle(_translate("Main", "Salidas"))
        self.menuConsultas.setTitle(_translate("Main", "Consultas"))
        self.menuClaves.setTitle(_translate("Main", "Claves"))
        self.menuAyuda.setTitle(_translate("Main", "Ayuda"))
        self.toolBar.setWindowTitle(_translate("Main", "toolBar"))
        self.actionEntradas.setText(_translate("Main", "Introduce Entradas"))
        self.actionEntradas.setToolTip(_translate("Main", "Entradas"))
        self.actionEntradas.setShortcut(_translate("Main", "Alt+1"))
        self.actionSalidas.setText(_translate("Main", "Realizar Salidas"))
        self.actionSalidas.setToolTip(_translate("Main", "salidas"))
        self.actionSalidas.setShortcut(_translate("Main", "Alt+2"))
        self.actionkardex.setText(_translate("Main", "Realizar Consultas"))
        self.actionkardex.setToolTip(_translate("Main", "kardex"))
        self.actionkardex.setShortcut(_translate("Main", "Alt+3"))
        self.actionAgregar_claves.setText(
            _translate("Main", "Introducir Claves"))
        self.actionAgregar_claves.setToolTip(
            _translate("Main", "Agregar claves"))
        self.actionAgregar_claves.setShortcut(_translate("Main", "Alt+4"))
        self.actionAyuda.setText(_translate("Main", "Ayuda"))
        self.actionAyuda.setToolTip(_translate("Main", "Ayuda"))
        self.actionAyuda.setShortcut(_translate("Main", "Alt+5"))