|
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 |
}; |