[Koha-patches] [PATCH] bug_5473: add 952 fields when receiving an order

Srdjan Jankovic srdjan at catalyst.net.nz
Wed Sep 7 10:32:03 CEST 2011


---
 C4/Biblio.pm           |   42 ++++++++++++++++++++++++++++++++++++++++++
 acqui/finishreceive.pl |    9 +++++++++
 2 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index 96baaef..c483fd0 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -99,6 +99,7 @@ BEGIN {
       &ModBiblio
       &ModBiblioframework
       &ModZebra
+      &AddMarcFields
     );
 
     # To delete something
@@ -3681,6 +3682,47 @@ sub get_biblio_authorised_values {
     return $authorised_values;
 }
 
+=head2 AddMarcFields
+
+Adds fields to existing marcxml
+
+parameters:
+    biblionumber
+    fields
+
+returns: nothing
+
+  $fields: { tag1 => val1, tag2 => val2, ... }
+  $valX  : $val for tags < 10, { subfild1 => subval1, subfild2 => subval2, ... }
+
+Notes: no indicator support
+
+=cut
+
+sub AddMarcFields {
+    my ( $biblionumber, $fields ) = @_;
+
+    my $rec = GetMarcBiblio($biblionumber) or die "Invalid biblionumber $biblionumber";
+
+    my @fields;
+    while ( my ($tag, $val) = each %$fields ) {
+        my $newfield;
+        if (ref $val) {
+            $newfield = MARC::Field->new( $tag, '', '', %$val );
+        } else {
+            $newfield = MARC::Field->new( $tag, $val );
+        }
+        push @fields, $newfield;
+    }
+    $rec->append_fields(@fields);
+
+    my $dbh    = C4::Context->dbh;
+    my $encoding = C4::Context->preference("marcflavour");
+    $dbh->do("UPDATE biblioitems SET marcxml=? WHERE biblionumber=?", undef,
+        $rec->as_xml_record($encoding),
+        $biblionumber );
+}
+
 1;
 
 __END__
diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl
index 71b13d6..8d14478 100755
--- a/acqui/finishreceive.pl
+++ b/acqui/finishreceive.pl
@@ -114,4 +114,13 @@ if ($quantityrec > $origquantityrec ) {
     	$datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived);
 	}
 }
+
+AddMarcFields( $biblionumber, { 952 => { e => $supplierid,
+                                         d => $datereceived,
+                                         g => $unitprice,
+                                         v => $replacement,
+                                     },
+                                 } );
+# XXX                                    w => Price effective from
+
     print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&datereceived=$datereceived$error_url_str");
-- 
1.6.5



More information about the Koha-patches mailing list