Bugzilla – Attachment 4067 Details for
Bug 5260
Add option to send an order by e-mail to the acquisition module
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
First patch of 2, changes reformatted for master
0001-Bug-5260-Reformatted-as-a-git-commit.patch (text/plain), 10.62 KB, created by
Chris Cormack
on 2011-05-09 21:12:03 UTC
(
hide
)
Description:
First patch of 2, changes reformatted for master
Filename:
MIME Type:
Creator:
Chris Cormack
Created:
2011-05-09 21:12:03 UTC
Size:
10.62 KB
patch
obsolete
>From b3ab545c3b686df3e8ffc4cd4077b97d25421f8f Mon Sep 17 00:00:00 2001 >From: Chris Cormack <chrisc@catalyst.net.nz> >Date: Tue, 10 May 2011 09:08:11 +1200 >Subject: [PATCH] Bug 5260 : Reformatted as a git commit >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >Originally written by Edgar Fuà <ef@math.uni-bonn.de> > >Second patch for the template changes to follow > >Conflicts: > > acqui/basketgroup.pl > koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketgroup.tmpl > koha-tmpl/intranet-tmpl/prog/en/modules/tools/letter.tmpl > tools/letter.pl >--- > acqui/basketgroup.pl | 179 +++++++++++++++++++++++++++++ > koha-tmpl/intranet-tmpl/prog/en/js/acq.js | 8 ++ > tools/letter.pl | 33 ++++++ > 3 files changed, 220 insertions(+), 0 deletions(-) > >diff --git a/acqui/basketgroup.pl b/acqui/basketgroup.pl >index 457b616..0b84fc3 100755 >--- a/acqui/basketgroup.pl >+++ b/acqui/basketgroup.pl >@@ -248,6 +248,171 @@ sub printbasketgrouppdf{ > print $pdf; > } > >+sub order_mail { >+#use Data::Dumper; >+ my ($booksellerid, $mail_orders) = @_; >+#print "order_mail\n"; >+#print "booksellerid: $booksellerid\n", "mail_orders: ", Dumper($mail_orders); >+ my $mail_order_total = shift @$mail_orders; >+ >+ my $bookseller = GetBookSellerFromId($booksellerid); >+ >+ my $letter = C4::Letters::getletter('orders', 'ORDERMAIL') || return; >+#print "letter: ", Dumper(\$letter); >+ >+ eval "use Mail::Sendmail"; >+ eval "use C4::Log"; >+ eval "use Carp"; >+ eval "use Encode"; >+ >+ # branch info >+ my $userenv = C4::Context->userenv; >+ C4::Letters::parseletter($letter, 'branches', $userenv->{branch}); >+ >+ # librarian name >+ $letter->{content} =~ s/<<LibrarianFirstname>>/$userenv->{firstname}/g; >+ $letter->{content} =~ s/<<LibrarianSurname>>/$userenv->{surname}/g; >+ $letter->{content} =~ s/<<LibrarianEmailaddress>>/$userenv->{emailaddress}/g; >+ >+ # booksellers >+ C4::Letters::parseletter($letter, 'aqbooksellers', $booksellerid); >+ >+ # items and total >+ return unless $letter->{'content'} =~ m/(<item>(.*)<\/item>)/sm; >+ my $item_place = $1; my $item_format = $2; >+ my ($total_place, $total_format); >+ if ($letter->{'content'} =~ m/(<total>(.*)<\/total>)/sm) { >+ $total_place = $1; $total_format = $2; >+ } >+ >+ my @items; >+ foreach my $mail_order (@$mail_orders) { >+ my $item = $item_format; >+ while (my ($key, $value) = each %$mail_order) { >+#print "$key: $value\n"; >+ $item =~ s/<<orders.$key>>/$value/g; >+ } >+ push @items, $item; >+ } >+#print "items: ", Dumper(@items); >+ $letter->{'content'} =~ s/\Q$item_place\E/join "\n",@items/e; >+ if ($total_format) { >+#print "total_place: $total_place\n"; >+#print "total_format: $total_format\n"; >+ my $total = $total_format; >+ while (my ($key, $value) = each %$mail_order_total) { >+ $total =~ s/<<orders.total.$key>>/$value/g; >+ } >+#print "total: $total\n"; >+ $letter->{'content'} =~ s/\Q$total_place\E/$total/; >+ } >+ my %mail = ( >+ To => $bookseller->{bookselleremail} || >+ $bookseller->{contemail} || >+ $userenv->{emailaddress}, >+ From => $userenv->{emailaddress}, >+ Subject => $letter->{title}, >+ Message => Encode::encode("UTF-8", $letter->{content}), >+ 'Content-Type' => 'text/plain; charset="utf8"', >+ ); >+#print "mail: ", Dumper(\%mail); >+ sendmail(%mail) or carp $Mail::Sendmail::error; >+ logaction( >+ "ORDER", >+ "Send email order", >+ undef, >+ "To=%mail{To}\nSubject=%mail{Subject}\nMessage=%mail{Message}" >+ ) if C4::Context->preference("LetterLog"); >+} >+ >+sub mailbasketgroup { >+ my ($basketgroupid) = @_; >+ >+ eval "use C4::Branch"; >+ eval "use C4::Biblio"; >+ eval "use C4::Koha"; >+ eval "use Number::Format qw(format_number format_price)"; >+ >+ my $num = FormatNumber; # C4::Output >+ >+ my $itemtypes = GetItemTypes(); >+ >+ my $basketgroup = GetBasketgroup($basketgroupid); >+ my $booksellerid = $basketgroup->{booksellerid}; >+ my $bookseller = GetBookSellerFromId($booksellerid); >+ my $baskets = GetBasketsByBasketgroup($basketgroupid); >+ >+ my $gstrate = $bookseller->{gstrate} || C4::Context->preference("gist") || 0; >+ my $discount = $bookseller->{'discount'} / 100; >+ >+ my $total_ecost; # Total, its value will be assigned to $total_ecost_gsti or $total_ecost_gste depending of $bookseller->{'listincgst'} >+ my $total_ecost_gsti; # Total, GST included >+ my $total_ecost_gste; # Total, GST excluded >+ my $total_quantity; # Total quantity >+ >+ my @mail_orders; >+ for my $basket (@$baskets) { >+ my $basketno = $basket->{basketno}; >+ my @orders = &GetOrders($basketno); >+ for my $order (@orders) { >+ my %mail_order; >+ >+ my $quantity = $order->{quantity} || 0; >+ next if $quantity <= 0; >+ my $ecost = $order->{ecost} || 0; >+ >+ for (qw(quantity quantityreceived author title volume seriestitle isbn publishercode)) { >+ $mail_order{$_} = $order->{$_} if defined $order->{$_}; >+ } >+ for (qw(listprice ecost)) { >+ $mail_order{$_} = $num->format_price($order->{$_}) if defined $order->{$_}; >+ } >+ my $full_title = $order->{title}; >+ $full_title .= (" " . $order->{seriestitle}) if $order->{seriestitle}; >+ $full_title .= (" " . $order->{volume}) if $order->{volume}; >+ $mail_order{full_title} = $full_title; >+ if ($order->{biblionumber}) { >+ my $bibliodata = GetBiblioData($order->{biblionumber}); >+ if ($bibliodata->{itemtype}) { >+ $mail_order{itemtype} = $itemtypes->{$bibliodata->{itemtype}}->{description}; >+ } >+ } >+ >+ my $quantity_ecost = $quantity * $ecost; >+ $mail_order{quantity_ecost} = $num->format_price($quantity_ecost); >+ $mail_order{basketno} = $basketno; >+ $total_ecost += $quantity_ecost; >+ $total_quantity += $quantity; >+ push @mail_orders, \%mail_order; >+ } >+ } >+ >+ my %total; >+ $total{quantity} = $total_quantity; >+ $total{gstrate} = $num->format_number($gstrate); >+ $total{currency} = $bookseller->{listprice}; >+ $total{discount} = $num->format_number($bookseller->{discount}); >+ >+ my $total_gist; >+ >+ if ($bookseller->{listincgst}) { # prices already includes GST >+ $total_ecost_gsti = $total_ecost; >+ $total_ecost_gste = $total_ecost_gsti / ($gstrate + 1); >+ $total_gist = $total_ecost_gsti - $total_ecost_gste; >+ } else { # prices does not include GST >+ $total_ecost_gste = $total_ecost; >+ $total_gist = $total_ecost_gste * $gstrate; >+ $total_ecost_gsti = $total_ecost_gste + $total_gist; >+ } >+ $total{ecost_gste} = $num->format_price($total_ecost_gste); >+ $total{ecost_gsti} = $num->format_price($total_ecost_gsti); >+ $total{gist} = $num->format_number($total_gist); >+ >+ unshift @mail_orders, \%total; >+ >+ order_mail($booksellerid, \@mail_orders); >+} >+ > my $op = $input->param('op'); > my $booksellerid = $input->param('booksellerid'); > $template->param(booksellerid => $booksellerid); >@@ -387,11 +552,25 @@ if ( $op eq "add" ) { > > printbasketgrouppdf($basketgroupid); > exit; >+} elsif ( $op eq 'closeandmail') { >+ my $basketgroupid = $input->param('basketgroupid'); >+ >+ CloseBasketgroup($basketgroupid); >+ >+ mailbasketgroup($basketgroupid); >+ >+ print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid); > }elsif ($op eq 'print'){ > my $basketgroupid = $input->param('basketgroupid'); > > printbasketgrouppdf($basketgroupid); > exit; >+}elsif ($op eq 'mail'){ >+ my $basketgroupid = $input->param('basketgroupid'); >+ >+ mailbasketgroup($basketgroupid); >+ >+ print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid); > }elsif( $op eq "delete"){ > my $basketgroupid = $input->param('basketgroupid'); > DelBasketgroup($basketgroupid); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/acq.js b/koha-tmpl/intranet-tmpl/prog/en/js/acq.js >index bcfb7b8..63d5d3a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/js/acq.js >+++ b/koha-tmpl/intranet-tmpl/prog/en/js/acq.js >@@ -388,6 +388,14 @@ function closeandprint(bg){ > } > } > >+function closeandmail(bs, bg){ >+ if(document.location = '/cgi-bin/koha/acqui/basketgroup.pl?op=closeandmail&booksellerid=' + bs + '&basketgroupid=' + bg ){ >+ setTimeout("window.location.reload();",3000); >+ }else{ >+ alert('Error downloading the file'); >+ } >+} >+ > //function that lets the user unclose a basketgroup as long as he hasn't submitted the changes to the page. > function unclosegroup(bgid){ > var div = document.getElementById('basketgroup-'+bgid+'-closed').parentNode; >diff --git a/tools/letter.pl b/tools/letter.pl >index ab6039c..972fc44 100755 >--- a/tools/letter.pl >+++ b/tools/letter.pl >@@ -147,6 +147,29 @@ sub add_form { > } > > my $field_selection; >+ if ( $module eq "suggestions" ) { >+ push @SQLfieldname, column_picks('borrowers'), >+ column_picks('suggestions'), >+ column_picks('aqbooksellers'), >+ column_picks('biblio'), >+ column_picks('items'); >+ } >+ elsif ( $module eq "reserves" ) { >+ push @SQLfieldname, column_picks('borrowers'), >+ column_picks('reserves'), >+ column_picks('biblio'), >+ column_picks('items'); >+ } >+ elsif ( $module eq "orders" ) { >+ push @SQLfieldname, column_picks('aqbooksellers'), >+ column_picks('aqorders'), >+ column_picks('biblio'), >+ column_picks('items'); >+ } >+ elsif ( index( $module, "acquisition" ) > 0 ) { # FIXME: imprecise comparison >+ push @SQLfieldname, column_picks('aqbooksellers'), column_picks('aqorders'); >+ # add issues specific tables >+ } > push @{$field_selection}, add_fields('branches'); > if ($module eq 'reserves') { > push @{$field_selection}, add_fields('borrowers', 'reserves', 'biblio', 'items'); >@@ -154,6 +177,16 @@ sub add_form { > elsif ($module eq 'claimacquisition') { > push @{$field_selection}, add_fields('aqbooksellers', 'aqorders'); > } >+ elsif ($module eq 'orders') { >+ push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'items'); >+ push @{$field_selection}, { value => q{}, text => '---ORDER ITEMS---' }; >+ push @{$field_selection}, { value => "orders.$_", text => "orders.$_" } >+ foreach (qw/listprice quantity ecost quantityreceived author title volume seriestitle isbn publishercode/); >+ push @{$field_selection}, { value => "orders.$_", text => "orders.$_" } >+ foreach (qw/full_title itemtype quantity_ecost basketno/); >+ push @{$field_selection}, { value => "orders.total.$_", text => "orders.total.$_" } >+ foreach (qw/quantity gstrate currency discount ecost_gste ecost_gsti gstrate/); >+ } > elsif ($module eq 'claimissues') { > push @{$field_selection}, add_fields('aqbooksellers', 'serial', 'subscription'); > push @{$field_selection}, >-- >1.7.4.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 5260
:
2653
|
4067
|
4068
|
4781
|
22171
|
56449
|
56450
|
56483
|
56484
|
56549
|
56550
|
56551
|
56560
|
56561
|
56562
|
56568
|
56679
|
56680
|
56686
|
56687
|
56688
|
56689
|
56705
|
56706
|
56707
|
56708
|
56709
|
56786
|
56787
|
56788
|
56789
|
56790
|
56791
|
56792
|
56793
|
56794
|
56795