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

(-)a/C4/Acquisition.pm (-2 / +85 lines)
Lines 1186-1191 sub ModReceiveOrder { Link Here
1186
    my $order = $sth->fetchrow_hashref();
1186
    my $order = $sth->fetchrow_hashref();
1187
    $sth->finish();
1187
    $sth->finish();
1188
1188
1189
1190
    # If there are still items to be received
1189
    if ( $order->{quantity} > $quantrec ) {
1191
    if ( $order->{quantity} > $quantrec ) {
1190
        $sth=$dbh->prepare("
1192
        $sth=$dbh->prepare("
1191
            UPDATE aqorders
1193
            UPDATE aqorders
Lines 1207-1213 sub ModReceiveOrder { Link Here
1207
        }
1209
        }
1208
        $order->{'quantity'} -= $quantrec;
1210
        $order->{'quantity'} -= $quantrec;
1209
        $order->{'quantityreceived'} = 0;
1211
        $order->{'quantityreceived'} = 0;
1210
        my $newOrder = NewOrder($order);
1212
1213
        my ($newOrder, $newordernumber) = NewOrder($order);
1211
        # Change ordernumber in aqorders_items for items not received
1214
        # Change ordernumber in aqorders_items for items not received
1212
        my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} );
1215
        my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} );
1213
        my $count = scalar @orderitems;
1216
        my $count = scalar @orderitems;
Lines 1220-1233 sub ModReceiveOrder { Link Here
1220
        foreach (@orderitems) {
1223
        foreach (@orderitems) {
1221
            ModItemOrder($_, $newOrder);
1224
            ModItemOrder($_, $newOrder);
1222
        }
1225
        }
1226
1227
	# Do we have to update order informations from the marc record?
1228
	my ($ordertag, $ordersubtag) = GetMarcFromKohaField('aqorders.ordernumber', 'ACQ');
1229
1230
	# Updating MARC order field if exists
1231
	if ($ordertag and $ordersubtag) {
1232
	    $debug and warn "updating MARC";
1233
	    # Getting record
1234
	    my $record = GetMarcBiblio($biblionumber);
1235
	    if ($record) {
1236
		$debug and warn "updating Record";
1237
		foreach ($record->field($ordertag)) {
1238
		    if ($_->subfield($ordersubtag) eq $ordernumber) {
1239
		       # Updating ordernumber
1240
		       $debug and warn "updating ordernumber $ordernumber => $newordernumber";
1241
		       $_->update($ordersubtag => $newordernumber); 
1242
1243
		       # Updating quantity
1244
		       my ($quantitytag, $quantitysubtag) = GetMarcFromKohaField('aqorders.quantity', 'ACQ');
1245
		       if ($quantitysubtag) {
1246
			    $debug and warn "updating quantity " . $order->{quantity};
1247
			    $_->update($quantitysubtag => $order->{quantity});
1248
		       }
1249
		    }
1250
		}
1251
1252
		# Applying changes
1253
		ModBiblio($record, $biblionumber, 'ACQ'); 
1254
	    }	
1255
	}
1256
1257
1223
    } else {
1258
    } else {
1224
        $sth=$dbh->prepare("update aqorders
1259
        $sth = $dbh->prepare(
1260
            "update aqorders
1225
                            set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?,
1261
                            set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?,
1226
                                unitprice=?,freight=?,rrp=?
1262
                                unitprice=?,freight=?,rrp=?
1227
                            where biblionumber=? and ordernumber=?");
1263
                            where biblionumber=? and ordernumber=?");
1228
        $sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$biblionumber,$ordernumber);
1264
        $sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$biblionumber,$ordernumber);
1229
        $sth->finish;
1265
        $sth->finish;
1266
1267
	# Removing MARC order field if exists
1268
	DelMarcOrder($biblionumber, $ordernumber);
1230
    }
1269
    }
1270
1271
    
1231
    return $datereceived;
1272
    return $datereceived;
1232
}
1273
}
1233
#------------------------------------------------------------#
1274
#------------------------------------------------------------#
Lines 1331-1336 sub DelOrder { Link Here
1331
    my $sth = $dbh->prepare($query);
1372
    my $sth = $dbh->prepare($query);
1332
    $sth->execute( $bibnum, $ordernumber );
1373
    $sth->execute( $bibnum, $ordernumber );
1333
    $sth->finish;
1374
    $sth->finish;
1375
1376
    # Removing MARC order field if exists
1377
    DelMarcOrder($bibnum, $ordernumber);
1378
1334
    my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
1379
    my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
1335
    foreach my $itemnumber (@itemnumbers){
1380
    foreach my $itemnumber (@itemnumbers){
1336
    	C4::Items::DelItem( $dbh, $bibnum, $itemnumber );
1381
    	C4::Items::DelItem( $dbh, $bibnum, $itemnumber );
Lines 1338-1343 sub DelOrder { Link Here
1338
    
1383
    
1339
}
1384
}
1340
1385
1386
=head3 DelMarcOrder
1387
1388
=over 4
1389
1390
&DelMarcOrder($biblionumber, $ordernumber);
1391
1392
Delete the order field from the MARC record. aqorders.ordernumber needs
1393
to be linked to a MARC field/subfield. The field is deleted if the value of
1394
the subfield containing the ordernumber matches the ordernumber given
1395
in parameter
1396
1397
=back
1398
1399
=cut
1400
1401
sub DelMarcOrder {
1402
    my ($biblionumber, $ordernumber) = @_;
1403
1404
    # Do we have to remove order informations from the marc record?
1405
    my ($ordertag, $ordersubtag) = GetMarcFromKohaField('aqorders.ordernumber', 'ACQ');
1406
1407
    # Removing MARC order field if exists
1408
    if ($ordertag and $ordersubtag) {
1409
	# Getting record
1410
	my $record = GetMarcBiblio($biblionumber);
1411
	if ($record) {
1412
	    # Looking for the right field
1413
	    foreach ($record->field($ordertag)) {
1414
		if ($_->subfield($ordersubtag) eq $ordernumber) {
1415
		   $record->delete_field($_); 
1416
		}
1417
	    }
1418
	    # Applying changes
1419
	    ModBiblio($record, $biblionumber, 'ACQ'); 
1420
	}
1421
    }
1422
}
1423
1341
=head2 FUNCTIONS ABOUT PARCELS
1424
=head2 FUNCTIONS ABOUT PARCELS
1342
1425
1343
=cut
1426
=cut
(-)a/acqui/addorder.pl (-27 / +108 lines)
Lines 122-131 if it is an order from an existing suggestion : the id of this suggestion. Link Here
122
use strict;
122
use strict;
123
use warnings;
123
use warnings;
124
use CGI;
124
use CGI;
125
use C4::Auth;			# get_template_and_user
125
use C4::Auth;           # get_template_and_user
126
use C4::Acquisition;	# NewOrder DelOrder ModOrder
126
use C4::Acquisition;    # NewOrder DelOrder ModOrder
127
use C4::Suggestions;	# ModStatus
127
use C4::Suggestions;    # ModStatus
128
use C4::Biblio;			# AddBiblio TransformKohaToMarc
128
use C4::Biblio;         # AddBiblio TransformKohaToMarc
129
use C4::Bookseller qw/GetBookSellerFromId/;
129
use C4::Items;
130
use C4::Items;
130
use C4::Output;
131
use C4::Output;
131
132
Lines 193-235 my $user = $input->remote_user; Link Here
193
# delete biblio if delbiblio has been set to 1 by the librarian
194
# delete biblio if delbiblio has been set to 1 by the librarian
194
my $bibitemnum;
195
my $bibitemnum;
195
if ( $orderinfo->{quantity} ne '0' ) {
196
if ( $orderinfo->{quantity} ne '0' ) {
197
198
    # Getting bookseller's name
199
    if ($$orderinfo{booksellerid}) {
200
        my $bookseller = GetBookSellerFromId($$orderinfo{booksellerid});
201
        $$orderinfo{supplierreference} = $bookseller->{name};
202
    }
203
204
    # Do we have to add order informations to the marc record?
205
    my ($ordertag, $ordersubtag) = GetMarcFromKohaField('aqorders.ordernumber', 'ACQ'); 
206
    my $record;
207
    my $existingbiblio; # Was the order made on an existing biblio?
208
    my $ordermodif;     # Is this an order modification?
209
196
    #TODO:check to see if biblio exists
210
    #TODO:check to see if biblio exists
197
    unless ( $$orderinfo{biblionumber} ) {
211
    unless ( $$orderinfo{biblionumber} ) {
198
        #if it doesnt create it
212
        #if it doesnt create it
199
        my $record = TransformKohaToMarc(
213
        my $tmprecord = TransformKohaToMarc(
200
            {
214
            {   "biblio.title"                => "$$orderinfo{title}",
201
                "biblio.title"                => "$$orderinfo{title}",
215
                "biblio.author"               => $$orderinfo{author}          ? $$orderinfo{author}          : "",
202
                "biblio.author"               => $$orderinfo{author}          ? $$orderinfo{author}        : "",
216
                "biblio.seriestitle"          => $$orderinfo{series}          ? $$orderinfo{series}          : "",
203
                "biblio.seriestitle"          => $$orderinfo{series}          ? $$orderinfo{series}        : "",
217
                "biblio.copyrightdate"        => $$orderinfo{publicationyear} ? $$orderinfo{publicationyear} : "",
204
                "biblioitems.isbn"            => $$orderinfo{isbn}            ? $$orderinfo{isbn}          : "",
218
                "biblioitems.isbn"            => $$orderinfo{isbn}            ? $$orderinfo{isbn}            : "",
205
                "biblioitems.ean"             => $$orderinfo{ean}             ? $$orderinfo{ean}           : "",
219
                "biblioitems.ean"             => $$orderinfo{ean}             ? $$orderinfo{ean}             : "",
206
                "biblioitems.publishercode"   => $$orderinfo{publishercode}   ? $$orderinfo{publishercode} : "",
220
                "biblioitems.publishercode"   => $$orderinfo{publishercode}   ? $$orderinfo{publishercode}   : "",
207
                "biblioitems.publicationyear" => $$orderinfo{publicationyear} ? $$orderinfo{publicationyear}: "",
221
                "biblioitems.publicationyear" => $$orderinfo{publicationyear} ? $$orderinfo{publicationyear} : "",
208
                "biblio.copyrightdate"        => $$orderinfo{publicationyear} ? $$orderinfo{publicationyear}: "",
222
                "biblioitems.itemtype"        => $$orderinfo{itemtype}        ? $$orderinfo{itemtype}        : "",
209
                "biblioitems.itemtype"        => $$orderinfo{itemtype} ? $$orderinfo{itemtype} : "",
223
                "biblioitems.editionstatement"=> $$orderinfo{editionstatement}? $$orderinfo{editionstatement}: "",
210
                "biblioitems.editionstatement"=> $$orderinfo{editionstatement} ? $$orderinfo{editionstatement} : "",
224
                "aqorders.branchcode"         => $$orderinfo{branchcode}      ? $$orderinfo{branchcode}      : "",
211
            });
225
                "aqorders.quantity"           => $$orderinfo{quantity}        ? $$orderinfo{quantity}        : "",
226
                "aqorders.listprice"          => $$orderinfo{listprice}       ? $$orderinfo{listprice}       : "",
227
                "aqorders.uncertainprice"     => $$orderinfo{uncertainprice}  ? $$orderinfo{uncertainprice}  : "",
228
                "aqorders.rrp"                => $$orderinfo{rrp}             ? $$orderinfo{rrp}             : "",
229
                "aqorders.ecost"              => $$orderinfo{ecost}           ? $$orderinfo{ecost}           : "",
230
                "aqorders.notes"              => $$orderinfo{notes}           ? $$orderinfo{notes}           : "",
231
                "aqorders.supplierreference"  => $$orderinfo{supplierreference}?$$orderinfo{supplierreference}:"",
232
                "aqorders.sort1"              => $$orderinfo{sort1}           ? $$orderinfo{sort1}           : "",
233
                "aqorders.sort2"              => $$orderinfo{sort2}           ? $$orderinfo{sort2}           : ""
234
            }
235
        );
212
236
213
        # create the record in catalogue, with framework ''
237
        # create the record in catalogue, with framework ''
214
        my ($biblionumber,$bibitemnum) = AddBiblio($record,'');
238
        my ( $biblionumber, $bibitemnum ) = AddBiblio( $tmprecord, '' );
239
215
        # change suggestion status if applicable
240
        # change suggestion status if applicable
216
        if ($$orderinfo{suggestionid}) {
241
        if ($$orderinfo{suggestionid}) {
217
            ModSuggestion( {suggestionid=>$$orderinfo{suggestionid}, STATUS=>'ORDERED', biblionumber=>$biblionumber} );
242
            ModSuggestion( {suggestionid=>$$orderinfo{suggestionid}, STATUS=>'ORDERED', biblionumber=>$biblionumber} );
218
        }
243
        }
219
		$orderinfo->{biblioitemnumber}=$bibitemnum;
244
        $orderinfo->{biblioitemnumber} = $bibitemnum;
220
		$orderinfo->{biblionumber}=$biblionumber;
245
        $orderinfo->{biblionumber}     = $biblionumber;
246
    } else {
247
	$existingbiblio = 1;
221
    }
248
    }
222
249
223
    # if we already have $ordernumber, then it's an ordermodif
250
    # Getting record
224
    if ($$orderinfo{ordernumber}) {
251
    $record = GetMarcBiblio($$orderinfo{biblionumber});
225
        ModOrder( $orderinfo);
252
226
    }
253
    
227
    else { # else, it's a new line
254
255
     # if we already have $ordernumber, then it's an ordermodif
256
    if ( $$orderinfo{ordernumber} ) {
257
        ModOrder($orderinfo);
258
	$ordermodif = 1;
259
	
260
    } else {    # else, it's a new line
228
        @$orderinfo{qw(basketno ordernumber )} = NewOrder($orderinfo);
261
        @$orderinfo{qw(basketno ordernumber )} = NewOrder($orderinfo);
262
263
        # We have to add the ordernumber in the designated subfield
264
	if ($ordertag && $record && !$ordermodif) {
265
266
            # If it's a new line, but we don't have any $ordertag field yet, 
267
            if (!$record->field($ordertag)) {
268
                # We add a new $ordertag field, with the ordernumber as subfield (other fields will be populated later)
269
                $record->insert_fields_ordered(new MARC::Field($ordertag, '', '', $ordersubtag => $$orderinfo{ordernumber})) if (!$record->field($ordertag));
270
            } else {
271
                # Else, it's a new line, and we already have a $ordertag field
272
                foreach ($record->field($ordertag)) {
273
                    # If there's a $ordertag field without ordernumber, we create it
274
                    if (!$_->subfield($ordersubtag)) {
275
                        $_->update($ordersubtag, $$orderinfo{ordernumber});
276
                    }
277
                }
278
            }
279
            ModBiblio($record, $$orderinfo{biblionumber}, 'ACQ');
280
	}
281
282
229
    }
283
    }
230
284
231
    # now, add items if applicable
285
    if ($record) {
232
    if (C4::Context->preference('AcqCreateItem') eq 'ordering') {
286
287
	# If we have to add order infos to the marc record
288
	if ($ordertag) {
289
290
	    # If the order was made on an existing biblio and it is not a modification, we add the field 
291
	    $record->insert_fields_ordered(new MARC::Field($ordertag, '', '', $ordersubtag => $$orderinfo{ordernumber})) if (!$ordermodif && $existingbiblio);
292
293
	    foreach ($record->field($ordertag)) {
294
		# Looking for the matching one
295
		if ($_->subfield($ordersubtag) eq $$orderinfo{ordernumber}) {
296
297
		    # Replacing or creating subfields
298
		    my ($t, $st);
299
		    for my $tablefield (qw/branchcode quantity listprice uncertainprice rrp ecost notes supplierreference sort1 sort2/) {
300
			($t, $st) = GetMarcFromKohaField("aqorders.$tablefield", 'ACQ');
301
			$_->update($st, $$orderinfo{$tablefield}) if ($$orderinfo{$tablefield} and $st);
302
		    }
303
		    ModBiblio($record, $$orderinfo{biblionumber}, 'ACQ');
304
		}
305
	    }
306
307
	}
308
309
    }
310
311
312
      # now, add items if applicable
313
    if ( C4::Context->preference('AcqCreateItem') eq 'ordering' ) {
233
314
234
        my @tags         = $input->param('tag');
315
        my @tags         = $input->param('tag');
235
        my @subfields    = $input->param('subfield');
316
        my @subfields    = $input->param('subfield');
(-)a/admin/koha2marclinks.pl (-6 / +2 lines)
Lines 157-168 q|select tagfield,tagsubfield,liblibrarian,kohafield from marc_subfield_structur Link Here
157
    $template->param(
157
    $template->param(
158
        loop      => \@loop_data,
158
        loop      => \@loop_data,
159
        tablename => CGI::scrolling_list(
159
        tablename => CGI::scrolling_list(
160
            -name   => 'tablename',
160
            -name     => 'tablename',
161
            -values => [
161
            -values   => [ 'biblio', 'biblioitems', 'items', 'aqorders'],
162
                'biblio',
163
                'biblioitems',
164
                'items',
165
            ],
166
            -default  => $tablename,
162
            -default  => $tablename,
167
            -size     => 1,
163
            -size     => 1,
168
            -multiple => 0
164
            -multiple => 0
(-)a/admin/marc_subfields_structure.pl (+6 lines)
Lines 123-128 if ( $op eq 'add_form' ) { Link Here
123
    while ( ( my $field ) = $sth2->fetchrow_array ) {
123
    while ( ( my $field ) = $sth2->fetchrow_array ) {
124
        push @kohafields, "items." . $field;
124
        push @kohafields, "items." . $field;
125
    }
125
    }
126
    $sth2 = $dbh->prepare("SHOW COLUMNS from aqorders");
127
    $sth2->execute;
128
    while ( ( my $field ) = $sth2->fetchrow_array ) {
129
        push @kohafields, "aqorders." . $field;
130
    }
131
126
132
127
    # build authorised value list
133
    # build authorised value list
128
    $sth2->finish;
134
    $sth2->finish;
(-)a/installer/data/mysql/kohastructure.sql (+1 lines)
Lines 2766-2771 CREATE TABLE `aqorders` ( Link Here
2766
  `uncertainprice` tinyint(1),
2766
  `uncertainprice` tinyint(1),
2767
  `claims_count` int(11) default 0,
2767
  `claims_count` int(11) default 0,
2768
  `claimed_date` date default NULL,
2768
  `claimed_date` date default NULL,
2769
  `branchcode` varchar(10) default NULL,
2769
  PRIMARY KEY  (`ordernumber`),
2770
  PRIMARY KEY  (`ordernumber`),
2770
  KEY `basketno` (`basketno`),
2771
  KEY `basketno` (`basketno`),
2771
  KEY `biblionumber` (`biblionumber`),
2772
  KEY `biblionumber` (`biblionumber`),
(-)a/installer/data/mysql/updatedatabase.pl (+19 lines)
Lines 5473-5479 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { Link Here
5473
    SetVersion($DBversion);
5473
    SetVersion($DBversion);
5474
}
5474
}
5475
5475
5476
5477
5478
$DBversion = "3.09.00.XXX";
5479
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5480
    $dbh->do("ALTER TABLE `aqorders` ADD `branchcode` VARCHAR( 10 ) NULL");
5481
    print "Upgrade to $DBversion done (Adding branchcode in aqorders)\n";
5482
    SetVersion($DBversion);
5483
}
5484
5485
5486
5487
5488
5489
5490
5491
5476
=head1 FUNCTIONS
5492
=head1 FUNCTIONS
5493
=======
5494
5495
=item DropAllForeignKeys($table)
5477
5496
5478
=head2 TableExists($table)
5497
=head2 TableExists($table)
5479
5498
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt (-1 / +18 lines)
Lines 329-334 $(document).ready(function() Link Here
329
        </ol>
329
        </ol>
330
    </fieldset>
330
    </fieldset>
331
331
332
    <!-- Acquisition details -->
333
    <fieldset class="rows">
334
        <legend>Acquisition details</legend>
335
	<ol>
336
	<li>
337
	    <label for="branchcode">Branch: </label>
338
	    <select name="branchcode" id="branchcode">
339
                    <option value=""></option>
340
                [% FOREACH branch_loo IN branchloop %]
341
		    <option value="[% branch_loo.value %]" [% IF (branch_loo.selected) %]selected="selected" [% END %]>[% branch_loo.branchname %]</option>
342
                [% END %]
343
	    </select>
344
	</li>
345
	</ol>
346
    </fieldset>	
347
348
349
332
    [% IF ( suggestionid ) %]
350
    [% IF ( suggestionid ) %]
333
        <fieldset class="rows">
351
        <fieldset class="rows">
334
        <legend>Suggestion</legend>
352
        <legend>Suggestion</legend>
335
- 

Return to bug 7294