Bug 27421: Add tests
[koha-ffzg.git] / acqui / basketheader.pl
index acd3d67..e79daa7 100755 (executable)
@@ -48,23 +48,22 @@ If it exists, C<$basketno> is the basket we edit
 use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Context;
-use C4::Auth;
-use C4::Output;
-use C4::Acquisition qw/GetBasket NewBasket ModBasketHeader/;
-use C4::Contract qw/GetContracts/;
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_html_with_http_headers );
+use C4::Acquisition qw( GetBasket ModBasket ModBasketHeader NewBasket );
+use C4::Contract qw( GetContracts GetContract );
 
 use Koha::Acquisition::Booksellers;
-use Koha::AdditionalField;
+use Koha::Acquisition::Baskets;
+use Koha::AdditionalFields;
 
-my $input = new CGI;
+my $input = CGI->new;
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {
         template_name   => "acqui/basketheader.tt",
         query           => $input,
         type            => "intranet",
-        authnotrequired => 0,
        flagsrequired   => { acquisition => 'order_manage' },
-        debug           => 1,
     }
 );
 
@@ -75,7 +74,7 @@ my $basket;
 my $op = $input->param('op');
 my $is_an_edit = $input->param('is_an_edit');
 
-$template->param( available_additional_fields => scalar Koha::AdditionalField->all( { tablename => 'aqbasket' } ) );
+$template->param( available_additional_fields => Koha::AdditionalFields->search( { tablename => 'aqbasket' } ) );
 
 if ( $op eq 'add_form' ) {
     my @contractloop;
@@ -98,10 +97,9 @@ if ( $op eq 'add_form' ) {
         }
         $template->param( is_an_edit => 1);
         $template->param(
-            additional_field_values => Koha::AdditionalField->fetch_all_values( {
-                tablename => 'aqbasket',
-                record_id => $basketno,
-            } )->{$basketno},
+            additional_field_values => { map {
+                $_->field->id => $_->value
+            } Koha::Acquisition::Baskets->find($basketno)->additional_field_values->as_list },
         );
     } else {
     #new basket
@@ -118,7 +116,7 @@ if ( $op eq 'add_form' ) {
         $template->param(contractloop => \@contractloop,
                          basketcontractnumber => $basket->{'contractnumber'});
     }
-    my @booksellers = Koha::Acquisition::Booksellers->search(
+    my $booksellers = Koha::Acquisition::Booksellers->search(
                         undef,
                         { order_by => { -asc => 'name' } } );
 
@@ -129,8 +127,9 @@ if ( $op eq 'add_form' ) {
                     booksellername => $bookseller->name,
                     booksellerid => $booksellerid,
                     basketno => $basketno,
-                    booksellers => \@booksellers,
+                    booksellers => $booksellers,
                     is_standing => $basket->{is_standing},
+                    create_items => $basket->{create_items},
     );
 
     my $billingplace = $basket->{'billingplace'} || C4::Context->userenv->{"branch"};
@@ -157,7 +156,7 @@ if ( $op eq 'add_form' ) {
         );
     } else { #New basket
         $basketno = NewBasket(
-            $booksellerid,
+            scalar $input->param('basketbooksellerid'),
             $loggedinuser,
             scalar $input->param('basketname'),
             scalar $input->param('basketnote'),
@@ -170,11 +169,16 @@ if ( $op eq 'add_form' ) {
         );
     }
 
-    Koha::AdditionalField->update_fields_from_query( {
-        tablename => 'aqbasket',
-        record_id => $basketno,
-        query => $input,
-    } );
+    my @additional_fields;
+    my $basket_fields = Koha::AdditionalFields->search({ tablename => 'aqbasket' });
+    while ( my $field = $basket_fields->next ) {
+        my $value = $input->param('additional_field_' . $field->id);
+        push @additional_fields, {
+            id => $field->id,
+            value => $value,
+        };
+    }
+    Koha::Acquisition::Baskets->find($basketno)->set_additional_fields(\@additional_fields);
 
     print $input->redirect('basket.pl?basketno='.$basketno);
     exit 0;