Esempio n. 1
0
    def DetalhamentoProduto(self, valor):
        id = valor
        self.FormProdutos()
        self.tx_idProduto.setText(str(id))

        busca = CrudProduto()
        busca.id = id
        busca.DetalhamentoProdutoId()

        if hasattr(busca, 'imagem') and busca.imagem:
            pixmap = QPixmap()
            pixmap.loadFromData(QByteArray.fromBase64(busca.imagem))
            self.lb_FotoProduto.setPixmap(
                pixmap.scaledToWidth(
                    200, Qt.TransformationMode(Qt.FastTransformation)))
            self.bt_AdicionarImagem.setHidden(True)
            self.bt_DeletarImagem.setVisible(True)
        self.tx_NomeProduto.setText(busca.produto)
        self.tx_Descricao.setText(busca.descricao)
        self.cb_Categoria.setCurrentIndex(
            self.cb_Categoria.findData(busca.categoria))
        self.cb_Marca.setCurrentIndex(self.cb_Marca.findData(busca.marca))
        self.tx_QtdMinimoEstoque.setText(str(busca.qtdMinimoEstoque))
        self.tx_QtdEstoque.setText(str(busca.qtdEstoque))
        self.tx_ValorUnitario.setText(str(busca.valorUnitario))
        self.tx_TotalEstoque.setText(str(busca.totalEstoque))
Esempio n. 2
0
    def CadastraVendaDB(self):
        # current datetime in UTC
        dt = datetime.now()
        utc_time = dt.replace(tzinfo=timezone.utc)

        INSERIR = CrudVenda()
        INSERIR.id = self.tx_IdVenda.text()
        INSERIR.idCliente = self.tx_IdCliente.text().upper()
        INSERIR.tipoPagamento = self.cb_TipoPagamento.currentData()
        INSERIR.dataVenda = utc_time
        INSERIR.subtotal = self.tx_SubTotal.text().replace(",", ".")
        INSERIR.desconto = self.tx_Desconto.text().replace(",", ".")
        INSERIR.addVenda()

        ATUALIZAR_ESTOQUE = CrudProduto()
        INSERIR_ITENS = CrudRelVenda()
        for row in range(self.tb_Itens.rowCount()):
            idProduto = self.tb_Itens.item(row, 1).text()
            qtd = self.tb_Itens.item(row, 3).text()
            INSERIR_ITENS.idVenda = self.tx_IdVenda.text()
            INSERIR_ITENS.idProduto = idProduto
            INSERIR_ITENS.qtd = qtd
            INSERIR_ITENS.valorUnitario = self.tb_Itens.item(row, 4).text()
            INSERIR_ITENS.valorTotal = self.tb_Itens.item(row, 5).text()
            INSERIR_ITENS.addItens()
            ATUALIZAR_ESTOQUE.id = idProduto
            ATUALIZAR_ESTOQUE.DetalhamentoProdutoId()
            ATUALIZAR_ESTOQUE.qtdEstoque = int(
                ATUALIZAR_ESTOQUE.qtdEstoque) - int(qtd)
            ATUALIZAR_ESTOQUE.updateProduto()
        self.janelaVendas()
Esempio n. 3
0
 def BuscaProdutoId(self):
     if not self.tx_IdBuscaItem.text():
         self.LimpaCampoAddProduto()
         return
     id = int(self.tx_IdBuscaItem.text())
     busca = CrudProduto()
     busca.id = id
     busca.DetalhamentoProdutoId()
     if busca.produto:
         self.tx_NomeProdutoItem.setText(busca.produto)
         self.tx_ValorUnitarioItem.setText(str(busca.valorUnitario))
         self.tx_QtdItem.setFocus()
     else:
         self.LimpaCampoAddProduto()
         self.tx_NomeProdutoItem.setText("Produto não encontrado")
         self.tx_IdBuscaItem.setFocus()
Esempio n. 4
0
    def ValidarDadosVenda(self):
        if not self.tx_IdVenda.text():
            self.tx_IdVenda.setFocus()
            return
        elif not self.tx_IdCliente.text():
            msg = QMessageBox()
            msg.setWindowTitle("Alerta de Identificacao")
            msg.setText("Cliente não foi identificado.")
            msg.setInformativeText(
                "Você deseja prosseguir com cliente anonimo?")
            msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
            msg.setDefaultButton(QMessageBox.Yes)

            returnValue = msg.exec()
            if returnValue == QMessageBox.Yes:
                self.tx_IdCliente.setText("1")
            elif returnValue == QMessageBox.No:
                self.tx_IdCliente.setFocus()
                return
            else:
                print("Erro: Opção inexistente: %d", returnValue)
                return

        elif not self.tx_SubTotal.text() or self.tx_SubTotal.text() == "0.00":
            self.tx_SubTotal.setFocus()
            return
        elif not self.tx_TotalFinal.text() or self.tx_TotalFinal.text(
        ) == "0.00":
            self.tx_TotalFinal.setFocus()
            return

        ESTOQUE = CrudProduto()
        ITEMS = {}
        QTDESTOQUE = {}
        for row in range(self.tb_Itens.rowCount()):
            idProduto = self.tb_Itens.item(row, 1).text()
            qtd = self.tb_Itens.item(row, 3).text()
            if idProduto in ITEMS:
                ITEMS[idProduto] = ITEMS.get(idProduto, 0) - int(qtd)
            else:
                ESTOQUE.id = idProduto
                ESTOQUE.DetalhamentoProdutoId()
                ITEMS[idProduto] = ESTOQUE.qtdEstoque - int(qtd)
                QTDESTOQUE[idProduto] = ESTOQUE.qtdEstoque

        campos = ""
        for element in ITEMS:
            if ITEMS.get(element, 0) < 0:
                campos = campos + "\nID %s: %s unidades," % (
                    str(element), str(QTDESTOQUE.get(element, 0)))

        if campos != "":
            campos = campos[0:-1]
            msg = QMessageBox()
            msg.setWindowTitle("Alerta de Estoque")
            msg.setText("Produtos na venda excedem a quantidade em Estoque.")
            msg.setInformativeText("ID: Quantidade de estoque, abaixo:%s" %
                                   campos)
            msg.setStandardButtons(QMessageBox.Ok)
            msg.setDefaultButton(QMessageBox.Ok)
            returnValue = msg.exec()
            return
        self.CadastraVendaDB()