CE PLUS - Nota 004943

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

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

Data/Hora Última Alteração: 22/02/2011 13:50:09

Descrição da Nota: ICMS REDUZIDO NA DI PARA MINAS GERAIS

Sintoma

Para Minas Gerais, os ICMS mesmo quando reduzido deve ser cálculado por dentro com o ICMS integral.

 

 

Solução

Foi alterado o prograda da DI para que quando o usuário preencha qualquer valor no campo base da

tabela ZYCIT062, o sistema cálculo o ICMS por dentro reduzido e quando esse campo estiver vazio, o

ICMS por dentro será o integral

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

DI NAO CALCULA CORRETAMENTE ICMS QUANDO REDUZIDO

Informações Complementares

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

Nota Número 04943 Data: 09/10/2007 Hora: 14:13:16

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

 

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

Nota Número              : 04943

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00016

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

Referência às notas relacionadas:

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

 

04922  - 00001 - 7.0    - 00003  - DI NAO CALCULA CORRETAMENTE ICMS QUANDO REDUZIDO

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

ICMS REDUZIDO NA DI PARA MINAS GERAIS

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

Palavras Chave:

ICMS REDUZIDO NA DI PARA MINAS GERAIS

 

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

Objetos da nota:

REPS /PWS/MZYCI023F03

 

REPS /PWS/MZYCI016F01

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

Modificações efetuadas em REPS /PWS/MZYCI023F03

 

...

  IF NOT /pws/zycie003-advalicms IS INITIAL AND

     NOT /pws/zycie100a-icms_dif EQ 'X'.

    t_icmsbs_d2 = t_icmsbs = t_icmsbs *

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

  ELSEIF NOT /pws/zycie100a-icms_dif EQ 'X'.

    t_icmsbs_d2 = t_icmsbs = t_icmsbs *

        ( /pws/zycie003-basred / 100 ).

  ENDIF.

  IF NOT /pws/zycit062-flag_icms IS INITIAL AND

     /pws/zycie100a-icms_dif NE 'X'.

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

    if /pws/zycit062-base is initial and

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

      t_icmsx = (  1 - ( /pws/zycie003-advalicms / 100 ) ).

    else.

* << Fim da inclusão

    t_icmsx = (  1 - v_advicms )  .

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

    endif.

* << Fim da inclusão

    t_icms_d2 = t_icms = ( /pws/zycie003-advalicms / 100 ) *

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

                               ( t_icmsbs / t_icmsx ) .

* << Fim da exclusão

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

                             ( t_icmsbs / t_icmsx ).

* << Fim da inclusão

    itab_it-vlicms   = t_icms.

    IF NOT /pws/zycie003-basred IS INITIAL AND

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

      t_icmsbs = ( t_icmsbs / t_icmsx ).

    ELSE.

      t_icmsbs_d2 = t_icmsbs = t_icmsbs + t_icms.

    ENDIF.

    IF /pws/zycit062-susp_nf EQ 'S'.

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

        t_icmsbs_d2 = t_icmsbs =

        t_icmsbs - t_icms.

      ENDIF.

    ENDIF.

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

  ELSE.

* << Fim da exclusão

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

  ELSEif NOT /pws/zycit062-flag_icms IS INITIAL.

* << Fim da inclusão

    IF /pws/zycit062-bs_cheia_dif EQ 'X'.

      t_icmsx =  1 -  ( /pws/zycie003-advalicms / 100 )  .

      t_icms_d2 = t_icms = ( /pws/zycie003-advalicms / 100 ) *

                           ( t_icmsbs / t_icmsx ) .

      t_icmsbs_d2 = t_icmsbs = t_icmsbs + t_icms.

    ELSE.

     t_icms_d2 = t_icms = ( /pws/zycie003-advalicms / 100 ) *  t_icmsbs.

    ENDIF.

    IF /pws/zycit062-susp_nf EQ 'S' AND

       NOT /pws/zycit062-flag_icms IS INITIAL.

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

        t_icmsbs_d2 = t_icmsbs =

        t_icmsbs - t_icms.

      ENDIF.

    ENDIF.

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

  else.

      t_icms_d2 = t_icms = ( /pws/zycie003-advalicms / 100 ) *

                           ( t_icmsbs ) .

      t_icmsbs_d2 = t_icmsbs .

* << Fim da inclusão

  ENDIF.

  IF '356' CA /pws/zycie100a-codregtriicms .

    CLEAR: t_icmsx, t_icms_d2, t_icms.

  ENDIF.

  itab_it-vlicms   = t_icms.

  IF p_tipo = 'I' OR p_tipo = 'T'     .

    s_wicdevi = s_wicdevi + t_icms    .

    s_wpisreco = s_wpisreco + t_pis   .

    s_wcofreco = s_wcofreco + t_cofins.

    IF NOT /pws/zycie003-nrseqd IS INITIAL OR

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

    IF NOT itab_zycit100-vlicms IS INITIAL.

      it_zycee007-taxval = itab_zycit036-vlreal.

    ELSE.

      CLEAR it_zycee007-taxval.

    ENDIF.

  ENDIF.

  IF NOT it_zycee007-taxval IS INITIAL.

    it_zycee007-rate = itab_zycit003-advalicms.

  ENDIF.

  it_zycee007-taxtyp = itab_zycit033-taxtyp.

  CASE itab_zycit033-tribicms.

    WHEN 1.

      PERFORM verifica_montante.

      v_montante1 = itab_zycit100-baseicms.

      v_base      = v_montante1.

      v_excbas    = ( v_montante1 / v_basred * 100 ) - v_base.

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

      IF /pws/zycit062-base IS INITIAL AND

         v_basred < '100' and

         NOT /pws/zycit062-flag_icms IS INITIAL.

        IF /pws/zycit062-tred IS INITIAL.

          READ TABLE itab_zycit003 WITH KEY

                                  nrseq = itab_zycit042-nrseq

                                  ebeln = itab_zycit042-ebeln

                                  ebelp = itab_zycit042-ebelp.

          v_excbas    = v_excbas - ( v_excbas *

                       ( itab_zycit003-advalicms / 100 ) ) .

        ENDIF.

      ELSE.

* << Fim da inclusão

      IF NOT /pws/zycit062-tred IS INITIAL AND

         NOT /pws/zycit062-flag_icms IS INITIAL AND

         v_basred < 100.

        READ TABLE itab_zycit003 WITH KEY

                                nrseq = itab_zycit042-nrseq

                                ebeln = itab_zycit042-ebeln

                                ebelp = itab_zycit042-ebelp.

        v_excbas    = v_excbas + ( v_excbas *

                     ( itab_zycit003-advalicms / 100 ) ) .

      ENDIF.

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

      ENDIF.

*<< Fim da inclusão

      IF itab_zycit100-icms_dif = 'X'.

        IF /pws/zycit062-flag_icms = 'X'.

          DATA: v_base2   LIKE j_1bdytax-base.

          CLEAR v_base2.

          v_base2 = v_base2 + v_base.

        ENDIF.

        v_base_dif  =  v_base_dif + v_base2.

      ENDIF.

      it_zycee007-base   = v_base.

      it_zycee007-c_excbas = v_excbas .

...

 

...

        v_base_dif =  v_base_dif + itab_zycit100-baseicms.

      ENDIF.

      IF /pws/zycit001-meioemba = 'PS'.

        v_base_ps = it_zycee007-c_excbas.

      ENDIF.

    WHEN 3.

      PERFORM verifica_montante.

      v_montante1 = itab_zycit100-baseicms.

      v_othbas    = v_montante1 .

      v_excbas    = ( v_montante1 / v_basred * 100 ) - v_othbas.

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

        IF /pws/zycit062-base IS INITIAL AND

           v_basred < '100' and

           NOT /pws/zycit062-flag_icms IS INITIAL.

          IF /pws/zycit062-tred IS INITIAL.

            READ TABLE itab_zycit003 WITH KEY

                                    nrseq = itab_zycit042-nrseq

                                    ebeln = itab_zycit042-ebeln

                                    ebelp = itab_zycit042-ebelp.

            v_excbas    = v_excbas - ( v_excbas *

                         ( itab_zycit003-advalicms / 100 ) ) .

          ENDIF.

        ELSE.

* << Fim da inclusão

      IF NOT /pws/zycit062-tred IS INITIAL AND

         NOT /pws/zycit062-flag_icms IS INITIAL AND

         v_basred < 100.

        READ TABLE itab_zycit003 WITH KEY

                                nrseq = itab_zycit042-nrseq

                                ebeln = itab_zycit042-ebeln

                                ebelp = itab_zycit042-ebelp.

        v_excbas    =  v_excbas + ( v_excbas *

        (  itab_zycit003-advalicms / 100 ) ).

      ENDIF.

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

        ENDIF.

* << Fim da inclusão

      IF itab_zycit100-icms_dif = 'X'.

        it_zycee007-othbas = it_zycee007-othbas

                     - itab_zycit100-vlicms.

        v_base_dif = v_base_dif + itab_zycit100-baseicms.

      ENDIF.

      it_zycee007-othbas = v_othbas.

      it_zycee007-c_excbas = v_excbas.

      IF /pws/zycit001-meioemba = 'PS'.

        v_base_ps = it_zycee007-othbas + it_zycee007-c_excbas.

      ENDIF.

...

 

 

...

  v_total = ( itab_zycit100-baseicms /

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

             / v_basred.

  CASE itab_zycit033-tribicms.

    WHEN 1.

      it_zycee007-base   = v_total.

      it_zycee007-base =

      ( it_zycee007-base * v_basred / 100 ).

      IF v_basred NE 100.

        it_zycee007-c_excbas = v_total - it_zycee007-base.

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

        IF /pws/zycit062-base IS INITIAL AND

           v_basred < '100' and

           NOT /pws/zycit062-flag_icms IS INITIAL.

          IF /pws/zycit062-tred IS INITIAL.

            it_zycee007-c_excbas = it_zycee007-c_excbas -

           ( it_zycee007-c_excbas * ( itab_zycit003-advalicms / 100 ) ).

          ENDIF.

        ELSE.

* << Fim da inclusão

        IF NOT /pws/zycit062-tred IS INITIAL AND

           NOT /pws/zycit062-flag_icms IS INITIAL.

          it_zycee007-c_excbas = it_zycee007-c_excbas +

           ( it_zycee007-c_excbas * ( itab_zycit003-advalicms / 100 ) ).

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

          ENDIF.

* << Fim da inclusão

        ENDIF.

      ENDIF.

      IF itab_zycit100-icms_dif EQ 'X'.

...

 

...

      ELSE.

        it_zycee007-taxval = v_icms.

      ENDIF.

      v_base = it_zycee007-c_excbas.

    WHEN 3.

      it_zycee007-othbas = v_total.

      IF v_basred NE 100.

        it_zycee007-othbas =

         ( it_zycee007-othbas * v_basred / 100 ).

        it_zycee007-c_excbas = v_total - it_zycee007-othbas.

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

        IF /pws/zycit062-base IS INITIAL AND

           v_basred < '100' and

           NOT /pws/zycit062-flag_icms IS INITIAL.

          IF /pws/zycit062-tred IS INITIAL.

            it_zycee007-c_excbas = it_zycee007-c_excbas -

           ( it_zycee007-c_excbas * ( itab_zycit003-advalicms / 100 ) ).

          ENDIF.

        ELSE.

* << Fim da inclusão

        IF NOT /pws/zycit062-tred IS INITIAL AND

           NOT /pws/zycit062-flag_icms IS INITIAL.

          it_zycee007-c_excbas = it_zycee007-c_excbas +

           ( it_zycee007-c_excbas * ( itab_zycit003-advalicms / 100 ) ).

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

          ENDIF.

* << Fim da inclusão

        ENDIF.

      ENDIF.

      IF itab_zycit100-icms_dif EQ 'X'.

...