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()
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))
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()
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))
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
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
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
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()
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()
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()
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()