CE PLUS - Nota 008236

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Função

Data/Hora da Publicação: 24/03/2009 00:00:00

Data/Hora Última Alteração: 08/09/2010 16:35:35

Descrição da Nota: AJUSTE RATEIO DO SEGURO.

Sintoma

 

O rateio do seguro na fatura está errado quando Icoterm é FOB.

 

Solução

 

Realizado ajuste para utilizar o valor de frete correto para cada item e converter os valores de

frete e mercadoria para a moeda interna para realizar o rateio do seguro corretamente.

Versões Tratadas

7.0

Informações Complementares

 

----------------------------------------------------------------------------------------------------

Nota Número 08236 Data: 24/03/2009 Hora: 16:55:52

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 08236

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00009

Agrupamento              : 00091

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

----------------------------------------------------------------------------------------------------

AJUSTE RATEIO DO SEGURO.

----------------------------------------------------------------------------------------------------

Palavras Chave:

RATEIO - SEGURO - VALOR - MERCADORIA - FRETE - MOEDA - DIFERENTE

/PWS/ZYCI_RATEIO_CUSTO

----------------------------------------------------------------------------------------------------

Objetos da nota:

FUNC /PWS/ZYCI_RATEIO_CUSTO

REPS /PWS/LZYCIGF2F01

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO

 

FUNCTION /pws/zyci_rateio_custo.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

  DATA: BEGIN OF itab_conv OCCURS 0.

  DATA: waers  TYPE /pws/zycit036-waers,

        kursf  TYPE /pws/zycbe033-kursf,

        de     TYPE tcurr-ffact,

        para   TYPE tcurr-ffact.

  DATA: END OF itab_conv.

  DATA: v_kursf  TYPE /pws/zycbe033-kursf,

        v_de     TYPE tcurr-ffact,

        v_para   TYPE tcurr-ffact,

        v_kursf2 TYPE /pws/zycbe033-kursf,

        v_de2    TYPE tcurr-ffact,

        v_para2  TYPE tcurr-ffact,

        v_vltemp1 TYPE /pws/zycit006-vlfre,

        v_vltemp2 TYPE /pws/zycit006-vlfre.

* << Fim da inclusão

...

 

...

              itab_zycit036-vlreal = v_total.

            ENDIF.

            IF v_waers IS INITIAL.

              itab_zycit036-waers_real = /pws/zycbt007-waersb.

            ELSE.

              itab_zycit036-waers_real = v_waers.

            ENDIF.

          ELSE.

            MOVE: 'SEGURO'             TO itab_zycit036-codigo.

            IF /pws/zycit031-inco1_ci = 'FOB'.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

              itab_zycit036-vlreal = v_total * ( v_vlfrete + (

              itab_zycit003-qtd_iten * itab_zycit003-vlreal ) ) /

              ( v_tfrete + v_seg ).

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO

              CLEAR: itab_conv .

              READ TABLE itab_conv WITH KEY

                        waers = itab_zycit003-waers.

              IF sy-subrc NE 0.

                PERFORM converte_moeda

                                USING sy-datum

                                      itab_zycit003-waers

                                      /pws/zycbt007-waersb

                             CHANGING itab_conv-kursf

                                      itab_conv-de

                                      itab_conv-para .

                itab_conv-waers = itab_zycit003-waers.

                APPEND itab_conv.

              ENDIF.

              v_kursf = itab_conv-kursf.

              v_de = itab_conv-de.

              v_para = itab_conv-para .

              CLEAR: itab_zycit036_aux.

              READ TABLE itab_zycit036_aux WITH KEY

                                    codigo = 'FRETEI'

                                    origem = v_ori

                                    ebeln  = itab_zycit036-ebeln

                                    ebelp  = itab_zycit036-ebelp.

              CLEAR: itab_conv .

              READ TABLE itab_conv WITH KEY

                        waers = itab_zycit036_aux-waers_real.

              IF sy-subrc NE 0.

                PERFORM converte_moeda

                                USING sy-datum

                                      itab_zycit036_aux-waers_real

                                      /pws/zycbt007-waersb

                             CHANGING itab_conv-kursf

                                      itab_conv-de

                                      itab_conv-para .

                itab_conv-waers = itab_zycit036_aux-waers_real.

                APPEND itab_conv.

              ENDIF.

              v_kursf2 = itab_conv-kursf.

              v_de2 = itab_conv-de.

              v_para2 = itab_conv-para .

              v_vltemp1 = ( v_tfrete *

                  ( ( v_kursf2 * v_de2 ) / v_para2 ) )

                   + ( v_seg * ( ( v_kursf * v_de ) / v_para ) ).

              v_vlfrete = itab_zycit036_aux-vlreal *

                 ( ( v_kursf2 * v_de2 ) / v_para2 ) .

              itab_zycit036-vlreal = v_total * ( v_vlfrete +

                ( ( itab_zycit003-qtd_iten * itab_zycit003-vlreal )

                  * ( v_kursf * v_de ) / v_para ) ) / v_vltemp1.

* << Fim da inclusão

            ELSEIF /pws/zycit031-inco1_ci = 'CIF' OR

                            /pws/zycit031-inco1_ci = 'C&F'.

              itab_zycit036-vlreal = v_total *

                      ( itab_zycit003-vlreal * itab_zycit003-qtd_iten )

                      / v_seg   .

            ENDIF.

            IF v_waers IS INITIAL.

              itab_zycit036-waers_real = /pws/zycbt007-waersb.

            ELSE.

              itab_zycit036-waers_real = v_waers.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/LZYCIGF2F01

 

...

* >> Início da inclusão:

FORM converte_moeda USING p_data   TYPE sy-datum

                          p_waers  TYPE /pws/zycit036-waers

                          p_waersd TYPE /pws/zycit036-waers

                 CHANGING p_kursf  TYPE /pws/zycbe033-kursf

                          p_de     TYPE tcurr-ffact

                          p_para   TYPE tcurr-ffact.

  DATA: v_kurst     TYPE /pws/zycit000-kurst,

        v_data_conv TYPE sy-datum.

  IF /pws/zycit000-kurst IS INITIAL.

    v_kurst = 'M'.

  ELSE.

    v_kurst = /pws/zycit000-kurst.

  ENDIF.

  IF NOT p_data IS INITIAL.

    v_data_conv = p_data.

  ELSE.

    v_data_conv = sy-datum.

  ENDIF.

  CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'

       EXPORTING

            i_montante                 = '1'

            i_demoeda                  = p_waers

            i_paramoeda                = p_waersd

            i_ctmoeda                  = v_kurst

            i_dtbase                   = v_data_conv

       IMPORTING

            e_txc                      = p_kursf

            e_defator                  = p_de

            e_parafator                = p_para

       EXCEPTIONS

            i_demoeda_nao_encontrado   = 1

            i_paramoeda_nao_encontrado = 2

            i_ctmoeda_nao_encontrado   = 3

            i_dtbase_nao_encontrada    = 4

            taxa_nao_encontrada        = 5

            fator_nao_encontrado       = 6

            i_montante_nao_encontrado  = 7

            OTHERS                     = 8.

ENDFORM.

* << Fim da inclusão