CE PLUS - Nota 004488

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Nota Fiscal Remessa

Data/Hora da Publicação: 22/08/2007 00:00:00

Data/Hora Última Alteração: 23/02/2011 09:14:38

Descrição da Nota: NOTA FISCAL REMESSA - VALORES ERRADOS DE IPI E ICMS

Sintoma

Sistema, está se perdendo quando temos ICMS diferido ou redução de base na nota fiscal remessa.

Não está levando o valor do icms.

 

 

Solução

Foi ajustado o Pw.CE para considerar somente os valores corretos

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

QUANDO O PROCESSO TEM BASE DE ICMS REDUZIDA, VALOR FICA INCORRETO NA NF

QUANDO ICMS É DIFERIDO, NÃO PERMITE FAZER A BASE CHEIA.

Informações Complementares

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

Nota Número 04488 Data: 22/08/2007 Hora: 15:30:19

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

 

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

Nota Número              : 04488

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00013

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

Referência às notas relacionadas:

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

 

03397  - 00001 - 7.0    - 00001  - QUANDO ICMS É DIFERIDO, NÃO PERMITE FAZER A BASE CHEIA.

04014  - 00002 - 7.0    - 00001  - QUANDO O PROCESSO TEM BASE DE ICMS REDUZIDA, VALOR FICA INCORRETO

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

NOTA FISCAL REMESSA - VALORES ERRADOS DE IPI E ICMS

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

Palavras Chave:

NOTA FISCAL REMESSA BASE DE CALCULO

 

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

Objetos da nota:

REPS /PWS/MZYCI016F01

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

...

  READ TABLE itab_zycit398 WITH KEY tributos = 'PIS'.

  IF sy-subrc EQ 0.

    it_zycee007-leipis = itab_zycit398-leipis.

  ENDIF.

  READ TABLE itab_zycit398 WITH KEY tributos = 'COFINS'.

  IF sy-subrc EQ 0.

    it_zycee007-leicofins = itab_zycit398-leicofins.

  ENDIF.

  CASE itab_zycit033-tribipi.

    WHEN 1.

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

      it_zycee007-base2   = ( v_total - v_icms - v_ipi - v_outras_ic ).

      it_zycee007-p_excbas = v_base -

      ( v_total - v_icms - v_ipi - v_outras_ic ).

* << Fim da exclusão

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

      if not itab_zycit100-Baseipi is initial.

        it_zycee007-base2 = itab_zycit100-Baseipi /

           itab_zycit044-menge * itab_zycit044-qtd_item .

      endif.

      if itab_zycit003-basred is initial.

         itab_zycit003-basred = 100.

      endif.

      it_zycee007-p_excbas =  v_outras_ic + v_IPI.

      if  itab_zycit100-icms_dif ne 'X' or

         /pws/zycit062-BS_CHEIA_DIF = 'X'.

        if not v_icms is initial.

      it_zycee007-p_excbas = it_zycee007-p_excbas +

        ( ( v_icms * 100 ) / itab_zycit003-basred  ).

      endif.

      endif.

* << Fim da inclusão

      CLEAR it_zycee007-taxval2.

    WHEN 2.

      it_zycee007-p_excbas = v_base.

      CLEAR it_zycee007-taxval2.

    WHEN 3.

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

      if not itab_zycit100-Baseipi is initial.

* << Fim da inclusão

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

      it_zycee007-othbas2  = ( v_total - v_icms - v_ipi - v_outras_ic ).

      it_zycee007-p_excbas = v_base -

      ( v_total - v_icms - v_ipi - v_outras_ic ).

* << Fim da exclusão

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

      it_zycee007-othbas2  = itab_zycit100-Baseipi /

           itab_zycit044-menge * itab_zycit044-qtd_item .

      endif.

      if itab_zycit003-basred is initial.

         itab_zycit003-basred = 100.

      endif.

      it_zycee007-p_excbas =  v_outras_ic + v_IPI.

      if  itab_zycit100-icms_dif ne 'X' or

         /pws/zycit062-BS_CHEIA_DIF = 'X'.

        if not v_icms is initial.

      it_zycee007-p_excbas = it_zycee007-p_excbas +

        ( ( v_icms * 100 ) / itab_zycit003-basred  ).

      endif.

      endif.

* << Fim da inclusão

      CLEAR it_zycee007-taxval2.

  ENDCASE.

  REFRESH itab_zyglt100.

  PERFORM verifica_exit USING 'D'

                      '/PWS/SAPMZYCI016'

                      'NFR001'.

  CLEAR itab_zyglt100 .

  READ TABLE itab_zyglt100 WITH KEY zexit = 'NFR001'.

  IF itab_zyglt100-zexit_ativa NE 'X'.

  ELSE.

...

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO

...

 

      PERFORM cria_despesas(/pws/zycir035) TABLES it_desp

                                                  itab_zycit036_aux.

 

 

      LOOP AT itab_zycit036_aux WHERE origem = 'NF'.

        DELETE itab_zycit036_aux.

      ENDLOOP.

      LOOP AT itab_zycit036_aux WHERE origem = 'DI'

                              OR  origem = 'FAT'.

        itab_zycit036_aux-origem = 'NF'.

        itab_zycit036_aux-nrseqori = /pws/zycit085-nrseqdi.

        itab_zycit036_aux-usernamec = sy-uname.

        itab_zycit036_aux-dtuserc   = sy-datum.

        itab_zycit036_aux-hruserc   = sy-uzeit.

        IF /pws/zycit085-mdadicao EQ 'N'.

          IF  itab_zycit036_aux-waers NE /pws/zycit085-waersfob.

            PERFORM converter_moeda(/pws/sapmzyci010) USING

                                    itab_zycit036_aux-netpr   "VL atual

                                   itab_zycit036_aux-waers     "ME atual

                                    /pws/zycit085-waersfob

                      CHANGING itab_zycit036_aux-netpr.

            itab_zycit036_aux-waers = /pws/zycit085-waersfob.

          ENDIF.

        ENDIF.

        MODIFY itab_zycit036_aux.

      ENDLOOP.

 

      LOOP AT itab_zycit036_aux.

        MOVE itab_zycit036_aux TO itab_zycit036.

        APPEND itab_zycit036.

      ENDLOOP.

    ELSE.

 

      SELECT SINGLE land1 FROM t001 INTO t001-land1

                WHERE bukrs EQ /pws/zycbt007-bukrs.

      SELECT SINGLE * FROM /pws/zycit031

        WHERE inco1 = /pws/zycit001-inco1 AND

              land1 EQ t001-land1.

 

      SELECT SINGLE land1 FROM t001 INTO t001-land1

                 WHERE bukrs EQ /pws/zycbt007-bukrs.

      SELECT SINGLE * FROM /pws/zycbt007

                      WHERE bukrs EQ v_bukrs.

 

      READ TABLE itab_zycit100a INDEX 1.

      SELECT SINGLE * FROM /pws/zycit085

             WHERE nrseqdi = itab_zycit100a-nrseqdi.

 

      SELECT SINGLE * FROM /pws/zycit093

             WHERE nrseqce = /pws/zycit085-nrbl.

 

      DESCRIBE TABLE itab_zycit003 LINES v_line_rateio.

      FREE it_desp.

      LOOP AT itab_zycit003

      WHERE servico IS initial.

        v_line_ac = sy-tabix.

* >> início da inclusão

        clear it_desp.

* >> fim da inclusão

        READ TABLE itab_zycit100a WITH KEY nrseq = itab_zycit003-nrseq

                                           ebeln = itab_zycit003-ebeln

                                           ebelp = itab_zycit003-ebelp.

        IF v_line_ac <> v_line_rateio.

          IF NOT /pws/zycit085-ukursseg IS INITIAL AND

             NOT itab_zycit100a-vlseg IS INITIAL.

 

            v_vlseg = itab_zycit100a-vlseg * v_taxa_usd

              / /pws/zycit085-ukursseg.

            MOVE v_vlseg TO it_desp-vlseg.

 

            " Transforma valor da moeda de acordo com casas decimais

            SELECT SINGLE * FROM tcurx

                   WHERE currkey = /pws/zycit085-waersseg.

            IF sy-subrc <> 0.

              tcurx-currdec = 2.

            ENDIF.

        it_desp-vlseg = it_desp-vlseg * ( 10 ** ( tcurx-currdec - 2 ) ).

            v_ac_seg = v_ac_seg + it_desp-vlseg.

          ENDIF.

 

          IF NOT /pws/zycit085-ukursfre IS INITIAL AND

             NOT itab_zycit100a-vlfre IS INITIAL.

            SELECT SINGLE * FROM /pws/zycit093

                   WHERE nrseqce = /pws/zycit085-nrbl.

            v_fre_tp = itab_zycit100a-vlfre.

            v_fre_tp  = v_fre_tp / /pws/zycit085-ukursfre.

            it_desp-vlfre = v_fre_tp.

            " Transforma valor da moeda de acordo com casas decimais

            SELECT SINGLE * FROM tcurx

                   WHERE currkey = /pws/zycit093-waersfre.

            IF sy-subrc <> 0.

              tcurx-currdec = 2.

            ENDIF.

        it_desp-vlfre = it_desp-vlfre * ( 10 ** ( tcurx-currdec - 2 ) ).

            v_ac_fre = v_ac_fre + it_desp-vlfre.

          ENDIF.

 

          vl_imp = itab_zycit100a-vlii.

          vltot_ii = vltot_ii + vl_imp.

          vl_ii = vl_ii + itab_zycit100a-vlii.

 

          vl_imp = itab_zycit100a-vlipi.

          vltot_ipi = vltot_ipi + vl_imp.

          vl_ipi = vl_ipi + itab_zycit100a-vlipi.

 

          IF itab_zycit100a-icms_dif IS INITIAL.      "ICMS Diferido não

            IF ( /pws/zycit085-tpdi EQ 'N' AND

                 NOT '356' CA itab_zycit100a-codregtriicms ) OR

                 ( /pws/zycit085-tpdi EQ 'S' AND

                 NOT '356' CA itab_zycit100a-codregtri ).

              vl_imp = itab_zycit100a-vlicms.           "entra no custo

              vltot_icms = vltot_icms + vl_imp.

              vl_icms = vl_icms + itab_zycit100a-vlicms.

* >> início da inclusão

                MOVE: itab_zycit100a-vlicms TO it_desp-vlicms.

* >> fim da inclusão

            ENDIF.

          ENDIF.

 

          vl_imp = itab_zycit100a-vlpis.

          vltot_pis = vltot_pis + vl_imp.

          vl_pis = vl_pis + itab_zycit100a-vlpis.

 

          vl_imp = itab_zycit100a-vlcofins.

          vltot_cofins = vltot_cofins + vl_imp.

          vl_cofins = vl_cofins + itab_zycit100a-vlcofins.

 

 

        ELSE.

          IF sy-subrc = 0.

            IF NOT /pws/zycit085-vlseg IS INITIAL.

 

              it_desp-vlseg =  /pws/zycit085-vlseg - v_ac_seg.

 

            ENDIF.

            SELECT SINGLE * FROM /pws/zycit093

              WHERE nrseqce = /pws/zycit085-nrbl.

 

            IF NOT /pws/zycit093-vlfre IS INITIAL.

 

              it_desp-vlfre = /pws/zycit093-vlfre - v_ac_fre.

            ENDIF.

          ENDIF.

 

          vl_ii     = vl_ii     + itab_zycit100a-vlii    .

          vl_ipi    = vl_ipi    + itab_zycit100a-vlipi   .

          vl_pis    = vl_pis    + itab_zycit100a-vlpis   .

          vl_cofins = vl_cofins + itab_zycit100a-vlcofins.

 

          itab_zycit100a-vlii     = vl_ii     - vltot_ii    .

          itab_zycit100a-vlipi    = vl_ipi    - vltot_ipi   .

          itab_zycit100a-vlpis    = vl_pis    - vltot_pis   .

          itab_zycit100a-vlcofins = vl_cofins - vltot_cofins.

 

          IF itab_zycit100a-icms_dif IS INITIAL.      "ICMS Diferido não

            IF NOT ( /pws/zycit001-tpdecl = 'DSI' AND

                  /pws/zycit001-regime = '09' ).

 

              IF ( /pws/zycit085-tpdi EQ 'N' AND

                   NOT '356' CA itab_zycit100a-codregtriicms ) OR

                   ( /pws/zycit085-tpdi EQ 'S' AND

                   NOT '356' CA itab_zycit100a-codregtri ).

               vl_icms = vl_icms + itab_zycit100a-vlicms."entra no custo

                itab_zycit100a-vlicms = vl_icms - vltot_icms.

 

* >> início da inclusão

 

                MOVE: itab_zycit100a-vlicms TO it_desp-vlicms.

* >>Fim  da inclusão

 

              ENDIF.

            ENDIF.

          ENDIF.

 

          v_ac_fre = 0.

          v_ac_seg = 0.

        ENDIF.

        MOVE: itab_zycit003-nrseq    TO it_desp-nrseq,

              itab_zycit003-ebeln    TO it_desp-ebeln,

              itab_zycit003-ebelp    TO it_desp-ebelp,

              itab_zycit003-netpr    TO it_desp-netpr,

              itab_zycit003-waers    TO it_desp-waers,

              itab_zycit003-menge    TO it_desp-menge,

              itab_zycit003-qtd_iten TO it_desp-qtd_iten,

              /pws/zycit085-bukrs    TO it_desp-bukrs,

              itab_zycit003-werks    TO it_desp-werks,

              /pws/zycit001-inco1    TO it_desp-inco1,

              /pws/zycit001-embarca  TO it_desp-embarca,

              itab_zycit003-advalii  TO it_desp-advalii,

              itab_zycit003-advalipi TO it_desp-advalipi,

              itab_zycit003-aliqicms TO it_desp-aliqicms,

              itab_zycit100a-vlii     TO it_desp-vlii,

              itab_zycit100a-vlipi    TO it_desp-vlipi,

              itab_zycit100a-vlpis    TO it_desp-vlpis ,

              itab_zycit100a-vlcofins TO it_desp-vlcofins.

        IF it_desp-advalii IS INITIAL.

          CLEAR it_desp-vlii.

        ENDIF.

* >> início da Exclusão

        IF itab_zycit100a-icms_dif IS INITIAL.

          MOVE: itab_zycit100a-vlicms TO it_desp-vlicms.

        ENDIF.

* << Fim da Exclusão

         APPEND it_desp.

       ENDLOOP.

 

 

       PERFORM cria_despesas(/pws/zycir035) TABLES it_desp

                                                   itab_zycit036.