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
7.0
Produto:
Nota
Descrição
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.
...