use Modern::Perl;
use CGI qw ( -utf8 );
-use C4::Auth; # get_template_and_user
-use C4::Acquisition; # ModOrder
-use C4::Suggestions; # ModStatus
-use C4::Biblio; # AddBiblio TransformKohaToMarc
-use C4::Budgets;
-use C4::Items;
-use C4::Output;
-use Koha::Acquisition::Currencies;
+use JSON qw ( to_json encode_json );
+use C4::Auth qw( get_template_and_user );
+use C4::Acquisition qw( FillWithDefaultValues populate_order_with_prices ModOrder ModOrderUsers );
+use C4::Suggestions qw( ModSuggestion );
+use C4::Biblio qw(
+ AddBiblio
+ GetMarcFromKohaField
+ TransformHtmlToXml
+ TransformKohaToMarc
+);
+use C4::Budgets qw( GetBudget GetBudgetSpent GetBudgetOrdered );
+use C4::Items qw( AddItemFromMarc );
+use C4::Output qw( output_html_with_http_headers );
+use C4::Log qw( logaction );
+use Koha::Acquisition::Currencies qw( get_active );
use Koha::Acquisition::Orders;
+use Koha::Acquisition::Baskets;
use C4::Barcodes;
### "-------------------- addorder.pl ----------"
# FIXME: This needs to do actual error checking and possibly return user to the same form,
# not just blindly call C4 functions and print a redirect.
-my $input = new CGI;
+my $input = CGI->new;
my $use_ACQ_framework = $input->param('use_ACQ_framework');
# Check if order total amount exceed allowed budget
query => $input,
type => "intranet",
flagsrequired => { acquisition => 'order_manage' },
- debug => 1,
}
);
my $basketno = $$orderinfo{basketno};
my $basket = Koha::Acquisition::Baskets->find($basketno);
+# Order related fields we're going to log
+my @log_order_fields = (
+ 'quantity',
+ 'listprice',
+ 'unitprice',
+ 'unitprice_tax_excluded',
+ 'unitprice_tax_included',
+ 'rrp',
+ 'replacementprice',
+ 'rrp_tax_excluded',
+ 'rrp_tax_included',
+ 'ecost',
+ 'ecost_tax_excluded',
+ 'ecost_tax_included',
+ 'tax_rate_on_ordering'
+);
+
# create, modify or delete biblio
# create if $quantity>0 and $existing='no'
# modify if $quantity>0 and $existing='yes'
my $order = Koha::Acquisition::Order->new($orderinfo);
if ( $orderinfo->{ordernumber} ) {
ModOrder($orderinfo);
+ # Log the order modification
+ if (C4::Context->preference("AcquisitionLog")) {
+ my $infos = {};
+ foreach my $field(@log_order_fields) {
+ $infos->{$field} = $orderinfo->{$field};
+ }
+ logaction(
+ 'ACQUISITIONS',
+ 'MODIFY_ORDER',
+ $orderinfo->{ordernumber},
+ encode_json($infos)
+ );
+ }
}
else { # else, it's a new line
$order->store;
+ # Log the order creation
+ if (C4::Context->preference("AcquisitionLog")) {
+ my $infos = {};
+ foreach my $field(@log_order_fields) {
+ $infos->{$field} = $orderinfo->{$field};
+ }
+ logaction(
+ 'ACQUISITIONS',
+ 'CREATE_ORDER',
+ $order->ordernumber,
+ encode_json($infos)
+ );
+ }
}
my $order_users_ids = $input->param('users_ids');
my @order_users = split( /:/, $order_users_ids );
my @field_values = $input->multi_param('field_value');
my @serials = $input->multi_param('serial');
my @itemid = $input->multi_param('itemid');
- my @ind_tag = $input->multi_param('ind_tag');
- my @indicator = $input->multi_param('indicator');
#Rebuilding ALL the data for items into a hash
# parting them on $itemid.
push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i];
push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i];
push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i];
- push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i];
- push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i];
}
foreach my $item (keys %itemhash){
my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'},
$itemhash{$item}->{'subfields'},
$itemhash{$item}->{'field_values'},
- $itemhash{$item}->{'indicator'},
- $itemhash{$item}->{'ind_tag'},
+ undef,
+ undef,
'ITEM');
my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
my ($barcodefield,$barcodesubfield) = GetMarcFromKohaField('items.barcode');
}
+if (C4::Context->preference("AcquisitionLog") && $basketno) {
+ my $modified = Koha::Acquisition::Baskets->find( $basketno );
+ logaction(
+ 'ACQUISITIONS',
+ 'MODIFY_BASKET',
+ $basketno,
+ to_json($modified->unblessed)
+ );
+}
+
my $booksellerid=$$orderinfo{booksellerid};
if (my $import_batch_id=$$orderinfo{import_batch_id}) {
print $input->redirect("/cgi-bin/koha/acqui/addorderiso2709.pl?import_batch_id=$import_batch_id&basketno=$basketno&booksellerid=$booksellerid");