Automatização tratamento de conjunto: mudanças entre as edições

De Portal do Conhecimento MicroUniverso
Ir para navegação Ir para pesquisar
(Criou página com '<span style="color:#43A4D1"><span style="font-family:poppins,sans-serif">'''Este artigo irá mostrar como automatizar este processo, para passar a atualizar o custo do conjunto e o preço de venda do conjunto baseado no custo dos seus componentes.'''</span></span> <span style="color:#43A4D1"><span style="font-family:poppins,sans-serif">'''Na entrada da nota, atualizar o custo do conjunto baseado no custo do componente que foi comprado.'''</span></span> <span style="co...')
 
Sem resumo de edição
Linha 67: Linha 67:
|Conjunto (prodconest.codpro)
|Conjunto (prodconest.codpro)
|Componentes
|Componentes
(prodconest.codcomp)
|Quantidade
|Quantidade
(prodconest.Quant)
|Preço Venda
|Preço Venda
(produtocad.PrecoVen)
|-
|-
| rowspan="3" |Kit Caixa de Luz  
| rowspan="3" |Kit Caixa de Luz  
Linha 91: Linha 85:
Preço de venda do conjunto “Kit caixa de Luz” = (1 * 33,50) + (10 * 5,30) + (1 * 15,50) =102,00
Preço de venda do conjunto “Kit caixa de Luz” = (1 * 33,50) + (10 * 5,30) + (1 * 15,50) =102,00


Deve ser atualizado o preço de venda do conjunto na tabela PRODUTOCAD.PRECOVEN, com o valor de venda calculado, ONDE: Produtocad.Codpro = Prodconest.codpro
Deve ser atualizado o preço de venda do conjunto, com o valor de venda calculado.


ATENÇÃO: O preço de venda deve ser atualizado SOMENTE se ALTERADA A QUANTIDADE e/ou INCLUÍDO NOVO COMPONENTE, caso contrário não deve ser atualizado.
ATENÇÃO: O preço de venda deve ser atualizado SOMENTE se ALTERADA A QUANTIDADE e/ou INCLUÍDO NOVO COMPONENTE, caso contrário não deve ser atualizado.
Linha 97: Linha 91:




RN003. Se ALTERADO o VALOR DO CUSTO e/ou PREÇO DE VENDA do conjunto deve ser gerado registro de LOG na tabela LogOperCad para operações de inclusão e alteração:
'''RN003'''. Se ALTERADO o VALOR DO CUSTO e/ou PREÇO DE VENDA do conjunto deve ser gerado registro de LOG para operações de inclusão e alteração:
 
* LogOpercad.Arquivo = PRODUTOCAD
* LogOpercad.Filial =  Código da filial do usuário (mFilusua)
* LogOpercad.Opcao = ARQUIVOS|PRODUTOS|CADASTRODECONJUNTO
* LogOpercad.Sist = TRA
* Se alterado preço de custo:
** LogOpercad.Referencia =  ‘Alterado preço de custo de: R$ [custo anterior] para: R$ [novo custo]
* Se alterado preço de venda:
** LogOpercad.Referencia =  ‘Alterado preço de venda de: R$ [preço anterior] para: R$ [novo preço]
* … Demais colunas seguir o padrão para atualização de LOG, que você encontra aqui.
 
[1º Marco de entrega ⇑ RNs acima]


= Tradewin - Arquivos - Produtos - Cadastros =
= Tradewin - Arquivos - Produtos - Cadastros =
Linha 120: Linha 102:
Regras de Negócio:
Regras de Negócio:


RN004. Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário, na alteração de preço de venda de produto que pertence a um conjunto, seja COMPONENTE ou PRODUTO FINAL, deve ser exibida uma MENSAGEM DE ALERTA para o usuário.
'''RN004'''. Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário, na alteração de preço de venda de produto que pertence a um conjunto, seja COMPONENTE ou PRODUTO FINAL, deve ser exibida uma MENSAGEM DE ALERTA para o usuário.


PREÇO DE VENDA = Campo Preço de Venda da 1ª Unid (Produtocad.PrecoVen)
PREÇO DE VENDA = Campo Preço de Venda da 1ª Unid  


Se alterado o PREÇO DE VENDA de um PRODUTO FINAL do conjunto deve ser exibida a mensagem:
Se alterado o PREÇO DE VENDA de um PRODUTO FINAL do conjunto deve ser exibida a mensagem:
Linha 129: Linha 111:


Componentes do conjunto:  
Componentes do conjunto:  
[Codpro - Descrição do componente]


Se alterado o PREÇO DE VENDA de um produto COMPONENTE de um conjunto deve ser exibida a mensagem:
Se alterado o PREÇO DE VENDA de um produto COMPONENTE de um conjunto deve ser exibida a mensagem:
Linha 137: Linha 117:


Conjunto que o componente está relacionado:
Conjunto que o componente está relacionado:
[Codpro - Descrição do conjunto]


Observação: Um componente pode pertencer a mais de um conjunto.
Observação: Um componente pode pertencer a mais de um conjunto.
{| class="wikitable"
|SQL de referência
|-
|<nowiki>-- Select para busca dos COMPONENTES do produto final (conjunto)</nowiki>
select PC.codcomp, PD.DESCR FROM Prodconest PC
JOIN PRODUTOCAD PD ON PC.codcomp = PD.CODPRO
where PC.codpro = -- Codpro do produto alterado
-- Select para busca do PRODUTO FINAL do componente
select PC.codpro, PD.DESCR FROM Prodconest PC
JOIN PRODUTOCAD PD ON PC.codpro = PD.CODPRO
where PC.codcomp =  -- Codpro do produto alterado
|}
[2º Marco de entrega ⇑ RNs acima]
= Sistema de Usuários - Movimentos - Remarcação de preços - Remarcação de Preços Avançada =
= Sistema de Usuários - Movimentos - Remarcação de preços - Remarcação de Preços Avançada =
Objetivo:
Objetivo:


Ao atualizar o preço de custo dos componentes de um conjunto, atualizar o preço de custo do conjunto (Produto Final).
Ao atualizar o preço de custo dos componentes de um conjunto, atualizar o preço de custo do conjunto (Produto Final).




Regras de Negócio:
Regras de Negócio:


RN005.  Quando o checkbox  [Atualiza Custo do Produto] está marcado, ao confirmar a remarcação de preços é atualizado o preço de custo dos produtos selecionados com o novo custo calculado, em:  
'''RN005'''.  Quando o checkbox  [Atualiza Custo do Produto] está marcado, ao confirmar a remarcação de preços é atualizado o preço de custo dos produtos selecionados com o novo custo calculado, em:  
 
* Produtocad.PrecoComp
* Se utilizado área de vendas o custo é atualizado em:
** Areaprecad.PrecoCusto.


Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualiza Custo do Produto] estiver MARCADO, após atualizar o PREÇO DE CUSTO do produto que é um COMPONENTE de um conjunto, deve ser atualizado o PREÇO DE CUSTO DO CONJUNTO (produto final) com o somatório do preço de custo de seus componentes.
Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualiza Custo do Produto] estiver MARCADO, após atualizar o PREÇO DE CUSTO do produto que é um COMPONENTE de um conjunto, deve ser atualizado o PREÇO DE CUSTO DO CONJUNTO (produto final) com o somatório do preço de custo de seus componentes.
Linha 184: Linha 138:
* Se houver outros componentes que compõem o conjunto que não estão listados ou selecionados para remarcação, esses componentes devem ser considerados no cálculo do custo do conjunto considerando o valor do custo atual dos componentes.
* Se houver outros componentes que compõem o conjunto que não estão listados ou selecionados para remarcação, esses componentes devem ser considerados no cálculo do custo do conjunto considerando o valor do custo atual dos componentes.


* Para verificar se o produto é componente de um conjunto: Verificar se existe registro na tabela  PRODCONEST onde CODCOMP = Código do produto (codpro)
* Verificar se o produto é componente de um conjunto.


* O conjunto (produto final) relacionado ao componente será o produto gravado em: PRODCONEST.Codpro da verificação anterior.
* O conjunto (produto final) relacionado ao componente será o produto gravado


Observação:  
Observação:  
Linha 193: Linha 147:
* Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.  
* Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.  


RN006. Se alterado o preço de custo do conjunto, deve ser gerado um registro de LOG na tabela LOGPERCAD, informado o custo anterior e o novo custo, conforme é gerado atualmente ao atualizar o preço de custo para os produtos da remarcação.
'''RN006'''. Se alterado o preço de custo do conjunto, deve ser gerado um registro de LOG, informado o custo anterior e o novo custo, conforme é gerado atualmente ao atualizar o preço de custo para os produtos da remarcação.
{| class="wikitable"
|Nota Técnica
|-
|<nowiki>-- Select para verificar se o produto é um componente:</nowiki>
 
select codpro CodproConjunto from Prodconest where codcomp = -- Codpro do produto selecionado na remarcação.
 
-- Select para buscar os componentes com quantidade do conjunto (produto final)
 
select codcomp, quant  from Prodconest where codpro = -- CodproConjunto
 
* Verificar no formulário a função: THISFORM.atualizarCustoProduto()
|}
RN007.  Quando o checkbox  [Atualizar Preço Futuro] está MARCADO, ao confirmar a remarcação de preços é atualizado o PREÇO DE VENDA FUTURO dos produtos selecionados com o novo preço de venda calculado, em:


* Produtocad.PreVenFut e Produtocad.DtPreVenF
'''RN007'''.  Quando o checkbox  [Atualizar Preço Futuro] está MARCADO, ao confirmar a remarcação de preços é atualizado o PREÇO DE VENDA FUTURO dos produtos selecionados com o novo preço de venda calculado.  
* Se utilizado área de vendas é atualizado em:
** PrecoFuturo.PrecoFuturo,  PrecoFuturo.DataPrevista e PrecoFuturo.DataValidade.


Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver MARCADO:
Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver MARCADO:
Linha 232: Linha 170:
* Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.  
* Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.  


RN008.  Quando o checkbox  [Atualizar Preço Futuro] está DESMARCADO, ao confirmar a remarcação de preços é atualizado o PREÇO DE VENDA ATUAL dos produtos selecionados com o novo preço de venda calculado, em:
'''RN008'''.  Quando o checkbox  [Atualizar Preço Futuro] está DESMARCADO, ao confirmar a remarcação de preços é atualizado o PREÇO DE VENDA ATUAL dos produtos selecionados com o novo preço de venda calculado.  
 
* Produtocad.PrecoVen, Produtocad.DtPrevEnf e Produtocad.Dtultrea
* Se utilizado área de vendas é atualizado em:
** AreaPreCad.Precoven e  AreaPreCad.Dtultrea


Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver DESMARCADO:
Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver DESMARCADO:
Linha 257: Linha 191:
* Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.  
* Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.  


RN009. Se alterado o preço de venda do conjunto, futuro ou atual,  deve ser gerado um registro de LOG na tabela LOGPERCAD, informado o preço de venda anterior e o novo preço de venda, conforme é gerado atualmente ao atualizar o preço de venda para os produtos da remarcação.
'''RN009'''. Se alterado o preço de venda do conjunto, futuro ou atual,  deve ser gerado um registro de LOG, informado o preço de venda anterior e o novo preço de venda, conforme é gerado atualmente ao atualizar o preço de venda para os produtos da remarcação.
{| class="wikitable"
|Nota Técnica
|-
|
* Verificar no formulário a função: THISFORM.gravarDadosPrecoFuturo()
|}
[3º Marco de entrega ⇑ RNs acima]
 
= Sistema de Usuários - Movimentos - Remarcação de preços - Pesquisa e Preço Futuro - Padrão =
= Sistema de Usuários - Movimentos - Remarcação de preços - Pesquisa e Preço Futuro - Padrão =


Linha 275: Linha 201:
Regras de Negócio:
Regras de Negócio:


RN010.  Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver MARCADO, deve ser atualizado o PREÇO FUTURO do PRODUTO FINAL, seguindo as mesmas regras anteriores descritas para a opção de remarcação de preços avançada.
'''RN010'''.  Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver MARCADO, deve ser atualizado o PREÇO FUTURO do PRODUTO FINAL, seguindo as mesmas regras anteriores descritas para a opção de remarcação de preços avançada.
 
[4º Marco de entrega ⇑ RNs acima]


= Sistema de usuários - Movimentos - Entradas - Compras =
= Sistema de usuários - Movimentos - Entradas - Compras =
Linha 289: Linha 213:


Incluir tratamento para, ao atualizar o preço de custo de um componente de conjunto, atualizar o preço de custo do conjunto.
Incluir tratamento para, ao atualizar o preço de custo de um componente de conjunto, atualizar o preço de custo do conjunto.




Regras de Negócio:
Regras de Negócio:


RN011. Ao confirmar o lançamento de uma nota de entrada, quando o TPO está configurado para atualizar acumuladores de estoque, é atualizado o preço de custo do produto, conforme o preço de custo do item da nota, em: Produtocad.Precocomp ou Itemfilest.Precocomp (quando o parâmetro “Trabalha com custo da última compra por filial?” está ligado)
'''RN011'''. Ao confirmar o lançamento de uma nota de entrada, quando o TPO está configurado para atualizar acumuladores de estoque, é atualizado o preço de custo do produto, conforme o preço de custo do item da nota, seja do produto ou no item da filial quando o parâmetro “Trabalha com custo da última compra por filial?” está ligado.


Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial da nota, após atualizar o preço de custo do produto (Produtocad.Precocomp ou Itemfilest.Precocomp), se o produto for o componente de um conjunto, deve ser atualizado o preço de custo do conjunto que o componente compõe.
Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial da nota, após atualizar o preço de custo do produto, se o produto for o componente de um conjunto, deve ser atualizado o preço de custo do conjunto que o componente compõe.


O PREÇO DE CUSTO DO CONJUNTO FINAL deve ser a soma do preço de custo de todos os seus componentes, sendo:  a soma da quantidade multiplicada pelo preço de venda dos componentes.
O PREÇO DE CUSTO DO CONJUNTO FINAL deve ser a soma do preço de custo de todos os seus componentes, sendo:  a soma da quantidade multiplicada pelo preço de venda dos componentes.


Para o conjunto deve ser atualizado:
Se o parâmetro “Trabalha com custo da última compra por filial?” estiver DESLIGADO, atualizar os atributos do custo do produto  
 
* Produtocad.Precocomp ou Itemfilest.Precocomp
* Produtocad.dtultcomp ou Itemfilest.dtultcomp
 
IMPORTANTE:  
 
Repassar o mesmo tratamento do Masteren para às rotinas de atualização de preço do custo do trade.
 
Se o parâmetro “Trabalha com custo da última compra por filial?” estiver DESLIGADO, atualizar os atributos do custo do produto na tabela PRODUTOCAD e na tabela ITEMFILEST (todas às filiais).
 
RN012. Quando a nota de entrada é excluída, se a mesma foi a última nota utilizada na atualização do custo do produto, considerando a data da última compra do produto, é feita a atualização do custo do produto desconsiderando a nota excluída, ou seja, é feita a volta do preço de custo anterior do produto.
 
Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial da nota, após atualizar o preço de custo do produto (Produtocad.Precocomp ou Itemfilest.Precocomp) na exclusão da nota, se o produto for o componente de um conjunto, deve ser atualizado o preço de custo do conjunto que o componente compõe.
 
Para o conjunto deve ser atualizado:
 
* Produtocad.Precocomp ou Itemfilest.Precocomp
* Produtocad.dtultcomp ou Itemfilest.dtultcomp
 
{| class="wikitable"
|Nota Técnica
|-
|<nowiki>-- Select para verificar se o produto é um componente:</nowiki>
 
select codpro CodproConjunto from Prodconest where codcomp = -- Codpro do item da nota
 
-- Select para buscar os componentes com quantidade do conjunto (produto final)


select codcomp, quant  from Prodconest where codpro = -- CodproConjunto
'''RN012'''. Quando a nota de entrada é excluída, se a mesma foi a última nota utilizada na atualização do custo do produto, considerando a data da última compra do produto, é feita a atualização do custo do produto desconsiderando a nota excluída, ou seja, é feita a volta do preço de custo anterior do produto.


* A atualização do preço de custo na entrada é feita no programa Trawaten.prg
Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial da nota, após atualizar o preço de custo do produto na exclusão da nota, se o produto for o componente de um conjunto, deve ser atualizado o preço de custo do conjunto que o componente compõe.
* Para exclusão da nota verificar a função: excprecomp () e AtualizarCustoNotaFiscalItemFilEst()
|}


= Tradewin - Operações - Conferência de Entradas - Conferência =
= Tradewin - Operações - Conferência de Entradas - Conferência =
Linha 343: Linha 239:
Regras de Negócio:
Regras de Negócio:


RN012.1. Para compras que exigem conferência de entrada a atualização do custo do produto é realizada na confirmação da conferência.
'''RN012.1'''. Para compras que exigem conferência de entrada a atualização do custo do produto é realizada na confirmação da conferência.


A regra de atualização do preço de custo do conjunto, deve ser aplicada também na opção de conferência de entrada
A regra de atualização do preço de custo do conjunto, deve ser aplicada também na opção de conferência de entrada
{| class="wikitable"
|Nota Técnica:
|-
|
# A atualização do custo do produto na conferência de entrada é feita pela função: oAgComando.AtualizarPedidoEstoqueCompra()
# Está função é utilizada na conferência manual ou com coletor.
|}
[5º Marco de entrega ⇑ RNs acima]
= Masteren - Cadastro - Núcleo Comercial - Nota Fiscal de Entrada =
= Masteren - Cadastro - Núcleo Comercial - Nota Fiscal de Entrada =
Objetivo:
Objetivo:


Incluir tratamento para, ao atualizar o preço de custo de um componente de conjunto, atualizar o preço de custo do conjunto (produto final).
Incluir tratamento para, ao atualizar o preço de custo de um componente de conjunto, atualizar o preço de custo do conjunto (produto final).




Regras de Negócio:
Regras de Negócio:


RN013. Deve ser realizado o mesmo tratamento descrito para o lançamento de nota de entrada para o sistema de usuários e tradewin, no lançamento de notas  no Masteren, sendo lançamento manual ou importação do XML
'''RN013'''. Deve ser realizado o mesmo tratamento descrito para o lançamento de nota de entrada para o sistema de usuários e tradewin, no lançamento de notas  no Masteren, sendo lançamento manual ou importação do XML


Conforme descrito nas regras anteriores RN011 e RN012.
Conforme descrito nas regras anteriores RN011 e RN012.
[6º Marco de entrega ⇑ RNs acima]


= Vendas (orcWeb) - Vendas / Outras saídas =
= Vendas (orcWeb) - Vendas / Outras saídas =
Objetivo:
Objetivo:


Na venda de produtos que sejam um conjunto, deve ser feita a validação do estoque de seus componentes e atualizar a nova tabela ITEMCLICONJUNTO com os componentes do conjunto vendido.
Na venda de produtos que sejam um conjunto, deve ser feita a validação do estoque de seus componentes e atualizar a nova tabela com os componentes do conjunto vendido.
 




Linha 379: Linha 266:
Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.
Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.


RN014. Se informado um PRODUTO que é PRODUTO FINAL de um CONJUNTO, deve ser feita a validação do estoque para os COMPONENTES do CONJUNTO.
'''RN014'''. Se informado um PRODUTO que é PRODUTO FINAL de um CONJUNTO, deve ser feita a validação do estoque para os COMPONENTES do CONJUNTO.


Identificação de Produto Final de um Conjunto:
Identificação de Produto Final de um Conjunto:


Para identificar se um produto é o produto final de um conjunto, é necessário verificar a existência de registros na tabela PRODCONEST onde:
Para identificar se um produto é o produto final de um conjunto, é necessário verificar a existência de registros no banco de dados.
 
* PRODCONEST.Codpro = código do produto informado.
 
Se houver registros nessa condição, significa que o produto é um conjunto, e seus componentes são definidos pelos valores presentes na coluna PRODCONEST.Codcomp, que representam os códigos dos produtos que compõem o conjunto.
{| class="wikitable"
|SQL de referência
|-
|<nowiki>-- Select para busca dos COMPONENTES do produto final (conjunto)</nowiki>
 
select PC.codpro, PC.codcomp, PC.Quant  


FROM Prodconest PC
Se houver registros nessa condição, significa que o produto é um conjunto, e seus componentes são definidos pelos valores presentes que representam os códigos dos produtos que compõem o conjunto.


where PC.codpro = -- Codpro do produto informado
'''RN015'''.  Para obter a quantidade dos componentes deve ser multiplicada a quantidade vendida do produto final pela quantidade do componente.  
|}
RN015.  Para obter a quantidade dos componentes deve ser multiplicada a quantidade vendida do produto final pela quantidade do componente.  


Exemplo:
Exemplo:
{| class="wikitable"
{| class="wikitable"
|Conjunto (prodconest.codpro)
|Conjunto  
|Quantidade vendida
|Quantidade vendida
|Componentes
|Componentes
(prodconest.codcomp)
|Quantidade
|Quantidade
(prodconest.Quant)
|Quantidade total do componente
|Quantidade total do componente
|-
|-
Linha 427: Linha 298:
|3,00
|3,00
|}
|}
RN016.  A validação do estoque dos componentes deve seguir a mesma regra de validação de estoque dos demais produtos, validando o estoque na filial de retirada do estoque e solicitando senha de estoque indisponível se necessário.
'''RN016'''.  A validação do estoque dos componentes deve seguir a mesma regra de validação de estoque dos demais produtos, validando o estoque na filial de retirada do estoque e solicitando senha de estoque indisponível se necessário.
 
RN017.  Ao SALVAR o pedido, quando feita a reserva de estoque do PRODUTO FINAL, deve ser feito também a RESERVA das quantidades de estoque para os COMPONENTES do CONJUNTO na tabela ITEMFILEST.
 
Deve ser atualizada a tabela ITEMCLICONJUNTO com os componentes do Conjunto:


* ItemcliConjunto;Numped = Número do Pedido
'''RN017'''.  Ao SALVAR o pedido, quando feita a reserva de estoque do PRODUTO FINAL, deve ser feito também a RESERVA das quantidades de estoque para os COMPONENTES do CONJUNTO.
* ItemcliConjunto.CodproConj = Itemclicad.Codpro (Produto Final)
* ItemcliConjunto.Item = Itemclicad.Item (Item Produto Final)
* ItemcliConjunto.CodproComp = Prodconest.codcomp (Codpro Componente)
* ItemcliConjunto.QuantComp = Prodconest.Quant * Itemclicad.Quant (Quantidade total componente)


RN018.  Ao realizar a alteração ou exclusão de um produto final do conjunto no pedido, deve ser realizado os devidos tratamentos, incluindo:
'''RN018'''.  Ao realizar a alteração ou exclusão de um produto final do conjunto no pedido, deve ser realizado os devidos tratamentos, incluindo:


* Desfazer ou refazer as reservas de estoque dos componentes do conjunto, conforme o caso;
* Desfazer ou refazer as reservas de estoque dos componentes do conjunto, conforme o caso;

Edição das 18h21min de 20 de janeiro de 2026

Este artigo irá mostrar como automatizar este processo, para passar a atualizar o custo do conjunto e o preço de venda do conjunto baseado no custo dos seus componentes.

Na entrada da nota, atualizar o custo do conjunto baseado no custo do componente que foi comprado.

Na venda, devolução ou cancelamento do conjunto (produto final), o sistema deve fazer a montagem e ou desmontagem dos conjuntos automaticamente.

Tutorial

PASSO 1

  • LIGAR o parâmetro por filial “Atualizar custo da última compra do conjunto”
  • LIGAR o parâmetro por empresa “Orçamento com tratamento de conjuntos”
  • CONFIGURAR o parâmetro por filial “TPO de Saida na Montagem de Conjuntos” informando o TPO de outras saídas que será utilizado para emissão da nota de saídas dos componentes do conjunto.
  • CONFIGURAR o parâmetro por filial “TPO de Entrada na Montagem de Conjunto” informando o TPO de outras entradas que será utilizado para emissão da nota de entrada do produto final do conjunto.
  • Versão MasterEn 96.900 ou superior


PASSO 2

Tradewin - Arquivos - Produtos - Cadastros de Conjunto

Objetivo:

Incluir tratamento para atualização do preço de custo do conjunto

Regras de Negócio:

RN001. Na inclusão ou alteração do conjunto, se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário, deve ser atualizado o custo da última compra do conjunto (produto final),  baseado no custo da última compra de seus componentes.

A quantidade do componente pode ser maior que um, então o custo total do componente deverá ser a quantidade multiplicada pelo custo da última compra.

Exemplo:

Conjunto (prodconest.codpro) Componentes Quantidade Preço Custo
Kit Caixa de Luz   Poste 1 und 22,00
Fio de cobre 10 mt 3,50
Caixa 1 und 10,00

Preço de custo do conjunto “Kit caixa de Luz” = (1 * 22,00) + (10 * 3,50) + (1 * 10,00) = 67,00

Deve ser atualizado o preço de custo do conjunto, com o valor do custo calculado

Se o parâmetro “Trabalha com custo da última compra por filial?” estiver LIGADO, deve ser atualizado o preço de custo do conjunto também das filiais.

RN002. Na alteração do conjunto, quando alterada a quantidade ou feita a inclusão de novo componente, além da atualização do preço de custo, deve ser atualizado o preço de venda do conjunto.

Para atualização do preço de venda deve ser a quantidade multiplicada pelo preço de venda dos componentes do conjunto.

Exemplo:

Conjunto (prodconest.codpro) Componentes Quantidade Preço Venda
Kit Caixa de Luz   Poste 1 und 33,50
Fio de cobre 10 mt 5,30
Caixa 1 und 15,50

Preço de venda do conjunto “Kit caixa de Luz” = (1 * 33,50) + (10 * 5,30) + (1 * 15,50) =102,00

Deve ser atualizado o preço de venda do conjunto, com o valor de venda calculado.

ATENÇÃO: O preço de venda deve ser atualizado SOMENTE se ALTERADA A QUANTIDADE e/ou INCLUÍDO NOVO COMPONENTE, caso contrário não deve ser atualizado.


RN003. Se ALTERADO o VALOR DO CUSTO e/ou PREÇO DE VENDA do conjunto deve ser gerado registro de LOG para operações de inclusão e alteração:

Tradewin - Arquivos - Produtos - Cadastros

Sistema de usuários - Cadastros - Produtos - Produtos

Objetivo:

Emitir aviso para o usuário ao alterar o preço de venda de componentes de conjunto ou do produto final do conjunto.

Regras de Negócio:

RN004. Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário, na alteração de preço de venda de produto que pertence a um conjunto, seja COMPONENTE ou PRODUTO FINAL, deve ser exibida uma MENSAGEM DE ALERTA para o usuário.

PREÇO DE VENDA = Campo Preço de Venda da 1ª Unid

Se alterado o PREÇO DE VENDA de um PRODUTO FINAL do conjunto deve ser exibida a mensagem:

Atenção: Este produto é um conjunto. O preço de venda deve ser o somatório de seus componentes.

Componentes do conjunto:

Se alterado o PREÇO DE VENDA de um produto COMPONENTE de um conjunto deve ser exibida a mensagem:

Atenção: Este produto é componente de conjunto.O preço de venda do conjunto final deve ser o somatório de seus componentes.

Conjunto que o componente está relacionado:

Observação: Um componente pode pertencer a mais de um conjunto.

Sistema de Usuários - Movimentos - Remarcação de preços - Remarcação de Preços Avançada

Objetivo:

Ao atualizar o preço de custo dos componentes de um conjunto, atualizar o preço de custo do conjunto (Produto Final).


Regras de Negócio:

RN005.  Quando o checkbox  [Atualiza Custo do Produto] está marcado, ao confirmar a remarcação de preços é atualizado o preço de custo dos produtos selecionados com o novo custo calculado, em:

Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualiza Custo do Produto] estiver MARCADO, após atualizar o PREÇO DE CUSTO do produto que é um COMPONENTE de um conjunto, deve ser atualizado o PREÇO DE CUSTO DO CONJUNTO (produto final) com o somatório do preço de custo de seus componentes.

Se utilizado área de vendas, deve ser atualizado o preço de custo do conjunto da área de vendas

O PREÇO DE CUSTO DO CONJUNTO deve ser a soma do custo de todos os seus componentes, sendo: soma da quantidade multiplicada pelo preço de custo dos componentes.

  • Se houver outros componentes que compõem o conjunto que não estão listados ou selecionados para remarcação, esses componentes devem ser considerados no cálculo do custo do conjunto considerando o valor do custo atual dos componentes.
  • Verificar se o produto é componente de um conjunto.
  • O conjunto (produto final) relacionado ao componente será o produto gravado

Observação:

  • Um componente pode pertencer a mais de um conjunto.
  • Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.

RN006. Se alterado o preço de custo do conjunto, deve ser gerado um registro de LOG, informado o custo anterior e o novo custo, conforme é gerado atualmente ao atualizar o preço de custo para os produtos da remarcação.

RN007.  Quando o checkbox  [Atualizar Preço Futuro] está MARCADO, ao confirmar a remarcação de preços é atualizado o PREÇO DE VENDA FUTURO dos produtos selecionados com o novo preço de venda calculado.

Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver MARCADO:

Se houver produtos selecionados no GRID para remarcação que seja componente de um conjunto, exibir a mensagem “Deseja atualizar o preço de venda futuro do conjunto [Sim/Não] ?”

Se o usuário optar por SIM,  após atualizar o PREÇO DE VENDA FUTURO  do produto que é um componente de um conjunto, deve ser atualizado o PREÇO DE VENDA FUTURO do conjunto (produto final) com o somatório do PREÇO DE VENDA FUTURO de seus componentes.

Se utilizado área de vendas, deve ser atualizado o PREÇO DE VENDA FUTURO do conjunto nas área de vendas informadas.

O PREÇO DE VENDA DO CONJUNTO deve ser a soma do preço de venda de todos os seus componentes, sendo:  a soma da quantidade multiplicada pelo preço de venda dos componentes.

  • Se houver outros componentes que compõem o conjunto que não estão listados ou selecionados para remarcação, esses componentes devem ser considerados no cálculo do preço de venda futuro do conjunto considerando o valor de venda atual dos componentes.

Se o usuário optar por NÃO, não deve ser atualizado o preço de venda futuro do conjunto.

Observação:

  • Um componente pode pertencer a mais de um conjunto.
  • Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.

RN008.  Quando o checkbox  [Atualizar Preço Futuro] está DESMARCADO, ao confirmar a remarcação de preços é atualizado o PREÇO DE VENDA ATUAL dos produtos selecionados com o novo preço de venda calculado.

Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver DESMARCADO:

Se houver produtos selecionados no GRID para remarcação que seja componente de um conjunto, exibir a mensagem “Deseja atualizar o preço de venda do conjunto [Sim/Não] ?”

Se o usuário optar por SIM,  após atualizar o PREÇO DE VENDA ATUAL do produto que é um componente de um conjunto, deve ser atualizado o PREÇO DE VENDA ATUAL do conjunto (produto final) com o somatório do PREÇO DE VENDA  de seus componentes.

Se utilizado na área de vendas, deve ser atualizado o PREÇO DE VENDA ATUAL do conjunto nas áreas de vendas informadas.

O PREÇO DE VENDA DO CONJUNTO deve ser a soma do preço de venda de todos os seus componentes, sendo:  a soma da quantidade multiplicada pelo preço de venda dos componentes.

  • Se houver outros componentes que compõem o conjunto que não estão listados ou selecionados para remarcação, esses componentes devem ser considerados no cálculo do preço de venda do conjunto considerando o valor de venda atual dos componentes.

Se o usuário optar por NÃO, não deve ser atualizado o preço de venda do conjunto.

Observação:

  • Um componente pode pertencer a mais de um conjunto.
  • Atualizar o preço de custo do conjunto (produto final) conforme descrito para o cadastro do conjunto.

RN009. Se alterado o preço de venda do conjunto, futuro ou atual,  deve ser gerado um registro de LOG, informado o preço de venda anterior e o novo preço de venda, conforme é gerado atualmente ao atualizar o preço de venda para os produtos da remarcação.

Sistema de Usuários - Movimentos - Remarcação de preços - Pesquisa e Preço Futuro - Padrão

Sistema de Usuários - Movimentos - Remarcação de preços - Pesquisa e Preço Futuro - Avançado

Objetivo:

Ao atualizar o preço de venda dos componentes de um conjunto, atualizar o preço de venda do conjunto (Produto Final).

Regras de Negócio:

RN010.  Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial padrão do usuário e o checkbox [Atualizar Preço Futuro] estiver MARCADO, deve ser atualizado o PREÇO FUTURO do PRODUTO FINAL, seguindo as mesmas regras anteriores descritas para a opção de remarcação de preços avançada.

Sistema de usuários - Movimentos - Entradas - Compras

Sistema de usuários - Movimentos - Entradas - Outras Entradas

Tradewin - Operações - Entradas - Compras

Tradewin - Operações - Entradas - Outras Entradas

Objetivo:

Incluir tratamento para, ao atualizar o preço de custo de um componente de conjunto, atualizar o preço de custo do conjunto.


Regras de Negócio:

RN011. Ao confirmar o lançamento de uma nota de entrada, quando o TPO está configurado para atualizar acumuladores de estoque, é atualizado o preço de custo do produto, conforme o preço de custo do item da nota, seja do produto ou no item da filial quando o parâmetro “Trabalha com custo da última compra por filial?” está ligado.

Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial da nota, após atualizar o preço de custo do produto, se o produto for o componente de um conjunto, deve ser atualizado o preço de custo do conjunto que o componente compõe.

O PREÇO DE CUSTO DO CONJUNTO FINAL deve ser a soma do preço de custo de todos os seus componentes, sendo:  a soma da quantidade multiplicada pelo preço de venda dos componentes.

Se o parâmetro “Trabalha com custo da última compra por filial?” estiver DESLIGADO, atualizar os atributos do custo do produto

RN012. Quando a nota de entrada é excluída, se a mesma foi a última nota utilizada na atualização do custo do produto, considerando a data da última compra do produto, é feita a atualização do custo do produto desconsiderando a nota excluída, ou seja, é feita a volta do preço de custo anterior do produto.

Se o parâmetro Atualizar custo da última compra do conjunto estiver LIGADO na filial da nota, após atualizar o preço de custo do produto na exclusão da nota, se o produto for o componente de um conjunto, deve ser atualizado o preço de custo do conjunto que o componente compõe.

Tradewin - Operações - Conferência de Entradas - Conferência

Tradewin - Operações - Conferência de Entradas - Retorno do Coletor

Objetivo:

Incluir tratamento para, ao atualizar o preço de custo de um componente de conjunto, atualizar o preço de custo do conjunto.

Regras de Negócio:

RN012.1. Para compras que exigem conferência de entrada a atualização do custo do produto é realizada na confirmação da conferência.

A regra de atualização do preço de custo do conjunto, deve ser aplicada também na opção de conferência de entrada

Masteren - Cadastro - Núcleo Comercial - Nota Fiscal de Entrada

Objetivo:

Incluir tratamento para, ao atualizar o preço de custo de um componente de conjunto, atualizar o preço de custo do conjunto (produto final).


Regras de Negócio:

RN013. Deve ser realizado o mesmo tratamento descrito para o lançamento de nota de entrada para o sistema de usuários e tradewin, no lançamento de notas  no Masteren, sendo lançamento manual ou importação do XML

Conforme descrito nas regras anteriores RN011 e RN012.

Vendas (orcWeb) - Vendas / Outras saídas

Objetivo:

Na venda de produtos que sejam um conjunto, deve ser feita a validação do estoque de seus componentes e atualizar a nova tabela com os componentes do conjunto vendido.


Regras de Negócio:

Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN014. Se informado um PRODUTO que é PRODUTO FINAL de um CONJUNTO, deve ser feita a validação do estoque para os COMPONENTES do CONJUNTO.

Identificação de Produto Final de um Conjunto:

Para identificar se um produto é o produto final de um conjunto, é necessário verificar a existência de registros no banco de dados.

Se houver registros nessa condição, significa que o produto é um conjunto, e seus componentes são definidos pelos valores presentes que representam os códigos dos produtos que compõem o conjunto.

RN015.  Para obter a quantidade dos componentes deve ser multiplicada a quantidade vendida do produto final pela quantidade do componente.

Exemplo:

Conjunto Quantidade vendida Componentes Quantidade Quantidade total do componente
Kit Caixa de Luz   3,000 Poste 1,000 3,000
Fio de cobre 10,00 30,000
Caixa 1,000 3,00

RN016.  A validação do estoque dos componentes deve seguir a mesma regra de validação de estoque dos demais produtos, validando o estoque na filial de retirada do estoque e solicitando senha de estoque indisponível se necessário.

RN017.  Ao SALVAR o pedido, quando feita a reserva de estoque do PRODUTO FINAL, deve ser feito também a RESERVA das quantidades de estoque para os COMPONENTES do CONJUNTO.

RN018.  Ao realizar a alteração ou exclusão de um produto final do conjunto no pedido, deve ser realizado os devidos tratamentos, incluindo:

  • Desfazer ou refazer as reservas de estoque dos componentes do conjunto, conforme o caso;
  • Atualizar ou excluir os registros correspondentes na tabela ITEMCLICONJUNTO, garantindo a integridade das informações e o correto controle dos componentes associados ao item de conjunto no pedido.

Esses procedimentos são necessários para manter a consistência entre o pedido, os componentes do conjunto e o estoque envolvido.

RN019.  Deve ser incluído os devidos tratamentos para duplicação de pedido com itens de conjunto.

[7º Marco de entrega ⇑ RNs acima]

Checkout - Com Orçamento

ECF - vendas (Com Orçamento)

Objetivo:

Na emissão da nota fiscal de venda de um item do tipo conjunto, o sistema deve gerar automaticamente:

  • Nota fiscal de outras saídas para os componentes do conjunto, a fim de registrar a saída de estoque dos itens utilizados na composição.
  • Nota fiscal de outras entradas para o produto final (conjunto), registrando a entrada do conjunto no estoque.

Essa geração automática tem como objetivo refletir corretamente a movimentação dos estoques, tanto dos componentes quanto do conjunto final, garantindo a integridade dos saldos e o rastreamento adequado das operações.


Regras de Negócio:

Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN020. Ao faturar uma venda com pedido que contenha itens de conjunto (produto final), durante a validação de estoque realizada na tela de mercadoria, o sistema deve verificar se o produto em questão é um produto final de um conjunto.

Caso seja, a validação de estoque deve ser feita com base nos componentes do conjunto registrados na tabela ITEMCLICONJUNTO.

Se qualquer um dos componentes do conjunto não possuir estoque disponível, o sistema deve considerar que não há estoque suficiente para o conjunto como um todo, aplicando as mesmas regras utilizadas para produtos sem estoque disponível.

RN021. Após a confirmação da venda, se houver itens de conjunto no pedido, depois da emissão da nota de venda, deve ser feita a emissão da nota de outras saídas dos componentes do conjunto para baixa do estoque dos componentes e uma nota de outras entradas do produto final do conjunto com a entrada do estoque.

Para emissão da nota fiscal de outras saídas devem ser consideradas as integrações do TPO  configurado para esta operação, conforme padrão do sistema para emissão de nota fiscal:

  • Utilizar o TPO definido no parâmetro: "TPO de Saída na Montagem de Conjuntos".
  • Emissão de NF manual ou Nota fiscal eletrônica (conforme configuração TPO);
  • Se o TPO NÃO estiver configurado para NF-e:
    • O número da nota deve ser o número do pedido. A série será "OM" acrescida de um sequencial de 1 a 9, definida na constante CORC_NF_SERIE_OUTRAS_SAIDAS.
  • Se o TPO estiver configurado para NF-e:
    • A numeração e a série da nota devem seguir a numeração e a série da NF-e.
  • A filial de saída da nota é a filial de emissão da nota de venda;
  • Utilizar a filial de emissão da nota de venda como Remetente e destinatário;
  • CFOP (configurar no TPO);
  • Natureza de operação (Configurar no TPO);
  • Integração com livro fiscal (Configurar no TPO);
  • Tributação, conforme regra de redução de base cadastrada (para NF-e);
  • Baixa de estoque (será realizada conforme configuração do TPO) ;
  • NÃO SERÁ GERADO FINANCEIRO PARA OUTRAS SAÍDAS (CONTA A RECEBER).

ATENÇÃO:

Para pedidos com itens de entrega Expedição e Futura, cuja nota de venda será emitida pelo sistema de usuários, a emissão da nota fiscal de outras saídas e outras entradas, também serão emitidas pelo Sistema de Usuários.

RN022. Para emissão da nota fiscal de outras saídas, deve ser considerado todos os componentes do conjunto relacionado ao produto final do conjunto, onde: Itemclicad.item = ItemCliConjunto.item

Todos os componentes de todos os conjuntos que estão na NOTA DE VENDA, deverão ser reunidos em uma única nota, agrupados por código de produto (caso haja componente que faça parte de mais de um conjunto em faturamento).

RN023. Para obter o preço dos componentes a ser utilizado na emissão da nota de outras saídas:

  • Deve ser verificado a integração “Tipo de cálculo para obter o preço de custo do produto na geração da notas fiscais” (OID 39092) do TPO utilizado está configurado com:
    • Custo da última compra (OID 39086):
      • Obter o custo da última compra do produto (Produtocad.Precocomp)
    • Custo Médio (OID 39087)
      • Obter o custo médio do produto na filial (Itemfilest.CustMedio)
    • Custo Médio - ICMS Médio (OID 39088)
      • Obter o custo médio - icms médio do produto na filial (Itemfilest.CustMedio - Itemfilest.ICMmedio)

Observação: Inicialmente nesta rotina será tratado somente os três tipos acima;

  • Se o TPO não estiver com a integração  “Tipo de cálculo para obter o preço de custo do produto na geração da notas fiscais” configurado ou configurado com uma opção diferente das listadas acima deve ser considerado o custo de última compra do produto:
    • Produtocad.PrecoComp
Nota Técnica
  • Utilizar a gravnotahomecenter.prg para geração da nota de outras saídas;
  • Não precisa gerar registro na tabela Vendasscad;
  • Verificar tratamento para geração dos cursores para chamada da gravnotahomecenter.prg no programa: MUPCPOrdemProducao.prg ver função EmitirNFOutrasSaidas()
  • OBS: CRIAR UMA CLASSE GENÉRICA para emissão de NF de outras saídas, baseado no tratamento do programa  MUPCPOrdemProducao.prg, para ser reaproveitada para outras rotinas quando necessário.

RN024. Ao fazer a baixa do estoque na emissão da nota de outras saídas, também deve ser feita a baixa da quantidade reservada para os componentes do conjunto.

Se o item do conjunto final (produto final) estiver com reserva (Itemclicad.Reserva = S), foi realizada a reserva dos componentes do conjunto. Neste caso, na emissão da nota de outra saída deve ser retirada a reserva dos componentes, conforme registro na tabela ITEMCLICONJUNTO.

  • ITEMFILEST.QtdeReserv = ITEMFILEST.QtdeReserva - ItemcliConjunto.QuantComp, onde:
    • ItemcliConjunto.CodproComp = Itemfilest.codpro e Itemfilest.Filial = ITNfsaicad.filial

RN025. Após a emissão da nota de OUTRAS SAÍDAS, deve ser atualizado a base de dados conforme abaixo:

Na nota de Outras Saídas:

  • ComplementoNFSaida.NumOrdNFVenda = Número de ordem da nota de venda relacionada

Na tabela ITEMCLICONJUNTO dos componentes que estão na nota de outras saídas:

  • ItemCliConjunto.NumordSaida = Numord da nota de outras saídas;
  • ItemCliConjunto.NumordEntrada = Numord da nota de outras entradas;

No Histórico do PEDIDO DE VENDA:

  • Histórico: Gerado nota fiscal de outras saídas [Número/Série] referente aos componentes do conjunto.

RN026. Após a emissão da nota de outras saídas, deve ser gerado uma nota de OUTRAS ENTRADAS do produto final dos conjuntos que foram gerados às saídas dos componentes.

Para emissão da nota fiscal de outras entradas devem ser consideradas as integrações do TPO  configurado para esta operação, conforme padrão do sistema para emissão de nota fiscal:

  • Utilizar o TPO definido no parâmetro: "TPO de Entrada na Montagem de Conjuntos".
  • Emissão de NF manual ou Nota fiscal eletrônica (conforme configuração TPO);
  • Se o TPO NÃO estiver configurado para NF-e:
    • O número da nota deve ser o número do pedido. A série será "OC" acrescida de um sequencial de 1 a 9, definida na constante CORC_NF_SERIE_OUTRAS_ENTRADAS.
  • Se o TPO estiver configurado para NF-e:
    • A numeração e a série da nota devem seguir a numeração e a série da NF-e.
  • A filial de entrada da nota é a filial de emissão da nota de venda;
  • Utilizar a filial de emissão da nota de venda como Remetente e destinatário;
  • CFOP (configurar no TPO);
  • Natureza de operação (Configurar no TPO);
  • Integração com livro fiscal (Configurar no TPO);
  • Tributação, conforme regra de entrada cadastrada (para NF-e);
  • Entrada de estoque (será realizada conforme configuração do TPO) ;

RN027. Para obter o preço do produto final a ser utilizado na emissão da nota de outras entradas:

  • Deve ser verificado a integração “Tipo de cálculo para obter o preço de custo do produto na geração da notas fiscais” (OID 39092) do TPO utilizado está configurado com:
    • Custo da última compra (OID 39086):
      • Obter o custo da última compra do produto (Produtocad.Precocomp)
    • Custo Médio (OID 39087)
      • Obter o custo médio do produto na filial (Itemfilest.CustMedio)
    • Custo Médio - ICMS Médio (OID 39088)
      • Obter o custo médio - icms médio do produto na filial (Itemfilest.CustMedio - Itemfilest.ICMmedio)
  • Se o TPO não estiver com a integração  “Tipo de cálculo para obter o preço de custo do produto na geração da notas fiscais” configurado ou configurado com uma opção diferente das listadas acima deve ser considerado o custo de última compra do produto:
    • Produtocad.PrecoComp

RN028. Para geração da nota fiscal de outras entradas, consultar a especificação técnica de geração de notas de entradas.

RECURSOS QUE NÃO SERÃO TRATADOS NA EMISSÃO DA NOTA DE OUTRAS ENTRADAS:

  • Não será tratado cálculo/destaque de substituição tributária;
  • Não será tratado cálculo/destaque de IPI;
  • Não será gerado conta a pagar;
Nota Técnica
  • Verificar tratamento para geração da nota de OUTRAS ENTRADAS no programa: MUPCPOrdemProducao.prg ver função EmitirNFEntradaProdutoFinal()
  • OBS: CRIAR UMA CLASSE GENÉRICA para emissão de NF de OUTRAS ENTRADAS, baseado no tratamento do programa  MUPCPOrdemProducao.prg, para ser reaproveitada para outras rotinas quando necessário.

RN029. Após a emissão da nota de OUTRAS ENTRADAS, deve ser atualizado a base de dados conforme abaixo:

Na nota de Outras Entradas:

  • ComplementoNFEntra.NumordNFVenda = Número de ordem da nota de venda relacionada

No Histórico do PEDIDO DE VENDA:

  • Histórico: Gerado nota fiscal de outras entradas [Número/Série] referente ao produto final de conjunto.

OBSERVAÇÃO:

Após a emissão das notas de OUTRAS SAÍDAS e OUTRAS ENTRADAS, o estoque ficará ajustado, com a baixa do estoque dos componentes do conjunto pela nota de outras saídas e a entrada do estoque do produto final pela nota de outras entradas;

[8º Marco de entrega ⇑ RNs acima]

Checkout - Sem Orçamento

ECF - vendas (Sem Orçamento)

Objetivo:

Na emissão da nota fiscal de venda de um item do tipo conjunto, o sistema deve gerar automaticamente:

  • Nota fiscal de outras saídas para os componentes do conjunto, a fim de registrar a saída de estoque dos itens utilizados na composição.
  • Nota fiscal de outras entradas para o produto final (conjunto), registrando a entrada do conjunto no estoque.


Regras de Negócio:

Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN030. Ao efetuar uma venda SEM PEDIDO, na tela de mercadoria, se informado um PRODUTO que é PRODUTO FINAL de um CONJUNTO, deve ser feita a validação do estoque para os COMPONENTES do CONJUNTO.

Identificação de Produto Final de um Conjunto:

Para identificar se um produto é o produto final de um conjunto, é necessário verificar a existência de registros na tabela PRODCONEST onde:

  • PRODCONEST.Codpro = código do produto em análise.

Se houver registros nessa condição, significa que o produto é um conjunto, e seus componentes são definidos pelos valores presentes na coluna PRODCONEST.Codcomp, que representam os códigos dos produtos que compõem o conjunto.

RN031.  Para obter a quantidade dos componentes deve ser multiplicada a quantidade vendida do produto final pela quantidade do componente.

Exemplo:

Conjunto (prodconest.codpro) Quantidade vendida Componentes

(prodconest.codcomp)

Quantidade

(prodconest.Quant)

Quantidade total do componente
Kit Caixa de Luz   3,000 Poste 1,000 3,000
Fio de cobre 10,00 30,000
Caixa 1,000 3,00

A validação do estoque dos componentes deve seguir a mesma regra de validação de estoque dos demais produtos. Se NÃO houver estoque disponível para algum componente, deve ser exibida mensagem de aviso para o usuário, e não deixar informar o produto final, conforme o tratamento atual de validação de estoque.

RN032. Após a confirmação da venda, caso a venda contenha itens de conjunto (produto final), o sistema deverá, após a emissão da nota de venda, realizar automaticamente:

  • A emissão de nota fiscal de outras saídas para os componentes do conjunto, efetuando a baixa do estoque dos componentes do conjunto.
  • A emissão de nota fiscal de outras entradas para o produto final (conjunto), registrando a entrada do conjunto no estoque.

Para VENDAS SEM PEDIDO, deve ser considerado os componentes do conjunto informados no cadastro,  conforme o registro na tabela Prodconest  onde o código do produto (Itnfsaicad.Codpro) = Prodconest.Codpro, os componentes do conjunto são os produtos onde o código do produto = Prodconest.Codcomp.

Para obter a quantidade dos componentes deve ser multiplicada pela quantidade vendida do produto final, conforme descrito para regra de validação do estoque.

A geração dessas notas fiscais deve seguir as mesmas regras e critérios descritos para o Checkout com pedido, garantindo consistência no processo de movimentação de estoque.

IMPORTANTE:

Por meio do PA 471145, a opção de [Nota Manual] será removida do módulo Checkout e transferida para o novo módulo [ReplicacaoVendaFiscalPerdida].

Será necessário gerar uma nova versão do módulo [ReplicacaoVendaFiscalPerdida], contemplando as alterações descritas anteriormente para o Checkout, de forma a manter a funcionalidade de Nota Manual no novo módulo.

[9º Marco de entrega ⇑ RNs acima]

Sistema de usuários - Movimentos - Montagem de Carga - Padrão / Simplificada / Roteirização

Objetivo:

Validar o estoque dos componentes do conjunto.


Regras de Negócio:

Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN033. Validação de Estoque para Itens de Conjunto na Seleção de Pedido/Item no GRID:

Ao selecionar um pedido ou item no GRID, será realizada a validação do estoque dos itens contidos no pedido.

Se o parâmetro acima, estiver ligado, para os itens de conjunto (com registro correspondente na tabela ITEMCLICONJUNTO), a validação do estoque dos componentes do conjunto que estão gravados na tabela ITEMCLICONJUNTO, onde:

  • ItemcliConjunto.CodproConj = Itemclicad.Codpro
  • ItemcliConjunto.CodproComp = Codpro do componente
  • ItemcliConjunto.QuantComp = quantidade necessária do componente para composição do conjunto

A validação de estoque para os componentes deve seguir as mesmas regras já existentes para a verificação de estoque. Se qualquer componente do conjunto estiver com estoque insuficiente, o sistema deve considerar que não há estoque disponível para o produto final.

A mensagem de alerta exibida ao usuário, em caso de falta de estoque, deve informar explicitamente qual componente está em falta.

ATENÇÃO: A rotina de validação de estoque é executada dentro do processo de montagem de carga, que é altamente sensível a questões de performance. Portanto, a implementação desta regra deve ser feita com foco em otimização e eficiência, evitando impactos negativos no tempo de resposta da funcionalidade.

[10º Marco de entrega ⇑ RNs acima]

Sistema de usuários - Movimentos - Faturamento - Padrão / Simplificada

Objetivo:

Na emissão da nota fiscal de venda de um item do tipo conjunto, o sistema deve gerar automaticamente:

  • Nota fiscal de outras saídas para os componentes do conjunto, a fim de registrar a saída de estoque dos itens utilizados na composição.
  • Nota fiscal de outras entradas para o produto final (conjunto), registrando a entrada do conjunto no estoque.

Essa geração automática tem como objetivo refletir corretamente a movimentação dos estoques, tanto dos componentes quanto do conjunto final, garantindo a integridade dos saldos e o rastreamento adequado das operações.


Regras de Negócio:

Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN034. Ao selecionar o pedido/item no GRID é realizada a validação do estoque dos itens do pedido.

Se o parâmetro acima estiver ligado e houver itens de conjunto no pedido, a validação do estoque deve ser realizada considerando os componentes do conjunto, conforme regra descrita para montagem de carga.

RN035. Ao confirmar a geração da nota fiscal de venda, caso a nota contenha itens de conjunto (produto final), o sistema deverá, após a emissão da nota de venda, realizar automaticamente:

  • A emissão de nota fiscal de outras saídas para os componentes do conjunto, efetuando a baixa do estoque dos componentes do conjunto.
  • A emissão de nota fiscal de outras entradas para o produto final (conjunto), registrando a entrada do conjunto no estoque.

A geração dessas notas fiscais deve seguir as mesmas regras e critérios descritos para o Checkout, garantindo consistência no processo de movimentação de estoque.

[11º Marco de entrega ⇑ RNs acima]

Sistema de usuários - Movimentos - Desdobrar Item de Pedido

Objetivo:

Ao desdobrar o produto final do conjunto, desdobrar os componentes do conjunto.


Regras de Negócio:

Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN036. Ao confirmar o desdobramento de um item de pedido que é um produto final de um conjunto, deve ser desdobrado os componentes do item de conjunto na tabela ITEMCLICONJUNTO, onde: Itemclicad.Codpro = ItemcliConjunto.CodproConj

A quantidade do desdobramento dos componentes deve ser proporcional a quantidade do conjunto final que está sendo desdobrado.

[12º Marco de entrega ⇑ RNs acima]

Sistema de usuários - Movimentos - Saídas - Vendas

Objetivo:

Na emissão da nota fiscal de venda de um item do tipo conjunto, o sistema deve gerar automaticamente:

  • Nota fiscal de outras saídas para os componentes do conjunto, a fim de registrar a saída de estoque dos itens utilizados na composição.
  • Nota fiscal de outras entradas para o produto final (conjunto), registrando a entrada do conjunto no estoque.

Regras de Negócio:

Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN037. Na tela de itens da nota, se informado um PRODUTO que é PRODUTO FINAL de um CONJUNTO, deve ser feita a validação do estoque para os COMPONENTES do CONJUNTO.

Identificação de Produto Final de um Conjunto:

Para identificar se um produto é o produto final de um conjunto, é necessário verificar a existência de registros na tabela PRODCONEST onde:

  • PRODCONEST.Codpro = código do produto em análise.

Se houver registros nessa condição, significa que o produto é um conjunto, e seus componentes são definidos pelos valores presentes na coluna PRODCONEST.Codcomp, que representam os códigos dos produtos que compõem o conjunto.

RN038.  Para obter a quantidade dos componentes deve ser multiplicada a quantidade vendida do produto final pela quantidade do componente.

Exemplo:

Conjunto (prodconest.codpro) Quantidade vendida Componentes

(prodconest.codcomp)

Quantidade

(prodconest.Quant)

Quantidade total do componente
Kit Caixa de Luz   3,000 Poste 1,000 3,000
Fio de cobre 10,00 30,000
Caixa 1,000 3,00

RN039. A validação do estoque dos componentes deve seguir a mesma regra de validação de estoque dos demais produtos. Se NÃO houver estoque disponível para algum componente, deve ser exibida mensagem de aviso para o usuário, e não deixar informar o produto final, conforme o tratamento atual de validação de estoque, conforme configuração do TPO.

RN040. Ao confirmar a geração da nota fiscal de venda, caso a nota de venda contenha conjunto (produto final), o sistema deverá, após a emissão da nota de venda, realizar automaticamente:

  • A emissão de nota fiscal de outras saídas para os componentes do conjunto, efetuando a baixa do estoque dos itens utilizados.
  • A emissão de nota fiscal de outras entradas para o produto final (conjunto), registrando a entrada do conjunto no estoque.

A geração dessas notas fiscais deve seguir as mesmas regras e critérios descritos para a emissão pelo Checkout, garantindo consistência no processo de movimentação de estoque.

Para esta opção, não há um pedido de venda vinculado, portanto os componentes do conjunto devem ser considerados com base nas informações cadastradas previamente na tabela PRODCONEST, onde:

  • ITNFSAICAD.Codpro = PRODCONEST.Codpro → identifica o produto final (conjunto);
  • PRODCONEST.Codcomp → representa os códigos dos componentes que compõem o conjunto.

Dessa forma, os componentes utilizados para movimentação de estoque devem ser determinados com base no cadastro existente na PRODCONEST.

Nota Técnica
  • Nota de venda: tiposaida == '12'
  • Incluir verificação de conjunto e a chamada da rotina para geração da nota de outras saídas e outras entradas do programa Trawsaid.prg no final do processo, após a mensagem de confirmação de geração da nota de venda “'Confirma Operação?'”
  • Verificar a chamada IF fNotaFiscalEletronica(nfsaida.tpo, nfsaida.Filial)

[13º Marco de entrega ⇑ RNs acima]

Sistema de usuários - Movimentos - Saídas - Cancelamento de NF - Vendas

ECF - Cancelar NFC-e

Objetivo:

Ao cancelar uma nota de venda que tenha nota de outras saídas e outras entradas de conjunto relacionadas, deve ser feito o cancelamento de todas às notas.


Regras de Negócio:

Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN041. Se o parâmetro acima estiver LIGADO, ao cancelar uma nota de venda que tenha item de conjunto na nota de venda, após o cancelamento da nota de venda, deve ser feito o cancelamento da nota de outras saídas dos componentes e da nota de outras entradas do produto final, relacionada a nota de venda.

Estas notas estarão relacionadas através da coluna NumOrdNFVenda, onde:

  • NFsaidacad.Numord (Nota de venda) = ComplementoNFsaida.NumOrdNFVenda (Outras saídas)
  • NFsaidacad.Numord (Nota de venda) = ComplementoNFentra.NumOrdNFVenda (Outras entradas)

RN042. Se a nota de outras saídas e/ou outras entradas for NF-e (modelo 55), o cancelamento das notas devem ser enviados para SEFAZ com processamento pelo MUNFe e MonitorNFe.

Para isso, devem ser incluídas às notas na FILANFE, para o envio do cancelamento para SEFAZ.

RN043. Se a nota de outras saídas e/ou outras entradas NÃO for NF-e (modelo 55), DEVE SER somente feito o cancelamento das notas fiscais e feita a volta do estoque.

Cancelamento das notas fiscais:

  • NFsaidacad.DtCancel = Data atual
  • NFsaidacad.Atualiz = 0
  • NFentracad.DtCancel = Data atual
  • NFentracad.Atualiz = 0

Atualização do estoque:

  • Para Outras Saídas deve ser somado a quantidade do componente no estoque da filial: Itemfilest.Quant = Itemfilest.Quant + ITNFsaicad.Quant, onde:
    • Itemfilest.Filial = ITNFsaicad.Filial e Itemfilest.Codpro = ITNFsaicad.Codpro
  • Para Outras Entradas deve ser deduzida a quantidade do produto final no estoque da filial: Itemfilest.Quant = Itemfilest.Quant - ITNFentcad.Quant, onde:
    • Itemfilest.Filial = ITNFenticad.Filial e Itemfilest.Codpro = ITNFentcad.Codpro
Nota Técnica
  • Para o cancelamento de NF-e saida:
    • Verificar no programa Trawcanf a chamada da função: fGravaFilaNfe(mnumord, 'S', AGUARDACANCELAMENTONFE, .T.)
  • Para o cancelamento de NF-e entrada: fGravaFilaNfe(mnumord, 'E', AGUARDACANCELAMENTONFE, .T.)
  • Para cancelamento da NF (sem NF-e):
    • como exemplo verificar no programa Trawatsa.prg a chamada das funções
      • ApagaNFOutrasSaidasMontagem()
      • ApagaNFOutrasEntradasMontagem()

[14º Marco de entrega ⇑ RNs acima]

Sistema de usuários - Movimentos - Saídas - Cancelamento de NF - Outras Saídas

Objetivo:

Não permitir o cancelamento de nota de outras saídas de componentes de conjunto que esteja relacionada a uma nota de venda. Neste caso, deve ser cancelada a nota de venda.

Regras de Negócio:


Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN044. Se o parâmetro acima estiver LIGADO, não deve ser permitido cancelar uma nota de outras saídas que esteja relacionada a uma nota de venda. Deve ser cancelada somente a nota de venda e a nota de outras saídas será cancelada automaticamente.

Se informado uma nota de outras saídas, deve ser verificado se existe uma nota de venda confirmada relacionada a nota de outras saídas, onde:

  • ComplementoNFsaida.NumOrdNFVenda (Outras saídas) = NFsaidacad.Numord (Nota de venda)
  • Nota de venda Confirmada: NFsaidacad.atualiz = 1

Se localizada uma nota de venda confirmada relacionada a nota de outras saídas, deve ser exibida a mensagem “Nota de montagem de conjunto relacionada a nota de venda [Número/Serie NF venda] não pode ser cancelada.” e não permitir o cancelamento.

Nota Técnica
  • Select auxiliar para verificar NF venda relacionada:

SELECT nf.filial, nf.numnota, nf.serie  

FROM nfsaidacad nf

WHERE nf.atualiz = 1 and nf.numord = -- ComplementoNFSaida.NumordNFVenda

[15º Marco de entrega ⇑ RNs acima]

Sistema de usuários - Movimentos - Entradas - Cancelamento - Outras Entradas

Objetivo:

Não permitir o cancelamento de nota de outras entradas de produto final de conjunto que esteja relacionada a uma nota de venda. Neste caso, deve ser cancelada a nota de venda.

Regras de Negócio:


Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN045. Se o parâmetro acima estiver LIGADO, não deve ser permitido cancelar uma nota de outras entradas que esteja relacionada a uma nota de venda. Deve ser cancelada somente a nota de venda e a nota de outras entradas será cancelada automaticamente.

Se informado uma nota de outras entradas, deve ser verificado se existe uma nota de venda confirmada relacionada a nota de outras entradas, onde:

  • ComplementoNFentra.NumOrdNFVenda (Outras entradas) = NFsaidacad.Numord (Nota de venda)
  • Nota de venda Confirmada: NFsaidacad.atualiz = 1

Se localizada uma nota de venda confirmada relacionada a nota de outras entradas, deve ser exibida a mensagem “Nota de montagem de conjunto relacionada a nota de venda [Número/Serie NF venda] não pode ser cancelada.” e não permitir o cancelamento.

[16º Marco de entrega ⇑ RNs acima]

TradDevo - Devolução

Sistema de usuários - Movimentos - Entradas - Devolução de vendas - Com Emissão

Sistema de usuários - Movimentos - Entradas - Devolução de vendas - Sem Emissão

Objetivo:

Ao fazer uma devolução de vendas que tenha conjunto, fazer a emissão de nota de outras saídas do produto final do conjunto e da nota de outras entradas dos componentes do conjunto.

Regras de Negócio:


Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN046. Se o parâmetro acima estiver LIGADO, ao confirmar a emissão de uma devolução de venda, o sistema deve verificar se está sendo devolvido algum produto final do tipo conjunto.

Caso haja devolução de conjunto, o sistema deve gerar automaticamente:

  1. Uma nota fiscal de outras saídas para os produtos finais (conjuntos) devolvidos;
  2. Uma nota fiscal de outras entradas para os componentes dos conjuntos.

Esse processo é necessário porque, ao registrar a devolução de venda, o sistema realiza a entrada do conjunto no estoque. No entanto, como a empresa não mantém estoque físico de conjuntos, é necessário desmontar o produto, realizando:

  • A saída do conjunto do estoque (por meio de nota fiscal de outras saídas);
  • E a entrada dos componentes no estoque (por meio de nota fiscal de outras entradas).

As emissões devem seguir as seguintes diretrizes:

A nota fiscal de outras saídas deve ser gerada com o produto final (conjunto), utilizando as mesmas regras já definidas para a emissão de notas de outras saídas no Checkout, porém com o conjunto (produto final), e não com os componentes, como ocorre na venda.

A nota fiscal de outras entradas deve ser gerada com os componentes do conjunto, seguindo as mesmas regras já aplicadas para a emissão de notas de outras entradas no Checkout, mas com os componentes, e não com o produto final, como na venda.

RN047. Se for feita a devolução parcial do item de conjunto. Devem ser geradas as notas fiscais de outras saídas e outras entradas correspondentes às quantidades devolvidas.

RN048. Deve ser atualizado o relacionamento entre a nota de devolução de vendas e às notas de outras saídas e outras entradas:

Na nota de Outras Saídas:

  • ComplementoNFSaida.NumordVenda = Número de ordem da nota de DEVOLUÇÃO venda relacionada

Na nota de Outras Saídas:

  • ComplementoNFEntra.NumordVenda = Número de ordem da nota de DEVOLUÇÃO venda relacionada

RN049. Se EXCLUÍDA a NOTA DE DEVOLUÇÃO DE VENDA CONFIRMADA (lançada sem emissão), que tenha uma nota de outras saídas e outras entradas relacionadas a devolução. Deve ser disparado o CANCELAMENTO dessas notas para volta do estoque.

Deve ser feito o cancelamento da nota de outras saídas e outras entradas, conforme descrito na regra posterior da opção de cancelamento de devolução de vendas.

Nota Técnica
  • Incluir a chamada da rotina para geração das notas de outras saídas e outras entradas após confirmação da geração da nota de devolução.

[17º Marco de entrega ⇑ RNs acima]

Sistema de usuários - Movimentos - Entradas - Cancelamento - Devolução de vendas

Objetivo:

Ao fazer o cancelamento de devolução de vendas que tenha conjunto, deve ser feito o cancelamento da nota de outras saídas e outras entradas relacionadas a devolução de vendas.

Regras de Negócio:


Regra Geral: Todas às regras descritas abaixo devem ser aplicadas SOMENTE se o parâmetro por empresa “Orçamento com tratamento de conjuntos” estiver LIGADO.

RN050. Se o parâmetro acima estiver LIGADO, ao cancelar uma nota de DEVOLUÇÃO DE VENDAS que tenha item de conjunto na nota devolvido, após o cancelamento da nota de devolução, deve ser feito o cancelamento da nota de outras saídas do produto final do conjunto e da nota de outras entradas dos componentes, relacionada a nota de devolução de venda.

Estas notas estarão relacionadas através da coluna NumOrdNFVenda, onde:

  • NFentracad.Numord (Nota de devolução de venda) = ComplementoNFsaida.NumOrdNFVenda (Outras saídas)
  • NFentracad.Numord (Nota de devolução de venda) = ComplementoNFentra.NumOrdNFVenda (Outras entradas)

RN051. Se a nota de outras saídas e/ou outras entradas for NF-e (modelo 55), o cancelamento das notas devem ser enviados para SEFAZ com processamento pelo MUNFe e MonitorNFe.

Para isso, devem ser incluídas às notas na FILANFE, para o envio do cancelamento para SEFAZ.

RN052. Se a nota de outras saídas e/ou outras entradas NÃO for NF-e (modelo 55), DEVE SER somente feito o cancelamento das notas fiscais e feita a volta do estoque.

Cancelamento das notas fiscais:

  • NFsaidacad.DtCancel = Data atual
  • NFsaidacad.Atualiz = 0
  • NFentracad.DtCancel = Data atual
  • NFentracad.Atualiz = 0

Atualização do estoque:

  • Para Outras Saídas deve ser somado a quantidade do produto final no estoque da filial: Itemfilest.Quant = Itemfilest.Quant + ITNFsaicad.Quant, onde:
    • Itemfilest.Filial = ITNFsaicad.Filial e Itemfilest.Codpro = ITNFsaicad.Codpro
  • Para Outras Entradas deve ser deduzida a quantidade dos componentes no estoque da filial: Itemfilest.Quant = Itemfilest.Quant - ITNFentcad.Quant, onde:
    • Itemfilest.Filial = ITNFenticad.Filial e Itemfilest.Codpro = ITNFentcad.Codpro