Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DI
Data/Hora da Publicação: 09/10/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 13:50:09
Descrição da Nota: ICMS REDUZIDO NA DI PARA MINAS GERAIS
Sintoma
Para Minas Gerais, os ICMS mesmo quando reduzido deve ser cálculado por dentro com o ICMS integral.
Solução
Foi alterado o prograda da DI para que quando o usuário preencha qualquer valor no campo base da
tabela ZYCIT062, o sistema cálculo o ICMS por dentro reduzido e quando esse campo estiver vazio, o
ICMS por dentro será o integral
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04943 Data: 09/10/2007 Hora: 14:13:16
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04943
Categoria : Melhoria
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00003
Agrupamento : 00016
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
04922 - 00001 - 7.0 - 00003 - DI NAO CALCULA CORRETAMENTE ICMS QUANDO REDUZIDO
----------------------------------------------------------------------------------------------------
ICMS REDUZIDO NA DI PARA MINAS GERAIS
----------------------------------------------------------------------------------------------------
Palavras Chave:
ICMS REDUZIDO NA DI PARA MINAS GERAIS
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI023F03
REPS /PWS/MZYCI016F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI023F03
...
IF NOT /pws/zycie003-advalicms IS INITIAL AND
NOT /pws/zycie100a-icms_dif EQ 'X'.
t_icmsbs_d2 = t_icmsbs = t_icmsbs *
( v_advicms * 100 / /pws/zycie003-advalicms ).
ELSEIF NOT /pws/zycie100a-icms_dif EQ 'X'.
t_icmsbs_d2 = t_icmsbs = t_icmsbs *
( /pws/zycie003-basred / 100 ).
ENDIF.
IF NOT /pws/zycit062-flag_icms IS INITIAL AND
/pws/zycie100a-icms_dif NE 'X'.
* >> Início da inclusão: FORM LOAD_IICMS
if /pws/zycit062-base is initial and
NOT /pws/zycie003-basred EQ '100' .
t_icmsx = ( 1 - ( /pws/zycie003-advalicms / 100 ) ).
else.
* << Fim da inclusão
t_icmsx = ( 1 - v_advicms ) .
* >> Início da inclusão: FORM LOAD_IICMS
endif.
* << Fim da inclusão
t_icms_d2 = t_icms = ( /pws/zycie003-advalicms / 100 ) *
* >> Início da exclusão: FORM LOAD_IICMS
( t_icmsbs / t_icmsx ) .
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_IICMS
( t_icmsbs / t_icmsx ).
* << Fim da inclusão
itab_it-vlicms = t_icms.
IF NOT /pws/zycie003-basred IS INITIAL AND
NOT /pws/zycie003-basred EQ '100'.
t_icmsbs = ( t_icmsbs / t_icmsx ).
ELSE.
t_icmsbs_d2 = t_icmsbs = t_icmsbs + t_icms.
ENDIF.
IF /pws/zycit062-susp_nf EQ 'S'.
IF '56' CA /pws/zycie100a-codregtriicms .
t_icmsbs_d2 = t_icmsbs =
t_icmsbs - t_icms.
ENDIF.
ENDIF.
* >> Início da exclusão: FORM LOAD_IICMS
ELSE.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_IICMS
ELSEif NOT /pws/zycit062-flag_icms IS INITIAL.
* << Fim da inclusão
IF /pws/zycit062-bs_cheia_dif EQ 'X'.
t_icmsx = 1 - ( /pws/zycie003-advalicms / 100 ) .
t_icms_d2 = t_icms = ( /pws/zycie003-advalicms / 100 ) *
( t_icmsbs / t_icmsx ) .
t_icmsbs_d2 = t_icmsbs = t_icmsbs + t_icms.
ELSE.
t_icms_d2 = t_icms = ( /pws/zycie003-advalicms / 100 ) * t_icmsbs.
ENDIF.
IF /pws/zycit062-susp_nf EQ 'S' AND
NOT /pws/zycit062-flag_icms IS INITIAL.
IF '56' CA /pws/zycie100a-codregtriicms .
t_icmsbs_d2 = t_icmsbs =
t_icmsbs - t_icms.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM LOAD_IICMS
else.
t_icms_d2 = t_icms = ( /pws/zycie003-advalicms / 100 ) *
( t_icmsbs ) .
t_icmsbs_d2 = t_icmsbs .
* << Fim da inclusão
ENDIF.
IF '356' CA /pws/zycie100a-codregtriicms .
CLEAR: t_icmsx, t_icms_d2, t_icms.
ENDIF.
itab_it-vlicms = t_icms.
IF p_tipo = 'I' OR p_tipo = 'T' .
s_wicdevi = s_wicdevi + t_icms .
s_wpisreco = s_wpisreco + t_pis .
s_wcofreco = s_wcofreco + t_cofins.
IF NOT /pws/zycie003-nrseqd IS INITIAL OR
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
IF NOT itab_zycit100-vlicms IS INITIAL.
it_zycee007-taxval = itab_zycit036-vlreal.
ELSE.
CLEAR it_zycee007-taxval.
ENDIF.
ENDIF.
IF NOT it_zycee007-taxval IS INITIAL.
it_zycee007-rate = itab_zycit003-advalicms.
ENDIF.
it_zycee007-taxtyp = itab_zycit033-taxtyp.
CASE itab_zycit033-tribicms.
WHEN 1.
PERFORM verifica_montante.
v_montante1 = itab_zycit100-baseicms.
v_base = v_montante1.
v_excbas = ( v_montante1 / v_basred * 100 ) - v_base.
* >> Início da inclusão: FORM ITENS_NFNEW
IF /pws/zycit062-base IS INITIAL AND
v_basred < '100' and
NOT /pws/zycit062-flag_icms IS INITIAL.
IF /pws/zycit062-tred IS INITIAL.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit042-nrseq
ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
v_excbas = v_excbas - ( v_excbas *
( itab_zycit003-advalicms / 100 ) ) .
ENDIF.
ELSE.
* << Fim da inclusão
IF NOT /pws/zycit062-tred IS INITIAL AND
NOT /pws/zycit062-flag_icms IS INITIAL AND
v_basred < 100.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit042-nrseq
ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
v_excbas = v_excbas + ( v_excbas *
( itab_zycit003-advalicms / 100 ) ) .
ENDIF.
*>> Início da inclusão: FORM ITENS_NFNEW
ENDIF.
*<< Fim da inclusão
IF itab_zycit100-icms_dif = 'X'.
IF /pws/zycit062-flag_icms = 'X'.
DATA: v_base2 LIKE j_1bdytax-base.
CLEAR v_base2.
v_base2 = v_base2 + v_base.
ENDIF.
v_base_dif = v_base_dif + v_base2.
ENDIF.
it_zycee007-base = v_base.
it_zycee007-c_excbas = v_excbas .
...
...
v_base_dif = v_base_dif + itab_zycit100-baseicms.
ENDIF.
IF /pws/zycit001-meioemba = 'PS'.
v_base_ps = it_zycee007-c_excbas.
ENDIF.
WHEN 3.
PERFORM verifica_montante.
v_montante1 = itab_zycit100-baseicms.
v_othbas = v_montante1 .
v_excbas = ( v_montante1 / v_basred * 100 ) - v_othbas.
* >> Início da inclusão: FORM ITENS_NFNEW
IF /pws/zycit062-base IS INITIAL AND
v_basred < '100' and
NOT /pws/zycit062-flag_icms IS INITIAL.
IF /pws/zycit062-tred IS INITIAL.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit042-nrseq
ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
v_excbas = v_excbas - ( v_excbas *
( itab_zycit003-advalicms / 100 ) ) .
ENDIF.
ELSE.
* << Fim da inclusão
IF NOT /pws/zycit062-tred IS INITIAL AND
NOT /pws/zycit062-flag_icms IS INITIAL AND
v_basred < 100.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit042-nrseq
ebeln = itab_zycit042-ebeln
ebelp = itab_zycit042-ebelp.
v_excbas = v_excbas + ( v_excbas *
( itab_zycit003-advalicms / 100 ) ).
ENDIF.
* >> Início da inclusão: FORM ITENS_NFNEW
ENDIF.
* << Fim da inclusão
IF itab_zycit100-icms_dif = 'X'.
it_zycee007-othbas = it_zycee007-othbas
- itab_zycit100-vlicms.
v_base_dif = v_base_dif + itab_zycit100-baseicms.
ENDIF.
it_zycee007-othbas = v_othbas.
it_zycee007-c_excbas = v_excbas.
IF /pws/zycit001-meioemba = 'PS'.
v_base_ps = it_zycee007-othbas + it_zycee007-c_excbas.
ENDIF.
...
...
v_total = ( itab_zycit100-baseicms /
( itab_zycit044-menge / itab_zycit044-qtd_item ) * 100 )
/ v_basred.
CASE itab_zycit033-tribicms.
WHEN 1.
it_zycee007-base = v_total.
it_zycee007-base =
( it_zycee007-base * v_basred / 100 ).
IF v_basred NE 100.
it_zycee007-c_excbas = v_total - it_zycee007-base.
* >> Início da inclusão: FORM ITENS_NFRNEW
IF /pws/zycit062-base IS INITIAL AND
v_basred < '100' and
NOT /pws/zycit062-flag_icms IS INITIAL.
IF /pws/zycit062-tred IS INITIAL.
it_zycee007-c_excbas = it_zycee007-c_excbas -
( it_zycee007-c_excbas * ( itab_zycit003-advalicms / 100 ) ).
ENDIF.
ELSE.
* << Fim da inclusão
IF NOT /pws/zycit062-tred IS INITIAL AND
NOT /pws/zycit062-flag_icms IS INITIAL.
it_zycee007-c_excbas = it_zycee007-c_excbas +
( it_zycee007-c_excbas * ( itab_zycit003-advalicms / 100 ) ).
* >> Início da inclusão: FORM ITENS_NFRNEW
ENDIF.
* << Fim da inclusão
ENDIF.
ENDIF.
IF itab_zycit100-icms_dif EQ 'X'.
...
...
ELSE.
it_zycee007-taxval = v_icms.
ENDIF.
v_base = it_zycee007-c_excbas.
WHEN 3.
it_zycee007-othbas = v_total.
IF v_basred NE 100.
it_zycee007-othbas =
( it_zycee007-othbas * v_basred / 100 ).
it_zycee007-c_excbas = v_total - it_zycee007-othbas.
* >> Início da inclusão: FORM ITENS_NFRNEW
IF /pws/zycit062-base IS INITIAL AND
v_basred < '100' and
NOT /pws/zycit062-flag_icms IS INITIAL.
IF /pws/zycit062-tred IS INITIAL.
it_zycee007-c_excbas = it_zycee007-c_excbas -
( it_zycee007-c_excbas * ( itab_zycit003-advalicms / 100 ) ).
ENDIF.
ELSE.
* << Fim da inclusão
IF NOT /pws/zycit062-tred IS INITIAL AND
NOT /pws/zycit062-flag_icms IS INITIAL.
it_zycee007-c_excbas = it_zycee007-c_excbas +
( it_zycee007-c_excbas * ( itab_zycit003-advalicms / 100 ) ).
* >> Início da inclusão: FORM ITENS_NFRNEW
ENDIF.
* << Fim da inclusão
ENDIF.
ENDIF.
IF itab_zycit100-icms_dif EQ 'X'.
...