Пример #1
0
    def cadProduto(self):
        INSERI = CrudProduto()
        INSERI.id = self.tx_idProduto.text()
        INSERI.produto = self.tx_DescricaoProduto.text().upper()
        if self.lb_FotoProduto.pixmap():
            imagem = QPixmap(self.lb_FotoProduto.pixmap())
            data = QByteArray()
            buf = QBuffer(data)
            imagem.save(buf, 'PNG')
            INSERI.imagem = str(data.toBase64()).encode('utf8')[2:-1]
        else:
            INSERI.imagem = False

        INSERI.categoria = self.cb_CategoriaProduto.currentData()
        INSERI.marca = self.cb_MarcaProduto.currentData()
        INSERI.estoqueMinimo = self.tx_EstoqueMinimoProduto.text()
        INSERI.estoqueMaximo = self.tx_EstoqueMaximoProduto.text()
        INSERI.obsProduto = self.tx_ObsProduto.text()
        INSERI.valorCompra = self.tx_ValorCompraProduto.text().replace(",", ".")
        INSERI.valorUnitario = self.tx_ValorUnitarioProduto.text().replace(",", ".")
        INSERI.valorAtacado = self.tx_ValorAtacadoProduto.text().replace(",", ".")
        INSERI.qtdeAtacado = self.tx_MinimoAtacado.text()
        INSERI.inseriProduto()

        self.janelaProdutos()
Пример #2
0
    def SelectProduto(self, valor):
        id = valor
        self.FormProdutos()
        self.tx_idProduto.setText(str(id))
        busca = CrudProduto()
        busca.id = id
        busca.selectProdutoId()
        self.tx_DescricaoProduto.setText(busca.produto)
        if busca.imagem:
            pixmap = QPixmap()
            pixmap.loadFromData(
                QByteArray.fromBase64(busca.imagem))
            self.lb_FotoProduto.setPixmap(pixmap.scaledToWidth(
                150, Qt.TransformationMode(Qt.FastTransformation)))
            # self.lb_FotoProduto.setScaledContents(True)
            self.bt_AddImagem.setHidden(True)
            self.bt_DelImagem.setVisible(True)

        self.cb_CategoriaProduto.setCurrentIndex(
            self.cb_CategoriaProduto.findData(busca.categoria))
        self.cb_MarcaProduto.setCurrentIndex(
            self.cb_MarcaProduto.findData(busca.marca))
        self.tx_EstoqueMinimoProduto.setText(str(busca.estoqueMinimo))
        self.tx_EstoqueMaximoProduto.setText(str(busca.estoqueMaximo))
        self.tx_ObsProduto.setText(busca.obsProduto)
        self.tx_ValorCompraProduto.setText(str(busca.valorCompra))
        self.tx_ValorUnitarioProduto.setText(str(busca.valorUnitario))
        self.tx_ValorAtacadoProduto.setText(str(busca.valorAtacado))
        self.tx_MinimoAtacado.setText(str(busca.qtdeAtacado))
Пример #3
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()
Пример #4
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))
Пример #5
0
 def SaidaEstoque(self):
     INSERI = CrudProduto()
     i = 0
     while i < self.tb_Itens.rowCount():
         INSERI.id = self.tb_Itens.item(i, 0).text()
         INSERI.qtdeProduto = self.tb_Itens.item(i, 3).text()
         INSERI.retiradaEstoque()
         i += 1
Пример #6
0
 def EntradaEstoque(self):
     INSERI = CrudProduto()
     i = 0
     while i < self.tb_Itens.rowCount():
         INSERI.id = self.tb_Itens.item(i, 0).text()
         INSERI.valorCompra = self.tb_Itens.item(
             i, 4).text().replace(",", ".")
         INSERI.qtdeProduto = self.tb_Itens.item(i, 3).text()
         INSERI.obsProduto = self.tb_Itens.item(i, 2).text()
         
         INSERI.entradaEstoque()
         i += 1
Пример #7
0
 def BuscaProdutoIdCompra(self):
     id = int(self.tx_IdBuscaItem.text())
     busca = CrudProduto()
     busca.id = id
     busca.selectProdutoId()
     if busca.produto:
         self.tx_BuscaItem.setText(busca.produto)
         self.tx_ValorUnitarioItem.setText(str(busca.valorCompra))
         self.tx_QntdItem.setFocus()
     else:
         self.tx_BuscaItem.setText("Produto não encontrado")
         self.tx_IdBuscaItem.clear()
         self.tx_IdBuscaItem.setFocus()
     pass
Пример #8
0
    def TotalItem(self):

        busca = CrudProduto()
        busca.id = self.tx_IdBuscaItem.text()
        busca.selectProdutoId()
        if self.tx_QntdItem.text() and self.tx_ValorUnitarioItem.text():
            if float(self.tx_QntdItem.text()) >= int(busca.qtdeAtacado):
                self.tx_ValorUnitarioItem.setText(str(busca.valorAtacado))
            else:
                self.tx_ValorUnitarioItem.setText(str(busca.valorUnitario))
            TotalItem = float(self.tx_QntdItem.text()) * \
                float(self.tx_ValorUnitarioItem.text())
            self.tx_ValorTotalItem.setText(format(TotalItem, ".2f"))
            self.bt_IncluirItem.setEnabled(True)
            self.tx_ObsItem.setFocus()
Пример #9
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()
Пример #10
0
 def CadastraProdutoDB(self):
     INSERIR = CrudProduto()
     INSERIR.id = self.tx_idProduto.text()
     INSERIR.produto = self.tx_NomeProduto.text().upper()
     INSERIR.descricao = self.tx_Descricao.text().upper()
     # converts image for base64 to save in DB
     if self.lb_FotoProduto.pixmap():
         imagem = QPixmap(self.lb_FotoProduto.pixmap())
         data = QByteArray()
         buf = QBuffer(data)
         imagem.save(buf, 'PNG')
         INSERIR.imagem = str(data.toBase64()).encode('utf8')[2:-1]
     else:
         INSERIR.imagem = False
     INSERIR.categoria = self.cb_Categoria.currentData()
     INSERIR.marca = self.cb_Marca.currentData()
     INSERIR.qtdMinimoEstoque = self.tx_QtdMinimoEstoque.text()
     INSERIR.qtdEstoque = self.tx_QtdEstoque.text()
     INSERIR.valorUnitario = self.tx_ValorUnitario.text().replace(",", ".")
     INSERIR.addProduto()
     self.janelaProdutos()
Пример #11
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()