Lines 44-49
use Koha::Plugins; # Adds plugin dirs to @INC
Link Here
|
44 |
use Koha::Plugins::Handler; |
44 |
use Koha::Plugins::Handler; |
45 |
use Koha::Acquisition::Baskets; |
45 |
use Koha::Acquisition::Baskets; |
46 |
use Koha::Acquisition::Booksellers; |
46 |
use Koha::Acquisition::Booksellers; |
|
|
47 |
use Koha::Acquisition::Orders; |
48 |
use Koha::EDI::Accounts; |
47 |
use Koha::Util::FrameworkPlugin qw( biblio_008 ); |
49 |
use Koha::Util::FrameworkPlugin qw( biblio_008 ); |
48 |
|
50 |
|
49 |
our $VERSION = 1.1; |
51 |
our $VERSION = 1.1; |
Lines 77-97
sub create_edi_order {
Link Here
|
77 |
|
79 |
|
78 |
my $schema = Koha::Database->new()->schema(); |
80 |
my $schema = Koha::Database->new()->schema(); |
79 |
|
81 |
|
80 |
my @orderlines = $schema->resultset('Aqorder')->search( |
82 |
my $orderlines = Koha::Acquisition::Orders->search( |
81 |
{ |
83 |
{ |
82 |
basketno => $basketno, |
84 |
basketno => $basketno, |
83 |
orderstatus => 'new', |
85 |
orderstatus => 'new', |
84 |
} |
86 |
} |
85 |
)->all; |
87 |
); |
86 |
|
88 |
|
87 |
if ( !@orderlines ) { |
89 |
if ( !$orderlines->count ) { |
88 |
$logger->warn("No orderlines for basket $basketno"); |
90 |
$logger->warn("No orderlines for basket $basketno"); |
89 |
return; |
91 |
return; |
90 |
} |
92 |
} |
91 |
|
93 |
|
92 |
my $vendor = $schema->resultset('VendorEdiAccount')->search( |
94 |
my $first_order = $orderlines->next; |
|
|
95 |
$orderlines->reset; # Reset iterator for later use |
96 |
|
97 |
my $edi_account = Koha::EDI::Accounts->search( |
93 |
{ |
98 |
{ |
94 |
vendor_id => $orderlines[0]->basketno->booksellerid->id, |
99 |
vendor_id => $first_order->basket->booksellerid, |
95 |
} |
100 |
} |
96 |
)->single; |
101 |
)->single; |
97 |
|
102 |
|
Lines 124-140
sub create_edi_order {
Link Here
|
124 |
my $response = @{$arr_ref} ? 1 : 0; |
129 |
my $response = @{$arr_ref} ? 1 : 0; |
125 |
|
130 |
|
126 |
my $edifact_order_params = { |
131 |
my $edifact_order_params = { |
127 |
orderlines => \@orderlines, |
132 |
orderlines => [ $orderlines->_resultset->all ], |
128 |
vendor => $vendor, |
133 |
vendor => $edi_account, |
129 |
ean => $ean_obj, |
134 |
ean => $ean_obj, |
130 |
is_response => $response, |
135 |
is_response => $response, |
131 |
}; |
136 |
}; |
132 |
|
137 |
|
133 |
my $edifact; |
138 |
my $edifact; |
134 |
if ( $vendor->plugin ) { |
139 |
if ( $edi_account->plugin ) { |
135 |
$edifact = Koha::Plugins::Handler->run( |
140 |
$edifact = Koha::Plugins::Handler->run( |
136 |
{ |
141 |
{ |
137 |
class => $vendor->plugin, |
142 |
class => $edi_account->plugin, |
138 |
method => 'edifact_order', |
143 |
method => 'edifact_order', |
139 |
params => { |
144 |
params => { |
140 |
params => $edifact_order_params, |
145 |
params => $edifact_order_params, |
Lines 158-169
sub create_edi_order {
Link Here
|
158 |
my $order = { |
163 |
my $order = { |
159 |
message_type => 'ORDERS', |
164 |
message_type => 'ORDERS', |
160 |
raw_msg => $m, |
165 |
raw_msg => $m, |
161 |
vendor_id => $vendor->vendor_id, |
166 |
vendor_id => $edi_account->vendor_id, |
162 |
status => 'Pending', |
167 |
status => 'Pending', |
163 |
basketno => $basketno, |
168 |
basketno => $basketno, |
164 |
filename => $edifact->filename(), |
169 |
filename => $edifact->filename(), |
165 |
transfer_date => $edifact->msg_date_string(), |
170 |
transfer_date => $edifact->msg_date_string(), |
166 |
edi_acct => $vendor->id, |
171 |
edi_acct => $edi_account->id, |
167 |
|
172 |
|
168 |
}; |
173 |
}; |
169 |
$schema->resultset('EdifactMessage')->create($order); |
174 |
$schema->resultset('EdifactMessage')->create($order); |
Lines 287-293
sub process_invoice {
Link Here
|
287 |
|
292 |
|
288 |
my $vendor_ean = $msg->supplier_ean; |
293 |
my $vendor_ean = $msg->supplier_ean; |
289 |
if ( !defined $vendor_acct || $vendor_ean ne $vendor_acct->san ) { |
294 |
if ( !defined $vendor_acct || $vendor_ean ne $vendor_acct->san ) { |
290 |
$vendor_acct = $schema->resultset('VendorEdiAccount')->search( |
295 |
$vendor_acct = Koha::EDI::Accounts->search( |
291 |
{ |
296 |
{ |
292 |
san => $vendor_ean, |
297 |
san => $vendor_ean, |
293 |
} |
298 |
} |
Lines 335-341
sub process_invoice {
Link Here
|
335 |
} |
340 |
} |
336 |
|
341 |
|
337 |
# ModReceiveOrder does not validate that $ordernumber exists validate here |
342 |
# ModReceiveOrder does not validate that $ordernumber exists validate here |
338 |
my $order = $schema->resultset('Aqorder')->find($ordernumber); |
343 |
my $order = Koha::Acquisition::Orders->find($ordernumber); |
339 |
if ( !$order ) { |
344 |
if ( !$order ) { |
340 |
$invoice_message->add_to_edifact_errors( |
345 |
$invoice_message->add_to_edifact_errors( |
341 |
{ |
346 |
{ |
Lines 350-356
sub process_invoice {
Link Here
|
350 |
next; |
355 |
next; |
351 |
} |
356 |
} |
352 |
|
357 |
|
353 |
my $bib = $order->biblionumber; |
358 |
my $bib = $order->biblio; |
354 |
if ( !$bib ) { |
359 |
if ( !$bib ) { |
355 |
$invoice_message->add_to_edifact_errors( |
360 |
$invoice_message->add_to_edifact_errors( |
356 |
{ |
361 |
{ |
Lines 404-410
sub process_invoice {
Link Here
|
404 |
$order->orderstatus('partial'); |
409 |
$order->orderstatus('partial'); |
405 |
$order->quantity( $ordered - $quantity ); |
410 |
$order->quantity( $ordered - $quantity ); |
406 |
$order->update; |
411 |
$order->update; |
407 |
my $received_order = $order->copy( |
412 |
my $received_order = $order->_result->copy( |
408 |
{ |
413 |
{ |
409 |
ordernumber => undef, |
414 |
ordernumber => undef, |
410 |
quantity => $quantity, |
415 |
quantity => $quantity, |
Lines 695-706
sub process_quote {
Link Here
|
695 |
$quote_message->status($status); |
700 |
$quote_message->status($status); |
696 |
$quote_message->update; # status and basketno link |
701 |
$quote_message->update; # status and basketno link |
697 |
# Do we automatically generate orders for this vendor |
702 |
# Do we automatically generate orders for this vendor |
698 |
my $v = $schema->resultset('VendorEdiAccount')->search( |
703 |
my $edi_account = Koha::EDI::Accounts->search( |
699 |
{ |
704 |
{ |
700 |
vendor_id => $quote_message->vendor_id, |
705 |
vendor_id => $quote_message->vendor_id, |
701 |
} |
706 |
} |
702 |
)->single; |
707 |
)->single; |
703 |
if ( $v->auto_orders ) { |
708 |
if ( $edi_account->auto_orders ) { |
704 |
for my $i ( 0 .. $#added_baskets ) { |
709 |
for my $i ( 0 .. $#added_baskets ) { |
705 |
my $basketno = $added_baskets[$i]; |
710 |
my $basketno = $added_baskets[$i]; |
706 |
|
711 |
|
Lines 884-890
sub quote_item {
Link Here
|
884 |
|
889 |
|
885 |
if ( !$skip ) { |
890 |
if ( !$skip ) { |
886 |
$order_hash->{budget_id} = $budget->budget_id; |
891 |
$order_hash->{budget_id} = $budget->budget_id; |
887 |
my $first_order = $schema->resultset('Aqorder')->create($order_hash); |
892 |
my $first_order = Koha::Acquisition::Order->new($order_hash)->store; |
888 |
my $o = $first_order->ordernumber(); |
893 |
my $o = $first_order->ordernumber(); |
889 |
$logger->trace("Order created: $o"); |
894 |
$logger->trace("Order created: $o"); |
890 |
|
895 |
|
Lines 970-976
sub quote_item {
Link Here
|
970 |
|
975 |
|
971 |
$order_hash->{budget_id} = $budget->budget_id; |
976 |
$order_hash->{budget_id} = $budget->budget_id; |
972 |
|
977 |
|
973 |
my $new_order = $schema->resultset('Aqorder')->create($order_hash); |
978 |
my $new_order = Koha::Acquisition::Order->new($order_hash)->store; |
974 |
my $o = $new_order->ordernumber(); |
979 |
my $o = $new_order->ordernumber(); |
975 |
$logger->trace("Order created: $o"); |
980 |
$logger->trace("Order created: $o"); |
976 |
|
981 |
|
Lines 1054-1060
sub quote_item {
Link Here
|
1054 |
|
1059 |
|
1055 |
# increment quantity in orderline for EXISTING budget in $budgets |
1060 |
# increment quantity in orderline for EXISTING budget in $budgets |
1056 |
else { |
1061 |
else { |
1057 |
my $row = $schema->resultset('Aqorder')->find( { ordernumber => $ordernumber{ $budget->budget_id } } ); |
1062 |
my $row = Koha::Acquisition::Orders->find( { ordernumber => $ordernumber{ $budget->budget_id } } ); |
1058 |
if ($row) { |
1063 |
if ($row) { |
1059 |
my $qty = $row->quantity; |
1064 |
my $qty = $row->quantity; |
1060 |
$qty++; |
1065 |
$qty++; |
1061 |
- |
|
|