Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Nota Fiscal
Data/Hora da Publicação: 21/06/2007 00:00:00
Data/Hora Última Alteração: 23/02/2011 09:14:20
Descrição da Nota: ERRO NO CÁLCULO DE DESPESAS E VALORES DA NF UTILIZANDO GRANEL + CIF
Sintoma
ao fazer a nota fiscal ocorrem diferenças em rateio de despesas, valores de mercadoria e valor total
da nota devido à utilização de granel + cif.
Solução
Atualização da nota fiscal para correção de cálculos de valores quando processo à granel
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04009 Data: 21/06/2007 Hora: 18:14:52
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04009
Categoria : Erro de Programa
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00001
Agrupamento : 00171
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02225 - 00001 - 6.0 - 00025 - VALOR TOTAL DA NOTA INCORRETO
02396 - 00002 - 6.0 - 00025 - FATURA DE DESPESA PARA EMBARQUES DE SERVIÇO
03924 - 00003 - 7.0 - 00001 - ERRO NO RATEIO DE VALOR DE DESPESAS DA DI.
----------------------------------------------------------------------------------------------------
ERRO NO CÁLCULO DE DESPESAS E VALORES DA NF UTILIZANDO GRANEL + CIF
----------------------------------------------------------------------------------------------------
Palavras Chave:
CÁLCULO DE DESPESAS - VALORES DA NF - GRANEL - CIF
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCI_RATEIO_CUSTO
REPS /PWS/MZYCI016F01
REPS /PWS/MZYCI023F01
REPS /PWS/MZYCI023F03
REPS /PWS/MZYCI023X01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCI_RATEIO_CUSTO
...
LOOP AT itab_zycit036_aux WHERE codigo = 'FRETEI' AND
origem = v_ori.
v_tfrete = v_tfrete + itab_zycit036_aux-vlreal.
ENDLOOP.
ENDIF.
LOOP AT itab_zycit003 .
IF ( v_vinserv IS INITIAL AND
itab_zycit003-servico IS INITIAL ) OR
( v_vinserv EQ 'X' AND itab_zycit003-servico EQ 'X' ) .
v_vlfrete = v_tfrete * ( itab_zycit003-ntgew / v_tpeso ).
* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
IF itab_zycit003-qtd_itend IS INITIAL.
* << Fim da exclusão
v_tot = v_tot + ( itab_zycit003-netpr * itab_zycit003-qtd_iten ).
* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
ELSE.
v_tot = v_tot + ( itab_zycit003-netpr * itab_zycit003-qtd_itend ).
ENDIF.
* << Fim da exclusão
v_tot_vlreal = v_tot_vlreal + ( itab_zycit003-vlreal *
itab_zycit003-qtd_iten ).
ENDIF.
ENDLOOP.
...
...
IF NOT v_tpeso IS INITIAL.
itab_zycit036_aux-vlreal = itab_despesa-netpr -
v_tot_desp.
itab_zycit036_aux-waers_real = itab_despesa-waers.
ENDIF.
ELSEIF itab_zycit039-proporplan EQ 'X'.
itab_zycit036_aux-vlreal = itab_despesa-netpr -
v_tot_desp.
itab_zycit036_aux-waers_real = itab_despesa-waers.
ELSEIF itab_zycit039-vlreal EQ 'X'.
* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
itab_zycit036_aux-vlreal = itab_despesa-netpr -
v_tot_desp.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
itab_zycit036_aux-vlreal =
( itab_zycit003-vlreal * itab_zycit003-qtd_iten
/ v_tot_vlreal ) * itab_despesa-netpr .
* << Fim da inclusão
itab_zycit036_aux-waers_real = itab_despesa-waers.
ELSE.
v_erro = '1'.
EXIT.
ENDIF.
IF NOT itab_despesa-waers IS INITIAL.
itab_zycit036_aux-waers_real = itab_despesa-waers.
ELSE.
itab_zycit036_aux-waers_real = /pws/zycbt007-waersb.
ENDIF.
...
...
/pws/zycie085-dttax
t001-land1
CHANGING v_taxa.
IF NOT v_taxa IS INITIAL.
v_tfre = v_tfre / v_taxa.
ENDIF.
ELSE.
v_tfre = /pws/zycie085-vlfre.
ENDIF.
v_vtot = /pws/zycie085-vlfob + v_tfre + v_tseg.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
itab_zycit036_aux-vlreal =
( itab_zycit003-vlreal * itab_zycit003-qtd_iten
/ v_tot_vlreal ) * itab_despesa-netpr .
* << Fim da inclusão
* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
IF NOT v_vtot IS INITIAL.
itab_zycit036_aux-vlreal = itab_despesa-netpr *
( ( v_vfob + v_vfre + v_vseg ) / v_vtot ) .
* << Fim da exclusão
ENDIF.
* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
ENDIF.
ELSE.
IF NOT v_tot IS INITIAL.
IF NOT itab_zycit003-qtd_itend IS INITIAL .
itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *
itab_zycit003-qtd_itend / v_tot ) *
itab_despesa-netpr.
* << Fim da exclusão
ELSE.
* >> Início da exclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *
itab_zycit003-qtd_iten / v_tot ) *
itab_despesa-netpr.
ENDIF.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCI_RATEIO_CUSTO
itab_zycit036_aux-vlreal =
( itab_zycit003-vlreal * itab_zycit003-qtd_iten
/ v_tot_vlreal ) * itab_despesa-netpr .
* << Fim da inclusão
itab_zycit036_aux-waers_real = itab_despesa-waers.
ENDIF.
ELSE.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *
itab_zycit003-qtd_itend / v_tot ) *
itab_despesa-netpr.
ELSE.
itab_zycit036_aux-vlreal = ( itab_zycit003-netpr *
itab_zycit003-qtd_iten / v_tot ) *
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI016F01
...
( ( itab_zycit100-vlfre - itab_zycit003-vlfre_fat *
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_iten ) +
( ( itab_zycit100-vlfre - itab_zycit003-vlfre_fat *
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_itend ) .
ENDIF.
ELSEIF /pws/zycit031-inco1_ci = 'CIF' AND
NOT itab_zycit003-qtd_iten IS INITIAL AND
NOT itab_zycit003-qtd_itend IS INITIAL.
* >> Início da exclusão: FORM SELECIONA_ITENS_NFG
IF NOT /pws/zycit085-vlfre IS INITIAL .
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_ITENS_NFG
IF NOT /pws/zycit085-vlfre IS INITIAL AND
NOT itab_zycit100-vlseg IS INITIAL .
* << Fim da inclusão
itab_zycit042-netpr = itab_zycit042-netpr -
( ( itab_zycit100-vlfre - itab_zycit003-vlfre_fat *
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_iten ) +
( ( itab_zycit100-vlfre - itab_zycit003-vlfre_fat *
* >> Início da inclusão: FORM SELECIONA_ITENS_NFG
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_itend ) -
( ( itab_zycit100-vlseg - itab_zycit003-vlseg_fat *
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_iten ) +
( ( itab_zycit100-vlseg - itab_zycit003-vlseg_fat *
* << Fim da inclusão
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_itend ).
* >> Início da exclusão: FORM SELECIONA_ITENS_NFG
ENDIF.
IF NOT itab_zycit100-vlseg IS INITIAL .
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_ITENS_NFG
ELSEIF NOT itab_zycit100-vlseg IS INITIAL .
* << Fim da inclusão
itab_zycit042-netpr = itab_zycit042-netpr -
( ( itab_zycit100-vlseg - itab_zycit003-vlseg_fat *
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_iten ) +
( ( itab_zycit100-vlseg - itab_zycit003-vlseg_fat *
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_itend ).
* >> Início da inclusão: FORM SELECIONA_ITENS_NFG
ELSEIF NOT /pws/zycit085-vlfre IS INITIAL.
itab_zycit042-netpr = itab_zycit042-netpr -
( ( itab_zycit100-vlfre - itab_zycit003-vlfre_fat *
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_iten ) +
( ( itab_zycit100-vlfre - itab_zycit003-vlfre_fat *
itab_zycit100-dttaxbem )
/ itab_zycit003-qtd_itend ) .
* << Fim da inclusão
ENDIF.
ENDIF.
ELSE.
MOVE wa_zycit042 TO itab_zycit042.
ENDIF.
IF sy-subrc = 0 AND /pws/zycit062-flag_icms = 'X'.
PERFORM atualiza_icms_unitario.
ENDIF.
IF /pws/zycit041-nrseq IS INITIAL.
/pws/zycit041-nrseq = /pws/zycie041-nrseq.
...
...
CHANGING /pws/zycit093-ternacion.
v_ternacion = /pws/zycit093-ternacion.
IF /pws/zycie085-dttax IS INITIAL.
/pws/zycie085-dttax = /pws/zycit085-dttax.
ENDIF.
IF /pws/zycit093-waersfre = /pws/zycbt007-waersb.
IF NOT v_ntgew_tot IS INITIAL.
v_ternacion = ( v_ternacion * itab_zycit003-ntgew
/ v_ntgew_tot ).
ENDIF.
* >> Início da inclusão: FORM SELECIONA_ITENS_NFG
IF NOT itab_zycit003-qtd_itend IS INITIAL.
itab_zycit042-netpr = itab_zycit042-netpr -
( v_ternacion / itab_zycit003-qtd_iten ).
ELSE.
* << Fim da inclusão
IF NOT itab_zycit042-qtd_iten IS INITIAL.
itab_zycit042-netpr = itab_zycit042-netpr -
( v_ternacion / itab_zycit042-qtd_iten ).
* >> Início da inclusão: FORM SELECIONA_ITENS_NFG
ENDIF.
* << Fim da inclusão
ENDIF.
ELSE.
PERFORM taxa_converte USING /pws/zycit093-waersfre
/pws/zycit085-dttax
CHANGING v_taxa_desp.
v_ternacion = v_ternacion * v_taxa_desp .
IF NOT v_ntgew_tot IS INITIAL.
v_ternacion = ( v_ternacion * itab_zycit003-ntgew
/ v_ntgew_tot ).
ENDIF.
* >> Início da inclusão: FORM SELECIONA_ITENS_NFG
IF NOT itab_zycit003-qtd_itend IS INITIAL.
itab_zycit042-netpr = itab_zycit042-netpr -
( v_ternacion / itab_zycit003-qtd_iten ).
ELSE.
* << Fim da inclusão
IF NOT itab_zycit042-qtd_iten IS INITIAL.
itab_zycit042-netpr = itab_zycit042-netpr -
( v_ternacion / itab_zycit042-qtd_iten ).
* >> Início da inclusão: FORM SELECIONA_ITENS_NFG
ENDIF.
* << Fim da inclusão
ENDIF.
ENDIF.
ENDIF.
ENDIF.
...
...
SELECT * FROM /pws/zycit039 INTO TABLE itab_zycit039
FOR ALL ENTRIES IN itab_zycit020
WHERE codmod = 'D'
AND codigo = itab_zycit020-codigo
AND land1 EQ t001-land1.
ENDIF.
CLEAR: v_tot_ntgew, v_tot_plan, v_tot_real.
LOOP AT itab_zycit003.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.
* >> Início da exclusão: FORM MENSAGENS_NF
v_tot_plan = v_tot_plan +
( itab_zycit003-netpr * itab_zycit003-qtd_itend ).
v_tot_real = v_tot_real +
( itab_zycit003-vlreal * itab_zycit003-qtd_itend ).
* << Fim da exclusão
ELSE.
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.
* >> Início da inclusão: FORM MENSAGENS_NF
ENDIF.
* << Fim da inclusão
v_tot_plan = v_tot_plan +
( itab_zycit003-netpr * itab_zycit003-qtd_iten ).
v_tot_real = v_tot_real +
( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).
* >> Início da exclusão: FORM MENSAGENS_NF
ENDIF.
* << Fim da exclusão
ENDLOOP.
DESCRIBE TABLE itab_zycit042 LINES v_lines.
DESCRIBE TABLE itab_zycit003 LINES v_lin.
LOOP AT itab_zycit049_aux_r WHERE nrseq = v_nrseq AND
vldp NE 0.
it_zycee006-indice = v_ind.
IF itab_zycit049_aux_r-tpdesp EQ /pws/zycit000-cod_sisc.
IF itab_zycit049_aux_r-waers NE /pws/zycbt007-waersb.
PERFORM taxa_converte USING itab_zycit049_aux_r-waers
itab_zycit085-dttax CHANGING v_taxa_desp.
...
...
INTO TABLE itab_zycit049_a
FOR ALL ENTRIES IN itab_zycit019
WHERE nrseq = /pws/zycie041-nrseq
AND vldp > 0
AND tpdesp = itab_zycit019-tpdesp.
ENDIF.
DESCRIBE TABLE itab_zycit042_d LINES v_lines.
CLEAR: v_tot_ntgew, v_tot_plan, v_tot_real.
LOOP AT itab_zycit003.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
* >> Início da exclusão: FORM SELECIONA_DESPESAS
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.
v_tot_plan = v_tot_plan +
( itab_zycit003-netpr * itab_zycit003-qtd_itend ).
v_tot_real = v_tot_real +
( itab_zycit003-vlreal * itab_zycit003-qtd_itend ).
* << Fim da exclusão
* >> Início da inclusão: FORM SELECIONA_DESPESAS
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgewd.
* << Fim da inclusão
ELSE.
v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
ENDIF.
* << Fim da inclusão
v_tot_plan = v_tot_plan +
( itab_zycit003-netpr * itab_zycit003-qtd_iten ).
v_tot_real = v_tot_real +
( itab_zycit003-vlreal * itab_zycit003-qtd_iten ).
* >> Início da exclusão: FORM SELECIONA_DESPESAS
ENDIF.
* << Fim da exclusão
ENDLOOP.
LOOP AT itab_zycit049_a.
IF itab_zycit049_a-tpdesp NE /pws/zycit000-cod_sisc OR
/pws/zycit000-flag_txsisc IS INITIAL OR
/pws/zycit001-tpdecl = 'DSI'.
CLEAR: v_tot_vldp, v_vldp.
LOOP AT itab_zycit042_d.
MOVE sy-tabix TO v_tabix.
READ TABLE itab_zycit003 WITH KEY
nrseq = itab_zycit042_d-nrseq
...
...
itab_zycit049_a-waers = /pws/zycbt007-waersb.
ENDIF.
IF v_lines = v_tabix.
v_vldp = itab_zycit049_a-vldp - v_tot_vldp.
itab_zycit042_d-vldp = itab_zycit042_d-vldp + v_vldp.
CLEAR v_vldp.
ELSE.
IF itab_zycit039-divabs = 'X'.
v_vldp = itab_zycit049_a-vldp / v_lines.
ELSEIF itab_zycit039-peso = 'X'.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
IF NOT v_tot_ntgew IS INITIAL.
IF NOT itab_zycit003-ntgewd IS INITIAL.
v_vldp = itab_zycit049_a-vldp * itab_zycit003-ntgewd /
v_tot_ntgew.
ELSE.
* << Fim da inclusão
v_vldp = itab_zycit049_a-vldp * itab_zycit003-ntgew /
v_tot_ntgew.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
ENDIF.
ENDIF.
* << Fim da inclusão
ELSEIF itab_zycit039-proporplan = 'X'.
* >> Início da exclusão: FORM SELECIONA_DESPESAS
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_vldp = itab_zycit049_a-vldp *
( itab_zycit003-netpr *
itab_zycit003-qtd_itend / v_tot_plan ).
ELSE.
* << Fim da exclusão
v_vldp = itab_zycit049_a-vldp *
( itab_zycit003-netpr *
itab_zycit003-qtd_iten / v_tot_plan ).
* >> Início da exclusão: FORM SELECIONA_DESPESAS
ENDIF.
ELSE.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_vldp = itab_zycit049_a-vldp *
( itab_zycit003-vlreal *
itab_zycit003-qtd_itend / v_tot_real ).
* << Fim da exclusão
ELSE.
v_vldp = itab_zycit049_a-vldp *
( itab_zycit003-vlreal *
itab_zycit003-qtd_iten / v_tot_real ).
* >> Início da exclusão: FORM SELECIONA_DESPESAS
ENDIF.
* << Fim da exclusão
ENDIF.
v_tot_vldp = v_tot_vldp + v_vldp.
itab_zycit042_d-vldp = itab_zycit042_d-vldp + v_vldp.
...
...
itab_zycit049-waers = /pws/zycbt007-waersb.
ENDIF.
IF v_lines = v_tabix.
v_vldp = itab_zycit049-vldp - v_tot_vldp.
itab_zycit042-vldp = itab_zycit042-vldp + v_vldp.
CLEAR v_vldp.
ELSE.
IF itab_zycit039-divabs = 'X'.
v_vldp = itab_zycit049-vldp / v_lines.
ELSEIF itab_zycit039-peso = 'X'.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
IF NOT v_tot_ntgew IS INITIAL.
IF NOT itab_zycit003-ntgewd IS INITIAL.
v_vldp = itab_zycit049-vldp * itab_zycit003-ntgewd /
v_tot_ntgew.
ELSE.
* << Fim da inclusão
v_vldp = itab_zycit049-vldp * itab_zycit003-ntgew /
v_tot_ntgew.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
ENDIF.
ENDIF.
* << Fim da inclusão
ELSEIF itab_zycit039-proporplan = 'X'.
* >> Início da exclusão: FORM SELECIONA_DESPESAS
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_vldp = itab_zycit049-vldp *
( itab_zycit003-netpr *
itab_zycit003-qtd_itend / v_tot_plan ).
ELSE.
* << Fim da exclusão
v_vldp = itab_zycit049-vldp *
( itab_zycit003-netpr *
itab_zycit003-qtd_iten / v_tot_plan ).
* >> Início da exclusão: FORM SELECIONA_DESPESAS
ENDIF.
ELSE.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_vldp = itab_zycit049-vldp *
( itab_zycit003-vlreal *
itab_zycit003-qtd_itend / v_tot_real ).
* << Fim da exclusão
ELSE.
v_vldp = itab_zycit049-vldp *
( itab_zycit003-vlreal *
itab_zycit003-qtd_iten / v_tot_real ).
* >> Início da exclusão: FORM SELECIONA_DESPESAS
ENDIF.
* << Fim da exclusão
ENDIF.
v_tot_vldp = v_tot_vldp + v_vldp.
itab_zycit042-vldp = itab_zycit042-vldp + v_vldp.
...
...
itab_zycit049-waers = /pws/zycbt007-waersb.
ENDIF.
IF v_lines = v_tabix.
v_vldp = itab_zycit049-vldp - v_tot_vldp.
itab_zycit042_d-vldpii = itab_zycit042_d-vldpii + v_vldp.
CLEAR v_vldp.
ELSE.
IF itab_zycit039-divabs = 'X'.
v_vldp = itab_zycit049-vldp / v_lines.
ELSEIF itab_zycit039-peso = 'X'.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
IF NOT v_tot_ntgew IS INITIAL.
IF NOT itab_zycit003-ntgewd IS INITIAL.
v_vldp = itab_zycit049-vldp * itab_zycit003-ntgewd /
v_tot_ntgew.
ELSE.
* << Fim da inclusão
v_vldp = itab_zycit049-vldp * itab_zycit003-ntgew /
v_tot_ntgew.
* >> Início da inclusão: FORM SELECIONA_DESPESAS
ENDIF.
ENDIF.
* << Fim da inclusão
ELSEIF itab_zycit039-proporplan = 'X'.
* >> Início da exclusão: FORM SELECIONA_DESPESAS
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_vldp = itab_zycit049-vldp *
( itab_zycit003-netpr *
itab_zycit003-qtd_itend / v_tot_plan ).
ELSE.
* << Fim da exclusão
v_vldp = itab_zycit049-vldp *
( itab_zycit003-netpr *
itab_zycit003-qtd_iten / v_tot_plan ).
* >> Início da exclusão: FORM SELECIONA_DESPESAS
ENDIF.
ELSE.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
v_vldp = itab_zycit049-vldp *
( itab_zycit003-vlreal *
itab_zycit003-qtd_itend / v_tot_real ).
* << Fim da exclusão
ELSE.
v_vldp = itab_zycit049-vldp *
( itab_zycit003-vlreal *
itab_zycit003-qtd_iten / v_tot_real ).
* >> Início da exclusão: FORM SELECIONA_DESPESAS
ENDIF.
* << Fim da exclusão
ENDIF.
v_tot_vldp = v_tot_vldp + v_vldp.
itab_zycit042_d-vldpii = itab_zycit042_d-vldpii + v_vldp.
...