CE PLUS - Nota 001946

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Liquidação de Fatura

Data/Hora da Publicação: 17/08/2006 00:00:00

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

Descrição da Nota: LIQUIDAÇÃO COM ARBITRAGEM DE MOEDA

Sintoma

No programa de Liquidação com Arbitragem de Moeda as conversões de moeda pela paridade não estão

sendo obedecidas corretamente. Tanto na exibição quanto no cálculo os valores estão sendo acrescidos

com duas casas depois da virgula.

 

 

Solução

Foram efetuadas novas consistências na Liquidação para que o programa faça as conversões separadas,

ou seja, para quando a moeda do contrato possuir duas casas decimais e quando a fatura não possuir

casas decimais.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

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

Informações Complementares

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

Nota Número 01946 Data: 17/08/2006 Hora: 10:20:25

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

 

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

Nota Número              : 01946

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00024

Agrupamento              : 00127

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

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

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

LIQUIDAÇÃO COM ARBITRAGEM DE MOEDA

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

Palavras Chave:

LIQUIDAÇÃO ARBITRAGEM MOEDA CONVERSÃO MOEDA

 

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

Objetos da nota:

REPS /PWS/MZYCB004F01

REPS /PWS/MZYCB004F02

REPS /PWS/MZYCB004F03

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F01

 

...

 

    ENDIF.

    itab_zycbt005-slpagar =

      itab_zycbt005_s-slpagar - v_vlmedif.

    IF itab_zycbt005-slpagar LT 0.

      CLEAR: v_aux_1, v_aux_2, v_msg_1, v_msg_2.

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

      IF itab_zycbt005-waers EQ itab_zycbt005-waers_c.

* << Fim da inclusão

      MOVE /pws/zycbe006-vlme         TO v_aux_1.

      MOVE itab_zycbt005_s-slpagar TO v_aux_2.

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

        CONDENSE: v_aux_1 NO-GAPS,

                  v_aux_2 NO-GAPS.

        CONCATENATE: text-025 v_aux_1 INTO v_msg_1,

                     'é superior ao saldo     => ' v_aux_2

                                      INTO v_msg_2.

        PERFORM msg_valor_invalido USING v_msg_1 v_msg_2.

        EXIT.

      ELSEIF v_vlmedif < /pws/zycbe006-vlme..

        MOVE /pws/zycbe006-vlme         TO v_aux_1.

        MOVE v_vlmedif                  TO v_aux_2.

* << Fim da inclusão

      CONDENSE: v_aux_1 NO-GAPS,

                v_aux_2 NO-GAPS.

      CONCATENATE: text-025 v_aux_1 INTO v_msg_1,

                   'é superior ao saldo     => ' v_aux_2

                                    INTO v_msg_2.

      PERFORM msg_valor_invalido USING v_msg_1 v_msg_2.

      EXIT.

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

      ENDIF.

* << Fim da inclusão

    ELSE.

      v_ind_mudanca = 'X'.

      itab_zycbt005-vlme        = /pws/zycbe006-vlme.

      IF itab_zycbt005-waers NE /pws/zycbt001-waers.

        PERFORM calc_paridade.

 

...

 

 

 

 

...

 

  IF v_status_s EQ 0.

    EXIT.

  ENDIF.

  PERFORM determina_fator USING v_parafator

                                v_defator.

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

  IF itab_zycbt005-vlme EQ 0 AND v_parid NE 0 AND v_vlme_c NE 0.

* << Fim da inclusão

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

  IF itab_zycbt005-vlme EQ 0 AND v_parid NE 0

  AND v_vlme_c NE 0.

* << Fim da exclusão

    itab_zycbt005-vlme = v_vlme_c /

              ( ( itab_paridade-v_parid / v_defator ) * v_parafator ).

    PERFORM verifica_casas_decimais

      USING

        itab_zycbt005-vlme

        itab_zycbt005-waers

        itab_zycbt005-waers_c

      CHANGING itab_zycbt005-vlme.

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

  ELSEIF itab_zycbt005-vlme NE 0 AND v_parid NE 0

  AND v_vlme_c EQ 0.

* << Fim da exclusão

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

    v_vlme_c =  itab_zycbt005-vlme *

                ( ( itab_paridade-v_parid / v_defator ) * v_parafator ).

    PERFORM verifica_casas_decimais

      USING

        v_vlme_c

        itab_zycbt005-waers_c

        itab_zycbt005-waers

      CHANGING v_vlme_c.

  ELSEIF itab_zycbt005-vlme NE 0 AND v_parid NE 0 AND

          v_vlme_c EQ 0.

* << Fim da inclusão

    v_vlme_c =  itab_zycbt005-vlme *

                ( ( itab_paridade-v_parid / v_defator ) * v_parafator ).

    PERFORM verifica_casas_decimais

      USING

        v_vlme_c

        itab_zycbt005-waers_c

        itab_zycbt005-waers

      CHANGING v_vlme_c.

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

  ELSEIF itab_zycbt005-vlme NE 0 AND v_parid NE 0

  AND v_vlme_c NE 0 AND v_vlme_c NE itab_paridade-v_vlme_c.

* << Fim da exclusão

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

  ELSEIF itab_zycbt005-vlme NE 0 AND v_parid NE 0 AND

         v_vlme_c NE 0 AND v_vlme_c NE itab_paridade-v_vlme_c.

* << Fim da inclusão

    itab_zycbt005-vlme = v_vlme_c /

              ( ( itab_paridade-v_parid / v_defator ) * v_parafator ).

    PERFORM verifica_casas_decimais

      USING

        itab_zycbt005-vlme

        itab_zycbt005-waers

        itab_zycbt005-waers_c

      CHANGING itab_zycbt005-vlme.

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

    v_vlme_c =  itab_zycbt005-vlme *

                ( ( itab_paridade-v_parid / v_defator ) * v_parafator ).

    PERFORM verifica_casas_decimais

      USING

        v_vlme_c

        itab_zycbt005-waers_c

        itab_zycbt005-waers

      CHANGING v_vlme_c.

* << Fim da inclusão

  ELSEIF itab_zycbt005-vlme NE 0 AND v_parid NE 0.

    v_vlme_c =  itab_zycbt005-vlme *

                ( ( itab_paridade-v_parid / v_defator ) * v_parafator ).

    PERFORM verifica_casas_decimais

      USING

 

...

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F02

 

...

 

    SELECT SINGLE kursf FROM bkpf

                 INTO bkpf-kursf

                 WHERE belnr EQ itab_zycbt006-belnr5

                   AND bukrs EQ itab_zycbt006-bukrs

                   AND gjahr EQ v_year.

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

    IF tcurx-currdec = 2.

      v_reais_c = ( itab_zycbt006-vlme * itab_paridade-v_parid ) / 100.

    ELSE.

* << Fim da inclusão

    v_reais_c = ( itab_paridade-v_vlme_c  )

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

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

    ENDIF.

* << Fim da inclusão

    v_reais_c = ( ( bkpf-kursf / v_defator )

                           * v_parafator ) * v_reais_c.

    CLEAR bkpf.

    READ TABLE itab_zycbt209

         WITH KEY nrinvoic = itab_zycbt006-nrinvoic

...

 

...

    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 inclusão: FORM CALCULA_DIFERENCA_REAIS

    IF tcurx-currdec = 2.

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

    ELSE.

* << Fim da inclusão

    v_reais_c = ( itab_zycbt006-vlme * itab_zycbt005-parid )

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

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

    ENDIF.

* << Fim da inclusão

    v_reais_c = ( ( bkpf-kursf / v_defator )

                           * v_parafator ) * v_reais_c.

    CLEAR bkpf.

    CLEAR v_year.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

...