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 32-38
my $schema = Koha::Database->new->schema;
Link Here
|
32 |
my $builder = t::lib::TestBuilder->new; |
32 |
my $builder = t::lib::TestBuilder->new; |
33 |
|
33 |
|
34 |
subtest 'beggining_of_message tests' => sub { |
34 |
subtest 'beggining_of_message tests' => sub { |
35 |
plan tests => 2; |
35 |
plan tests => 3; |
36 |
|
36 |
|
37 |
$schema->storage->txn_begin; |
37 |
$schema->storage->txn_begin; |
38 |
|
38 |
|
Lines 54-59
subtest 'beggining_of_message tests' => sub {
Link Here
|
54 |
$bgm = Koha::Edifact::Order::beginning_of_message( $basketno, $dbic_edi_vendor->standard, 1 ); |
54 |
$bgm = Koha::Edifact::Order::beginning_of_message( $basketno, $dbic_edi_vendor->standard, 1 ); |
55 |
is( $bgm, qq{BGM+22V+$basketno+9'}, "When vendor is set to BiC standard we use 22V in BGM segment" ); |
55 |
is( $bgm, qq{BGM+22V+$basketno+9'}, "When vendor is set to BiC standard we use 22V in BGM segment" ); |
56 |
|
56 |
|
|
|
57 |
# Test BGM with purchase order number |
58 |
my $purchase_order_number = 'PO123456789'; |
59 |
$bgm = |
60 |
Koha::Edifact::Order::beginning_of_message( $basketno, $dbic_edi_vendor->standard, 1, $purchase_order_number ); |
61 |
is( |
62 |
$bgm, qq{BGM+22V+$purchase_order_number+9'}, |
63 |
"When purchase order number provided, it's used in BGM segment instead of basketno" |
64 |
); |
65 |
|
57 |
$schema->storage->txn_rollback; |
66 |
$schema->storage->txn_rollback; |
58 |
}; |
67 |
}; |
59 |
|
68 |
|
Lines 264-273
subtest 'filename() tests' => sub {
Link Here
|
264 |
|
273 |
|
265 |
my @orders = $schema->resultset('Aqorder')->search( { basketno => $order->basket->basketno } )->all; |
274 |
my @orders = $schema->resultset('Aqorder')->search( { basketno => $order->basket->basketno } )->all; |
266 |
|
275 |
|
|
|
276 |
my $dbic_vendor = $schema->resultset('VendorEdiAccount')->find( $vendor->{id} ); |
277 |
|
267 |
my $edi_order = Koha::Edifact::Order->new( |
278 |
my $edi_order = Koha::Edifact::Order->new( |
268 |
{ |
279 |
{ |
269 |
orderlines => \@orders, |
280 |
orderlines => \@orders, |
270 |
vendor => $vendor, |
281 |
vendor => $dbic_vendor, |
271 |
ean => $ean |
282 |
ean => $ean |
272 |
} |
283 |
} |
273 |
); |
284 |
); |
Lines 280-282
subtest 'filename() tests' => sub {
Link Here
|
280 |
|
291 |
|
281 |
$schema->storage->txn_rollback; |
292 |
$schema->storage->txn_rollback; |
282 |
}; |
293 |
}; |
283 |
- |
294 |
|
|
|
295 |
subtest 'RFF+ON purchase order number generation' => sub { |
296 |
plan tests => 3; |
297 |
|
298 |
$schema->storage->txn_begin; |
299 |
|
300 |
# Create vendor with po_is_basketname set to true |
301 |
my $vendor_po = $builder->build( |
302 |
{ |
303 |
source => 'VendorEdiAccount', |
304 |
value => { |
305 |
description => 'Test vendor PO mode', |
306 |
po_is_basketname => 1, |
307 |
standard => 'EUR', |
308 |
} |
309 |
} |
310 |
); |
311 |
|
312 |
# Create vendor with po_is_basketname set to false (default) |
313 |
my $vendor_filename = $builder->build( |
314 |
{ |
315 |
source => 'VendorEdiAccount', |
316 |
value => { |
317 |
description => 'Test vendor filename mode', |
318 |
po_is_basketname => 0, |
319 |
standard => 'EUR', |
320 |
} |
321 |
} |
322 |
); |
323 |
|
324 |
# Create baskets with different naming schemes |
325 |
my $basket_po = $builder->build( |
326 |
{ |
327 |
source => 'Aqbasket', |
328 |
value => { |
329 |
basketname => 'PO123456789', # Purchase order number |
330 |
booksellerid => $vendor_po->{vendor_id}, |
331 |
} |
332 |
} |
333 |
); |
334 |
|
335 |
my $basket_filename = $builder->build( |
336 |
{ |
337 |
source => 'Aqbasket', |
338 |
value => { |
339 |
basketname => 'quote_file.ceq', # Filename |
340 |
booksellerid => $vendor_filename->{vendor_id}, |
341 |
} |
342 |
} |
343 |
); |
344 |
|
345 |
# Create biblio records for the orders |
346 |
my $biblio_po = $builder->build_sample_biblio(); |
347 |
my $biblio_filename = $builder->build_sample_biblio(); |
348 |
|
349 |
# Create orders for the baskets |
350 |
my $order_po = $builder->build( |
351 |
{ |
352 |
source => 'Aqorder', |
353 |
value => { |
354 |
basketno => $basket_po->{basketno}, |
355 |
biblionumber => $biblio_po->biblionumber, |
356 |
orderstatus => 'new', |
357 |
quantity => 1, |
358 |
listprice => '10.00', |
359 |
} |
360 |
} |
361 |
); |
362 |
|
363 |
my $order_filename = $builder->build( |
364 |
{ |
365 |
source => 'Aqorder', |
366 |
value => { |
367 |
basketno => $basket_filename->{basketno}, |
368 |
biblionumber => $biblio_filename->biblionumber, |
369 |
orderstatus => 'new', |
370 |
quantity => 1, |
371 |
listprice => '10.00', |
372 |
} |
373 |
} |
374 |
); |
375 |
|
376 |
# Create EAN object |
377 |
my $ean = $builder->build( |
378 |
{ |
379 |
source => 'EdifactEan', |
380 |
value => { ean => '1234567890123' } |
381 |
} |
382 |
); |
383 |
|
384 |
# Get database objects |
385 |
my $dbic_vendor_po = $schema->resultset('VendorEdiAccount')->find( $vendor_po->{id} ); |
386 |
my $dbic_vendor_filename = $schema->resultset('VendorEdiAccount')->find( $vendor_filename->{id} ); |
387 |
my $dbic_ean = $schema->resultset('EdifactEan')->find( $ean->{ee_id} ); |
388 |
my @orderlines_po = $schema->resultset('Aqorder')->search( { basketno => $basket_po->{basketno} } ); |
389 |
my @orderlines_filename = $schema->resultset('Aqorder')->search( { basketno => $basket_filename->{basketno} } ); |
390 |
|
391 |
# Test order generation with purchase order number |
392 |
my $order_obj_po = Koha::Edifact::Order->new( |
393 |
{ |
394 |
orderlines => \@orderlines_po, |
395 |
vendor => $dbic_vendor_po, |
396 |
ean => $dbic_ean, |
397 |
} |
398 |
); |
399 |
|
400 |
# Test order generation with filename |
401 |
my $order_obj_filename = Koha::Edifact::Order->new( |
402 |
{ |
403 |
orderlines => \@orderlines_filename, |
404 |
vendor => $dbic_vendor_filename, |
405 |
ean => $dbic_ean, |
406 |
} |
407 |
); |
408 |
|
409 |
# Test that purchase order number is extracted correctly |
410 |
is( |
411 |
$order_obj_po->purchase_order_number, 'PO123456789', |
412 |
'Purchase order number extracted from basket name when vendor configured for PO mode' |
413 |
); |
414 |
|
415 |
# Test that no purchase order number is extracted when vendor uses filename mode |
416 |
is( |
417 |
$order_obj_filename->purchase_order_number, undef, |
418 |
'No purchase order number when vendor configured for filename mode' |
419 |
); |
420 |
|
421 |
# Test that purchase order number is included in BGM segment when purchase order number present |
422 |
my $transmission = $order_obj_po->encode(); |
423 |
like( |
424 |
$transmission, qr/BGM\+220\+PO123456789\+9'/, |
425 |
'Purchase order number included in BGM segment when purchase order number present' |
426 |
); |
427 |
|
428 |
$schema->storage->txn_rollback; |
429 |
}; |