Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DI
Data/Hora da Publicação: 10/07/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 13:46:30
Descrição da Nota: RATEIO DO SEGURO NA DI DEVE SER PELO VALOR FOB
Sintoma
o rateio do seguro é realizado sempre sobre o valor FOB do embarque, independente do incoterm.
o Siscomex faz apura o valor do seguro, rateando pelo valor FOB.
Solução
Atualizacao rateio do seguro internacional que passou a ser feito pelo valor FOB da mercadoria
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04140 Data: 10/07/2007 Hora: 13:46:14
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04140
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00002
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01227 - 00001 - 6.0 - 00023 - VISUALIZAÇÃO DO RATEIO DE DESPESAS DA DI ESTÁ INCORRETO
01949 - 00002 - 6.0 - 00024 - VALOR DO RATEIO DO SEGURO CIF POR ITEM DI IGUAL AO SISCOMEX
02658 - 00003 - 6.0 - 00025 - DI
02662 - 00004 - 6.0 - 00025 - VALOR DO SEGURO ERRADO
03924 - 00005 - 7.0 - 00001 - ERRO NO RATEIO DE VALOR DE DESPESAS DA DI.
----------------------------------------------------------------------------------------------------
RATEIO DO SEGURO NA DI DEVE SER PELO VALOR FOB
----------------------------------------------------------------------------------------------------
Palavras Chave:
RATEIO - VALOR DO SEGURO - DI - VALOR FOB
SISCOMEX - TRANSMISSÃO.
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCI_TRANSFER_DI
REPS /PWS/MZYCI023F01
REPS /PWS/MZYCI023F03
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCI_TRANSFER_DI
...
CLEAR: v_add, v_obs.
it_compl_di-mandt = sy-mandt.
it_compl_di-nrseqdi = i_nrseqdi.
it_compl_di-tpdi = i_tpdi.
SELECT SINGLE stcd1 FROM lfa1 INTO it_compl_di-cgcagente
WHERE lifnr = wa_093-agente.
it_compl_di-r_vlfre = ( wa_093-prepaid + wa_093-collect -
wa_093-ternacion ) * it_cabecalho_di-ukursfre.
it_compl_di-r_vlseg = it_cabecalho_di-vlseg *
it_cabecalho_di-ukursseg.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSFER_DI
read table it_200 index 1.
if sy-subrc eq 0.
* << Fim da inclusão
LOOP AT it_200.
it_compl_di-complementares = it_200-linha(65).
APPEND it_compl_di.
ENDLOOP.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSFER_DI
else.
APPEND it_compl_di.
endif.
* << Fim da inclusão
LOOP AT it_bl_di.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI023F01
...
t_ivdesp = t_ivdesp + t_ivdes2.
ENDIF.
ENDLOOP.
IF /pws/zycie100a-dttaxbem IS INITIAL.
MOVE itab_it-dttaxbem TO /pws/zycie100a-dttaxbem.
ENDIF.
IF p_tipo NE 'B' OR t_ivmle IS INITIAL OR v_dit = 'N'.
t_ivmle_d2 = t_ivmle = t_vmle * /pws/zycie100a-dttaxbem.
ENDIF.
PERFORM valor_cfr USING p_tipo.
* >> Início da exclusão: FORM LOAD_ITAX
*Não há mais tratamento diferente caso seja última linha.
*chamado 322172 inicio
* IF v_idx EQ v_ipt AND v_ipt NE 1.
*chamado 322172 fim
PERFORM valor_cfr USING p_tipo.
* chamado 321206 inicio
IF /pws/zycit000-rat_seg_fob IS INITIAL.
* chamado 321206 fim
* Chamado 192142 inicio
CASE s_inco1_ci.
WHEN 'C&F'.
v_cfr = t_ivmle + t_ivfre. "/pws/zycie100a-vlfre.
* v_cfr = ( /pws/zycie100a-vlfob * /pws/zycie100a-dttaxbem )
* + t_ivfre.
*chamado 322172 inicio
* WHEN 'CIF'.
* v_cfr = t_ivmle + t_ivfre. "/pws/zycie100a-vlfre.
* v_cfr = ( /pws/zycie100a-vlfob * /pws/zycie100a-dttaxbem )
* + t_ivfre.
*chamado 322172 fim
WHEN 'FOB'.
v_cfr = t_ivmle.
* v_cfr = ( /pws/zycie100a-vlfob * /pws/zycie100a-dttaxbem ).
* Chamado 192142 fim
ENDCASE.
* chamado 321206 inicio
ELSE.
IF s_inco1_ci EQ 'CIF'.
*chamado 322172 inicio
* v_cfr = t_ivmle + t_ivfre.
*chamado 322172 fim
*348596 inicio
ELSEIF s_inco1_ci EQ 'C&F'.
v_cfr = t_ivmle + t_ivfre.
*348596 inicio
ELSE.
v_cfr = t_ivmle.
ENDIF.
ENDIF.
* chamado 321206 inicio
IF s_inco1_ci EQ 'CIF'.
"calcular valor cif vindo da fatura
*387516 inicio
IF NOT itab_it-qtd_itend 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.
v_cif_fat = ( itab_zycit003-vlreal * itab_it-qtd_itend ) +
itab_it-vlfre_fat + itab_it-vlseg_fat .
ENDIF.
ELSE.
*387516 fim
v_cif_fat = ( itab_it-vlreal * itab_it-qtd_iten ) +
*347422 inicio
* itab_it-vlfre_fat .
itab_it-vlfre_fat + itab_it-vlseg_fat .
*347422 fim
ENDIF.
IF NOT v_tcif_fat IS INITIAL.
t_ivseg = itab_it-vlseg = ( v_cif_fat / v_tcif_fat ) *
s_stvr.
v_tot_seg = ( v_cif_fat / v_tcif_fat ) * v_sgtofat.
ENDIF.
ELSE.
IF NOT v_tcfr IS INITIAL.
t_ivseg = itab_it-vlseg = ( v_cfr / ( v_tcfr ) ) * s_stvr.
v_tot_seg = ( v_cfr / ( v_tcfr ) ) * v_sgtofat.
ENDIF.
* chamado 321206 inicio
ENDIF.
*chamado 322172 fim
CASE s_inco1_ci.
WHEN 'CIF'.
*347422 inicio
* t_dif_seg = v_tsegfat - v_sgtofat.
* t_dif_seg = ( v_cfr / ( v_tcfr ) ) * t_dif_seg.
t_dif_seg = /pws/zycie003-vlseg_fat - v_tot_seg .
*347422 fim
ENDCASE.
* << Fim da exclusão
* >> Início da inclusão: FORM LOAD_ITAX
IF s_inco1_ci EQ 'CIF'.
"calcular valor cif vindo da fatura
IF NOT itab_it-qtd_itend 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.
v_cif_fat = ( itab_zycit003-vlreal * itab_it-qtd_itend ) +
itab_it-vlfre_fat + itab_it-vlseg_fat .
ENDIF.
ELSE.
IF NOT v_tcfr IS INITIAL.
t_ivseg = itab_it-vlseg = ( v_cfr / ( v_tcfr ) ) * s_stvr.
v_tot_seg = ( v_cfr / ( v_tcfr ) ) * v_sgtofat.
ENDIF.
ENDIF.
ENDIF.
ELSE.
IF NOT v_tcfr IS INITIAL.
t_ivseg = itab_it-vlseg = ( v_cfr / ( v_tcfr ) ) * s_stvr.
v_tot_seg = ( v_cfr / ( v_tcfr ) ) * v_sgtofat.
ENDIF.
ENDIF.
IF NOT /pws/zycit000-rat_seg_fob IS INITIAL.
CASE s_inco1_ci.
WHEN 'CIF'.
t_dif_seg = /pws/zycie003-vlseg_fat - v_tot_seg .
ENDCASE.
ENDIF.
* << Fim da inclusão
IF v_dit EQ 'N'.
CASE s_inco1_ci.
WHEN 'FOB'.
t_ivadu = t_ivmle + t_ivseg + t_ivdesp + t_ivfre.
...
...
CLEAR: /pws/zycie085-vlfob, s_fbvr, s_frvr_aux, s_frvr_aux1,
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, s_wpisreco, s_wcofreco.
PERFORM calc_init USING 'I'.
* >> Início da exclusão: FORM CALC_ITAB
IF v_dit = 'N'.
* << Fim da exclusão
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect.
v_sgtofat = /pws/zycie085-vlseg.
IF NOT v_sgtofat IS INITIAL .
PERFORM retorna_decimais USING /pws/zycie085-waersseg
v_sgtofat .
ENDIF.
IF /pws/zycie085-mdadicao = 'S'.
CASE s_inco1_ci.
WHEN 'C&F'.
IF NOT /pws/zycie085-ukursfob IS INITIAL.
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.
ELSE.
READ TABLE itab_zycit006 INDEX 1.
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect -
/pws/zycie093-ternacion.
PERFORM calc_conv_frete_ini
USING /pws/zycie093-waersfre
itab_zycit006-waers
CHANGING v_bltofat.
v_tdif = '0'.
ENDIF.
WHEN 'CIF'.
IF NOT /pws/zycie085-ukursfob IS INITIAL.
PERFORM: calc_conv_frete CHANGING v_bltofat,
calc_conv_seg CHANGING v_sgtofat.
IF NOT v_sgtofat IS INITIAL AND
NOT /pws/zycie085-ukursseg IS INITIAL .
PERFORM trata_decimais USING /pws/zycie085-waersseg
v_sgtofat .
ENDIF.
* >> Início da exclusão: FORM CALC_ITAB
v_tdif = v_tfrefat - v_bltofat +
v_tsegfat - v_sgtofat.
* << Fim da exclusão
* >> Início da inclusão: FORM CALC_ITAB
IF NOT /pws/zycie085-ukursfob IS INITIAL.
PERFORM: calc_conv_frete CHANGING v_bltofat,
calc_conv_seg CHANGING v_sgtofat.
IF NOT v_sgtofat IS INITIAL AND
NOT /pws/zycie085-ukursseg IS INITIAL .
PERFORM trata_decimais USING /pws/zycie085-waersseg
v_sgtofat .
ENDIF.
IF NOT /pws/zycit000-rat_seg_fob IS INITIAL.
v_tdif = v_tfrefat - v_bltofat +
v_tsegfat - v_sgtofat.
ELSE.
v_tdif = v_tfrefat - v_bltofat .
ENDIF.
* << Fim da inclusão
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect - /pws/zycie093-ternacion.
PERFORM calc_conv_frete CHANGING v_bltofat.
ELSE.
READ TABLE itab_zycit006 INDEX 1.
READ TABLE itab_zycit006 INDEX 1.
v_bltofat = /pws/zycie093-prepaid +
/pws/zycie093-collect -
/pws/zycie093-ternacion.
PERFORM calc_conv_frete_ini
USING /pws/zycie093-waersfre
itab_zycit006-waers
CHANGING v_bltofat.
v_tdif = '0'.
ENDIF.
ENDCASE.
PERFORM load_fbvl.
* >> Início da exclusão: FORM CALC_ITAB
IF itab_zycit003-qtd_itend IS INITIAL.
/pws/zycie085-vlfob = v_tval2 = v_tval = v_tval + v_tdif.
ELSE.
/pws/zycie085-vlfob = v_tval2 = v_tval.
ENDIF.
s_fbvr = v_tmle.
* << Fim da exclusão
IF v_tval2 LT '0'.
IF v_msgfre NE 'N'.
MESSAGE i015 WITH text-119 text-125.
LEAVE PROGRAM.
ELSE.
MESSAGE i015 WITH text-119 text-125.
LEAVE PROGRAM.
ENDIF.
ENDIF.
ELSE.
IF /pws/zycie085-vlfob IS INITIAL.
/pws/zycie085-vlfob = v_tval2.
ENDIF.
/pws/zycie085-vlfobr = s_fbvr = v_tmle.
ENDIF.
* >> Início da exclusão: FORM CALC_ITAB
ENDIF.
PERFORM load_fbvl.
* << Fim da exclusão
CLEAR: v_desp_acr, v_desp_brl.
PERFORM load_sevl.
PERFORM soma_despesa_acr.
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.
...
...
/pws/zycie093-gewei_l = /pws/zycie093-gewei_b.
ENDIF.
CLEAR itab_zycit100_temp.
REFRESH itab_zycit100_temp.
LOOP AT itab_it.
MOVE-CORRESPONDING itab_it TO itab_zycit100_temp.
APPEND itab_zycit100_temp.
READ TABLE itab_inco WITH KEY ebeln = itab_it-ebeln.
IF sy-subrc EQ 0.
itab_it-inco_item = itab_inco-inco1.
* >> Início da inclusão: FORM FILL_ITABIT
ENDIF.
IF NOT itab_it-vlfre_fat IS INITIAL.
itab_it-vlreal = itab_it-vlreal +
( itab_it-vlfre_fat / itab_it-qtd_iten ).
CLEAR itab_it-vlfre_fat.
ENDIF.
IF NOT itab_it-vlseg_fat IS INITIAL.
itab_it-vlreal = itab_it-vlreal +
( itab_it-vlseg_fat / itab_it-qtd_iten ).
CLEAR itab_it-vlseg_fat.
* << Fim da inclusão
ENDIF.
MODIFY itab_it.
ENDLOOP.
ENDFORM.
FORM fill_it115b.
CLEAR: itab_zycit115b[].
REFRESH: itab_zycit115b[].
LOOP AT itab_zycit115 WHERE
nrseq = wa_it-nrseq AND
ebeln = wa_it-ebeln AND
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI023F03
...
v_tcif_fat = v_tcif_fat + ( ( itab_zycit003-vlreal *
itab_it-qtd_iten )
+ itab_it-vlfre_fat + itab_it-vlseg_fat ).
ENDIF.
ENDLOOP.
CASE s_inco1_ci.
WHEN 'CIF'.
v_tdif = v_tfrefat - v_bltofat +
v_tsegfat - v_sgtofat.
ENDCASE.
* >> Início da exclusão: FORM CALC_INIT
IF p_tipo NE 'A'.
READ TABLE itab_zycit003 INDEX 1.
v_totcif = v_tval.
v_tval3 = v_tval2 = v_tval + v_tdif ." + v_tfrefat.
IF itab_zycit003-qtd_itend IS INITIAL.
v_tval3 = v_tval2 = v_tval + v_tdif ." + v_tfrefat.
ELSE.
v_tval3 = v_tval2 = v_tval.
ENDIF.
v_totcif = v_tval.
v_tval3 = v_tval2 = v_tval + v_tdif ." + v_tfrefat.
ELSE.
IF s_inco1_ci = 'C&F' .
IF v_tfrefat IS INITIAL.
v_tval3 = v_tval2 = v_tval .
ELSE.
v_tval3 = v_tval2 = v_tval + v_tfrefat.
ENDIF.
ELSE.
v_tval3 = v_tval2 = v_tval .
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FORM CALC_INIT
READ TABLE itab_zycit003 INDEX 1.
IF sy-subrc EQ 0 .
v_totcif = v_tval.
IF itab_zycit003-qtd_itend IS INITIAL.
/pws/zycie085-vlfob = v_tval3 = v_tval2 = v_tval =
v_tval + v_tdif ." + v_tfrefat.
ELSE.
/pws/zycie085-vlfob = v_tval3 = v_tval2 = v_tval.
ENDIF.
ENDIF.
* << Fim da inclusão
ENDFORM. " calc_init
...
...
INSERT INTO /pws/zycit255 VALUES itab_zycit255.
COMMIT WORK.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM valor_cfr USING p_tipo.
CLEAR: v_tcfr.
s_fbvr_s_d = /pws/zycie085-vlfob * /pws/zycie085-ukursfob.
IF /pws/zycit000-rat_seg_fob IS INITIAL.
* >> Início da exclusão: FORM VALOR_CFR
CASE s_inco1_ci.
WHEN 'C&F'.
v_tcfr = s_fbvr_s_d + s_frvr.
WHEN 'CIF'.
v_tcfr = s_fbvr_s_d + s_frvr .
v_tcfr = v_tcfr - ( ( v_tsegfat - v_sgtofat ) *
/pws/zycie085-ukursfob ).
WHEN 'FOB'.
v_tcfr = s_fbvr_s_d.
ENDCASE.
ELSE.
IF s_inco1_ci EQ 'CIF'
OR s_inco1_ci EQ 'C&F'.
v_tcfr = s_fbvr_s_d + s_frvr .
ELSE.
v_tcfr = s_fbvr_s_d.
ENDIF.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FORM VALOR_CFR
IF s_inco1_ci EQ 'CIF'.
v_tcfr = /pws/zycie085-vlfob + v_sgtofat.
v_cfr = t_vmle .
ELSE.
v_tcfr = /pws/zycie085-vlfob .
v_cfr = t_vmle .
ENDIF.
ELSE.
IF s_inco1_ci EQ 'CIF'.
v_tcfr = /pws/zycie085-vlfob + v_sgtofat.
v_cfr = t_vmle .
ELSEIF s_inco1_ci EQ 'C&F'.
v_tcfr = s_fbvr_s_d .
v_cfr = t_ivmle + t_ivfre.
ELSE.
v_tcfr = s_fbvr_s_d.
v_cfr = t_ivmle.
ENDIF.
ENDIF.
* << Fim da inclusão
ENDFORM. " valor_cfr
FORM reclassificacao_ia.
DATA: BEGIN OF itab_zycit006_aux OCCURS 0 .
INCLUDE STRUCTURE /pws/zycit006.
DATA: hkont LIKE bsis-hkont.
DATA: END OF itab_zycit006_aux.
CLEAR: itab_matuse_aux, itab_matuse_aux2, itab_bsis, itab_bsis_aux,
itab_di.
...