CE PLUS - Nota 004557

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

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

Data/Hora Última Alteração: 22/02/2011 13:47:30

Descrição da Nota: REDUÇÃO DE BASE DE IMPOSTO NOTA FISCAL

Sintoma

Sistema não está aproximando os valores da redução de base de ICMS

 

 

Solução

Foi desenvolvida regra de cálculo para aproximar o valor

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

NOTA FISCAL COM SUSPENSÃO DE IMPOSTOS

ESCREVER UM MONTANTE POR EXTENSO

NOTA FISCAL REMESSA - VALORES ERRADOS DE IPI E ICMS

A NF GLOBAL E COMPLEMENTAR NÃO ESTÁ TRATANDO ICMS DIFERIDO E SUSPENSÃO.

DI NÃO ESTÁ RESPEITANDO O PARÂMETRO REG_SUSP DA ZYCIT062 P ICMS

MENSAGENS NA NOTA DE REMESSA - ICMS TOTAL DA OPERAÇÃO

VERIFICAR A TABELA ZYCIT062 PARA TRATAR NÃO INCIDÊNCIA NA DI

NECESSIDADE DE CRIAR CHAMADA DE EXIT NO PROGRAMA DA DI NO CÁLCULO ICMS

Informações Complementares

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

Nota Número 04557 Data: 29/08/2007 Hora: 10:14:46

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

 

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

Nota Número              : 04557

Categoria                : Erro de Programa

Prioridade               : Baixa

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00013

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

Referência às notas relacionadas:

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

 

02261  - 00001 - 6.0    - 00025  - A NF GLOBAL E COMPLEMENTAR NÃO ESTÁ TRATANDO ICMS DIFERIDO E SUSP

03219  - 00004 - 6.0    - 00026  - NOTA FISCAL COM SUSPENSÃO DE IMPOSTOS

03303  - 00002 - 7.0    - 00001  - VERIFICAR A TABELA ZYCIT062 PARA TRATAR NÃO INCIDÊNCIA NA DI

04132  - 00003 - 7.0    - 00002  - ESCREVER UM MONTANTE POR EXTENSO

04488  - 00005 - 7.0    - 00002  - NOTA FISCAL REMESSA - VALORES ERRADOS DE IPI E ICMS

04509  - 00006 - 7.0    - 00002  - NECESSIDADE DE CRIAR CHAMADA DE EXIT NO PROGRAMA DA DI NO CÁLCULO

04542  - 00007 - 7.0    - 00003  - MENSAGENS NA NOTA DE REMESSA - ICMS TOTAL DA OPERAÇÃO

04679  - 00008 - 7.0    - 00003  - DI NÃO ESTÁ RESPEITANDO O PARÂMETRO REG_SUSP DA ZYCIT062 P ICMS

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

REDUÇÃO DE BASE DE IMPOSTO NOTA FISCAL

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

Palavras Chave:

REDUÇÃO DE BASE DE IMPOSTO NOTA FISCAL

 

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

Objetos da nota:

REPS /PWS/MZYCI016F01

REPS /PWS/MZYCI016X01

REPS /PWS/MZYCI023F03

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

      ENDIF.

    ELSEIF itab_zycit036-codigo = 'II'.

      v_montante1 = v_montante1 + itab_zycit036-vlreal.

    ELSEIF itab_zycit036-codigo = 'IPI'.

      v_ipi       = v_ipi + itab_zycit036-vlreal.

    ELSEIF itab_zycit036-codigo = 'ICMS'.

      v_icms      = v_icms + itab_zycit036-vlreal.

      v_basred    = itab_zycit003-basred.

    ENDIF.

  ENDLOOP.

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

  clear v_advicms.

  IF NOT itab_zycit003-advalicms IS INITIAL.

    IF /pws/zycit062-bs_pis_cof IS INITIAL.

      IF NOT itab_zycit003-basred IS INITIAL OR

         NOT itab_zycit003-basred EQ '100'.

        v_advicms = ( ( itab_zycit003-advalicms / 100 ) *

         ( itab_zycit003-basred / 100 ) ) .

      ELSE.

        v_advicms = ( itab_zycit003-advalicms / 100 ).

      ENDIF.

    ELSE.

      v_advicms = ( itab_zycit003-advalicms / 100 ).

    ENDIF.

    v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).

  ELSE.

* << Fim da inclusão

  v_basred    = itab_zycit003-basred.

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

  ENDIF.

* << Fim da inclusão

  IF v_basred IS INITIAL.

    v_basred = 100.

  ENDIF.

ENDFORM.

 

...

 

...

             ( itab_zycit042_d-vldpii /

             itab_zycit044-menge * itab_zycit044-qtd_item ) .

  v_outras_ic =  ( itab_zycit044-vldp /

            itab_zycit044-menge * itab_zycit044-qtd_item ) + v_vldp_044.

  it_zycee007-netoth = v_despesas + v_outras + v_ipi +

          v_vldp_044 .

  it_zycee007-netpr   = itab_zycit044-netpr.

  v_total = ( ( it_zycee007-netpr * itab_zycit044-qtd_item ) +

            it_zycee007-netfre + it_zycee007-netins +

            it_zycee007-netoth ).

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

  clear v_advicms.

  IF NOT itab_zycit003-advalicms IS INITIAL.

    IF /pws/zycit062-bs_pis_cof IS INITIAL.

      IF NOT itab_zycit003-basred IS INITIAL OR

         NOT itab_zycit003-basred EQ '100'.

        v_advicms = ( ( itab_zycit003-advalicms / 100 ) *

         ( itab_zycit003-basred / 100 ) ) .

      ELSE.

        v_advicms = ( itab_zycit003-advalicms / 100 ).

      ENDIF.

    ELSE.

      v_advicms = ( itab_zycit003-advalicms / 100 ).

    ENDIF.

    v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).

  ELSE.

    v_basred    = itab_zycit003-basred.

  ENDIF.

* << Fim da inclusão

ENDFORM.

...

 

...

 

  IF /pws/zycit001-tpdecl IS INITIAL.

    SELECT SINGLE *

      FROM /pws/zycit001

      WHERE nrseq EQ itab_zycit042-nrseq.

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

  ENDIF.

  clear v_advicms.

  IF NOT itab_zycit003-advalicms IS INITIAL.

    IF /pws/zycit062-bs_pis_cof IS INITIAL.

      IF NOT itab_zycit003-basred IS INITIAL OR

         NOT itab_zycit003-basred EQ '100'.

        v_advicms = ( ( itab_zycit003-advalicms / 100 ) *

         ( itab_zycit003-basred / 100 ) ) .

      ELSE.

        v_advicms = ( itab_zycit003-advalicms / 100 ).

      ENDIF.

    ELSE.

      v_advicms = ( itab_zycit003-advalicms / 100 ).

* << Fim da inclusão

  ENDIF.

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

    v_basred = ( v_advicms * 10000 / itab_zycit003-advalicms ).

  ELSE.

    v_basred    = itab_zycit003-basred.

  ENDIF.

* << Fim da inclusão

  IF NOT /pws/zycit100-vlicms IS INITIAL AND

     NOT /pws/zycit100-icms_dif = 'X'.

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

       NOT ' 456' CA /pws/zycit100-codregtriicms ) OR

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

       NOT '56'   CA /pws/zycit100-codregtri    ) .

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

      IF /pws/zycit062-tred IS INITIAL.

* << Fim da exclusão

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

      IF NOT /pws/zycit062-tred IS INITIAL.

* << Fim da inclusão

        itab_zycit042-netpr = itab_zycit042-netpr +

        ( ( /pws/zycit100-vlicms / itab_zycit042-qtd_iten )

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

            * 100 ) / itab_zycit003-basred.

* << Fim da exclusão

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

            * 100 ) / v_basred.

* << Fim da inclusão

      ELSE.

        itab_zycit042-netpr = itab_zycit042-netpr +

        ( /pws/zycit100-vlicms / itab_zycit042-qtd_iten ).

      ENDIF.

    ENDIF.

  ENDIF.

  IF /pws/zycit001-tpdecl EQ 'DSI'

  AND /pws/zycit100-codregtri EQ '4'.

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

      IF /pws/zycit062-tred IS INITIAL.

* << Fim da exclusão

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

      IF NOT /pws/zycit062-tred IS INITIAL.

* << Fim da inclusão

      itab_zycit042-netpr = itab_zycit042-netpr + ( (

          /pws/zycit100-vlicms / itab_zycit042-qtd_iten )

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

          * 100 ) / itab_zycit003-basred.

* << Fim da exclusão

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

          * 100 ) / v_basred.

* << Fim da inclusão

    ELSE.

      itab_zycit042-netpr = itab_zycit042-netpr +

      ( /pws/zycit100-vlicms / itab_zycit042-qtd_iten ).

    ENDIF.

  ENDIF.

ENDFORM.

 

...

 

...

  ELSE.

    it_zycee007-ownpro2 = 'X'.

  ENDIF.

  PERFORM valores_r.

  SELECT SINGLE * FROM /pws/zycit062

    WHERE regio = adrc-region.

  READ TABLE itab_zycit100 WITH KEY ebeln = itab_zycit044-ebeln

                                    ebelp = itab_zycit044-ebelp.

  v_total = ( itab_zycit100-baseicms /

            ( itab_zycit044-menge / itab_zycit044-qtd_item ) * 100 )

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

                  / itab_zycit003-basred.

* << Fim da exclusão

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

                  / v_basred.

* << Fim da inclusão

  CASE itab_zycit033-tribicms.

    WHEN 1.

      it_zycee007-base   = v_total.

      it_zycee007-base =

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

      ( it_zycee007-base * itab_zycit003-basred / 100 ).

      IF itab_zycit003-basred NE 100.

* << Fim da exclusão

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

      ( it_zycee007-base * v_basred / 100 ).

      IF v_basred NE 100.

* << Fim da inclusão

        it_zycee007-c_excbas = v_total - it_zycee007-base.

        IF NOT /pws/zycit062-tred IS INITIAL AND

           NOT /pws/zycit062-flag_icms IS INITIAL.

          it_zycee007-c_excbas    = it_zycee007-c_excbas *

                      ( 1 - ( itab_zycit003-advalicms / 100 ) ).

        ENDIF.

      ENDIF.

 

...

 

...

          ENDIF.

        ENDIF.

        v_icms_dif = v_icms_dif + v_icms.

        v_base_dif = v_base_dif + v_total.

      ELSE.

        it_zycee007-taxval = v_icms.

      ENDIF.

      v_base = it_zycee007-c_excbas.

    WHEN 3.

      it_zycee007-othbas = v_total.

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

      IF itab_zycit003-basred NE 100.

* << Fim da exclusão

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

      IF v_basred NE 100.

* << Fim da inclusão

        it_zycee007-othbas =

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

        ( it_zycee007-othbas * itab_zycit003-basred / 100 ).

* << Fim da exclusão

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

        ( it_zycee007-othbas * v_basred / 100 ).

* << Fim da inclusão

        it_zycee007-c_excbas = v_total - it_zycee007-othbas.

        IF NOT /pws/zycit062-tred IS INITIAL AND

           NOT /pws/zycit062-flag_icms IS INITIAL.

...

 

...

 

  CASE itab_zycit033-tribipi.

    WHEN 1.

      if not itab_zycit100-Baseipi is initial.

        it_zycee007-base2 = itab_zycit100-Baseipi /

           itab_zycit044-menge * itab_zycit044-qtd_item .

      endif.

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

      if itab_zycit003-basred is initial.

         itab_zycit003-basred = 100.

* << Fim da exclusão

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

      IF v_basred IS INITIAL.

        v_basred = 100.

* << Fim da inclusão

      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 +

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

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

* << Fim da exclusão

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

            ( ( v_icms * 100 ) / v_basred  ).

* << Fim da inclusão

      endif.

      endif.

      CLEAR it_zycee007-taxval2.

    WHEN 2.

      it_zycee007-p_excbas = v_base.

      CLEAR it_zycee007-taxval2.

    WHEN 3.

      if not itab_zycit100-Baseipi is initial.

      it_zycee007-othbas2  = itab_zycit100-Baseipi /

           itab_zycit044-menge * itab_zycit044-qtd_item .

      endif.

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

      if itab_zycit003-basred is initial.

         itab_zycit003-basred = 100.

* << Fim da exclusão

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

      IF v_basred IS INITIAL.

        v_basred = 100.

* << Fim da inclusão

      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 +

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

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

* << Fim da exclusão

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

            ( ( v_icms * 100 ) / v_basred  ).

* << Fim da inclusão

      endif.

      endif.

      CLEAR it_zycee007-taxval2.

  ENDCASE.

 

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI016X01

 

...

 

* >> Início da exclusão:

      v_basred      LIKE /pws/zycit036-basred,

* << Fim da exclusão

* >> Início da inclusão:

      v_basred      like /pws/zycie003-netpr,

* << Fim da inclusão

...

...

 

* >> Início da inclusão:

data  v_advicms type p decimals 3.

* << Fim da inclusão

DATA: END OF COMMON PART a.

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F03

 

...

 

FORM load_iicms USING p_tipo.

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

data v_trunc type p decimals 3.

* << Fim da inclusão

  CLEAR: t_ivdesp, v_advii, v_advipi, v_advicms,

          v_advpis, v_advcof, v_desp.

 DATA itab_zycit003_rateio LIKE /pws/zycit003 OCCURS 0 WITH HEADER LINE.

  SELECT  * FROM /pws/zycit438 INTO TABLE itab_zycit438

     WHERE regio = v_region

     AND   lei = 'MP252'.

  IF sy-subrc NE 0.

    SELECT  * FROM /pws/zycit438 INTO TABLE itab_zycit438

       WHERE regio = ' '

       AND   lei = 'MP252'.

...

 

...

  IF NOT /pws/zycie100a-reduzidaipi IS INITIAL.

    v_advipi  = ( /pws/zycie100a-reduzidaipi / 100 ).

  ELSE.

    v_advipi  = ( /pws/zycie003-advalipi / 100 ).

  ENDIF.

  IF /pws/zycit062-bs_pis_cof IS INITIAL.

    IF NOT /pws/zycie003-basred IS INITIAL OR

       NOT /pws/zycie003-basred EQ '100'.

      v_advicms = ( ( /pws/zycie003-advalicms / 100 ) *

       ( /pws/zycie003-basred / 100 ) ) .

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

       v_trunc = v_advicms.

       v_advicms = v_trunc.

* << Fim da inclusão

    ELSE.

      v_advicms = ( /pws/zycie003-advalicms / 100 ).

    ENDIF.

  ELSE.

    v_advicms = ( /pws/zycie003-advalicms / 100 ).

  ENDIF.

  v_advpis  = ( /pws/zycie100a-advalpis / 100 ).

  v_advcof  = ( /pws/zycie100a-advalcofins / 100 ).

  IF /pws/zycit000-pis_cof EQ 'X'.

    IF NOT itab_zycit438[] IS INITIAL.

...

 

...

  ENDIF.

  CLEAR: v_vlpisrec , v_vlcofrec.

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

    v_vlpisrec   = a_pisdevi.

    v_vlcofrec   = a_cofdevi.

  ELSE.

    v_vlpisrec   = t_pis   .

    v_vlcofrec   = t_cofins.

  ENDIF.

  IF v_nr_itens GT 1.

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

    IF NOT /pws/zycie003-advalicms IS INITIAL.

      t_icmsbs_d2 = t_icmsbs = ( t_ivadu +  v_vliirec + v_vlipirec +

      t_ivdesp + v_desp + v_vlpisrec + v_vlcofrec ) *

            ( v_advicms * 100 / /pws/zycie003-advalicms ).

    ELSE.

* << Fim da inclusão

    t_icmsbs_d2 = t_icmsbs = ( t_ivadu +  v_vliirec + v_vlipirec +

        t_ivdesp + v_desp + v_vlpisrec + v_vlcofrec ) *

        ( /pws/zycie003-basred / 100 ).

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

    ENDIF.

  ELSE.

    IF NOT /pws/zycie003-advalicms IS INITIAL.

      t_icmsbs_d2 = t_icmsbs = ( t_ivadu +  v_vliirec + v_vlipirec +

                    v_sisco3 + t_ivdesp + v_vlpisrec + v_vlcofrec  ) *

                    ( v_advicms * 100 / /pws/zycie003-advalicms ).

* << Fim da inclusão

  ELSE.

    t_icmsbs_d2 = t_icmsbs = ( t_ivadu +  v_vliirec + v_vlipirec +

             v_sisco3 + t_ivdesp + v_vlpisrec + v_vlcofrec  ) *

             ( /pws/zycie003-basred / 100 ).

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

    ENDIF.

* << Fim da inclusão

  ENDIF.

  IF NOT /pws/zycit062-flag_icms IS INITIAL AND

     /pws/zycie100a-icms_dif NE 'X'.

...