Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal Remessa
Data/Hora da Publicação: 22/08/2007 00:00:00
Data/Hora Última Alteração: 23/02/2011 09:14:38
Descrição da Nota: NOTA FISCAL REMESSA - VALORES ERRADOS DE IPI E ICMS
Sintoma
Sistema, está se perdendo quando temos ICMS diferido ou redução de base na nota fiscal remessa.
Não está levando o valor do icms.
Solução
Foi ajustado o Pw.CE para considerar somente os valores corretos
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04488 Data: 22/08/2007 Hora: 15:30:19
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04488
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00013
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03397 - 00001 - 7.0 - 00001 - QUANDO ICMS É DIFERIDO, NÃO PERMITE FAZER A BASE CHEIA.
04014 - 00002 - 7.0 - 00001 - QUANDO O PROCESSO TEM BASE DE ICMS REDUZIDA, VALOR FICA INCORRETO
----------------------------------------------------------------------------------------------------
NOTA FISCAL REMESSA - VALORES ERRADOS DE IPI E ICMS
----------------------------------------------------------------------------------------------------
Palavras Chave:
NOTA FISCAL REMESSA BASE DE CALCULO
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI016F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
READ TABLE itab_zycit398 WITH KEY tributos = 'PIS'.
IF sy-subrc EQ 0.
it_zycee007-leipis = itab_zycit398-leipis.
ENDIF.
READ TABLE itab_zycit398 WITH KEY tributos = 'COFINS'.
IF sy-subrc EQ 0.
it_zycee007-leicofins = itab_zycit398-leicofins.
ENDIF.
CASE itab_zycit033-tribipi.
WHEN 1.
* >> Início da exclusão: FORM ITENS_NFRNEW
it_zycee007-base2 = ( v_total - v_icms - v_ipi - v_outras_ic ).
it_zycee007-p_excbas = v_base -
( v_total - v_icms - v_ipi - v_outras_ic ).
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
if not itab_zycit100-Baseipi is initial.
it_zycee007-base2 = itab_zycit100-Baseipi /
itab_zycit044-menge * itab_zycit044-qtd_item .
endif.
if itab_zycit003-basred is initial.
itab_zycit003-basred = 100.
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 +
( ( v_icms * 100 ) / itab_zycit003-basred ).
endif.
endif.
* << Fim da inclusão
CLEAR it_zycee007-taxval2.
WHEN 2.
it_zycee007-p_excbas = v_base.
CLEAR it_zycee007-taxval2.
WHEN 3.
* >> Início da inclusão: FORM ITENS_NFRNEW
if not itab_zycit100-Baseipi is initial.
* << Fim da inclusão
* >> Início da exclusão: FORM ITENS_NFRNEW
it_zycee007-othbas2 = ( v_total - v_icms - v_ipi - v_outras_ic ).
it_zycee007-p_excbas = v_base -
( v_total - v_icms - v_ipi - v_outras_ic ).
* << Fim da exclusão
* >> Início da inclusão: FORM ITENS_NFRNEW
it_zycee007-othbas2 = itab_zycit100-Baseipi /
itab_zycit044-menge * itab_zycit044-qtd_item .
endif.
if itab_zycit003-basred is initial.
itab_zycit003-basred = 100.
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 +
( ( v_icms * 100 ) / itab_zycit003-basred ).
endif.
endif.
* << Fim da inclusão
CLEAR it_zycee007-taxval2.
ENDCASE.
REFRESH itab_zyglt100.
PERFORM verifica_exit USING 'D'
'/PWS/SAPMZYCI016'
'NFR001'.
CLEAR itab_zyglt100 .
READ TABLE itab_zyglt100 WITH KEY zexit = 'NFR001'.
IF itab_zyglt100-zexit_ativa NE 'X'.
ELSE.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO
...
PERFORM cria_despesas(/pws/zycir035) TABLES it_desp
itab_zycit036_aux.
LOOP AT itab_zycit036_aux WHERE origem = 'NF'.
DELETE itab_zycit036_aux.
ENDLOOP.
LOOP AT itab_zycit036_aux WHERE origem = 'DI'
OR origem = 'FAT'.
itab_zycit036_aux-origem = 'NF'.
itab_zycit036_aux-nrseqori = /pws/zycit085-nrseqdi.
itab_zycit036_aux-usernamec = sy-uname.
itab_zycit036_aux-dtuserc = sy-datum.
itab_zycit036_aux-hruserc = sy-uzeit.
IF /pws/zycit085-mdadicao EQ 'N'.
IF itab_zycit036_aux-waers NE /pws/zycit085-waersfob.
PERFORM converter_moeda(/pws/sapmzyci010) USING
itab_zycit036_aux-netpr "VL atual
itab_zycit036_aux-waers "ME atual
/pws/zycit085-waersfob
CHANGING itab_zycit036_aux-netpr.
itab_zycit036_aux-waers = /pws/zycit085-waersfob.
ENDIF.
ENDIF.
MODIFY itab_zycit036_aux.
ENDLOOP.
LOOP AT itab_zycit036_aux.
MOVE itab_zycit036_aux TO itab_zycit036.
APPEND itab_zycit036.
ENDLOOP.
ELSE.
SELECT SINGLE land1 FROM t001 INTO t001-land1
WHERE bukrs EQ /pws/zycbt007-bukrs.
SELECT SINGLE * FROM /pws/zycit031
WHERE inco1 = /pws/zycit001-inco1 AND
land1 EQ t001-land1.
SELECT SINGLE land1 FROM t001 INTO t001-land1
WHERE bukrs EQ /pws/zycbt007-bukrs.
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs EQ v_bukrs.
READ TABLE itab_zycit100a INDEX 1.
SELECT SINGLE * FROM /pws/zycit085
WHERE nrseqdi = itab_zycit100a-nrseqdi.
SELECT SINGLE * FROM /pws/zycit093
WHERE nrseqce = /pws/zycit085-nrbl.
DESCRIBE TABLE itab_zycit003 LINES v_line_rateio.
FREE it_desp.
LOOP AT itab_zycit003
WHERE servico IS initial.
v_line_ac = sy-tabix.
* >> início da inclusão
clear it_desp.
* >> fim da inclusão
READ TABLE itab_zycit100a WITH KEY nrseq = itab_zycit003-nrseq
ebeln = itab_zycit003-ebeln
ebelp = itab_zycit003-ebelp.
IF v_line_ac <> v_line_rateio.
IF NOT /pws/zycit085-ukursseg IS INITIAL AND
NOT itab_zycit100a-vlseg IS INITIAL.
v_vlseg = itab_zycit100a-vlseg * v_taxa_usd
/ /pws/zycit085-ukursseg.
MOVE v_vlseg TO it_desp-vlseg.
" Transforma valor da moeda de acordo com casas decimais
SELECT SINGLE * FROM tcurx
WHERE currkey = /pws/zycit085-waersseg.
IF sy-subrc <> 0.
tcurx-currdec = 2.
ENDIF.
it_desp-vlseg = it_desp-vlseg * ( 10 ** ( tcurx-currdec - 2 ) ).
v_ac_seg = v_ac_seg + it_desp-vlseg.
ENDIF.
IF NOT /pws/zycit085-ukursfre IS INITIAL AND
NOT itab_zycit100a-vlfre IS INITIAL.
SELECT SINGLE * FROM /pws/zycit093
WHERE nrseqce = /pws/zycit085-nrbl.
v_fre_tp = itab_zycit100a-vlfre.
v_fre_tp = v_fre_tp / /pws/zycit085-ukursfre.
it_desp-vlfre = v_fre_tp.
" Transforma valor da moeda de acordo com casas decimais
SELECT SINGLE * FROM tcurx
WHERE currkey = /pws/zycit093-waersfre.
IF sy-subrc <> 0.
tcurx-currdec = 2.
ENDIF.
it_desp-vlfre = it_desp-vlfre * ( 10 ** ( tcurx-currdec - 2 ) ).
v_ac_fre = v_ac_fre + it_desp-vlfre.
ENDIF.
vl_imp = itab_zycit100a-vlii.
vltot_ii = vltot_ii + vl_imp.
vl_ii = vl_ii + itab_zycit100a-vlii.
vl_imp = itab_zycit100a-vlipi.
vltot_ipi = vltot_ipi + vl_imp.
vl_ipi = vl_ipi + itab_zycit100a-vlipi.
IF itab_zycit100a-icms_dif IS INITIAL. "ICMS Diferido não
IF ( /pws/zycit085-tpdi EQ 'N' AND
NOT '356' CA itab_zycit100a-codregtriicms ) OR
( /pws/zycit085-tpdi EQ 'S' AND
NOT '356' CA itab_zycit100a-codregtri ).
vl_imp = itab_zycit100a-vlicms. "entra no custo
vltot_icms = vltot_icms + vl_imp.
vl_icms = vl_icms + itab_zycit100a-vlicms.
* >> início da inclusão
MOVE: itab_zycit100a-vlicms TO it_desp-vlicms.
* >> fim da inclusão
ENDIF.
ENDIF.
vl_imp = itab_zycit100a-vlpis.
vltot_pis = vltot_pis + vl_imp.
vl_pis = vl_pis + itab_zycit100a-vlpis.
vl_imp = itab_zycit100a-vlcofins.
vltot_cofins = vltot_cofins + vl_imp.
vl_cofins = vl_cofins + itab_zycit100a-vlcofins.
ELSE.
IF sy-subrc = 0.
IF NOT /pws/zycit085-vlseg IS INITIAL.
it_desp-vlseg = /pws/zycit085-vlseg - v_ac_seg.
ENDIF.
SELECT SINGLE * FROM /pws/zycit093
WHERE nrseqce = /pws/zycit085-nrbl.
IF NOT /pws/zycit093-vlfre IS INITIAL.
it_desp-vlfre = /pws/zycit093-vlfre - v_ac_fre.
ENDIF.
ENDIF.
vl_ii = vl_ii + itab_zycit100a-vlii .
vl_ipi = vl_ipi + itab_zycit100a-vlipi .
vl_pis = vl_pis + itab_zycit100a-vlpis .
vl_cofins = vl_cofins + itab_zycit100a-vlcofins.
itab_zycit100a-vlii = vl_ii - vltot_ii .
itab_zycit100a-vlipi = vl_ipi - vltot_ipi .
itab_zycit100a-vlpis = vl_pis - vltot_pis .
itab_zycit100a-vlcofins = vl_cofins - vltot_cofins.
IF itab_zycit100a-icms_dif IS INITIAL. "ICMS Diferido não
IF NOT ( /pws/zycit001-tpdecl = 'DSI' AND
/pws/zycit001-regime = '09' ).
IF ( /pws/zycit085-tpdi EQ 'N' AND
NOT '356' CA itab_zycit100a-codregtriicms ) OR
( /pws/zycit085-tpdi EQ 'S' AND
NOT '356' CA itab_zycit100a-codregtri ).
vl_icms = vl_icms + itab_zycit100a-vlicms."entra no custo
itab_zycit100a-vlicms = vl_icms - vltot_icms.
* >> início da inclusão
MOVE: itab_zycit100a-vlicms TO it_desp-vlicms.
* >>Fim da inclusão
ENDIF.
ENDIF.
ENDIF.
v_ac_fre = 0.
v_ac_seg = 0.
ENDIF.
MOVE: itab_zycit003-nrseq TO it_desp-nrseq,
itab_zycit003-ebeln TO it_desp-ebeln,
itab_zycit003-ebelp TO it_desp-ebelp,
itab_zycit003-netpr TO it_desp-netpr,
itab_zycit003-waers TO it_desp-waers,
itab_zycit003-menge TO it_desp-menge,
itab_zycit003-qtd_iten TO it_desp-qtd_iten,
/pws/zycit085-bukrs TO it_desp-bukrs,
itab_zycit003-werks TO it_desp-werks,
/pws/zycit001-inco1 TO it_desp-inco1,
/pws/zycit001-embarca TO it_desp-embarca,
itab_zycit003-advalii TO it_desp-advalii,
itab_zycit003-advalipi TO it_desp-advalipi,
itab_zycit003-aliqicms TO it_desp-aliqicms,
itab_zycit100a-vlii TO it_desp-vlii,
itab_zycit100a-vlipi TO it_desp-vlipi,
itab_zycit100a-vlpis TO it_desp-vlpis ,
itab_zycit100a-vlcofins TO it_desp-vlcofins.
IF it_desp-advalii IS INITIAL.
CLEAR it_desp-vlii.
ENDIF.
* >> início da Exclusão
IF itab_zycit100a-icms_dif IS INITIAL.
MOVE: itab_zycit100a-vlicms TO it_desp-vlicms.
ENDIF.
* << Fim da Exclusão
APPEND it_desp.
ENDLOOP.
PERFORM cria_despesas(/pws/zycir035) TABLES it_desp
itab_zycit036.