summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-11-01 23:42:23 +0000
committereinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2007-11-01 23:42:23 +0000
commit27c5a57fac903382eac1216fe06f259f858245c8 (patch)
tree045c3d3cd84c99c9fa07f5d38668ff75f185e888
parent01556e1128f60bd3252d6f31c73eeb797bec9d98 (diff)
Renaming the Session namespace to LedgerSMB::Auth
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@1835 4979c152-3d1c-0410-bac9-87ea11338e46
-rwxr-xr-xLedgerSMB.pm8
-rw-r--r--LedgerSMB/Auth.pm (renamed from LedgerSMB/Session.pm)8
-rwxr-xr-xLedgerSMB/Auth/DB.pm (renamed from LedgerSMB/Session/DB.pm)2
-rw-r--r--LedgerSMB/User.pm2
-rw-r--r--lsmb-request.pl1
-rwxr-xr-xold-handler.pl4
-rw-r--r--scripts/login.pl3
-rw-r--r--sql/modules/Voucher.sql232
8 files changed, 73 insertions, 187 deletions
diff --git a/LedgerSMB.pm b/LedgerSMB.pm
index 81e34759..7b555e10 100755
--- a/LedgerSMB.pm
+++ b/LedgerSMB.pm
@@ -125,7 +125,7 @@ use CGI::Simple;
use Math::BigFloat;
use LedgerSMB::Sysconfig;
use Data::Dumper;
-use LedgerSMB::Session;
+use LedgerSMB::Auth;
use LedgerSMB::Template;
use LedgerSMB::Locale;
use LedgerSMB::User;
@@ -195,7 +195,7 @@ sub new {
if ($self->is_run_mode('cgi', 'mod_perl')) {
#check for valid session unless this is an inital authentication
#request -- CT
- if (!Session::session_check( $cookie{"LedgerSMB"}, $self) ) {
+ if (!LedgerSMB::Auth::session_check( $cookie{"LedgerSMB"}, $self) ) {
$self->_get_password("Session Expired");
exit;
}
@@ -215,7 +215,7 @@ sub new {
sub _get_password {
my ($self) = shift @_;
$self->{sessionexpired} = shift @_;
- Session::credential_prompt();
+ LedgerSMB::Auth::credential_prompt();
exit;
}
@@ -634,7 +634,7 @@ sub _db_init {
my $self = shift @_;
my %args = @_;
- my $creds = Session::get_credentials();
+ my $creds = LedgerSMB::Auth::get_credentials();
$self->{login} = $creds->{login};
if (!$self->{company}){
diff --git a/LedgerSMB/Session.pm b/LedgerSMB/Auth.pm
index dbc2d1c3..fec8209c 100644
--- a/LedgerSMB/Session.pm
+++ b/LedgerSMB/Auth.pm
@@ -12,12 +12,12 @@
# This is a simple abstraction layer allowing other session handling mechanisms
# (For example Kerberos tickets) as the application progresses.
-package Session;
+package LedgerSMB::Auth;
use LedgerSMB::Sysconfig;
-if ( !${LedgerSMB::Sysconfig::session} ) {
- ${LedgerSMB::Sysconfig::session} = 'DB';
+if ( !${LedgerSMB::Sysconfig::auth} ) {
+ ${LedgerSMB::Sysconfig::auth} = 'DB';
}
-require "LedgerSMB/Session/" . ${LedgerSMB::Sysconfig::session} . ".pm";
+require "LedgerSMB/Auth/" . ${LedgerSMB::Sysconfig::auth} . ".pm";
diff --git a/LedgerSMB/Session/DB.pm b/LedgerSMB/Auth/DB.pm
index 419ca5d3..da89711f 100755
--- a/LedgerSMB/Session/DB.pm
+++ b/LedgerSMB/Auth/DB.pm
@@ -27,7 +27,7 @@
# password_check - compares the password with the stored cryted password
# (ver. < 1.2) and the md5 one (ver. >= 1.2)
#====================================================================
-package Session;
+package LedgerSMB::Auth;
use MIME::Base64;
use strict;
diff --git a/LedgerSMB/User.pm b/LedgerSMB/User.pm
index b5c5c757..e4654d9b 100644
--- a/LedgerSMB/User.pm
+++ b/LedgerSMB/User.pm
@@ -57,7 +57,7 @@ Deprecated
package LedgerSMB::User;
use LedgerSMB::Sysconfig;
-use LedgerSMB::Session;
+use LedgerSMB::Auth;
use Data::Dumper;
=item LedgerSMB::User->new($login);
diff --git a/lsmb-request.pl b/lsmb-request.pl
index 5c75d6f3..dcaa5cf4 100644
--- a/lsmb-request.pl
+++ b/lsmb-request.pl
@@ -29,7 +29,6 @@ $| = 1;
use LedgerSMB::User;
use LedgerSMB;
use LedgerSMB::Locale;
-use LedgerSMB::Session;
use Data::Dumper;
# for custom preprocessing logic
diff --git a/old-handler.pl b/old-handler.pl
index 4100711f..0e2f634c 100755
--- a/old-handler.pl
+++ b/old-handler.pl
@@ -55,7 +55,7 @@ $| = 1;
use LedgerSMB::User;
use LedgerSMB::Form;
use LedgerSMB::Locale;
-use LedgerSMB::Session;
+use LedgerSMB::Auth;
use Data::Dumper;
require "common.pl";
@@ -170,7 +170,7 @@ sub check_password {
}
#check for valid session
- if ( !Session::session_check( $cookie{"LedgerSMB"}, $form ) ) {
+ if ( !LedgerSMB::Auth::session_check( $cookie{"LedgerSMB"}, $form ) ) {
&getpassword(1);
exit;
}
diff --git a/scripts/login.pl b/scripts/login.pl
index c51b3fbd..1ce79587 100644
--- a/scripts/login.pl
+++ b/scripts/login.pl
@@ -4,6 +4,7 @@ our $VERSION = 1.0;
use LedgerSMB::Locale;
use LedgerSMB::Form; # Required for now to integrate with menu module.
use LedgerSMB::User;
+use LedgerSMB::Auth;
use strict;
sub __default {
@@ -63,7 +64,7 @@ sub logout {
my ($request) = @_;
$request->{callback} = "";
$request->{endsession} = 1;
- Session::session_destroy($request);
+ LedgerSMB::Auth::session_destroy($request);
print "Location: login.pl\n";
print "Content-type: text/html\n\n";
exit;
diff --git a/sql/modules/Voucher.sql b/sql/modules/Voucher.sql
index c21105c4..84df47f0 100644
--- a/sql/modules/Voucher.sql
+++ b/sql/modules/Voucher.sql
@@ -81,193 +81,79 @@ CREATE TYPE voucher_list AS (
transaction_id integer,
amount numeric,
transaction_date date,
- voucher_number text
+ batch_class text
);
-CREATE OR REPLACE FUNCTION voucher_list_ap (in_batch_id integer)
-RETURNS SETOF voucher_list AS
+CREATE OR REPLACE FUNCTION voucher_list (in_batch_id integer)
+RETURNS SETOF voucher_list AS
$$
-DECLARE
- voucher_out voucher_list%ROWTYPE;
-BEGIN
- FOR voucher_out IN SELECT v.id, a.invnumber AS reference,
- c.name ||' -- ' || c.vendornumber AS description,
- v.batch_id, a.id AS transaction_id,
- a.amount, v.voucher_number
- FROM vouchers v
- JOIN ap a ON (a.id = v.trans_id)
- JOIN vendor c ON (c.id = a.vendor_id)
- WHERE v.br_id = in_batch_id
-
- LOOP
- RETURN NEXT voucher_out;
- END LOOP;
-
-END;
-$$ LANGUAGE PLPGSQL;
-
-CREATE OR REPLACE FUNCTION voucher_list_payment (in_batch_id integer)
-RETURNS SETOF voucher_list AS
-$$
-DECLARE
- voucher_out voucher_list%ROWTYPE;
+declare voucher_item record;
BEGIN
- FOR voucher_out IN SELECT v.id, c.vendornumber AS reference,
- c.name AS description, in_batch_id AS batch_id,
- v.transaction_id AS transaction_id, sum(ac.amount) AS amount,
- v.voucher_number
- FROM acc_trans ac
- JOIN vouchers v ON (v.id = ac.vr_id AND v.transaction_id = ac.trans_id)
- JOIN chart ch ON (ch.id = ac.chart_id)
- JOIN ap a ON (a.id = ac.trans_id)
- JOIN vendor c ON (c.id = a.vendor_id)
- WHERE v.br_id = in_batch_id
- AND ch.link LIKE '%AP_paid%'
- GROUP BY v.id, c.name, c.vendornumber, v.voucher_number,
- a.vendor_id, v.transaction_id
-
-
+ FOR voucher_item IN
+ SELECT v.id, a.invnumber, e.name, v.batch_id, v.trans_id,
+ a.amount - a.paid, a.transdate, 'Payable'
+ FROM voucher v
+ JOIN ap a ON (v.trans_id = a.id)
+ JOIN entity e ON (a.entity_id = e.id)
+ WHERE v.batch_id = in_batch_id
+ AND v.batch_class = (select id from batch_class
+ WHERE class = 'payable')
+ UNION
+ SELECT v.id, a.invnumber, e.name, v.batch_id, v.trans_id,
+ a.amount - a.paid, a.transdate, 'Receivable'
+ FROM voucher v
+ JOIN ar a ON (v.trans_id = a.id)
+ JOIN entity e ON (a.entity_id = e.id)
+ WHERE v.batch_id = in_batch_id
+ AND v.batch_class = (select id from batch_class
+ WHERE class = 'receivable')
+ UNION
+ SELECT v.id, a.source, a.memo, v.batch_id, v.trans_id,
+ a.amount, a.transdate, bc.class
+ FROM voucher v
+ JOIN acc_trans a ON (v.trans_id = a.trans_id)
+ JOIN batch_class bc ON (bc.id = v.batch_class)
+ WHERE v.batch_id = in_batch_id
+ AND a.voucher_id = v.id
+ AND bc.class like 'payment%'
+ OR bc.class like 'receipt%'
+ UNION
+ SELECT v.id, g.reference, g.description, v.batch_id, v.trans_id,
+ sum(a.amount), g.transdate, 'gl'
+ FROM voucher v
+ JOIN gl g ON (g.id = v.trans_id)
+ JOIN acc_trans a ON (v.trans_id = a.trans_id)
+ WHERE a.amount > 0
+ AND v.batch_id = in_batch_id
+ AND v.batch_class IN (select id from batch_class
+ where class = 'gl')
+ GROUP BY v.id, g.reference, g.description, v.batch_id,
+ v.trans_id, g.transdate
+ ORDER BY 7, 1
LOOP
- RETURN NEXT voucher_out;
+ RETURN NEXT voucher_item;
END LOOP;
-
END;
-$$ LANGUAGE PLPGSQL;
-
-CREATE OR REPLACE FUNCTION voucher_list_payment_reversal (in_batch_id integer)
-RETURNS SETOF voucher_list AS
-$$
-DECLARE
- voucher_out voucher_list%ROWTYPE;
-BEGIN
- FOR voucher_out IN
- SELECT v.id, ac.source AS reference,
- c.vendornumber || ' -- ' || c.name AS description,
- sum(ac.amount) * -1 AS amount, in_batch_id AS batch_id,
- v.transaction_id AS transaction_id, v.voucher_number
- FROM acc_trans ac
- JOIN vr v ON (v.id = ac.vr_id AND v.trans_id = ac.trans_id)
- JOIN chart ch ON (ch.id = ac.chart_id)
- JOIN ap a ON (a.id = ac.trans_id)
- JOIN vendor c ON (c.id = a.vendor_id)
- WHERE vr.br_id = in_batch_id
- AND c.link LIKE '%AP_paid%'
- GROUP BY v.id, c.name, c.vendornumber, v.voucher_number,
- a.vendor_id, ac.source
+$$ language plpgsql;
- LOOP
- RETURN NEXT voucher_out;
- END LOOP;
-
-END;
-$$ LANGUAGE PLPGSQL;
+CREATE TYPE batch_list_item AS (
+ id integer,
+ batch_class text,
+ description text,
+ created_by text,
+ created_on date,
+ total numeric
+);
-CREATE OR REPLACE FUNCTION voucher_list_ap (in_batch_id integer)
-RETURNS SETOF voucher_list AS
+CREATE FUNCTION batch_list RETURNS SETOF batch_list_item AS
$$
-DECLARE
- voucher_out voucher_list%ROWTYPE;
-BEGIN
- FOR voucher_out IN
- SELECT v.id, g.reference, g.description, in_batch_id AS batch_id,
- SUM(ac.amount) AS amount, g.id AS transaction_id,
- v.vouchernumber
- FROM acc_trans ac
- JOIN gl g ON (g.id = ac.trans_id)
- JOIN vouchers v ON (v.trans_id = g.id)
- WHERE v.batch_id = in_batch_id
- AND ac.amount >= 0
- GROUP BY g.id, g.reference, g.description, v.id,
- v.voucher_number
-
- LOOP
- RETURN NEXT voucher_out;
- END LOOP;
-
-END;
$$ LANGUAGE PLPGSQL;
-CREATE OR REPLACE FUNCTION batch_post (in_batch_id integer[], in_batch text,
- in_control_amount NUMERIC)
-RETURNS BOOL AS
-$$
-DECLARE
- control_amount NUMERIC;
- voucher voucher%ROWTYPE;
- incriment NUMERIC;
-BEGIN
--- CHECK CONTROL NUMBERS
- IF in_batch = 'gl' THEN
- SELECT sum(amount) INTO control_amount
- FROM acc_trans
- WHERE trans_id IN (
- SELECT id FROM gl
- WHERE coalesce(approved, false) != true)
- AND trans_id IN (
- SELECT transaction_id FROM voucher
- WHERE batch_id = ANY (in_batch_id))
- AND coalesce(approved, false) != true
- AND amount > 0
- FOR UPDATE;
-
- ELSE IF in_batch like '%payment%' THEN
-
- SELECT sum(ac.amount) INTO control_amount
- FROM acc_trans ac
- JOIN voucher v ON (v.transaction_id = ac.trans_id)
- WHERE v.batch_id = ANY (in_batch_id)
- AND ac.vr_id = v.id
- AND coalesce(approved, false) = false
- FOR UPDATE;
-
- ELSE
- SELECT sum(amount) INTO control_amount
- FROM acc_trans
- WHERE trans_id IN
- (SELECT transaction_id FROM voucher
- WHERE batch_id = ANY (in_batch_id))
- AND trans_id IN
- (SELECT trans_id FROM ap
- WHERE coalesce(approved, false) = false)
- AND amount > 0
- FOR UPDATE;
-
- END IF;
-
- IF control_amount != in_control_amount THEN
- RETURN FALSE;
- END IF;
-
--- TODO: POST TRANSACTIONALLY
-
- IF in_batch like '%payment%' THEN
- ELSE
- UPDATE acc_trans
- SET approved = true
- WHERE trans_id IN
- (SELECT transaction_id FROM voucher
- WHERE batch_id = ANY (in_batch_id));
-
- IF in_batch = 'gl' THEN
+CREATE OR REPLACE FUNCTION batch_post in_batch_id INTEGER)
+returns int AS
+$$;
- UPDATE gl SET approved = true
- WHERE trans_id IN
- (SELECT transaction_id FROM voucher
- WHERE batch_id = ANY (in_batch_id));
-
- ELSE
- UPDATE ap SET approved = true
- WHERE trans_id IN
- (SELECT transaction_id FROM voucher
- WHERE batch_id = ANY (in_batch_id));
- END IF;
- END IF;
-
- RETURN TRUE;
-END;
$$ LANGUAGE PLPGSQL;
-
-
CREATE OR REPLACE FUNCTION batch_create(
in_batch_number text, in_description text, in_batch_class text) RETURNS int AS
$$