Added facility to do a cash refund.
authorrangi <rangi>
Wed, 9 May 2001 23:22:10 +0000 (23:22 +0000)
committerrangi <rangi>
Wed, 9 May 2001 23:22:10 +0000 (23:22 +0000)
Also HLT allows ppl to work off their bill,so added a facility to do manual
credit for that

C4/Accounts2.pm
mancredit.pl
maninvoice.pl

index 171d46a..c1ee216 100755 (executable)
@@ -15,7 +15,8 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
 $VERSION = 0.01;
     
 @ISA = qw(Exporter);
-@EXPORT = qw(&recordpayment &fixaccounts &makepayment &manualinvoice);
+@EXPORT = qw(&recordpayment &fixaccounts &makepayment &manualinvoice
+&getnextacctno);
 %EXPORT_TAGS = ( );     # eg: TAG => [ qw!name1 name2! ],
                  
 # your exported package globals go here,
@@ -224,6 +225,9 @@ sub manualinvoice{
   if ($type eq 'L' && $desc eq ''){
     $desc="Lost Item";
   }
+  if ($type eq 'REF'){
+    $amountleft=refund('',$bornum,$amount);    
+  }
   if ($itemnum ne ''){
     my $sth=$dbh->prepare("Select * from items where barcode='$itemnum'");
     $sth->execute;
@@ -261,15 +265,64 @@ sub fixcredit{
   order by date";
   my $sth = $dbh->prepare($query);
   $sth->execute;
+#  print $query;
   # 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);
+}
+
+sub refund{
+  #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 *-1;
+  
+  # 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;
+#  print $query;
+#  print $amountleft;
+  # 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;
      }
+#     print $amountleft;
      my $thisacct = $accdata->{accountno};
      $updquery = "update accountlines set amountoutstanding= '$newamtos'
      where (borrowernumber = '$bornumber') and (accountno='$thisacct')";
index 4b6c50f..afdf11a 100755 (executable)
@@ -38,6 +38,7 @@ print <<printend
 <select name=type>
 <option value=C>Credit</option>
 <option value=BAY>Baycorp Adjustment</option>
+<option value=WORK>Worked off</option>
 </select>
 </td></tr>
 <tr><td><b>Itemnumber</b></td><td><input type=text name=itemnum></td></tr>
index 62a68cf..59160ab 100755 (executable)
@@ -16,6 +16,7 @@ my $bornum=$input->param('bornum');
 my $data=borrdata('',$bornum);
 my $add=$input->param('add');
 if ($add){
+#  print $input->header;
   my $itemnum=$input->param('itemnum');
   my $desc=$input->param('desc');
   my $amount=$input->param('amount');
@@ -40,6 +41,7 @@ print <<printend
 <option value=A>Account Management Fee</option>
 <option value=N>New Card</option>
 <option value=M>Sundry</option>
+<option value=REF>Cash Refund</option>
 </select>
 </td></tr>
 <tr><td><b>Itemnumber</b></td><td><input type=text name=itemnum></td></tr>