Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Liquidação de Contrato
Data/Hora da Publicação: 22/06/2007 00:00:00
Data/Hora Última Alteração: 18/02/2011 16:59:28
Descrição da Nota: LIQUIDAÇÃO DE ACC COM PRÉ - CÁLCULO DE JUROS
Sintoma
Ao salvar uma liquidação de contrato pelo programa de liquidação de ACC com pré, o programa está
invertendo as formas de cálculo (múltiplo/escalonado).
Solução
O programa foi ajustado e passou a efetuar os cálculos corretos para as formas de cálculo de juros.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04026 Data: 22/06/2007 Hora: 17:16:31
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04026
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00002
Agrupamento : 00001
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
03390 - 00001 - 7.0 - 00001 - LIQ. ACC COM PRÉ - CÁLCULO DE JUROS
----------------------------------------------------------------------------------------------------
LIQUIDAÇÃO DE ACC COM PRÉ - CÁLCULO DE JUROS
----------------------------------------------------------------------------------------------------
Palavras Chave:
LIQUIDAÇÃO ACC PRÉ PT CÁLCULO JUROS
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB014F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB014F01
...
dtinicio TYPE /pws/zycbt002-dtinicio,
dtfinal TYPE /pws/zycbt002-dtfinal,
txjfixa TYPE /pws/zycbt002-txjfixa,
txjvar TYPE /pws/zycbt002-txjvar,
txjtotal TYPE /pws/zycbt002-txjtotal,
tptxjur TYPE /pws/zycbt002-tptxjur,
END OF t_s_zycbt002,
t_t_zycbt002 TYPE SORTED TABLE OF t_s_zycbt002
WITH UNIQUE KEY nrseqc dtinicio.
CONSTANTS
* >> Início da exclusão: FORM CALCULOS_ITAB_ZYCBT062
c_multiplo TYPE /pws/zycbt001-tpcalcjur VALUE space.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULOS_ITAB_ZYCBT062
c_escalonado TYPE /pws/zycbt001-tpcalcjur VALUE 'E'.
* << Fim da inclusão
DATA:
itab_zycbt001 TYPE t_t_zycbt001,
itab_zycbt002 TYPE t_t_zycbt002,
itab_zycbt010 TYPE t_t_zycbt010,
v_nrdias_desemb TYPE i,
v_nrdias_juros TYPE i,
v_nrdias TYPE i.
FIELD-SYMBOLS:
<fs_zycbt001> LIKE LINE OF itab_zycbt001,
<fs_zycbt002> LIKE LINE OF itab_zycbt002,
...
...
SELECT nrseqc nrdias dtinicio dtfinal txjfixa txjvar txjtotal tptxjur
FROM /pws/zycbt002 INTO TABLE itab_zycbt002
FOR ALL ENTRIES IN itab_zycbt062
WHERE nrseqc = itab_zycbt062-nrseq_c AND tpparc = 'J'.
LOOP AT itab_zycbt062 ASSIGNING <fs_zycbt062>.
READ TABLE itab_zycbt001 WITH KEY nrseqc = <fs_zycbt062>-nrseq_c
ASSIGNING <fs_zycbt001>.
CHECK <fs_zycbt001> IS ASSIGNED.
v_nrdias_desemb = /pws/zycbe060-dtdesemb - <fs_zycbt062>-dtinicio.
CHECK v_nrdias_desemb > 0.
* >> Início da exclusão: FORM CALCULOS_ITAB_ZYCBT062
IF <fs_zycbt001>-tpcalcjur = c_multiplo.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULOS_ITAB_ZYCBT062
IF <fs_zycbt001>-tpcalcjur = c_escalonado.
* << Fim da inclusão
CLEAR v_nrdias_juros.
LOOP AT itab_zycbt002 ASSIGNING <fs_zycbt002>
WHERE nrseqc = <fs_zycbt062>-nrseq_c.
CHECK v_nrdias_juros < v_nrdias_desemb.
v_nrdias_juros = v_nrdias_juros + <fs_zycbt002>-nrdias.
ENDLOOP.
CHECK sy-subrc = 0.
<fs_zycbt062>-txjfixa = <fs_zycbt002>-txjfixa.
<fs_zycbt062>-txjvar = <fs_zycbt002>-txjvar.
<fs_zycbt062>-txjtotal = <fs_zycbt002>-txjtotal.
...
ELSE.
CLEAR v_nrdias_juros.
LOOP AT itab_zycbt002 ASSIGNING <fs_zycbt002>
WHERE nrseqc = <fs_zycbt062>-nrseq_c.
READ TABLE itab_zycbt010
WITH TABLE KEY tptxjur = <fs_zycbt002>-tptxjur
ASSIGNING <fs_zycbt010>.
CHECK <fs_zycbt010> IS ASSIGNED.
v_nrdias_juros = v_nrdias_juros + <fs_zycbt002>-nrdias.
IF v_nrdias_juros < v_nrdias_desemb.
v_nrdias = <fs_zycbt002>-nrdias.
ELSE.
v_nrdias = /pws/zycbe060-dtdesemb - <fs_zycbt002>-dtinicio.
ENDIF.
<fs_zycbt062>-vlmej = <fs_zycbt062>-vlmej + <fs_zycbt062>-vlme *
<fs_zycbt002>-txjtotal / 100 / <fs_zycbt010>-nrdias *
v_nrdias.
UNASSIGN <fs_zycbt010>.
IF v_nrdias_juros > v_nrdias_desemb.
EXIT.
ENDIF.
ENDLOOP.
* >> Início da inclusão: FORM CALCULOS_ITAB_ZYCBT062
describe table itab_zycbt002 lines v_lin.
read table itab_zycbt002 assigning <fs_zycbt002> index v_lin.
<fs_zycbt062>-txjfixa = <fs_zycbt002>-txjfixa.
<fs_zycbt062>-txjvar = <fs_zycbt002>-txjvar.
<fs_zycbt062>-txjtotal = <fs_zycbt002>-txjtotal.
<fs_zycbt062>-tptxjur = <fs_zycbt002>-tptxjur.
* << Fim da inclusão
UNASSIGN <fs_zycbt002>.
ENDIF.
IF v_nrdias_desemb > v_nrdias_juros.
<fs_zycbt062>-nrdias = v_nrdias_juros.
ELSE.
<fs_zycbt062>-nrdias = v_nrdias_desemb.
ENDIF.
<fs_zycbt062>-qtddias = <fs_zycbt062>-nrdias.
UNASSIGN <fs_zycbt001>.
ENDLOOP.
ENDFORM.