Financial Management Blogs by Members
Dive into a treasure trove of SAP financial management wisdom shared by a vibrant community of bloggers. Submit a blog post of your own to share knowledge.
cancel
Showing results for 
Search instead for 
Did you mean: 
david_medeiros
Participant

Prezados,

Devido a grandes problemas que muitas pessoas estão tendo com relação ao Desconto na NF, eu resolvi abrir este Blog para ajudar com uma solução paliativa.

O desconto deve ser especificado em cada item. Assim se você vai dar um desconto de 10% no valor da nota deve informar o valor correspondente do desconto para cada item. O campo desconto não é obrigatório, então também poderá numa mesma nota, haver itens com desconto e outros sem desconto. No momento de digitar o desconto na tela do produto, tenha em mente que este somente será considerado no total geral da nota.

O programa somará os descontos de todos os itens e vai subtrair do total da nota na seção de totais. Assim, quando houver desconto, os valores unitários de comercialização, tributação e o valor total bruto de cada item devem ser informados sem o desconto, somente no total geral os descontos serão considerados.


E como fica a base de cálculo dos impostos?
Caso sua nota tenha destaque de impostos, lembre-se de digitar como base de cálculo dos impostos o valor já diminuído do desconto. O programa vai considerar para efeito de cálculo dos impostos o valor digitado por você. Tenha muito cuidado pois esquecer os descontos aqui vai fazer com que você pague impostos a mais do que deveria.
Fonte: Blog de Suporte


Cenário: Base de Cálculo do ICMS tem o valor cheio da NF sem o desconto.


Total Produtos: R$ 100,00

Desconto: R$ 10,00

Total NF: R$ 90,00

Total Base de ICMS: R$ 100,00

Aliquota ICMS e Total: 17% - R$ 17,00


Para este cálculo funcionar eu utilizei como exemplo um pedido com os valores destacados acima e a Pricing de COMPRAS tem de estar com a condição Standard RB00 (Desconto Absoluto) conforme imagem abaixo:



OBS:  A condição de ICMS na Pricing deve estar com o valor correto, você tem de fazer o cálculo do ICMS baseado no preço bruto sem desconto para que calcule corretamente, no meu caso a condição ICM1 vem automática via fórmula e já está tratado dentro da mesma. De qualquer forma este é o pré-requisito, pois o programa não altera a pricing de compras somente a aba de fatura - Impostos e na MIRO.


Em seguida o Seguinte Enhancement tem de ser implementado:


Classe: CL_TAX_CALC_BR_MM.

Method: CALCULATE_ICMS.


METHOD calculate_icms .

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Classe CL_TAX_CALC_BR, Método CALCULATE_ICMS, Início                                                                                              A

*$*$-Start: (1)---------------------------------------------------------------------------------$*$*

ENHANCEMENT 1  Z_TRATAMENTO_DESCONTO_PO.    "active version

*Tratamento para a Base do ICMS não excluir o valor do Desconto

DATA: t_tkomv TYPE komv_tab,

      l_tkomv LIKE LINE OF t_tkomv,

      v_kbetr TYPE komv_index-kbetr,

      l_knumv TYPE ekko-knumv,

      l_kbetr TYPE konv-kbetr,

      t_komki TYPE komk,

      t_komve TYPE TABLE OF komv,

      l_komve LIKE LINE  OF t_komve.

DATA: t_xkomv TYPE komv_tab.

FIELD-SYMBOLS: <fs_t_komv>  TYPE any,

               <fs_ebeln>   TYPE any,

               <fs_ebelp>   TYPE any.

ASSIGN ('(SAPLMEPO)TKOMV[]') TO <fs_t_komv>.

ASSIGN ('(SAPLV61A)KOMP-EVRTN') TO <fs_ebeln>.

ASSIGN ('(SAPLV61A)KOMP-EVRTP') TO <fs_ebelp>.

IF <fs_t_komv> IS ASSIGNED.

  MOVE <fs_t_komv> TO t_tkomv.

IF <fs_ebelp> IS ASSIGNED.

    IF sy-tcode = 'ME21N' OR sy-tcode = 'ME22N' OR sy-tcode = 'ME23N' OR sy-tcode = 'ME47'.

                    

      LOOP AT t_tkomv INTO l_tkomv  WHERE kschl = 'RB00' AND kposn = <fs_ebelp>.

        IF l_tkomv-kwert IS NOT INITIAL.

          l_tkomv-kwert = l_tkomv-kwert * -1.

          IF ms_tax_data-net_amount IS NOT INITIAL.

            ms_tax_data-net_amount = ms_tax_data-net_amount + l_tkomv-kwert.

          ENDIF.

        ENDIF.

      ENDLOOP.

    ENDIF.

ENDIF.

UNASSIGN <fs_t_komv>.

ENDIF.

IF sy-tcode = 'MIRO'.

  IF <fs_ebeln> IS ASSIGNED AND <fs_ebelp> IS ASSIGNED.

    SELECT SINGLE knumv INTO l_knumv FROM ekko

      WHERE ebeln = <fs_ebeln>.

    IF sy-subrc = 0.

      t_komki-knumv = l_knumv.

      SELECT SINGLE kbetr INTO l_kbetr FROM konv

        WHERE knumv = l_knumv

          AND kposn = <fs_ebelp>

          AND kschl = 'RB00'.

      IF sy-subrc = 0.

        IF l_kbetr IS NOT INITIAL.

          l_kbetr = l_kbetr * -1.

          IF ms_tax_data-net_amount IS NOT INITIAL.

            ms_tax_data-net_amount = ms_tax_data-net_amount + l_kbetr.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

  UNASSIGN: <fs_ebeln>, <fs_ebelp>.

ENDIF.

ENDENHANCEMENT.

Enfim, este é apenas um exemplo de código e solução paliativa você pode tratar este desenvolvimento de outras formas, cabe ao programador decidir como vai fazer.

Após o desenvolvimento a PRICING TAXBRA vai ficar assim:



Este Tratamento já vai funcionar para o PEDIDO de Compras e para o Lançamento na MIRO, você também pode efetuar este tratamento para a Base do IPI, PIS e COFINS é só utilizar os METHODS de calcular o IPI, PIS e COFINS e fazer tratamentos diferenciados.


Bom espero ter ajudado, Um grande Abraço à todos que estão sempre contribuindo para o SCN ser uma grande ferramenta de Suporte e as dúvidas de todos.


David Medeiros

SAP MM Consultant

15 Comments