Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Rotina Mensal
Data/Hora da Publicação: 09/01/2008 00:00:00
Data/Hora Última Alteração: 10/03/2010 17:47:44
Descrição da Nota: ROTINA MENSAL EXPORTAÇÃO - JUROS INCORRETOS - LIQUIDAÇÃO COM ARBITRAGEM
Sintoma
Ao executar rotina mensal de exportação para contrato liquidado totalmente e com arbitragem, aparece
um valor indevido de juros da última parcela.
Solução
Efetuar o cálculo do saldo considerando a paridade quando existe arbitragem na
vinculação/liquidação, para que os juros fiquem zerados e não apareçam nas provisões.
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 05596 Data: 09/01/2008 Hora: 16:25:13
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 05596
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00004
Agrupamento : 00029
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
ROTINA MENSAL EXPORTAÇÃO - JUROS INCORRETOS - LIQUIDAÇÃO COM ARBITRAGEM
----------------------------------------------------------------------------------------------------
Palavras Chave:
ROTINA MENSAL EXPORTAÇÃO- LIQUIDAÇÃO ARBITRAGEM SUBTRAI VLR CONTR E FAT
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/ZYCBR003
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCBR003
...
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
ENDIF.
ENDIF.
CLEAR v_cont.
ENDLOOP.
v_saldo_final = itab_zycbt001-vlme.
LOOP AT itab_zycbt006 WHERE dtpagto < s_dtentr
AND nrseqc = itab_zycbt001-nrseqc.
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
IF itab_zycbt006-waers NE itab_relat-waers.
READ TABLE itab_zycbt005 WITH KEY nrinvoic = itab_zycbt006-nrinvoic
nrparcf = itab_zycbt006-nrparcf
gsberf = itab_zycbt006-gsberf
BINARY SEARCH.
IF sy-subrc = 0 AND itab_zycbt005-vlme_p EQ itab_zycbt006-vlme.
v_saldo_final = v_saldo_final - itab_zycbt005-vlvinc.
ELSEIF sy-subrc = 0 AND
itab_zycbt005-vlme_p NE itab_zycbt006-vlme.
PERFORM determina_fator USING v_parafator
v_defator.
v_saldo_final = v_saldo_final - ( ( ( itab_zycbt005-parid /
v_defator ) * v_parafator ) * itab_zycbt006-vlme ).
ENDIF.
ELSE.
* << Fim da inclusão
v_saldo_final = v_saldo_final - itab_zycbt006-vlme.
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
ENDIF.
* << Fim da inclusão
ENDLOOP.
v_saldo_inicial = itab_zycbt001-vlme.
LOOP AT itab_zycbt006 WHERE dtpagto < itab_relat-dtate AND
nrseqc = itab_zycbt001-nrseqc.
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
IF itab_zycbt006-waers NE itab_relat-waers.
READ TABLE itab_zycbt005 WITH KEY nrinvoic = itab_zycbt006-nrinvoic
nrparcf = itab_zycbt006-nrparcf
gsberf = itab_zycbt006-gsberf
BINARY SEARCH.
IF sy-subrc = 0 AND itab_zycbt005-vlme_p EQ itab_zycbt006-vlme.
v_saldo_inicial = v_saldo_inicial - itab_zycbt005-vlvinc.
ELSEIF sy-subrc = 0 AND
itab_zycbt005-vlme_p NE itab_zycbt006-vlme.
PERFORM determina_fator USING v_parafator
v_defator.
v_saldo_inicial = v_saldo_inicial - ( ( ( itab_zycbt005-parid /
v_defator ) * v_parafator ) * itab_zycbt006-vlme ).
ENDIF.
ELSE.
* << Fim da inclusão
v_saldo_inicial = v_saldo_inicial - itab_zycbt006-vlme.
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
ENDIF.
* << Fim da inclusão
ENDLOOP.
IF s_dtentr > itab_relat-dtate
AND v_deduz EQ 'X'.
v_per_dias = s_dtentr - itab_relat-dtate.
v_juros = ( v_saldo_final * itab_zycbt002j-txjtotal / 100 )
* ( v_per_dias / v_base_dias ).
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
IF not v_juros is initial.
* << Fim da inclusão
itab_relat-vlmej = v_juros.
itab_relat-vlme = v_saldo_final.
itab_relat-dtde = itab_relat-dtate.
itab_relat-dtate = s_dtentr.
PERFORM seleciona_taxa.
itab_relat-txc = v_taxac.
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
ENDIF.
* << Fim da inclusão
ELSEIF s_dtentr > itab_relat-dtate.
v_per_dias = s_dtentr - itab_relat-dtate.
v_juros = ( v_saldo_final * itab_zycbt002j-txjtotal / 100 )
* ( v_per_dias / v_base_dias ).
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
IF not v_juros is initial.
* << Fim da inclusão
itab_relat-vlmej = v_juros.
itab_relat-vlme = v_saldo_final.
itab_relat-dtde = itab_relat-dtate.
itab_relat-dtate = s_dtentr.
PERFORM seleciona_taxa.
itab_relat-txc = v_taxac.
itab_relat-vlmij = itab_relat-vlmej * itab_relat-txc.
PERFORM preenche_itab_relat.
APPEND itab_relat.
* >> Início da inclusão: FORM PROCESSA_PERIODO_JL
ENDIF.
* << Fim da inclusão
ENDIF.
CLEAR v_contr.
ENDFORM.
FORM seleciona_taxa.
DATA:
v_kurst LIKE /pws/zycbt009-kurst.
CONCATENATE '005' itab_zycbt001-tpcontr INTO v_codeven.
CLEAR wa_zycbt011.
SELECT *
UP TO 1 ROWS
...
* >> Início da inclusão:
FORM determina_fator USING e_parafator
e_defator.
SELECT SINGLE ffact tfact
FROM tcurf
INTO (e_parafator,e_defator)
WHERE fcurr = itab_zycbt005-waers
AND tcurr = itab_zycbt005-waers_c.
IF sy-subrc NE 0 OR
e_parafator EQ 0 OR
e_defator EQ 0.
e_parafator = e_defator = 1.
ENDIF.
ENDFORM.
* << Fim da inclusão