コード例 #1
0
    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
コード例 #2
0
    def listar(registros: list):
        validacao_tipo(registros, list)

        for registro in registros:
            print(
                "============================================================")
            print(registro)
コード例 #3
0
    def categorias(self, categorias: dict):
        validacao_tipo(categorias, dict)

        for categoria in categorias.values():
            validacao_tipo(categoria, Categoria)

        self.__categorias = categorias
コード例 #4
0
    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,
            )
        ])
コード例 #5
0
    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()
コード例 #6
0
    def lista_para_lote(lista: dict) -> Lote:
        validacao_tipo(lista, dict)

        return Lote(
            lista["data_validade"],
            int(lista["quantidade"]),
        )
コード例 #7
0
    def lotes_para_limite(lotes: dict) -> list:
        validacao_tipo(lotes, dict)

        resp = []
        for lote in lotes.values():
            resp.append(lote.objeto_limite())

        return resp
コード例 #8
0
    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)
コード例 #9
0
    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))
コード例 #10
0
    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
コード例 #11
0
    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()
コード例 #12
0
    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
コード例 #13
0
    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"))
        ])
コード例 #14
0
    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()
コード例 #15
0
    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"))
        ])
コード例 #16
0
    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"))
        ])
コード例 #17
0
    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()
コード例 #18
0
    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()
コード例 #19
0
    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
コード例 #20
0
    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",
        )
コード例 #21
0
    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",
        )
コード例 #22
0
    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()
コード例 #23
0
 def data_validade(self, data_validade: str):
     validacao_tipo(data_validade, str)
     self.identificador = data_validade
コード例 #24
0
 def quantidade(self, quantidade: int):
     validacao_tipo(quantidade, int)
     self.__quantidade = quantidade
コード例 #25
0
 def identificador(self, identificador: str):
     validacao_tipo(identificador, str)
     self.__identificador = identificador
コード例 #26
0
 def estoque_minimo(self, estoque_minimo: int):
     validacao_tipo(estoque_minimo, int)
     self.__estoque_minimo = estoque_minimo
コード例 #27
0
 def estoque_quantidade(self, estoque_quantidade: int):
     validacao_tipo(estoque_quantidade, int)
     self.__estoque_quantidade = estoque_quantidade
コード例 #28
0
 def data_valor(self, data_valor: str):
     validacao_tipo(data_valor, str)
     self.__data_valor = data_valor
コード例 #29
0
 def valor(self, valor: float):
     validacao_tipo(valor, float)
     self.__valor = valor
コード例 #30
0
 def remover_lote(self, identificador: str):
     validacao_tipo(identificador, str)
     del (self.__lotes[identificador])
     self.atualizar_estoque()