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.
6.0
Produto:
Nota
Descrição
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'
...