|
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 $b (@added_baskets) { |
709 |
for my $b (@added_baskets) { |
| 705 |
create_edi_order( |
710 |
create_edi_order( |
| 706 |
{ |
711 |
{ |
|
Lines 879-885
sub quote_item {
Link Here
|
| 879 |
|
884 |
|
| 880 |
if ( !$skip ) { |
885 |
if ( !$skip ) { |
| 881 |
$order_hash->{budget_id} = $budget->budget_id; |
886 |
$order_hash->{budget_id} = $budget->budget_id; |
| 882 |
my $first_order = $schema->resultset('Aqorder')->create($order_hash); |
887 |
my $first_order = Koha::Acquisition::Order->new($order_hash)->store; |
| 883 |
my $o = $first_order->ordernumber(); |
888 |
my $o = $first_order->ordernumber(); |
| 884 |
$logger->trace("Order created: $o"); |
889 |
$logger->trace("Order created: $o"); |
| 885 |
|
890 |
|
|
Lines 965-971
sub quote_item {
Link Here
|
| 965 |
|
970 |
|
| 966 |
$order_hash->{budget_id} = $budget->budget_id; |
971 |
$order_hash->{budget_id} = $budget->budget_id; |
| 967 |
|
972 |
|
| 968 |
my $new_order = $schema->resultset('Aqorder')->create($order_hash); |
973 |
my $new_order = Koha::Acquisition::Order->new($order_hash)->store; |
| 969 |
my $o = $new_order->ordernumber(); |
974 |
my $o = $new_order->ordernumber(); |
| 970 |
$logger->trace("Order created: $o"); |
975 |
$logger->trace("Order created: $o"); |
| 971 |
|
976 |
|
|
Lines 1049-1055
sub quote_item {
Link Here
|
| 1049 |
|
1054 |
|
| 1050 |
# increment quantity in orderline for EXISTING budget in $budgets |
1055 |
# increment quantity in orderline for EXISTING budget in $budgets |
| 1051 |
else { |
1056 |
else { |
| 1052 |
my $row = $schema->resultset('Aqorder')->find( { ordernumber => $ordernumber{ $budget->budget_id } } ); |
1057 |
my $row = Koha::Acquisition::Orders->find( { ordernumber => $ordernumber{ $budget->budget_id } } ); |
| 1053 |
if ($row) { |
1058 |
if ($row) { |
| 1054 |
my $qty = $row->quantity; |
1059 |
my $qty = $row->quantity; |
| 1055 |
$qty++; |
1060 |
$qty++; |
| 1056 |
- |
|
|