Fix #7123 - getting abra ready to test
[Pman.Xtuple] / pgsql / x-dragon-setbankreccleared.sql
1 ---quick way to set clearance..
2
3 -- call setbankreccleared()
4
5 CREATE OR REPLACE FUNCTION setbankreccleared(integer, text, integer, boolean)
6   RETURNS boolean AS
7 $BODY$
8 DECLARE
9   pBankrecid ALIAS FOR $1;
10   pSource    ALIAS FOR $2;
11   pSourceid  ALIAS FOR $3;
12   _cleared  ALIAS FOR $4;
13  
14   v_rate    NUMERIC;
15   v_curr_id    INTEGER;
16   v_basecurr_id    INTEGER;
17   v_date  DATE;
18   v_amount  NUMERIC;
19   _r RECORD;
20
21 BEGIN
22
23   SELECT bankrecitem_id, bankrecitem_cleared INTO _r
24     FROM bankrecitem
25    WHERE ( (bankrecitem_bankrec_id=pBankrecid)
26      AND   (bankrecitem_source=pSource)
27      AND   (bankrecitem_source_id=pSourceid) );
28      
29      
30      
31   IF ( NOT FOUND ) THEN
32     
33     
34     SELECT
35         bankaccnt_curr_id,
36         basecurrid(),
37         gltrans_date,
38         gltrans_amount
39         INTO
40         v_curr_id,
41         v_basecurr_id,
42         v_date,
43         v_amount
44         FROM 
45     
46           gltrans
47               
48               LEFT JOIN
49                   bankaccnt
50               ON
51                   bankaccnt_accnt_id = gltrans_accnt_id
52               WHERE
53                   gltrans_id = pSourceid;
54
55     v_rate := 1.0;
56      --RAISE NOTICE   'gltransid = %, bank cur =%, base_curr= % curr_rate = %', pSourceid,  v_curr_id, v_basecurr_id, v_rate;       
57     IF v_curr_id != v_basecurr_id THEN
58         SELECT currrate(v_curr_id, v_date) INTO v_rate;
59     END IF;
60     --RAISE EXCEPTION 'gltransid = %, bank cur =%, base_curr= % curr_rate = %', pSourceid,  v_curr_id, v_basecurr_id, v_rate;       
61       
62     INSERT INTO bankrecitem
63       (bankrecitem_bankrec_id, bankrecitem_source,
64        bankrecitem_source_id, bankrecitem_cleared  ,
65        
66       bankrecitem_curr_rate,
67        
68         bankrecitem_amount
69        ) VALUES (
70           pBankrecid, pSource,
71            pSourceid, _cleared ,
72        
73       v_rate, abs(v_amount) * v_rate
74   );
75   ELSE
76     
77     UPDATE bankrecitem
78        SET bankrecitem_cleared=_cleared
79      WHERE (bankrecitem_id=_r.bankrecitem_id);
80   END IF;
81
82   RETURN _cleared;
83 END;
84 $BODY$
85   LANGUAGE plpgsql VOLATILE
86   COST 100;
87 ALTER FUNCTION setbankreccleared(integer, text, integer,boolean)
88   OWNER TO admin;
89   
90   
91   
92   
93   
94   
95   
96   
97   
98   
99    
100   
101   
102   
103   
104   
105   
106   
107   
108