CE PLUS - Nota 005596

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.

Versões Tratadas

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