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

(-)a/C4/Installer/PerlDependencies.pm (+5 lines)
Lines 621-626 our $PERL_DEPS = { Link Here
621
        'usage'    => 'OpacSelfRegistration',
621
        'usage'    => 'OpacSelfRegistration',
622
        'required' => '1',
622
        'required' => '1',
623
        'min_ver'  => '0.22',
623
        'min_ver'  => '0.22',
624
      },
625
    'Net::Printer' => {
626
        'usage'    => 'Push to printer',
627
        'required' => '0',
628
        'min_ver'  => '1.11',
624
    },
629
    },
625
    'File::Temp' => {
630
    'File::Temp' => {
626
        'usage'    => 'Plugins',
631
        'usage'    => 'Plugins',
(-)a/installer/data/mysql/en/mandatory/sample_notices.sql (-1 / +4 lines)
Lines 144-147 Your library.' Link Here
144
);
144
);
145
145
146
INSERT INTO letter(module, code, branchcode, name, title, content, message_transport_type)
146
INSERT INTO letter(module, code, branchcode, name, title, content, message_transport_type)
147
VALUES ('acquisition', 'ACQ_NOTIF_ON_RECEIV', '', 'Notification on receiving', 'Order received', 'Dear <<borrowers.firstname>> <<borrowers.surname>>,\n\n The order <<aqorders.ordernumber>> (<<biblio.title>>) has been received.\n\nYour library.', 'email')
147
VALUES ('acquisition', 'ACQ_NOTIF_ON_RECEIV', '', 'Notification on receiving', 'Order received', 'Dear <<borrowers.firstname>> <<borrowers.surname>>,\n\n The order <<aqorders.ordernumber>> (<<biblio.title>>) has been received.\n\nYour library.', 'email');
148
149
INSERT INTO `letter` (`module`,`code`,`branchcode`,`name`,`is_html`,`title`,`content`)
150
VALUES ('reserves', 'HOLD_PLACED_PRINT', 'Hold Placed ( Auto-Print )', 'Hold Placed ( Auto-Print )', 'Hold to pull at <<branches.branchname>>\r\nFor <<borrowers.firstname>> <<borrowers.surname>> ( <<borrowers.cardnumber>> )\r\n<<biblio.title>> by <<biblio.author>>');
(-)a/installer/data/mysql/kohastructure.sql (+2 lines)
Lines 1662-1667 CREATE TABLE `old_reserves` ( -- this table holds all holds/reserves that have b Link Here
1662
  `lowestPriority` tinyint(1) NOT NULL, -- has this hold been pinned to the lowest priority in the holds queue (1 for yes, 0 for no)
1662
  `lowestPriority` tinyint(1) NOT NULL, -- has this hold been pinned to the lowest priority in the holds queue (1 for yes, 0 for no)
1663
  `suspend` BOOLEAN NOT NULL DEFAULT 0, -- in this hold suspended (1 for yes, 0 for no)
1663
  `suspend` BOOLEAN NOT NULL DEFAULT 0, -- in this hold suspended (1 for yes, 0 for no)
1664
  `suspend_until` DATETIME NULL DEFAULT NULL, -- the date this hold is suspended until (NULL for infinitely)
1664
  `suspend_until` DATETIME NULL DEFAULT NULL, -- the date this hold is suspended until (NULL for infinitely)
1665
  `printed` tinyint(1) DEFAULT NULL,
1665
  PRIMARY KEY (`reserve_id`),
1666
  PRIMARY KEY (`reserve_id`),
1666
  KEY `old_reserves_borrowernumber` (`borrowernumber`),
1667
  KEY `old_reserves_borrowernumber` (`borrowernumber`),
1667
  KEY `old_reserves_biblionumber` (`biblionumber`),
1668
  KEY `old_reserves_biblionumber` (`biblionumber`),
Lines 1864-1869 CREATE TABLE `reserves` ( -- information related to holds/reserves in Koha Link Here
1864
  `lowestPriority` tinyint(1) NOT NULL,
1865
  `lowestPriority` tinyint(1) NOT NULL,
1865
  `suspend` BOOLEAN NOT NULL DEFAULT 0,
1866
  `suspend` BOOLEAN NOT NULL DEFAULT 0,
1866
  `suspend_until` DATETIME NULL DEFAULT NULL,
1867
  `suspend_until` DATETIME NULL DEFAULT NULL,
1868
  `printed` tinyint(1) DEFAULT NULL,
1867
  PRIMARY KEY (`reserve_id`),
1869
  PRIMARY KEY (`reserve_id`),
1868
  KEY priorityfoundidx (priority,found),
1870
  KEY priorityfoundidx (priority,found),
1869
  KEY `borrowernumber` (`borrowernumber`),
1871
  KEY `borrowernumber` (`borrowernumber`),
(-)a/installer/data/mysql/updatedatabase.pl (+24 lines)
Lines 9832-9837 if ( CheckVersion($DBversion) ) { Link Here
9832
    SetVersion($DBversion);
9832
    SetVersion($DBversion);
9833
}
9833
}
9834
9834
9835
$DBversion = "3.17.00.XXX";
9836
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
9837
    $dbh->do("ALTER TABLE reserves ADD printed BOOLEAN NULL AFTER suspend_until");
9838
    $dbh->do("INSERT INTO  `letter` (
9839
    `module` ,
9840
    `code` ,
9841
    `branchcode` ,
9842
    `name` ,
9843
    `is_html` ,
9844
    `title` ,
9845
    `content`
9846
    )
9847
    VALUES (
9848
    'reserves',  'HOLD_PLACED_PRINT',  '',  'Hold Placed ( Auto-Print )',  '0',  'Hold Placed ( Auto-Print )',  'Hold to pull at <<branches.branchname>>
9849
9850
    For <<borrowers.firstname>> <<borrowers.surname>> ( <<borrowers.cardnumber>> )
9851
9852
    <<biblio.title>> by <<biblio.author>>'
9853
    )");
9854
9855
    print "Upgrade to $DBversion done (Add print holds to pull notices on demand feature)\n";
9856
    SetVersion($DBversion);
9857
}
9858
9835
=head1 FUNCTIONS
9859
=head1 FUNCTIONS
9836
9860
9837
=head2 TableExists($table)
9861
=head2 TableExists($table)
(-)a/misc/cronjobs/holds/print_holds.pl (-1 / +159 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
# Copyright 2009-2010 Kyle Hall
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
17
# with Koha; if not, write to the Free Software Foundation, Inc.,
18
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20
use Modern::Perl;
21
22
BEGIN {
23
24
    # find Koha's Perl modules
25
    # test carefully before changing this
26
    use FindBin;
27
    eval { require "$FindBin::Bin/../kohalib.pl" };
28
}
29
30
use Getopt::Long;
31
use Pod::Usage;
32
use Net::Printer;
33
34
use C4::Context;
35
use C4::Members qw(GetMember);
36
use C4::Letters qw(GetPreparedLetter);
37
38
my $help    = 0;
39
my $test    = 0;
40
my $verbose = 0;
41
my @printers;
42
GetOptions(
43
    "help|?"      => \$help,
44
    "verbose|v"   => \$verbose,
45
    "test|t"      => \$test,
46
    "printer|p=s" => \@printers,
47
);
48
pod2usage(1) if $help;
49
pod2usage(1) unless @printers;
50
51
my %printers;
52
foreach my $p (@printers) {
53
    my ( $branchcode, $printer, $server, $port ) = split( /,/, $p );
54
    my %options;
55
    $options{'printer'} = $printer if ($printer);
56
    $options{'server'}  = $server  if ($server);
57
    $options{'port'}    = $port    if ($port);
58
    $printers{$branchcode} = new Net::Printer(%options);
59
}
60
61
my $dbh   = C4::Context->dbh;
62
my $query = "SELECT * FROM reserves WHERE printed IS NULL";
63
my $sth   = $dbh->prepare($query);
64
$sth->execute();
65
66
my $set_printed_query = "
67
    UPDATE reserves
68
    SET printed = 1
69
    WHERE reserve_id = ?
70
";
71
my $set_printed_sth = $dbh->prepare($set_printed_query);
72
73
while ( my $hold = $sth->fetchrow_hashref() ) {
74
    if ($verbose) {
75
        print "\nFound Notice to Print\n";
76
        print "Borrowernumber: " . $hold->{'borrowernumber'} . "\n";
77
        print "Biblionumber: " . $hold->{'biblionumber'} . "\n";
78
        print "Branch: " . $hold->{'branchcode'} . "\n";
79
    }
80
81
    my $borrower =
82
      C4::Members::GetMember( 'borrowernumber' => $hold->{'borrowernumber'} );
83
84
    my $letter = GetPreparedLetter(
85
        module      => 'reserves',
86
        letter_code => 'HOLD_PLACED_PRINT',
87
        branchcode  => $hold->{branchcode},
88
        tables      => {
89
            'branches'    => $hold->{'branchcode'},
90
            'biblio'      => $hold->{'biblionumber'},
91
            'biblioitems' => $hold->{'biblionumber'},
92
            'items'       => $hold->{'itemnumber'},
93
            'borrowers'   => $borrower,
94
        }
95
    );
96
97
    if ( defined( $printers{ $hold->{branchcode} } ) ) {
98
        unless ($test) {
99
            my $result =
100
              $printers{ $hold->{'branchcode'} }
101
              ->printstring( $letter->{'content'} );
102
            my $error = $printers{ $hold->{'branchcode'} }->printerror();
103
104
            unless ($error) {
105
                $set_printed_sth->execute( $hold->{'reserve_id'} );
106
            }
107
            else {
108
                warn "ERROR: $error";
109
            }
110
        }
111
        else {
112
            print "TEST MODE, notice will not be printed\n";
113
            print $letter->{'content'} . "\n";
114
        }
115
    }
116
    else {
117
        print "WARNING: No printer defined for branchcode "
118
          . $hold->{'branchcode'}
119
          if ($verbose);
120
    }
121
122
}
123
124
__END__
125
126
=head1 NAME
127
128
Print Holds
129
130
=head1 SYNOPSIS
131
132
print_holds.pl --printer <branchcode>,<printer>,<server>,<port>
133
134
=head1 OPTIONS
135
136
=over 8
137
138
=item B<-help>
139
140
Print a brief help message and exits.
141
142
=item B<-printer>
143
144
Adds a printer, the value is the branchcode, printer name, server name and server port separated by commas.
145
146
e.g. print_holds.pl --printer MPL,lp,printserver,515 --printer CPL,lp2,printserver,516
147
148
would add printers for branchcodes MPL and CPL. If a printer is not defined for a given branch, notices for
149
that branch will not be printed.
150
151
=head1 DESCRIPTION
152
153
B<This program> will print on-demand notices for items in the holds queue as they appear.
154
155
=head1 AUTHOR
156
157
Kyle M Hall <kyle@bywatersolutions.com>
158
159
=cut

Return to bug 8352