Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DSI
Data/Hora da Publicação: 13/09/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 14:58:11
Descrição da Nota: MULTIPLAS MOEDAS, RATEIO DE DESPESAS, REGIME TRIBUTÁRIO NA DSI
Sintoma
Erro na DSI quando possui itens com moedas diferentes
Erro nas diversas formas de rateio e no regime tributário.
Solução
Ajustar rateio e moedas diferentes na DSI. Propor regime tributário.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04713 Data: 13/09/2007 Hora: 16:17:14
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04713
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00012
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02441 - 00001 - 6.0 - 00025 - TAXA SISCOMEX ENTRA COMO BASE DE ICMS MESMO QUANDO ZERADO EM DESP
02811 - 00002 - 6.0 - 00026 - AJUSTE NO CALCULO DA BASE DE PIS E COFINS PARA MP ANTIGA
03106 - 00003 - 6.0 - 00026 - VALOR DE ICMS DA DSI ESTÁ MENOR QUE O TOTAL DA NOTA FISCAL
04019 - 00004 - 7.0 - 00001 - CORREÇÃO NO CALCULO DA BASE DE CÁLCULO AO ENTRAR DO DETALHE DO IT
----------------------------------------------------------------------------------------------------
MULTIPLAS MOEDAS, RATEIO DE DESPESAS, REGIME TRIBUTÁRIO NA DSI
----------------------------------------------------------------------------------------------------
Palavras Chave:
MULTIPLAS MOEDAS - RATEIO DE DESPESAS - REGIME TRIBUTÁRIO - DSI
MOEDAS DIFERENTES .
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI058F01
REPS /PWS/MZYCI058F02
REPS /PWS/MZYCI058F03
REPS /PWS/MZYCI058F04
REPS /PWS/MZYCI058I01
REPS /PWS/MZYCI058O01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F01
...
FORM load_itax USING p_tipo.
DATA: v_desp_fren LIKE /pws/zycit049-vldp,
t_dif_seg LIKE /pws/zycit100-vlseg.
IF /pws/zycie100a-dttaxbem IS INITIAL.
MOVE itab_it-dttaxbem TO /pws/zycie100a-dttaxbem.
* >> Início da exclusão: FORM LOAD_ITAX
ELSE.
MOVE /pws/zycie100a-dttaxbem TO itab_it-dttaxbem .
* << Fim da exclusão
ENDIF.
...
...
ELSEIF itab_zycit049-proporplan = 'X'.
IF NOT v_tot_plan IS INITIAL.
* >> Início da exclusão: FORM LOAD_ITAX
t_ivdes2 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_ITAX
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0.
IF /pws/zycie085-waersfob NE itab_zycit003-waers.
PERFORM: calc_conv_moeda USING itab_zycit003-waers
/pws/zycie085-waersfob
CHANGING itab_zycit003-netpr.
t_ivdes2 =
( ( itab_zycit003-netpr * itab_zycit003-qtd_iten ) /
v_tot_plan ) * itab_zycit049-vlreal.
ENDIF.
ENDIF.
* << Fim da inclusão
ENDIF.
ELSE.
IF NOT v_tot_real IS INITIAL.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0.
* >> Início da inclusão: FORM LOAD_ITAX
IF /pws/zycie085-waersfob NE itab_zycit003-waers.
PERFORM: calc_conv_moeda USING itab_zycit003-waers
/pws/zycie085-waersfob
CHANGING itab_zycit003-vlreal.
ENDIF.
* << Fim da inclusão
t_ivdes2 = ( itab_zycit003-vlreal *
itab_zycit003-qtd_iten
/ v_tot_real ) * itab_zycit049-vlreal.
ENDIF.
ENDIF.
ENDIF.
...
...
itab_zycit049-baseicms = itab_zycit020-baseicms.
itab_zycit049-baseii = itab_zycit020-baseii.
READ TABLE itab_zycit039 WITH KEY
codigo = itab_zycit020-codigo.
IF sy-subrc EQ 0.
itab_zycit049-divabs = itab_zycit039-divabs.
itab_zycit049-peso = itab_zycit039-peso.
* >> Início da inclusão: FORM LOADING_ALL
itab_zycit049-proporplan = itab_zycit039-proporplan.
* << Fim da inclusão
ENDIF.
ENDIF.
IF NOT itab_zycit049-vldp IS INITIAL.
IF itab_zycit049-waers NE wa_zycbt007-waersb.
PERFORM taxa_converte USING itab_zycit049-waers
/pws/zycie085-dttax
CHANGING s_tax.
itab_zycit049-vlreal = itab_zycit049-vldp * s_tax.
ELSE.
itab_zycit049-vlreal = itab_zycit049-vldp.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F02
...
* >> Início da inclusão: FORM LOAD_INIT
MOVE-CORRESPONDING: itab_it TO /pws/zycie100a,
itab_it TO /pws/zycie003 .
* << Fim da inclusão
PERFORM: load_nimp,
load_blid,
load_frvl,
load_sgvl,
load_cpfc,
load_seto,
load_coll,
calc_itab.
MOVE itab_it[] TO itab_ita[].
ENDFORM.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F03
FORM calc_init USING p_tipo.
* >> Início da inclusão: FORM CALC_INIT
DATA v_vlreal LIKE /pws/zycie003-vlreal.
* << Fim da inclusão
...
...
* >> Início da exclusão: FORM CALC_INIT
PERFORM data_sort.
* << Fim da exclusão
ENDIF.
DESCRIBE TABLE itab_it LINES v_ipt.
* >> Início da inclusão: FORM CALC_INIT
LOOP AT itab_it.
IF /pws/zycie085-waersfob NE itab_it-waers.
PERFORM: calc_conv_moeda USING itab_it-waers
/pws/zycie085-waersfob
CHANGING itab_it-vlfre_fat.
v_tfrefat = v_tfrefat + itab_it-vlfre_fat.
ELSE.
v_tfrefat = v_tfrefat + itab_it-vlfre_fat.
ENDIF.
ENDLOOP.
* << Fim da inclusão
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect.
v_sgtofat = /pws/zycie085-vlseg.
CASE s_inco1_ci.
WHEN 'C&F'.
PERFORM calc_conv_frete CHANGING v_bltofat.
v_tdif = v_tfrefat - v_bltofat.
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect - /pws/zycie093-ternacion.
PERFORM calc_conv_frete CHANGING v_bltofat.
WHEN 'CIF'.
PERFORM: calc_conv_frete CHANGING v_bltofat,
calc_conv_seg CHANGING v_sgtofat.
* >> Início da inclusão: FORM CALC_INIT
IF NOT v_sgtofat IS INITIAL .
PERFORM trata_decimais USING /pws/zycie085-waersseg
v_sgtofat .
ENDIF.
* << Fim da inclusão
v_tdif = v_tfrefat - v_bltofat .
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect - /pws/zycie093-ternacion.
PERFORM calc_conv_frete CHANGING v_bltofat.
ENDCASE.
CLEAR v_ntgew.
LOOP AT itab_zycit003.
v_ntgew = v_ntgew + itab_zycit003-ntgew.
ENDLOOP.
LOOP AT itab_it.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF itab_it-qtd_itend NE '' AND v_dit = 'N'
AND itab_it-vlreald IS INITIAL.
itab_it-vlreald = itab_it-vlreal + ( ( v_tdif *
itab_zycit003-ntgew / v_ntgew ) / itab_zycit003-qtd_iten ).
MODIFY itab_it.
* >> Início da inclusão: FORM CALC_INIT
ENDIF.
IF /pws/zycie085-waersfob NE itab_zycit003-waers.
PERFORM: calc_conv_moeda USING itab_zycit003-waers
/pws/zycie085-waersfob
CHANGING itab_zycit003-vlreal.
PERFORM: calc_conv_moeda USING itab_zycit003-waers
/pws/zycie085-waersfob
CHANGING itab_zycit003-netpr.
* << Fim da inclusão
ENDIF.
v_tot_real = v_tot_real +
( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).
v_tot_plan = v_tot_plan +
( itab_zycit003-qtd_iten * itab_zycit003-netpr ).
ENDLOOP.
LOOP AT itab_it.
IF NOT itab_it-vlreald IS INITIAL.
itab_it-vlreal = itab_it-vlreald.
ENDIF.
CLEAR: v_tvaln, v_qtd_iten.
v_qtd_iten = itab_it-qtd_iten.
v_tntgew = v_tntgew + itab_it-ntgew.
* >> Início da inclusão: FORM CALC_INIT
IF itab_it-waersbem EQ /pws/zycie085-waersfob.
* << Fim da inclusão
v_tmle = v_tmle + ( ( v_qtd_iten * itab_it-vlreal ) *
* >> Início da inclusão: FORM CALC_INIT
itab_it-dttaxbem ).
ELSE.
v_vlreal = itab_it-vlreal.
PERFORM: calc_conv_moeda USING itab_it-waersbem
/pws/zycie085-waersfob
CHANGING v_vlreal.
v_tmle = v_tmle + ( ( v_qtd_iten * v_vlreal ) *
* << Fim da inclusão
itab_it-dttaxbem ).
* >> Início da inclusão: FORM CALC_INIT
ENDIF.
IF /pws/zycie085-waersfob NE itab_it-waers.
PERFORM: calc_conv_moeda USING itab_it-waers
/pws/zycie085-waersfob
CHANGING itab_it-vlfre_fat.
v_tfrefat = v_tfrefat + itab_it-vlfre_fat.
ELSE.
v_tfrefat = v_tfrefat + itab_it-vlfre_fat.
ENDIF.
IF /pws/zycie085-waersfob NE itab_it-waers.
PERFORM: calc_conv_moeda USING itab_it-waers
/pws/zycie085-waersfob
CHANGING itab_it-vlseg_fat.
v_tsegfat = v_tsegfat + itab_it-vlseg_fat.
ELSE.
v_tsegfat = v_tsegfat + itab_it-vlseg_fat.
ENDIF.
* << Fim da inclusão
v_tfrefat = v_tfrefat + itab_it-vlfre_fat.
v_rfrefat = v_rfrefat + ( itab_it-vlfre_fat * itab_it-dttaxbem ).
v_tsegfat = v_tsegfat + itab_it-vlseg_fat.
v_rsegfat = v_rsegfat + ( itab_it-vlseg_fat * itab_it-dttaxbem ).
IF p_tipo = 'I'.
itab_it-seq = sy-tabix.
* >> Início da exclusão: FORM CALC_INIT
MODIFY itab_it INDEX sy-tabix TRANSPORTING seq vlreal.
* << Fim da exclusão
* >> Início da inclusão: FORM CALC_INIT
MODIFY itab_it TRANSPORTING seq vlreal.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM CALC_INIT
IF /pws/zycie085-mdadicao = 'N'.
* << Fim da exclusão
IF itab_it-waersbem EQ /pws/zycie085-waersfob.
v_tval = v_tval + ( v_qtd_iten * itab_it-vlreal ).
ELSE.
PERFORM taxa_converte USING itab_it-waersbem
/pws/zycie085-dttax
CHANGING v_taxa.
v_tvaln = v_tvaln + ( v_qtd_iten * itab_it-vlreal ).
v_tvaln = v_tvaln * v_taxa.
PERFORM taxa_converte USING /pws/zycie085-waersfob
/pws/zycie085-dttax
CHANGING v_taxa.
v_tvaln = v_tvaln / v_taxa.
v_tval = v_tval + v_tvaln.
/pws/zycie085-ukursfob = v_taxa.
* >> Início da exclusão: FORM CALC_INIT
ENDIF.
ELSE.
v_tval = v_tval + ( v_qtd_iten * itab_it-vlreal ).
* << Fim da exclusão
ENDIF.
ENDLOOP.
...
...
CLEAR v_nova.
IF /pws/zycie085-dtuserc IS INITIAL.
/pws/zycie085-dtuserc = sy-datum.
ENDIF.
* >> Início da inclusão: FORM LOAD_IICMS
IF NOT /pws/zycit000-flag_txsisc IS INITIAL.
v_sisco3 = /pws/zycit000-txsis_fix + /pws/zycit000-txsis_0_2 .
ENDIF.
* << Fim da inclusão
LOOP AT itab_zycit049 WHERE baseicms EQ 'X' AND NOT vlreal IS initial.
IF /pws/zycit000-flag_txsisc IS INITIAL OR
wa_it000-cod_sisc NE itab_zycit049-tpdesp.
IF itab_zycit049-divabs EQ 'X'.
t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.
ELSEIF itab_zycit049-peso EQ 'X'.
t_ivdes2 = ( wa_it-ntgew / v_tntgew ) * itab_zycit049-vlreal.
ELSEIF itab_zycit049-proporplan EQ 'X'.
* >> Início da exclusão: FORM LOAD_IICMS
t_ivdes2 = ( v_it_plan / v_tot_plan ) * itab_zycit049-vlreal.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_IICMS
IF NOT v_tot_plan IS INITIAL.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0.
IF /pws/zycie085-waersfob NE itab_zycit003-waers.
PERFORM: calc_conv_moeda USING itab_zycit003-waers
/pws/zycie085-waersfob
CHANGING itab_zycit003-netpr.
ENDIF.
t_ivdes2 = ( ( itab_zycit003-netpr * itab_zycit003-qtd_iten ) /
v_tot_plan ) * itab_zycit049-vlreal.
ENDIF.
ENDIF.
* << Fim da inclusão
ELSE.
IF NOT v_tot_real IS INITIAL.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0.
* >> Início da inclusão: FORM LOAD_IICMS
IF /pws/zycie085-waersfob NE itab_zycit003-waers.
PERFORM: calc_conv_moeda USING itab_zycit003-waers
/pws/zycie085-waersfob
CHANGING itab_zycit003-vlreal.
ENDIF.
* << Fim da inclusão
t_ivdes2 = ( itab_zycit003-vlreal *
itab_zycit003-qtd_iten
/ v_tot_real ) * itab_zycit049-vlreal.
ENDIF.
ENDIF.
IF p_tipo = 'I'.
itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.
MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.
ENDIF.
ENDIF.
t_ivdesp = t_ivdesp + t_ivdes2.
* >> Início da inclusão: FORM LOAD_IICMS
ELSEIF NOT /pws/zycit000-flag_txsisc IS INITIAL .
t_ivdes2 = ( 1 / v_ipt ) * v_sisco3.
* << Fim da inclusão
ENDIF.
ENDLOOP.
CLEAR: v_nr_itens, v_desp. CLEAR: itab_zycit100_temp.
REFRESH itab_zycit100_temp.
MOVE itab_it[] TO itab_zycit100_temp[].
* >> Início da exclusão: FORM LOAD_IICMS
IF itab_it-adicao IS INITIAL AND NOT /pws/zycit000-flag_txsisc IS
INITIAL.
READ TABLE itab_zycit100_temp WITH KEY nrseq = itab_it-nrseq
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF sy-subrc = 0.
PERFORM adic_list.
ENDIF.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_IICMS
MOVE-CORRESPONDING itab_it TO /pws/zycie100a.
* << Fim da inclusão
* >> Início da exclusão: FORM LOAD_IICMS
IF NOT /pws/zycit000-flag_txsisc IS INITIAL.
LOOP AT itab_zycit100_temp WHERE adicao = itab_it-adicao.
v_nr_itens = v_nr_itens + 1.
ENDLOOP.
ENDIF.
IF NOT /pws/zycit000-flag_txsisc IS INITIAL.
READ TABLE itab_zycit049 WITH KEY tpdesp = wa_it000-cod_sisc.
IF sy-subrc = 0.
IF v_sisco3 IS INITIAL.
DESCRIBE TABLE itab_zycit116 LINES v_ipa.
PERFORM fill_taxasiscomex USING v_ipa.
ENDIF.
IF NOT v_sisco3 IS INITIAL AND NOT v_nr_itens IS INITIAL.
v_desp = ( v_sisco3 / v_nr_itens ).
ENDIF.
ENDIF.
ENDIF.
* << Fim da exclusão
...
...
v_vlipirec = t_ipirec.
ENDIF.
CLEAR: v_vlpisrec , v_vlcofrec.
IF '56' CA /pws/zycie100a-codregtripiscofi.
v_vlpisrec = t_pis_calc.
v_vlcofrec = t_cof_calc.
ELSE.
v_vlpisrec = t_pis .
v_vlcofrec = t_cofins.
ENDIF.
* >> Início da inclusão: FORM LOAD_IICMS
IF /pws/zycit000-flag_txsisc IS INITIAL.
* << Fim da inclusão
* >> Início da exclusão: FORM LOAD_IICMS
IF v_nr_itens GT 1.
* << Fim da exclusão
t_icmsbs_d2 = t_icmsbs = ( t_iibas + v_vlipirec + v_vliirec +
t_ivdesp + v_desp + v_vlpisrec + v_vlcofrec ) *
( /pws/zycie003-basred / 100 ).
ELSE.
t_icmsbs_d2 = t_icmsbs = ( t_iibas + v_vlipirec + v_vliirec +
v_sisco3 + t_ivdesp + v_vlpisrec + v_vlcofrec ) *
* >> Início da inclusão: FORM LOAD_IICMS
( /pws/zycie003-basred / 100 ).
ENDIF.
* << Fim da inclusão
* >> Início da exclusão: FORM LOAD_IICMS
( /pws/zycie003-basred / 100 ).
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_IICMS
IF NOT /pws/zycit000-flag_txsisc IS INITIAL.
v_sisco3 = /pws/zycit000-txsis_fix + /pws/zycit000-txsis_0_2 .
* << Fim da inclusão
ENDIF.
...
...
ENDIF.
IF /pws/zycie100a-codregtriipi IS INITIAL.
/pws/zycie100a-codregtriipi = '4'.
* >> Início da inclusão: FORM SET_CODREGTRI
itab_it-codregtriipi = '4'.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM SET_CODREGTRI
IF /pws/zycie100a-codregtripiscofi IS INITIAL.
/pws/zycie100a-codregtripiscofi = '1'.
itab_it-codregtripiscofi = '1'.
ENDIF.
* << Fim da inclusão
ENDFORM.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058I01
...
MODULE calc_vicms INPUT.
* >> Início da inclusão: MODULE CALC_VICMS
MOVE-CORRESPONDING /pws/zycie100a TO itab_it.
* << Fim da inclusão
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058O01
...
* >> Início da exclusão: MODULE LOAD_DATA_BLITEM
IF itab_it-waersbem NE /pws/zycie085-waersfob.
IF NOT /pws/zycie085-waersfob IS INITIAL.
MOVE /pws/zycie085-waersfob TO wa_it-waersbem.
MOVE /pws/zycie085-waersfob TO /pws/zycie100a-waersbem.
ENDIF.
* << Fim da exclusão
PERFORM load_itwa USING /pws/zycie100a-waersbem.
* >> Início da exclusão: MODULE LOAD_DATA_BLITEM
ENDIF.
* << Fim da exclusão
ENDMODULE.
...