X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=reports%2Fcash_register_stats.pl;h=c2b22f9db29cc9539ed6961cc69fa53aa058e6c1;hb=5d2677a4ac5c32a10be9fc955f406b22949fecec;hp=52cf12488a918fdae34cc605e1237f67cb6e2cb0;hpb=2665dc909453277636eee99ec797233f473a0ae1;p=koha-ffzg.git diff --git a/reports/cash_register_stats.pl b/reports/cash_register_stats.pl index 52cf12488a..c2b22f9db2 100755 --- a/reports/cash_register_stats.pl +++ b/reports/cash_register_stats.pl @@ -2,43 +2,41 @@ # # 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; +# 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 3 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. +# 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., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . use Modern::Perl; -use C4::Auth; +use C4::Auth qw( get_template_and_user ); use CGI; use C4::Context; -use C4::Reports; -use C4::Output; -use C4::Koha; -use C4::Circulation; +use C4::Reports qw( GetDelimiterChoices ); +use C4::Output qw( output_html_with_http_headers ); use DateTime; -use Koha::DateUtils; +use Koha::DateUtils qw( dt_from_string ); use Text::CSV::Encoded; -use List::Util qw/any/; +use List::Util qw( any ); +use Koha::Account::CreditTypes; use Koha::Account::DebitTypes; -my $input = new CGI; +my $input = CGI->new; my $dbh = C4::Context->dbh; my ($template, $borrowernumber, $cookie) = get_template_and_user({ template_name => "reports/cash_register_stats.tt", query => $input, type => "intranet", - authnotrequired => 0, flagsrequired => {reports => '*'}, - debug => 1, }); my $do_it = $input->param('do_it'); @@ -53,18 +51,17 @@ $template->param( ); #Initialize date pickers to today -my $fromDate = dt_from_string; -my $toDate = dt_from_string; +my $fromDate = $input->param("from") || dt_from_string; +my $toDate = $input->param("to") || dt_from_string; my @debit_types = Koha::Account::DebitTypes->search()->as_list; +my @credit_types = + Koha::Account::CreditTypes->search()->as_list; +my $registerid; if ($do_it) { - $fromDate = output_pref({ dt => eval { dt_from_string($input->param("from")) } || dt_from_string, - dateformat => 'sql', dateonly => 1 }); #for sql query - $toDate = output_pref({ dt => eval { dt_from_string($input->param("to")) } || dt_from_string, - dateformat => 'sql', dateonly => 1 }); #for sql query my $whereTType = q{}; my @extra_params; # if we add conditions to the select we need extra params @@ -72,9 +69,9 @@ if ($do_it) { if ($transaction_type eq 'ALL') { #All Transactons $whereTType = q{}; } elsif ($transaction_type eq 'ACT') { #Active - $whereTType = q{ AND credit_type_code IN ('Pay','CREDIT') }; + $whereTType = q{ AND credit_type_code IN ('PAYMENT','CREDIT') }; } elsif ($transaction_type eq 'FORW') { - $whereTType = q{ AND credit_type_code IN ('FORGIVEN','W') }; + $whereTType = q{ AND credit_type_code IN ('FORGIVEN','WRITEOFF') }; } else { if ( any { $transaction_type eq $_->code } @debit_types ) { $whereTType = q{ AND debit_type_code = ? }; @@ -91,22 +88,32 @@ 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, + SELECT round(amount,2) AS amount, al.description, bo.surname AS bsurname, bo.firstname AS bfirstname, m.surname AS msurname, m.firstname AS mfirstname, bo.cardnumber, br.branchname, bo.borrowernumber, - al.borrowernumber, DATE(al.date) as date, al.credit_type_code, al.debit_type_code, al.amountoutstanding, al.note, + al.borrowernumber, DATE(al.date) as date, al.credit_type_code, al.debit_type_code, COALESCE(act.description,al.credit_type_code,adt.description,al.debit_type_code) AS type_description, al.amountoutstanding, al.note, al.timestamp, bi.title, bi.biblionumber, i.barcode, i.itype FROM accountlines al LEFT JOIN borrowers bo ON (al.borrowernumber = bo.borrowernumber) LEFT JOIN borrowers m ON (al.manager_id = m.borrowernumber) - LEFT JOIN branches br ON (br.branchcode = m.branchcode ) + LEFT JOIN cash_registers cr ON (al.register_id = cr.id) + LEFT JOIN branches br ON (br.branchcode = cr.branch) LEFT JOIN items i ON (i.itemnumber = al.itemnumber) LEFT JOIN biblio bi ON (bi.biblionumber = i.biblionumber) + LEFT JOIN account_credit_types act ON (al.credit_type_code = act.code) + LEFT JOIN account_debit_types adt ON (al.debit_type_code = adt.code) 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; @@ -121,14 +128,14 @@ if ($do_it) { $row->{date} = dt_from_string($row->{date}, 'sql'); push (@loopresult, $row); - if($transaction_type eq 'ACT' && ($row->{credit_type_code} !~ /^C$|^CR$|^Pay$/)){ + if($transaction_type eq 'ACT' && ($row->{credit_type_code} !~ /^CREDIT$|^PAYMENT$/)){ pop @loopresult; next; } - if($row->{credit_type_code} =~ /^C$|^CR$/){ + if($row->{credit_type_code} =~ /^CREDIT$/){ $grantotal -= abs($row->{amount}); $row->{amount} = '-' . $row->{amount}; - }elsif($row->{credit_type_code} eq 'FORGIVEN' || $row->{credit_type_code} eq 'W'){ + }elsif($row->{credit_type_code} eq 'FORGIVEN' || $row->{credit_type_code} eq 'WRITEOFF'){ }else{ $grantotal += abs($row->{amount}); } @@ -146,7 +153,7 @@ if ($do_it) { my $format = 'csv'; my $reportname = $input->param('basename'); my $reportfilename = $reportname ? "$reportname.$format" : "reportresults.$format" ; - my $delimiter = C4::Context->preference('delimiter') || ','; + my $delimiter = C4::Context->csv_delimiter; my @rows; foreach my $row (@loopresult) { my @rowValues; @@ -155,8 +162,8 @@ if ($do_it) { $row->{bfirstname} . ' ' . $row->{bsurname}, $row->{branchname}, $row->{date}, - $row->{credit_type}, - $row->{debit_type}, + $row->{timestamp}, + $row->{type_description}, $row->{note}, $row->{amount}, $row->{title}, @@ -165,7 +172,7 @@ if ($do_it) { push (@rows, \@rowValues) ; } my @total; - for (1..6){push(@total,"")}; + for (1..7){push(@total,"")}; push(@total, $grantotal); print $input->header( -type => 'text/csv', @@ -187,6 +194,8 @@ $template->param( transaction_type => $transaction_type, branchloop => Koha::Libraries->search({}, { order_by => ['branchname'] })->unblessed, debit_types => \@debit_types, + credit_types => \@credit_types, + registerid => $registerid, CGIsepChoice => GetDelimiterChoices, );