[firebase-br] Estorno ***de loucos***

Mário Reis secretariadogeral em acra.pt
Qui Ago 21 07:43:03 -03 2008


Bom dia,

Estou há horas a tentar implementar o "Estorno de uma operação financeira"
coisa que é termo conceptuais é muito simples. Temos uma ou várias linhas
com indicação de "pagas" por erro que afinal não estão e é preciso corrigir.
O fisco exige e até por razões de transparencia da propria
empresa/associação etc que se não se apaguem linhas mas, antes, que repitam
as mesmas linhas cada uma com os Valores *-1 uma, e que a mesma se repita
c/sinal positivo mas agora sem por exemplo Data de pagamento, N.º de Recibo
e N.ºOperação(controla todos os registos de uma transacção) e estou a fazer
assim

FOR SELECT  CB1.COBRANCA_ID, CB1.VALOR_PG, CB1.VALOR_IVA, CB1.VALOR_DISC,
CB1.DT_PG_EFECTIVO, CB1.NORECIBO, CB1.NOOPERACAO
FROM COBRANCAS CB1
WHERE CB1.DT_PG_EFECTIVO=:IN_DT_PG_EFT AND CB1.CLIENTE_ID=:IN_CLI_ID
INTO :WCOBRANCA_ID, :WVLR_PG, :WVLR_IVA, :WVLR_DISC, :WDT_PG_EFECTIVO,
:WNORECIBO,:NOOPERACAO
DO
 BEGIN
   /*      1. NEGATIVAR VALORES */
  WVLR_PG=WVLR_PG*-1;
  WVLR_IVA=WVLR_IVA*-1;
  WVLR_DISC=WVLR_DISC*-1;
 /* 2.  NOTA: NO MESMO FICHEIRO */
  /* 2.1 ---------------------------------------> INSERE UMA LINHA NEGATIVA 
*/
 INSERT INTO COBRANCAS
(COBRANCA_ID, VALOR_PG, VALOR_IVA, VALOR_DISC, DT_PG_EFECTIVO,
NORECIBO,NOOPERACAO)
  VALUES(:WCOBRANCA_ID, :WVLR_PG, :WVLR_IVA, :WVLR_DISC, :WDT_PG_EFECTIVO,
ORECIBO,:WNOOPERACAO);
   /*     2.2 POSITIVAR VALORES DA MESMA LINHA E RE-INSERI-LOS*/
   /* C/CONTROLOS DO PAGAMENTO A NULL INDICANDO O S/NÃO PAGAMENTO  */
    WDT_PG_EFECTIVO=NULL;
    WNORECIBO=NULL
    WNOOPERACAO=NULL
   WVLR_PG=WVLR_PG*-1;
   WVLR_IVA=WVLR_IVA*-1;
   WVLR_DISC=WVLR_DISC*-1;
   /* NOTA: AINDA NO MESMO FICHEIRO */
  /* 2.3------------------------------------------>INSERE UMA LINHA POSITIVA 
MAS, NÃO PAGA  */
  INSERT INTO COBRANCAS
(COBRANCA_ID, VALOR_PG, VALOR_IVA, VALOR_DISC, DT_PG_EFECTIVO,
NORECIBO,NOOPERACAO)
  VALUES(:WCOBRANCA_ID, :WVLR_PG, :WVLR_IVA, :WVLR_DISC, :WDT_PG_EFECTIVO,
ORECIBO,:WNOOPERACAO);

END
suspend,

Só consigo uma 1.ª vez o negativar o 1.º insert O que há de errado neste 
codigo?
Alguém já passou por isto que possa ajudar.
Obrigado









Mais detalhes sobre a lista de discussão lista