示例#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))
示例#2
0
    def DataTabProdutos(self):
        lista = CrudProduto()
        lista.produto = self.tx_BuscaProduto.text()
        lista.listaProduto()

        while self.tb_produtos.rowCount() > 0:
            self.tb_produtos.removeRow(0)

        i = 0
        if len(lista.produto) >= 1:
            while i < len(lista.produto):
                self.tb_produtos.insertRow(i)
                self.conteudoTabela(self.tb_produtos, i, 0,
                                    str(lista.id[i]))
                self.TabelaStatus(self.tb_produtos, i, 1,
                                  self.StatusEntrega(1))
                self.TabelaID(self.tb_produtos, i, 2, lista.id[i])
                self.TabelaNomeTelefone(self.tb_produtos, i, 3,
                                        lista.produto[i],
                                        lista.marca[i])
                self.TabelaQtdeStatus(self.tb_produtos, i, 4,
                                      str(lista.qtdeProduto[i]),
                                      self.StatusStoque(lista.qtdeProduto[i],
                                                        lista.estoqueMinimo[i]))
                self.ValorProduto(self.tb_produtos, i, 5,
                                  lista.valorUnitario[i])
                self.ValorProduto(self.tb_produtos, i, 6,
                                  lista.valorAtacado[i])
                # Sinal click tabela
                self.botaoTabela(self.tb_produtos, i, 7,
                                 partial(
                                     self.SelectProduto, lista.id[i]),
                                 "#005099")
                i += 1
        pass
示例#3
0
 def BuscaProdutoNomeCompra(self):
     produto = self.tx_BuscaItem.text()
     busca = CrudProduto()
     busca.produto = produto
     busca.buscaProdutoNome()
     self.tx_IdBuscaItem.setText(str(busca.id))
     self.BuscaProdutoIdCompra()
示例#4
0
 def autocompleteProduto(self):
     busca = CrudProduto()
     busca.produto = self.tx_BuscaItem.text()
     busca.autoCompleteProduto()
     lista = []
     if busca.produto:
         self.model.setStringList(busca.produto)
示例#5
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))
示例#6
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
示例#7
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()
示例#8
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()
示例#9
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()
示例#10
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
示例#11
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
示例#12
0
    def ListarProduto(self):
        lista = CrudProduto()
        # se o texto ta vazio vai buscar tudo
        lista.produto = self.tx_BuscaProdutos.text()
        lista.listaProduto()

        while self.tb_Produtos.rowCount() > 0:
            self.tb_Produtos.removeRow(0)

        i = 0
        # lista.produto vira array apos select
        if len(lista.produto) >= 1:
            while i < len(lista.produto):
                self.tb_Produtos.insertRow(i)
                self.alinharDadosTabela(self.tb_Produtos, i, 0,
                                        str(lista.id[i]))
                self.SetTabelaID(self.tb_Produtos, i, 1, lista.id[i])
                self.SetFormataDadosPessoaisTabela(self.tb_Produtos, i, 2,
                                                   lista.produto[i],
                                                   lista.descricao[i])
                self.SetFormataDadosPessoaisTabela(self.tb_Produtos, i, 3,
                                                   lista.categoria[i],
                                                   lista.marca[i])
                self.SetTabelaStatusEstoque(
                    self.tb_Produtos, i, 4, str(lista.qtdEstoque[i]),
                    self.GetCorStatusEstoque(lista.qtdEstoque[i],
                                             lista.qtdMinimoEstoque[i]))
                self.SetValorTable(self.tb_Produtos, i, 5,
                                   lista.valorUnitario[i])
                self.SetValorTable(self.tb_Produtos, i, 6,
                                   lista.totalEstoque[i])
                # click edit
                self.botaoTabela(
                    self.tb_Produtos, i, 7,
                    partial(self.DetalhamentoProduto, lista.id[i]), "#7AB32E")
                i += 1
示例#13
0
    def estoque(self):

        # Produtos estoque baixo
        busca = CrudProduto()
        self.bt_estoqueBaixo.setText(str(busca.listaEstoqueBaixo()))

        # Produtos Cadastrados
        self.bt_produtosAtivos.setText(str(busca.totalProdutoCadastrado()))

        # Pedidos a Receber
        busca = CrudCompra()

        self.bt_pedidosHoje.setText(str(busca.pedidosAReceber()))

        pass
示例#14
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()
示例#15
0
 def IdCheckProduto(self):
     if not self.tx_idProduto.text():
         busca = CrudProduto()
         self.tx_idProduto.setText(str(busca.lastIdProduto()))
示例#16
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()
示例#17
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()