From dc9b5b44da0c726e3fbeaca82e2479235d66d984 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Fri, 24 Feb 2012 14:26:05 -0500 Subject: [PATCH] Bug 7595 - Add branchcode to accountlines Adds a branchcode column to the accountlines table. For payments, this inserts the branchcode of the library where the payment was recorded. For manual invoices, it insert the branchcode of the library where the manual invoice was created. NOTE: Rebased --- C4/Accounts.pm | 73 ++++++++++++++++++++++---------- C4/Circulation.pm | 18 ++++---- C4/Overdues.pm | 7 ++- C4/Reserves.pm | 6 +- installer/data/mysql/kohastructure.sql | 1 + installer/data/mysql/updatedatabase.pl | 6 +++ 6 files changed, 74 insertions(+), 37 deletions(-) diff --git a/C4/Accounts.pm b/C4/Accounts.pm index 8cd9100..ae0a032 100644 --- a/C4/Accounts.pm +++ b/C4/Accounts.pm @@ -146,13 +146,13 @@ sub recordpayment { # create new line my $usth = $dbh->prepare( "INSERT INTO accountlines - (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding,manager_id) + (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding,manager_id,branchcode) VALUES (?,?,now(),?,'',?,?,?)" ); my $paytype = "Pay"; $paytype .= $sip_paytype if defined $sip_paytype; - $usth->execute( $borrowernumber, $nextaccntno, 0 - $data, $paytype, 0 - $amountleft, $manager_id ); + $usth->execute( $borrowernumber, $nextaccntno, 0 - $data, $paytype, 0 - $amountleft, $manager_id, $branch ); $usth->finish; UpdateStats({ @@ -241,10 +241,10 @@ sub makepayment { my $ins = $dbh->prepare( "INSERT - INTO accountlines (borrowernumber, accountno, date, amount, itemnumber, description, accounttype, amountoutstanding, manager_id, note) - VALUES ( ?, ?, now(), ?, ?, '', 'Pay', 0, ?, ?)" + INTO accountlines (borrowernumber, accountno, date, amount, itemnumber, description, accounttype, amountoutstanding, manager_id, note, branchcode) + VALUES ( ?, ?, now(), ?, ?, 'Payment,thanks', 'Pay', 0, ?, ?, ?)" ); - $ins->execute($borrowernumber, $nextaccntno, $payment, $data->{'itemnumber'}, $manager_id, $payment_note); + $ins->execute($borrowernumber, $nextaccntno, $payment, $data->{'itemnumber'}, $manager_id, $payment_note, C4::Context->userenv->{'branch'}); } if ( C4::Context->preference("FinesLog") ) { @@ -367,10 +367,11 @@ sub chargelostitem{ # process (or person) to update it, since we don't handle any defaults for replacement prices. my $accountno = getnextacctno($borrowernumber); my $sth2=$dbh->prepare("INSERT INTO accountlines - (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,itemnumber,manager_id) - VALUES (?,?,now(),?,?,'L',?,?,?)"); - $sth2->execute($borrowernumber,$accountno,$amount, - $description,$amount,$itemnumber,$manager_id); + (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,itemnumber,manager_id,branchcode) + VALUES (?,?,now(),?,?,'L',?,?,?,?)"); + my $branchcode = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef; + $sth2->execute( $borrowernumber, $accountno, $amount, $description, + $amount, $itemnumber, $manager_id, $branchcode ); if ( C4::Context->preference("FinesLog") ) { logaction("FINES", 'CREATE', $borrowernumber, Dumper({ @@ -419,6 +420,7 @@ sub manualinvoice { my ( $borrowernumber, $itemnum, $desc, $type, $amount, $note ) = @_; my $manager_id = 0; $manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; + my $branchcode = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef; my $dbh = C4::Context->dbh; my $notifyid = 0; my $insert; @@ -438,16 +440,16 @@ sub manualinvoice { $desc .= ' ' . $itemnum; my $sth = $dbh->prepare( 'INSERT INTO accountlines - (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding, itemnumber,notify_id, note, manager_id) - VALUES (?, ?, now(), ?,?, ?,?,?,?,?,?)'); - $sth->execute($borrowernumber, $accountno, $amount, $desc, $type, $amountleft, $itemnum,$notifyid, $note, $manager_id) || return $sth->errstr; + (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding, itemnumber,notify_id, note, manager_id, branchcode) + VALUES (?, ?, now(), ?,?, ?,?,?,?,?,?,?)'); + $sth->execute($borrowernumber, $accountno, $amount, $desc, $type, $amountleft, $itemnum,$notifyid, $note, $manager_id, $branchcode) || return $sth->errstr; } else { my $sth=$dbh->prepare("INSERT INTO accountlines - (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding,notify_id, note, manager_id) - VALUES (?, ?, now(), ?, ?, ?, ?,?,?,?)" + (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding,notify_id, note, manager_id, branchcode) + VALUES (?, ?, now(), ?, ?, ?, ?,?,?,?,?)" ); $sth->execute( $borrowernumber, $accountno, $amount, $desc, $type, - $amountleft, $notifyid, $note, $manager_id ); + $amountleft, $notifyid, $note, $manager_id, $branchcode ); } if ( C4::Context->preference("FinesLog") ) { @@ -651,6 +653,7 @@ sub recordpayment_selectaccts { } # create new line +<<<<<<< HEAD $sql = 'INSERT INTO accountlines ' . '(borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding,manager_id,note) ' . q|VALUES (?,?,now(),?,'','Pay',?,?,?)|; @@ -662,6 +665,22 @@ sub recordpayment_selectaccts { borrowernumber => $borrowernumber, accountno => $nextaccntno} ); +======= + $sql = q{ + INSERT INTO accountlines ( + borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding, manager_id, note, branchcode + ) VALUES ( + ?, ?, NOW(), ?, 'Payment,thanks', 'Pay', ?, ?, ?, ? + ) + }; + $dbh->do( + $sql, {}, $borrowernumber, + $nextaccntno, 0 - $amount, 0 - $amountleft, + $manager_id, $note, $branch + ); + + UpdateStats( $branch, 'payment', $amount, '', '', '', $borrowernumber, $nextaccntno ); +>>>>>>> Bug 7595 - Add branchcode to accountlines if ( C4::Context->preference("FinesLog") ) { logaction("FINES", 'CREATE',$borrowernumber,Dumper({ @@ -698,7 +717,7 @@ sub makepartialpayment { 'SELECT * FROM accountlines WHERE accountlines_id=?',undef,$accountlines_id); my $new_outstanding = $data->{amountoutstanding} - $amount; - my $update = 'UPDATE accountlines SET amountoutstanding = ? WHERE accountlines_id = ? '; + my $update = 'UPDATE accountlines SET amountoutstanding = ? WHERE accountlines_id = ? '; $dbh->do( $update, undef, $new_outstanding, $accountlines_id); if ( C4::Context->preference("FinesLog") ) { @@ -715,12 +734,22 @@ sub makepartialpayment { } # create new line - my $insert = 'INSERT INTO accountlines (borrowernumber, accountno, date, amount, ' - . 'description, accounttype, amountoutstanding, itemnumber, manager_id, note) ' - . ' VALUES (?, ?, now(), ?, ?, ?, 0, ?, ?, ?)'; - - $dbh->do( $insert, undef, $borrowernumber, $nextaccntno, $amount, - "Payment, thanks - $user", 'Pay', $data->{'itemnumber'}, $manager_id, $payment_note); + my $insert = q{ + INSERT INTO accountlines ( + borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding, itemnumber, manager_id, note, branchcode + ) VALUES ( + ?, ?, NOW(), ?, ?, ?, 0, ?, ?, ?, ? + ) + }; + + $dbh->do( + $insert, undef, + $borrowernumber, $nextaccntno, + $amount, "Payment, thanks - $user", + 'Pay', $data->{'itemnumber'}, + $manager_id, $payment_note, + C4::Context->userenv->{'branch'} + ); UpdateStats({ branch => $user, diff --git a/C4/Circulation.pm b/C4/Circulation.pm index dc7334a..5361d04 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2286,9 +2286,9 @@ sub _FixAccountForLostAndReturned { $amountleft *= -1 if ($amountleft > 0); my $desc = "Item Returned " . $item_id; $usth = $dbh->prepare("INSERT INTO accountlines - (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding) - VALUES (?,?,now(),?,?,'CR',?)"); - $usth->execute($data->{'borrowernumber'},$nextaccntno,0-$amount,$desc,$amountleft); + (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,branchcode) + VALUES (?,?,now(),?,?,'CR',?,?)"); + $usth->execute($data->{'borrowernumber'},$nextaccntno,0-$amount,$desc,$amountleft,C4::Context->userenv->{'branch'}); if ($borrowernumber) { # FIXME: same as query above. use 1 sth for both $usth = $dbh->prepare("INSERT INTO accountoffsets @@ -2748,12 +2748,12 @@ sub AddRenewal { $sth = $dbh->prepare( "INSERT INTO accountlines (date, borrowernumber, accountno, amount, manager_id, - description,accounttype, amountoutstanding, itemnumber) - VALUES (now(),?,?,?,?,?,?,?,?)" + description,accounttype, amountoutstanding, itemnumber, branch) + VALUES (now(),?,?,?,?,?,?,?,?,?)" ); $sth->execute( $borrowernumber, $accountno, $charge, $manager_id, "Renewal of Rental Item $item->{'title'} $item->{'barcode'}", - 'Rent', $charge, $itemnumber ); + 'Rent', $charge, $itemnumber, C4::Context->userenv->{'branch'} ); } # Send a renewal slip according to checkout alert preferencei @@ -2993,11 +2993,11 @@ sub AddIssuingCharge { INSERT INTO accountlines (borrowernumber, itemnumber, accountno, date, amount, description, accounttype, - amountoutstanding, manager_id) - VALUES (?, ?, ?,now(), ?, 'Rental', 'Rent',?,?) + amountoutstanding, manager_id, branchcode) + VALUES (?, ?, ?,now(), ?, 'Rental', 'Rent',?,?,?) "; my $sth = $dbh->prepare($query); - $sth->execute( $borrowernumber, $itemnumber, $nextaccntno, $charge, $charge, $manager_id ); + $sth->execute( $borrowernumber, $itemnumber, $nextaccntno, $charge, $charge, $manager_id, C4::Context->userenv->{'branch'} ); } =head2 GetTransfers diff --git a/C4/Overdues.pm b/C4/Overdues.pm index b3ec066..376b325 100644 --- a/C4/Overdues.pm +++ b/C4/Overdues.pm @@ -598,11 +598,12 @@ sub UpdateFine { my $nextaccntno = C4::Accounts::getnextacctno($borrowernumber); my $desc = ($type ? "$type " : '') . "$title $due"; # FIXEDME, avoid whitespace prefix on empty $type my $query = "INSERT INTO accountlines - (borrowernumber,itemnumber,date,amount,description,accounttype,amountoutstanding,lastincrement,accountno) - VALUES (?,?,now(),?,?,'FU',?,?,?)"; + (borrowernumber,itemnumber,date,amount,description,accounttype,amountoutstanding,lastincrement,accountno,branchcode) + VALUES (?,?,now(),?,?,'FU',?,?,?,?)"; my $sth2 = $dbh->prepare($query); $debug and print STDERR "UpdateFine query: $query\nw/ args: $borrowernumber, $itemnum, $amount, $desc, $amount, $amount, $nextaccntno\n"; - $sth2->execute($borrowernumber, $itemnum, $amount, $desc, $amount, $amount, $nextaccntno); + my $branch = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef; + $sth2->execute($borrowernumber, $itemnum, $amount, $desc, $amount, $amount, $nextaccntno, $branchcode); } # logging action &logaction( diff --git a/C4/Reserves.pm b/C4/Reserves.pm index a98eed4..ecc341f 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -178,13 +178,13 @@ sub AddReserve { my $nextacctno = &getnextacctno( $borrowernumber ); my $query = qq/ INSERT INTO accountlines - (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding) + (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,branchcode) VALUES - (?,?,now(),?,?,'Res',?) + (?,?,now(),?,?,'Res',?,?) /; my $usth = $dbh->prepare($query); $usth->execute( $borrowernumber, $nextacctno, $fee, - "Reserve Charge - $title", $fee ); + "Reserve Charge - $title", $fee, C4::Context->userenv->{'branch'} ); } #if ($const eq 'a'){ diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index b46dc6a..1425d88 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -2723,6 +2723,7 @@ CREATE TABLE `accountlines` ( `notify_level` int(2) NOT NULL default 0, `note` text NULL default NULL, `manager_id` int(11) NULL, + `branchcode` VARCHAR( 10 ) NULL DEFAULT NULL, -- the branchcode of the library where a payment was made, a manual invoice created, etc. PRIMARY KEY (`accountlines_id`), KEY `acctsborridx` (`borrowernumber`), KEY `timeidx` (`timestamp`), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index de77bf3..e25ddc8 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -8610,6 +8610,12 @@ if ( CheckVersion($DBversion) ) { ('OverdueNoticeCalendar',0,'Take calendar into consideration when working out sending overdue notices','YesNo') "); print "Upgrade to $DBversion done (Bug 12529 - Adding a syspref to allow the overdue notices to consider the calendar when generating notices)\n"; +} + +$DBversion = "3.17.00.XXX"; +if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { + $dbh->do("ALTER TABLE accountlines ADD branchcode VARCHAR( 10 ) NULL DEFAULT NULL AFTER manager_id"); + print "Upgrade to $DBversion done (Added column branchcode to accountlines)\n"; SetVersion($DBversion); } -- 1.7.2.5