CE PLUS - Nota 008441

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Fatura Frete Internacional

Data/Hora da Publicação: 26/05/2009 00:00:00

Data/Hora Última Alteração: 22/02/2011 15:53:01

Descrição da Nota: TAXA DE CONVERSÃO DE MOEDA NA FATURA PÓS DI

Sintoma

Ao contabilizar uma fatura de frete ou seguro após a criação da DI o programa lança a taxa de moeda

informada na DI sem verificar se a moeda da fatura é a mesma da DI.

 

 

Solução

Ajustado programa para verificar tratar moedas diferentes da DI em faturas criadas após a DI.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

EM FATURA JPY APÓS A CRIAÇÃO DA DI, OS VALORES ESTÃO DIVIDIDOS POR 100.

Informações Complementares

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

Nota Número 08441 Data: 26/05/2009 Hora: 09:40:29

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

 

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

Nota Número              : 08441

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00009

Agrupamento              : 00099

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

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

02505  - 00001 - 6.0    - 00025  - EM FATURA JPY APÓS A CRIAÇÃO DA DI, OS VALORES ESTÃO DIVIDIDOS PO

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

TAXA DE CONVERSÃO DE MOEDA NA FATURA PÓS DI

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

Palavras Chave:

TAXA - CONVERSÃO - MOEDA - FATURA - PÓS - DI - FRETE - SEGURO

/PWS/SAPMZYCI003

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

Objetos da nota:

REPS /PWS/MZYCI003F01

REPS /PWS/MZYCI003F02

REPS /PWS/MZYCI003X01

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F01

 

...

    v_codeven = '001NS'.

  ENDIF.

  READ TABLE itab_zycit003 INDEX 1.

  SELECT * FROM /pws/zycit003 UP TO 1 ROWS INTO /pws/zycie003

         WHERE nrseq EQ itab_zycit003-nrseq

           AND gsber NE ' '.

  ENDSELECT.

  IF /pws/zycit085 IS INITIAL .

    PERFORM busca_taxa_dia.

  ELSE.

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

    PERFORM busca_taxas.

* << Fim da inclusão

    IF     /pws/zycie006-tpfatura EQ '02' AND

       NOT /pws/zycit085-ukursfre IS INITIAL AND

           /pws/zycie006-frpagto  EQ 'P' AND

           /pws/zycit085-waersfre = /pws/zycie006-waers .

      IF /pws/zycit000-kurst IS INITIAL.

        v_kurst = 'M'.

      ELSE.

        v_kurst = /pws/zycit000-kurst.

      ENDIF.

* >> Início da exclusão: FORM GET_PARAMETERS_F-43_F-02

      SELECT SINGLE ffact tfact                           "#EC PORTABLE

* << Fim da exclusão

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

      IF v_ob08 IS INITIAL.

        SELECT SINGLE ffact tfact                         "#EC PORTABLE

* << Fim da inclusão

             FROM tcurf

             INTO  (v_de, v_para)

             WHERE fcurr  = /pws/zycie006-waers  AND

                   tcurr  = /pws/zycbt007-waersb AND

                   gdatu >= sy-datum AND

                   kurst = v_kurst.

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

      ELSE.

        v_de = v_para = 1.

      ENDIF.

      /pws/zycit085-ukursfre =

* << Fim da inclusão

      v_kursf = ( /pws/zycit085-ukursfre * v_de ) / v_para.

    ELSEIF     /pws/zycie006-tpfatura EQ '02' AND

           NOT /pws/zycit085-ukursfre IS INITIAL AND

               /pws/zycie006-frpagto  EQ 'N' AND

               /pws/zycit085-waersfre = /pws/zycie006-waers.

      IF /pws/zycit000-kurst IS INITIAL.

        v_kurst = 'M'.

      ELSE.

        v_kurst = /pws/zycit000-kurst.

      ENDIF.

* >> Início da exclusão: FORM GET_PARAMETERS_F-43_F-02

      SELECT SINGLE ffact tfact                           "#EC PORTABLE

* << Fim da exclusão

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

      IF v_ob08 IS INITIAL.

       SELECT SINGLE ffact tfact                          "#EC PORTABLE

* << Fim da inclusão

             FROM tcurf

             INTO  (v_de, v_para)

             WHERE fcurr  = /pws/zycie006-waers  AND

                   tcurr  = /pws/zycbt007-waersb AND

                   gdatu >= sy-datum AND

                   kurst = v_kurst.

* >> Início da exclusão: FORM GET_PARAMETERS_F-43_F-02

      v_kursf = ( /pws/zycit085-ukursfob * v_de ) / v_para.

* << Fim da exclusão

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

      ELSE.

        v_de = v_para = 1.

      ENDIF.

      /pws/zycit085-ukursfre =

      v_kursf = ( /pws/zycit085-ukursfre * v_de ) / v_para.

* << Fim da inclusão

    ELSEIF /pws/zycie006-tpfatura = '03' AND NOT

           /pws/zycit085-ukursseg IS INITIAL .

      IF /pws/zycit000-kurst IS INITIAL.

        v_kurst = 'M'.

      ELSE.

        v_kurst = /pws/zycit000-kurst.

      ENDIF.

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

      IF v_ob08 IS INITIAL.

* << Fim da inclusão

      SELECT SINGLE ffact tfact

* >> Início da exclusão: FORM GET_PARAMETERS_F-43_F-02

             FROM tcurf                                   "#EC PORTABLE

* << Fim da exclusão

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

              FROM tcurf                                  "#EC PORTABLE

* << Fim da inclusão

             INTO  (v_de, v_para)

             WHERE fcurr  = /pws/zycie006-waers  AND

                   tcurr  = /pws/zycbt007-waersb AND

                   gdatu >= sy-datum AND

                   kurst = v_kurst.

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

      ELSE.

        v_de = v_para = 1.

      ENDIF.

      /pws/zycit085-ukursseg =

* << Fim da inclusão

      v_kursf = ( /pws/zycit085-ukursseg * v_de ) / v_para.

    ELSEIF /pws/zycie006-tpfatura = '11'.

      PERFORM busca_taxa_dia.

    ENDIF.

  ENDIF.

  REFRESH itab_zycbt013.

  SELECT * FROM /pws/zycbt013 INTO TABLE itab_zycbt013

         WHERE tabela = '/PWS/ZYCIT006'.

  REFRESH: itab_zycbt012.

  SELECT * FROM /pws/zycbt012 INTO TABLE itab_zycbt012

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F02

 

...

* >> Início da inclusão:

FORM busca_taxas.

  CLEAR v_ob08.

  CASE /pws/zycie006-tpfatura.

    WHEN '02'.

      IF /pws/zycie006-waers NE /pws/zycit085-waersfre.

        /pws/zycit085-waersfre = /pws/zycie006-waers .

        PERFORM atualiza_taxa USING /pws/zycit085-waersfre

                                    /pws/zycit085-dttax

                           CHANGING /pws/zycit085-ukursfre.

      ENDIF.

    WHEN '03'.

      IF /pws/zycie006-waers NE /pws/zycit085-waersseg.

        /pws/zycit085-waersseg = /pws/zycie006-waers .

        PERFORM atualiza_taxa USING /pws/zycit085-waersseg

                                    /pws/zycit085-dttax

                           CHANGING /pws/zycit085-ukursseg.

      ENDIF.

  ENDCASE.

ENDFORM.

FORM atualiza_taxa USING    p_waers

                            p_data

                   CHANGING p_taxa.

  DATA:  v_moeda LIKE tcurc-/pws/codmo,

         v_linhas TYPE i,

         v_txc TYPE tcurr-ukurs.

  DATA: itab_zycit174 TYPE /pws/zycit174 OCCURS 0 WITH HEADER LINE.

  CLEAR: p_taxa.

  SELECT SINGLE /pws/codmo FROM tcurc INTO v_moeda WHERE

         waers = p_waers.

  IF sy-subrc EQ 0.

    REFRESH itab_zycit174.

    SELECT * FROM /pws/zycit174 INTO TABLE itab_zycit174 WHERE

           codconver = v_moeda    AND                     "#EC PORTABLE

           vigen_inicio <= p_data AND

           vigen_fim    >= p_data AND

           land1       = t001-land1.

    DESCRIBE TABLE itab_zycit174 LINES v_linhas.

    IF v_linhas EQ 1.

      READ TABLE itab_zycit174 INDEX 1.

      p_taxa = itab_zycit174-txconver.

    ELSEIF v_linhas EQ 0.

      IF NOT p_data IS INITIAL.

        IF p_waers EQ wa_zycbt007-waersb.

          p_taxa = 1.

          EXIT.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

  IF p_taxa IS INITIAL.

    IF /pws/zycit000 IS INITIAL.

      SELECT SINGLE * FROM t001 WHERE bukrs EQ /pws/zycie006-bukrs.

      SELECT SINGLE * FROM /pws/zycit000  WHERE land1 EQ t001-land1.

    ENDIF.

    IF /pws/zycit000-kurst IS INITIAL.

      v_kurst = 'M'.

    ELSE.

      v_kurst = /pws/zycit000-kurst.

    ENDIF.

    CLEAR v_txc.

    CALL FUNCTION '/PWS/ZYCB_MONTANTE_CONVERTE'

         EXPORTING

              i_montante                 = '1'

              i_demoeda                  = /pws/zycie006-waers

              i_paramoeda                = wa_zycbt007-waersb

              i_ctmoeda                  = v_kurst

              i_dtbase                   = p_data

         IMPORTING

              e_txc                      = v_txc

         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.

    IF sy-subrc <> 0.

    ENDIF.

    p_taxa = v_txc.

    v_ob08 = 'X'.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI003X01

 

...

* >> Início da inclusão:

DATA v_ob08 TYPE c.

* << Fim da inclusão

DATA: END OF COMMON PART.