Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DI
Data/Hora da Publicação: 29/08/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 13:47:30
Descrição da Nota: REDUÇÃO DE BASE DE IMPOSTO NOTA FISCAL
Sintoma
Sistema não está aproximando os valores da redução de base de ICMS
Solução
Foi desenvolvida regra de cálculo para aproximar o valor
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04557 Data: 29/08/2007 Hora: 10:14:46
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04557
Categoria : Erro de Programa
Prioridade : Baixa
Versão PW.CE : 7.0
Pacote : 00003
Agrupamento : 00013
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02261 - 00001 - 6.0 - 00025 - A NF GLOBAL E COMPLEMENTAR NÃO ESTÁ TRATANDO ICMS DIFERIDO E SUSP
03219 - 00004 - 6.0 - 00026 - NOTA FISCAL COM SUSPENSÃO DE IMPOSTOS
03303 - 00002 - 7.0 - 00001 - VERIFICAR A TABELA ZYCIT062 PARA TRATAR NÃO INCIDÊNCIA NA DI
04132 - 00003 - 7.0 - 00002 - ESCREVER UM MONTANTE POR EXTENSO
04488 - 00005 - 7.0 - 00002 - NOTA FISCAL REMESSA - VALORES ERRADOS DE IPI E ICMS
04509 - 00006 - 7.0 - 00002 - NECESSIDADE DE CRIAR CHAMADA DE EXIT NO PROGRAMA DA DI NO CÁLCULO
04542 - 00007 - 7.0 - 00003 - MENSAGENS NA NOTA DE REMESSA - ICMS TOTAL DA OPERAÇÃO
04679 - 00008 - 7.0 - 00003 - DI NÃO ESTÁ RESPEITANDO O PARÂMETRO REG_SUSP DA ZYCIT062 P ICMS
----------------------------------------------------------------------------------------------------
REDUÇÃO DE BASE DE IMPOSTO NOTA FISCAL
----------------------------------------------------------------------------------------------------
Palavras Chave:
REDUÇÃO DE BASE DE IMPOSTO NOTA FISCAL
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI016F01
REPS /PWS/MZYCI016X01
REPS /PWS/MZYCI023F03
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
ENDIF.
ELSEIF itab_zycit036-codigo = 'II'.
v_montante1 = v_montante1 + itab_zycit036-vlreal.
ELSEIF itab_zycit036-codigo = 'IPI'.
v_ipi = v_ipi + itab_zycit036-vlreal.
ELSEIF itab_zycit036-codigo = 'ICMS'.
v_icms = v_icms + itab_zycit036-vlreal.
v_basred = itab_zycit003-basred.
ENDIF.
ENDLOOP.
* >> Início da inclusão: FORM VERIFICA_MONTANTE
clear v_advicms.
IF NOT itab_zycit003-advalicms IS INITIAL.
IF /pws/zycit062-bs_pis_cof IS INITIAL.
IF NOT itab_zycit003-basred IS INITIAL OR
NOT itab_zycit003-basred EQ '100'.
v_advicms = ( ( itab_zycit003-advalicms / 100 ) *
( itab_zycit003-basred / 100 ) ) .
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).
ELSE.
* << Fim da inclusão
v_basred = itab_zycit003-basred.
* >> Início da inclusão: FORM VERIFICA_MONTANTE
ENDIF.
* << Fim da inclusão
IF v_basred IS INITIAL.
v_basred = 100.
ENDIF.
ENDFORM.
...
...
( itab_zycit042_d-vldpii /
itab_zycit044-menge * itab_zycit044-qtd_item ) .
v_outras_ic = ( itab_zycit044-vldp /
itab_zycit044-menge * itab_zycit044-qtd_item ) + v_vldp_044.
it_zycee007-netoth = v_despesas + v_outras + v_ipi +
v_vldp_044 .
it_zycee007-netpr = itab_zycit044-netpr.
v_total = ( ( it_zycee007-netpr * itab_zycit044-qtd_item ) +
it_zycee007-netfre + it_zycee007-netins +
it_zycee007-netoth ).
* >> Início da inclusão: FORM VALORES_R
clear v_advicms.
IF NOT itab_zycit003-advalicms IS INITIAL.
IF /pws/zycit062-bs_pis_cof IS INITIAL.
IF NOT itab_zycit003-basred IS INITIAL OR
NOT itab_zycit003-basred EQ '100'.
v_advicms = ( ( itab_zycit003-advalicms / 100 ) *
( itab_zycit003-basred / 100 ) ) .
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).
ELSE.
v_basred = itab_zycit003-basred.
ENDIF.
* << Fim da inclusão
ENDFORM.
...
...
IF /pws/zycit001-tpdecl IS INITIAL.
SELECT SINGLE *
FROM /pws/zycit001
WHERE nrseq EQ itab_zycit042-nrseq.
* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO
ENDIF.
clear v_advicms.
IF NOT itab_zycit003-advalicms IS INITIAL.
IF /pws/zycit062-bs_pis_cof IS INITIAL.
IF NOT itab_zycit003-basred IS INITIAL OR
NOT itab_zycit003-basred EQ '100'.
v_advicms = ( ( itab_zycit003-advalicms / 100 ) *
( itab_zycit003-basred / 100 ) ) .
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
ENDIF.
ELSE.
v_advicms = ( itab_zycit003-advalicms / 100 ).
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO
v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).
ELSE.
v_basred = itab_zycit003-basred.
ENDIF.
* << Fim da inclusão
IF NOT /pws/zycit100-vlicms IS INITIAL AND
NOT /pws/zycit100-icms_dif = 'X'.
IF ( /pws/zycit085-tpdi EQ 'N' AND
NOT ' 456' CA /pws/zycit100-codregtriicms ) OR
( /pws/zycit085-tpdi EQ 'S' AND
NOT '56' CA /pws/zycit100-codregtri ) .
* >> Início da exclusão: FORM ATUALIZA_ICMS_UNITARIO
IF /pws/zycit062-tred IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO
IF NOT /pws/zycit062-tred IS INITIAL.
* << Fim da inclusão
itab_zycit042-netpr = itab_zycit042-netpr +
( ( /pws/zycit100-vlicms / itab_zycit042-qtd_iten )
* >> Início da exclusão: FORM ATUALIZA_ICMS_UNITARIO
* 100 ) / itab_zycit003-basred.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO
* 100 ) / v_basred.
* << Fim da inclusão
ELSE.
itab_zycit042-netpr = itab_zycit042-netpr +
( /pws/zycit100-vlicms / itab_zycit042-qtd_iten ).
ENDIF.
ENDIF.
ENDIF.
IF /pws/zycit001-tpdecl EQ 'DSI'
AND /pws/zycit100-codregtri EQ '4'.
* >> Início da exclusão: FORM ATUALIZA_ICMS_UNITARIO
IF /pws/zycit062-tred IS INITIAL.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO
IF NOT /pws/zycit062-tred IS INITIAL.
* << Fim da inclusão
itab_zycit042-netpr = itab_zycit042-netpr + ( (
/pws/zycit100-vlicms / itab_zycit042-qtd_iten )
* >> Início da exclusão: FORM ATUALIZA_ICMS_UNITARIO
* 100 ) / itab_zycit003-basred.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_ICMS_UNITARIO
* 100 ) / v_basred.
* << Fim da inclusão
ELSE.
itab_zycit042-netpr = itab_zycit042-netpr +
( /pws/zycit100-vlicms / itab_zycit042-qtd_iten ).
ENDIF.
ENDIF.
ENDFORM.
...
...
ELSE.
it_zycee007-ownpro2 = 'X'.
ENDIF.
PERFORM valores_r.
SELECT SINGLE * FROM /pws/zycit062
WHERE regio = adrc-region.
READ TABLE itab_zycit100 WITH KEY ebeln = itab_zycit044-ebeln
ebelp = itab_zycit044-ebelp.
v_total = ( itab_zycit100-baseicms /
( itab_zycit044-menge / itab_zycit044-qtd_item ) * 100 )
* >> Início da exclusão: FORM ITENS_NFRNEW
/ itab_zycit003-basred.
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
/ v_basred.
* << Fim da inclusão
CASE itab_zycit033-tribicms.
WHEN 1.
it_zycee007-base = v_total.
it_zycee007-base =
* >> Início da exclusão: FORM ITENS_NFRNEW
( it_zycee007-base * itab_zycit003-basred / 100 ).
IF itab_zycit003-basred NE 100.
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
( it_zycee007-base * v_basred / 100 ).
IF v_basred NE 100.
* << Fim da inclusão
it_zycee007-c_excbas = v_total - it_zycee007-base.
IF NOT /pws/zycit062-tred IS INITIAL AND
NOT /pws/zycit062-flag_icms IS INITIAL.
it_zycee007-c_excbas = it_zycee007-c_excbas *
( 1 - ( itab_zycit003-advalicms / 100 ) ).
ENDIF.
ENDIF.
...
...
ENDIF.
ENDIF.
v_icms_dif = v_icms_dif + v_icms.
v_base_dif = v_base_dif + v_total.
ELSE.
it_zycee007-taxval = v_icms.
ENDIF.
v_base = it_zycee007-c_excbas.
WHEN 3.
it_zycee007-othbas = v_total.
* >> Início da exclusão: FORM ITENS_NFRNEW
IF itab_zycit003-basred NE 100.
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
IF v_basred NE 100.
* << Fim da inclusão
it_zycee007-othbas =
* >> Início da exclusão: FORM ITENS_NFRNEW
( it_zycee007-othbas * itab_zycit003-basred / 100 ).
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
( it_zycee007-othbas * v_basred / 100 ).
* << Fim da inclusão
it_zycee007-c_excbas = v_total - it_zycee007-othbas.
IF NOT /pws/zycit062-tred IS INITIAL AND
NOT /pws/zycit062-flag_icms IS INITIAL.
...
...
CASE itab_zycit033-tribipi.
WHEN 1.
if not itab_zycit100-Baseipi is initial.
it_zycee007-base2 = itab_zycit100-Baseipi /
itab_zycit044-menge * itab_zycit044-qtd_item .
endif.
* >> Início da exclusão: FORM ITENS_NFRNEW
if itab_zycit003-basred is initial.
itab_zycit003-basred = 100.
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
IF v_basred IS INITIAL.
v_basred = 100.
* << Fim da inclusão
endif.
it_zycee007-p_excbas = v_outras_ic + v_IPI.
if itab_zycit100-icms_dif ne 'X' or
/pws/zycit062-BS_CHEIA_DIF = 'X'.
if not v_icms is initial.
it_zycee007-p_excbas = it_zycee007-p_excbas +
* >> Início da exclusão: FORM ITENS_NFRNEW
( ( v_icms * 100 ) / itab_zycit003-basred ).
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
( ( v_icms * 100 ) / v_basred ).
* << Fim da inclusão
endif.
endif.
CLEAR it_zycee007-taxval2.
WHEN 2.
it_zycee007-p_excbas = v_base.
CLEAR it_zycee007-taxval2.
WHEN 3.
if not itab_zycit100-Baseipi is initial.
it_zycee007-othbas2 = itab_zycit100-Baseipi /
itab_zycit044-menge * itab_zycit044-qtd_item .
endif.
* >> Início da exclusão: FORM ITENS_NFRNEW
if itab_zycit003-basred is initial.
itab_zycit003-basred = 100.
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
IF v_basred IS INITIAL.
v_basred = 100.
* << Fim da inclusão
endif.
it_zycee007-p_excbas = v_outras_ic + v_IPI.
if itab_zycit100-icms_dif ne 'X' or
/pws/zycit062-BS_CHEIA_DIF = 'X'.
if not v_icms is initial.
it_zycee007-p_excbas = it_zycee007-p_excbas +
* >> Início da exclusão: FORM ITENS_NFRNEW
( ( v_icms * 100 ) / itab_zycit003-basred ).
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
( ( v_icms * 100 ) / v_basred ).
* << Fim da inclusão
endif.
endif.
CLEAR it_zycee007-taxval2.
ENDCASE.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016X01
...
* >> Início da exclusão:
v_basred LIKE /pws/zycit036-basred,
* << Fim da exclusão
* >> Início da inclusão:
v_basred like /pws/zycie003-netpr,
* << Fim da inclusão
...
...
* >> Início da inclusão:
data v_advicms type p decimals 3.
* << Fim da inclusão
DATA: END OF COMMON PART a.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI023F03
...
FORM load_iicms USING p_tipo.
* >> Início da inclusão: FORM LOAD_IICMS
data v_trunc type p decimals 3.
* << Fim da inclusão
CLEAR: t_ivdesp, v_advii, v_advipi, v_advicms,
v_advpis, v_advcof, v_desp.
DATA itab_zycit003_rateio LIKE /pws/zycit003 OCCURS 0 WITH HEADER LINE.
SELECT * FROM /pws/zycit438 INTO TABLE itab_zycit438
WHERE regio = v_region
AND lei = 'MP252'.
IF sy-subrc NE 0.
SELECT * FROM /pws/zycit438 INTO TABLE itab_zycit438
WHERE regio = ' '
AND lei = 'MP252'.
...
...
IF NOT /pws/zycie100a-reduzidaipi IS INITIAL.
v_advipi = ( /pws/zycie100a-reduzidaipi / 100 ).
ELSE.
v_advipi = ( /pws/zycie003-advalipi / 100 ).
ENDIF.
IF /pws/zycit062-bs_pis_cof IS INITIAL.
IF NOT /pws/zycie003-basred IS INITIAL OR
NOT /pws/zycie003-basred EQ '100'.
v_advicms = ( ( /pws/zycie003-advalicms / 100 ) *
( /pws/zycie003-basred / 100 ) ) .
* >> Início da inclusão: FORM LOAD_IICMS
v_trunc = v_advicms.
v_advicms = v_trunc.
* << Fim da inclusão
ELSE.
v_advicms = ( /pws/zycie003-advalicms / 100 ).
ENDIF.
ELSE.
v_advicms = ( /pws/zycie003-advalicms / 100 ).
ENDIF.
v_advpis = ( /pws/zycie100a-advalpis / 100 ).
v_advcof = ( /pws/zycie100a-advalcofins / 100 ).
IF /pws/zycit000-pis_cof EQ 'X'.
IF NOT itab_zycit438[] IS INITIAL.
...
...
ENDIF.
CLEAR: v_vlpisrec , v_vlcofrec.
IF '56' CA /pws/zycie100a-codregtripiscofi.
v_vlpisrec = a_pisdevi.
v_vlcofrec = a_cofdevi.
ELSE.
v_vlpisrec = t_pis .
v_vlcofrec = t_cofins.
ENDIF.
IF v_nr_itens GT 1.
* >> Início da inclusão: FORM LOAD_IICMS
IF NOT /pws/zycie003-advalicms IS INITIAL.
t_icmsbs_d2 = t_icmsbs = ( t_ivadu + v_vliirec + v_vlipirec +
t_ivdesp + v_desp + v_vlpisrec + v_vlcofrec ) *
( v_advicms * 100 / /pws/zycie003-advalicms ).
ELSE.
* << Fim da inclusão
t_icmsbs_d2 = t_icmsbs = ( t_ivadu + v_vliirec + v_vlipirec +
t_ivdesp + v_desp + v_vlpisrec + v_vlcofrec ) *
( /pws/zycie003-basred / 100 ).
* >> Início da inclusão: FORM LOAD_IICMS
ENDIF.
ELSE.
IF NOT /pws/zycie003-advalicms IS INITIAL.
t_icmsbs_d2 = t_icmsbs = ( t_ivadu + v_vliirec + v_vlipirec +
v_sisco3 + t_ivdesp + v_vlpisrec + v_vlcofrec ) *
( v_advicms * 100 / /pws/zycie003-advalicms ).
* << Fim da inclusão
ELSE.
t_icmsbs_d2 = t_icmsbs = ( t_ivadu + v_vliirec + v_vlipirec +
v_sisco3 + t_ivdesp + v_vlpisrec + v_vlcofrec ) *
( /pws/zycie003-basred / 100 ).
* >> Início da inclusão: FORM LOAD_IICMS
ENDIF.
* << Fim da inclusão
ENDIF.
IF NOT /pws/zycit062-flag_icms IS INITIAL AND
/pws/zycie100a-icms_dif NE 'X'.
...