Skip to content

Tag-icone-mini.png Análise

Projeto ​

Análise
Projeto 1022
Data da Análise: 04/03/2013

Esse projeto visa melhorar o processo de produção de mercadorias e baixa de estoque de seus respectivos insumos.

O processo de produção consiste, por exemplo, em permitir que se produza um sanduíche dando baixa no estoque de queijo, presunto e pão automaticamente.

Atualmente o sistema já possui um processo de produção bem simplificado. Consiste em uma guia chamada de índices técnicos de produção, no cadastro de produtos, onde se pode definir quais são os insumos do produto. E uma tela no Backoffice para se comandar o processo de produção, fazendo com que o sistema controle os estoque dos insumos automaticamente.

Será criado um novo cadastro para as receitas dos produtos, até porque a partir de agora uma receita poderá definir quantidades e até variedades de produto.

Exemplo 1

Para se fazer 10 bolos:

10UNBolo

São necessários os seguintes insumos:

3KGFarinha
10UNOvo
2LTLeite
200GRAçúcar

Exemplo 2

Para se fazer alguns pedaços de carne:

200KGContra filé
200KGCoxão mole

ÿ necessário um boi de insumo:

1UNBoi

Produção Automática ​

Alguns produtos terão seus insumos baixados automaticamente no estoque ao vender, isso se chamará produção automática.

No processo de produção automática o usuário obrigatoriamente deve definir uma receita padrão que constitua determinado produto.
A partir dessa configuração cadastral, o sistema vai dar baixa dos insumos e entrada da produção antes de executar o processo normal de venda.
Em seguida, se dará o processo normal que é a baixa na mercadoria.

Nota: O processo de baixa de estoque será feito pelo banco de dados.

Whiteboard Producao Automatica.png
Diagrama livre para processo de produção automática

Pré-Pesagem ​

Mercadorias que não sejam de produção automática passarão pelo novo processo de produção, também chamado de pré-pesagem.

Esse processo servirá para que se dê baixa em insumos realmente utilizados na produção de mercadorias, modificando se necessário os produtos e quantidades da receita.
E servirá também para passar à cozinha os produtos que deverão ser produzidos.

O processo de pré-pesagem requer que se cadastre receitas para os produtos no Backoffice.
Mas a produção em si se dará através de um link do Commerce Web.

Nesse link haverá uma tela para usuário visualizar as produções em andamento.
Ele poderá incluir uma nova produção, modificar sua receita, confirmar/cancelar a produção, e imprimir produção para cozinha.

Nota: O processo de baixa de estoque será feito pelo banco de dados.

Whiteboard Pre Pesagem.png
Diagrama livre para processo de pré-pesagem

Matriz de Compatibilidade ​

As alterações propostas nesse projeto levam em consideração a seguinte matriz de compatibilidade.

CommerceDLL PAFECF (Checkout)Funciona com?
Versão do ProjetoDLL sem a implementação

Se usuário tirar o relatório com Checkout desatualizado sistema vai pegar os dados da tabela antiga.
Será uma situação incorreta no ponto de vista do PAF, porém, não apresentará erros no sistema.

5.0H em dianteVersão do ProjetoSim, a DLL vai identificar que a versão da base é antiga e pegar as informações da tabela antiga.
Versão do ProjetoVersão do ProjetoSim

Especificação Técnica ​

Configurações Necessárias ​

Produtos Similares ​

Relacionar os produtos similares. O item utilizada como insumo deverá ter produtos similares para que se possa modificar a receita na pré-pesagem.

Farinhas Similares.PNG
Cadastro de Produtos Similares

Tipos de Lançamentos ​

Os tipos de lançamentos para produção própria e insumos serão obrigatórios. Eles serão utilizados no processo de baixa de estoque.

Tipos Lancamentos Producao.PNG
Tipos de lançamento de insumos e produção no Config

Backoffice ​

Receitas para Produção ​

Será criada uma nova tela chamada de Receitas para Produção.

Nessa tela será do tipo lançamento (ex.: form de compromisso), ou seja, haverá campos para identificar a receita no topo esquerdo da tela, e botões no topo direito. Esses botões servirão para pesquisar, excluir, desfazer e gravar alterações.

Na parte superior haverão os campos relacionados a receita [TT_RPD]. Na parte inferior haverão dois grids, um para informar os insumos [TT_IRP] e outro para se informar os itens produzidos [TT_INS]. Em cada um dos grids haverá botões para incluir e excluir.

Será permitido incluir e excluir tanto na inclusão, quanto na alteração da receita. Mesmo que já tenha sido feita venda.

Ao incluir o primeiro item produzido, sistema perguntará se usuário deseja utilizar a expressão "REC. " + TV_IPR.NOMPRO como descrição da receita.

Interface Receitas.png
Chave da tela por CODFIL e CODRPD.

Nota: Tratar CODRPD para no caso de inclusão obter próximo código através da função ProximoCodigo da TTUFNGER.

Definição dos campos:

  • Produção Automática? [checkbox]
  • Descrição da Receita [edit]

Grid de insumos:

  • Referência do Produto
  • Quantidade
  • Descrição
  • Especificação
  • Divisão
  • Subdivisão

Validações:

  • Não será permitido que se tenha mais de uma receita compondo o mesmo produto (garantido por Unique Constraint).
  • Não será permitido informar mais de um produto produzido no grid se for produção automática.
  • Quantidade produzida pela receita de produção automática será sempre 1.
  • Só serão permitidos produtos que não sejam serviços [TT_PRO.TIPPRO > 0], tanto no insumo, quanto no produzido.
  • Só permitir entrar na tela se usuário tiver permissão 341 - Cadastrar índice técnico de produção.

Cancelamento de Vendas ​

Ao cancelar uma venda no Backoffice ou não Checkout, caso ela tenha uma produção automática vinculada, sistema deve efetuar lançamentos de estoque inversos de maneira a anular os originais.

Commerce Web ​

Pré-Pesagem ​

A solução de pré-pesagem consiste em uma tela de consulta de produções e outra para inclusão de uma nova produção.
A sugestão é utilizar o padrão workwith do Genexus.

Será bloqueado o uso de receitas de produção automática [TT_RPD.PROAUT = "T"] no processo de pré-pesagem.

Consulta de Produções ​

A tela inicial da pré-pesagem deve ser uma lista que vem com as produções atuais ordenadas de maneira decrescente por data de inclusão [TT_RPP.DATINC].
Deve-se filtrar por padrão apenas as produções "a produzir" [TT_RPP.FLGEST = "A"].

Esboco producao lista.PNG
Esboço feito a partir da lista de pré-faturamento

O usuário poderá usar outros filtros relacionados a produção [TT_RPP], a receita [TT_RPD], aos insumos [TT_INB] e itens produzidos [TT_IPD].

Acima do grid deve haver um botão para a inclusão de novas produções.

Em cada linha do grid deverá haver um botão de impressão, um botão para confirmar aquela produção e um botão para excluí-la.
Só deve ser permitido excluir produções ainda não confirmadas.

O botão de impressão deve gerar um relatório simples que mostra a receita produzida.
Só deve ser permitido imprimir receitas já produzidas. Relatório deverá ter nome do produto.

O botão produzir deve mudar a situação da produção para produzida [TT_RPP.FLGEST = "P"].
Somente deixar produzir usuário que tiver permissão "342 - Lançamento de Produção Própria"

Cadastro de Produções ​

Ao cadastrar uma nova produção, usuário deve escolher uma receita. Para isso, é necessário uma tela de busca de receitas, que tenha como filtros os campos relacionados a receita [TT_RPD], os insumos [TT_INS] e o que se produz com a receita [TT_IRP].

Nota: Quando tratamos de apresentar os dados do item de grade [TT_GRA], normalmente utilizamos os campos Referência [TT_GRA.REFPRO], Descrição [TT_PRO.DESMAT], Especificação [TT_PRO.ESPMAT], Divisão [TT_DIV.NOMEXT] e Subdivisão [TT_SUB.NOMEXT].

Opcionalmente, deve ser permitido dar entrada na receita pelo seu código [TT_RPD.CODFIL e CODRPD].

Esboco producao cadastro.PNG
Esboço feito a partir do cadastro de clientes agrupados do pré-faturamento

Depois de escolhida a receita, sistema deve apresentar em grid seus respectivos insumos e itens produzidos.

Será permitido trocar os insumos por produtos similares, e isso poderá ser feito através de uma tela de pesquisa; ou digitando uma referência de produto nova.

A quantidade utilizada tanto nos insumos quanto nos itens produzidos poderá ser alterada.

Nota: Na fabricação de um produto comercializado pelo seu peso, por exemplo, é difícil especificar na receita a quantidade a ser produzida. Por isso será permitido modificar a quantidade.

Entretanto, não será permitido modificar o produto porque isso descaracterizaria a receita.

Sistema deve mostrar o custo de cada insumo [TT_GRA.CUSREP] e também o saldo em estoque daquela filial [TT_SAL.QTDEST].

Deve haver um configuração local [no TotaliCommerceWebConfig.xml] para definir qual subestoque será utilizado para o processo. Essa configuração deve ser obrigatória para o uso da tela de produções. Ela deverá mostrar um combo com todos os subestoques [TD_MUL] para usuário escolher. Utilizar essa informação para filtrar o saldo de estoque [TT_SAL.CODMUL].

Nota: a tela Configurações >>> SelfColor já implementa esse processo de configuração local. Deve-se preservar as funcionalidades desse arquivo.

Ex.: Ele é assinado, e se alterado por fora do sistema é apresentada uma mensagem.

Em um botão salvar, sistema deve materializar a receita a produzir [TT_RPP.FLGEST = "A"] gravando os dados nas tabelas TT_RPP, TT_IPD e TT_INB.
Gravar Produção Automática como falso [TT_RPP.PROAUT = "F"].

A numeração da coluna CODRPP será controlada pela tabela TT_COD, para que o sistema possa atualizar nas tabelas filhas o código da tabela pai, seguindo o padrão vigente do Commerce.

Estrutura de Dados dos Produtos ​

Para facilitar o entendimento da estrutura de dados do produto foi feito um diagrama de estrutura de dados.
Para fins de cálculo do estoque a filial [TD_FIL] é a logada, e o estoque [TD_MUL] é o configurado. Para encontrar um produto similar é necessário trazer várias grades relacionadas a grade original através da tabela N-para-N [TT_SIM].

Estrutura Produtos.png
Modelo da Estrutura de Dados do Produto

TT_COD ​

A TT_COD é uma tabela que possui a última chave gerada para cada tabela que tenha sequenciador.
Deve-se criar um registro com CODTAB = "RPP" caso não houver. O tratamento deve ser feito de acordo com a filial logada, que será utilizada na coluna TT_RPP.CODFIL. E deve-se guardar na coluna ULTCOD o último código gerado.

Estrutura da TT_COD

ColunaDescriçãoTipoRestrições
CODTABApelido da TabelaCHAR(3)
FILCODFilialCHAR(3)
ULTCODÿltimo CódigoNUMBER(10)
SEQUENSequenciadorCHAR(10)PK
CODSERSérieCHAR(2)

A coluna SEQUEN é populada pela trigger, então um INSERT seria assim:

INSERT INTO TT_COD (CODTAB, FILCOD, ULTCOD) VALUES ('RPP','001',1) -- Gerou código 1.

UPDATE TT_COD SET ULTCOD = 2 WHERE CODTAB = 'RPP' AND FILCOD = '001' -- Gerou código 2.

Para obter o próximo código, utilizar um SELECT MAX(ULTCOD)+1. Deve-se tratar para logo commitar após pegar o código.

DLL PAFECF ​

Tratar relatório de índice técnico de produção para contemplar a nova estrutura.

Conforme descrito na tarefa original que criou esse relatório [79258], deve- se trazer os itens produzidos e suas respectivas receitas.

TAB. ÍNDICE TÿCNICO DE PRODUÿÿO Produto Próprio Insumo Qtde. Un. 221133 Pizza 342 Calabresa 0,1 KG 345 Queijo 0,1 KG 113355 Bolo 112 Fermento 1 CX 124 Ovos 2 UN

Entretanto, de acordo com a nova estrutura, um insumo pode gerar mais de um item.
Então, se calabresa e queijo são receita para 1 pizza e uma mini pizza, o relatório ficaria assim:

TAB. ÍNDICE TÿCNICO DE PRODUÿÿO Produto Próprio Insumo Qtde. Un. 221133 Pizza 1515 Mini Pizza 342 Calabresa 0,1 KG 345 Queijo 0,1 KG

Assunto referente ao requisito VII, item 20 do PAF-ECF.

(PAF):

http://www.fazenda.gov.br/confaz/confaz/atos/atos_cotepe/2012/ac005_12.htm

(Rot. Testes):

http://www.inf.furb.br/lqs/site/files/r-paf-0112.pdf

Config ​

As colunas de tipo de lançamento para insumo e produção própria serão obrigatórias.
[TT_CFG.TIPLAN_INS e TIPLAN_PPR].

Mudança na Estrutura dos Dados ​

Serão criadas novas tabelas para armazenar a receita e a produção.
A tabela índice técnico de produção [TT_ITP] não será mais utilizada.

A receita/produção podem estar vinculadas a vários itens a produzir, ou a somente um produto quando for produção automática.

Entretanto, um produto [TT_GRA] só poderá ser produzido por 1 receita.

Estrutura Banco Producao.png
Estrutura de Banco da Produção

Tabela de Receitas para Produção [TT_RPD] ​

Será criada uma nova tabela para receitas para produção.

ColunaDescriçãoTipoAceita Nulo?Restrições
CODFILFilialCHAR(3)NãoPK
CODRPDCódigo da ReceitaCHAR(10)NãoPK
DESRPDDescrição da ReceitaVARCHAR(200)Não
PROAUTProdução Automática?VARCHAR(1)NãoCK ("T" ou "F")

Nota: Chave alimentada pela TT_COD.

Tabela de Itens a Produzir [TT_IRP] ​

Será criada uma nova tabela para guardar que produtos que aquela receita produzirá.

ColunaDescriçãoTipoAceita Nulo?Restrições
CODFILFilialCHAR(3)NãoPK
SEQUENSequenciadorCHAR(10)NãoPK
FILRPDFilial ReceitaCHAR(3)NãoFK (com PK da TT_RPD)
CODRPDCódigo ReceitaCHAR(10)Não
FILMATFilial Produto ResultanteCHAR(3)NãoFK (com PK da TT_GRA)
UQ (FILMAT, CODMAT, CODCOR, CODTAM)
CODMATCódigo Produto ResultanteCHAR(5)Não
CODCORDivisão Produto ResultanteNUMBER(5)Não
CODTAMSubdivisão Produto ResultanteNUMBER(5)Não
QTDMOVQuantidade ResultanteNUMBER(12,4)NãoCK (QTDMOV > 0)

Nota: Unique constraint servirá para garantia que não exista mais de uma receita produtora de determinada mercadoria.

Tabela de Insumos da Produção [TT_INS] ​

Será criada uma nova tabela para guardar os insumos necessários para a receita na produção.

ColunaDescriçãoTipoAceita Nulo?Restrições
CODFILFilialCHAR(3)NãoPK
SEQUENSequenciadorCHAR(10)NãoPK
FILRPDFilial ReceitaCHAR(3)NãoFK (com PK da TT_RPD)
CODRPDCódigo ReceitaCHAR(10)Não
FILMATFilial Produto InsumoCHAR(3)NãoFK (com PK da TT_GRA)
CODMATCódigo Produto InsumoCHAR(5)Não
CODCORDivisão Produto InsumoNUMBER(5)Não
CODTAMSubdivisão Produto InsumoNUMBER(5)Não
QTDMOVQuantidade InsumoNUMBER(12,4)NãoCK (QTDMOV > 0)

Tabela de Receitas Produzidas [TT_RPP] ​

Será utilizada a tabela atual de produção para armazenar as receitas produzidas.

Será criada uma nova tabela para receitas para produção.

ColunaDescriçãoTipoAceita Nulo?Restrições
CODFILFilialCHAR(3)NãoPK
CODRPPCódigoCHAR(10)NãoPK
DESRPPDescrição da ReceitaVARCHAR(200)Não
PROAUTProdução Automática?VARCHAR(1)NãoCK ("T" ou "F")
FLGESTSituaçãoCHAR(1)NãoCK ("A" ou "P")
DATINCData InclusãoDATENão
ATU_EMData AlteraçãoDATENão
FILUSUFilial Usuário RegistrouCHAR(3)NãoFK (com PK da TT_USU)
CODUSUCódigo Usuário RegistrouCHAR(3)Não
FILPEDFilial Pré-VendaCHAR(3)SimFK (com PK da TT_IOR)
TIPPEDTipo Pré-VendaCHAR(1)Sim
NUMPEDNúmero Pré-VendaCHAR(8)Sim
ITEPEDItem Pré-VendaNUMBER(5)Sim
FILIVEFilial VendaCHAR(3)SimFK (com PK da TT_IVE)
SEQIVESeq. VendaCHAR(10)Sim
NUMIVEItem VendaNUMBER(5)Sim

Nota: Chave alimentada pela TT_COD.

Nota: FLGEST servirá para controlar a situação "A produzir" e "Produzido".

Nota: não será reaproveitada a TT_PPR porque ela possui vínculo desnecessário com produto e teria que ter tratamento especial para FLGEST do passado.

Nota: a princípio não materializaremos o processo de produção automática. Utilizaremos o vínculo direto entre a TT_IVE e a TT_LAN. Esse processo já gerar lançamento inverso ao cancelar a venda. Tarefa: 36925.

Tabela de Itens Produzidos [TT_IPD] ​

Será criada uma nova tabela para guardar os itens produzidos.

ColunaDescriçãoTipoAceita Nulo?Restrições
CODFILFilialCHAR(3)NãoPK
SEQUENSequenciadorCHAR(10)NãoPK
FILRPPFilial Receita ProduzidaCHAR(3)NãoFK (com PK da TT_RPP)
CODRPPCódigo Receita ProduzidaCHAR(10)Não
FILMATFilial Produto ResultanteCHAR(3)NãoFK (com PK da TT_GRA)
CODMATCódigo Produto ResultanteCHAR(5)Não
CODCORDivisão Produto ResultanteNUMBER(5)Não
CODTAMSubdivisão Produto ResultanteNUMBER(5)Não
QTDMOVQuantidade ResultanteNUMBER(12,4)NãoCK (QTDMOV > 0)

Tabela de Insumos Baixados [TT_INB] ​

Será criada uma nova tabela para guardar os insumos baixados na produção.

ColunaDescriçãoTipoAceita Nulo?Restrições
CODFILFilialCHAR(3)NãoPK
SEQUENSequenciadorCHAR(10)NãoPK
FILRPPFilial Receita ProduzidaCHAR(3)NãoFK (com PK da TT_RPP)
CODRPPCódigo Receita ProduzidaCHAR(10)Não
FILMATFilial Produto InsumoCHAR(3)NãoFK (com PK da TT_GRA)
CODMATCódigo Produto InsumoCHAR(5)Não
CODCORDivisão Produto InsumoNUMBER(5)Não
CODTAMSubdivisão Produto InsumoNUMBER(5)Não
QTDMOVQuantidade InsumoNUMBER(12,4)NãoCK (QTDMOV > 0)

Log de Produção [TL_RPP] ​

Será criada uma nova tabela para logs da produção.

ColunaDescriçãoTipoAceita Nulo?Restrições
CODTABChaveNUMBER(10)NãoPK
FILRPPFilial ProduçãoCHAR(3)NãoFK (com PK da TT_RPP)
CODRPPCódigo ProduçãoCHAR(10)Não
DATOPEData InclusãoDATENão
FILUSUFilial Usuário RegistrouCHAR(3)NãoFK (com PK da TT_USU)
CODUSUCódigo Usuário que ProduziuCHAR(3)Não
MSGLOGModificaçãoVARCHAR(4000)Sim
CODMATCódigo Produto Produção AutomáticaCHAR(5)Sim
CODUIDIdentificação do AcessoNUMBERSimFK (com PK da TT_UID)

Alterações em Log ​

As alterações nas tabelas TT_RPS, TT_IRP e TT_INS serão registradas na TL_PRO.
As alterações nas tabelas TT_RPP, TT_IPD e TT_INB serão registradas na TL_RPP.

Tipo de Lançamento Padrão ​

Serão criados na migração tipos especiais da TD_LAN para serem utilizados como tipo de lançamento insumo e produção próprio nos clientes que não tiverem esses campos preenchidos.

Alteração do Estoque ​

Sistema deve gerar lançamentos avulsos no estoque para dar baixa dos insumos e entrada na mercadoria produzida.

Processo deve ser semelhante ao atual form de produção própria, ou seja, deve gerar os registros da TT_LAN com os mesmos dados, inclusive utilizando as configurações de tipo de lançamento [TT_CFG.TIPLAN_INS e TIPLAN_PPR].

A principal diferença é que o processo deve ser feito pelo banco de dados.

Alteração do Estoque na Produção Automática ​

1. TGIVE2
1.1. Verificar se tem receita para aquele produto.
1.1.1. Caso tenha, verificar se é produção automática.
1.1.1.1. Se for, proceder INSERT na TT_LAN dos insumos e da produção.

Fazer esse processo somente na inclusão, e logo no começo.
Depois das validações e antes das funções TGR_IVE_Atualiza_Saldo e TGR_IVE_Atualiza_Movimento.
Gravar o vínculo entre TT_LAN e TT_IVE (TT_LAN. FILIVE, SEQIVE e NUMIVE).

Cronologicamente, o processo deve ficar assim:

Dá baixa nos insumos
(-) Queijo [TT_LAN com TIPLAN_INS, valor e quantidade negativa]
(-) Presunto [TT_LAN com TIPLAN_INS, valor e quantidade negativa]
(-) Pão [TT_LAN com TIPLAN_INS, valor e quantidade negativa]

Dá entrada na produção
(+) Sanduíche [TT_LAN com TIPLAN_PPR, valor e quantidade positiva]

Dá baixa no produto vendido
(-) Sanduíche [TT_IVE normal]

Ao cancelar a venda, a TGIVE2 deve proceder lançamentos inversos.
O processo já existe atualmente, apenas é necessário garantir que ele funcionará nesse caso também.

Alteração do Estoque na Pré-Pesagem ​

1. TGRPP2
1.1. Ao modificar o FLGEST de "A" para "P".
1.1.1. Proceder INSERT na TT_LAN dos insumos e da produção.

Fazer esse processo no final da trigger.

Cronologicamente, o processo deve ficar assim:

Dá baixa nos insumos
(-) Queijo [TT_LAN com TIPLAN_INS, valor e quantidade negativa]
(-) Presunto [TT_LAN com TIPLAN_INS, valor e quantidade negativa]
(-) Pão [TT_LAN com TIPLAN_INS, valor e quantidade negativa]

Dá entrada na produção
(+) Sanduíche [TT_LAN com TIPLAN_PPR, valor e quantidade positiva]

Produzir ao Vender ​

Ao ser efetuada uma venda, ou uma pré-venda, sistema gerará um registro de produção automaticamente.

Tratar na trigger do item de orçamento, quando for pré-venda e o produto tiver receita, mas não de produção automática, gerar automaticamente a produção. Tratar na trigger do item de venda, quando este não estiver vinculado a um item de pré-venda e o produto tiver receita, mas não de produção automática, gerar automaticamente a produção.

Gravar o vínculo da produção com o item que o originou:

TT_RPP.FILPED, TIPPED, NUMPED e ITEPED

ou

TT_RPP.FILIVE, SEQIVE e NUMIVE

Resumo por Módulo ​

Banco de dados ​

  • Criação de novas tabelas (TT_RPD, TT_IRP, TT_INS, TT_RPP, TT_IPD, TT_INB, TL_RPP).
  • Desativação das tabelas atuais (TT_PPR, TT_ITP).
  • Atualização do estoque ao gravar venda.
  • Atualização do estoque ao produzir.
  • Criação de tipos de lançamentos padrão para insumo e produção.

Config ​

  • Obrigatoriedade do tipo de lançamento de insumo e produção.

Backoffice ​

  • Tela de receitas.

DLL PAFECF ​

  • Tratamento no relatório de índices técnicos.

Commerce Web ​

  • Tela de produção, pesquisa de produções, receitas e insumos.