From 3f2d74280d593cf4abcd1b6d385f408f1cf3045c Mon Sep 17 00:00:00 2001 From: einhverfr Date: Tue, 28 Oct 2008 17:54:14 +0000 Subject: Allowing multiple payment vouchers per batch per invoice. Test cases added git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@2380 4979c152-3d1c-0410-bac9-87ea11338e46 --- sql/Pg-database.sql | 8 +++++--- sql/modules/test/Voucher.sql | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 sql/modules/test/Voucher.sql (limited to 'sql') diff --git a/sql/Pg-database.sql b/sql/Pg-database.sql index e606d81b..41775a39 100644 --- a/sql/Pg-database.sql +++ b/sql/Pg-database.sql @@ -491,12 +491,14 @@ CREATE TABLE batch ( COMMENT ON COLUMN batch.batch_class_id IS $$ Note that this field is largely used for sorting the vouchers. A given batch is NOT restricted to this type.$$; + +-- Although I am moving the primary key to voucher.id for now, as of 1.4, I +-- would expect trans_id to be primary key CREATE TABLE voucher ( trans_id int REFERENCES transactions(id) NOT NULL, batch_id int references batch(id) not null, - id serial NOT NULL unique, - batch_class int references batch_class(id) not null, - PRIMARY KEY (batch_class, batch_id, trans_id) + id serial PRIMARY KEY, + batch_class int references batch_class(id) not null ); COMMENT ON COLUMN voucher.batch_class IS $$ This is the authoritative class of the diff --git a/sql/modules/test/Voucher.sql b/sql/modules/test/Voucher.sql new file mode 100644 index 00000000..f5dd0a95 --- /dev/null +++ b/sql/modules/test/Voucher.sql @@ -0,0 +1,41 @@ +BEGIN; +\i Base.sql + +INSERT INTO test_result (test_name, success) +SELECT 'Batch Created', + batch_create('_TEST', '_TEST', 'payment', '2008-01-01') IS NOT NULL; + +INSERT INTO entity (id, name, entity_class, control_code) +values (-2, 'Test', 1, 'test'); +INSERT INTO entity_credit_account (entity_id, id, meta_number, entity_class) +values (-2, -1, 'Test', 1); + +INSERT INTO chart (id, accno, description, link) +VALUES ('-1', '-21111', 'Testing AP', 'AP'); + +INSERT INTO ap (id, invnumber, amount, curr, approved, entity_credit_account) +VALUES (-1, 'test1', '1000', 'USD', false, -1); + +INSERT INTO acc_trans(trans_id, chart_id, amount, approved) +values (-1, -1, 1000, true); + +INSERT INTO voucher (trans_id, batch_id, batch_class) +values (-1, currval('batch_id_seq'), 1); +INSERT INTO voucher (trans_id, batch_id, batch_class) +values (-1, currval('batch_id_seq'), 3); +INSERT INTO voucher (trans_id, batch_id, batch_class) +values (-1, currval('batch_id_seq'), 3); + + +INSERT INTO test_result (test_name, success) +SELECT 'partial payment support', count(*) > 1 +FROM voucher where trans_id = -1 and batch_class = 3; + +SELECT * FROM test_result; + +SELECT (select count(*) from test_result where success is true) +|| ' tests passed and ' +|| (select count(*) from test_result where success is not true) +|| ' failed' as message; + +ROLLBACK; -- cgit v1.2.3