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

(-)a/C4/Acquisition.pm (-1 / +1 lines)
Lines 1411-1417 q{SELECT *, aqbasket.is_standing FROM aqorders LEFT JOIN aqbasket USING (basketn Link Here
1411
        my $sth = $dbh->prepare($query);
1411
        my $sth = $dbh->prepare($query);
1412
1412
1413
        $sth->execute(
1413
        $sth->execute(
1414
            ( $order->{quantity} < $quantrec ? 0 : ( $order->{quantity} - $quantrec ) ),
1414
            ( $order->{is_standing} ? 1 : ( $order->{quantity} - $quantrec ) ),
1415
            ( defined $order_internalnote ? $order_internalnote : () ),
1415
            ( defined $order_internalnote ? $order_internalnote : () ),
1416
            ( defined $order_vendornote ? $order_vendornote : () ),
1416
            ( defined $order_vendornote ? $order_vendornote : () ),
1417
            $ordernumber
1417
            $ordernumber
(-)a/Koha/Acquisition/Order.pm (-6 / +5 lines)
Lines 26-42 sub fetch { Link Here
26
sub insert {
26
sub insert {
27
    my ($self) = @_;
27
    my ($self) = @_;
28
28
29
    my $schema  = Koha::Database->new->schema;
30
    # Override quantity for standing orders
31
    $self->{quantity} = 1 if ( $self->{basketno} && $schema->resultset('Aqbasket')->find( $self->{basketno} )->is_standing );
32
29
    # if these parameters are missing, we can't continue
33
    # if these parameters are missing, we can't continue
30
    for my $key (qw( basketno biblionumber budget_id )) {
34
    for my $key (qw( basketno quantity biblionumber budget_id )) {
31
        croak "Cannot insert order: Mandatory parameter $key is missing"
35
        croak "Cannot insert order: Mandatory parameter $key is missing"
32
          unless $self->{$key};
36
          unless $self->{$key};
33
    }
37
    }
34
38
35
    my $schema  = Koha::Database->new->schema;
36
    if ( !$self->{quantity} && !$schema->resultset('Aqbasket')->find( $self->{basketno} )->is_standing ) {
37
        croak "Cannot insert order: Quantity is mandatory for non-standing orders";
38
    }
39
40
    $self->{quantityreceived} ||= 0;
39
    $self->{quantityreceived} ||= 0;
41
    $self->{entrydate} ||=
40
    $self->{entrydate} ||=
42
      output_pref( { dt => dt_from_string, dateformat => 'iso' } );
41
      output_pref( { dt => dt_from_string, dateformat => 'iso' } );
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt (-1 / +1 lines)
Lines 502-508 Link Here
502
                        <td class="number gste [% IF books_loo.ecostgste.search(zero_regex) %]error[% END %]">[% books_loo.ecostgste | $Price%]</td>
502
                        <td class="number gste [% IF books_loo.ecostgste.search(zero_regex) %]error[% END %]">[% books_loo.ecostgste | $Price%]</td>
503
                        <td class="number gsti [% IF books_loo.rrpgsti.search(zero_regex) %]error[% END %]">[% books_loo.rrpgsti | $Price %]</td>
503
                        <td class="number gsti [% IF books_loo.rrpgsti.search(zero_regex) %]error[% END %]">[% books_loo.rrpgsti | $Price %]</td>
504
                        <td class="number gsti [% IF books_loo.ecostgsti.search(zero_regex) %]error[% END %]">[% books_loo.ecostgsti | $Price %]</td>
504
                        <td class="number gsti [% IF books_loo.ecostgsti.search(zero_regex) %]error[% END %]">[% books_loo.ecostgsti | $Price %]</td>
505
                        <td class="number [% IF books_loo.quantity.search(zero_regex) %]error[% END %]">[% IF is_standing and books_loo.quantity == 0 %]N/A[% ELSE %][% books_loo.quantity or 'N/A' %][% END %]</td>
505
                        <td class="number [% IF books_loo.quantity.search(zero_regex) %]error[% END %]">[% books_loo.quantity %]</td>
506
                        <td class="number gste [% IF books_loo.totalgste.search(zero_regex) %]error[% END %]">[% books_loo.totalgste | $Price %]</td>
506
                        <td class="number gste [% IF books_loo.totalgste.search(zero_regex) %]error[% END %]">[% books_loo.totalgste | $Price %]</td>
507
                        <td class="number gsti [% IF books_loo.totalgsti.search(zero_regex) %]error[% END %]">[% books_loo.totalgsti | $Price %]</td>
507
                        <td class="number gsti [% IF books_loo.totalgsti.search(zero_regex) %]error[% END %]">[% books_loo.totalgsti | $Price %]</td>
508
                        <td class="number">[% books_loo.gstrate * 100 | $Price %]</td>
508
                        <td class="number">[% books_loo.gstrate * 100 | $Price %]</td>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt (-25 / +21 lines)
Lines 43-54 function Check(ff) { Link Here
43
        _alertString += "\n- "+ _("You must select a fund");
43
        _alertString += "\n- "+ _("You must select a fund");
44
    }
44
    }
45
45
46
[% UNLESS basket.is_standing %]
47
    if (!(isNum(ff.quantity,0)) || ff.quantity.value == 0){
46
    if (!(isNum(ff.quantity,0)) || ff.quantity.value == 0){
48
        ok=1;
47
        ok=1;
49
                    _alertString += "\n- " + _("Quantity must be greater than '0'");
48
                    _alertString += "\n- " + _("Quantity must be greater than '0'");
50
    }
49
    }
51
[% END %]
52
50
53
    if (!(isNum(ff.listprice,0))){
51
    if (!(isNum(ff.listprice,0))){
54
        ok=1;
52
        ok=1;
Lines 415-421 $(document).ready(function() Link Here
415
        </fieldset>
413
        </fieldset>
416
    [% END %]
414
    [% END %]
417
415
418
    [% UNLESS subscriptionid %][% # it is a suggestion, we have not items %]
416
    [% UNLESS subscriptionid || basket.is_standing %][% # it is a suggestion, we have not items %]
419
      [% IF (AcqCreateItemOrdering) %]
417
      [% IF (AcqCreateItemOrdering) %]
420
418
421
      <div id="items_list" style="display:none">
419
      <div id="items_list" style="display:none">
Lines 461-492 $(document).ready(function() Link Here
461
    <fieldset class="rows">
459
    <fieldset class="rows">
462
        <legend>Accounting details</legend>
460
        <legend>Accounting details</legend>
463
        <ol>
461
        <ol>
464
            [% UNLESS basket.is_standing %]
462
            <li>
465
                <li>
463
                [% IF ( close ) %]
466
                    [% IF ( close ) %]
464
                    <span class="label required">Quantity: </span>
467
                        <span class="label required">Quantity: </span>
465
                    <input type="hidden" name="quantity" value="[% quantity %]" />[% quantity %]
468
                        <input type="hidden" name="quantity" value="[% quantity %]" />[% quantity %]
466
                [% ELSE %]
467
                    <label class="required" for="quantity">Quantity: </label>
468
                    [% IF (AcqCreateItemOrdering) %]
469
                        [% IF subscriptionid || basket.is_standing %]
470
                            <input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="1" />
471
                        [% ELSE %]
472
                            <input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="0" />
473
                        [% END %]
469
                    [% ELSE %]
474
                    [% ELSE %]
470
                        <label class="required" for="quantity">Quantity: </label>
475
                        [% IF subscriptionid || basket.is_standing %]
471
                        [% IF (AcqCreateItemOrdering) %]
476
                            <input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="1" />
472
                            [% IF subscriptionid %]
473
                                <input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="1" />
474
                            [% ELSE %]
475
                                <input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="0" />
476
                            [% END %]
477
                        [% ELSE %]
477
                        [% ELSE %]
478
                            [% IF subscriptionid %]
478
                            <input type="text" size="20" id="quantity" name="quantity" value="[% quantityrec %]" onchange="updateCosts();" />
479
                                <input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="1" />
480
                            [% ELSE %]
481
                                <input type="text" size="20" id="quantity" name="quantity" value="[% quantityrec %]" onchange="updateCosts();" />
482
                            [% END %]
483
                        [% END %]
479
                        [% END %]
484
                        <span class="required">Required</span>
485
                    [% END %]
480
                    [% END %]
486
                    <!-- origquantityrec only here for javascript compatibility (additem.js needs it, useless here, usefull when receiveing an order -->
481
                    <span class="required">Required</span>
487
                    <input id="origquantityrec" readonly="readonly" type="hidden" name="origquantityrec" value="1" />
482
                [% END %]
488
                </li>
483
                <!-- origquantityrec only here for javascript compatibility (additem.js needs it, useless here, usefull when receiveing an order -->
489
            [% END %]
484
                <input id="origquantityrec" readonly="readonly" type="hidden" name="origquantityrec" value="1" />
485
            </li>
490
            <li>
486
            <li>
491
                [% IF ( close ) %]
487
                [% IF ( close ) %]
492
            <span class="label required">Fund: </span>
488
            <span class="label required">Fund: </span>
(-)a/t/db_dependent/Acquisition/NewOrder.t (-4 / +1 lines)
Lines 67-75 foreach my $mandatoryparams_key (@mandatoryparams_keys) { Link Here
67
    };
67
    };
68
    $return_error = $@;
68
    $return_error = $@;
69
    my $expected_error = "Cannot insert order: Mandatory parameter $mandatoryparams_key is missing";
69
    my $expected_error = "Cannot insert order: Mandatory parameter $mandatoryparams_key is missing";
70
    if ( $mandatoryparams_key eq 'quantity' ) {
71
        $expected_error = "Cannot insert order: Quantity is mandatory for non-standing orders";
72
    }
73
    ok(
70
    ok(
74
        ( !( defined $order ) )
71
        ( !( defined $order ) )
75
          && ( index( $return_error, $expected_error ) >= 0 ),
72
          && ( index( $return_error, $expected_error ) >= 0 ),
Lines 90-93 $order = Koha::Acquisition::Order->fetch({ ordernumber => $ordernumber }); Link Here
90
is( $order->{quantityreceived}, 0, 'Koha::Acquisition::Order->insert set quantityreceivedto 0 if undef is given' );
87
is( $order->{quantityreceived}, 0, 'Koha::Acquisition::Order->insert set quantityreceivedto 0 if undef is given' );
91
is( $order->{entrydate}, output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }), 'Koha::Acquisition::Order->insert set entrydate to today' );
88
is( $order->{entrydate}, output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }), 'Koha::Acquisition::Order->insert set entrydate to today' );
92
89
93
$schema->storage->txn_rollback();
90
$schema->storage->txn_rollback();
(-)a/t/db_dependent/Acquisition/StandingOrders.t (-17 / +2 lines)
Lines 2-8 Link Here
2
2
3
use Modern::Perl;
3
use Modern::Perl;
4
4
5
use Test::More tests => 14;
5
use Test::More tests => 13;
6
use C4::Context;
6
use C4::Context;
7
use C4::Acquisition;
7
use C4::Acquisition;
8
use C4::Biblio;
8
use C4::Biblio;
Lines 68-87 my $ordernumber = Koha::Acquisition::Order->new( Link Here
68
68
69
isnt( $ordernumber, undef, 'standing order successfully created' );
69
isnt( $ordernumber, undef, 'standing order successfully created' );
70
70
71
eval {
72
    Koha::Acquisition::Order->new(
73
        {
74
            basketno         => $nonstandingbasketno,
75
            biblionumber     => $biblionumber,
76
            budget_id        => $budget->{budget_id},
77
            currency         => 'USD',
78
            quantity         => 0,
79
        }
80
    )->insert;
81
};
82
83
like( $@, qr/quantity/im, 'normal orders cannot be created without quantity' );
84
85
my $search_orders = SearchOrders( {
71
my $search_orders = SearchOrders( {
86
    basketno => $basketno,
72
    basketno => $basketno,
87
    pending => 1,
73
    pending => 1,
Lines 117-123 my $order = Koha::Acquisition::Order->fetch( { ordernumber => $ordernumber } ); Link Here
117
my $neworder = Koha::Acquisition::Order->fetch( { ordernumber => $new_ordernumber } );
103
my $neworder = Koha::Acquisition::Order->fetch( { ordernumber => $new_ordernumber } );
118
104
119
is( $order->{orderstatus}, 'partial', 'original order set to partially received' );
105
is( $order->{orderstatus}, 'partial', 'original order set to partially received' );
120
is( $order->{quantity}, 0, 'original order quantity unchanged' );
106
is( $order->{quantity}, 1, 'original order quantity unchanged' );
121
is( $order->{quantityreceived}, 0, 'original order has no received items' );
107
is( $order->{quantityreceived}, 0, 'original order has no received items' );
122
isnt( $order->{unitprice}, 12, 'original order does not get cost' );
108
isnt( $order->{unitprice}, 12, 'original order does not get cost' );
123
is( $neworder->{orderstatus}, 'complete', 'new order set to complete' );
109
is( $neworder->{orderstatus}, 'complete', 'new order set to complete' );
124
- 

Return to bug 15531