CE PLUS - Nota 004140

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

 

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

VALOR DO SEGURO ERRADO

VALOR DO RATEIO DO SEGURO CIF POR ITEM DI IGUAL AO SISCOMEX


ERRO NO RATEIO DE VALOR DE DESPESAS DA DI.

VISUALIZAÇÃO DO RATEIO DE DESPESAS DA DI ESTÁ INCORRETO

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.

...