Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Captação
Data/Hora da Publicação: 07/11/2008 00:00:00
Data/Hora Última Alteração: 22/02/2011 13:07:49
Descrição da Nota: PROBLEMA NO PROGRAMA DE CAPTAÇÃO ( /PWS/ZYCB001 )
Sintoma
Programa não trazia o calculo correto dos juros, os registros da pasta de juros sumiam quando
alterava a data da liquidação e não recalculava as datas quando alterava o numero de dias
Solução
calculo correto, não apagar registros e fazer o recalculo dos dias das datas
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 07549 Data: 07/11/2008 Hora: 16:33:41
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 07549
Categoria : Melhoria
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00007
Agrupamento : 00072
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01391 - 00004 - 6.0 - 00023 - CAPTAÇÃO PRORROGAÇÃO DE JUROS - FLAG ALTERA TAXA.
02253 - 00003 - 6.0 - 00025 - CAPTAÇÃO - CALCULO DE JUROS DA PARCELA
03094 - 00002 - 6.0 - 00026 - CAPTAÇÃO - CALCULO JUROS DE CONTRATO NA PARCELA VIGENTE COM SLPAG
03744 - 00001 - 7.0 - 00001 - ROTINA MENSAL EXPORTAÇÃO E CAPTAÇÃO - CÁLCULO JUROS
----------------------------------------------------------------------------------------------------
PROBLEMA NO PROGRAMA DE CAPTAÇÃO ( /PWS/ZYCB001 )
----------------------------------------------------------------------------------------------------
Palavras Chave:
PROBLEMA NO PROGRAMA DE CAPTAÇÃO ( /PWS/ZYCB001 ) - CALCULO DOS JUROS,
REGISTRO SOME QUANDO MUDA DTA.LIQ, RECALCULAR DATAS
----------------------------------------------------------------------------------------------------
Objetos da nota:
DYNP /PWS/SAPMZYCB001 0101
REPS /PWS/MZYCB001F01
REPS /PWS/MZYCB001I01
REPT /PWS/SAPMZYCB001
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/SAPMZYCB001 0101
MODIFICAR LÓGICA DE PROCESSAMENTO TELA 0101
...
FIELD /pws/zycbe001-fdtjuros MODULE fdtlanc_consistency2 ON INPUT.
FIELD /pws/zycbe001-fdtlanc MODULE fdtlanc_consistency.
CHAIN.
FIELD: /pws/zycbe001-ftxt,
/pws/zycbe001-txtinf.
MODULE ftxt_consistency.
ENDCHAIN.
FIELD /pws/zycbe001-ffrcalc MODULE juros_dp.
CHAIN.
FIELD: /pws/zycbe001-dtentr, /pws/zycbe001-dtliquid.
* >> Início da exclusão:
MODULE limpa_zycbt002 ON CHAIN-REQUEST.
* << Fim da exclusão
ENDCHAIN.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB001F01
...
itab_zycbt002-tpparc = 'J'.
itab_zycbt002-nrcontr = /pws/zycbe001-nrcontr .
itab_zycbt002-tpcontr = /pws/zycbe001-tpcontr .
itab_zycbt002-bconegoc = /pws/zycbe001-bconegoc.
itab_zycbt002-bcofinan = /pws/zycbe001-bcofinan.
itab_zycbt002-dtinicio = /pws/zycbe002-dtinicio.
itab_zycbt002-dtfinal = /pws/zycbe002-dtfinal.
itab_zycbt002-nrdias = /pws/zycbe002-nrdias.
itab_zycbt002-nrdiasj = /pws/zycbe002-nrdiasj.
APPEND itab_zycbt002.
* >> Início da inclusão: FORM UPDATE_ITAB_ZYCBT002
else.
itab_zycbt002-nrdias = /pws/zycbe002-nrdias.
itab_zycbt002-dtfinal =
( /pws/zycbe002-dtinicio + /pws/zycbe002-nrdias ).
/pws/zycbe002-dtfinal = itab_zycbt002-dtfinal.
if itab_zycbt002-dtfinal > /PWS/ZYCBE001-DTLIQUID .
MESSAGE i015 WITH text-497.
else.
modify itab_zycbt002 TRANSPORTING nrdias
dtfinal
WHERE NRPARC = /pws/zycbe002-NRPARC.
endif.
* << Fim da inclusão
ENDIF.
/pws/zycbe002-txjtotal = /pws/zycbe002-txjfixa + /pws/zycbe002-txjvar.
/pws/zycbe002-tptxjur = /pws/zycbe002-tptxjur .
IF NOT itab_zycbt003 IS INITIAL.
READ TABLE itab_zycbt003 WITH KEY dtpror = itab_zycbt002-dtfinal.
IF sy-subrc EQ 0.
IF itab_zycbt003-falttx EQ ' '
AND /pws/zycbe002-txjfixa NE itab_zycbt002-txjfixa.
MESSAGE i301.
/pws/zycbe002-txjfixa = itab_zycbt002-txjfixa.
...
...
v_erro_bi = 'X'.
ENDLOOP.
ENDIF.
ENDFORM.
FORM calcj_pre_cambiais.
DATA : v_liquid LIKE /pws/zycbt006-vlme,
v_dtcalc LIKE /pws/zycbt006-dtpagext,
v_dias LIKE /pws/zycbt002-nrdias,
v_nrdias LIKE /pws/zycbt010-nrdias,
v_slpagar LIKE /pws/zycbt006-vlme,
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
v_slpgant LIKE /pws/zycbt006-vlme,
v_vlme LIKE /pws/zycbt002-vlme,
v_vlmetot LIKE /pws/zycbt002-vlme,
v_vlfinal LIKE /pws/zycbt006-vlme,
v_prim LIKE /pws/zycbt006-dtpagext,
* << Fim da inclusão
v_nrparcj_aux LIKE /pws/zycbt002-nrparc.
* >> Início da exclusão: FORM CALCJ_PRE_CAMBIAIS
CLEAR: itab_zycbt010, v_slpagar.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
CLEAR: itab_zycbt010,
v_slpagar,
v_vlme,
v_vlmetot,
v_vlfinal,
v_prim.
* << Fim da inclusão
READ TABLE itab_zycbt010 WITH KEY tptxjur = itab_zycbt002-tptxjur.
v_nrdias = itab_zycbt010-nrdias.
SELECT SINGLE * FROM /pws/zycbt006
WHERE nrseqc EQ /pws/zycbe001-nrseqc.
CLEAR : v_liquid, v_dias.
IF sy-subrc EQ 0.
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
IF itab_zycbt002j_aux[] IS INITIAL.
itab_zycbt002j_aux[] = itab_zycbt002[].
ENDIF.
* << Fim da inclusão
SORT itab_zycbt006 BY dtpagto ASCENDING.
* >> Início da exclusão: FORM CALCJ_PRE_CAMBIAIS
LOOP AT itab_zycbt006 WHERE dtpagext > itab_zycbt002-dtinicio AND
dtpagext <= itab_zycbt002-dtfinal.
v_liquid = v_liquid + itab_zycbt006-vljur.
v_dtcalc = itab_zycbt006-dtpagto.
ENDLOOP.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
CLEAR v_prim.
* << Fim da inclusão
LOOP AT itab_zycbt006 WHERE dtpagext <= itab_zycbt002-dtfinal.
SELECT SINGLE parid
FROM /pws/zycbt005
INTO itab_zycbt005-parid
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
AND nrparcf = itab_zycbt006-nrparcf
AND gsberf = itab_zycbt006-gsberf
AND dtvincul = itab_zycbt006-dtvincul
AND dtvencto = itab_zycbt006-dtvencto.
v_slpagar = v_slpagar + ( itab_zycbt006-vlme *
itab_zycbt005-parid ).
* >> Início da exclusão: FORM CALCJ_PRE_CAMBIAIS
ENDLOOP.
* << Fim da exclusão
v_slpagar = /pws/zycbe001-vlme - v_slpagar.
* >> Início da exclusão: FORM CALCJ_PRE_CAMBIAIS
IF itab_zycbt002j_aux[] IS INITIAL.
itab_zycbt002j_aux[] = itab_zycbt002[].
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
v_vlfinal = itab_zycbt006-vlme .
v_dtcalc = itab_zycbt006-dtpagto.
* << Fim da inclusão
IF v_dtcalc EQ '00000000'.
v_dtcalc = itab_zycbt002-dtinicio.
ENDIF.
* >> Início da exclusão: FORM CALCJ_PRE_CAMBIAIS
IF v_dtcalc < itab_zycbt002-dtfinal.
v_dias = itab_zycbt002-dtfinal - v_dtcalc.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
IF NOT v_dtcalc IS INITIAL AND
v_prim IS INITIAL.
v_dias = v_dtcalc - itab_zycbt002-dtinicio.
v_prim = v_dtcalc.
IF itab_zycbt002-txjtotal > 0 AND
v_dias > 0.
v_vlme = /pws/zycbe001-vlme *
itab_zycbt002-txjtotal
/ 100 * v_dias / v_nrdias.
v_slpgant = v_slpagar.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM CALCJ_PRE_CAMBIAIS
CLEAR itab_zycbt002-vlme.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
ELSE.
v_dias = v_dtcalc - v_prim.
* << Fim da inclusão
IF itab_zycbt002-txjtotal > 0 AND
v_dias > 0.
* >> Início da exclusão: FORM CALCJ_PRE_CAMBIAIS
itab_zycbt002-vlme = v_slpagar *
* << Fim da exclusão
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
v_vlme = v_slpgant *
* << Fim da inclusão
itab_zycbt002-txjtotal
/ 100 * v_dias / v_nrdias.
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
else.
clear v_vlmetot.
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM CALCJ_PRE_CAMBIAIS
itab_zycbt002-vlme = itab_zycbt002-vlme + v_liquid.
* << Fim da exclusão
* >> Início da inclusão: FORM CALCJ_PRE_CAMBIAIS
v_vlmetot = v_vlmetot + v_vlme .
ENDLOOP.
v_slpgant = v_slpgant - v_vlfinal .
v_dias = itab_zycbt002-dtfinal - v_dtcalc .
v_vlme = v_slpgant *
itab_zycbt002-txjtotal
/ 100 * v_dias / v_nrdias.
v_vlmetot = v_vlmetot + v_vlme .
itab_zycbt002-vlme = v_vlmetot.
* << Fim da inclusão
ELSE.
v_calc = ' '.
IF itab_zycbt002-nrdiasj IS INITIAL.
itab_zycbt002-vlme =
( ( /pws/zycbe001-slpagar * ( itab_zycbt002-txjtotal / 100 ) )
/ itab_zycbt010-nrdias )
* ( itab_zycbt002-dtfinal - itab_zycbt002-dtinicio ).
ELSE.
itab_zycbt002-vlme =
( ( /pws/zycbe001-slpagar * ( itab_zycbt002-txjtotal / 100 ) )
---------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/SAPMZYCB001
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 497
Texto: (41 caracteres)
" Dt Final excede Dt Liquid. do Contrato !"
Comprimento máximo: 132