CE PLUS - Nota 010020

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Liquidação de Fatura

Data/Hora da Publicação: 29/03/2010 00:00:00

Data/Hora Última Alteração: 22/02/2011 11:56:11

Descrição da Nota: LIQUIDAÇÃO - ARBITRAGEM - CONTA ARB INCORRETA PT-NÃO FAZ ARREDONDAMENTO

Sintoma

Ao efetuar uma liquidação de arbitragem de contrato de PT, na última F-30, lançamento em BRL, o

sistema lançando na mesma conta do contrato a partida de arbitragem(ARB), ou seja, a conta esta

incorreta. Erro também ao lançar o valor convertido, não arredondando. Ex.: 1.333,33 x 1,50000 =

2.000,00, mas o sistema esta lançando 1.999,99, neste exemplo.

 

 

Solução

Ao buscar a conta ARB, considerar todo o tipo do contrato, não só a primeira letra. Ao efetuar a

conversão de valor, fazer o cálculo de exponencial depois, para que primeiro arredonde corretamente

e depois trate as casas decimais.

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

VINCULAÇÃO LIQ. AUT. / LIQUIDAÇÃO - CÂMBIO PRONTO - ARBITRAGEM

DESVINCULAÇÃO LIQUIDAÇÃO ATUALIZAÇÃO INCORRETA 001-DTVINCUL E 005-BELNR

LIQUIDAÇÃO - VALORES INCORRETOS QUANDO FOR MOEDA JPY

DA-LIQUIDAÇÃO E VINCULAÇÃO LIQ. AUTOMÁT - NORMAL/ARBITRAGEM/PERFORMANCE

LIQUIDAÇÃO - ERRO RE-LANÇAMENTO ARBITRAGEM DEVIDO CAMPO 005-BELNR

LIQUIDAÇÃO DE FATURA

LIQUIDAÇÃO - PROBLEMAS COM FATOR DE CONVERSÃO DE MOEDAS

LIQUIDAÇÃO - DATA PAGAMENTO NO EXTERIOR

Informações Complementares

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

Nota Número 10020 Data: 29/03/2010 Hora: 15:50:21

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

 

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

Nota Número              : 10020

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00003

Agrupamento              : 00015

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

Referência às notas relacionadas:

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

 

01596  - 00001 - 6.0    - 00023  - LIQUIDAÇÃO - PROBLEMAS COM FATOR DE CONVERSÃO DE MOEDAS

03478  - 00002 - 7.0    - 00001  - VINCULAÇÃO LIQ. AUT. / LIQUIDAÇÃO - CÂMBIO PRONTO - ARBITRAGEM

03776  - 00003 - 7.0    - 00001  - LIQUIDAÇÃO - DATA PAGAMENTO NO EXTERIOR

06766  - 00004 - 7.0    - 00005  - LIQUIDAÇÃO DE FATURA

07760  - 00005 - 7.0    - 00007  - DA-LIQUIDAÇÃO E VINCULAÇÃO LIQ. AUTOMÁT - NORMAL/ARBITRAGEM/PERFO

08981  - 00006 - 7.0    - 00010  - LIQUIDAÇÃO - VALORES INCORRETOS QUANDO FOR MOEDA JPY

09062  - 00007 - 8.0    - 00001  - DESVINCULAÇÃO LIQUIDAÇÃO ATUALIZAÇÃO INCORRETA 001-DTVINCUL E 005

09652  - 00008 - 8.0    - 00002  - LIQUIDAÇÃO - ERRO RE-LANÇAMENTO ARBITRAGEM DEVIDO CAMPO 005-BELNR

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

LIQUIDAÇÃO - ARBITRAGEM - CONTA ARB INCORRETA PT-NÃO FAZ ARREDONDAMENTO

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

Palavras Chave:

LIQUIDAÇÃO - ARBITRAGEM CONTA ARB INCORRETA PT NÃO FAZ ARREDONDAMENTO

F-30

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

Objetos da nota:

REPS /PWS/MZYCB004F01

REPS /PWS/MZYCB004F02

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F01

 

...

                                v_defator.

  select *

         up to 1 rows

         from tcurx

         where currkey = itab_zycbt005-waers.

  endselect.

  if sy-subrc <> 0.

    tcurx-currdec = 2.

  endif.

  itab_zycbe033-wrbtr = itab_zycbt006-vlme *

* >> Início da exclusão: FORM FILL_DATE6_F30_ACE

            ( ( itab_zycbt005-parid / v_defator ) * v_parafator ) /

* << Fim da exclusão

* >> Início da inclusão: FORM FILL_DATE6_F30_ACE

            ( ( itab_zycbt005-parid / v_defator ) * v_parafator ).

  itab_zycbe033-wrbtr = itab_zycbe033-wrbtr /

* << Fim da inclusão

      ( 10 ** ( tcurx-currdec - 2 ) ).

  perform verifica_casas_decimais

    using

      itab_zycbe033-wrbtr

      itab_zycbt005-waers_c

      itab_zycbt005-waers

    changing itab_zycbe033-wrbtr.

  itab_zycbe033-c_gsber = itab_zycbt006-gsberf.

  itab_zycbe033-d_gsber = itab_zycbt006-gsberf.

  if /pws/zycbe001-tpcontr(1) = 'D' and

...

 

...

                                v_defator.

  select *

         up to 1 rows

         from tcurx

         where currkey = itab_zycbt005-waers.

  endselect.

  if sy-subrc <> 0.

    tcurx-currdec = 2.

  endif.

  itab_zycbt036-residuo = itab_zycbt006-vlme *

* >> Início da exclusão: FORM FILL_DATE6_F30_ACE

            ( ( itab_zycbt005-parid / v_defator ) * v_parafator ) /

* << Fim da exclusão

* >> Início da inclusão: FORM FILL_DATE6_F30_ACE

            ( ( itab_zycbt005-parid / v_defator ) * v_parafator ).

  itab_zycbt036-residuo = itab_zycbt036-residuo /

* << Fim da inclusão

      ( 10 ** ( tcurx-currdec - 2 ) ).

  perform verifica_casas_decimais

    using

      itab_zycbt036-residuo

      itab_zycbt005-waers_c

      itab_zycbt005-waers

    changing itab_zycbt036-residuo.

  clear v_year.

  call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

       exporting

...

 

...

      read table itab_zyglt316 index 1.

    endif.

  else.

    concatenate 'E' v_prazo_arb

      into v_codaux_arb separated by space .

    call function '/PWS/ZYGL_READ_ACCOUNT_NUMBER'

         exporting

              bukrs           = /pws/zycbt001-bukrs

              ktosl           = 'ARB'

              codaux1         = v_codaux_arb

* >> Início da exclusão: FORM GET_PARAMETERS_002_ARB2

              codaux2         = /pws/zycbt001-tpcontr(01)

* << Fim da exclusão

* >> Início da inclusão: FORM GET_PARAMETERS_002_ARB2

              codaux2         = /pws/zycbt001-tpcontr

* << Fim da inclusão

         tables

              account         = itab_zyglt316

         exceptions

              key_not_found   = 1

              rules_not_found = 2

              others          = 3.

    if sy-subrc eq 0.

      read table itab_zyglt316 index 1.

    endif.

  endif.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F02

 

...

                             and nrparc   = itab_zycbt006-nrparc

                             and dtincl   = itab_zycbt006-dtincl

                             and nrinvoic = itab_zycbt006-nrinvoic

                             and gsberf   = itab_zycbt006-gsberf

                             and dtvincul = itab_zycbt006-dtvincul

                             and dtvencto = itab_zycbt006-dtvencto

                             and dtpagto  = itab_zycbt006-dtpagto

                             and dtpagext = itab_zycbt006-dtpagext

                             and nrparcf  = itab_zycbt006-nrparcf.

      v_vlme_sl = itab_zycbt006-vlme * itab_zycbt005_ant-parid.

* >> Início da exclusão: FORM ATUALIZA_TABELAS_TRANSP2

      if itab_zycbt005_ant-waers_c = 'JPY' or

         itab_zycbt005_ant-waers   = 'JPY'.

        v_vlme_sl = ( itab_zycbt006-vlme * itab_zycbt005_ant-parid )

                  * ( 10 ** ( 0 - 2 ) ).

* << Fim da exclusão

* >> Início da inclusão: FORM ATUALIZA_TABELAS_TRANSP2

      clear tcurx-currdec.

      select single * from tcurx

                      where ( currkey = itab_zycbt005_ant-waers_c

                         or   currkey = itab_zycbt005_ant-waers )

                        and currdec = 0.

      if sy-subrc <> 0.

        tcurx-currdec = 2.

* << Fim da inclusão

      endif.

* >> Início da inclusão: FORM ATUALIZA_TABELAS_TRANSP2

      v_vlme_sl = v_vlme_sl * ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da inclusão

      itab_zycbt006-v_vldif_arb =  itab_zycbt006-v_vldif *

                                                itab_zycbt005_ant-parid.

* >> Início da exclusão: FORM ATUALIZA_TABELAS_TRANSP2

      if itab_zycbt005_ant-waers_c = 'JPY' or

         itab_zycbt005_ant-waers   = 'JPY'.

        itab_zycbt006-v_vldif_arb = ( itab_zycbt006-v_vldif *

                                              itab_zycbt005_ant-parid )

                  * ( 10 ** ( 0 - 2 ) ).

      endif.

* << Fim da exclusão

* >> Início da inclusão: FORM ATUALIZA_TABELAS_TRANSP2

      itab_zycbt006-v_vldif_arb =

            itab_zycbt006-v_vldif_arb * ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da inclusão

      v_slpagar001 = v_slpagar001 + itab_zycbt006-v_vldif_arb.

      modify itab_zycbt006.

      update /pws/zycbt005 set slpagar  = slpagar + v_vlme_sl

                         belnr    = itab_zycbt005_ant-belnr

                         dtbelnr  = itab_zycbt005_ant-dtbelnr

                   where nrseqc   = itab_zycbt006-nrseqc

                     and tpdesp   = itab_zycbt006-tpdesp

                     and nrparc   = itab_zycbt006-nrparc

                     and dtincl   = itab_zycbt006-dtincl

                     and nrinvoic = itab_zycbt006-nrinvoic

...

 

...

                   into bkpf-kursf

                   where belnr eq itab_zycbt209-belnr_f28

                     and bukrs eq itab_zycbt006-bukrs

                     and gjahr eq v_year.

    endif.

    v_reais_f = ( itab_zycbt006-vlme - itab_zycbt084-result_saldo )

                / ( 10 ** ( tcurx-currdec - 2 ) ).

    v_reais_f = ( ( bkpf-kursf / v_defator )

                           * v_parafator ) * v_reais_f.

  else.

* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS_ESTORN

    v_reais_c = ( itab_paridade-v_vlme_c * itab_paridade-v_parid )

                / ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da exclusão

* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_ESTORN

    v_reais_c = ( itab_paridade-v_vlme_c * itab_paridade-v_parid ).

    v_reais_c = v_reais_c / ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da inclusão

    v_reais_c = ( ( v_txcbrl_cont / v_defator )

                           * v_parafator ) * v_reais_c.

    clear itab_zycbt084.

    read table itab_zycbt084 with key

                                    nrseqc   = itab_zycbt006-nrseqc

                                    nrinvoic = itab_zycbt006-nrinvoic

                                    nrparc   = itab_zycbt006-nrparc

                                    nrparcf  = itab_zycbt006-nrparcf

                                    tpdesp   = itab_zycbt006-tpdesp

                                    gsberf   = itab_zycbt006-gsberf

...

 

...

              empresa_nao_encontrada = 3

              period_in_not_valid    = 4

              period_not_assigned    = 5

              version_undefined      = 6

              others                 = 7.

    select single kursf from bkpf

                 into bkpf-kursf

                 where belnr eq itab_zycbt006-belnr_d

                   and bukrs eq itab_zycbt006-bukrs

                   and gjahr eq v_year.

* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS

    if /pws/zycbe001-waers =  'JPY'.

      v_reais_c = ( itab_zycbt006-vlme * itab_zycbt005-parid )

                  * ( 10 ** ( 0 - 2 ) ).

* << Fim da exclusão

* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS

    v_reais_c = itab_zycbt006-vlme * itab_zycbt005-parid.

    clear tcurx-currdec.

    select single * from tcurx

                    where currkey = /pws/zycbe001-waers.

    if sy-subrc <> 0.

      tcurx-currdec = 2.

    endif.

    if tcurx-currdec = 0.

      v_reais_c = v_reais_c * ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da inclusão

    else.

* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS

      v_reais_c = ( itab_zycbt006-vlme * itab_zycbt005-parid )

                  / ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da exclusão

* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS

      v_reais_c = v_reais_c / ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da inclusão

    endif.

    v_reais_c = ( ( bkpf-kursf / v_defator )

...

 

...

                   into bkpf-kursf

                   where belnr eq itab_zycbt006-belnr_f28

                     and bukrs eq itab_zycbt006-bukrs

                     and gjahr eq v_year.

      v_reais_f = ( itab_zycbt006-vlme - itab_zycbt084-result_saldo )

                  / ( 10 ** ( tcurx-currdec - 2 ) ).

      v_reais_f = ( ( bkpf-kursf / v_defator )

                             * v_parafator ) * v_reais_f.

    endif.

  else.

* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS

    v_reais_c = ( itab_zycbt006-vlme * itab_zycbt005-parid )

                / ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da exclusão

* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS

    v_reais_c = ( itab_zycbt006-vlme * itab_zycbt005-parid ).

    v_reais_c = v_reais_c / ( 10 ** ( tcurx-currdec - 2 ) ).

* << Fim da inclusão

    v_reais_c = ( ( v_txcbrl_cont / v_defator )

                           * v_parafator ) * v_reais_c.

    clear itab_zycbt084.

    read table itab_zycbt084 with key

                                    nrseqc   = itab_zycbt006-nrseqc

                                    nrinvoic = itab_zycbt006-nrinvoic

                                    nrparc   = itab_zycbt006-nrparc

                                    nrparcf  = itab_zycbt006-nrparcf

                                    tpdesp   = itab_zycbt006-tpdesp

                                    gsberf   = itab_zycbt006-gsberf

...

 

...

    if sy-subrc eq 0.

      read table itab_zyglt316 index 1.

    endif.

  else.

    concatenate 'E' v_prazo into v_cod_param separated by space .

    call function '/PWS/ZYGL_READ_ACCOUNT_NUMBER'

         exporting

              bukrs           = itab_zycbt006-bukrs

              ktosl           = 'CPT'

              codaux1         = v_cod_param

* >> Início da exclusão: FORM BUSCA_CONTA

              codaux2         = itab_zycbt006-tpcontr(01)

* << Fim da exclusão

* >> Início da inclusão: FORM BUSCA_CONTA

              codaux2         = itab_zycbt006-tpcontr

* << Fim da inclusão

         tables

              account         = itab_zyglt316

         exceptions

              key_not_found   = 1

              rules_not_found = 2

              others          = 3.

    if sy-subrc eq 0.

      read table itab_zyglt316 index 1.

    endif.

  endif.

...

 

...

      read table itab_zyglt316 index 1.

    endif.

  else.

    concatenate 'E' v_prazo_arb

      into v_codaux_arb separated by space .

    call function '/PWS/ZYGL_READ_ACCOUNT_NUMBER'

         exporting

              bukrs           = /pws/zycbt001-bukrs

              ktosl           = 'ARB'

              codaux1         = v_codaux_arb

* >> Início da exclusão: FORM GET_PARAMETERS_002_ARB

              codaux2         = /pws/zycbt001-tpcontr(01)

* << Fim da exclusão

* >> Início da inclusão: FORM GET_PARAMETERS_002_ARB

              codaux2         = /pws/zycbt001-tpcontr

* << Fim da inclusão

         tables

              account         = itab_zyglt316

         exceptions

              key_not_found   = 1

              rules_not_found = 2

              others          = 3.

    if sy-subrc eq 0.

      read table itab_zyglt316 index 1.

    endif.

  endif.

...