
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.