From 967ec51497ae81c47e46edfb3ed2ed470dc2907d Mon Sep 17 00:00:00 2001 From: Mark Gavillet Date: Tue, 14 Feb 2012 16:38:09 +0000 Subject: [PATCH] Housebound module for v3.6 Conflicts: admin/systempreferences.pl http://bugs.koha-community.org/show_bug.cgi?id=5670 --- C4/Auth.pm | 2 + C4/Housebound.pm | 245 ++++++++++++++++++++ .../data/mysql/atomicupdate/housebound_tables.sql | 34 +++ .../intranet-tmpl/prog/en/includes/circ-menu.inc | 3 + .../prog/en/modules/members/housebound.tt | 52 +++++ .../prog/en/modules/members/houseboundedit.tt | 78 +++++++ .../prog/en/modules/members/houseboundinstances.tt | 109 +++++++++ members/housebound.pl | 101 ++++++++ members/houseboundedit.pl | 142 ++++++++++++ members/houseboundinstances.pl | 169 ++++++++++++++ 10 files changed, 935 insertions(+) create mode 100644 C4/Housebound.pm create mode 100644 installer/data/mysql/atomicupdate/housebound_tables.sql create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundedit.tt create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundinstances.tt create mode 100755 members/housebound.pl create mode 100755 members/houseboundedit.pl create mode 100755 members/houseboundinstances.pl diff --git a/C4/Auth.pm b/C4/Auth.pm index d73edaf..da6b41e 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -333,6 +333,8 @@ sub get_template_and_user { ); if ( $in->{'type'} eq "intranet" ) { $template->param( + useHouseboundModule => C4::Context->preference("useHouseboundModule"), + AmazonContent => C4::Context->preference("AmazonContent"), AmazonCoverImages => C4::Context->preference("AmazonCoverImages"), AutoLocation => C4::Context->preference("AutoLocation"), "BiblioDefaultView".C4::Context->preference("IntranetBiblioDefaultView") => 1, diff --git a/C4/Housebound.pm b/C4/Housebound.pm new file mode 100644 index 0000000..0734b91 --- /dev/null +++ b/C4/Housebound.pm @@ -0,0 +1,245 @@ +package C4::Housebound; + +# Copyright 2011 Mark Gavillet +# +# 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use strict; +use warnings; +use C4::Context; +use parent qw(Exporter); + +our $VERSION = 3.02; +our $debug = $ENV{DEBUG} || 0; +our @EXPORT = qw( + GetHouseboundDetails + CreateHouseboundDetails + UpdateHouseboundDetails + GetCurrentHouseboundInstanceList + GetHouseboundInstanceDetails + UpdateHouseboundInstanceDetails + CreateHouseboundInstanceDetails + DeleteHouseboundInstanceDetails + GetVolunteerNameAndID + GetVolunteerList +); + +=head1 NAME + +C4::Housebound - Perl Module containing functions for housebound patrons + +=head1 SYNOPSIS + +use C4::Housebound; + +=head1 DESCRIPTION + +This module contains routines for adding, modifying and deleting housebound details for patrons, and instances of item delivery by volunteers + +=head1 FUNCTIONS + +=over 2 + +=item GetHouseboundDetails + + ($hbnumber, $day, $frequency, $borrowernumber, $Itype_quant, $Item_subject, $Item_authors, $referral, $notes) = &SearchMember($borrowernumber); + +=back + +Values returned +$hbnumber - the id of the database record in table housebound +$day - preferred day of the week for delivery +$frequency - pattern of delivery (e.g. weeks 1/3, week 4, etc.) +$borrowernumber - borrowernumber that is fed into the function, returned for convenience +$Itype_quant - one or more values from the list of loanable Itypes (e.g. 2 BKS, 1 DVD, etc.) +$Item_subject - one or more values defining subjects the borrower is interested in +$Item_authors - one or more values defining authors the borrower is interested in +$referral - person or organisation that referred this borrower +$notes - freetext notes containing useful information about the patron (e.g. beware of the dog!) + +=cut + +sub GetHouseboundDetails { + my ($borrowernumber) = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($borrowernumber) { + $sth = $dbh->prepare("select * from housebound where borrowernumber=?"); + $sth->execute($borrowernumber); + my $housebound = $sth->fetchrow_hashref; + return $housebound; + } + return; +} + +sub CreateHouseboundDetails { + my ( $borrowernumber, $day, $frequency, $Itype_quant, $Item_subject, + $Item_authors, $referral, $notes ) + = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($borrowernumber) { + $sth = $dbh->prepare( +"insert into housebound (day, frequency, borrowernumber, Itype_quant, Item_subject, Item_authors, referral, notes) values (?,?,?,?,?,?,?,?)" + ); + $sth->execute( $day, $frequency, $borrowernumber, $Itype_quant, + $Item_subject, $Item_authors, $referral, $notes ); + } + return; +} + +sub UpdateHouseboundDetails { + my ($hbnumber, $borrowernumber, $day, + $frequency, $Itype_quant, $Item_subject, + $Item_authors, $referral, $notes + ) = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($hbnumber) { + $sth = $dbh->prepare( +"update housebound set day=?,frequency=?,borrowernumber=?,Itype_quant=?,Item_subject=?,Item_authors=?,referral=?,notes=? where hbnumber=?" + ); + $sth->execute( + $day, $frequency, $borrowernumber, + $Itype_quant, $Item_subject, $Item_authors, + $referral, $notes, $hbnumber + ); + } + return; +} + +sub GetCurrentHouseboundInstanceList { + my ($borrowernumber) = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($borrowernumber) { + +#$sth = $dbh->prepare("select * from housebound_instance where borrowernumber=?"); + $sth = $dbh->prepare( +"SELECT housebound_instance . * , concat( volunteer.firstname, ' ', volunteer.surname ) AS vol, concat(chooser.firstname, ' ', chooser.surname) as cho, concat(deliverer.firstname, ' ', deliverer.surname) as del FROM housebound_instance left JOIN borrowers volunteer ON volunteer.borrowernumber = housebound_instance.volunteer left join borrowers chooser on chooser.borrowernumber = housebound_instance.chooser left join borrowers deliverer on deliverer.borrowernumber = housebound_instance.deliverer where housebound_instance.borrowernumber=? order by housebound_instance.dmy desc" + ); + $sth->execute($borrowernumber); + my $housebound_instances = $sth->fetchall_arrayref( {} ); + return $housebound_instances; + } + return; +} + +sub GetVolunteerNameAndID { + my ($borrowernumber) = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($borrowernumber) { + $sth = $dbh->prepare( +"select borrowernumber,title,firstname,surname from borrowers where borrowernumber=?" + ); + $sth->execute($borrowernumber); + my $volunteer = $sth->fetchrow_hashref; + return $volunteer; + } + return; +} + +sub GetVolunteerList { + my $dbh = C4::Context->dbh; + my $query; + my $sth; + $sth = $dbh->prepare( +"SELECT borrowernumber as volbornumber, concat(title, ' ', firstname, ' ', surname) as fullname from borrowers where categorycode='VOL' order by surname, firstname asc" + ); + $sth->execute(); + my $volunteers = $sth->fetchall_arrayref( {} ); + return $volunteers; +} + +sub GetHouseboundInstanceDetails { + my ($instanceid) = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($instanceid) { + $sth = + $dbh->prepare("SELECT * from housebound_instance where instanceid=?"); + $sth->execute($instanceid); + my $instancedetails = $sth->fetchrow_hashref; + return $instancedetails; + } + + # return undef if no instanceid + return; +} + +sub UpdateHouseboundInstanceDetails { + my ( $instanceid, $hbnumber, $dmy, $time, $borrowernumber, $volunteer, + $chooser, $deliverer ) + = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($hbnumber) { + $sth = $dbh->prepare( +"update housebound_instance set hbnumber=?, dmy=?, time=?, borrowernumber=?, volunteer=?, chooser=?, deliverer=? where instanceid=?" + ); + $sth->execute( $hbnumber, $dmy, $time, $borrowernumber, $volunteer, + $chooser, $deliverer, $instanceid ); + } + return; +} + +sub CreateHouseboundInstanceDetails { + my ( $hbnumber, $dmy, $time, $borrowernumber, $volunteer, $chooser, + $deliverer ) + = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($borrowernumber) { + $sth = $dbh->prepare( +"insert into housebound_instance (hbnumber, dmy, time, borrowernumber, volunteer, chooser, deliverer) values (?,?,?,?,?,?,?)" + ); + $sth->execute( $hbnumber, $dmy, $time, $borrowernumber, $volunteer, + $chooser, $deliverer ); + } + return; +} + +sub DeleteHouseboundInstanceDetails { + my ($instanceid) = @_; + my $dbh = C4::Context->dbh; + my $query; + my $sth; + if ($instanceid) { + $sth = + $dbh->prepare("delete from housebound_instance where instanceid=?"); + $sth->execute($instanceid); + } + return; +} + +1; + +__END__ + +=head1 AUTHOR + +Mark Gavillet + +=cut diff --git a/installer/data/mysql/atomicupdate/housebound_tables.sql b/installer/data/mysql/atomicupdate/housebound_tables.sql new file mode 100644 index 0000000..9dfeb0a --- /dev/null +++ b/installer/data/mysql/atomicupdate/housebound_tables.sql @@ -0,0 +1,34 @@ +CREATE TABLE IF NOT EXISTS `housebound` ( + `hbnumber` int(11) NOT NULL auto_increment, + `day` text NOT NULL, + `frequency` text, + `borrowernumber` int(11) default NULL, + `Itype_quant` varchar(10) default NULL, + `Item_subject` text, + `Item_authors` text, + `referral` text, + `notes` text, + PRIMARY KEY (`hbnumber`), + KEY `borrowernumber` (`borrowernumber`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + + + +CREATE TABLE IF NOT EXISTS `housebound_instance` ( + `instanceid` int(11) NOT NULL auto_increment, + `hbnumber` int(11) NOT NULL, + `dmy` date default NULL, + `time` text, + `borrowernumber` int(11) NOT NULL, + `volunteer` int(11) default NULL, + `chooser` int(11) default NULL, + `deliverer` int(11) default NULL, + PRIMARY KEY (`instanceid`), + KEY `hbnumber` (`hbnumber`,`borrowernumber`,`volunteer`,`chooser`,`deliverer`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; + +insert into systempreferences (variable,value,options,explanation,type) values +('useHouseboundModule',1,'','If ON, use the Housebound module','YesNo'); + +insert into categories (categorycode, description, enrolmentperiod, upperagelimit, dateofbirthrequired, category_type) +values ('VOL','Housebound volunteer','99','999','1','A'); \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc index 62db1c5..02f5e06 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc @@ -76,6 +76,9 @@ [% IF ( CAN_user_parameters ) %] [% IF ( logview ) %]
  • [% ELSE %]
  • [% END %]Modification log
  • [% END %] + [% IF useHouseboundModule %] + [% IF houseboundview %]
  • [% ELSE %]
  • [% END %]Housebound
  • + [% END %] [% IF ( EnhancedMessagingPreferences ) %] [% IF ( sentnotices ) %]
  • [% ELSE %]
  • [% END %]Notices
  • [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt new file mode 100644 index 0000000..30c09aa --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt @@ -0,0 +1,52 @@ +[% INCLUDE 'doc-head-open.inc' %] +Koha Housebound - [% surname %], [% firstname %] +[% INCLUDE 'doc-head-close.inc' %] + + + +[% INCLUDE 'header.inc' %] +[% INCLUDE 'patron-search.inc' %] + + + +
    +
    +
    +
    Housebound details for [% title %] [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %] + [% IF ( hbnumber ) %] + + +
    +
      +
    1. Delivery day:[% day %]
    2. +
    3. Frequency:[% frequency %]
    4. +
    5. Material:[% Itype_quant %]
    6. +
    7. Subjects:[% Item_subject %]
    8. +
    9. Authors:[% Item_authors %]
    10. +
    11. Referral:[% referral %]
    12. +
    13. Notes:[% notes %]
    14. +
    +
    +

    Deliveries

    + + + + [% FOREACH instance IN instanceloop %] + + [% END %] +
    IDDateVolunteerChooserDelivererActions
    [% instance.instanceid %][% instance.dmy %] ([% instance.time %])[% instance.vol %][% instance.cho %][% instance.del %]Edit | Delete
    +
    + + + [% ELSE %] +

    This patron does not currently have registered housebound details. To add these details click here.

    + [% END %] +
    +
    +
    + [% INCLUDE 'circ-menu.inc' %] +
    +
    +
    +[% INCLUDE 'intranet-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundedit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundedit.tt new file mode 100644 index 0000000..ce98204 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundedit.tt @@ -0,0 +1,78 @@ +[% INCLUDE 'doc-head-open.inc' %] +Koha Housebound - [% surname %], [% firstname %] +[% INCLUDE 'doc-head-close.inc' %] + + + +[% INCLUDE 'header.inc' %] +[% INCLUDE 'patron-search.inc' %] + + + +
    +
    +
    +
    +

    Edit housebound details for [% title %] [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %]

    + + +
    + + + +
    + Housebound details +
      +
    1. + + +
    2. +
    3. + + +
    4. +
    5. +
    6. +
    7. +
    8. +
    9. +
    +
    + + Cancel +
    +
    + + + + + + + + +
    +
    +
    + [% INCLUDE 'circ-menu.inc' %] +
    +
    +
    +[% INCLUDE 'intranet-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundinstances.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundinstances.tt new file mode 100644 index 0000000..09f9a7b --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/houseboundinstances.tt @@ -0,0 +1,109 @@ +[% INCLUDE 'doc-head-open.inc' %] +Koha Housebound - [% surname %], [% firstname %] +[% INCLUDE 'doc-head-close.inc' %] + +[% INCLUDE 'calendar.inc' %] + + +[% INCLUDE 'header.inc' %] +[% INCLUDE 'patron-search.inc' %] + + +
    +
    +
    +
    +

    Housebound deliveries for [% title %] [% firstname %] [% surname %] [% IF ( cardnumber ) %]([% cardnumber %])[% END %]

    +
    + + + + + [% IF ( opdel ) %] +

    Are you sure you want to delete this delivery?

    +

      

    + [% ELSE %] +
    + Delivery details +
      +
    1. + + + Show Calendar + +
    2. +
    3. + + +
    4. +
    5. + + +
    6. +
    7. + + +
    8. +
    9. + + +
    10. + +
    +
    +
    + + Cancel +
    + [% END %] +
    + +
    +
    +
    + [% INCLUDE 'circ-menu.inc' %] +
    +
    +
    +[% INCLUDE 'intranet-bottom.inc' %] diff --git a/members/housebound.pl b/members/housebound.pl new file mode 100755 index 0000000..56a4eac --- /dev/null +++ b/members/housebound.pl @@ -0,0 +1,101 @@ +#!/usr/bin/perl + +# Copyright 2011 Mark Gavillet & 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use strict; +use warnings; +use CGI; +use C4::Context; +use C4::Auth; +use C4::Output; +use C4::Members; +use C4::Koha; +use C4::Branch; +use C4::Housebound; + +use vars qw($debug); + +BEGIN { + $debug = $ENV{DEBUG} || 0; +} + +my $input = CGI->new(); + +sub nl2br { + my ($t) = shift or return; + $t =~ s/\n/\n
    /g; + return ($t); +} + +my $dbh = C4::Context->dbh; + +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { template_name => "members/housebound.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { borrowers => 1 }, + debug => ($debug) ? 1 : 0, + } +); + +my $borrowernumber = $input->param('borrowernumber'); + +my $borrowerdetails = C4::Members::GetMemberDetails($borrowernumber); +my $branchdetail = GetBranchDetail( $borrowerdetails->{'branchcode'} ); +my $categorydetail = GetMember( $borrowernumber, 'borrowernumber' ); +my $housebound = GetHouseboundDetails($borrowernumber); +my $housebound_instances = GetCurrentHouseboundInstanceList($borrowernumber); + +$template->param( + surname => $borrowerdetails->{'surname'}, + firstname => $borrowerdetails->{'firstname'}, + cardnumber => $borrowerdetails->{'cardnumber'}, + borrowernumber => $borrowerdetails->{'borrowernumber'}, + houseboundview => 'on', + address => $borrowerdetails->{'address'}, + address2 => $borrowerdetails->{'address2'}, + city => $borrowerdetails->{'city'}, + phone => $borrowerdetails->{'phone'}, + phonepro => $borrowerdetails->{'phonepro'}, + mobile => $borrowerdetails->{'mobile'}, + email => $borrowerdetails->{'email'}, + emailpro => $borrowerdetails->{'emailpro'}, + categoryname => $categorydetail->{'description'}, + categorycode => $borrowerdetails->{'categorycode'}, + branch => $borrowerdetails->{'branch'}, + branchname => $branchdetail->{branchname}, + zipcode => $borrowerdetails->{'zipcode'} +); + +$template->param( + hbnumber => $housebound->{'hbnumber'}, + day => $housebound->{'day'}, + frequency => $housebound->{'frequency'}, + Itype_quant => $housebound->{'Itype_quant'}, + Item_subject => $housebound->{'Item_subject'}, + Item_authors => $housebound->{'Item_authors'}, + referral => $housebound->{'referral'}, + notes => $housebound->{'notes'} +); + +if ($housebound_instances) { + $template->param( instanceloop => $housebound_instances ); +} + +output_html_with_http_headers $input, $cookie, $template->output; diff --git a/members/houseboundedit.pl b/members/houseboundedit.pl new file mode 100755 index 0000000..7f76ccf --- /dev/null +++ b/members/houseboundedit.pl @@ -0,0 +1,142 @@ +#!/usr/bin/perl + +# Copyright 2011 Mark Gavillet & 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use strict; +use warnings; +use CGI; +use C4::Context; +use C4::Auth; +use C4::Output; +use C4::Members; +use C4::Koha; +use C4::Branch; +use C4::Housebound; + +use vars qw($debug); + +BEGIN { + $debug = $ENV{DEBUG} || 0; +} + +my $input = CGI->new(); + +my $dbh = C4::Context->dbh; + +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { template_name => "members/houseboundedit.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { borrowers => 1 }, + debug => ($debug) ? 1 : 0, + } +); + +my $borrowernumber = $input->param('borrowernumber'); +my $op = $input->param('op'); +if ( $op eq "editsubmit" ) { + UpdateHouseboundDetails( + $input->param('hbnumber'), $input->param('borrowernumber'), + $input->param('day'), $input->param('frequency'), + $input->param('Itype_quant'), $input->param('Item_subject'), + $input->param('Item_authors'), $input->param('referral'), + $input->param('notes') + ); + my $url = + "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; + print "Location: $url"; +} +if ( $op eq "addsubmit" ) { + CreateHouseboundDetails( + $input->param('borrowernumber'), $input->param('day'), + $input->param('frequency'), $input->param('Itype_quant'), + $input->param('Item_subject'), $input->param('Item_authors'), + $input->param('referral'), $input->param('notes') + ); + my $url = + "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; + print "Location: $url"; +} +if ( $op eq "edit" ) { + $template->param( opeditsubmit => "editsubmit" ); +} +if ( $op eq "add" ) { + $template->param( opaddsubmit => "addsubmit" ); +} + +my $borrowerdetails = C4::Members::GetMemberDetails($borrowernumber); +my $branchdetail = GetBranchDetail( $borrowerdetails->{'branchcode'} ); +my $categorydetail = GetMember( $borrowernumber, 'borrowernumber' ); +my $housebound = GetHouseboundDetails($borrowernumber); + +$template->param( + surname => $borrowerdetails->{'surname'}, + firstname => $borrowerdetails->{'firstname'}, + cardnumber => $borrowerdetails->{'cardnumber'}, + borrowernumber => $borrowerdetails->{'borrowernumber'}, + houseboundview => 'on', + address => $borrowerdetails->{'address'}, + address2 => $borrowerdetails->{'address2'}, + city => $borrowerdetails->{'city'}, + phone => $borrowerdetails->{'phone'}, + phonepro => $borrowerdetails->{'phonepro'}, + mobile => $borrowerdetails->{'mobile'}, + email => $borrowerdetails->{'email'}, + emailpro => $borrowerdetails->{'emailpro'}, + categoryname => $categorydetail->{'description'}, + categorycode => $borrowerdetails->{'categorycode'}, + branch => $borrowerdetails->{'branch'}, + branchname => $branchdetail->{branchname}, + zipcode => $borrowerdetails->{'zipcode'} +); + +$template->param( + hbnumber => $housebound->{'hbnumber'}, + day => $housebound->{'day'}, + frequency => $housebound->{'frequency'}, + Itype_quant => $housebound->{'Itype_quant'}, + Item_subject => $housebound->{'Item_subject'}, + Item_authors => $housebound->{'Item_authors'}, + referral => $housebound->{'referral'}, + notes => $housebound->{'notes'} +); + +if ( $housebound->{'day'} eq "Sunday" ) { + $template->param( dsun => 1 ); +} elsif ( $housebound->{'day'} eq "Monday" ) { + $template->param( dmon => 1 ); +} elsif ( $housebound->{'day'} eq "Tuesday" ) { + $template->param( dtue => 1 ); +} elsif ( $housebound->{'day'} eq "Wednesday" ) { + $template->param( dwed => 1 ); +} elsif ( $housebound->{'day'} eq "Thursday" ) { + $template->param( dthu => 1 ); +} elsif ( $housebound->{'day'} eq "Friday" ) { + $template->param( dfri => 1 ); +} elsif ( $housebound->{'day'} eq "Saturday" ) { + $template->param( dsat => 1 ); +} + +if ( $housebound->{'frequency'} eq "Week 1/3" ) { + $template->param( wk1 => 1 ); +} elsif ( $housebound->{'frequency'} eq "Week 2/4" ) { + $template->param( wk2 => 1 ); +} + +output_html_with_http_headers $input, $cookie, $template->output; diff --git a/members/houseboundinstances.pl b/members/houseboundinstances.pl new file mode 100755 index 0000000..91fec46 --- /dev/null +++ b/members/houseboundinstances.pl @@ -0,0 +1,169 @@ +#!/usr/bin/perl + +# Copyright 2011 Mark Gavillet & 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use strict; +use warnings; +use CGI; +use C4::Context; +use C4::Auth; +use C4::Output; +use C4::Members; +use C4::Koha; +use C4::Branch; +use C4::Housebound; +use C4::Dates; + +use vars qw($debug); + +BEGIN { + $debug = $ENV{DEBUG} || 0; +} + +my $input = CGI->new(); + +my $dbh = C4::Context->dbh; + +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { template_name => "members/houseboundinstances.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { borrowers => 1 }, + debug => ($debug) ? 1 : 0, + } +); + +my $borrowernumber = $input->param('borrowernumber'); + +my $op = $input->param('op'); +if ( $op eq "add" ) { + $template->param( opadd => 1, op => "addsubmit" ); +} +if ( $op eq "edit" ) { + $template->param( opedit => 1, op => "editsubmit" ); +} +if ( $op eq "del" ) { + $template->param( opdel => 1, op => "delsubmit" ); +} +if ( $op eq "addsubmit" ) { + CreateHouseboundInstanceDetails( + $input->param('hbnumber'), $input->param('dmy'), + $input->param('time'), $input->param('borrowernumber'), + $input->param('volunteer'), $input->param('chooser'), + $input->param('deliverer') + ); + my $url = + "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; + print "Location: $url"; +} +if ( $op eq "delsubmit" ) { + DeleteHouseboundInstanceDetails( $input->param('instanceid') ); + my $url = + "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; + print "Location: $url"; +} +if ( $op eq "editsubmit" ) { + UpdateHouseboundInstanceDetails( + $input->param('instanceid'), $input->param('hbnumber'), + $input->param('dmy'), $input->param('time'), + $input->param('borrowernumber'), $input->param('volunteer'), + $input->param('chooser'), $input->param('deliverer') + ); + my $url = + "/cgi-bin/koha/members/housebound.pl?borrowernumber=$borrowernumber"; + print "Location: $url"; +} + +my $borrowerdetails = C4::Members::GetMemberDetails($borrowernumber); +my $branchdetail = GetBranchDetail( $borrowerdetails->{'branchcode'} ); +my $categorydetail = GetMember( $borrowernumber, 'borrowernumber' ); +my $housebound = GetHouseboundDetails($borrowernumber); +my $volunteerlist = GetVolunteerList(); +my $chooserlist = GetVolunteerList(); +my $delivererlist = GetVolunteerList(); +my $delinstanceid = $input->param('instanceid'); +my $instanceid = $input->param('instanceid'); +my $instancedetails = GetHouseboundInstanceDetails($instanceid); +my $selectedvolunteer = $instancedetails->{'volunteer'}; +my $selectedchooser = $instancedetails->{'chooser'}; +my $selecteddeliverer = $instancedetails->{'deliverer'}; + +foreach my $ivol (@$volunteerlist) { + $ivol->{selected} = 'selected' + if $ivol->{'volbornumber'} == $selectedvolunteer; +} +foreach my $icho (@$chooserlist) { + $icho->{selected} = 'selected' + if $icho->{'volbornumber'} == $selectedchooser; +} +foreach my $idel (@$delivererlist) { + $idel->{selected} = 'selected' + if $idel->{'volbornumber'} == $selecteddeliverer; +} +if ( $instancedetails->{'time'} eq "am" ) { + $template->param( timeam => 1 ); +} +if ( $instancedetails->{'time'} eq "pm" ) { + $template->param( timepm => 1 ); +} + +$template->param( + surname => $borrowerdetails->{'surname'}, + firstname => $borrowerdetails->{'firstname'}, + cardnumber => $borrowerdetails->{'cardnumber'}, + borrowernumber => $borrowerdetails->{'borrowernumber'}, + houseboundview => 'on', + address => $borrowerdetails->{'address'}, + address2 => $borrowerdetails->{'address2'}, + city => $borrowerdetails->{'city'}, + phone => $borrowerdetails->{'phone'}, + phonepro => $borrowerdetails->{'phonepro'}, + mobile => $borrowerdetails->{'mobile'}, + email => $borrowerdetails->{'email'}, + emailpro => $borrowerdetails->{'emailpro'}, + categoryname => $categorydetail->{'description'}, + categorycode => $borrowerdetails->{'categorycode'}, + branch => $borrowerdetails->{'branch'}, + branchname => $branchdetail->{branchname}, + zipcode => $borrowerdetails->{'zipcode'} +); + +$template->param( + hbnumber => $housebound->{'hbnumber'}, + day => $housebound->{'day'}, + frequency => $housebound->{'frequency'}, + Itype_quant => $housebound->{'Itype_quant'}, + Item_subject => $housebound->{'Item_subject'}, + Item_authors => $housebound->{'Item_authors'}, + referral => $housebound->{'referral'}, + notes => $housebound->{'notes'}, + DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), + volunteerlist => $volunteerlist, + chooserlist => $chooserlist, + delivererlist => $delivererlist, + delinstanceid => $delinstanceid, + instanceid => $instanceid, + dmy => $instancedetails->{'dmy'}, + time => $instancedetails->{'time'}, + volunteer => $instancedetails->{'volunteer'}, + chooser => $instancedetails->{'chooser'}, + deliverer => $instancedetails->{'deliverer'} +); + +output_html_with_http_headers $input, $cookie, $template->output; -- 1.7.10.4