1 use Test::More tests => 7;
8 use Support::TestSetup;
12 use SL::DB::BackgroundJob;
14 use_ok 'SL::BackgroundJob::ConvertTimeRecordings';
16 use SL::Dev::ALL qw(:ALL);
18 Support::TestSetup::login();
21 foreach (qw(OrderItem Order DeliveryOrder TimeRecording Project Part Customer RecordLink)) {
22 "SL::DB::Manager::${_}"->delete_all(all => 1);
24 SL::DB::Manager::Employee->delete_all(where => [ '!login' => 'unittests' ]);
27 ########################################
29 $::myconfig{numberformat} = '1000.00';
30 my $old_locale = $::locale;
31 # set locale to en so we can match errors
32 $::locale = Locale->new('en');
37 my $part = new_service(partnumber => 'Serv1', unit => 'Std')->save;
38 my $project = create_project(projectnumber => 'p1', description => 'Project 1');
39 my $customer = new_customer()->save;
41 # sales order with globalproject_id
42 my $sales_order = create_sales_order(
44 customer => $customer,
45 globalproject => $project,
47 orderitems => [ create_order_item(part => $part, qty => 3, sellprice => 70), ]
51 push @time_recordings, new_time_recording(
52 start_time => DateTime->new(year => 2021, month => 4, day => 19, hour => 10, minute => 5),
53 end_time => DateTime->new(year => 2021, month => 4, day => 19, hour => 11, minute => 10),
54 customer => $customer,
58 push @time_recordings, new_time_recording(
59 start_time => DateTime->new(year => 2021, month => 4, day => 19, hour => 12, minute => 5),
60 end_time => DateTime->new(year => 2021, month => 4, day => 19, hour => 14, minute => 10),
61 customer => $customer,
66 # two time recordings, one order linked with project_id
69 project_id => $project->id,
70 from_date => '01.04.2021',
71 to_date => '30.04.2021',
73 my $db_obj = SL::DB::BackgroundJob->new();
74 $db_obj->set_data(%data);
75 my $job = SL::BackgroundJob::ConvertTimeRecordings->new;
76 my $ret = $job->run($db_obj);
78 is_deeply($job->{job_errors}, [], 'no errros');
79 like($ret, qr{^Number of delivery orders created: 1}, 'one delivery order created');
81 my $linked_dos = $sales_order->linked_records(to => 'DeliveryOrder');
82 is(scalar @$linked_dos, 1, 'one delivery order linked to order');
83 is($linked_dos->[0]->globalproject_id, $sales_order->globalproject_id, 'project ids match');
85 my $linked_items = $sales_order->items->[0]->linked_records(to => 'DeliveryOrderItem');
86 is(scalar @$linked_items, 1, 'one delivery order item linked to order item');
87 is($linked_items->[0]->qty*1, 3.16, 'qty in delivery order');
91 $::locale = $old_locale;
97 # set emacs to perl mode