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