@@ -, +, @@ check-ins for today and have print message there. If not, run updatedatabase.pl the toolbar, select "Print check-in slip" branches - should only print items for the current branch. in different day - should only print items for today. --- .../atomicupdate/bug_12224_checkin_syspref.sql | 14 ++++ .../data/mysql/en/mandatory/sample_notices.sql | 17 ++-- installer/data/mysql/updatedatabase.pl | 18 ---- .../prog/en/includes/members-toolbar.inc | 2 +- t/db_dependent/Members/IssueSlip.t | 98 +++++++++++++++++++++- 5 files changed, 122 insertions(+), 27 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_12224_checkin_syspref.sql --- a/installer/data/mysql/atomicupdate/bug_12224_checkin_syspref.sql +++ a/installer/data/mysql/atomicupdate/bug_12224_checkin_syspref.sql @@ -0,0 +1,14 @@ +INSERT INTO letter (module, code, branchcode, name, is_html, title, content, message_transport_type) +VALUES ( 'circulation', 'CHECKINSLIP', '', 'Printed check-in slip', '1', 'Items returned today', '

<>

+Checked in by <> <> <> <>
+(<>)
+ +<>
+

Checked In Today

+ +

+<>
+Barcode: <>
+

+
', 'print' +); --- a/installer/data/mysql/en/mandatory/sample_notices.sql +++ a/installer/data/mysql/en/mandatory/sample_notices.sql @@ -157,13 +157,16 @@ INSERT INTO letter(module, code, branchcode, name, title, content, message_trans VALUES ('acquisition', 'ACQ_NOTIF_ON_RECEIV', '', 'Notification on receiving', 'Order received', 'Dear <> <>,\n\n The order <> (<>) has been received.\n\nYour library.', 'email') INSERT INTO letter (module, code, branchcode, name, is_html, title, content, message_transport_type) -VALUES ( 'circulation', 'CHECKINSLIP', '', 'Printed check-in slip', '1', 'Items returned today', '<> <>
-<>, <>
-You returned these items today: -
    +VALUES ( 'circulation', 'CHECKINSLIP', '', 'Printed check-in slip', '1', 'Items returned today', '

    <>

    +Checked in by <> <> <> <>
    +(<>)
    + +<>
    +

    Checked In Today

    -
  • <>: <>
    +

    +<>
    Barcode: <>
    - -

', 'print' +

+'', 'print' ); --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -10761,24 +10761,6 @@ if ( CheckVersion($DBversion) ) { SetVersion ($DBversion); } -$DBversion = "3.21.00.019"; -if ( CheckVersion($DBversion) ) { - $dbh->do(" -INSERT INTO letter (module, code, branchcode, name, is_html, title, content, message_transport_type) -VALUES ( 'circulation', 'CHECKINSLIP', '', 'Printed check-in slip', '1', 'Items returned today', '<> <>
-<>, <>
-You returned these items today: -
    - -
  • <>: <>
    -Barcode: <>
    - -
', 'print' -);"); - print "Upgrade to $DBversion done (Bug 12224 - Easy printing of patron check-in slip)\n"; - SetVersion($DBversion); -} - # DEVELOPER PROCESS, search for anything to execute in the db_update directory # SEE bug 13068 # if there is anything in the atomicupdate, read and execute it. --- a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc @@ -159,7 +159,7 @@ function searchToHold(){ [% IF ( CAN_user_borrowers ) %]
  • Print summary
  • [% END %]
  • Print slip
  • Print quick slip
  • -
  • Print checked-in today -slip
  • +
  • Print check-in slip
  • Search to hold --- a/t/db_dependent/Members/IssueSlip.t +++ a/t/db_dependent/Members/IssueSlip.t @@ -2,7 +2,7 @@ use Modern::Perl; -use Test::More tests => 3; +use Test::More tests => 4; use Test::MockModule; use C4::Biblio; @@ -74,6 +74,18 @@ $dbh->do(q| INSERT INTO letter( module, code, branchcode, name, is_html, title, content, message_transport_type) VALUES ('circulation', 'ISSUEQSLIP', '', 'Issue Quick Slip', 0, 'Issue Quick Slip', ?, 'email') |, {}, $quick_slip_content); +my $checkin_slip_content = < +Title: <> +Barcode: <> + +EOS + +$dbh->do(q| + INSERT INTO letter( module, code, branchcode, name, is_html, title, content, message_transport_type) VALUES ('circulation', 'CHECKINSLIP', '', 'Printed check-in slip', '0', 'Items returned today', ?, 'print') +|, {}, $checkin_slip_content); + my ( $title1, $title2 ) = ( 'My title 1', 'My title 2' ); my ( $barcode1, $barcode2 ) = ('BC0101', 'BC0202' ); my $record = MARC::Record->new; @@ -108,6 +120,90 @@ $module->mock( 'userenv', sub { { branch => $branchcode } } ); my $today = dt_from_string; my $yesterday = dt_from_string->subtract_duration( DateTime::Duration->new( days => 1 ) ); +subtest 'Check-in slip' => sub { + plan tests => 2; + + subtest 'Empty slip' => sub { + plan tests => 1; + + my $today_daily = $today->clone->set( hour => 23, minute => 59 ); + my ( $date_due, $issue_date ); + $date_due = $today_daily; + $issue_date = $today_daily->clone->subtract_duration( DateTime::Duration->new( minutes => 1 ) ); + AddIssue( $borrower, $barcode1, $date_due, undef, $issue_date ); + + my $slip = CheckInSlip($borrowernumber, $branchcode ); + my $empty_slip = <{content}, $empty_slip, 'No checked in returns an empty slip' ); + + AddReturn( $barcode1, $branchcode ); + }; + + subtest 'Daily returns' => sub { + plan tests => 3; + my $slip = CheckInSlip($borrowernumber, $branchcode ); + my $expected_slip = <{content}, $expected_slip, 'CheckInSlip should return a slip with one check-in' ); + + my $today_daily = $today->clone->set( hour => 23, minute => 59 ); + my ( $date_due, $issue_date ); + $date_due = $today_daily; + $issue_date = $today_daily->clone->subtract_duration( DateTime::Duration->new( minutes => 1 ) ); + AddIssue( $borrower, $barcode1, $date_due, undef, $issue_date ); + AddReturn( $barcode1, $branchcode ); + + my $slip = CheckInSlip($borrowernumber, $branchcode ); + my $expected_slip = <{content}, $expected_slip, 'CheckInSlip should return a slip with 2 same check-in' ); + + my $today_daily = $today->clone->set( hour => 01, minute => 59 ); + my ( $date_due, $issue_date ); + $date_due = $today_daily; + $issue_date = $today_daily->clone->subtract_duration( DateTime::Duration->new( minutes => 1 ) ); + AddIssue( $borrower, $barcode2, $date_due, undef, $issue_date ); + AddReturn( $barcode2, $branchcode ); + + my $slip = CheckInSlip($borrowernumber, $branchcode ); + my $expected_slip = <{content}, $expected_slip, 'CheckInSlip should return a slip with 3 check-in' ); + + }; + +}; + subtest 'Issue slip' => sub { plan tests => 3; --