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

(-)a/C4/Acquisition.pm (-3 / +38 lines)
Lines 57-63 BEGIN { Link Here
57
        &ModReceiveOrder &ModOrderBiblioitemNumber
57
        &ModReceiveOrder &ModOrderBiblioitemNumber
58
        &GetCancelledOrders
58
        &GetCancelledOrders
59
59
60
        &NewOrderItem &ModOrderItem
60
        &NewOrderItem &ModOrderItem &ModItemOrder
61
61
62
        &GetParcels &GetParcel
62
        &GetParcels &GetParcel
63
        &GetContracts &GetContract
63
        &GetContracts &GetContract
Lines 1053-1058 sub ModOrderItem { Link Here
1053
    return 0;
1053
    return 0;
1054
}
1054
}
1055
1055
1056
=head3 ModItemOrder
1057
1058
    ModItemOrder($itemnumber, $ordernumber);
1059
1060
Modifies the ordernumber of an item in aqorders_items.
1061
1062
=cut
1063
1064
sub ModItemOrder {
1065
    my ($itemnumber, $ordernumber) = @_;
1066
1067
    return unless ($itemnumber and $ordernumber);
1068
1069
    my $dbh = C4::Context->dbh;
1070
    my $query = qq{
1071
        UPDATE aqorders_items
1072
        SET ordernumber = ?
1073
        WHERE itemnumber = ?
1074
    };
1075
    my $sth = $dbh->prepare($query);
1076
    return $sth->execute($ordernumber, $itemnumber);
1077
}
1078
1056
#------------------------------------------------------------#
1079
#------------------------------------------------------------#
1057
1080
1058
1081
Lines 1138-1144 C<$ordernumber>. Link Here
1138
sub ModReceiveOrder {
1161
sub ModReceiveOrder {
1139
    my (
1162
    my (
1140
        $biblionumber,    $ordernumber,  $quantrec, $user, $cost,
1163
        $biblionumber,    $ordernumber,  $quantrec, $user, $cost,
1141
        $invoiceno, $freight, $rrp, $budget_id, $datereceived
1164
        $invoiceno, $freight, $rrp, $budget_id, $datereceived, $received_items
1142
    )
1165
    )
1143
    = @_;
1166
    = @_;
1144
    my $dbh = C4::Context->dbh;
1167
    my $dbh = C4::Context->dbh;
Lines 1181-1187 sub ModReceiveOrder { Link Here
1181
        $order->{'quantity'} -= $quantrec;
1204
        $order->{'quantity'} -= $quantrec;
1182
        $order->{'quantityreceived'} = 0;
1205
        $order->{'quantityreceived'} = 0;
1183
        my $newOrder = NewOrder($order);
1206
        my $newOrder = NewOrder($order);
1184
} else {
1207
        # Change ordernumber in aqorders_items for items not received
1208
        my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} );
1209
        my $count = scalar @orderitems;
1210
1211
        for (my $i=0; $i<$count; $i++){
1212
            foreach (@$received_items){
1213
                splice (@orderitems, $i, 1) if ($orderitems[$i] == $_);
1214
            }
1215
        }
1216
        foreach (@orderitems) {
1217
            ModItemOrder($_, $newOrder);
1218
        }
1219
    } else {
1185
        $sth=$dbh->prepare("update aqorders
1220
        $sth=$dbh->prepare("update aqorders
1186
                            set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?,
1221
                            set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?,
1187
                                unitprice=?,freight=?,rrp=?
1222
                                unitprice=?,freight=?,rrp=?
(-)a/acqui/finishreceive.pl (-2 / +7 lines)
Lines 94-102 if ($quantityrec > $origquantityrec ) { Link Here
94
            NewOrderItem($itemnumber, $ordernumber);
94
            NewOrderItem($itemnumber, $ordernumber);
95
        }
95
        }
96
    }
96
    }
97
    
97
98
    my @received_items = ();
99
    if(C4::Context->preference('AcqCreateItem') eq 'ordering') {
100
        @received_items = $input->param('items_to_receive');
101
    }
102
98
    # save the quantity received.
103
    # save the quantity received.
99
    $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived);
104
    $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived, \@received_items);
100
}
105
}
101
106
102
update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber );
107
update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber );
(-)a/acqui/orderreceive.pl (-6 / +42 lines)
Lines 112-127 my $count = scalar @$results; Link Here
112
# prepare the form for receiving
112
# prepare the form for receiving
113
if ( $count == 1 ) {
113
if ( $count == 1 ) {
114
    my $order = $results->[0];
114
    my $order = $results->[0];
115
    if (C4::Context->preference('AcqCreateItem') eq 'receiving') {
115
116
        # Check if ACQ framework exists
116
    # Check if ACQ framework exists
117
        my $marc = GetMarcStructure(1, 'ACQ');
117
    my $acq_fw = GetMarcStructure(1, 'ACQ');
118
        unless($marc) {
118
    unless($acq_fw) {
119
            $template->param('NoACQframework' => 1);
119
        $template->param('NoACQframework' => 1);
120
        }
120
    }
121
122
    my $AcqCreateItem = C4::Context->preference('AcqCreateItem');
123
    if ($AcqCreateItem eq 'receiving') {
121
        $template->param(
124
        $template->param(
122
            AcqCreateItemReceiving => 1,
125
            AcqCreateItemReceiving => 1,
123
            UniqueItemFields => C4::Context->preference('UniqueItemFields'),
126
            UniqueItemFields => C4::Context->preference('UniqueItemFields'),
124
        );
127
        );
128
    } elsif ($AcqCreateItem eq 'ordering') {
129
        my $fw = ($acq_fw) ? 'ACQ' : '';
130
        my @itemnumbers = GetItemnumbersFromOrder($order->{ordernumber});
131
        my @items;
132
        foreach (@itemnumbers) {
133
            my $item = GetItem($_);
134
            if($item->{homebranch}) {
135
                $item->{homebranchname} = GetBranchName($item->{homebranch});
136
            }
137
            if($item->{holdingbranch}) {
138
                $item->{holdingbranchname} = GetBranchName($item->{holdingbranch});
139
            }
140
            if(my $code = GetAuthValCode("items.notforloan", $fw)) {
141
                $item->{notforloan} = GetKohaAuthorisedValueLib($code, $item->{notforloan});
142
            }
143
            if(my $code = GetAuthValCode("items.restricted", $fw)) {
144
                $item->{restricted} = GetKohaAuthorisedValueLib($code, $item->{restricted});
145
            }
146
            if(my $code = GetAuthValCode("items.location", $fw)) {
147
                $item->{location} = GetKohaAuthorisedValueLib($code, $item->{location});
148
            }
149
            if(my $code = GetAuthValCode("items.ccode", $fw)) {
150
                $item->{collection} = GetKohaAuthorisedValueLib($code, $item->{ccode});
151
            }
152
            if(my $code = GetAuthValCode("items.materials", $fw)) {
153
                $item->{materials} = GetKohaAuthorisedValueLib($code, $item->{materials});
154
            }
155
            my $itemtype = getitemtypeinfo($item->{itype});
156
            $item->{itemtype} = $itemtype->{description};
157
            push @items, $item;
158
        }
159
        $template->param(items => \@items);
125
    }
160
    }
126
161
127
    if ( $order->{'unitprice'} == 0 ) {
162
    if ( $order->{'unitprice'} == 0 ) {
Lines 136-141 if ( $count == 1 ) { Link Here
136
    my $budget = GetBudget( $order->{'budget_id'} );
171
    my $budget = GetBudget( $order->{'budget_id'} );
137
172
138
    $template->param(
173
    $template->param(
174
        AcqCreateItem         => $AcqCreateItem,
139
        count                 => 1,
175
        count                 => 1,
140
        biblionumber          => $order->{'biblionumber'},
176
        biblionumber          => $order->{'biblionumber'},
141
        ordernumber           => $order->{'ordernumber'},
177
        ordernumber           => $order->{'ordernumber'},
(-)a/catalogue/getitem-ajax.pl (+74 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# Copyright BibLibre 2012
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
use CGI;
22
use JSON;
23
24
use C4::Biblio;
25
use C4::Branch;
26
use C4::Items;
27
use C4::Koha;
28
use C4::Output;
29
30
my $cgi = new CGI;
31
my $item = {};
32
my $itemnumber = $cgi->param('itemnumber');
33
34
if($itemnumber) {
35
    my $acq_fw = GetMarcStructure(1, 'ACQ');
36
    my $fw = ($acq_fw) ? 'ACQ' : '';
37
    $item = GetItem($itemnumber);
38
39
    if($item->{homebranch}) {
40
        $item->{homebranchname} = GetBranchName($item->{homebranch});
41
    }
42
43
    if($item->{holdingbranch}) {
44
        $item->{holdingbranchname} = GetBranchName($item->{holdingbranch});
45
    }
46
47
    if(my $code = GetAuthValCode("items.notforloan", $fw)) {
48
        $item->{notforloan} = GetKohaAuthorisedValueLib($code, $item->{notforloan});
49
    }
50
51
    if(my $code = GetAuthValCode("items.restricted", $fw)) {
52
        $item->{restricted} = GetKohaAuthorisedValueLib($code, $item->{restricted});
53
    }
54
55
    if(my $code = GetAuthValCode("items.location", $fw)) {
56
        $item->{location} = GetKohaAuthorisedValueLib($code, $item->{location});
57
    }
58
59
    if(my $code = GetAuthValCode("items.ccode", $fw)) {
60
        $item->{collection} = GetKohaAuthorisedValueLib($code, $item->{ccode});
61
    }
62
63
    if(my $code = GetAuthValCode("items.materials", $fw)) {
64
        $item->{materials} = GetKohaAuthorisedValueLib($code, $item->{materials});
65
    }
66
67
    my $itemtype = getitemtypeinfo($item->{itype});
68
    $item->{itemtype} = $itemtype->{description};
69
}
70
71
my $json_text = to_json( $item, { utf8 => 1 } );
72
73
output_with_http_headers $cgi, undef, $json_text, 'json';
74
(-)a/cataloguing/additem.pl (+1 lines)
Lines 724-729 $template->param( Link Here
724
    itemtagsubfield  => $itemtagsubfield,
724
    itemtagsubfield  => $itemtagsubfield,
725
    op      => $nextop,
725
    op      => $nextop,
726
    opisadd => ($nextop eq "saveitem") ? 0 : 1,
726
    opisadd => ($nextop eq "saveitem") ? 0 : 1,
727
    popup => $input->param('popup') ? 1: 0,
727
    C4::Search::enabled_staff_search_views,
728
    C4::Search::enabled_staff_search_views,
728
);
729
);
729
730
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt (-3 / +114 lines)
Lines 32-40 Link Here
32
        return true;
32
        return true;
33
    }
33
    }
34
34
35
    [% IF (AcqCreateItem == 'ordering') %]
36
        var items_columns = [null, null, 'barcode', 'homebranchname',
37
            'holdingbranchname', 'notforloan', 'restricted', 'location',
38
            'itemcallnumber', 'copynumber', 'stocknumber', 'collection',
39
            'itemtype', 'materials', 'itemnotes'];
40
41
        function PopupEditPage(biblionumber, itemnumber) {
42
            var url = "/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber="
43
                + biblionumber + "&itemnumber=" + itemnumber + "&popup=1#edititem";
44
            var w = window.open(url);
45
            var watchClose = setInterval(function() {
46
                if (w.closed) {
47
                    clearTimeout(watchClose);
48
                    $.getJSON('/cgi-bin/koha/catalogue/getitem-ajax.pl',
49
                        {
50
                            'itemnumber': itemnumber
51
                        },
52
                        function(item) {
53
                            var tds = $("#item_"+itemnumber+" td");
54
                            for(var i=2; i<tds.length; i++) {
55
                                var column = items_columns[i];
56
                                $(tds[i]).text(item[column]);
57
                            }
58
                        }
59
                    );
60
                }
61
            }, 500);
62
        }
63
64
        function CalcQtyToReceive() {
65
            var qty = $("input[name='items_to_receive']:checked").length;
66
            $("#quantity").val(qty);
67
        }
68
69
        function CheckNItems(n) {
70
            $("input[name='items_to_receive']").each(function() {
71
                $(this).attr('checked', false);
72
            });
73
            $("input[name='items_to_receive']:lt("+n+")").each(function () {
74
                $(this).attr('checked', true);
75
            });
76
        }
77
    [% END %]
78
35
    $(document).ready(function() {
79
    $(document).ready(function() {
36
        [% IF (AcqCreateItemReceiving) %]
80
        [% IF (AcqCreateItemReceiving) %]
37
            cloneItemBlock(0, '[% UniqueItemFields %]');
81
            cloneItemBlock(0, '[% UniqueItemFields %]');
82
        [% ELSIF (AcqCreateItem == 'ordering') %]
83
            $("input[name='items_to_receive']").change(function() {
84
                CalcQtyToReceive();
85
            });
86
            CalcQtyToReceive();
87
            $("#quantity").keyup(function() {
88
                var qty = parseInt($("#quantity").val());
89
                var qtyto = parseInt($("#quantity_to_receive").val());
90
                if(qty > qtyto) {
91
                    $("#qtyrecerror").show();
92
                } else {
93
                    $("#qtyrecerror").hide();
94
                }
95
                CheckNItems($(this).val());
96
            });
38
        [% END %]
97
        [% END %]
39
    });
98
    });
40
//]]>
99
//]]>
Lines 127-133 Link Here
127
            [% END %]
186
            [% END %]
128
            <div id="outeritemblock"></div>
187
            <div id="outeritemblock"></div>
129
        </fieldset>
188
        </fieldset>
130
    [% END %][%# IF (AcqCreateItemReceiving) %]
189
    [% ELSIF (AcqCreateItem == 'ordering') %]
190
        [% IF (items.size) %]
191
            <h5>Items</h5>
192
            <div style="width:100%;overflow:auto">
193
                <table>
194
                    <thead>
195
                        <tr>
196
                            <th>Receive?</th>
197
                            <th>&nbsp;</th>
198
                            <th>Barcode</th>
199
                            <th>Home branch</th>
200
                            <th>Holding branch</th>
201
                            <th>Not for loan</th>
202
                            <th>Restricted</th>
203
                            <th>Location</th>
204
                            <th>Call number</th>
205
                            <th>Copy number</th>
206
                            <th>Stock number</th>
207
                            <th>Collection code</th>
208
                            <th>Item type</th>
209
                            <th>Materials</th>
210
                            <th>Notes</th>
211
                        </tr>
212
                    </thead>
213
                    <tbody>
214
                        [% FOREACH item IN items %]
215
                            <tr id="item_[% item.itemnumber %]">
216
                                <td style="text-align:center"><input type="checkbox" name="items_to_receive" value="[% item.itemnumber %]" /></td>
217
                                <td><a style="cursor:pointer" onclick="PopupEditPage([% item.biblionumber %],[% item.itemnumber %]);">Edit</a></td>
218
                                <td>[% item.barcode %]</td>
219
                                <td>[% item.homebranchname %]</td>
220
                                <td>[% item.holdingbranchname %]</td>
221
                                <td>[% item.notforloan %]</td>
222
                                <td>[% item.restricted %]</td>
223
                                <td>[% item.location %]</td>
224
                                <td>[% item.itemcallnumber %]</td>
225
                                <td>[% item.copynumber %]</td>
226
                                <td>[% item.stocknumber %]</td>
227
                                <td>[% item.collection %]</td>
228
                                <td>[% item.itemtype %]</td>
229
                                <td>[% item.materials %]</td>
230
                                <td>[% item.itemnotes %]</td>
231
                            </tr>
232
                        [% END %]
233
                    </tbody>
234
                </table>
235
            </div>
236
        [% END %]
237
    [% END %]
131
    <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
238
    <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
132
    <input type="hidden" name="ordernumber" value="[% ordernumber %]" />
239
    <input type="hidden" name="ordernumber" value="[% ordernumber %]" />
133
    <input type="hidden" name="biblioitemnumber" value="[% biblioitemnumber %]" />
240
    <input type="hidden" name="biblioitemnumber" value="[% biblioitemnumber %]" />
Lines 143-149 Link Here
143
       <li><label for="datereceived">Date received: </label><span> [% datereceived %] </span></li>
250
       <li><label for="datereceived">Date received: </label><span> [% datereceived %] </span></li>
144
       <li><label for="bookfund">Budget: </label><span> [% bookfund %] </span></li>
251
       <li><label for="bookfund">Budget: </label><span> [% bookfund %] </span></li>
145
       <li><label for="creator">Created by: </label><span> [% IF ( memberfirstname and membersurname ) %][% IF ( memberfirstname ) %][% memberfirstname %][% END %] [% membersurname %][% ELSE %]No name[% END %]</span></li>
252
       <li><label for="creator">Created by: </label><span> [% IF ( memberfirstname and membersurname ) %][% IF ( memberfirstname ) %][% memberfirstname %][% END %] [% membersurname %][% ELSE %]No name[% END %]</span></li>
146
       <li><label for="quantityto">Quantity to receive: </label><span class="label">
253
       <li><label for="quantity_to_receive">Quantity to receive: </label><span class="label">
147
           [% IF ( edit ) %]
254
           [% IF ( edit ) %]
148
               <input type="text" id="quantity_to_receive" name="quantity" value="[% quantity %]" />
255
               <input type="text" id="quantity_to_receive" name="quantity" value="[% quantity %]" />
149
           [% ELSE %]
256
           [% ELSE %]
Lines 168-179 Link Here
168
                [% END %]
275
                [% END %]
169
            [% ELSE %]
276
            [% ELSE %]
170
                [% IF ( items ) %]
277
                [% IF ( items ) %]
171
                    <input READONLY type="text" id="quantity" size="20" name="quantityrec" value="1" />
278
                    <input type="text" id="quantity" size="20" name="quantityrec" value="1" />
172
                [% ELSE %]
279
                [% ELSE %]
173
                    <input type="text" size="20" id="quantity" name="quantityrec" value="1" />
280
                    <input type="text" size="20" id="quantity" name="quantityrec" value="1" />
174
                [% END %]
281
                [% END %]
175
                <input id="origquantityrec" READONLY type="hidden" name="origquantityrec" value="0" />
282
                <input id="origquantityrec" READONLY type="hidden" name="origquantityrec" value="0" />
176
            [% END %]
283
            [% END %]
284
            <div id="qtyrecerror" style="display:none">
285
                <p class="error">Warning, you have entered more items than expected.
286
                Items will not be created.</p>
287
            </div>
177
          [% END %][%# IF (AcqCreateItemReceiving) %]
288
          [% END %][%# IF (AcqCreateItemReceiving) %]
178
		</li>
289
		</li>
179
        <li><label for="rrp">Replacement cost: </label><input type="text" size="20" name="rrp" id="rrp" value="[% rrp %]" /></li>
290
        <li><label for="rrp">Replacement cost: </label><input type="text" size="20" name="rrp" id="rrp" value="[% rrp %]" /></li>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt (-1 / +8 lines)
Lines 4-9 Link Here
4
<script type="text/javascript">
4
<script type="text/javascript">
5
//<![CDATA[
5
//<![CDATA[
6
$(document).ready(function(){
6
$(document).ready(function(){
7
    [% IF (popup) %]
8
        [% IF (opisadd) %]
9
            window.close();
10
        [% END %]
11
    [% END %]
7
		$("fieldset.rows input").keydown(function(e){ return checkEnter(e); });
12
		$("fieldset.rows input").keydown(function(e){ return checkEnter(e); });
8
		/* Inline edit/delete links */
13
		/* Inline edit/delete links */
9
		var biblionumber = $("input[name='biblionumber']").attr("value");
14
		var biblionumber = $("input[name='biblionumber']").attr("value");
Lines 219-224 $(document).ready(function() { Link Here
219
<div id="cataloguing_additem_newitem">
224
<div id="cataloguing_additem_newitem">
220
    <form method="post" action="/cgi-bin/koha/cataloguing/additem.pl" name="f">
225
    <form method="post" action="/cgi-bin/koha/cataloguing/additem.pl" name="f">
221
    <input type="hidden" name="op" value="[% op %]" />
226
    <input type="hidden" name="op" value="[% op %]" />
227
    [% IF (popup) %]
228
        <input type="hidden" name="popup" value="1" />
229
    [% END %]
222
    <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
230
    <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
223
    [% IF ( opisadd ) %]
231
    [% IF ( opisadd ) %]
224
        <h2 id="additema">Add item</h2>
232
        <h2 id="additema">Add item</h2>
225
- 

Return to bug 7175