pgsql/cntct.sql
[Pman.Xtuple] / pgsql / voidbankreconciliation.sql
1
2 CREATE OR REPLACE FUNCTION voidbankreconciliation(i_bankrec_id INTEGER)
3     RETURNS INTEGER
4 AS $BODY$
5 DECLARE    
6     v_bankrec_posted BOOLEAN;
7     v_bankaccnt_id INTEGER;
8 BEGIN
9    
10     SELECT 
11             bankrec_posted,
12             bankrec_bankaccnt_id
13             
14     INTO
15             v_bankrec_posted,
16             v_bankaccnt_id
17     FROM
18             bankrec
19     WHERE
20             bankrec_id = i_bankrec_id;
21
22     -- first of all, check if the bankrec exist...
23     IF (NOT FOUND) THEN
24         RETURN -1;
25     END IF;
26
27     -- check if the bankrec is posted 
28     IF (NOT v_bankrec_posted) THEN
29         RETURN -2;
30     END IF;
31
32     UPDATE
33             bankrec
34     SET
35             bankrec_posted = FALSE,
36             bankrec_postdate = NULL
37     WHERE
38             bankrec_id = i_bankrec_id;
39
40     UPDATE
41             gltrans
42     SET
43             gltrans_rec = FALSE
44
45     WHERE
46             gltrans_id IN (
47                             SELECT 
48                                     bankrecitem_source_id
49                             FROM
50                                     bankrecitem
51                             WHERE
52                                     bankrecitem_source = 'GL'
53                                 AND
54                                     bankrecitem_cleared
55                                 AND
56                                     bankrecitem_bankrec_id = i_bankrec_id
57                            );
58             
59     
60     RETURN i_bankrec_id;
61
62
63 END
64 $BODY$
65   LANGUAGE plpgsql VOLATILE
66   COST 100;
67   
68 ALTER FUNCTION  voidbankreconciliation(INTEGER)
69   OWNER TO admin;