Bugzilla – Attachment 108093 Details for
Bug 26172
Add a cashup summary view (with option to print)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 26172: Add cashup summary view modal
Bug-26172-Add-cashup-summary-view-modal.patch (text/plain), 7.92 KB, created by
Martin Renvoize (ashimema)
on 2020-08-12 09:48:33 UTC
(
hide
)
Description:
Bug 26172: Add cashup summary view modal
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2020-08-12 09:48:33 UTC
Size:
7.92 KB
patch
obsolete
>From 98899d781124f21946b84e06aab2759256f7ea8f Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Date: Fri, 7 Aug 2020 10:15:20 +0100 >Subject: [PATCH] Bug 26172: Add cashup summary view modal > >This patch adds a cashup summary modal to the register details page. > >Test plan >1/ Enable Cash Registers and Point of Sale >2/ Enable some debit_types as 'Sale items' >3/ Perform a series of transactions >4/ Perform a 'Cashup' on the register >5/ Note the new '(Summary)' link next to the last cashup on the register >page. >6/ Click the link and confirm the modal contains the pertinent >information >--- > Koha/Cash/Register/Action.pm | 99 +++++++++++++++++++ > .../prog/en/modules/pos/register.tt | 55 ++++++++++- > 2 files changed, 153 insertions(+), 1 deletion(-) > >diff --git a/Koha/Cash/Register/Action.pm b/Koha/Cash/Register/Action.pm >index f9e0aae77d..726021c56e 100644 >--- a/Koha/Cash/Register/Action.pm >+++ b/Koha/Cash/Register/Action.pm >@@ -48,6 +48,105 @@ sub manager { > return Koha::Patron->_new_from_dbic($rs); > } > >+=head3 register >+ >+Return the register linked to this cash register::action >+ >+=cut >+ >+sub register { >+ my ($self) = @_; >+ my $rs = $self->_result->register; >+ return unless $rs; >+ return Koha::Cash::Register->_new_from_dbic($rs); >+} >+ >+=head3 cashup_summary >+ >+ my $cashup_summary = $action->cashup_summary; >+ >+Return a hashref containing a summary of transactions that make up this cashup action. >+ >+=cut >+ >+sub cashup_summary { >+ my ($self) = @_; >+ my $summary; >+ my $prior_cashup = Koha::Cash::Register::Actions->search( >+ { >+ 'code' => 'CASHUP', >+ 'timestamp' => { '<' => $self->timestamp }, >+ register_id => $self->register_id >+ }, >+ { >+ order_by => { '-desc' => [ 'timestamp', 'id' ] }, >+ rows => 1 >+ } >+ ); >+ >+ my $previous = $prior_cashup->single; >+ >+ my $conditions = >+ $previous >+ ? { >+ 'date' => { >+ '-between' => >+ [ $previous->_result->get_column('timestamp'), $self->timestamp ] >+ } >+ } >+ : { 'date' => { '<' => $self->timestamp } }; >+ >+ my $outgoing_transactions = $self->register->accountlines->search( >+ { %{$conditions}, credit_type_code => undef }, >+ { select => 'accountlines_id' } ); >+ my $income_transactions = $self->register->accountlines->search( >+ { %{$conditions}, debit_type_code => undef }, >+ { select => 'accountlines_id' } ); >+ >+ my $income_summary = Koha::Account::Offsets->search( >+ { >+ 'me.credit_id' => >+ { '-in' => $income_transactions->_resultset->as_query }, >+ 'me.debit_id' => { '!=' => undef } >+ }, >+ { >+ join => 'debit', >+ group_by => 'debit.debit_type_code', >+ 'select' => [ { sum => 'me.amount' }, 'debit.debit_type_code' ], >+ 'as' => [ 'total', 'debit_code' ], >+ } >+ ); >+ >+ my $outgoing_summary = Koha::Account::Offsets->search( >+ { >+ 'me.debit_id' => >+ { '-in' => $outgoing_transactions->_resultset->as_query }, >+ 'me.credit_id' => { '!=' => undef } >+ }, >+ { >+ join => 'credit', >+ group_by => 'credit.credit_type_code', >+ 'select' => [ { sum => 'me.amount' }, 'credit.credit_type_code' ], >+ 'as' => [ 'total', 'credit_code' ], >+ } >+ ); >+ >+ my @income = map { $_->unblessed } $income_summary->as_list; >+ my @outgoing = map { $_->unblessed } $outgoing_summary->as_list; >+ $summary = { >+ from_date => $previous ? $previous->timestamp : undef, >+ to_date => $self->timestamp, >+ income => \@income, >+ outgoing => \@outgoing, >+ total => $outgoing_transactions->total + $income_transactions->total, >+ bankable => >+ $outgoing_transactions->search( { payment_type => 'CASH' } )->total + >+ $income_transactions->search( { payment_type => 'CASH' } )->total >+ }; >+ >+ return $summary; >+} >+ > =head2 Internal methods > > =cut >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt >index 2d96682a2f..34f0ce508c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/register.tt >@@ -39,7 +39,8 @@ > <h2>Summary</h2> > <ul> > [% IF register.last_cashup %] >- <li>Last cashup: [% register.last_cashup.timestamp | $KohaDates with_hours => 1 %]</li> >+ <li>Last cashup: [% register.last_cashup.timestamp | $KohaDates with_hours => 1 %] (<a data-toggle="modal" href="#cashupSummaryModal" class="button">Summary</a>)</li> >+ > [% END %] > <li>Float: [% register.starting_float | $Price %]</li> > <li>Total income (cash): [% accountlines.credits_total * -1 | $Price %] ([% accountlines.credits_total(payment_type => 'CASH') * -1 | $Price %])</li> >@@ -283,6 +284,58 @@ > </form> <!-- /#refund_form --> > </div> <!-- /#issueRefundModal --> > >+ <!-- Cashup summary modal --> >+ [% IF register.last_cashup %] >+ <div class="modal" id="cashupSummaryModal" tabindex="-1" role="dialog" aria-labelledby="cashupSummaryLabel"> >+ <div class="modal-dialog" role="document"> >+ <div class="modal-content"> >+ <div class="modal-header"> >+ <button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> >+ <h4 class="modal-title" id="cashupSummaryLabel">Cashup summary for <em>[% register.description | html %]</em> between [% register.last_cashup.cashup_summary.from_date %] and [% register.last_cashup.cashup_summary.to_date %]</h4> >+ </div> >+ <div class="modal-body"> >+ <table> >+ <thead> >+ <tr> >+ <th>Type</th> >+ <th>Total</th> >+ </tr> >+ </thead> >+ <tbody> >+ [%- FOREACH out IN register.last_cashup.cashup_summary.outgoing -%] >+ <tr> >+ <td>[% out.credit_code %]</td> >+ <td>[% out.total | $Price %]</td> >+ </tr> >+ [%- END -%] >+ [%- FOREACH in IN register.last_cashup.cashup_summary.income -%] >+ <tr> >+ <td>[% in.debit_code %]</td> >+ <td>[% in.total | $Price %]</td> >+ </tr> >+ [%- END -%] >+ </tbody> >+ <tfoot> >+ <tr> >+ <td>Total</td> >+ <td>[% register.last_cashup.cashup_summary.total | $Price %]</td> >+ </tr> >+ <tr> >+ <td>Bankable</td> >+ <td>[% register.last_cashup.cashup_summary.bankable | $Price %]</td> >+ </tr> >+ >+ </tfoot> >+ </table> >+ </div> <!-- /.modal-body --> >+ <div class="modal-footer"> >+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> >+ </div> <!-- /.modal-footer --> >+ </div> <!-- /.modal-content --> >+ </div> <!-- /.modal-dialog --> >+ </div> <!-- /#cashupSummaryModal --> >+ [% END %] >+ > [% MACRO jsinclude BLOCK %] > [% INCLUDE 'datatables.inc' %] > [% Asset.js("lib/jquery/plugins/rowGroup/dataTables.rowGroup.min.js") | $raw %] >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 26172
:
108093
|
108095
|
108523
|
108817
|
108818
|
108822
|
108825
|
108826
|
108827
|
111162
|
111163
|
111164
|
111598
|
111599
|
111600
|
111601
|
111629
|
111630
|
111631
|
111632
|
111633
|
111634
|
111668
|
111683
|
111691
|
111692
|
111731
|
111732
|
112907
|
112908
|
112909