Histórico da Página
ER_MANMAT01-1202 - Permitir Multiplas Naturezas para Documento de Rateio
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
Informações Gerais
Especificação |
|
|
|
Produto | Datasul | Módulos | Recebimento/Contabilidade/GFE |
Segmento Executor | Manufatura |
|
|
Projeto1 | D_MAN_MAT001 | IRM1 | MANMAT01-101 |
Requisito1 | MANMAT01-1202 | Subtarefa1 | MANMAT01-1221 |
Chamado2 |
|
|
|
País | ( X ) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. |
|
|
Outros |
|
|
|
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
Objeto | Tipo de Operação | Opção de Menu | Regras de Negócio |
boin366.p | [Alteração] | - | - |
re1904.w | [Alteração] | - | - |
Objetivo
- Adaptação das rotinas de recebimento para permitir múltiplas naturezas em notas de rateio.
- Alterar a conta contábil e o centro de custo dos itens que fazem parte da nota fiscal de entrada e que não terão valor considerável para a apropriação de despesas de frete.
Permitir desprezar o item para apropriação de despesas de frete. Atribuição de Custo para Ordem de Manutenção para Item de Controle Total
Definição da Regra de Negócio
No processo de apropriação de despesas de frete sobre compras, é criada uma nota fiscal de rateio vinculada a um ou mais documentos de entrada, contendo os mesmos itens e repassando o valor de frete a cada um proporcionalmente.
...
Com a possibilidade de existirem itens com natureza de operação diferentes, a apropriação de despesas dever ser aplicada em cima da natureza fiscal de o cálculo dos impostos de ser feito separadamente para cada item.
Este desenvolvimento cria um tratamento, através da configuração de regra de negócio no programa cd0024, que permite a alteração da natureza fiscal dos itens, permitindo o cálculo de alíquotas e tipo de tributação pela natureza de cada item.
...
O modelo proposto permite a entrada de múltiplas naturezas para o documento referenciado através da utilização do configurador de regras para a tradução da natureza.
Pode ser tomar como exemplo o modelo abaixo.
...
Este desenvolvimento cria um tratamento, através da configuração de regra de negócio no programa cd0024, que altera a conta contábil e centro de custo dos itens da nota fiscal de rateio que não devem ter parte na apropriação de despesas de frete, fazendo com que o valor passe para uma conta diferente de despesas de frete.
Também será possível criar uma regra para definir se deve considerar apropriação do custo do frete para o item. Com isso, é possível configurar uma regra para 'desprezar' o item no momento da geração da nota de rateio.
3.Atribuição de Custo para Ordem para Item de Controle
Em algumas situações são feitas aquisições emergenciais para atender uma manutenção em que se adquire um item de controle total para uso direto em uma ordem de manutenção. Neste caso as despesas desta aquisição, por exemplo frete, deverão ser atribuídas diretamente para a ordem de manutenção que desencadeou a compra e não para o custo médio do item.
Assim, quando se receber uma nota de rateio e houver uma ordem associada a uma das notas de mercadoria, o custo da nota rateada deverá ir para a ordem. Isto deverá acontecer somente se a ordem associada for de Manutenção.
ALTERAÇÕES ERP DATASUL
1. re1904.w
...
Caso a natureza de todos os itens tenham sofrido tradução, os valores de impostos apresentados na tela serão referentes a natureza de operação do cabeçalho do documento.
Caso exista alguma natureza que não tenha sofrido alteração, os valores de impostos apresentados na tela serão referentes ao item que contém a natureza não traduzida.
Por exemplo:
Na imagem acima, foram vinculados dois documentos (0000123 e 1611001).
Ao confirmar, foi feita a busca dos itens e realizado a tradução de naturezas.
Para o item SOJA SOJA não ocorreu tradução de natureza de operação, portanto a natureza fiscal ficou igual a natureza do cabeçalho do documento, as alíquotas e tributações respeitaram os valores informados no re1904.
Para o item .compras, a natureza de operação sofreu tradução e a natureza fiscal foi alterada para 16220E, mantendo as alíquotas e tributações relacionadas a natureza traduzida.
Também deve ser possível realizar a tradução de CFOP para natureza de operação.
Por exemplo:
Ao confirmar, se utilizar múltiplas naturezas e algum item for vinculado a nota de rateio, mostrar mensagem 54933 alertando que as naturezas podem sofrer alteração.
...
Incluir a include cd9701.i para tratar múltiplas naturezas;
Verificar se existe a operação 'item-doc-rateio' cadastrada na tabela config-operac e salvar o resultado da busca em uma variável lógica.
Buscar regras para as seguintes operações: NFRat-ItemConta , NFRat-ItemNatOf e NFRat-ApropDesp.
Obs: Os tipos de operação descritos acima devem estar cadastrados no programa cd0025(Cadastrar Tipo Operação)
Ao percorrer a tabela item-doc-est para geração dos itens, executar o engine de regras passando variáveis conforme tabela abaixo:
TT-VARIAVEL | |
cod-var-oper | cod-val-var |
it-codigo | Código Item |
nat-operacao-nf | Código Natureza de Operação da Mercadoria |
cod-estabel | Código Estabelecimento |
cod-transp | Código Transportador |
cod-fornec | Código Fornecedor |
ct-codigo | Código Conta |
sc-codigo, | Código Centro Custo |
cfop-nf | Código CFOP da Mercadoria |
Buscar grupo estoque(ge-codigo) e famila(fm-codigo) do item e criar as seguintes variáveis:
TT-VARIAVEL | |
cod-var-oper | cod-val-var |
ge-codigo | Grupo Estoque do Item |
fm-codigo | Familia do Item |
Verificar se existe um retorno "apropriacaoapropria-despesa-item" com valor "Sim"NAO" para a operação "NFRat-ApropDesp" . Se existir deve desconsiderar o item e ir para o próximo.
Salvar a natureza retornada no campo nat-of da tabela item-doc-est. Se não ocorrer a tradução, salvar a natureza do documento principal.
Alterar os campos conta e centro custo com os valores retornados.
Exemplo de implementação
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "it-codigo":U
tt tt-variavel.cod-val-var = TRIM(STRING(p-it-codigo)).
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "nat-operacao":U
tt tt-variavel.cod-val-var = TRIM(STRING(p-nat-operacao)).
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "cod-estabel":U
tt tt-variavel.cod-val-var = TRIM(STRING(p-nat-operacao)).
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "cod-transp":U
tt tt-variavel.cod-val-var = TRIM(STRING(p-cod-transp)).
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "cod-fornec":U
tt tt-variavel.cod-val-var = TRIM(STRING(p-cod-fornec)).
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "ct-codigo":U
tt tt-variavel.cod-val-var = TRIM(STRING(p-ct-codigo)).
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "sc-codigo":U
tt-variavel.cod-val-var = TRIM(STRING(p-sc-codigo)).
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "cfop":U
tt tt-variavel.cod-val-var = TRIM(STRING(p-cod-cfop)).
IF VALID-HANDLE(h-boin172) THEN DO:
RUN openQueryStatic IN h-boin172 (input "Main":U).
run RUN goToKey IN h-boin172 (input p-it-codigo).
RUN getIntField IN h-boin172 (INPUT "ge-codigo", OUTPUT c-var-ge-codigo).
RUN getCharField IN h-boin172 (INPUT "fm-codigo", OUTPUT c-var-fm-codigo).
END.
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "ge-codigo":U
tt-variavel.cod-val-var = TRIM(STRING(c-var-ge-codigo)).
CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "fm-codigo":U
tt-variavel.cod-val-var = TRIM(STRING(c-var-fm-codigo)).
Busca retornos para os tipos de operação
/*Verifica se a operacao item-doc-rateio est cadastrada no CD0025*/
FOR EACH config-operac NO-LOCK
WHERE config-operac.cdn-empresa = i-empresa
AND config-operac.cod-estab = docum-est.cod-estabel
AND (config-operac.cod-tip-operac = "NFRat-ItemConta":U OR
config-operac.cod-tip-operac = "NFRat-ItemNatOf":U OR
config-operac.cod-tip-operac = "NFRat-ApropDesp":U ):
RUN cdp/cdapi034.p (INPUT p-empresa,
...
...
INPUT p-cod-estabel,
...
INPUT p-cod-tip-operac,
...
INPUT TABLE tt-variavel,
...
OUTPUT i-cod-regra-utilizada,
...
OUTPUT TABLE tt-retorno,
...
OUTPUT TABLE RowErrors).
Verificação se existe tipo de operação cadastrado
/*Verifica se a operacao item-doc-rateio est cadastrada no CD0025*/
FIND FIRST config-operac NO-LOCK
WHERE config-operac.cdn-empresa = i-empresa
AND config-operac.cod-estab = docum-est.cod-estabel
AND config-operac.cod-tip-operac = "item-doc-rateio":U NO-ERROR.
IF AVAIL config-operac THEN
ASSIGN l-item-doc-rateio = YES.
END.
Implementação para desprezar o item
IF CAN-FIND(FIRST tt-retorno
WHERE tt-retorno.campo-retorno = "
apropriacaoapropria-despesa-item":U
AND tt-retorno.valor-retorno = "
simNAO":U) THEN NEXT.
Implementação para multiplas naturezas
FOR EACH tt-retorno
WHERE tt-retorno.campo-retorno = "nat-of"
OR tt-retorno.campo-retorno = "cod-cfop":
ASSIGN c-nat-of = tt-retorno.valor-retorno.
END.
Implementação para conta e centro de custo
FOR EACH tt-retorno:
CASE tt-retorno.campo-retorno:
WHEN "ct-codigo":U THEN ASSIGN b-item-doc-est.ct-codigo = STRING(tt-retorno.valor-retorno).
WHEN "sc-codigo":U THEN ASSIGN b-item-doc-est.sc-codigo = STRING(tt-retorno.valor-retorno).
END CASE.
END.
Para atribuir o custo para a ordem de manutenção feita as seguintes verificações:
- Verificar se o item é controle total (item.tipo-contr <> 2);
- Verificar se o módulo de manutenção industrial está habilitado (param-global.modulo-mi);
- Se o número da ordem do item da NFe de mercadoria é maior que zero(item-doc-est.nr-ord-prod);
- Se o número da ordem é referente a uma ordem de manutenção (ord-manut).
IF AVAIL param-global
AND param-global.modulo-mi
AND CAN-FIND(FIRST ord-manut
WHERE ord-manut.nr-ord-produ = item-doc-est.nr-ord-prod) THEN DO:
ASSIGN b-item-doc-est.ct-codigo = item-doc-est.ct-codigo (conta ordem manutenção)
b-item-doc-est.sc-codigo = item-doc-est.sc-codigo (centro custo ordem manutenção)
b-item-doc-est.nr-ord-prod = item-doc-est.nr-ord-prod. (número da ordem manutenção)
END.