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

(-)a/acqui/basketgroup.pl (-4 / +177 lines)
Lines 293-298 sub printbasketgrouppdf{ Link Here
293
293
294
}
294
}
295
295
296
sub order_mail {
297
#use Data::Dumper;
298
    my ($booksellerid, $mail_orders) = @_;
299
#print "order_mail\n";
300
#print "booksellerid: $booksellerid\n", "mail_orders: ", Dumper($mail_orders);
301
    my $mail_order_total = shift @$mail_orders;
302
303
    my $bookseller = GetBookSellerFromId($booksellerid);
304
305
    my $letter = C4::Letters::getletter('orders', 'ORDERMAIL') || return;
306
#print "letter: ",  Dumper(\$letter);
307
308
    eval "use Mail::Sendmail";
309
    eval "use C4::Log";
310
    eval "use Carp";
311
    eval "use Encode";
312
313
    # branch info
314
    my $userenv = C4::Context->userenv;
315
    C4::Letters::parseletter($letter, 'branches', $userenv->{branch});
316
317
    # librarian name
318
    $letter->{content} =~ s/<<LibrarianFirstname>>/$userenv->{firstname}/g;
319
    $letter->{content} =~ s/<<LibrarianSurname>>/$userenv->{surname}/g;
320
    $letter->{content} =~ s/<<LibrarianEmailaddress>>/$userenv->{emailaddress}/g;
321
322
    # booksellers
323
    C4::Letters::parseletter($letter, 'aqbooksellers', $booksellerid);
324
325
    # items and total
326
    return unless $letter->{'content'} =~ m/(<item>(.*)<\/item>)/sm;
327
    my $item_place = $1; my $item_format = $2;
328
    my ($total_place, $total_format);
329
    if ($letter->{'content'} =~ m/(<total>(.*)<\/total>)/sm) {
330
        $total_place = $1; $total_format = $2;
331
    }
332
333
    my @items;
334
    foreach my $mail_order (@$mail_orders) {
335
        my $item = $item_format;
336
        while (my ($key, $value) = each %$mail_order) {
337
#print "$key: $value\n";
338
            $item =~ s/<<orders.$key>>/$value/g;
339
        }
340
        push @items, $item;
341
    }
342
#print "items: ", Dumper(@items);
343
    $letter->{'content'} =~ s/\Q$item_place\E/join "\n",@items/e;
344
    if ($total_format) {
345
#print "total_place: $total_place\n";
346
#print "total_format: $total_format\n";
347
        my $total = $total_format;
348
        while (my ($key, $value) = each %$mail_order_total) {
349
            $total =~ s/<<orders.total.$key>>/$value/g;
350
        }
351
#print "total: $total\n";
352
        $letter->{'content'} =~ s/\Q$total_place\E/$total/;
353
    }
354
    my %mail = (
355
        To => $bookseller->{bookselleremail} ||
356
            $bookseller->{contemail} ||
357
            $userenv->{emailaddress},
358
        From => $userenv->{emailaddress},
359
        Subject => $letter->{title},
360
        Message => Encode::encode("UTF-8", $letter->{content}),
361
        'Content-Type' => 'text/plain; charset="utf8"',
362
    );
363
#print "mail: ", Dumper(\%mail);
364
    sendmail(%mail) or carp $Mail::Sendmail::error;
365
    logaction(
366
        "ORDER",
367
        "Send email order",
368
        undef,
369
        "To=%mail{To}\nSubject=%mail{Subject}\nMessage=%mail{Message}"
370
    ) if C4::Context->preference("LetterLog");
371
}
372
373
sub mailbasketgroup {
374
    my ($basketgroupid) = @_;
375
376
    eval "use C4::Branch";
377
    eval "use C4::Biblio";
378
    eval "use C4::Koha";
379
    eval "use Number::Format qw(format_number format_price)";
380
381
    my $num = FormatNumber; # C4::Output
382
383
    my $itemtypes = GetItemTypes();
384
385
    my $basketgroup = GetBasketgroup($basketgroupid);
386
    my $booksellerid = $basketgroup->{booksellerid};
387
    my $bookseller = GetBookSellerFromId($booksellerid);
388
    my $baskets = GetBasketsByBasketgroup($basketgroupid);
389
390
    my $gstrate = $bookseller->{gstrate} || C4::Context->preference("gist") || 0;
391
    my $discount = $bookseller->{'discount'} / 100;
392
393
    my $total_ecost;    # Total, its value will be assigned to $total_ecost_gsti or $total_ecost_gste depending of $bookseller->{'listincgst'}
394
    my $total_ecost_gsti;   # Total, GST included
395
    my $total_ecost_gste;   # Total, GST excluded
396
    my $total_quantity; # Total quantity
397
398
    my @mail_orders;
399
    for my $basket (@$baskets) {
400
        my $basketno = $basket->{basketno};
401
        my @orders = &GetOrders($basketno);
402
        for my $order (@orders) {
403
            my %mail_order;
404
405
            my $quantity = $order->{quantity} || 0;
406
            next if $quantity <= 0;
407
            my $ecost = $order->{ecost} || 0;
408
409
            for (qw(quantity quantityreceived author title volume seriestitle isbn publishercode)) {
410
                $mail_order{$_} = $order->{$_} if defined $order->{$_};
411
            }
412
            for (qw(listprice ecost)) {
413
                $mail_order{$_} = $num->format_price($order->{$_}) if defined $order->{$_};
414
            }
415
            my $full_title = $order->{title};
416
            $full_title .= (" " . $order->{seriestitle}) if $order->{seriestitle};
417
            $full_title .= (" " . $order->{volume}) if $order->{volume};
418
            $mail_order{full_title} = $full_title;
419
            if ($order->{biblionumber}) {
420
                my $bibliodata = GetBiblioData($order->{biblionumber});
421
                if ($bibliodata->{itemtype}) {
422
                    $mail_order{itemtype} = $itemtypes->{$bibliodata->{itemtype}}->{description};
423
                }
424
            }
425
426
            my $quantity_ecost = $quantity * $ecost;
427
            $mail_order{quantity_ecost} = $num->format_price($quantity_ecost);
428
            $mail_order{basketno} = $basketno;
429
            $total_ecost += $quantity_ecost;
430
            $total_quantity += $quantity;
431
            push @mail_orders, \%mail_order;
432
        }
433
    }
434
435
    my %total;
436
    $total{quantity} = $total_quantity;
437
    $total{gstrate} = $num->format_number($gstrate);
438
    $total{currency} = $bookseller->{listprice};
439
    $total{discount} = $num->format_number($bookseller->{discount});
440
441
    my $total_gist;
442
443
    if ($bookseller->{listincgst}) { # prices already includes GST
444
        $total_ecost_gsti = $total_ecost;
445
        $total_ecost_gste = $total_ecost_gsti / ($gstrate + 1);
446
        $total_gist       = $total_ecost_gsti - $total_ecost_gste;
447
    } else { # prices does not include GST
448
        $total_ecost_gste = $total_ecost;
449
        $total_gist = $total_ecost_gste * $gstrate;
450
        $total_ecost_gsti = $total_ecost_gste + $total_gist;
451
    }
452
    $total{ecost_gste} = $num->format_price($total_ecost_gste);
453
    $total{ecost_gsti} = $num->format_price($total_ecost_gsti);
454
    $total{gist} = $num->format_number($total_gist);
455
456
    unshift @mail_orders, \%total;
457
458
    order_mail($booksellerid, \@mail_orders);
459
}
460
296
my $op = $input->param('op') || 'display';
461
my $op = $input->param('op') || 'display';
297
my $booksellerid = $input->param('booksellerid');
462
my $booksellerid = $input->param('booksellerid');
298
$template->param(booksellerid => $booksellerid);
463
$template->param(booksellerid => $booksellerid);
Lines 409-414 if ( $op eq "add" ) { Link Here
409
    
574
    
410
    printbasketgrouppdf($basketgroupid);
575
    printbasketgrouppdf($basketgroupid);
411
    exit;
576
    exit;
577
} elsif ( $op eq 'closeandmail') {
578
    my $basketgroupid = $input->param('basketgroupid');
579
580
    CloseBasketgroup($basketgroupid);
581
582
    mailbasketgroup($basketgroupid);
583
584
    print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid);
412
}elsif ($op eq 'print'){
585
}elsif ($op eq 'print'){
413
    my $basketgroupid = $input->param('basketgroupid');
586
    my $basketgroupid = $input->param('basketgroupid');
414
    
587
    
Lines 422-440 if ( $op eq "add" ) { Link Here
422
    );
595
    );
423
    print GetBasketGroupAsCSV( $basketgroupid, $input );
596
    print GetBasketGroupAsCSV( $basketgroupid, $input );
424
    exit;
597
    exit;
598
}elsif ($op eq 'mail'){
599
    my $basketgroupid = $input->param('basketgroupid');
600
    mailbasketgroup($basketgroupid);
601
    print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid);
425
}elsif( $op eq "delete"){
602
}elsif( $op eq "delete"){
426
    my $basketgroupid = $input->param('basketgroupid');
603
    my $basketgroupid = $input->param('basketgroupid');
427
    DelBasketgroup($basketgroupid);
604
    DelBasketgroup($basketgroupid);
428
    print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid);
605
    print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid);
429
    
430
}elsif ( $op eq 'reopen'){
606
}elsif ( $op eq 'reopen'){
431
    my $basketgroupid   = $input->param('basketgroupid');
607
    my $basketgroupid   = $input->param('basketgroupid');
432
    my $booksellerid    = $input->param('booksellerid');
608
    my $booksellerid    = $input->param('booksellerid');
433
    
434
    ReOpenBasketgroup($basketgroupid);
609
    ReOpenBasketgroup($basketgroupid);
435
        
436
    print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid . '#closed');
610
    print $input->redirect('/cgi-bin/koha/acqui/basketgroup.pl?booksellerid=' . $booksellerid . '#closed');
437
    
438
} elsif ( $op eq 'attachbasket') {
611
} elsif ( $op eq 'attachbasket') {
439
    
612
    
440
    # Getting parameters
613
    # Getting parameters
(-)a/koha-tmpl/intranet-tmpl/prog/en/js/acq.js (+8 lines)
Lines 382-387 function closeandprint(bg){ Link Here
382
	}
382
	}
383
}
383
}
384
384
385
function closeandmail(bs, bg){
386
    if(document.location = '/cgi-bin/koha/acqui/basketgroup.pl?op=closeandmail&amp;booksellerid=' + bs + '&amp;basketgroupid=' + bg ){
387
        setTimeout("window.location.reload();",3000);
388
    }else{
389
        alert('Error downloading the file');
390
    }
391
}
392
385
//function that lets the user unclose a basketgroup as long as he hasn't submitted the changes to the page.
393
//function that lets the user unclose a basketgroup as long as he hasn't submitted the changes to the page.
386
function unclosegroup(bgid){
394
function unclosegroup(bgid){
387
    var div = document.getElementById('basketgroup-'+bgid+'-closed').parentNode;
395
    var div = document.getElementById('basketgroup-'+bgid+'-closed').parentNode;
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketgroup.tt (-1 / +2 lines)
Lines 237-243 function submitForm(form) { Link Here
237
			</div> 
237
			</div> 
238
		</div> 	 
238
		</div> 	 
239
[% ELSE %]
239
[% ELSE %]
240
241
    <div id="toolbar" class="btn-toolbar">
240
    <div id="toolbar" class="btn-toolbar">
242
        <div class="btn-group"><a href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&amp;booksellerid=[% booksellerid %]" class="btn btn-small" id="newbasketgroup"><i class="icon-plus"></i> New basket group</a></div>
241
        <div class="btn-group"><a href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&amp;booksellerid=[% booksellerid %]" class="btn btn-small" id="newbasketgroup"><i class="icon-plus"></i> New basket group</a></div>
243
    </div>
242
    </div>
Lines 278-283 function submitForm(form) { Link Here
278
                                    <td>[% basketgroup.basketsqty %]</td>
277
                                    <td>[% basketgroup.basketsqty %]</td>
279
							<td>
278
							<td>
280
								<input type="button" onclick="closeandprint([% basketgroup.id %])" value="Close and print" />
279
								<input type="button" onclick="closeandprint([% basketgroup.id %])" value="Close and print" />
280
                                <a href="/cgi-bin/koha/acqui/basketgroup.pl?op=closeandmail&amp;booksellerid=[% basketgroup.booksellerid %]&amp;basketgroupid=[% basketgroup.id %]" class="yui-button yui-link-button">Close & Send Mail</a>
281
								<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="add" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Edit" /></form>
281
								<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="add" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Edit" /></form>
282
								<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="delete" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Delete" /></form>
282
								<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="delete" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Delete" /></form>
283
							</td>
283
							</td>
Lines 318-323 function submitForm(form) { Link Here
318
							<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="reopen" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Reopen" /></form>
318
							<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="reopen" /><input type="hidden" name="booksellerid" value="[% basketgroup.booksellerid %]" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Reopen" /></form>
319
							<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="print" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Print" /></form>
319
							<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="print" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Print" /></form>
320
                                                        <form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="export" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Export as CSV" /></form>
320
                                                        <form action="/cgi-bin/koha/acqui/basketgroup.pl" method="get"><input type="hidden" name="op" value="export" /><input type="hidden" name="basketgroupid" value="[% basketgroup.id %]" /><input type="submit" value="Export as CSV" /></form>
321
                            <a href="/cgi-bin/koha/acqui/basketgroup.pl?op=mail&amp;booksellerid=[% basketgroup.booksellerid %]&amp;basketgroupid=[% basketgroup.id %]" class="yui-button yui-link-button">Send Mail</a>
321
                    </td>
322
                    </td>
322
				</tr>
323
				</tr>
323
				[% END %]
324
				[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/letter.tt (+5 lines)
Lines 304-309 $(document).ready(function() { Link Here
304
                                    [% ELSE %]
304
                                    [% ELSE %]
305
                                    <option value="suggestions">Suggestions</option>
305
                                    <option value="suggestions">Suggestions</option>
306
                                    [% END %]
306
                                    [% END %]
307
                                    [% IF ( orders ) %]
308
                                    <option value="orders" selected="selected">Orders</option>
309
                                    [% ELSE %]
310
                                    <option value="orders">Orders</option>
311
                                    [% END %]
307
				</select>
312
				</select>
308
			</li>
313
			</li>
309
			<li>
314
			<li>
(-)a/tools/letter.pl (-1 / +33 lines)
Lines 172-177 sub add_form { Link Here
172
    }
172
    }
173
173
174
    my $field_selection;
174
    my $field_selection;
175
    if ( $module eq "suggestions" ) {
176
        push @SQLfieldname, column_picks('borrowers'),
177
                            column_picks('suggestions'),
178
                            column_picks('aqbooksellers'),
179
                            column_picks('biblio'),
180
                            column_picks('items');
181
    }
182
    elsif ( $module eq "reserves" ) {
183
        push @SQLfieldname, column_picks('borrowers'),
184
                            column_picks('reserves'),
185
                            column_picks('biblio'),
186
                            column_picks('items');
187
    }
188
    elsif ( $module eq "orders" ) {
189
        push @SQLfieldname, column_picks('aqbooksellers'),
190
                            column_picks('aqorders'),
191
                            column_picks('biblio'),
192
                            column_picks('items');
193
    }
194
    elsif ( index( $module, "acquisition" ) > 0 ) {	# FIXME: imprecise comparison
195
        push @SQLfieldname, column_picks('aqbooksellers'), column_picks('aqorders');
196
        # add issues specific tables
197
    }
175
    push @{$field_selection}, add_fields('branches');
198
    push @{$field_selection}, add_fields('branches');
176
    if ($module eq 'reserves') {
199
    if ($module eq 'reserves') {
177
        push @{$field_selection}, add_fields('borrowers', 'reserves', 'biblio', 'items');
200
        push @{$field_selection}, add_fields('borrowers', 'reserves', 'biblio', 'items');
Lines 179-184 sub add_form { Link Here
179
    elsif ($module eq 'claimacquisition') {
202
    elsif ($module eq 'claimacquisition') {
180
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'biblioitems');
203
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'biblioitems');
181
    }
204
    }
205
    elsif ($module eq 'orders') {
206
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'items');
207
        push @{$field_selection}, { value => q{}, text => '---ORDER ITEMS---' };
208
        push @{$field_selection}, { value => "orders.$_", text => "orders.$_" }
209
        foreach (qw/listprice quantity ecost quantityreceived author title volume seriestitle isbn publishercode/);
210
        push @{$field_selection}, { value => "orders.$_", text => "orders.$_" }
211
        foreach (qw/full_title itemtype quantity_ecost basketno/);
212
        push @{$field_selection}, { value => "orders.total.$_", text => "orders.total.$_" }
213
        foreach (qw/quantity gstrate currency discount ecost_gste ecost_gsti gstrate/);
214
    }
182
    elsif ($module eq 'claimissues') {
215
    elsif ($module eq 'claimissues') {
183
        push @{$field_selection}, add_fields('aqbooksellers', 'serial', 'subscription');
216
        push @{$field_selection}, add_fields('aqbooksellers', 'serial', 'subscription');
184
        push @{$field_selection},
217
        push @{$field_selection},
185
- 

Return to bug 5260