@@ -, +, @@ did not change. order. is changed. > prove t/db_dependent/Acquisition.t --- C4/Acquisition.pm | 5 +- C4/SQLHelper.pm | 2 +- acqui/finishreceive.pl | 3 +- acqui/orderreceive.pl | 35 +++++++++- .../prog/en/modules/acqui/orderreceive.tt | 14 +++- t/db_dependent/Acquisition.t | 70 +++++++++++++++++++- 6 files changed, 121 insertions(+), 8 deletions(-) --- a/C4/Acquisition.pm +++ a/C4/Acquisition.pm @@ -1348,6 +1348,7 @@ sub ModReceiveOrder { $sth->finish; delete $order->{'ordernumber'}; + $order->{'budget_id'} = ( $budget_id || $order->{'budget_id'} ); $order->{'quantity'} = $quantrec; $order->{'quantityreceived'} = $quantrec; $order->{'datereceived'} = $datereceived; @@ -1366,9 +1367,9 @@ sub ModReceiveOrder { } else { $sth=$dbh->prepare("update aqorders set quantityreceived=?,datereceived=?,invoiceid=?, - unitprice=?,rrp=?,ecost=? + unitprice=?,rrp=?,ecost=?,budget_id=? where biblionumber=? and ordernumber=?"); - $sth->execute($quantrec,$datereceived,$invoiceid,$cost,$rrp,$ecost,$biblionumber,$ordernumber); + $sth->execute($quantrec,$datereceived,$invoiceid,$cost,$rrp,$ecost,$budget_id,$biblionumber,$ordernumber); $sth->finish; } return ($datereceived, $new_ordernumber); --- a/C4/SQLHelper.pm +++ a/C4/SQLHelper.pm @@ -406,7 +406,7 @@ sub _filter_hash{ ## supposed to be a hash of simple values, hashes of arrays could be implemented $filter_input->{$field}=format_date_in_iso($filter_input->{$field}) if $columns->{$field}{Type}=~/date/ && - $filter_input->{$field} !~C4::Dates->regexp("iso"); + ($filter_input->{$field} && $filter_input->{$field} !~C4::Dates->regexp("iso")); my ($tmpkeys, $localvalues)=_Process_Operands($filter_input->{$field},"$tablename.$field",$searchtype,$columns); if (@$tmpkeys){ push @values, @$localvalues; --- a/acqui/finishreceive.pl +++ a/acqui/finishreceive.pl @@ -54,6 +54,7 @@ my $cnt = 0; my $ecost = $input->param('ecost'); my $rrp = $input->param('rrp'); my $note = $input->param("note"); +my $bookfund = $input->param("bookfund"); my $order = GetOrder($ordernumber); #need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME @@ -93,7 +94,7 @@ if ($quantityrec > $origquantityrec ) { $order->{ecost}, $invoiceid, $order->{rrp}, - undef, + $bookfund, $datereceived, \@received_items, ); --- a/acqui/orderreceive.pl +++ a/acqui/orderreceive.pl @@ -69,7 +69,7 @@ use C4::Auth; use C4::Output; use C4::Dates qw/format_date/; use C4::Bookseller qw/ GetBookSellerFromId /; -use C4::Budgets qw/ GetBudget /; +use C4::Budgets qw/ GetBudget GetBudgetHierarchy CanUserUseBudget GetBudgetPeriods /; use C4::Members; use C4::Branch; # GetBranches use C4::Items; @@ -93,7 +93,7 @@ my $bookseller = GetBookSellerFromId($booksellerid); my $results; $results = SearchOrder($ordernumber) if $ordernumber; -my ( $template, $loggedinuser, $cookie ) = get_template_and_user( +my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user( { template_name => "acqui/orderreceive.tmpl", query => $input, @@ -226,6 +226,37 @@ $template->param( firstnamesuggestedby => $suggestion->{firstnamesuggestedby}, ); +my $borrower = GetMember( 'borrowernumber' => $loggedinuser ); +my @budget_loop; +my $periods = GetBudgetPeriods( { 'budget_period_active' => 1 } ); +foreach my $period (@$periods) { + my $budget_hierarchy = GetBudgetHierarchy( $period->{'budget_period_id'} ); + my @funds; + foreach my $r ( @{$budget_hierarchy} ) { + next unless ( CanUserUseBudget( $borrower, $r, $userflags ) ); + if ( !defined $r->{budget_amount} || $r->{budget_amount} == 0 ) { + next; + } + push @funds, + { + b_id => $r->{budget_id}, + b_txt => $r->{budget_name}, + b_sel => ( $r->{budget_id} == $order->{budget_id} ) ? 1 : 0, + }; + } + + @funds = sort { uc( $a->{b_txt} ) cmp uc( $b->{b_txt} ) } @funds; + + push @budget_loop, + { + 'id' => $period->{'budget_period_id'}, + 'description' => $period->{'budget_period_description'}, + 'funds' => \@funds + }; +} + +$template->{'VARS'}->{'budget_loop'} = \@budget_loop; + # regardless of the content of $unitprice e.g 0 or '' or any string will return in these cases 0.00 # and the 'IF' in the .tt will show 0.00 and not 'ecost' (see BZ 7129) # So if $unitprice == 0 we don't create unitprice --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt @@ -274,7 +274,19 @@ Accounting details
  1. [% datereceived %]
  2. -
  3. [% bookfund %]
  4. +
  5. (Current: [% bookfund %])
  6. [% IF ( memberfirstname and membersurname ) %][% IF ( memberfirstname ) %][% memberfirstname %][% END %] [% membersurname %][% ELSE %]No name[% END %]
  7. [% IF ( edit and not subscriptionid) %] --- a/t/db_dependent/Acquisition.t +++ a/t/db_dependent/Acquisition.t @@ -8,7 +8,7 @@ use POSIX qw(strftime); use C4::Bookseller qw( GetBookSellerFromId ); -use Test::More tests => 41; +use Test::More tests => 56; BEGIN { use_ok('C4::Acquisition'); @@ -127,4 +127,72 @@ for my $field ( @expectedfields ) { ok( exists( $firstorder->{ $field } ), "This order has a $field field" ); } +my $invoiceid = AddInvoice(invoicenumber => 'invoice', booksellerid => 1, unknown => "unknown"); + +my ($datereceived, $new_ordernumber) = ModReceiveOrder( + $biblionumber2, + $ordernumber2, + 2, + undef, + 12, + 12, + $invoiceid, + 42, + ); +my $order2 = GetOrder( $ordernumber2 ); +is($order2->{'quantityreceived'}, 0, 'Splitting up order did not receive any on original order'); +is($order2->{'quantity'}, 40, '40 items on original order'); +is($order2->{'budget_id'}, $budgetid, 'Budget on original order is unchanged'); + +$neworder = GetOrder( $new_ordernumber ); +is($neworder->{'quantity'}, 2, '2 items on new order'); +is($neworder->{'quantityreceived'}, 2, 'Splitting up order received items on new order'); +is($neworder->{'budget_id'}, $budgetid, 'Budget on new order is unchanged'); + +my $budgetid2 = C4::Budgets::AddBudget( + { + budget_code => "budget_code_test_modrecv", + budget_name => "budget_name_test_modrecv", + } +); + +($datereceived, $new_ordernumber) = ModReceiveOrder( + $biblionumber2, + $ordernumber3, + 2, + undef, + 12, + 12, + $invoiceid, + 42, + $budgetid2 + ); + +my $order3 = GetOrder( $ordernumber3 ); +is($order3->{'quantityreceived'}, 0, 'Splitting up order did not receive any on original order'); +is($order3->{'quantity'}, 2, '2 items on original order'); +is($order3->{'budget_id'}, $budgetid, 'Budget on original order is unchanged'); + +$neworder = GetOrder( $new_ordernumber ); +is($neworder->{'quantity'}, 2, '2 items on new order'); +is($neworder->{'quantityreceived'}, 2, 'Splitting up order received items on new order'); +is($neworder->{'budget_id'}, $budgetid2, 'Budget on new order is changed'); + +($datereceived, $new_ordernumber) = ModReceiveOrder( + $biblionumber2, + $ordernumber3, + 2, + undef, + 12, + 12, + $invoiceid, + 42, + $budgetid2 + ); + +$order3 = GetOrder( $ordernumber3 ); +is($order3->{'quantityreceived'}, 2, 'Order not split up'); +is($order3->{'quantity'}, 2, '2 items on order'); +is($order3->{'budget_id'}, $budgetid2, 'Budget has changed'); + $dbh->rollback; --