CE PLUS - Nota 005011

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Nota Fiscal

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

Data/Hora Última Alteração: 23/02/2011 09:15:25

Descrição da Nota: ERRO NO RATEIO DE DESPESAS DA DI AO FAZER A NF

Sintoma

Erro no rateio de despesas da di com base de icms no momento de criar a nota fiscal.

 

 

Solução

Foi ajustada a nota fiscal para realizar o rateio pelo CIF

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

ERRO NO CÁLCULO DE DESPESAS E VALORES DA NF UTILIZANDO GRANEL + CIF

Informações Complementares

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

Nota Número 05011 Data: 17/10/2007 Hora: 15:42:35

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

 

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

Nota Número              : 05011

Categoria                : Erro de Programa

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00017

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

Referência às notas relacionadas:

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

 

04009  - 00001 - 7.0    - 00001  - ERRO NO CÁLCULO DE DESPESAS E VALORES DA NF UTILIZANDO GRANEL + C

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

ERRO NO RATEIO DE DESPESAS DA DI AO FAZER A NF

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

Palavras Chave:

RATEIO - DESPESAS - RATEIO CIF - DI - /PWS/ZYCIT062

 

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

Objetos da nota:

REPS /PWS/MZYCI016F01

REPS /PWS/MZYCI023F03

 

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

Modificações efetuadas em REPS /PWS/MZYCI016F01

 

...

 

FORM seleciona_despesas.

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

  DATA:

   v_vlfre LIKE /pws/zycit085-vlfre,

   v_vlseg LIKE /pws/zycit085-vlseg.

* << Fim da inclusão

...

 

...

                                                    v_tot_ntgew.

                ELSE.

                  v_vldp = itab_zycit049_a-vldp * itab_zycit003-ntgew /

                           v_tot_ntgew.

                ENDIF.

              ENDIF.

            ELSEIF itab_zycit039-proporplan = 'X'.

              v_vldp = itab_zycit049_a-vldp *

                       ( itab_zycit003-netpr *

                       itab_zycit003-qtd_iten / v_tot_plan ).

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

            ELSE.

              IF /pws/zycit062-bs_rat_icms EQ 'CIF' and

                itab_zycit020-baseicms eq 'X'.

                READ TABLE itab_zycit100 WITH KEY

                           nrseq = itab_zycit042_d-nrseq

                           ebeln = itab_zycit042_d-ebeln

                           ebelp = itab_zycit042_d-ebelp.

                IF sy-subrc EQ 0.

                  v_vlfre = /pws/zycit085-vlfre.

                  v_vlseg = /pws/zycit085-vlseg.

                  IF /pws/zycit085-waersfre

                     NE /pws/zycit085-waersfob .

                   PERFORM calc_conv_moeda USING /pws/zycit085-waersfre

                                                 /pws/zycit085-waersfob

                                              CHANGING v_vlfre .

                  ENDIF.

                  PERFORM taxa_converte USING  /pws/zycit085-waersfob

                                               /pws/zycit085-dttax

                                     CHANGING  v_taxa_desp.

                  IF NOT v_taxa_desp IS INITIAL.

                itab_zycit100-vlfre = itab_zycit100-vlfre / v_taxa_desp.

                itab_zycit100-vlseg = itab_zycit100-vlseg / /pws/zycit085-ukursseg.

                  ENDIF.

                  v_vldp = itab_zycit049_a-vlreal *

                  ( ( itab_zycit100-vlfob +

                  itab_zycit100-vlfre + itab_zycit100-vlseg )

                   / ( /pws/zycit085-vlfob  + /pws/zycit085-vlfre +

                       /pws/zycit085-vlseg ) ).

                ENDIF.

* << Fim da inclusão

            ELSE.

              v_vldp = itab_zycit049_a-vldp *

                      ( itab_zycit003-vlreal *

                      itab_zycit003-qtd_iten / v_tot_real ).

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

              ENDIF.

* << Fim da inclusão

            ENDIF.

            v_tot_vldp = v_tot_vldp + v_vldp.

            itab_zycit042_d-vldp = itab_zycit042_d-vldp + v_vldp.

...

 

...

                                                            v_tot_ntgew.

                    ELSE.

                    v_vldp = itab_zycit049-vldp * itab_zycit003-ntgew /

                                                            v_tot_ntgew.

                    ENDIF.

                  ENDIF.

                ELSEIF itab_zycit039-proporplan = 'X'.

                  v_vldp = itab_zycit049-vldp *

                       ( itab_zycit003-netpr *

                       itab_zycit003-qtd_iten /  v_tot_plan ).

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

                ELSE.

              IF /pws/zycit062-bs_rat_icms EQ 'CIF' and

                itab_zycit020-baseicms eq 'X'.

                    READ TABLE itab_zycit100 WITH KEY

                               nrseq = itab_zycit042-nrseq

                               ebeln = itab_zycit042-ebeln

                               ebelp = itab_zycit042-ebelp.

                    IF sy-subrc EQ 0.

                      v_vlfre = /pws/zycit085-vlfre.

                      v_vlseg = /pws/zycit085-vlseg.

                      IF /pws/zycit085-waersfre

                         NE /pws/zycit085-waersfob .

                   PERFORM calc_conv_moeda USING /pws/zycit085-waersfre

                                                 /pws/zycit085-waersfob

                                                  CHANGING v_vlfre .

                      ENDIF.

                    PERFORM taxa_converte USING  /pws/zycit085-waersfob

                                                   /pws/zycit085-dttax

                                         CHANGING  v_taxa_desp.

                      IF NOT v_taxa_desp IS INITIAL.

                itab_zycit100-vlfre = itab_zycit100-vlfre / v_taxa_desp.

                itab_zycit100-vlseg = itab_zycit100-vlseg / /pws/zycit085-ukursseg.

                      ENDIF.

                      v_vldp = itab_zycit049-vlreal *

                      ( ( itab_zycit100-vlfob +

                      itab_zycit100-vlfre + itab_zycit100-vlseg )

                       / ( /pws/zycit085-vlfob  + /pws/zycit085-vlfre +

                           /pws/zycit085-vlseg ) ).

                    ENDIF.

* << Fim da inclusão

                ELSE.

                  v_vldp = itab_zycit049-vldp *

                      ( itab_zycit003-vlreal *

                        itab_zycit003-qtd_iten / v_tot_real ).

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

                  ENDIF.

* << Fim da inclusão

                ENDIF.

                v_tot_vldp = v_tot_vldp + v_vldp.

                itab_zycit042-vldp = itab_zycit042-vldp + v_vldp.

...

 

...

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

    IF NOT /pws/zycit062-tred IS INITIAL.

      itab_zycit042-netpr = itab_zycit042-netpr + ( (

          /pws/zycit100-vlicms / itab_zycit042-qtd_iten )

            * 100 ) / v_basred.

    ELSE.

      itab_zycit042-netpr = itab_zycit042-netpr +

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

    ENDIF.

  ENDIF.

ENDFORM.

 

...

 

...

 

* >> Início da inclusão:

FORM calc_conv_moeda USING    p_waersfrom

                              p_waersto

                     CHANGING p_value.

  IF /pws/zycbt007 IS INITIAL.

    SELECT SINGLE * FROM /pws/zycbt007

                   WHERE bukrs EQ /pws/zycie041-bukrs.

  ENDIF.

  PERFORM taxa_converte USING  p_waersfrom

                               /pws/zycit085-dttax

                     CHANGING  v_taxa_desp.

  IF NOT v_taxa_desp IS INITIAL.

    p_value = p_value * v_taxa_desp.

    IF p_waersto NE /pws/zycbt007-waersb.

      PERFORM taxa_converte USING

             p_waersto /pws/zycit085-dttax v_taxa_desp.

    ELSE.

      v_taxa_desp = 1.

    ENDIF.

    IF NOT v_taxa_desp IS INITIAL AND NOT p_value IS INITIAL.

      p_value = p_value / v_taxa_desp.

    ENDIF.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI023F03

...

  ENDIF.

  CLEAR v_nova.

  IF /pws/zycie085-dtuserc IS INITIAL.

    /pws/zycie085-dtuserc = sy-datlo.

  ENDIF.

  CLEAR : v_fatx, v_xa , v_xb , v_xc, v_faty, v_fatpc.

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

    IF /pws/zycit000-flag_txsisc IS INITIAL OR v_dit NE 'N' OR

       wa_it000-cod_sisc NE itab_zycit049-tpdesp.

      IF NOT itab_zycit049-tipo EQ 'D'.

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

        IF v_idx EQ v_ipt AND v_ipt NE 1.

          t_ivdes2 = itab_zycit049-vlreal - itab_zycit049-vldp_aux.

        ELSE.

* << Fim da exclusão

          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'.

            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.

...

 

...

                  t_ivdes2 =  ( itab_zycit003-vlreal *

                      itab_zycit003-qtd_iten

                     / v_tot_real  ) * itab_zycit049-vlreal.

                ENDIF.

              ENDIF.

            ENDIF.

          ENDIF.

          IF p_tipo = 'I'.

            itab_zycit049-vldp_aux = itab_zycit049-vldp_aux + t_ivdes2.

            MODIFY itab_zycit049 TRANSPORTING vldp_aux.

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

          ENDIF.

* << Fim da exclusão

        ENDIF.

      ENDIF.

      t_ivdesp = t_ivdesp + t_ivdes2.

    ENDIF.

  ENDLOOP.

  CLEAR: v_nr_itens, v_desp. CLEAR: itab_zycit100_temp.

  REFRESH itab_zycit100_temp.

  MOVE itab_it[] TO itab_zycit100_temp[].

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

 INITIAL.

...