Lines 20-26
Link Here
|
20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
21 |
|
21 |
|
22 |
use Test::NoWarnings; |
22 |
use Test::NoWarnings; |
23 |
use Test::More tests => 4; |
23 |
use Test::More tests => 5; |
24 |
|
24 |
|
25 |
use Koha::Edifact::Order; |
25 |
use Koha::Edifact::Order; |
26 |
|
26 |
|
Lines 264-273
subtest 'filename() tests' => sub {
Link Here
|
264 |
|
264 |
|
265 |
my @orders = $schema->resultset('Aqorder')->search( { basketno => $order->basket->basketno } )->all; |
265 |
my @orders = $schema->resultset('Aqorder')->search( { basketno => $order->basket->basketno } )->all; |
266 |
|
266 |
|
|
|
267 |
my $dbic_vendor = $schema->resultset('VendorEdiAccount')->find( $vendor->{id} ); |
268 |
|
267 |
my $edi_order = Koha::Edifact::Order->new( |
269 |
my $edi_order = Koha::Edifact::Order->new( |
268 |
{ |
270 |
{ |
269 |
orderlines => \@orders, |
271 |
orderlines => \@orders, |
270 |
vendor => $vendor, |
272 |
vendor => $dbic_vendor, |
271 |
ean => $ean |
273 |
ean => $ean |
272 |
} |
274 |
} |
273 |
); |
275 |
); |
Lines 280-282
subtest 'filename() tests' => sub {
Link Here
|
280 |
|
282 |
|
281 |
$schema->storage->txn_rollback; |
283 |
$schema->storage->txn_rollback; |
282 |
}; |
284 |
}; |
283 |
- |
285 |
|
|
|
286 |
subtest 'RFF+ON purchase order number generation' => sub { |
287 |
plan tests => 3; |
288 |
|
289 |
$schema->storage->txn_begin; |
290 |
|
291 |
# Create vendor with basket_name_source set to purchase_order_number |
292 |
my $vendor_po = $builder->build( |
293 |
{ |
294 |
source => 'VendorEdiAccount', |
295 |
value => { |
296 |
description => 'Test vendor PO mode', |
297 |
basket_name_source => 'purchase_order_number', |
298 |
standard => 'EUR', |
299 |
} |
300 |
} |
301 |
); |
302 |
|
303 |
# Create vendor with basket_name_source set to filename (default) |
304 |
my $vendor_filename = $builder->build( |
305 |
{ |
306 |
source => 'VendorEdiAccount', |
307 |
value => { |
308 |
description => 'Test vendor filename mode', |
309 |
basket_name_source => 'filename', |
310 |
standard => 'EUR', |
311 |
} |
312 |
} |
313 |
); |
314 |
|
315 |
# Create baskets with different naming schemes |
316 |
my $basket_po = $builder->build( |
317 |
{ |
318 |
source => 'Aqbasket', |
319 |
value => { |
320 |
basketname => 'PO123456789', # Purchase order number |
321 |
booksellerid => $vendor_po->{vendor_id}, |
322 |
} |
323 |
} |
324 |
); |
325 |
|
326 |
my $basket_filename = $builder->build( |
327 |
{ |
328 |
source => 'Aqbasket', |
329 |
value => { |
330 |
basketname => 'quote_file.ceq', # Filename |
331 |
booksellerid => $vendor_filename->{vendor_id}, |
332 |
} |
333 |
} |
334 |
); |
335 |
|
336 |
# Create biblio records for the orders |
337 |
my $biblio_po = $builder->build_sample_biblio(); |
338 |
my $biblio_filename = $builder->build_sample_biblio(); |
339 |
|
340 |
# Create orders for the baskets |
341 |
my $order_po = $builder->build( |
342 |
{ |
343 |
source => 'Aqorder', |
344 |
value => { |
345 |
basketno => $basket_po->{basketno}, |
346 |
biblionumber => $biblio_po->biblionumber, |
347 |
orderstatus => 'new', |
348 |
quantity => 1, |
349 |
listprice => '10.00', |
350 |
} |
351 |
} |
352 |
); |
353 |
|
354 |
my $order_filename = $builder->build( |
355 |
{ |
356 |
source => 'Aqorder', |
357 |
value => { |
358 |
basketno => $basket_filename->{basketno}, |
359 |
biblionumber => $biblio_filename->biblionumber, |
360 |
orderstatus => 'new', |
361 |
quantity => 1, |
362 |
listprice => '10.00', |
363 |
} |
364 |
} |
365 |
); |
366 |
|
367 |
# Create EAN object |
368 |
my $ean = $builder->build( |
369 |
{ |
370 |
source => 'EdifactEan', |
371 |
value => { ean => '1234567890123' } |
372 |
} |
373 |
); |
374 |
|
375 |
# Get database objects |
376 |
my $dbic_vendor_po = $schema->resultset('VendorEdiAccount')->find( $vendor_po->{id} ); |
377 |
my $dbic_vendor_filename = $schema->resultset('VendorEdiAccount')->find( $vendor_filename->{id} ); |
378 |
my $dbic_ean = $schema->resultset('EdifactEan')->find( $ean->{ee_id} ); |
379 |
my @orderlines_po = $schema->resultset('Aqorder')->search( { basketno => $basket_po->{basketno} } ); |
380 |
my @orderlines_filename = $schema->resultset('Aqorder')->search( { basketno => $basket_filename->{basketno} } ); |
381 |
|
382 |
# Test order generation with purchase order number |
383 |
my $order_obj_po = Koha::Edifact::Order->new( |
384 |
{ |
385 |
orderlines => \@orderlines_po, |
386 |
vendor => $dbic_vendor_po, |
387 |
ean => $dbic_ean, |
388 |
} |
389 |
); |
390 |
|
391 |
# Test order generation with filename |
392 |
my $order_obj_filename = Koha::Edifact::Order->new( |
393 |
{ |
394 |
orderlines => \@orderlines_filename, |
395 |
vendor => $dbic_vendor_filename, |
396 |
ean => $dbic_ean, |
397 |
} |
398 |
); |
399 |
|
400 |
# Test that purchase order number is extracted correctly |
401 |
is( |
402 |
$order_obj_po->{purchase_order_number}, 'PO123456789', |
403 |
'Purchase order number extracted from basket name when vendor configured for PO mode' |
404 |
); |
405 |
|
406 |
# Test that no purchase order number is extracted when vendor uses filename mode |
407 |
is( |
408 |
$order_obj_filename->{purchase_order_number}, undef, |
409 |
'No purchase order number when vendor configured for filename mode' |
410 |
); |
411 |
|
412 |
# Test that RFF+ON segment is included in order header when purchase order number present |
413 |
my $transmission = $order_obj_po->encode(); |
414 |
like( |
415 |
$transmission, qr/RFF\+ON:PO123456789'/, |
416 |
'RFF+ON segment included in ORDER message when purchase order number present' |
417 |
); |
418 |
|
419 |
$schema->storage->txn_rollback; |
420 |
}; |