From 462acc56e44cc0a9f9794b6a91c789a8ebae2d37 Mon Sep 17 00:00:00 2001 From: rangi Date: Wed, 2 May 2001 21:13:15 +0000 Subject: [PATCH] Added functions to add credits and invoices to borrowers account --- C4/Accounts2.pm | 85 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/C4/Accounts2.pm b/C4/Accounts2.pm index 81d8d89185..171d46a552 100755 --- a/C4/Accounts2.pm +++ b/C4/Accounts2.pm @@ -15,7 +15,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); $VERSION = 0.01; @ISA = qw(Exporter); -@EXPORT = qw(&recordpayment &fixaccounts &makepayment); +@EXPORT = qw(&recordpayment &fixaccounts &makepayment &manualinvoice); %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], # your exported package globals go here, @@ -196,7 +196,7 @@ sub returnlost{ my $sth=$dbh->prepare($upiss); $sth->execute; $sth->finish; - my @datearr = localtime($time); + my @datearr = localtime(time); my $date = (1900+$datearr[5])."-".($datearr[4]+1)."-".$datearr[3]; my $bor="$borrower->{'firstname'} $borrower->{'surname'} $borrower->{'cardnumber'}"; my $upitem="Update items set itemnotes='Paid for by $bor $date' where itemnumber='$itemnum'"; @@ -206,4 +206,85 @@ sub returnlost{ $dbh->disconnect; } +sub manualinvoice{ + my ($bornum,$itemnum,$desc,$type,$amount)=@_; + my $dbh=C4Connect; + my $insert; + $itemnum=~ s/ //g; + my $accountno=getnextacctno('',$bornum,$dbh); + my $amountleft=$amount; + + if ($type eq 'C' || $type eq 'BAY'){ + my $amount2=$amount*-1; + $amountleft=fixcredit('',$bornum,$amount2); + } + if ($type eq 'N'){ + $desc.="New Card"; + } + if ($type eq 'L' && $desc eq ''){ + $desc="Lost Item"; + } + if ($itemnum ne ''){ + my $sth=$dbh->prepare("Select * from items where barcode='$itemnum'"); + $sth->execute; + my $data=$sth->fetchrow_hashref; + $sth->finish; + $desc.=" ".$itemnum; + $insert="insert into accountlines (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,itemnumber) + values ($bornum,$accountno,now(),'$amount','$desc','$type','$amountleft','$data->{'itemnumber'}')"; + } else { + $insert="insert into accountlines (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding) + values ($bornum,$accountno,now(),'$amount','$desc','$type','$amountleft')"; + } + + my $sth=$dbh->prepare($insert); + $sth->execute; + $sth->finish; + + $dbh->disconnect; +} + +sub fixcredit{ + #here we update both the accountoffsets and the account lines + my ($env,$bornumber,$data)=@_; + my $dbh=C4Connect; + my $updquery = ""; + my $newamtos = 0; + my $accdata = ""; +# my $branch=$env->{'branchcode'}; + my $amountleft = $data; + # begin transaction + my $nextaccntno = getnextacctno($env,$bornumber,$dbh); + # get lines with outstanding amounts to offset + my $query = "select * from accountlines + where (borrowernumber = '$bornumber') and (amountoutstanding<>0) + order by date"; + my $sth = $dbh->prepare($query); + $sth->execute; + # offset transactions + while (($accdata=$sth->fetchrow_hashref) and ($amountleft>0)){ + if ($accdata->{'amountoutstanding'} < $amountleft) { + $newamtos = 0; + $amountleft = $amountleft - $accdata->{'amountoutstanding'}; + } else { + $newamtos = $accdata->{'amountoutstanding'} - $amountleft; + $amountleft = 0; + } + my $thisacct = $accdata->{accountno}; + $updquery = "update accountlines set amountoutstanding= '$newamtos' + where (borrowernumber = '$bornumber') and (accountno='$thisacct')"; + my $usth = $dbh->prepare($updquery); + $usth->execute; + $usth->finish; + $updquery = "insert into accountoffsets + (borrowernumber, accountno, offsetaccount, offsetamount) + values ($bornumber,$accdata->{'accountno'},$nextaccntno,$newamtos)"; + my $usth = $dbh->prepare($updquery); + $usth->execute; + $usth->finish; + } + $sth->finish; + $dbh->disconnect; + return($amountleft); +} END { } # module clean-up code here (global destructor) -- 2.39.5