[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
SF.net SVN: ledger-smb: [2166] trunk/sql/modules/Drafts.sql
- Subject: SF.net SVN: ledger-smb: [2166] trunk/sql/modules/Drafts.sql
- From: ..hidden..
- Date: Sat, 14 Jun 2008 16:01:36 -0700
Revision: 2166
http://ledger-smb.svn.sourceforge.net/ledger-smb/?rev=2166&view=rev
Author: einhverfr
Date: 2008-06-14 16:01:35 -0700 (Sat, 14 Jun 2008)
Log Message:
-----------
Adding missing drafts.sql
Added Paths:
-----------
trunk/sql/modules/Drafts.sql
Added: trunk/sql/modules/Drafts.sql
===================================================================
--- trunk/sql/modules/Drafts.sql (rev 0)
+++ trunk/sql/modules/Drafts.sql 2008-06-14 23:01:35 UTC (rev 2166)
@@ -0,0 +1,88 @@
+CREATE TYPE draft_search_result AS (
+ id int,
+ transdate date,
+ description text,
+ amount numeric
+);
+
+CREATE OR REPLACE FUNCTION draft__search(in_type text, in_with_accno text,
+in_from_date date, in_to_date date, in_amount_le numeric, in_amount_ge numeric)
+returns setof draft_search_result AS
+$$
+DECLARE out_row RECORD;
+BEGIN
+ FOR out_row IN
+ SELECT trans.id, trans.transdate, trans.description,
+ sum(case when in_type = 'ap' AND chart.link = 'AP'
+ THEN line.amount
+ WHEN in_type = 'ar' AND chart.link = 'AR'
+ THEN line.amount * -1
+ WHEN in_type = 'gl' AND line.amount > 0
+ THEN line.amount
+ ELSE 0
+ END) as amount
+ FROM (
+ SELECT id, transdate, description, approved from ap
+ WHERE in_type = 'ap'
+ UNION
+ SELECT id, transdate, description, approved from ar
+ WHERE in_type = 'ar'
+ UNION
+ SELECT id, transdate, description, approved from gl
+ WHERE in_type = 'gl'
+ ) trans
+ JOIN acc_trans line ON (trans.id = line.trans_id)
+ JOIN chart ON (line.chart_id = chart.id)
+ WHERE (in_from_date IS NULL or trans.transdate >= in_from_date)
+ AND (in_to_date IS NULL
+ or trans.transdate <= in_to_date)
+ AND trans.approved IS FALSE
+ AND trans.id NOT IN (select trans_id from voucher)
+ GROUP BY trans.id, trans.transdate, trans.description
+ HAVING (in_with_accno IS NULL or in_with_accno =
+ ANY(as_array(chart.accno)))
+ LOOP
+ RETURN NEXT out_row;
+ END LOOP;
+END;
+$$ language plpgsql;
+
+CREATE OR REPLACE FUNCTION draft_approve(in_id int) returns bool as
+$$
+declare
+ t_table text;
+begin
+ SELECT table_name into t_table FROM transactions where id = in_id;
+
+ IF (t_table = 'ar') THEN
+ UPDATE ar set approved = true where id = in_id;
+ ELSIF (t_table = 'ap') THEN
+ UPDATE ap set approved = true where id = in_id;
+ ELSIF (t_table = 'gl') THEN
+ UPDATE gl set approved = true where id = in_id;
+ ELSE
+ raise exception 'Invalid table % in draft_approve for transaction %', t_table, in_id;
+ END IF;
+ RETURN FOUND;
+END;
+$$ LANGUAGE PLPGSQL SECURITY DEFINER;
+
+CREATE OR REPLACE FUNCTION draft_delete(in_id int) returns bool as
+$$
+declare
+ t_table text;
+begin
+ SELECT table_name into t_table FROM transactions where id = in_id;
+ IF t_table = 'ar' THEN
+ DELETE FROM ar WHERE id = in_id AND approved IS FALSE;
+ ELSIF t_table = 'ap' THEN
+ DELETE FROM ap WHERE id = in_id AND approved IS FALSE;
+ ELSIF t_table = 'gl' THEN
+ DELETE FROM gl WHERE id = in_id AND approved IS FALSE;
+ ELSE
+ raise exception 'Invalid table % in draft_delete for transaction %', t_table, in_id;
+ END IF;
+ RETURN FOUND;
+END;
+$$ LANGUAGE PLPGSQL SECURITY DEFINER;
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.