Bug 18201: Export data -Fix "Remove non-local items" option and add "Removes non...
authorNick Clemens <nick@bywatersolutions.com>
Thu, 13 Apr 2017 14:21:50 +0000 (10:21 -0400)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 21 Dec 2017 16:10:03 +0000 (13:10 -0300)
It turns out the modules had the option expected  built in, we just didn't call
it. This patch set expands the options for passing to the export.

To test:
1 - Go to Tools->Export data
2 - Perform an export and check 'Remove non-local items'
3 - Note that file contains only 'local' records, but includes all items
on those records
4 - Apply patch
5 - Note Tools->Export data has a new option to remove records not owned
by logged in branch
6 - Export as before checking records option, file should be as before
7 - Now check 'Remove items not owned by logged in branch'
8 - File should now only have local items (may have empty records)
9 - Check both boxes and recieve only 'local' records and items

Signed-off-by: Scott Kehoe <scott@masslibsystem.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Koha/Exporter/Record.pm
koha-tmpl/intranet-tmpl/prog/en/modules/tools/export.tt
tools/export.pl

index f9d62df..311f88d 100644 (file)
@@ -63,7 +63,7 @@ sub _get_biblio_for_export {
     my $biblionumber = $params->{biblionumber};
     my $itemnumbers  = $params->{itemnumbers};
     my $export_items = $params->{export_items} // 1;
-    my $only_export_items_for_branch = $params->{only_export_items_for_branch};
+    my $only_export_items_for_branches = $params->{only_export_items_for_branches};
 
     my $record = eval { C4::Biblio::GetMarcBiblio({ biblionumber => $biblionumber }); };
 
@@ -71,12 +71,13 @@ sub _get_biblio_for_export {
 
     if ($export_items) {
         C4::Biblio::EmbedItemsInMarcBiblio( $record, $biblionumber, $itemnumbers );
-        if ($only_export_items_for_branch) {
+        if ($only_export_items_for_branches && @$only_export_items_for_branches) {
+            my %export_items_for_branches = map { $_ => 1 } @$only_export_items_for_branches;
             my ( $homebranchfield, $homebranchsubfield ) = GetMarcFromKohaField( 'items.homebranch', '' );    # Should be GetFrameworkCode( $biblionumber )?
 
             for my $itemfield ( $record->field($homebranchfield) ) {
                 my $homebranch = $itemfield->subfield($homebranchsubfield);
-                if ( $only_export_items_for_branch ne $homebranch ) {
+                unless ( $export_items_for_branches{$homebranch} ) {
                     $record->delete_field($itemfield);
                 }
             }
index 36fe142..daee49b 100644 (file)
@@ -71,7 +71,7 @@
         </li>
         
         <li>
-            <label>Library: </label>
+            <label>With items owned by the following libraries: </label>
             [% INCLUDE 'branch-selector.inc' branches = libraries %]
         </li>
     </ol>
         <input id="dont_export_item" type="checkbox" name="dont_export_item" />
         </li>
         <li>
-        <label for="strip_nonlocal_items">Remove non-local items:</label>
-        <input id="strip_nonlocal_items" type="checkbox" name="strip_nonlocal_items" />
+        <label for="strip_items_not_from_libraries">Remove items not owned by selected libraries:</label>
+        <input id="strip_items_not_from_libraries" type="checkbox" name="strip_items_not_from_libraries" />
         </li>
         <li>
         <label for="export_remove_fields">Don't export fields:</label>
index 72b18c4..0704b57 100755 (executable)
@@ -87,13 +87,12 @@ if ( $op eq "export" ) {
     my $export_remove_fields = $query->param("export_remove_fields") || q||;
     my @biblionumbers      = $query->multi_param("biblionumbers");
     my @itemnumbers        = $query->multi_param("itemnumbers");
-    my $strip_nonlocal_items =  $query->param('strip_nonlocal_items');
+    my $strip_items_not_from_libraries =  $query->param('strip_items_not_from_libraries');
     my @sql_params;
     my $sql_query;
 
-    my $libraries = $strip_nonlocal_items
-        ? [ Koha::Libraries->find(C4::Context->userenv->{branch})->unblessed ]
-        : Koha::Libraries->search_filtered->unblessed;
+    my $libraries = Koha::Libraries->search_filtered->unblessed;
+    my $only_export_items_for_branches = $strip_items_not_from_libraries ? \@branch : undef;
     my @branchcodes;
     for my $branchcode ( @branch ) {
         if ( grep { $_->{branchcode} eq $branchcode } @$libraries ) {
@@ -209,6 +208,7 @@ if ( $op eq "export" ) {
                 dont_export_fields => $export_remove_fields,
                 csv_profile_id     => $csv_profile_id,
                 export_items       => (not $dont_export_items),
+                only_export_items_for_branches => $only_export_items_for_branches,
             }
         );
     }