Árvore de páginas

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

  1. Adaptação das rotinas de recebimento para permitir múltiplas naturezas em notas de rateio.
  2. 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. 
  3. 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. 

  1. Múltiplas Naturezas

Com a possibilidade de existirem itens com natureza de operação diferentes, 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.

 

No modelo abaixo estão sendo vinculadas 3 NFe's de mercadoria ao CTe, onde os itens possuem naturezas distintas. Os itens herdam a natureza da nota de rateio.
 


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.


 
 


 
O modelo mostra a entrada manual pelo módulo de Recebimento, porém a solução também será aplicada quando a entrada for via TOTVS Colaboração ou integração com o módulo GFE.


2. Apropriação de Despesas do Item 


Para alguns tipos de itens, como por exemplo, vasilhames retornáveis, pallets, etc., a apropriação de despesas não deve ser aplicada, pois o item não é de compra/consumo.   

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

O programa re1904 é responsável por vincular as notas fiscais de mercadoria ao conhecimento de transporte de rateio.

Ao abrir a tela, é sugerido alíquota e código de tributação para os itens das NFE's de mercadoria com base na natureza do documento.



Ao clicar no botão OK, deve-se realizar a chamada para a cdapi034(engine de regras) para cada item das notas referenciadas, para que seja realizada a tradução das naturezas. 
 
Se a natureza for traduzida, devem ser utilizadas alíquotas e tributações cadastradas para a natureza de operação retornada pelo configurador de regras e vinculá-las ao item que será criado.
 
Caso a natureza de operação não sofra tradução, devem ser utilizadas alíquotas e tributações vinculadas a natureza de operação do cabeçalho da nota.
 
Importante:
Quando usar Múltiplas Naturezas, os campos referentes a alíquota e tributação dos impostos podem ser sobrepostos pelos parâmetros específicos de cada natureza de operação.
Os valores alterados nos campos somente serão aplicados nos itens cuja natureza não tenha sofrido tradução.

Ao fazer alteração, a tela será aberta com os documentos já vinculados.

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 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.


2. BOIN366.P

Implementar no programa boin366 a utilização do ENGINE DE REGRAS conforme os dados a seguir:

Incluir a include cd9701.i  para tratar múltiplas naturezas; 

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 "apropria-despesa-item" com valor "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-variavel.cod-val-var = TRIM(STRING(p-it-codigo)).

CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "nat-operacao":U
       tt-variavel.cod-val-var = TRIM(STRING(p-nat-operacao)).

CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "cod-estabel":U
       tt-variavel.cod-val-var = TRIM(STRING(p-nat-operacao)).

CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "cod-transp":U
       tt-variavel.cod-val-var = TRIM(STRING(p-cod-transp)).

CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "cod-fornec":U
       tt-variavel.cod-val-var = TRIM(STRING(p-cod-fornec)).

CREATE tt-variavel.
ASSIGN tt-variavel.cod-var-oper = "ct-codigo":U
       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-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 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).

END.

 



Implementação para desprezar o item

IF CAN-FIND(FIRST tt-retorno
            WHERE tt-retorno.campo-retorno = "apropria-despesa-item":U
              AND tt-retorno.valor-retorno = "NAO":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.

 

  
 
  

  • Sem rótulos