Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DSI
Data/Hora da Publicação: 15/03/2010 00:00:00
Data/Hora Última Alteração: 20/06/2011 12:09:44
Descrição da Nota: (DSI)CASAS DECIMAIS DA MOEDA NO DRAFT E VALOR DO SEGURO PARA CIF
Sintoma
Valor FOB no draft da DSI não está respeitando as casas decimais da moeda.
O valor do seguro da DSI está errado para processo CIF.
Solução
Ajustado o draft para utilizar a moeda na exibição do valor FOB.
Ajustado calculo do seguro para utilizar o total CIF como base de calculo do seguro.
8.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 09956 Data: 15/03/2010 Hora: 11:13:04
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 09956
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 8.0
Pacote : 00002
Agrupamento : 00012
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
04713 - 00001 - 7.0 - 00002 - MULTIPLAS MOEDAS, RATEIO DE DESPESAS, REGIME TRIBUTÁRIO NA DSI
----------------------------------------------------------------------------------------------------
(DSI)CASAS DECIMAIS DA MOEDA NO DRAFT E VALOR DO SEGURO PARA CIF
----------------------------------------------------------------------------------------------------
Palavras Chave:
DSI - VALOR - SEGURO - CIF - MERCADORIA - CASAS - DECIMAIS - MOEDA
/PWS/SAPMZYCI058 - /PWS/ZYCRSTIDS - DRAFT
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI058F01
REPS /PWS/MZYCI058F02
REPS /PWS/MZYCI058F03
REPS /PWS/MZYCI058X01
REPS /PWS/ZYCRSTIDS
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F01
...
s_stvr_aux, s_stvr_aux1,
v_tntgew, v_tval, v_tvaln, v_tval2, v_tval3,
v_tmle, v_tdif, v_tdif_aux,
v_tsegfat, v_tfrefat, v_rsegfat, v_rfrefat,
s_wiicalc, s_wiiredu, s_wiidevi, s_wiireco,
s_wipicalc, s_wipiredu, s_wipidevi, s_wipireco,
s_wicdevi, s_wicreco, s_waddevi, s_wadreco, v_aux_rateio,
v_tot_plan, t_vlii, t_vlipi, t_tot, s_wpisreco, s_wcofreco,
t_vlpis, t_vlcofins, v_tmle_d2, a_iidevi, a_ipidevi.
perform calc_init using 'I'.
* >> Início da inclusão: FORM CALC_ITAB
perform load_sevl.
* << Fim da inclusão
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect.
v_sgtofat = /pws/zycie085-vlseg.
if /pws/zycie085-mdadicao = 'S'.
case s_inco1_ci.
when 'C&F'.
if not /pws/zycie085-dttax is initial.
perform calc_conv_frete changing v_bltofat.
v_tdif = v_tfrefat - v_bltofat.
v_bltofat = /pws/zycie093-prepaid +
...
...
v_tval2 = v_tval2 + itab_zycit049-vldp.
else.
v_tval2 = v_tval2 + itab_zycit049-vldp.
endif.
v_desp_acr = v_desp_acr + itab_zycit049-vldp.
s_fbvr = v_tval2 * /pws/zycie085-ukursfob.
if itab_zycit049-waers eq 'USD'.
endif.
endif.
endloop.
* >> Início da exclusão: FORM CALC_ITAB
perform load_sevl.
* << Fim da exclusão
loop at itab_it.
v_idx = sy-tabix.
if v_idx eq v_ipt and v_ipt ne 1.
itab_it-vlfob = v_tval - v_aux_rateio.
else.
if s_inco1_ci ne 'FOB' and itab_it-vlfre_fat is initial.
if not /pws/zycie085-ukursfre is initial.
if s_inco1_ci = 'C&F'.
if not v_tval3 is initial.
itab_it-vlfob = ( ( itab_it-qtd_iten * itab_it-vlreal )
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F02
...
FORM load_sevl.
DATA: v_fretebl LIKE /pws/zycie093-prepaid.
* >> Início da exclusão: FORM LOAD_SEVL
IF NOT s_fbvr IS INITIAL AND
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_SEVL
IF s_inco1_ci = 'CIF'.
IF NOT v_tcif_fat IS INITIAL AND
NOT /pws/zycie085-per_seg IS INITIAL.
/pws/zycie085-vlseg = v_tcif_fat *
( /pws/zycie085-per_seg / 100 ).
PERFORM retorna_decimais USING /pws/zycie085-waersseg
/pws/zycie085-vlseg.
ENDIF.
ELSEIF NOT s_fbvr IS INITIAL AND
* << Fim da inclusão
NOT s_frvr IS INITIAL AND
NOT /pws/zycie085-ukursseg IS INITIAL AND
NOT /pws/zycie085-per_seg IS INITIAL.
IF s_inco1_ci = 'FOB'.
/pws/zycie085-vlseg = ( ( ( s_fbvr + s_frvr - v_desp_brl ) /
/pws/zycie085-ukursseg ) * /pws/zycie085-per_seg ) / 100.
ELSE.
v_fretebl = /pws/zycie093-prepaid + /pws/zycie093-collect .
* >> Início da inclusão: FORM LOAD_SEVL
PERFORM trata_decimais USING /pws/zycie093-waersfre
v_fretebl .
* << Fim da inclusão
PERFORM: calc_conv_moeda:
USING /pws/zycie093-waersfre /pws/zycbt007-waersb
CHANGING v_fretebl.
* >> Início da exclusão: FORM LOAD_SEVL
PERFORM trata_decimais USING /pws/zycie085-waersseg
v_fretebl .
* << Fim da exclusão
/pws/zycie085-vlseg = ( ( ( s_fbvr + v_fretebl - v_desp_brl ) /
/pws/zycie085-ukursseg ) * /pws/zycie085-per_seg ) / 100.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058F03
...
ENDIF.
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.
* >> Início da inclusão: FORM CALC_INIT
CLEAR v_tcif_fat.
* << Fim da inclusão
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.
...
...
/pws/zycie085-waersfob
CHANGING itab_zycit003-vlreal.
PERFORM: calc_conv_moeda USING itab_zycit003-waers
/pws/zycie085-waersfob
CHANGING itab_zycit003-netpr.
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 ).
* >> Início da inclusão: FORM CALC_INIT
IF s_inco1_ci EQ 'CIF'.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_tcif_fat = v_tcif_fat + ( ( itab_zycit003-vlreal *
itab_it-qtd_itend )
+ itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat ).
ELSE.
v_tcif_fat = v_tcif_fat + ( ( itab_zycit003-vlreal *
itab_it-qtd_iten )
+ itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat ).
ENDIF.
ENDIF.
* << Fim da inclusão
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.
IF itab_it-waersbem EQ /pws/zycie085-waersfob.
v_tmle = v_tmle + ( ( v_qtd_iten * itab_it-vlreal ) *
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI058X01
...
* >> Início da inclusão:
DATA: v_tcif_fat TYPE /pws/zycie085-vlfob.
* << Fim da inclusão
DATA: END OF COMMON PART.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCRSTIDS
...
WRITE: 011 '|', 012 itab_imp-qtd_iten UNIT itab_imp-meins.
PERFORM move_itab_relatorio USING 'I' 2 v_sub
itab_imp-qtd_iten
itab_imp-meins ' '.
WRITE: 038 '|', 039 itab_imp-meins.
PERFORM move_itab_relatorio USING 'I' 3 v_sub
itab_imp-meins ' ' ' '.
WRITE: 045 '|', 046 itab_imp-descr.
PERFORM move_itab_relatorio USING 'I' 4 v_sub
itab_imp-descr ' ' ' '.
* >> Início da inclusão: FORM CABEC_ITS
PERFORM retorna_decimais USING itab_imp-waers
CHANGING itab_imp-vlfobdi.
* << Fim da inclusão
v_vlmerc = itab_imp-vlfobdi.
DATA v_temp(30) TYPE c.
v_temp = v_vlmerc.
* >> Início da exclusão: FORM CABEC_ITS
WRITE: 115 '|', 116 v_vlmerc CURRENCY 'BRL'.
WRITE v_vlmerc TO v_temp CURRENCY /pws/zycit100-waersbem.
* << Fim da exclusão
* >> Início da inclusão: FORM CABEC_ITS
WRITE: 115 '|', 116 v_vlmerc CURRENCY itab_imp-waers.
WRITE v_vlmerc TO v_temp CURRENCY itab_imp-waers.
* << Fim da inclusão
PERFORM move_itab_relatorio USING 'I' 5 v_sub
v_temp ' ' ' '.
WRITE: 148 '|'.
v_totcol = v_totcol + itab_imp-vlfob.
IF v_iten = 5.
EXIT.
ENDIF.
ENDLOOP.
ULINE.
ENDFORM.
...