Bug 24665: Add support for filtering by cash register
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 21 Jul 2020 13:54:09 +0000 (14:54 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 6 Nov 2020 14:55:17 +0000 (15:55 +0100)
This patch makes it possible to filter on cash register
on the cash register statistics page.

To test:
- Activate UseCashRegisters
- Create a cash register or more to use
- Create some manual fees and fines
- Pay some of them off
- Go to Tools > Cash register statistics
- Test if the new filter for cash registers works as it should

Signed-off-by: Kelly McElligott <kelly@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Koha/Template/Plugin/Registers.pm
koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt
reports/cash_register_stats.pl

index d737b9c..cb5fab8 100644 (file)
@@ -91,9 +91,16 @@ sub all {
     $where->{branch} = C4::Context->userenv->{'branch'}
       if ( $filters->{current_branch} && C4::Context->userenv );
     my $registers = Koha::Cash::Registers->search($where)->unblessed();
+
+    my $selected = $params->{selected};
     for my $register ( @{$registers} ) {
-        $register->{selected} = ( defined( $self->session_register_id )
+        if ( defined($selected) ) {
+            $register->{selected} = ( $register->{id} == $selected ) ? 1 : 0;
+        }
+        else {
+            $register->{selected} = ( defined( $self->session_register_id )
               && $register->{id} eq $self->session_register_id ) ? 1 : 0;
+        }
     }
 
     return $registers;
index cbcc27a..bc0dd7e 100644 (file)
@@ -1,8 +1,11 @@
 [% USE raw %]
 [% USE Asset %]
+[% USE Branches %]
+[% USE Koha %]
 [% USE KohaDates %]
 [% USE Price %]
 [% USE ItemTypes %]
+[% USE Registers %]
 [% SET footerjs = 1 %]
 [% PROCESS 'accounts.inc' %]
 [% INCLUDE 'doc-head-open.inc' %]
                             [% END %]
                         [% END %]
                     </select>
-             </td>
-        </tr>
                 </li>
+                [% IF Koha.Preference('UseCashRegisters') %]
+                <li>
+                    <label for="registerid">Cash register: </label>
+                    <select name="registerid" id="registerid">
+                        [% PROCESS options_for_registers registers => Registers.all( selected => registerid ) %]
+                    </select>
+                </li>
+                [% END %]
             </ol>
         </fieldset>
 
      </div> <!-- /.row -->
 
 [% MACRO jsinclude BLOCK %]
+    [% Asset.js("js/register_selection.js") | $raw %]
     [% INCLUDE 'datatables.inc' %]
     <script id="js">
         $(document).ready(function() {
index b9a3fe8..8e8f46c 100755 (executable)
@@ -61,6 +61,7 @@ my @debit_types =
   Koha::Account::DebitTypes->search()->as_list;
 my @credit_types =
   Koha::Account::CreditTypes->search()->as_list;
+my $registerid;
 
 if ($do_it) {
 
@@ -94,6 +95,12 @@ if ($do_it) {
         push @extra_params, $manager_branchcode;
     }
 
+    my $whereRegister = q{};
+    $registerid = $input->param("registerid");
+    if ($registerid) {
+        $whereRegister = q{ AND al.register_id = ?};
+        push @extra_params, $registerid;
+    }
 
     my $query = "
     SELECT round(amount,2) AS amount, description,
@@ -110,6 +117,7 @@ if ($do_it) {
         WHERE CAST(al.date AS DATE) BETWEEN ? AND ?
         $whereTType
         $whereBranchCode
+        $whereRegister
         ORDER BY al.date
     ";
     my $sth_stats = $dbh->prepare($query) or die "Unable to prepare query " . $dbh->errstr;
@@ -191,6 +199,7 @@ $template->param(
     branchloop       => Koha::Libraries->search({}, { order_by => ['branchname'] })->unblessed,
     debit_types      => \@debit_types,
     credit_types     => \@credit_types,
+    registerid       => $registerid,
     CGIsepChoice => GetDelimiterChoices,
 );