View | Details | Raw Unified | Return to bug 24492
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/pos-menu.inc (+1 lines)
Lines 4-9 Link Here
4
        <h5>Point of sale</h5>
4
        <h5>Point of sale</h5>
5
        <ul>
5
        <ul>
6
            <li><a href="/cgi-bin/koha/pos/register.pl">Register details</a></li>
6
            <li><a href="/cgi-bin/koha/pos/register.pl">Register details</a></li>
7
            <li><a href="/cgi-bin/koha/pos/registers.pl">Branch details</a></li>
7
        </ul>
8
        </ul>
8
        [% END %]
9
        [% END %]
9
        [% IF ( CAN_user_parameters_manage_cash_registers || CAN_user_parameters_manage_accounts) %]
10
        [% IF ( CAN_user_parameters_manage_cash_registers || CAN_user_parameters_manage_accounts) %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/pos/registers.tt (+151 lines)
Line 0 Link Here
1
[% USE raw %]
2
[% USE Asset %]
3
[% USE Koha %]
4
[% USE KohaDates %]
5
[% USE Price %]
6
[% SET footerjs = 1 %]
7
[% INCLUDE 'doc-head-open.inc' %]
8
<title>Koha &rsaquo; Cashup</title>
9
[% INCLUDE 'doc-head-close.inc' %]
10
</head>
11
12
<body id="cashup" class="pos">
13
[% INCLUDE 'header.inc' %]
14
[% INCLUDE 'circ-search.inc' %]
15
16
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; Point of sale</div>
17
18
<div class="main container-fluid">
19
    <div class="row">
20
        <div class="col-sm-10 col-sm-push-2">
21
            <main>
22
                [% IF ( error_registers ) %]
23
                <div id="error_message" class="dialog alert">
24
                    You must have at least one cash register associated with this branch before you can record payments.
25
                </div>
26
                [% ELSE %]
27
                <div id="toolbar" class="btn-toolbar">
28
                    <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>
29
                </div>
30
31
                <h1>Branch transaction details for [% library.branchname | html %]</h1>
32
33
                <h2>Summary</h2>
34
                <ul>
35
                    <li>Total income (cash): ()</li>
36
                    <li>Total outgoing (cash): ()</li>
37
                    <li>Total bankable: </li>
38
                </ul>
39
40
                <table id="registers" class="table_registers">
41
                    <thead>
42
                        <th>
43
                            ID
44
                        </th>
45
                        <th>
46
                            Name
47
                        </th>
48
                        <th>
49
                            Description
50
                        </th>
51
                        <th>
52
                            Last cashup
53
                        </th>
54
                        <th>
55
                            Float
56
                        </th>
57
                        <th>
58
                            Bankable
59
                        </th>
60
                        <th>
61
                            Actions
62
                        </th>
63
                    </thead>
64
                    <tbody>
65
                        [% FOREACH register IN registers %]
66
                        <tr>
67
                            <td>
68
                                [% register.id | html %]
69
                            </td>
70
                            <td>
71
                                <a href="/cgi-bin/koha/pos/register.pl?registerid=[% register.id | uri %]">[% register.name | html %]</a>
72
                            </td>
73
                            <td>
74
                                [% register.description | html %]
75
                            </td>
76
                            <td>
77
                                [%- IF register.last_cashup -%]
78
                                [% register.last_cashup.timestamp | $KohaDates with_hours => 1 %] ([% register.last_cashup.amount | $Price %])
79
                                [%- ELSE -%]
80
                                No last cashup
81
                                [%- END -%]
82
                            </td>
83
                            <td>
84
                                [% register.starting_float | $Price %]
85
                            </td>
86
                            <td>
87
                                [% register.outstanding_accountlines.total * -1 | $Price %]
88
                            </td>
89
                            <td>
90
                                <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>
91
                            </td>
92
                        </tr>
93
                        [% END %]
94
                    </tbody>
95
                    <tfoot>
96
                        <tr>
97
                            <td colspan="5">Total bankable:</td>
98
                            <td></td>
99
                            <td></td>
100
                        </tr>
101
                    </tfoot>
102
                </table>
103
                [% END %]
104
            </main>
105
        </div>
106
107
        <div class="col-sm-2 col-sm-pull-10">
108
            <aside>
109
                [% INCLUDE 'pos-menu.inc' %]
110
            </aside>
111
        </div>
112
113
    </div> <!-- /.row -->
114
115
[% MACRO jsinclude BLOCK %]
116
    [% INCLUDE 'datatables.inc' %]
117
    <script>
118
        $(document).ready(function() {
119
            var registers_table = $("#registers").dataTable($.extend(true, {}, dataTablesDefaults, {
120
                "bFilter": false,
121
                "paginationType": "full",
122
                "footerCallback": function ( row, data, start, end, display ) {
123
                            var api = this.api(), data;
124
125
                            // Remove the formatting to get integer data for summation
126
                            var intVal = function ( i ) {
127
                                return typeof i === 'string' ?
128
                                    i.replace(/[\$,]/g, '')*1 :
129
                                    typeof i === 'number' ?
130
                                        i : 0;
131
                            };
132
133
                            // Total over all pages
134
                            total = api
135
                                .column( 5 )
136
                                .data()
137
                                .reduce( function (a, b) {
138
                                    return intVal(a) + intVal(b);
139
                                }, 0 );
140
141
                            // Update footer
142
                            $( api.column( 5 ).footer() ).html(
143
                                total
144
                            );
145
                        }
146
            }));
147
        });
148
    </script>
149
[% END %]
150
151
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt (+8 lines)
Lines 129-134 Link Here
129
    <dd>Access files stored on the server, like log files or reports</dd>
129
    <dd>Access files stored on the server, like log files or reports</dd>
130
    [% END %]
130
    [% END %]
131
131
132
    [% IF ( Koha.Preference('UseCashRegisters') && CAN_user_cash_management_manage_cash_registers ) %]
133
        [% IF ( CAN_user_cash_management_manage_cash_registers ) %]
134
        <dt><a href="/cgi-bin/koha/pos/registers.pl">Cashup registers</a></dt>
135
        <dd>Perfrom cashup actions on cash registers</dd>
136
        [% END %]
137
    [% END %]
138
139
132
</dl>
140
</dl>
133
</div>
141
</div>
134
142
(-)a/pos/registers.pl (-1 / +69 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
#
3
# c 2020 PTFS-Europe Ltd
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU General Public License as published by the Free Software
9
# Foundation; either version 2 of the License, or (at your option) any later
10
# version.
11
#
12
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License along with
17
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
18
# Suite 330, Boston, MA  02111-1307 USA
19
#
20
21
use Modern::Perl;
22
use CGI;
23
use C4::Auth;
24
use C4::Output;
25
use C4::Context;
26
27
use Koha::Cash::Registers;
28
use Koha::Database;
29
30
my $input = CGI->new();
31
32
my ( $template, $loggedinuser, $cookie, $user_flags ) = get_template_and_user(
33
    {
34
        template_name   => 'pos/registers.tt',
35
        query           => $input,
36
        type            => 'intranet',
37
        authnotrequired => 0,
38
    }
39
);
40
my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in";
41
42
my $library = Koha::Libraries->find( C4::Context->userenv->{'branch'} );
43
$template->param( library => $library );
44
45
my $registers = Koha::Cash::Registers->search(
46
    { branch   => $library->id, archived => 0 },
47
    { order_by => { '-asc' => 'name' } }
48
);
49
50
if ( !$registers->count ) {
51
    $template->param( error_registers => 1 );
52
}
53
else {
54
    $template->param( registers => $registers );
55
}
56
57
my $op = $input->param('op') // '';
58
if ( $op eq 'cashup' ) {
59
    for my $register ( $registers->as_list ) {
60
        $register->add_cashup(
61
            {
62
                user_id => $logged_in_user->id,
63
                amount  => $register->outstanding_accountlines->total
64
            }
65
        );
66
    }
67
}
68
69
output_html_with_http_headers( $input, $cookie, $template->output );

Return to bug 24492