def save_criticals_step_2(self):
        unrecognized_comp_alert = WarningBox(
            "Componente no reconocido", "Cargar el componente\ndesde el autocompletado."
        )
        new_criticals = {}
        for l in self.criticals_holder_layout.children():
            component = l.itemAt(0).widget().text()
            amount = float(l.itemAt(1).widget().text().replace(",", "."))
            new_criticals[component] = amount

        if not set(new_criticals).issubset(self.existing_comps):
            unrecognized_comp_alert.exec_()
        if set(new_criticals).issubset(self.existing_comps):
            if self.stored_criticals == new_criticals:
                self.close()
        if self.stored_criticals != new_criticals:
            db = db_manager.DB_Manager()
            db.delete_all_criticals()
            number_of_criticals = len(new_criticals)
            endstring = (
                "valor crítico" if number_of_criticals == 1 else "valores críticos"
            )
            config_record_details = str(number_of_criticals) + " " + endstring
            db.save_new_criticals(new_criticals)
            self.stored_criticals = new_criticals
            db.log_new_config_record(
                config="Edición de críticos", details=config_record_details
            )
            db.close_connection()
            utils.color_criticals_in_orange_in_main_section(
                self.parent().table, self.stored_criticals
            )
            self.close()
Exemplo n.º 2
0
 def test_if_packing_list_or_supplier_fields_are_empty(self):
     if self.packing_list_field.text() == "":
         WarningBox("Remito faltante",
                    "Ingresar remito\nantes de ejecutar.").exec_()
         self.packing_list_field.setFocus()
         return True
     elif self.supplier_field.text() == "":
         WarningBox("Proveedor faltante",
                    "Ingresar proveedor\nantes de ejecutar.").exec_()
         self.supplier_field.setFocus()
         return True
     else:
         return False
Exemplo n.º 3
0
 def test_if_product_or_model_fields_are_empty(self):
     if self.product_field.text() == "":
         WarningBox("Producto faltante",
                    "Ingresar producto\nantes de ejecutar.").exec_()
         self.product_field.setFocus()
         return True
     elif self.model_field.text() == "":
         WarningBox("Modelo faltante",
                    "Ingresar modelo\nantes de ejecutar.").exec_()
         self.model_field.setFocus()
         return True
     else:
         return False
    def save_criticals_step_1(self):
        if not self.criticals_holder_layout.children():
            db = db_manager.DB_Manager()
            db.delete_all_criticals()
            self.stored_criticals = {}
            db.close_connection()
            utils.color_criticals_in_orange_in_main_section(
                self.parent().table, self.stored_criticals
            )
            self.close()
        elif self.criticals_holder_layout.children():
            contents_of_all_line_edits = []
            for l in self.criticals_holder_layout.children():
                contents_of_all_line_edits.append(l.itemAt(0).widget().text())
                contents_of_all_line_edits.append(l.itemAt(1).widget().text())

            if tests.test_if_duplicated_first_value_in_line_items_contents(
                contents_of_all_line_edits
            ):
                WarningBox(
                    "Componentes duplicados",
                    "Borrar uno de los\ncomponentes duplicados.",
                ).exec_()
            elif all(contents_of_all_line_edits):
                self.save_criticals_step_2()
            else:
                self.fix_empty_field_mid_save()
 def fix_empty_field_mid_save(self):
     empty_field_alert = WarningBox(
         "Campo vacío", "Completar o borrar campos\nvacíos antes de guardar."
     )
     for layout in self.criticals_holder_layout.layout().children():
         layout_1_text = layout.itemAt(0).widget().text()
         layout_2_text = layout.itemAt(1).widget().text()
         if layout_1_text == "":
             if layout_2_text == "":
                 utils.delete_layout(layout)
                 self.adjustSize()
                 self.adjustSize()
                 self.save_criticals_step_2()
         elif layout_1_text == "" or layout_2_text == "":
             empty_field_alert.exec()
             break
 def test_if_code_missing(self):
     code_missing = self.code_field.text() == ""
     if code_missing:
         WarningBox("Código faltante", "Ingresar código\nantes de generar.").exec_()
         return True
     else:
         return False
Exemplo n.º 7
0
 def test_if_there_are_duplicates(self):
     contents = utils.get_line_items_contents(self.comps_holder_section)
     duplicates = tests.test_if_duplicated_first_value_in_line_items_contents(
         contents)
     if duplicates:
         WarningBox("Componentes duplicados",
                    "Borrar uno de los componentes duplicados.").exec_()
         return True
     else:
         return False
 def test_if_there_are_no_products(self):
     no_line_items = not self.products_holder_section.children()
     contents = utils.get_line_items_contents(self.products_holder_section)
     empty_string = tests.test_if_empty_string_in_line_items_contents(contents)
     if no_line_items or empty_string:
         WarningBox(
             "Sin productos", "Completar o borrar campos\nvacíos antes de ejecutar."
         ).exec_()
         return True
     else:
         return False
Exemplo n.º 9
0
 def autoremove_line(self):
     for line_layout in self.comps_holder_section.layout().children():
         two_empty_fields_on_same_line = (
             line_layout.itemAt(0).widget().text() == ""
             and line_layout.itemAt(1).widget().text() == "")
         if two_empty_fields_on_same_line:
             if len(self.comps_holder_section.layout().children()) > 1:
                 utils.remove_three_widget_layout(line_layout)
                 return False
             else:
                 if len(self.comps_holder_section.layout().children()) <= 1:
                     WarningBox(
                         "Sin componentes",
                         "Completar o borrar campos\nvacíos antes de ejecutar.",
                     ).exec_()
                 return True
         elif not two_empty_fields_on_same_line:
             WarningBox(
                 "Sin componentes",
                 "Completar o borrar campos\nvacíos antes de ejecutar.",
             ).exec_()
             return True
Exemplo n.º 10
0
    def test_if_there_are_unrecognized_components(self):
        db = db_manager.DB_Manager()
        existing_comps = db.get_all_display_names_for_components()
        db.close_connection()

        if self.search_field.text() not in existing_comps:
            WarningBox(
                "Componente extraño",
                "Componente no reconocido. Cargar el\ncomponente desde el autocompletado.",
            ).exec_()
            return True
        else:
            return False
Exemplo n.º 11
0
    def test_if_there_are_recipe_data(self):
        contents = utils.get_line_items_contents(self.comps_holder_section)
        empty_strings_exist = tests.test_if_empty_string_in_line_items_contents(
            contents)

        if self.comps_holder_section.children() and empty_strings_exist:
            WarningBox(
                "Sin componentes",
                "Completar o borrar campos\nvacíos antes de ejecutar.",
            ).exec_()
            return True
        else:
            return False
Exemplo n.º 12
0
 def test_if_there_are_unrecognized_components(self):
     contents = utils.get_line_items_contents(self.comps_holder_section)
     incoming_comps = contents[0::2]
     db = db_manager.DB_Manager()
     existing_comps = db.get_all_display_names_for_components()
     db.close_connection()
     unrecognized_comps = not set(incoming_comps).issubset(existing_comps)
     if unrecognized_comps:
         WarningBox(
             "Componente extraño",
             "Componente no reconocido. Cargar el\ncomponente desde el autocompletado.",
         ).exec_()
         return True
     else:
         return False
Exemplo n.º 13
0
    def pick_file_and_build_table(self):
        filepath, _ = QtWidgets.QFileDialog.getOpenFileName(
            self, "Elegir informe", os.getcwd() + "\\output", "Excel (*.xlsx)"
        )
        if filepath == "":
            return
        file_name = filepath.split("/")[(-1)].replace(".xlsx", "")
        if not file_name.startswith("INFORME DE PRODUCCIÓN"):
            WarningBox(
                "Archivo equivocado",
                "El archivo seleccionado\nno es un informe de producción.",
            ).exec_()
            return

        self.filepicker_button.setEnabled(False)
        self.filepicker_button.setDefault(False)

        self.execute_button.setEnabled(True)
        self.execute_button.setDefault(True)

        report_name = file_name.replace("INFORME DE PRODUCCIÓN ", "").replace("-", "/")
        destinations = {"K": "Karina", "B": "Brid", "T": "Tercero"}
        destination_name = destinations[report_name[0]]

        filetitle = QtWidgets.QLabel("Informe seleccionado: " + report_name)
        filetitle.setStyleSheet(outgoing_dialog_table_left_title_style)

        destination = QtWidgets.QLabel("Destino: " + destination_name)
        destination.setStyleSheet(outgoing_dialog_table_right_title_style)

        table_title_section = QtWidgets.QHBoxLayout()
        table_title_section.addStretch()
        table_title_section.addWidget(filetitle)
        table_title_section.addWidget(destination)
        table_title_section.addStretch()

        self.layout.addLayout(table_title_section)

        table = QtWidgets.QTableWidget()
        table.verticalHeader().setVisible(False)
        table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
        table.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
        table.setColumnCount(3)
        table.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
        table.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
        table.setHorizontalHeaderLabels(["Componente", "Necesidad", "Envío"])
        table.horizontalHeaderItem(0).setTextAlignment(QtCore.Qt.AlignHCenter)
        table.horizontalHeaderItem(1).setTextAlignment(QtCore.Qt.AlignHCenter)
        table.horizontalHeaderItem(2).setTextAlignment(QtCore.Qt.AlignHCenter)
        table.horizontalHeader().setDefaultSectionSize(110)
        table.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
        table.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.Fixed)
        table.horizontalHeader().setSectionResizeMode(2, QtWidgets.QHeaderView.Fixed)

        wb = openpyxl.load_workbook(filepath, data_only=True)
        ws = wb["Informe"]
        self.code = ws["B"][1].value
        component_names = []

        for i in ws["D"][3:]:
            if i.value is not None:
                component_names.append(i.value)

        component_amounts = []
        for i in ws["H"][3:]:
            if i.value is not None:
                component_amounts.append(float(i.value))

        self.outgoing_comps = dict(zip(component_names, component_amounts))
        component_needs = []
        for i in ws["E"][3:]:
            if i.value is not None:
                component_needs.append(float(i.value))

        self.outgoing_needs = dict(zip(component_names, component_needs))
        table.setRowCount(len(self.outgoing_comps))
        utils.populate_table_column_with_list_of_strings(
            table=table, col_num=0, input_list=self.outgoing_comps.keys()
        )
        utils.populate_table_column_with_list_of_integers(
            table=table, col_num=1, input_list=self.outgoing_needs.values()
        )
        utils.populate_table_column_with_list_of_integers(
            table=table, col_num=2, input_list=self.outgoing_comps.values()
        )
        custom_height = table.rowCount() * 30 + 25
        if table.rowCount() <= 3:
            table.setMaximumHeight(custom_height)
            table.setFixedHeight(custom_height)
        elif table.rowCount() > 4:
            table.setMaximumHeight(205)
            table.setFixedHeight(205)

        self.layout.addWidget(table)

        self.center_dialog()