X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=serials%2Fsubscription-detail.pl;h=6e8204810fbdfaa8a96cb5b1c6d5429f51b1dccd;hb=9d6d641d1f8b77271800f43bc027b651f9aea52b;hp=4eefe181f33255869655132bd312849890777d9d;hpb=679cb3999f01dda76c168bde4e37c5d203348518;p=srvgit diff --git a/serials/subscription-detail.pl b/serials/subscription-detail.pl index 4eefe181f3..6e8204810f 100755 --- a/serials/subscription-detail.pl +++ b/serials/subscription-detail.pl @@ -17,23 +17,23 @@ use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Acquisition; -use C4::Auth; -use C4::Budgets; -use C4::Koha; -use C4::Serials; -use C4::Output; +use C4::Auth qw( get_template_and_user checkauth ); +use C4::Serials qw( CloseSubscription ReopenSubscription GetSubscription GetExpirationDate GetSerials HasSubscriptionStrictlyExpired CountIssues HasItems DelSubscription check_routing abouttoexpire can_edit_subscription ); +use C4::Output qw( output_and_exit output_html_with_http_headers ); use C4::Context; -use C4::Search qw/enabled_staff_search_views/; +use C4::Search qw( enabled_staff_search_views ); +use Koha::AdditionalFields; use Koha::AuthorisedValues; -use Koha::DateUtils; +use Koha::DateUtils qw( output_pref ); use Koha::Acquisition::Bookseller; +use Koha::Subscriptions; -use Date::Calc qw/Today Day_of_Year Week_of_Year Add_Delta_Days/; -use Carp; +use Carp qw( carp ); -my $query = new CGI; +use Koha::SharedContent; + +my $query = CGI->new; my $op = $query->param('op') || q{}; my $issueconfirmed = $query->param('issueconfirmed'); my $dbh = C4::Context->dbh; @@ -45,7 +45,7 @@ if ( $op and $op eq "close" ) { C4::Serials::ReopenSubscription( $subscriptionid ); } -# the subscription must be deletable if there is NO issues for a reason or another (should not happend, but...) +# the subscription must be deletable if there is NO issues for a reason or another (should not happened, but...) # Permission needed if it is a deletion (del) : delete_subscription # Permission needed otherwise : * @@ -55,12 +55,9 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "serials/subscription-detail.tt", query => $query, type => "intranet", - authnotrequired => 0, flagsrequired => {serials => $permission}, - debug => 1, }); - my $subs = GetSubscription($subscriptionid); output_and_exit( $query, $cookie, $template, 'unknown_subscription') @@ -72,31 +69,38 @@ my ($totalissues,@serialslist) = GetSerials($subscriptionid); $totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue) if ($op eq 'del') { - if ($$subs{'cannotedit'}){ - carp "Attempt to delete subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; - print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); - exit; - } - + if ($$subs{'cannotedit'}){ + carp "Attempt to delete subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; + print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); + exit; + } + # Asking for confirmation if the subscription has not strictly expired yet or if it has linked issues my $strictlyexpired = HasSubscriptionStrictlyExpired($subscriptionid); my $linkedissues = CountIssues($subscriptionid); my $countitems = HasItems($subscriptionid); if ($strictlyexpired == 0 || $linkedissues > 0 || $countitems>0) { - $template->param(NEEDSCONFIRMATION => 1); - if ($strictlyexpired == 0) { $template->param("NOTEXPIRED" => 1); } - if ($linkedissues > 0) { $template->param("LINKEDISSUES" => 1); } - if ($countitems > 0) { $template->param("LINKEDITEMS" => 1); } + $template->param(NEEDSCONFIRMATION => 1); + if ($strictlyexpired == 0) { $template->param("NOTEXPIRED" => 1); } + if ($linkedissues > 0) { $template->param("LINKEDISSUES" => 1); } + if ($countitems > 0) { $template->param("LINKEDITEMS" => 1); } } else { - $issueconfirmed = "1"; + $issueconfirmed = "1"; } # If it's ok to delete the subscription, we do so if ($issueconfirmed eq "1") { - &DelSubscription($subscriptionid); + &DelSubscription($subscriptionid); print $query->redirect("/cgi-bin/koha/serials/serials-home.pl"); exit; } } +elsif ( $op and $op eq "share" ) { + my $mana_language = $query->param('mana_language'); + my $result = Koha::SharedContent::send_entity($mana_language, $loggedinuser, $subscriptionid, 'subscription'); + $template->param( mana_code => $result->{msg} ); + $subs->{mana_id} = $result->{id}; +} + my $hasRouting = check_routing($subscriptionid); (undef, $cookie, undef, undef) @@ -120,16 +124,31 @@ my $numberpattern = C4::Serials::Numberpattern::GetSubscriptionNumberpattern($su my $default_bib_view = get_default_view(); -my $additional_fields = Koha::AdditionalField->all( { tablename => 'subscription' } ); -for my $field ( @$additional_fields ) { - if ( $field->{authorised_value_category} ) { - $field->{authorised_value_choices} = GetAuthorisedValues( $field->{authorised_value_category} ); - } -} -$template->param( additional_fields_for_subscription => $additional_fields ); +my $subscription_object = Koha::Subscriptions->find( $subscriptionid ); +$template->param( + available_additional_fields => [ Koha::AdditionalFields->search( { tablename => 'subscription' } ) ], + additional_field_values => { + map { $_->field->name => $_->value } + $subscription_object->additional_field_values->as_list + }, +); # FIXME Do we want to hide canceled orders? -my $orders = Koha::Acquisition::Orders->search( { subscriptionid => $subscriptionid } ); +my $orders = Koha::Acquisition::Orders->search( { subscriptionid => $subscriptionid }, { order_by => [ { -desc => 'timestamp' }, \[ "field(orderstatus, 'ordered', 'partial', 'complete')" ] ] } ); +my $orders_grouped; +while ( my $o = $orders->next ) { + if ( $o->ordernumber == $o->parent_ordernumber ) { + $orders_grouped->{$o->parent_ordernumber}->{datereceived} = $o->datereceived; + $orders_grouped->{$o->parent_ordernumber}->{orderstatus} = $o->orderstatus; + $orders_grouped->{$o->parent_ordernumber}->{basket} = $o->basket; + } + $orders_grouped->{$o->parent_ordernumber}->{quantity} += $o->quantity; + $orders_grouped->{$o->parent_ordernumber}->{ecost_tax_excluded} += sprintf('%.2f', $o->ecost_tax_excluded * $o->quantity); + $orders_grouped->{$o->parent_ordernumber}->{ecost_tax_included} += sprintf('%.2f', $o->ecost_tax_included * $o->quantity); + $orders_grouped->{$o->parent_ordernumber}->{unitprice_tax_excluded} += sprintf('%.2f', $o->unitprice_tax_excluded * $o->quantity); + $orders_grouped->{$o->parent_ordernumber}->{unitprice_tax_included} += sprintf('%.2f', $o->unitprice_tax_included * $o->quantity); + push @{$orders_grouped->{$o->parent_ordernumber}->{orders}}, $o; +} $template->param( subscriptionid => $subscriptionid, @@ -147,8 +166,9 @@ $template->param( intranetcolorstylesheet => C4::Context->preference('intranetcolorstylesheet'), irregular_issues => scalar @irregular_issues, default_bib_view => $default_bib_view, - orders => $orders, + orders_grouped => $orders_grouped, (uc(C4::Context->preference("marcflavour"))) => 1, + mana_comments => $subs->{comments}, ); output_html_with_http_headers $query, $cookie, $template->output;