CE PLUS - Nota 004885

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: Registro de Exportação (RE)

Data/Hora da Publicação: 02/10/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 10:04:24

Descrição da Nota: AJUSTE NO CÁLCULO DOS VALORES PARA RE QUANDO RE A TERMO

Sintoma

 Quando é gerada uma RE a termo, caso haja despesas, desconto ou acréscimo, os valores da pasta

"Pagamentos" são calculados incorretamente.

 

 

Solução

Aplicação do percentual (a termo) sobre as despesas, descontos e acréscimos. Incluído tratamento  de

diferenças de arredondamento para RE's a termo com e sem agrupamento.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

CORREÇÃO NO VALOR CALCULADO DO EMBARQUE E EM VALORES DO RE

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 04885 Data: 02/10/2007 Hora: 19:19:59

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 04885

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00015

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

04839  - 00001 - 7.0    - 00003  - CORREÇÃO NO VALOR CALCULADO DO EMBARQUE E EM VALORES DO RE

----------------------------------------------------------------------------------------------------

AJUSTE NO CÁLCULO DOS VALORES PARA RE QUANDO RE A TERMO

----------------------------------------------------------------------------------------------------

Palavras Chave:

TERMO, RE, CÁLCULO, FOB, VALOR, PERCENTUAL, DESPESAS, ACRÉSCIMO

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

REPS /PWS/MZYCE041F01

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE041F01

 

...

          fob         TYPE /pws/zycet065-fob,

          frete       TYPE /pws/zycet065-frete,

          seguro      TYPE /pws/zycet065-seguro,

          outras_desp TYPE /pws/zycet065-outras_desp,

          desconto    TYPE /pws/zycet065-desconto,

          acrescimo   TYPE /pws/zycet065-acrescimo,

          comissao    TYPE /pws/zycet065-comissao,

         END OF ty_zycet065.

  DATA: wa_zycet065   TYPE ty_zycet065,

        v_despesas    TYPE /pws/zycet002-vlme.

* >> Início da inclusão: FORM AJUSTA_PRECOS

  DATA:    v_vfob       TYPE /pws/zycet092-vfob,

           v_netpr      TYPE /pws/zycet092-netpr,

           v_vfob_item  TYPE p DECIMALS 4,

           v_netpr_item TYPE p DECIMALS 4,

           v_difer      TYPE /pws/zycet092-netpr,

           v_index      TYPE sy-tabix.

  DATA: fator_acrescimo TYPE p DECIMALS 2.

* << Fim da inclusão

  IF itab_zycit282[] IS INITIAL.

    SELECT SINGLE inco1

                fob

                frete

                seguro

                outras_desp

                desconto

                acrescimo

                comissao

   FROM /pws/zycet065

   INTO wa_zycet065

   WHERE inco1 EQ itab_zycet001-inco1.

    READ TABLE itab_zycet001 INDEX 1.

    CHECK sy-subrc IS INITIAL.

    IF itab_zycet116-agrupado EQ 'S'.

      LOOP AT itab_zycet092 ASSIGNING <fs_zycet092>.

* >> Início da inclusão: FORM AJUSTA_PRECOS

        CLEAR: v_vfob, v_netpr, v_index.

* << Fim da inclusão

        LOOP AT itab_zycet118 ASSIGNING <fs_zycet118>

                            WHERE seqagrupado EQ <fs_zycet092>-codnrseq.

          CLEAR v_despesas.

* >> Início da inclusão: FORM AJUSTA_PRECOS

          v_index = sy-tabix.

* << Fim da inclusão

          READ TABLE itab_zycet002

               WITH KEY vbeln_va = <fs_zycet118>-vbeln_va

                           aupos = <fs_zycet118>-aupos

                        vbeln_vl = <fs_zycet118>-vbeln_vl

                           posnl = <fs_zycet118>-posnl

                        vbeln_vf = <fs_zycet118>-vbeln_vf

                           posnr = <fs_zycet118>-posnr

                        TRANSPORTING vlfrete_r

                                     vlseguro_r

                                     vlod_r

                                     vlagente_r

                                     vlacrescimo_r

                                     vldesconto_r.

          CHECK sy-subrc IS INITIAL.

* >> Início da exclusão: FORM AJUSTA_PRECOS

          PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo

                                   CHANGING <fs_zycet118>-fkimg

                                            <fs_zycet118>-ntgew

                                            <fs_zycet118>-brgew

                                            <fs_zycet118>-netpr

                                            <fs_zycet118>-vfob.

* << Fim da exclusão

          IF NOT wa_zycet065-frete IS INITIAL AND

             NOT itab_zycet002-vlfrete_r IS INITIAL.

            IF /pws/zycee001-tpcalc = '0'.

              ADD itab_zycet002-vlfrete_r TO v_despesas.

            ELSE.

              SUBTRACT itab_zycet002-vlfrete_r FROM v_despesas.

            ENDIF.

          ENDIF.

          IF NOT wa_zycet065-seguro IS INITIAL AND

             NOT itab_zycet002-vlseguro_r IS INITIAL.

...

 

...

            ELSE.

              <fs_zycet118>-vfob = <fs_zycet118>-netpr + v_despesas.

              <fs_zycet118>-netpr =

                <fs_zycet118>-netpr -

                itab_zycet002-vldesconto_r +

                itab_zycet002-vlacrescimo_r.

            ENDIF.

          ELSE.

            <fs_zycet118>-vfob = <fs_zycet118>-netpr.

          ENDIF.

* >> Início da inclusão: FORM AJUSTA_PRECOS

          PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo

                                   CHANGING <fs_zycet118>-fkimg

                                            <fs_zycet118>-ntgew

                                            <fs_zycet118>-brgew

                                            <fs_zycet118>-netpr

                                            <fs_zycet118>-vfob.

          v_vfob  = v_vfob  + <fs_zycet118>-vfob.

          v_netpr = v_netpr + <fs_zycet118>-netpr.

* << Fim da inclusão

        ENDLOOP.

        CHECK sy-subrc IS INITIAL.

        PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo

                                 CHANGING <fs_zycet092>-fkimg

                                          <fs_zycet092>-ntgew

                                          <fs_zycet092>-brgew

                                          <fs_zycet092>-netpr

                                          <fs_zycet092>-vfob.

* >> Início da inclusão: FORM AJUSTA_PRECOS

        CLEAR v_difer.

        IF v_vfob NE <fs_zycet092>-vfob.

          READ TABLE itab_zycet118 INDEX v_index.

          IF v_vfob GT <fs_zycet092>-vfob.

            v_difer = v_vfob - <fs_zycet092>-vfob.

            itab_zycet118-vfob = itab_zycet118-vfob - v_difer.

            MODIFY itab_zycet118 INDEX v_index TRANSPORTING vfob.

          ELSE.

            v_difer = <fs_zycet092>-vfob - v_vfob.

            itab_zycet118-vfob = itab_zycet118-vfob + v_difer.

            MODIFY itab_zycet118 INDEX v_index TRANSPORTING vfob.

          ENDIF.

        ENDIF.

        CLEAR v_difer.

        IF v_netpr NE <fs_zycet092>-netpr.

          READ TABLE itab_zycet118 INDEX v_index.

          IF v_netpr GT <fs_zycet092>-netpr.

            v_difer = v_netpr - <fs_zycet092>-netpr.

            itab_zycet118-netpr = itab_zycet118-netpr - v_difer.

            MODIFY itab_zycet118 INDEX v_index TRANSPORTING netpr.

          ELSE.

            v_difer = <fs_zycet092>-netpr - v_netpr.

            itab_zycet118-netpr = itab_zycet118-netpr + v_difer.

            MODIFY itab_zycet118 INDEX v_index TRANSPORTING netpr.

          ENDIF.

        ENDIF.

* << Fim da inclusão

      ENDLOOP.

    ELSE.

      LOOP AT itab_zycet118 ASSIGNING <fs_zycet118>.

        CLEAR v_despesas.

    READ TABLE itab_zycet002 WITH KEY vbeln_va = <fs_zycet118>-vbeln_va

                                            aupos = <fs_zycet118>-aupos

                                      vbeln_vl = <fs_zycet118>-vbeln_vl

                                            posnl = <fs_zycet118>-posnl

                                      vbeln_vf = <fs_zycet118>-vbeln_vf

                                            posnr = <fs_zycet118>-posnr

                                                 TRANSPORTING vlfrete_r

                                                             vlseguro_r

                                                                 vlod_r

                                                             vlagente_r

                                                          vlacrescimo_r

                                                           vldesconto_r.

        CHECK sy-subrc IS INITIAL.

* >> Início da exclusão: FORM AJUSTA_PRECOS

        PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo

                                 CHANGING <fs_zycet118>-fkimg

                                          <fs_zycet118>-ntgew

                                          <fs_zycet118>-brgew

                                          <fs_zycet118>-netpr

                                          <fs_zycet118>-vfob.

* << Fim da exclusão

        IF NOT wa_zycet065-frete IS INITIAL AND

           NOT itab_zycet002-vlfrete_r IS INITIAL.

          IF /pws/zycee001-tpcalc = '0'.

            ADD itab_zycet002-vlfrete_r TO v_despesas.

          ELSE.

            SUBTRACT itab_zycet002-vlfrete_r FROM v_despesas.

          ENDIF.

        ENDIF.

        IF NOT wa_zycet065-seguro IS INITIAL AND

           NOT itab_zycet002-vlseguro_r IS INITIAL.

...

 

...

          ELSE.

            <fs_zycet118>-vfob = <fs_zycet118>-netpr + v_despesas.

            <fs_zycet118>-netpr =

              <fs_zycet118>-netpr -

              itab_zycet002-vldesconto_r +

              itab_zycet002-vlacrescimo_r.

          ENDIF.

        ELSE.

          <fs_zycet118>-vfob = <fs_zycet118>-netpr.

        ENDIF.

* >> Início da inclusão: FORM AJUSTA_PRECOS

        IF itab_zycet116-perc_re_termo > 0.

          v_netpr = v_netpr + <fs_zycet118>-netpr.

          v_vfob  = v_vfob  + <fs_zycet118>-vfob.

        ENDIF.

        PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo

                                 CHANGING <fs_zycet118>-fkimg

                                          <fs_zycet118>-ntgew

                                          <fs_zycet118>-brgew

                                          <fs_zycet118>-netpr

                                          <fs_zycet118>-vfob.

      ENDLOOP.

      IF itab_zycet116-perc_re_termo > 0.

        fator_acrescimo = 1 + ( itab_zycet116-perc_re_termo / 100 ).

        LOOP AT itab_zycet118 INTO itab_zycet118.

          v_index      = sy-tabix.

          v_netpr_item = v_netpr_item  + itab_zycet118-netpr.

          v_vfob_item  = v_vfob_item   + itab_zycet118-vfob.

* << Fim da inclusão

      ENDLOOP.

* >> Início da inclusão: FORM AJUSTA_PRECOS

        v_netpr = v_netpr *  fator_acrescimo.

        v_vfob  = v_vfob  *  fator_acrescimo.

        IF v_netpr NE v_netpr_item.

          READ TABLE itab_zycet118 INDEX v_index.

          IF v_netpr GT v_netpr_item.

            v_difer = v_netpr - v_netpr_item.

            itab_zycet118-netpr = itab_zycet118-netpr + v_difer.

            MODIFY itab_zycet118 INDEX v_index TRANSPORTING netpr.

          ELSE.

            v_difer = v_netpr_item - v_netpr.

            itab_zycet118-netpr = itab_zycet118-netpr - v_difer.

            MODIFY itab_zycet118 INDEX v_index TRANSPORTING netpr.

          ENDIF.

        ENDIF.

        IF v_vfob NE v_vfob_item.

          READ TABLE itab_zycet118 INDEX v_index.

          IF v_vfob GT v_vfob_item.

            v_difer = v_vfob - v_vfob_item.

            itab_zycet118-vfob = itab_zycet118-vfob + v_difer.

            MODIFY itab_zycet118 INDEX v_index TRANSPORTING vfob.

          ELSE.

            v_difer = v_vfob_item - v_vfob.

            itab_zycet118-vfob = itab_zycet118-vfob - v_difer.

            MODIFY itab_zycet118 INDEX v_index TRANSPORTING vfob.

          ENDIF.

        ENDIF.

      ENDIF.

* << Fim da inclusão

    ENDIF.

  ENDIF.

  PERFORM busca_parcelas.

ENDFORM.

FORM verifica_naladi.

  DATA: v_cont(3) TYPE n.

  IF refresh IS INITIAL.

    LOOP AT itab_zycet092.

      CLEAR v_cont.

      LOOP AT itab_zycet081 WHERE steuc = itab_zycet092-ncm.

...