[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
SF.net SVN: ledger-smb:[2237] trunk/sql/modules/Company.sql
- Subject: SF.net SVN: ledger-smb:[2237] trunk/sql/modules/Company.sql
- From: ..hidden..
- Date: Wed, 06 Aug 2008 23:33:47 +0000
Revision: 2237
http://ledger-smb.svn.sourceforge.net/ledger-smb/?rev=2237&view=rev
Author: einhverfr
Date: 2008-08-06 23:33:47 +0000 (Wed, 06 Aug 2008)
Log Message:
-----------
Adding entity_credit_account note types
Modified Paths:
--------------
trunk/sql/modules/Company.sql
Modified: trunk/sql/modules/Company.sql
===================================================================
--- trunk/sql/modules/Company.sql 2008-08-06 23:08:18 UTC (rev 2236)
+++ trunk/sql/modules/Company.sql 2008-08-06 23:33:47 UTC (rev 2237)
@@ -102,6 +102,20 @@
END;
$$ LANGUAGE PLPGSQL;
+CREATE OR REPLACE FUNCTION eca__save_notes(in_credit_id int, in_note text)
+RETURNS INT AS
+$$
+DECLARE out_id int;
+BEGIN
+ -- TODO, change this to create vector too
+ INSERT INTO eca_note (ref_key, note_class, note, vector)
+ VALUES (in_credit_id, 3, in_note, '');
+
+ SELECT currval('note_id_seq') INTO out_id;
+ RETURN out_id;
+END;
+$$ LANGUAGE PLPGSQL;
+
CREATE OR REPLACE FUNCTION entity_credit_get_id_by_meta_number
(in_meta_number text, in_account_class int)
returns int AS
@@ -170,7 +184,9 @@
enddate date,
ar_ap_account_id int,
cash_account_id int,
- threshold numeric
+ threshold numeric,
+ control_code text,
+ credit_id int
);
COMMENT ON TYPE entity_credit_search_return IS
@@ -203,7 +219,7 @@
ec.meta_number, ec.business_id, ec.language_code,
ec.pricegroup_id, ec.curr, ec.startdate,
ec.enddate, ec.ar_ap_account_id, ec.cash_account_id,
- c.tax_id, ec.threshold
+ ec.threshold, e.control_code, ec.id
FROM company c
JOIN entity e ON (c.entity_id = e.id)
JOIN entity_credit_account ec ON (c.entity_id = ec.entity_id)
@@ -251,34 +267,39 @@
a.city, a.state, a.mail_code, cc.name
into out_var
FROM company c
- JOIN company_to_location cl ON (c.id = cl.company_id)
+ JOIN company eca ON (eca.entity_id = c.entity_id)
+ JOIN company_to_location cl ON (eca.id = cl.credit_id)
JOIN location a ON (a.id = cl.location_id)
JOIN country cc ON (cc.id = a.country_id)
- WHERE c.entity_id = (select entity_id
- from entity_credit_account where id = in_id)
- AND a.id = (SELECT min(location_id) from company_to_location
- where company_id = c.id and location_class = 1);
+ WHERE eca.id = in_id AND location_class = 1;
+
RETURN out_var;
END;
$$ language plpgsql;
CREATE OR REPLACE FUNCTION company_save (
- in_id int, in_entity_class int,
+ in_id int, in_control_code text, in_entity_class int,
in_name text, in_tax_id TEXT,
in_entity_id int, in_sic_code text
) RETURNS INT AS $$
DECLARE t_entity_id INT;
t_company_id INT;
+ t_control_code TEXT;
BEGIN
t_company_id := in_id;
+ IF in_control_code IS NULL THEN
+ t_control_code := setting_increment('company_control');
+ ELSE
+ t_control_code := in_control_code;
+ END IF;
+
IF in_entity_id IS NULL THEN
IF in_id IS NULL THEN
RAISE NOTICE 'in_id is null';
SELECT id INTO t_company_id FROM company
- WHERE legal_name = in_name AND
- (tax_id = in_tax_id OR
- (tax_id IS NULL AND in_tax_id IS NULL));
+ WHERE entity_id = (SELECT id FROM entity WHERE
+ control_code = t_control_code);
END IF;
IF t_company_id IS NOT NULL THEN
SELECT entity_id INTO t_entity_id FROM company
@@ -289,8 +310,8 @@
t_entity_id := in_entity_id;
END IF;
IF t_entity_id IS NULL THEN
- INSERT INTO entity (name, entity_class)
- VALUES (in_name, in_entity_class);
+ INSERT INTO entity (name, entity_class, control_code)
+ VALUES (in_name, in_entity_class, t_control_code);
t_entity_id := currval('entity_id_seq');
END IF;
@@ -404,10 +425,9 @@
l.state, l.mail_code, c.name, lc.class
FROM location l
JOIN company_to_location ctl ON (ctl.location_id = l.id)
- JOIN company cp ON (ctl.company_id = cp.id)
JOIN location_class lc ON (ctl.location_class = lc.id)
JOIN country c ON (c.id = l.country_id)
- WHERE cp.entity_id = in_entity_id
+ WHERE ctl.company_id = (select id from company where entity_id = in_entity_id)
ORDER BY lc.id, l.id, c.name
LOOP
RETURN NEXT out_row;
@@ -437,7 +457,6 @@
END LOOP;
END;
$$ language plpgsql;
-
CREATE OR REPLACE FUNCTION company__list_bank_account(in_entity_id int)
RETURNS SETOF entity_bank_account AS
@@ -453,6 +472,26 @@
$$ LANGUAGE PLPGSQL;
CREATE OR REPLACE FUNCTION entity__save_bank_account
+(in_entity_id int, in_credit_id int, in_bic text, in_iban text)
+RETURNS int AS
+$$
+DECLARE out_id int;
+BEGIN
+ INSERT INTO entity_bank_account(entity_id, bic, iban)
+ VALUES(in_entity_id, in_bic, in_iban);
+
+ SELECT CURRVAL('entity_bank_account_id_seq') INTO out_id ;
+
+ IF in_credit_id IS NOT NULL THEN
+ UPDATE entity_credit_account SET bank_account = out_id
+ WHERE id = in_credit_id;
+ END IF;
+
+ RETURN out_id;
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION entity__save_bank_account
(in_entity_id int, in_bic text, in_iban text)
RETURNS int AS
$$
@@ -484,6 +523,7 @@
CREATE TYPE entity_note_list AS (
id int,
+ note_class int,
note text
);
@@ -496,12 +536,37 @@
SELECT *
FROM entity_note
WHERE ref_key = in_entity_id
+ ORDER BY created
LOOP
RETURN NEXT out_row;
END LOOP;
END;
$$ LANGUAGE PLPGSQL;
+CREATE OR REPLACE FUNCTION eca__list_notes(in_credit_id int)
+RETURNS SETOF note AS
+$$
+DECLARE out_row record;
+ t_entity_id int;
+BEGIN
+ SELECT entity_id INTO t_entity_id
+ FROM entity_credit_account
+ WHERE id = in_credit_id;
+
+ FOR out_row IN
+ SELECT *
+ FROM note
+ WHERE (note_class = 3 and ref_key = in_credit_id) or
+ (note_class = 1 and ref_key = t_entity_id)
+ ORDER BY created
+ LOOP
+ RETURN NEXT out_row;
+ END LOOP;
+END;
+$$ LANGUAGE PLPGSQL SECURITY DEFINER;
+
+REVOKE EXECUTE ON FUNCTION eca__list_notes(INT) FROM public;
+
CREATE OR REPLACE FUNCTION company__next_id() returns bigint as $$
select nextval('company_id_seq');
@@ -556,4 +621,5 @@
$$ language 'plpgsql';
+
-- COMMIT;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.