Lines 38-44
my $builder = t::lib::TestBuilder->new;
Link Here
|
38 |
my $logger = t::lib::Mocks::Logger->new(); |
38 |
my $logger = t::lib::Mocks::Logger->new(); |
39 |
|
39 |
|
40 |
subtest 'process_quote' => sub { |
40 |
subtest 'process_quote' => sub { |
41 |
plan tests => 5; |
41 |
plan tests => 6; |
42 |
|
42 |
|
43 |
$schema->storage->txn_begin; |
43 |
$schema->storage->txn_begin; |
44 |
|
44 |
|
Lines 223-229
subtest 'process_quote' => sub {
Link Here
|
223 |
$schema->storage->txn_rollback; |
223 |
$schema->storage->txn_rollback; |
224 |
}; |
224 |
}; |
225 |
|
225 |
|
226 |
# Test 2: Auto Orders Processing |
226 |
# Test 2: Multiple Message EAN Handling |
|
|
227 |
subtest 'multiple_message_ean_handling' => sub { |
228 |
plan tests => 4; |
229 |
|
230 |
$schema->storage->txn_begin; |
231 |
|
232 |
my $account = $builder->build( |
233 |
{ |
234 |
source => 'VendorEdiAccount', |
235 |
value => { |
236 |
description => 'multi-message test vendor', |
237 |
transport => 'FILE', |
238 |
plugin => '', |
239 |
san => $test_san, |
240 |
orders_enabled => 1, |
241 |
auto_orders => 1, |
242 |
} |
243 |
} |
244 |
); |
245 |
|
246 |
# Create EANs that match the QUOTES_BIG.CEQ file |
247 |
my $ean1 = $builder->build( |
248 |
{ |
249 |
source => 'EdifactEan', |
250 |
value => { |
251 |
description => 'library 1 ean', |
252 |
branchcode => undef, |
253 |
ean => '5013546098818' # First EAN from QUOTES_BIG.CEQ |
254 |
} |
255 |
} |
256 |
); |
257 |
my $ean2 = $builder->build( |
258 |
{ |
259 |
source => 'EdifactEan', |
260 |
value => { |
261 |
description => 'library 2 ean', |
262 |
branchcode => undef, |
263 |
ean => '5412345000013' # Second EAN from QUOTES_BIG.CEQ |
264 |
} |
265 |
} |
266 |
); |
267 |
|
268 |
# Setup fund |
269 |
my $fund = $builder->build( |
270 |
{ |
271 |
source => 'Aqbudget', |
272 |
value => { |
273 |
budget_code => 'REF', |
274 |
budget_period_id => $active_period->{budget_period_id} |
275 |
} |
276 |
} |
277 |
); |
278 |
|
279 |
# Use the existing multi-message test file |
280 |
my $filename = 'QUOTES_BIG.CEQ'; |
281 |
ok( -e $dirname . $filename, 'File QUOTES_BIG.CEQ found' ); |
282 |
|
283 |
my $trans = Koha::Edifact::Transport->new( $account->{id} ); |
284 |
$trans->working_directory($dirname); |
285 |
|
286 |
my $mhash = $trans->message_hash(); |
287 |
$mhash->{message_type} = 'QUOTE'; |
288 |
$trans->ingest( $mhash, $filename ); |
289 |
|
290 |
my $quote = $schema->resultset('EdifactMessage')->find( { filename => $filename } ); |
291 |
|
292 |
# Process quote and check results |
293 |
process_quote($quote); |
294 |
|
295 |
# QUOTES_BIG.CEQ contains 2 separate transport messages with different buyer EANs |
296 |
# Our fix should create 2 baskets and use the correct EAN for each auto-order |
297 |
my $baskets = Koha::Acquisition::Baskets->search( |
298 |
{ booksellerid => $account->{vendor_id} }, |
299 |
{ order_by => 'basketno' } |
300 |
); |
301 |
is( $baskets->count, 2, "Two baskets created for multi-transport quote file" ); |
302 |
|
303 |
# Check that EDI orders were created (since auto_orders = 1) |
304 |
my $edi_orders = $schema->resultset('EdifactMessage')->search( |
305 |
{ |
306 |
message_type => 'ORDERS', |
307 |
vendor_id => $account->{vendor_id} |
308 |
} |
309 |
); |
310 |
is( $edi_orders->count, 2, 'Two EDI orders created with auto_orders enabled' ); |
311 |
|
312 |
# Verify that both baskets were closed |
313 |
my $closed_baskets = $baskets->search( { closedate => { '!=' => undef } } ); |
314 |
is( $closed_baskets->count, 2, 'Both baskets closed by auto_orders' ); |
315 |
|
316 |
$schema->storage->txn_rollback; |
317 |
}; |
318 |
|
319 |
# Test 3: Auto Orders Processing |
227 |
subtest 'auto_orders_processing' => sub { |
320 |
subtest 'auto_orders_processing' => sub { |
228 |
plan tests => 7; |
321 |
plan tests => 7; |
229 |
|
322 |
|
230 |
- |
|
|