Bugzilla – Attachment 97792 Details for
Bug 23355
Add a 'cashup' process to accounts
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 23355: Add branch details page
Bug-23355-Add-branch-details-page.patch (text/plain), 10.39 KB, created by
Martin Renvoize (ashimema)
on 2020-01-23 10:58:59 UTC
(
hide
)
Description:
Bug 23355: Add branch details page
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2020-01-23 10:58:59 UTC
Size:
10.39 KB
patch
obsolete
>From a1613b58857864acf7a864401071144db6ce11fc Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Date: Thu, 9 Jan 2020 13:53:09 +0000 >Subject: [PATCH] Bug 23355: Add branch details page > >This patch adds a new 'branch details' page to the POS system which >displays a summary of the cash register transactions for a branch >since each register was last cashed up. It also allows for cashing >up individual registers or cashing up all registers at a given branch >in one transaction. > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> >--- > .../prog/en/includes/pos-menu.inc | 1 + > .../prog/en/modules/pos/registers.tt | 149 ++++++++++++++++++ > .../prog/en/modules/tools/tools-home.tt | 8 + > pos/registers.pl | 69 ++++++++ > 4 files changed, 227 insertions(+) > create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/pos/registers.tt > create mode 100755 pos/registers.pl > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc >index ba922403fe..7928b0020e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc >@@ -4,6 +4,7 @@ > <h5>Point of sale</h5> > <ul> > <li><a href="/cgi-bin/koha/pos/register.pl">Register details</a></li> >+ <li><a href="/cgi-bin/koha/pos/registers.pl">Branch details</a></li> > </ul> > [% END %] > [% IF ( CAN_user_parameters_manage_cash_registers || CAN_user_parameters_manage_accounts) %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/registers.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/registers.tt >new file mode 100644 >index 0000000000..b06a4f5b0f >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/pos/registers.tt >@@ -0,0 +1,149 @@ >+[% USE raw %] >+[% USE Asset %] >+[% USE Koha %] >+[% USE KohaDates %] >+[% USE AuthorisedValues %] >+[% USE Price %] >+[% SET footerjs = 1 %] >+[% INCLUDE 'doc-head-open.inc' %] >+<title>Koha › Cashup</title> >+[% INCLUDE 'doc-head-close.inc' %] >+</head> >+ >+<body id="cashup" class="pos"> >+[% INCLUDE 'header.inc' %] >+[% INCLUDE 'circ-search.inc' %] >+ >+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › Point of sale</div> >+ >+<div class="main container-fluid"> >+ <div class="row"> >+ <div class="col-sm-10 col-sm-push-2"> >+ <main> >+ [% IF ( error_registers ) %] >+ <div id="error_message" class="dialog alert"> >+ You must have at least one cash register associated with this branch before you can record payments. >+ </div> >+ [% ELSE %] >+ <div id="toolbar" class="btn-toolbar"> >+ <a class="cashup_all btn btn-default" href="/cgi-bin/koha/pos/registers.pl?op=cashup"><i class="fa fa-money"></i> Cashup all</a> >+ </div> >+ >+ <h1>Branch transaction details for [% library.branchname | html %]</h1> >+ >+ <h2>Summary</h2> >+ >+ >+ >+ <table id="registers" class="table_registers"> >+ <thead> >+ <th> >+ ID >+ </th> >+ <th> >+ Name >+ </th> >+ <th> >+ Description >+ </th> >+ <th> >+ Last cashup >+ </th> >+ <th> >+ Float >+ </th> >+ <th> >+ Bankable >+ </th> >+ <th> >+ Actions >+ </th> >+ </thead> >+ <tbody> >+ [% FOREACH register IN registers %] >+ <tr> >+ <td> >+ [% register.id | html %] >+ </td> >+ <td> >+ <a href="/cgi-bin/koha/pos/register.pl?registerid=[% register.id | uri %]">[% register.name | html %]</a> >+ </td> >+ <td> >+ [% register.description | html %] >+ </td> >+ <td> >+ [%- IF register.last_cashup -%] >+ [% register.last_cashup.timestamp | $KohaDates with_hours => 1 %] ([% register.last_cashup.amount | $Price %]) >+ [%- ELSE -%] >+ No last cashup >+ [%- END -%] >+ </td> >+ <td> >+ [% register.starting_float | $Price %] >+ </td> >+ <td> >+ [% register.outstanding_accountlines.total * -1 | $Price %] >+ </td> >+ <td> >+ <a class="cashup_individual btn btn-default" href="/cgi-bin/koha/pos/register.pl?registerid=[% register.id | uri %]&op=cashup"><i class="fa fa-money"></i> Record cashup</a> >+ </td> >+ </tr> >+ [% END %] >+ </tbody> >+ <tfoot> >+ <tr> >+ <td colspan="5">Total bankable:</td> >+ <td></td> >+ <td></td> >+ </tr> >+ </tfoot> >+ </table> >+ [% END %] >+ </main> >+ </div> >+ >+ <div class="col-sm-2 col-sm-pull-10"> >+ <aside> >+ [% INCLUDE 'pos-menu.inc' %] >+ </aside> >+ </div> >+ >+ </div> <!-- /.row --> >+ >+[% MACRO jsinclude BLOCK %] >+ [% INCLUDE 'datatables.inc' %] >+ <script> >+ $(document).ready(function() { >+ var registers_table = $("#registers").dataTable($.extend(true, {}, dataTablesDefaults, { >+ "bFilter": false, >+ "paginationType": "full", >+ "footerCallback": function ( row, data, start, end, display ) { >+ var api = this.api(), data; >+ >+ // Remove the formatting to get integer data for summation >+ var intVal = function ( i ) { >+ return typeof i === 'string' ? >+ i.replace(/[\$,]/g, '')*1 : >+ typeof i === 'number' ? >+ i : 0; >+ }; >+ >+ // Total over all pages >+ total = api >+ .column( 5 ) >+ .data() >+ .reduce( function (a, b) { >+ return intVal(a) + intVal(b); >+ }, 0 ); >+ >+ // Update footer >+ $( api.column( 5 ).footer() ).html( >+ total >+ ); >+ } >+ })); >+ }); >+ </script> >+[% END %] >+ >+[% INCLUDE 'intranet-bottom.inc' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt >index 732563ce0a..9b2e257326 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt >@@ -129,6 +129,14 @@ > <dd>Access files stored on the server, like log files or reports</dd> > [% END %] > >+ [% IF ( Koha.Preference('UseCashRegisters') && CAN_user_cash_management_manage_cash_registers ) %] >+ [% IF ( CAN_user_cash_management_manage_cash_registers ) %] >+ <dt><a href="/cgi-bin/koha/pos/registers.pl">Cashup registers</a></dt> >+ <dd>Perfrom cashup actions on cash registers</dd> >+ [% END %] >+ [% END %] >+ >+ > </dl> > </div> > >diff --git a/pos/registers.pl b/pos/registers.pl >new file mode 100755 >index 0000000000..bf74f9f7af >--- /dev/null >+++ b/pos/registers.pl >@@ -0,0 +1,69 @@ >+#!/usr/bin/perl >+# >+# c 2015 PTFS-Europe Ltd >+# >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it under the >+# terms of the GNU General Public License as published by the Free Software >+# Foundation; either version 2 of the License, or (at your option) any later >+# version. >+# >+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY >+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR >+# A PARTICULAR PURPOSE. See the GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License along with >+# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, >+# Suite 330, Boston, MA 02111-1307 USA >+# >+ >+use Modern::Perl; >+use CGI; >+use C4::Auth; >+use C4::Output; >+use C4::Context; >+ >+use Koha::Cash::Registers; >+use Koha::Database; >+ >+my $q = CGI->new(); >+ >+my ( $template, $loggedinuser, $cookie, $user_flags ) = get_template_and_user( >+ { >+ template_name => 'pos/registers.tt', >+ query => $q, >+ type => 'intranet', >+ authnotrequired => 0, >+ } >+); >+my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in"; >+ >+my $library = Koha::Libraries->find( C4::Context->userenv->{'branch'} ); >+$template->param( library => $library ); >+ >+my $registers = Koha::Cash::Registers->search( >+ { branch => $library->id, archived => 0 }, >+ { order_by => { '-asc' => 'name' } } >+); >+ >+if ( !$registers->count ) { >+ $template->param( error_registers => 1 ); >+} >+else { >+ $template->param( registers => $registers ); >+} >+ >+my $op = $q->param('op') // ''; >+if ( $op eq 'cashup' ) { >+ for my $register ( $registers->as_list ) { >+ $register->add_cashup( >+ { >+ user_id => $logged_in_user->id, >+ amount => $register->outstanding_accountlines->total >+ } >+ ); >+ } >+} >+ >+output_html_with_http_headers( $q, $cookie, $template->output ); >-- >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 23355
:
92941
|
92942
|
92943
|
92944
|
92945
|
92946
|
92947
|
92948
|
92949
|
92950
|
92951
|
92952
|
92953
|
97031
|
97032
|
97033
|
97034
|
97035
|
97036
|
97037
|
97038
|
97039
|
97040
|
97041
|
97043
|
97044
|
97045
|
97046
|
97047
|
97048
|
97049
|
97050
|
97051
|
97052
|
97053
|
97054
|
97077
|
97078
|
97079
|
97080
|
97081
|
97082
|
97083
|
97084
|
97085
|
97086
|
97087
|
97088
|
97089
|
97706
|
97707
|
97708
|
97709
|
97710
|
97711
|
97712
|
97713
|
97714
|
97715
|
97716
|
97784
|
97785
|
97786
|
97787
|
97788
|
97789
|
97790
|
97791
|
97792
|
97793
|
97794
|
97816
|
97817
|
97818
|
97819
|
97820
|
97821
|
97822
|
97823
|
98026
|
98027
|
98028
|
98835
|
98836
|
98837
|
98838
|
98839
|
98840
|
98841
|
98842
|
100009
|
100010
|
100011
|
100012
|
100013
|
100014
|
100015
|
100016
|
100017
|
100018
|
100019
|
100020
|
100021
|
100030
|
100090
|
101685