CE PLUS - Nota 004713

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DSI

Data/Hora da Publicação: 13/09/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 14:58:11

Descrição da Nota: MULTIPLAS MOEDAS, RATEIO DE DESPESAS, REGIME TRIBUTÁRIO NA DSI

Sintoma

Erro na DSI quando possui itens com moedas diferentes

Erro nas diversas formas de rateio e no regime tributário.

 

 

Solução

Ajustar rateio e moedas diferentes na DSI. Propor regime tributário.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

TAXA SISCOMEX ENTRA COMO BASE DE ICMS MESMO QUANDO ZERADO EM DESPESA

CORREÇÃO NO CALCULO DA BASE DE CÁLCULO AO ENTRAR DO DETALHE DO ITEM

VALOR DE ICMS DA DSI ESTÁ MENOR QUE O TOTAL DA NOTA FISCAL

AJUSTE NO CALCULO DA BASE DE PIS E COFINS PARA MP ANTIGA

Informações Complementares

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

Nota Número 04713 Data: 13/09/2007 Hora: 16:17:14

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

 

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

Nota Número              : 04713

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00012

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

Referência às notas relacionadas:

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

 

02441  - 00001 - 6.0    - 00025  - TAXA SISCOMEX ENTRA COMO BASE DE ICMS MESMO QUANDO ZERADO EM DESP

02811  - 00002 - 6.0    - 00026  - AJUSTE NO CALCULO DA BASE DE PIS E COFINS PARA MP ANTIGA

03106  - 00003 - 6.0    - 00026  - VALOR DE ICMS DA DSI ESTÁ MENOR QUE O TOTAL DA NOTA FISCAL

04019  - 00004 - 7.0    - 00001  - CORREÇÃO NO CALCULO DA BASE DE CÁLCULO AO ENTRAR DO DETALHE DO IT

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

MULTIPLAS MOEDAS, RATEIO DE DESPESAS, REGIME TRIBUTÁRIO NA DSI

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

Palavras Chave:

MULTIPLAS MOEDAS - RATEIO DE DESPESAS - REGIME TRIBUTÁRIO - DSI

MOEDAS DIFERENTES .

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

Objetos da nota:

REPS /PWS/MZYCI058F01

REPS /PWS/MZYCI058F02

REPS /PWS/MZYCI058F03

REPS /PWS/MZYCI058F04

REPS /PWS/MZYCI058I01

REPS /PWS/MZYCI058O01

 

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

Modificações efetuadas em REPS /PWS/MZYCI058F01

 

...

 

FORM load_itax USING p_tipo.

  DATA: v_desp_fren LIKE /pws/zycit049-vldp,

        t_dif_seg   LIKE /pws/zycit100-vlseg.

  IF /pws/zycie100a-dttaxbem IS INITIAL.

    MOVE itab_it-dttaxbem TO /pws/zycie100a-dttaxbem.

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

  ELSE.

    MOVE /pws/zycie100a-dttaxbem TO itab_it-dttaxbem .

* << Fim da exclusão

  ENDIF.

 

...

 

...

 

      ELSEIF itab_zycit049-proporplan = 'X'.

        IF NOT v_tot_plan IS INITIAL.

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

          t_ivdes2 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

* << Fim da exclusão

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

        READ TABLE itab_zycit003 WITH KEY

                    nrseq = itab_it-nrseq

                    ebeln = itab_it-ebeln

                    ebelp = itab_it-ebelp.

        IF sy-subrc EQ 0.

          IF /pws/zycie085-waersfob NE itab_zycit003-waers.

            PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                       /pws/zycie085-waersfob

                                     CHANGING  itab_zycit003-netpr.

            t_ivdes2 =

           ( ( itab_zycit003-netpr * itab_zycit003-qtd_iten )  /

              v_tot_plan  ) * itab_zycit049-vlreal.

          ENDIF.

        ENDIF.

* << Fim da inclusão

        ENDIF.

      ELSE.

      IF NOT v_tot_real IS INITIAL.

        READ TABLE itab_zycit003 WITH KEY

                    nrseq = itab_it-nrseq

                    ebeln = itab_it-ebeln

                    ebelp = itab_it-ebelp.

        IF sy-subrc EQ 0.

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

          IF /pws/zycie085-waersfob NE itab_zycit003-waers.

            PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                       /pws/zycie085-waersfob

                                     CHANGING  itab_zycit003-vlreal.

          ENDIF.

* << Fim da inclusão

          t_ivdes2 =  ( itab_zycit003-vlreal *

                        itab_zycit003-qtd_iten

             / v_tot_real  ) * itab_zycit049-vlreal.

        ENDIF.

      ENDIF.

      ENDIF.

 

...

 

...

 

        itab_zycit049-baseicms = itab_zycit020-baseicms.

        itab_zycit049-baseii   = itab_zycit020-baseii.

        READ TABLE itab_zycit039 WITH KEY

             codigo = itab_zycit020-codigo.

        IF sy-subrc EQ 0.

          itab_zycit049-divabs = itab_zycit039-divabs.

          itab_zycit049-peso   = itab_zycit039-peso.

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

          itab_zycit049-proporplan   = itab_zycit039-proporplan.

* << Fim da inclusão

        ENDIF.

      ENDIF.

      IF NOT itab_zycit049-vldp   IS INITIAL.

        IF  itab_zycit049-waers  NE  wa_zycbt007-waersb.

          PERFORM taxa_converte USING    itab_zycit049-waers

                                         /pws/zycie085-dttax

                                CHANGING s_tax.

          itab_zycit049-vlreal = itab_zycit049-vldp * s_tax.

        ELSE.

          itab_zycit049-vlreal = itab_zycit049-vldp.

...

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI058F02

 

...

 

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

  MOVE-CORRESPONDING: itab_it TO /pws/zycie100a,

                      itab_it TO /pws/zycie003 .

* << Fim da inclusão

  PERFORM: load_nimp,

           load_blid,

           load_frvl,

           load_sgvl,

           load_cpfc,

           load_seto,

           load_coll,

           calc_itab.

  MOVE itab_it[] TO itab_ita[].

ENDFORM.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI058F03

 

FORM calc_init USING p_tipo.

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

  DATA v_vlreal LIKE /pws/zycie003-vlreal.

* << Fim da inclusão

 

...

 

...

 

 

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

    PERFORM data_sort.

* << Fim da exclusão

  ENDIF.

  DESCRIBE TABLE itab_it LINES v_ipt.

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

  LOOP AT itab_it.

    IF /pws/zycie085-waersfob NE itab_it-waers.

      PERFORM: calc_conv_moeda USING    itab_it-waers

                                        /pws/zycie085-waersfob

                               CHANGING itab_it-vlfre_fat.

      v_tfrefat = v_tfrefat + itab_it-vlfre_fat.

    ELSE.

      v_tfrefat = v_tfrefat + itab_it-vlfre_fat.

    ENDIF.

  ENDLOOP.

* << Fim da inclusão

  v_bltofat = /pws/zycie093-prepaid +

  /pws/zycie093-collect.

  v_sgtofat = /pws/zycie085-vlseg.

  CASE s_inco1_ci.

    WHEN 'C&F'.

      PERFORM calc_conv_frete CHANGING v_bltofat.

      v_tdif = v_tfrefat - v_bltofat.

      v_bltofat = /pws/zycie093-prepaid +

      /pws/zycie093-collect - /pws/zycie093-ternacion.

      PERFORM calc_conv_frete CHANGING v_bltofat.

    WHEN 'CIF'.

      PERFORM: calc_conv_frete CHANGING v_bltofat,

               calc_conv_seg   CHANGING v_sgtofat.

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

      IF NOT v_sgtofat IS INITIAL .

        PERFORM trata_decimais USING /pws/zycie085-waersseg

                                       v_sgtofat             .

      ENDIF.

* << Fim da inclusão

      v_tdif = v_tfrefat - v_bltofat .

      v_bltofat = /pws/zycie093-prepaid +

      /pws/zycie093-collect - /pws/zycie093-ternacion.

      PERFORM calc_conv_frete CHANGING v_bltofat.

  ENDCASE.

  CLEAR v_ntgew.

  LOOP AT itab_zycit003.

    v_ntgew = v_ntgew + itab_zycit003-ntgew.

  ENDLOOP.

  LOOP AT itab_it.

    READ TABLE itab_zycit003 WITH KEY

                              nrseq = itab_it-nrseq

                              ebeln = itab_it-ebeln

                              ebelp = itab_it-ebelp.

    IF itab_it-qtd_itend NE '' AND v_dit = 'N'

       AND itab_it-vlreald IS INITIAL.

      itab_it-vlreald = itab_it-vlreal + ( ( v_tdif *

       itab_zycit003-ntgew / v_ntgew ) / itab_zycit003-qtd_iten ).

      MODIFY itab_it.

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

    ENDIF.

    IF /pws/zycie085-waersfob NE itab_zycit003-waers.

      PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                 /pws/zycie085-waersfob

                               CHANGING  itab_zycit003-vlreal.

      PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                 /pws/zycie085-waersfob

                               CHANGING  itab_zycit003-netpr.

* << Fim da inclusão

    ENDIF.

       v_tot_real = v_tot_real +

    ( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).

    v_tot_plan = v_tot_plan +

      (   itab_zycit003-qtd_iten * itab_zycit003-netpr ).

  ENDLOOP.

  LOOP AT itab_it.

    IF NOT itab_it-vlreald IS INITIAL.

      itab_it-vlreal = itab_it-vlreald.

    ENDIF.

    CLEAR: v_tvaln, v_qtd_iten.

    v_qtd_iten = itab_it-qtd_iten.

    v_tntgew = v_tntgew + itab_it-ntgew.

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

    IF itab_it-waersbem EQ  /pws/zycie085-waersfob.

* << Fim da inclusão

   v_tmle   = v_tmle   + ( ( v_qtd_iten * itab_it-vlreal ) *

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

                                 itab_it-dttaxbem ).

    ELSE.

      v_vlreal = itab_it-vlreal.

      PERFORM: calc_conv_moeda USING    itab_it-waersbem

                                        /pws/zycie085-waersfob

                               CHANGING v_vlreal.

      v_tmle   = v_tmle   + ( ( v_qtd_iten * v_vlreal ) *

* << Fim da inclusão

                              itab_it-dttaxbem ).

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

    ENDIF.

    IF /pws/zycie085-waersfob NE itab_it-waers.

      PERFORM: calc_conv_moeda USING    itab_it-waers

                                        /pws/zycie085-waersfob

                               CHANGING itab_it-vlfre_fat.

      v_tfrefat = v_tfrefat + itab_it-vlfre_fat.

    ELSE.

      v_tfrefat = v_tfrefat + itab_it-vlfre_fat.

    ENDIF.

    IF /pws/zycie085-waersfob NE itab_it-waers.

      PERFORM: calc_conv_moeda USING    itab_it-waers

                                        /pws/zycie085-waersfob

                               CHANGING itab_it-vlseg_fat.

      v_tsegfat = v_tsegfat + itab_it-vlseg_fat.

    ELSE.

      v_tsegfat = v_tsegfat + itab_it-vlseg_fat.

    ENDIF.

* << Fim da inclusão

    v_tfrefat = v_tfrefat + itab_it-vlfre_fat.

    v_rfrefat = v_rfrefat + ( itab_it-vlfre_fat * itab_it-dttaxbem ).

    v_tsegfat = v_tsegfat + itab_it-vlseg_fat.

    v_rsegfat = v_rsegfat + ( itab_it-vlseg_fat * itab_it-dttaxbem ).

    IF p_tipo = 'I'.

      itab_it-seq = sy-tabix.

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

      MODIFY itab_it INDEX sy-tabix TRANSPORTING seq vlreal.

* << Fim da exclusão

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

      MODIFY itab_it TRANSPORTING seq vlreal.

* << Fim da inclusão

    ENDIF.

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

    IF /pws/zycie085-mdadicao = 'N'.

* << Fim da exclusão

      IF itab_it-waersbem EQ  /pws/zycie085-waersfob.

        v_tval   = v_tval   + (   v_qtd_iten * itab_it-vlreal ).

      ELSE.

        PERFORM taxa_converte USING  itab_it-waersbem

                                     /pws/zycie085-dttax

                           CHANGING  v_taxa.

        v_tvaln   = v_tvaln + (   v_qtd_iten * itab_it-vlreal ).

        v_tvaln   = v_tvaln * v_taxa.

        PERFORM taxa_converte USING  /pws/zycie085-waersfob

                                    /pws/zycie085-dttax

                            CHANGING  v_taxa.

        v_tvaln   = v_tvaln / v_taxa.

        v_tval = v_tval + v_tvaln.

        /pws/zycie085-ukursfob  = v_taxa.

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

      ENDIF.

    ELSE.

      v_tval   = v_tval   + (   v_qtd_iten * itab_it-vlreal ).

* << Fim da exclusão

    ENDIF.

  ENDLOOP.

 

...

 

...

 

  CLEAR v_nova.

  IF /pws/zycie085-dtuserc IS INITIAL.

    /pws/zycie085-dtuserc = sy-datum.

  ENDIF.

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

  IF NOT /pws/zycit000-flag_txsisc IS INITIAL.

    v_sisco3 = /pws/zycit000-txsis_fix + /pws/zycit000-txsis_0_2 .

  ENDIF.

* << Fim da inclusão

  LOOP AT itab_zycit049 WHERE baseicms EQ 'X' AND NOT vlreal IS initial.

    IF /pws/zycit000-flag_txsisc IS INITIAL OR

       wa_it000-cod_sisc NE itab_zycit049-tpdesp.

        IF itab_zycit049-divabs EQ 'X'.

          t_ivdes2 = ( 1 / v_ipt ) * itab_zycit049-vlreal.

        ELSEIF itab_zycit049-peso EQ 'X'.

          t_ivdes2 = ( wa_it-ntgew / v_tntgew ) * itab_zycit049-vlreal.

        ELSEIF itab_zycit049-proporplan EQ 'X'.

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

          t_ivdes2 = ( v_it_plan / v_tot_plan  ) * itab_zycit049-vlreal.

* << Fim da exclusão

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

        IF NOT v_tot_plan IS INITIAL.

          READ TABLE itab_zycit003 WITH KEY

                      nrseq = itab_it-nrseq

                      ebeln = itab_it-ebeln

                      ebelp = itab_it-ebelp.

          IF sy-subrc EQ 0.

            IF /pws/zycie085-waersfob NE itab_zycit003-waers.

              PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                         /pws/zycie085-waersfob

                                       CHANGING  itab_zycit003-netpr.

            ENDIF.

       t_ivdes2 =  ( ( itab_zycit003-netpr * itab_zycit003-qtd_iten ) /

                            v_tot_plan  ) * itab_zycit049-vlreal.

          ENDIF.

        ENDIF.

* << Fim da inclusão

        ELSE.

      IF NOT v_tot_real IS INITIAL.

        READ TABLE itab_zycit003 WITH KEY

                    nrseq = itab_it-nrseq

                    ebeln = itab_it-ebeln

                    ebelp = itab_it-ebelp.

        IF sy-subrc EQ 0.

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

            IF /pws/zycie085-waersfob NE itab_zycit003-waers.

              PERFORM: calc_conv_moeda USING    itab_zycit003-waers

                                         /pws/zycie085-waersfob

                                       CHANGING  itab_zycit003-vlreal.

            ENDIF.

* << Fim da inclusão

          t_ivdes2 =  ( itab_zycit003-vlreal *

                        itab_zycit003-qtd_iten

             / v_tot_real  ) * itab_zycit049-vlreal.

        ENDIF.

      ENDIF.

        IF p_tipo = 'I'.

          itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

          MODIFY itab_zycit049 INDEX sy-tabix TRANSPORTING vldp_aux.

        ENDIF.

      ENDIF.

      t_ivdesp = t_ivdesp + t_ivdes2.

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

    ELSEIF NOT /pws/zycit000-flag_txsisc IS INITIAL .

      t_ivdes2 = ( 1 / v_ipt ) * v_sisco3.

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

  CLEAR: v_nr_itens, v_desp. CLEAR: itab_zycit100_temp.

  REFRESH itab_zycit100_temp.

  MOVE itab_it[] TO itab_zycit100_temp[].

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

  IF itab_it-adicao IS INITIAL AND NOT /pws/zycit000-flag_txsisc IS

 INITIAL.

    READ TABLE itab_zycit100_temp WITH KEY nrseq = itab_it-nrseq

                                           ebeln = itab_it-ebeln

                                           ebelp = itab_it-ebelp.

    IF sy-subrc = 0.

      PERFORM adic_list.

    ENDIF.

  ENDIF.

* << Fim da exclusão

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

  MOVE-CORRESPONDING itab_it TO /pws/zycie100a.

* << Fim da inclusão

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

  IF NOT /pws/zycit000-flag_txsisc IS INITIAL.

    LOOP AT itab_zycit100_temp WHERE adicao = itab_it-adicao.

      v_nr_itens = v_nr_itens + 1.

    ENDLOOP.

  ENDIF.

  IF NOT /pws/zycit000-flag_txsisc IS INITIAL.

    READ TABLE itab_zycit049 WITH KEY tpdesp = wa_it000-cod_sisc.

    IF sy-subrc = 0.

      IF v_sisco3 IS INITIAL.

        DESCRIBE TABLE itab_zycit116 LINES v_ipa.

        PERFORM fill_taxasiscomex USING v_ipa.

      ENDIF.

      IF NOT v_sisco3 IS INITIAL AND NOT v_nr_itens IS INITIAL.

        v_desp = ( v_sisco3 / v_nr_itens ).

      ENDIF.

    ENDIF.

  ENDIF.

* << Fim da exclusão

 

...

 

...

    v_vlipirec = t_ipirec.

  ENDIF.

  CLEAR: v_vlpisrec , v_vlcofrec.

  IF '56' CA  /pws/zycie100a-codregtripiscofi.

    v_vlpisrec   = t_pis_calc.

    v_vlcofrec   = t_cof_calc.

  ELSE.

    v_vlpisrec   = t_pis   .

    v_vlcofrec   = t_cofins.

  ENDIF.

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

  IF /pws/zycit000-flag_txsisc IS INITIAL.

* << Fim da inclusão

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

  IF v_nr_itens GT 1.

* << Fim da exclusão

    t_icmsbs_d2 = t_icmsbs = ( t_iibas + v_vlipirec + v_vliirec +

        t_ivdesp + v_desp + v_vlpisrec + v_vlcofrec ) *

        ( /pws/zycie003-basred / 100 ).

  ELSE.

    t_icmsbs_d2 = t_icmsbs = ( t_iibas + v_vlipirec + v_vliirec +

         v_sisco3 + t_ivdesp + v_vlpisrec + v_vlcofrec ) *

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

             ( /pws/zycie003-basred / 100 ).

  ENDIF.

* << Fim da inclusão

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

             ( /pws/zycie003-basred / 100 ).

* << Fim da exclusão

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

  IF NOT /pws/zycit000-flag_txsisc IS INITIAL.

    v_sisco3 = /pws/zycit000-txsis_fix + /pws/zycit000-txsis_0_2 .

* << Fim da inclusão

  ENDIF.

 

...

 

...

 

  ENDIF.

  IF /pws/zycie100a-codregtriipi IS INITIAL.

    /pws/zycie100a-codregtriipi = '4'.

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

    itab_it-codregtriipi = '4'.

* << Fim da inclusão

  ENDIF.

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

  IF /pws/zycie100a-codregtripiscofi IS INITIAL.

    /pws/zycie100a-codregtripiscofi = '1'.

    itab_it-codregtripiscofi = '1'.

  ENDIF.

* << Fim da inclusão

ENDFORM.

 

...

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI058I01

 

...

 

MODULE calc_vicms INPUT.

* >> Início da inclusão: MODULE CALC_VICMS

  MOVE-CORRESPONDING /pws/zycie100a TO itab_it.

* << Fim da inclusão

 

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI058O01

 

...

 

* >> Início da exclusão: MODULE LOAD_DATA_BLITEM

  IF itab_it-waersbem NE  /pws/zycie085-waersfob.

    IF NOT /pws/zycie085-waersfob IS INITIAL.

      MOVE /pws/zycie085-waersfob TO wa_it-waersbem.

      MOVE /pws/zycie085-waersfob TO /pws/zycie100a-waersbem.

    ENDIF.

* << Fim da exclusão

    PERFORM load_itwa USING /pws/zycie100a-waersbem.

* >> Início da exclusão: MODULE LOAD_DATA_BLITEM

  ENDIF.

* << Fim da exclusão

ENDMODULE.

 

...