CE PLUS - Nota 004026

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.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

LIQ. ACC COM PRÉ - CÁLCULO DE JUROS

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.