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