Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Fatura Mercadoria
Data/Hora da Publicação: 23/04/2010 00:00:00
Data/Hora Última Alteração: 22/02/2011 16:22:05
Descrição da Nota: RENEGOCIAÇÃO DE PARCELA
Sintoma
Ao renegociar uma das parcelas de uma fatura parcela o programa está contabilizando todas as
parcelas e substituindo o documento contabil existente sem que seja estornado o documento anterior.
Solução
Ajustado programa para contabilizar apenas as parcelas que necessitarem ser contabilizadas e no caso
de ter que realizar a contabilização de uma parcela que já foi contabilizada efetuar o estorno do
documento anterior.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 10090 Data: 23/04/2010 Hora: 15:13:04
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 10090
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 8.0
Pacote : 00003
Agrupamento : 00018
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02760 - 00001 - 6.0 - 00026 - AJUSTE NO RATEIO POR DIVISÃO ABSOLUTA NO MOMENTO DE SALVAR A FATU
08460 - 00002 - 7.0 - 00009 - FALHA AO ALTERAR UMA FATURA DE PAGAMENTO ANTECIPADO
----------------------------------------------------------------------------------------------------
RENEGOCIAÇÃO DE PARCELA
----------------------------------------------------------------------------------------------------
Palavras Chave:
CONTABILIZAÇÃO - PARCELA - RENEGOCIAR - ESTORNO - FATURA - PARCELADA
/PWS/SAPMZYCI003
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI003F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F01
...
LOOP AT itab_zycit003.
v_tabix = sy-tabix.
PERFORM atualizando_total.
MODIFY itab_zycit003.
ENDLOOP.
PERFORM check_total.
IF v_dif_saldo = 'S'.
v_stop = 'X'.
CLEAR v_dif_saldo.
ENDIF.
* >> Início da inclusão: FORM SALVAR_DADOS
PERFORM atualiza_total_parcelas.
IF v_erro_par EQ 'X'.
v_stop = 'X'.
ENDIF.
* << Fim da inclusão
IF v_stop = 'X'.
EXIT.
ENDIF.
PERFORM consiste_sequencial.
PERFORM rotina_de_contabilizacao.
PERFORM salvar_bco.
IF sy-binpt EQ 'X'.
EXPORT /pws/zycie006 TO MEMORY ID 'BPFATIMP_01'.
ENDIF.
IF /pws/zycie006-tpfatura EQ '04' AND v_salva_desp EQ 'X'.
...
...
FORM contabilizacao_f-02_ou_f-43.
IF /pws/zycie006-statusp IS INITIAL AND /pws/zycie006-frpagto NE 'A'.
IF NOT itab_zycit132[] IS INITIAL
AND /pws/zycie006-waers NE /pws/zycbt007-waersb
AND ( /pws/zycie006-tpfatura = '01' OR
/pws/zycie006-tpfatura = '11' ).
v_parcela = 'X'.
CLEAR v_rev.
* >> Início da inclusão: FORM CONTABILIZACAO_F-02_OU_F-43
IF okcode EQ 'RENE'.
* << Fim da inclusão
LOOP AT itab_zycit132 WHERE mark = 'X' AND status = 'C'.
PERFORM reverse_document_fb08.
ENDLOOP.
* >> Início da inclusão: FORM CONTABILIZACAO_F-02_OU_F-43
ENDIF.
IF NOT v_rev IS INITIAL.
PERFORM dele_custo USING /pws/zycit031-inco1_ci space.
ENDIF.
LOOP AT itab_zycit132 WHERE status NE 'X'.
v_parcela = 'X'.
IF NOT itab_zycit132-belnr_p IS INITIAL.
READ TABLE itab_zycit132_ini
WITH KEY nrparc = itab_zycit132-nrparc.
IF sy-subrc NE 0.
CLEAR itab_zycit132_ini-vlparc.
ENDIF.
IF itab_zycit132-vlparc NE itab_zycit132_ini-vlparc OR
itab_zycit132-dtvencto NE itab_zycit132_ini-dtvencto.
PERFORM reverse_document_fb08.
* << Fim da inclusão
IF NOT v_rev IS INITIAL.
PERFORM dele_custo USING /pws/zycit031-inco1_ci space.
* >> Início da inclusão: FORM CONTABILIZACAO_F-02_OU_F-43
ENDIF.
IF itab_zycit132-status EQ 'X'.
PERFORM fill_date_f-43_f-02.
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM CONTABILIZACAO_F-02_OU_F-43
LOOP AT itab_zycit132 WHERE mark NE 'X' AND status NE 'X'.
* << Fim da exclusão
* >> Início da inclusão: FORM CONTABILIZACAO_F-02_OU_F-43
ELSE.
* << Fim da inclusão
PERFORM fill_date_f-43_f-02.
* >> Início da inclusão: FORM CONTABILIZACAO_F-02_OU_F-43
ENDIF.
* << Fim da inclusão
ENDLOOP.
ELSE.
PERFORM fill_date_f-43_f-02.
ENDIF.
ELSEIF /pws/zycie006-frpagto NE 'A'.
IF NOT itab_zycit132[] IS INITIAL AND
/pws/zycie006-waers NE /pws/zycbt007-waersb AND
( /pws/zycie006-tpfatura = '01' OR /pws/zycie006-tpfatura = '11' ).
* >> Início da inclusão: FORM CONTABILIZACAO_F-02_OU_F-43
IF okcode EQ 'RENE'.
* << Fim da inclusão
LOOP AT itab_zycit132 WHERE mark EQ 'X' AND status NE 'X'.
v_parcela = 'X'.
IF NOT itab_zycit132-belnr_p IS INITIAL.
PERFORM reverse_document_fb08.
ENDIF.
ENDLOOP.
* >> Início da inclusão: FORM CONTABILIZACAO_F-02_OU_F-43
ENDIF.
* << Fim da inclusão
CLEAR v_rev.
...
...
v_parcela = 'X'.
IF NOT itab_zycit132-belnr_p IS INITIAL.
READ TABLE itab_zycit132_ini
WITH KEY nrparc = itab_zycit132-nrparc.
IF sy-subrc NE 0.
CLEAR itab_zycit132_ini-vlparc.
ENDIF.
IF itab_zycit132-vlparc NE itab_zycit132_ini-vlparc OR
itab_zycit132-dtvencto NE itab_zycit132_ini-dtvencto.
PERFORM reverse_document_fb08.
* >> Início da exclusão: FORM CONTABILIZACAO_F-02_OU_F-43
ENDIF.
* << Fim da exclusão
IF NOT v_rev IS INITIAL.
PERFORM dele_custo USING /pws/zycit031-inco1_ci space.
* >> Início da inclusão: FORM CONTABILIZACAO_F-02_OU_F-43
ENDIF.
IF itab_zycit132-status EQ 'X'.
PERFORM fill_date_f-43_f-02.
ENDIF.
* << Fim da inclusão
ENDIF.
ELSE.
...
...
LOOP AT itab_zycit132 WHERE mark = 'X' OR status EQ 'X'.
v_total_parc = v_total_parc - itab_zycit132-vlparc.
ENDLOOP.
IF v_total_parc NE /pws/zycie006-vltotal AND NOT itab_zycit132[] IS
INITIAL
AND NOT /pws/zycie006-eliminado = 'X'.
v_tot_dif = v_total_parc - /pws/zycie006-vltotal.
WRITE v_tot_dif TO v_tot_char CURRENCY v_waers_par.
IF okcode = 'SAVE' OR okcode = 'RENE'.
MESSAGE s015 WITH text-084 v_tot_char.
* >> Início da inclusão: FORM ATUALIZA_TOTAL_PARCELAS
v_erro_par = 'X'.
* << Fim da inclusão
ELSEIF v_resposta EQ 'J'.
MESSAGE s015 WITH text-084 v_tot_char.
v_erro_par = 'X'.
ELSE.
MESSAGE s015 WITH text-084 v_tot_char.
ENDIF.
ENDIF.
ENDFORM.
...