def lista_para_produto( lista: dict, produto: ProdutoAbstrato or None = None) -> ProdutoAbstrato: validacao_tipo(lista, dict) if produto is None: produto = ProdutoPerecivel(lista.get("identificador")) validacao_tipo(propriedade=produto, tipo=ProdutoAbstrato) identificador = lista.get("identificador") nome = lista.get("nome") descricao = lista.get("descricao") data_fabricacao = lista.get("data_fabricacao") valor = lista.get("valor") prioridade = lista.get("prioridade") estoque_quantidade = lista.get("estoque_quantidade") estoque_minimo = lista.get("estoque_minimo") produto.identificador = identificador if identificador is not None else produto.identificador produto.nome = nome if nome is not None else produto.nome produto.descricao = descricao if descricao is not None else produto.descricao produto.data_fabricacao = data_fabricacao if data_fabricacao is not None else produto.data_fabricacao produto.valor = float(valor if valor is not None else produto.valor) produto.prioridade = int( prioridade if prioridade is not None else produto.prioridade) produto.estoque_quantidade = int( estoque_quantidade if estoque_quantidade is not None else produto. estoque_quantidade) produto.estoque_minimo = int(estoque_minimo if estoque_minimo is not None else produto.estoque_minimo) return produto
def listar(registros: list): validacao_tipo(registros, list) for registro in registros: print( "============================================================") print(registro)
def categorias(self, categorias: dict): validacao_tipo(categorias, dict) for categoria in categorias.values(): validacao_tipo(categoria, Categoria) self.__categorias = categorias
def gerar_tabela(self, valores: list, tamanho_coluna: list, cabecalho: list or None = None, tooltip: str = "", chave: str or None = None): validacao_tipo(valores, list) validacao_tipo(tamanho_coluna, list) validacao_tipo(tooltip, str) if cabecalho is not None: validacao_tipo(cabecalho, list) if chave is None: chave = "tabela" validacao_tipo(chave, str) self.addRowToLayout([ Sg.Table( values=valores, justification='center', key=chave, headings=cabecalho, bind_return_key=True, tooltip=tooltip, col_widths=tamanho_coluna, size=(500, 50), num_rows=20, select_mode=Sg.SELECT_MODE_BROWSE, ) ])
def categorias(self, categorias: list or None = None): if categorias is None or not categorias: categorias = [[ "", "", "", ]] validacao_tipo(categorias, list) self.addRowToLayout([ Sg.Table( values=categorias, justification='center', key="tabela", headings=["Nº Referencia", "Nome"], bind_return_key=True, tooltip= "Clique duas vezes em uma das linhas para selecionar uma ação.", col_widths=[20, 20], size=(500, 50), num_rows=20, ) ]) self.addRowToLayout([ Sg.Cancel(button_text=self.CANCEL), ]) return self.window()
def lista_para_lote(lista: dict) -> Lote: validacao_tipo(lista, dict) return Lote( lista["data_validade"], int(lista["quantidade"]), )
def lotes_para_limite(lotes: dict) -> list: validacao_tipo(lotes, dict) resp = [] for lote in lotes.values(): resp.append(lote.objeto_limite()) return resp
def adicionar_entidade(self, entidade: EntidadeAbstrata): validacao_tipo(entidade, self.classe_entidade()) if self.entity_manager.get_one_or_none( entidade.identificador) is not None: message = "O código de referência usado está duplicado, por favor insira um diferente." raise CodigoReferenciaDuplicadoException(message) self.entity_manager.add(entidade.identificador, entidade)
def gerar_tabela(self, linhas: list, cabecalho: list or None = None): validacao_tipo(linhas, list) cabecalho = list(cabecalho) tamanho_colunas = self.tamanho_coluna(cabecalho, linhas) print(self.linha_formatada(cabecalho, tamanho_colunas)) for linha in linhas: linha = list(linha.values()) print(self.linha_formatada(linha, tamanho_colunas))
def selecionar_opcao(self, controle: str) -> dict: validacao_tipo(controle, str) selecionados = {} opcoes = self.opcoes()[controle] for opcao in opcoes: selecionados[opcao] = input(opcoes[opcao]) return selecionados
def atualizar(self, categoria: dict): validacao_tipo(propriedade=categoria, tipo=dict) self.__formulario(categoria) self.addRowToLayout([ Sg.Cancel(button_text=self.CANCEL), Sg.Button(button_text="Atualizar", key="atualizar") ]) return self.window()
def lista_para_categoria(lista: dict, categoria: Categoria or None = None) -> Categoria: validacao_tipo(lista, dict) if categoria is None: categoria = Categoria(lista.get("identificador")) categoria.identificador = lista.get("identificador") if lista.get( "identificador") else categoria.identificador categoria.nome = lista.get("nome") if lista.get( "nome") else categoria.nome return categoria
def __formulario(self, produto: dict or None = None): if produto is None: produto = {} validacao_tipo(propriedade=produto, tipo=dict) self.addRowToLayout([ Sg.Text(text="Código de referência: "), Sg.InputText(key="identificador", default_text=produto.get("identificador")) ]) self.addRowToLayout([ Sg.Text(text="Nome: "), Sg.InputText(key="nome", default_text=produto.get("nome")) ]) self.addRowToLayout([ Sg.Text(text="Descrição: "), Sg.InputText(key="descricao", default_text=produto.get("descricao")) ]) self.addRowToLayout([ Sg.Text(text="Data de fabricacao: "), Sg.InputText(key="data_fabricacao", default_text=produto.get("data_fabricacao")) ]) self.addRowToLayout([ Sg.Text(text="Valor: "), Sg.InputText(key="valor", default_text=produto.get("valor")) ]) self.addRowToLayout([ Sg.Text(text="Prioridade: "), Sg.InputText(key="prioridade", default_text=produto.get("prioridade")) ]) self.addRowToLayout([ Sg.Text(text="Estoque: "), Sg.InputText(key="estoque_quantidade", default_text=produto.get("estoque_quantidade")) ]) self.addRowToLayout([ Sg.Text(text="Estoque mínimo: "), Sg.InputText(key="estoque_minimo", default_text=produto.get("estoque_minimo")) ])
def mostrar(self, produto: dict): validacao_tipo(propriedade=produto, tipo=dict) self.addRowToLayout([ Sg.Text(text="Código de referência: "), Sg.Text(text=produto.get("identificador")) ]) self.addRowToLayout( [Sg.Text(text="Nome: "), Sg.Text(text=produto.get("nome"))]) self.addRowToLayout([ Sg.Text(text="Descrição: "), Sg.Text(text=produto.get("descricao")) ]) self.addRowToLayout([ Sg.Text(text="Data de fabricacao: "), Sg.Text(text=produto.get("data_fabricacao")) ]) self.addRowToLayout( [Sg.Text(text="Valor: "), Sg.Text(text=produto.get("valor"))]) self.addRowToLayout([ Sg.Text(text="Prioridade: "), Sg.Text(text=produto.get("prioridade")) ]) self.addRowToLayout([ Sg.Text(text="Estoque: "), Sg.Text(text=produto.get("estoque_quantidade")) ]) self.addRowToLayout([ Sg.Text(text="Estoque mínimo: "), Sg.Text(text=produto.get("estoque_minimo")) ]) self.relacionamento_categoria(produto.get("categorias")) self.relacionamento_lote(produto.get("lotes")) self.addRowToLayout([ Sg.Cancel(button_text=self.CANCEL), ]) self.window()
def __formulario(self, categoria: dict or None = None): if categoria is None: categoria = {} validacao_tipo(propriedade=categoria, tipo=dict) self.addRowToLayout([ Sg.Text(text="Código de referência: "), Sg.InputText(key="identificador", default_text=categoria.get("identificador")) ]) self.addRowToLayout([ Sg.Text(text="Nome: "), Sg.InputText(key="nome", default_text=categoria.get("nome")) ])
def __formulario(self, lote: dict or None = None): if lote is None: lote = {} validacao_tipo(propriedade=lote, tipo=dict) self.addRowToLayout([ Sg.Text(text="Data de validade: "), Sg.InputText(key="data_validade", default_text=lote.get("data_validade")) ]) self.addRowToLayout([ Sg.Text(text="Quantidade: "), Sg.InputText(key="quantidade", default_text=lote.get("quantidade")) ])
def listar(self, categorias: list or None = None): if categorias is None or not categorias: categorias = [["", "", ]] validacao_tipo(categorias, list) self.gerar_tabela( valores=categorias, tamanho_coluna=[20, 20, ], cabecalho=["Nº Referencia", "Nome", ], tooltip="Clique duas vezes em uma das linhas para selecionar uma ação.", ) self.addRowToLayout([ Sg.Cancel(button_text=self.CANCEL), Sg.Button(button_text="Criar", key="criar") ]) return self.window()
def atualizar(self, produto: dict): validacao_tipo(propriedade=produto, tipo=dict) self.__formulario(produto) self.addRowToLayout([ Sg.SimpleButton(button_text="Categorias", key="categorias", size=(18, 8)), Sg.Text(size=(1, 2)), Sg.SimpleButton(button_text="Lotes", key="lotes", size=(18, 8)), ]) self.addRowToLayout([ Sg.Cancel(button_text=self.CANCEL), Sg.Button(button_text="Atualizar", key="atualizar") ]) return self.window()
def atualizar_entidade(self, entidade: EntidadeAbstrata, identificador: str or None = None): validacao_tipo(entidade, self.classe_entidade()) if identificador is None: identificador = entidade.identificador validacao_tipo(identificador, str) if self.entity_manager.get_one_or_none(identificador) is None: raise EntidadeNaoExistente() if entidade.identificador != identificador and self.entity_manager.get_one_or_none( entidade.identificador): raise CodigoReferenciaDuplicadoException() self.entity_manager.remove(identificador, True) self.entity_manager.add(entidade.identificador, entidade) return self
def relacionamento_lote(self, lotes: list or None = None): if lotes is None or (isinstance(lotes, list) and len(lotes) < 1): lotes = [ [ "", "", ], ] validacao_tipo(lotes, list) self.gerar_tabela( valores=lotes, tamanho_coluna=[ 20, 20, ], cabecalho=["Data de Validade", "Quantidade"], tooltip= "Clique duas vezes em uma das linhas para selecionar uma ação.", chave="lotes", )
def relacionamento_categoria(self, categorias: list or None = None): if categorias is None or (isinstance(categorias, list) and len(categorias) < 1): categorias = [ [ "", "", ], ] validacao_tipo(categorias, list) self.gerar_tabela( valores=categorias, tamanho_coluna=[ 20, 20, ], cabecalho=["Código de referência", "Nome"], tooltip= "Clique duas vezes em uma das linhas para selecionar uma ação.", chave="categorias", )
def listar(self, lotes: list or None = None): if lotes is None or not lotes: lotes = [[ "", "", "", ]] validacao_tipo(lotes, list) self.gerar_tabela( valores=lotes, tamanho_coluna=[20, 20], cabecalho=["Data de validade", "Quantidade"], tooltip= "Clique duas vezes em uma das linhas para selecionar uma ação.", ) self.addRowToLayout([ Sg.Cancel(button_text=self.CANCEL), Sg.Button(button_text="Criar", key="criar") ]) return self.window()
def data_validade(self, data_validade: str): validacao_tipo(data_validade, str) self.identificador = data_validade
def quantidade(self, quantidade: int): validacao_tipo(quantidade, int) self.__quantidade = quantidade
def identificador(self, identificador: str): validacao_tipo(identificador, str) self.__identificador = identificador
def estoque_minimo(self, estoque_minimo: int): validacao_tipo(estoque_minimo, int) self.__estoque_minimo = estoque_minimo
def estoque_quantidade(self, estoque_quantidade: int): validacao_tipo(estoque_quantidade, int) self.__estoque_quantidade = estoque_quantidade
def data_valor(self, data_valor: str): validacao_tipo(data_valor, str) self.__data_valor = data_valor
def valor(self, valor: float): validacao_tipo(valor, float) self.__valor = valor
def remover_lote(self, identificador: str): validacao_tipo(identificador, str) del (self.__lotes[identificador]) self.atualizar_estoque()