CE PLUS - Nota 011808

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: DI

Data/Hora da Publicação: 04/01/2012 15:10:37

Data/Hora Última Alteração: 04/01/2012 15:10:37

Descrição da Nota: DIFERENÇA DE CENTAVOS ENTRE A BASE DE ICMS E O TOTAL DA NOTA FISCAL

Sintoma

Ao criar a Nota Fiscal está apresentando diferença de centavos entre a base de ICMS e o total da

Nota Fiscal mesmo estando parametrizado o tratamento de arredondamento.

 

 

Solução

Ajustada DI para efetuar o rateio de despesas utilizando campo com 2 casas decimais conforme

realizado na Nota fiscal.

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

TRAT. PARA ARRED. VALOR DA NOTA E PREENCH. LINHA II NA NOTA DE REMESSA

AJUSTE NO CALCULO DO VALOR DA MERCADORIA PARA CONFORME FEITO NA FATURA

Informações Complementares

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

Nota Número 11808 Data: 26/12/2011 Hora: 14:46:35

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

 

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

Nota Número              : 11808

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00010

Agrupamento              : 00099

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

Referência às notas relacionadas:

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

 

08231  - 00001 - 7.0    - 00009  - AJUSTE NO CALCULO DO VALOR DA MERCADORIA PARA CONFORME FEITO NA F

11617  - 00002 - 8.0    - 00009  - TRAT. PARA ARRED. VALOR DA NOTA E PREENCH. LINHA II NA NOTA DE RE

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

DIFERENÇA DE CENTAVOS ENTRE A BASE DE ICMS E O TOTAL DA NOTA FISCAL

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

Palavras Chave:

NOTA - FISCAL - DIFERENÇA - BASE - ICMS - DI - ARREDONDAMENTO - DESPESA

/PWS/SAPMZYCI023 - /PWS/ZYCI_AJUSTE_IMP_NF

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

Objetos da nota:

FUNC /PWS/ZYCI_AJUSTE_IMP_NF

REPS /PWS/MZYCI023F01

REPS /PWS/MZYCI023F03

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_AJUSTE_IMP_NF

 

...

* >> Início da exclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  DATA: v_valor_i    TYPE /pws/zycee007-othbas,

        v_valor_i2   TYPE /pws/zycee007-othbas,

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  DATA: v_valor_i    TYPE /pws/zycit085-vlfob,

        v_valor_i2   TYPE /pws/zycit085-vlfob,

        v_valor_i3   TYPE /pws/zycee007-othbas,

* << Fim da inclusão

...

 

...

            CLEAR v_ternacion.

          ELSE.

            v_ternacion = ( v_ternacion * zycit003-ntgew

                  / v_ntgew_tot ).

          ENDIF.

        ENDIF.

        v_valor_i  = v_valor_i - v_ternacion .

      ENDIF.

    ENDIF.

  ENDIF.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  IF NOT zycit003-qtd_itend IS INITIAL.

    v_valor_i = v_valor_i *

                 ( zycee007-menge / zycit003-qtd_itend ).

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

    v_valor_i2 = v_valor_i *

                 ( zycee007-menge / wa_zycit003-qtd_iten ).

  IF zycit062-flag_icms = 'X'.

    IF zycit100-icms_dif = 'X' OR

       zycit003-basred IS INITIAL.

      v_basred = 100.

    ENDIF.

    CLEAR v_advicms.

    IF NOT zycit003-advalicms IS INITIAL.

      IF NOT zycit003-basred IS INITIAL OR

         NOT zycit003-basred EQ '100'.

        v_advicms = ( ( zycit003-advalicms / 100 ) *

         ( zycit003-basred / 100 ) ) .

      ELSE.

        v_advicms = ( zycit003-advalicms / 100 ).

      ENDIF.

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

    ELSE.

      v_basred    = zycit003-basred.

    ENDIF.

    IF NOT zycit100-vlicms IS INITIAL AND

       NOT zycit100-icms_dif = 'X'.

      IF ( zycit085-tpdi EQ 'N' AND

         NOT ' 36' CA zycit100-codregtriicms ) OR

         ( zycit085-tpdi EQ 'S' AND

         NOT '56'   CA zycit100-codregtri    ) .

        IF ( zycit100-codregtriicms EQ '5'  AND

        ' N' CA zycit062-susp_nf ) OR

           zycit100-codregtriicms NE '5' .

          IF NOT zycit062-tred IS INITIAL.

            v_valor_i = v_valor_i +

                ( zycit100-vlicms * 100 ) / v_basred.

            v_valor_i2 = v_valor_i2 +

                ( zycee007-taxval * 100 ) / v_basred.

          ELSE.

            ADD zycit100-vlicms TO v_valor_i.

            ADD zycee007-taxval TO v_valor_i2.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

    IF tpdecl EQ 'DSI'

    AND zycit100-codregtri EQ '4'.

      IF NOT zycit062-tred IS INITIAL.

        v_valor_i = v_valor_i + ( zycit100-vlicms * 100 ) / v_basred.

        v_valor_i2 = v_valor_i2 +

          ( zycee007-taxval * 100 ) / v_basred.

* << Fim da inclusão

  ELSE.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

    v_valor_i = v_valor_i *

                 ( zycee007-menge / zycit003-qtd_iten ).

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

        ADD zycit100-vlicms TO v_valor_i.

        ADD zycee007-taxval TO v_valor_i2.

      ENDIF.

* << Fim da inclusão

  ENDIF.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  IF zycit062-flag_icms = 'X'.

    ADD zycee007-taxval TO v_valor_i.

* << Fim da exclusão

  ENDIF.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

    v_valor_i = v_valor_i *

                 ( zycee007-menge / wa_zycit003-qtd_iten ).

* << Fim da inclusão

  v_tot_nf = zycee007-netpr *  zycee007-menge.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  v_valor_i3 = v_valor_i.

* << Fim da inclusão

  v_vlverif1 =  v_tot_nf.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  v_vlverif = v_valor_i.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  v_vlverif = v_valor_i3.

* << Fim da inclusão

  IF NOT zycee007-base IS INITIAL.

    zycee007-base = zycee007-base +

                  ( v_vlverif1 - v_vlverif ).

  ELSEIF NOT zycee007-othbas IS INITIAL.

    zycee007-othbas =

        zycee007-othbas  +

       ( v_vlverif1 - v_vlverif ).

  ELSEIF NOT zycee007-c_excbas IS INITIAL.

    zycee007-c_excbas =

        zycee007-c_excbas  +

       ( v_vlverif1 - v_vlverif ).

  ENDIF.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  v_valor_i3 = v_valor_i2.

  v_vlverif = v_valor_i3.

* << Fim da inclusão

  IF NOT zycee007-base2 IS INITIAL.

    zycee007-base2 = zycee007-base2 -

                  ( v_vlverif - v_vlverif1 ) .

  ELSEIF NOT zycee007-othbas2 IS INITIAL.

    zycee007-othbas2 = zycee007-othbas2 -

                  ( v_vlverif - v_vlverif1 ) .

  ELSEIF NOT zycee007-p_excbas IS INITIAL.

    zycee007-p_excbas = zycee007-p_excbas -

                  ( v_vlverif - v_vlverif1 ) .

  ENDIF.

* >> Início da exclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  v_tot_nf = v_vlverif1 + zycee007-taxval2.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCI_AJUSTE_IMP_NF

  v_tot_nf = v_vlverif1 + zycee007-taxval2

      + zycee007-taxval_ii + zycee007-netfre +

        zycee007-netins + zycee007-netoth.

* << Fim da inclusão

  v_tot_line = zycee007-base + zycee007-othbas + zycee007-c_excbas.

  v_vlverif = v_tot_nf - v_tot_line.

  v_vlverif2 = abs( v_vlverif ).

  IF cent => v_vlverif2.

    IF NOT zycee007-base IS INITIAL.

      zycee007-base = zycee007-base + v_vlverif.

    ELSEIF NOT zycee007-othbas IS INITIAL.

      zycee007-othbas = zycee007-othbas  + v_vlverif.

    ELSEIF NOT zycee007-c_excbas IS INITIAL.

      zycee007-c_excbas = zycee007-c_excbas  + v_vlverif.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F01

 

...

                                       CHANGING  itab_zycit003-vlreal.

            ENDIF.

            IF NOT v_tot_real IS INITIAL.

              t_ivdes2 =  ( itab_zycit003-vlreal *

                            itab_zycit003-qtd_itenc3

                 / v_tot_real  ) * itab_zycit049-vlreal.

            ENDIF.

          ENDIF.

        ENDIF.

      ENDIF.

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

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

        v_casasd = t_ivdes2.

        t_ivdes2 = v_casasd.

      ENDIF.

* << Fim da inclusão

      IF p_tipo = 'I'.

        itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

        MODIFY itab_zycit049 TRANSPORTING vldp_aux.

      ENDIF.

      IF t_ivdes2 > 0.

        t_ivdesp = t_ivdesp + t_ivdes2.

      ENDIF.

    ENDIF.

  ENDLOOP.

  itab_memoria-despii     = t_ivdesp     .

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F03

 

...

                                                 /pws/zycie085-waersfob

                                         CHANGING  itab_zycit003-vlreal.

                ENDIF.

                t_ivdes2 =  ( itab_zycit003-vlreal *

                    itab_zycit003-qtd_itenc3

                   / v_tot_real  ) * itab_zycit049-vlreal.

              ENDIF.

            ENDIF.

          ENDIF.

        ENDIF.

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

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

          v_casasd = t_ivdes2.

          t_ivdes2 = v_casasd.

        ENDIF.

* << Fim da inclusão

        IF p_tipo = 'I'.

          itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

          MODIFY itab_zycit049 TRANSPORTING vldp_aux.

        ENDIF.

      ENDIF.

      IF itab_zycit049-tpdesp = wa_it000-cod_sisc.

        v_sisc_adicao = t_ivdes2.

      ENDIF.

      t_ivdesp = t_ivdesp + t_ivdes2.

    ENDIF.

...