use Koha::Edifact;
use Log::Log4perl;
use Text::Unidecode;
+use Koha::Plugins::Handler;
+use Koha::Acquisition::Baskets;
+use Koha::Acquisition::Booksellers;
our $VERSION = 1.1;
our @EXPORT_OK =
my $ean = $parameters->{ean};
my $branchcode = $parameters->{branchcode};
my $noingest = $parameters->{noingest};
- $ean ||= C4::Context->preference('EDIfactEAN');
if ( !$basketno || !$ean ) {
carp 'create_edi_order called with no basketno or ean';
return;
my $ean_obj =
$schema->resultset('EdifactEan')->search($ean_search_keys)->single;
+ # If no branch specific each can be found, look for a default ean
+ unless ($ean_obj) {
+ $ean_obj = $schema->resultset('EdifactEan')->search(
+ {
+ ean => $ean,
+ branchcode => undef,
+ }
+ )->single;
+ }
+
my $dbh = C4::Context->dbh;
my $arr_ref = $dbh->selectcol_arrayref(
'select id from edifact_messages where basketno = ? and message_type = \'QUOTE\'',
);
my $response = @{$arr_ref} ? 1 : 0;
- my $edifact = Koha::Edifact::Order->new(
- {
- orderlines => \@orderlines,
- vendor => $vendor,
- ean => $ean_obj,
- is_response => $response,
- }
- );
- if ( !$edifact ) {
- return;
+ my $edifact_order_params = {
+ orderlines => \@orderlines,
+ vendor => $vendor,
+ ean => $ean_obj,
+ is_response => $response,
+ };
+
+ my $edifact;
+ if ( $vendor->plugin ) {
+ $edifact = Koha::Plugins::Handler->run(
+ {
+ class => $vendor->plugin,
+ method => 'edifact_order',
+ params => {
+ params => $edifact_order_params,
+ }
+ }
+ );
+ }
+ else {
+ $edifact = Koha::Edifact::Order->new($edifact_order_params);
}
+ return unless $edifact;
+
my $order_file = $edifact->encode();
# ingest result
my $schema = Koha::Database->new()->schema();
my $logger = Log::Log4perl->get_logger();
my $vendor_acct;
- my $edi =
+
+ my $plugin = $invoice_message->edi_acct()->plugin();
+ my $edi_plugin;
+ if ( $plugin ) {
+ $edi_plugin = Koha::Plugins::Handler->run(
+ {
+ class => $plugin,
+ method => 'edifact',
+ params => {
+ invoice_message => $invoice_message,
+ transmission => $invoice_message->raw_msg,
+ }
+ }
+ );
+ }
+
+ my $edi = $edi_plugin ||
Koha::Edifact->new( { transmission => $invoice_message->raw_msg, } );
+
my $messages = $edi->message_array();
if ( @{$messages} ) {
my ( $item, $quote, $basketno ) = @_;
my $schema = Koha::Database->new()->schema();
-
- # create biblio record
my $logger = Log::Log4perl->get_logger();
- if ( !$basketno ) {
- $logger->error('Skipping order creation no basketno');
+
+ my $basket = Koha::Acquisition::Baskets->find( $basketno );
+ unless ( $basket ) {
+ $logger->error('Skipping order creation no valid basketno');
return;
}
$logger->trace( 'Checking db for matches with ', $item->item_number_id() );
}
$order_quantity = 1; # attempts to create an orderline for each gir
}
+ my $vendor = Koha::Acquisition::Booksellers->find( $quote->vendor_id );
# database definitions should set some of these defaults but dont
my $order_hash = {
quantityreceived => 0,
order_vendornote => q{},
order_internalnote => $order_note,
- rrp => $item->price,
+ replacementprice => $item->price,
+ rrp_tax_included => $item->price,
+ rrp_tax_excluded => $item->price,
ecost => _discounted_price( $quote->vendor->discount, $item->price ),
uncertainprice => 0,
sort1 => q{},
sort2 => q{},
+ currency => $vendor->listprice(),
};
# suppliers references
);
}
- if ( C4::Context->preference('AcqCreateItem') eq 'ordering' ) {
+ if ( $basket->effective_create_item eq 'ordering' ) {
my $new_item = {
notforloan => -1,
cn_sort => q{},