use Carp;
use C4::Context;
use C4::Debug;
-use C4::Dates qw(format_date format_date_in_iso);
-use MARC::Record;
use C4::Suggestions;
use C4::Biblio;
use C4::Contract;
use Koha::Acquisition::Order;
use Koha::Acquisition::Bookseller;
use Koha::Number::Price;
+use Koha::Libraries;
+
+use C4::Koha;
+
+use MARC::Field;
+use MARC::Record;
use Time::localtime;
-use HTML::Entities;
-use vars qw($VERSION @ISA @EXPORT);
+use vars qw(@ISA @EXPORT);
BEGIN {
- # set the version for version checking
- $VERSION = 3.07.00.049;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
&GetOrderUsers
&ModOrderUsers
&NotifyOrderUsers
+
+ &FillWithDefaultValues
);
}
=head3 NewBasket
- $basket = &NewBasket( $booksellerid, $authorizedby, $basketname,
- $basketnote, $basketbooksellernote, $basketcontractnumber, $deliveryplace, $billingplace );
+ $basket = &NewBasket( $booksellerid, $authorizedby, $basketname,
+ $basketnote, $basketbooksellernote, $basketcontractnumber, $deliveryplace, $billingplace, $is_standing );
Create a new basket in aqbasket table
sub NewBasket {
my ( $booksellerid, $authorisedby, $basketname, $basketnote,
$basketbooksellernote, $basketcontractnumber, $deliveryplace,
- $billingplace ) = @_;
+ $billingplace, $is_standing ) = @_;
my $dbh = C4::Context->dbh;
my $query =
'INSERT INTO aqbasket (creationdate,booksellerid,authorisedby) '
$basketnote ||= q{};
$basketbooksellernote ||= q{};
ModBasketHeader( $basket, $basketname, $basketnote, $basketbooksellernote,
- $basketcontractnumber, $booksellerid, $deliveryplace, $billingplace );
+ $basketcontractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing );
return $basket;
}
sub CloseBasket {
my ($basketno) = @_;
my $dbh = C4::Context->dbh;
- my $query = "
- UPDATE aqbasket
- SET closedate=now()
- WHERE basketno=?
- ";
- my $sth = $dbh->prepare($query);
- $sth->execute($basketno);
+ $dbh->do('UPDATE aqbasket SET closedate=now() WHERE basketno=?', {}, $basketno );
- my @orders = GetOrders($basketno);
- foreach my $order (@orders) {
- $query = qq{
- UPDATE aqorders
- SET orderstatus = 'ordered'
- WHERE ordernumber = ?;
- };
- $sth = $dbh->prepare($query);
- $sth->execute($order->{'ordernumber'});
- }
+ $dbh->do( q{UPDATE aqorders SET orderstatus = 'ordered' WHERE basketno = ? AND orderstatus != 'complete'},
+ {}, $basketno);
+ return;
}
=head3 ReopenBasket
sub ReopenBasket {
my ($basketno) = @_;
my $dbh = C4::Context->dbh;
- my $query = "
- UPDATE aqbasket
- SET closedate=NULL
- WHERE basketno=?
- ";
- my $sth = $dbh->prepare($query);
- $sth->execute($basketno);
+ $dbh->do( q{UPDATE aqbasket SET closedate=NULL WHERE basketno=?}, {}, $basketno );
- my @orders = GetOrders($basketno);
- foreach my $order (@orders) {
- $query = qq{
- UPDATE aqorders
- SET orderstatus = 'new'
- WHERE ordernumber = ?;
- };
- $sth = $dbh->prepare($query);
- $sth->execute($order->{'ordernumber'});
- }
+ $dbh->do( q{
+ UPDATE aqorders
+ SET orderstatus = 'new'
+ WHERE basketno = ?
+ AND orderstatus != 'complete'
+ }, {}, $basketno);
+ return;
}
#------------------------------------------------------------#
notes => $order->{'order_vendornote'},
quantity => $order->{'quantity'},
rrp => $order->{'rrp'},
- deliveryplace => C4::Branch::GetBranchName( $basket->{'deliveryplace'} ),
- billingplace => C4::Branch::GetBranchName( $basket->{'billingplace'} ),
};
+ for my $place ( qw( deliveryplace billingplace ) ) {
+ if ( my $library = Koha::Libraries->find( $row->{deliveryplace} ) ) {
+ $row->{$place} = $library->branchname
+ }
+ }
foreach(qw(
contractname author title publishercode collectiontitle notes
deliveryplace billingplace
booksellerpostal => $bookseller->{postal},
contractnumber => $contract->{contractnumber},
contractname => $contract->{contractname},
- basketgroupdeliveryplace => C4::Branch::GetBranchName( $basketgroup->{deliveryplace} ),
- basketgroupbillingplace => C4::Branch::GetBranchName( $basketgroup->{billingplace} ),
- basketdeliveryplace => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
- basketbillingplace => C4::Branch::GetBranchName( $basket->{billingplace} ),
};
+ my $temp = {
+ basketgroupdeliveryplace => $basketgroup->{deliveryplace},
+ basketgroupbillingplace => $basketgroup->{billingplace},
+ basketdeliveryplace => $basket->{deliveryplace},
+ basketbillingplace => $basket->{billingplace},
+ };
+ for my $place (qw( basketgroupdeliveryplace basketgroupbillingplace basketdeliveryplace basketbillingplace )) {
+ if ( my $library = Koha::Libraries->find( $temp->{$place} ) ) {
+ $row->{$place} = $library->branchname;
+ }
+ }
foreach(qw(
basketname author title publishercode collectiontitle notes
booksellername bookselleraddress booksellerpostal contractname
=item C<$billingplace> is the "billingplace" field in the aqbasket table.
+=item C<$is_standing> is the "is_standing" field in the aqbasket table.
+
=back
=cut
sub ModBasketHeader {
- my ($basketno, $basketname, $note, $booksellernote, $contractnumber, $booksellerid, $deliveryplace, $billingplace) = @_;
+ my ($basketno, $basketname, $note, $booksellernote, $contractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing) = @_;
my $query = qq{
UPDATE aqbasket
- SET basketname=?, note=?, booksellernote=?, booksellerid=?, deliveryplace=?, billingplace=?
+ SET basketname=?, note=?, booksellernote=?, booksellerid=?, deliveryplace=?, billingplace=?, is_standing=?
WHERE basketno=?
};
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare($query);
- $sth->execute($basketname, $note, $booksellernote, $booksellerid, $deliveryplace, $billingplace, $basketno);
+ $sth->execute($basketname, $note, $booksellernote, $booksellerid, $deliveryplace, $billingplace, $is_standing, $basketno);
if ( $contractnumber ) {
my $query2 ="UPDATE aqbasket SET contractnumber=? WHERE basketno=?";
sub ModOrder {
my $orderinfo = shift;
- die "Ordernumber is required" if $orderinfo->{'ordernumber'} eq '' ;
- die "Biblionumber is required" if $orderinfo->{'biblionumber'} eq '';
+ die "Ordernumber is required" if $orderinfo->{'ordernumber'} eq '';
my $dbh = C4::Context->dbh;
my @params;
=head3 ModReceiveOrder
- &ModReceiveOrder({
- biblionumber => $biblionumber,
- ordernumber => $ordernumber,
- quantityreceived => $quantityreceived,
- user => $user,
- cost => $cost,
- ecost => $ecost,
- invoiceid => $invoiceid,
- rrp => $rrp,
- budget_id => $budget_id,
- datereceived => $datereceived,
- received_itemnumbers => \@received_itemnumbers,
- order_internalnote => $order_internalnote,
- order_vendornote => $order_vendornote,
- });
+ my ( $date_received, $new_ordernumber ) = ModReceiveOrder(
+ {
+ biblionumber => $biblionumber,
+ order => $order,
+ quantityreceived => $quantityreceived,
+ user => $user,
+ invoice => $invoice,
+ budget_id => $budget_id,
+ received_itemnumbers => \@received_itemnumbers,
+ order_internalnote => $order_internalnote,
+ }
+ );
Updates an order, to reflect the fact that it was received, at least
-in part. All arguments not mentioned below update the fields with the
-same name in the aqorders table of the Koha database.
+in part.
If a partial order is received, splits the order into two.
-Updates the order with bibilionumber C<$biblionumber> and ordernumber
-C<$ordernumber>.
+Updates the order with biblionumber C<$biblionumber> and ordernumber
+C<$order->{ordernumber}>.
=cut
sub ModReceiveOrder {
- my ( $params ) = @_;
- my $biblionumber = $params->{biblionumber};
- my $ordernumber = $params->{ordernumber};
- my $quantrec = $params->{quantityreceived};
- my $user = $params->{user};
- my $cost = $params->{cost};
- my $ecost = $params->{ecost};
- my $invoiceid = $params->{invoiceid};
- my $rrp = $params->{rrp};
- my $budget_id = $params->{budget_id};
- my $datereceived = $params->{datereceived};
+ my ($params) = @_;
+ my $biblionumber = $params->{biblionumber};
+ my $order = { %{ $params->{order} } }; # Copy the order, we don't want to modify it
+ my $invoice = $params->{invoice};
+ my $quantrec = $params->{quantityreceived};
+ my $user = $params->{user};
+ my $budget_id = $params->{budget_id};
my $received_items = $params->{received_items};
- my $order_internalnote = $params->{order_internalnote};
- my $order_vendornote = $params->{order_vendornote};
my $dbh = C4::Context->dbh;
- $datereceived = C4::Dates->output('iso') unless $datereceived;
+ my $datereceived = ( $invoice and $invoice->{datereceived} ) ? $invoice->{datereceived} : dt_from_string;
my $suggestionid = GetSuggestionFromBiblionumber( $biblionumber );
if ($suggestionid) {
ModSuggestion( {suggestionid=>$suggestionid,
);
}
- my $result_set = $dbh->selectall_arrayref(
-q{SELECT * FROM aqorders WHERE biblionumber=? AND aqorders.ordernumber=?},
- { Slice => {} }, $biblionumber, $ordernumber
- );
-
- # we assume we have a unique order
- my $order = $result_set->[0];
-
- my $new_ordernumber = $ordernumber;
+ my $new_ordernumber = $order->{ordernumber};
if ( $order->{quantity} > $quantrec ) {
# Split order line in two parts: the first is the original order line
# without received items (the quantity is decreased),
UPDATE aqorders
SET quantity = ?,
orderstatus = 'partial'|;
- $query .= q|, order_internalnote = ?| if defined $order_internalnote;
- $query .= q|, order_vendornote = ?| if defined $order_vendornote;
+ $query .= q|, order_internalnote = ?| if defined $order->{order_internalnote};
$query .= q| WHERE ordernumber = ?|;
my $sth = $dbh->prepare($query);
$sth->execute(
$order->{quantity} - $quantrec,
- ( defined $order_internalnote ? $order_internalnote : () ),
- ( defined $order_vendornote ? $order_vendornote : () ),
- $ordernumber
+ ( defined $order->{order_internalnote} ? $order->{order_internalnote} : () ),
+ $order->{ordernumber}
);
- delete $order->{'ordernumber'};
- $order->{'budget_id'} = ( $budget_id || $order->{'budget_id'} );
- $order->{'quantity'} = $quantrec;
- $order->{'quantityreceived'} = $quantrec;
- $order->{'datereceived'} = $datereceived;
- $order->{'invoiceid'} = $invoiceid;
- $order->{'unitprice'} = $cost;
- $order->{'rrp'} = $rrp;
- $order->{ecost} = $ecost;
- $order->{'orderstatus'} = 'complete';
+ delete $order->{ordernumber};
+ $order->{budget_id} = ( $budget_id || $order->{budget_id} );
+ $order->{quantity} = $quantrec;
+ $order->{quantityreceived} = $quantrec;
+ $order->{datereceived} = $datereceived;
+ $order->{invoiceid} = $invoice->{invoiceid};
+ $order->{orderstatus} = 'complete';
$new_ordernumber = Koha::Acquisition::Order->new($order)->insert->{ordernumber};
if ($received_items) {
}
} else {
my $query = q|
- update aqorders
- set quantityreceived=?,datereceived=?,invoiceid=?,
- unitprice=?,rrp=?,ecost=?,budget_id=?,orderstatus='complete'|;
- $query .= q|, order_internalnote = ?| if defined $order_internalnote;
- $query .= q|, order_vendornote = ?| if defined $order_vendornote;
+ UPDATE aqorders
+ SET quantityreceived = ?,
+ datereceived = ?,
+ invoiceid = ?,
+ budget_id = ?,
+ orderstatus = 'complete'
+ |;
+
+ $query .= q|
+ , unitprice = ?, unitprice_tax_included = ?, unitprice_tax_excluded = ?
+ | if defined $order->{unitprice};
+
+ $query .= q|
+ , rrp = ?, rrp_tax_included = ?, rrp_tax_excluded = ?
+ | if defined $order->{rrp};
+
+ $query .= q|
+ , ecost = ?, ecost_tax_included = ?, ecost_tax_excluded = ?
+ | if defined $order->{ecost};
+
+ $query .= q|
+ , order_internalnote = ?
+ | if defined $order->{order_internalnote};
+
$query .= q| where biblionumber=? and ordernumber=?|;
+
my $sth = $dbh->prepare( $query );
- $sth->execute(
- $quantrec,
- $datereceived,
- $invoiceid,
- $cost,
- $rrp,
- $ecost,
- ( $budget_id ? $budget_id : $order->{budget_id} ),
- ( defined $order_internalnote ? $order_internalnote : () ),
- ( defined $order_vendornote ? $order_vendornote : () ),
- $biblionumber,
- $ordernumber
- );
+ my @params = ( $quantrec, $datereceived, $invoice->{invoiceid}, $budget_id );
+
+ if ( defined $order->{unitprice} ) {
+ push @params, $order->{unitprice}, $order->{unitprice_tax_included}, $order->{unitprice_tax_excluded};
+ }
+ if ( defined $order->{rrp} ) {
+ push @params, $order->{rrp}, $order->{rrp_tax_included}, $order->{rrp_tax_excluded};
+ }
+ if ( defined $order->{ecost} ) {
+ push @params, $order->{ecost}, $order->{ecost_tax_included}, $order->{ecost_tax_excluded};
+ }
+ if ( defined $order->{order_internalnote} ) {
+ push @params, $order->{order_internalnote};
+ }
+
+ push @params, ( $biblionumber, $order->{ordernumber} );
+
+ $sth->execute( @params );
# All items have been received, sent a notification to users
- NotifyOrderUsers( $ordernumber );
+ NotifyOrderUsers( $order->{ordernumber} );
}
return ($datereceived, $new_ordernumber);
LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
};
- # If we search on ordernumber, we retrieve the transfered order if a transfer has been done.
+ # If we search on ordernumber, we retrieve the transferred order if a transfer has been done.
$query .= q{
LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_to = aqorders.ordernumber
} if $ordernumber;
};
if ( $pending or $ordered ) {
- $query .= q{ AND (quantity > quantityreceived OR quantityreceived is NULL)};
- }
- if ( $ordered ) {
- $query .= q{ AND aqorders.orderstatus IN ( "ordered", "partial" )};
+ $query .= q{
+ AND (
+ ( aqbasket.is_standing AND aqorders.orderstatus IN ( "new", "ordered", "partial" ) )
+ OR (
+ ( quantity > quantityreceived OR quantityreceived is NULL )
+ };
+
+ if ( $ordered ) {
+ $query .= q{ AND aqorders.orderstatus IN ( "ordered", "partial" )};
+ }
+ $query .= q{
+ )
+ )
+ };
}
my $userenv = C4::Context->userenv;
my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
foreach my $itemnumber (@itemnumbers){
- my $delcheck = C4::Items::DelItemCheck( $dbh, $bibnum, $itemnumber );
+ my $delcheck = C4::Items::DelItemCheck( $bibnum, $itemnumber );
if($delcheck != 1) {
$error->{'delitem'} = 1;
my $newordernumber = TransferOrder($ordernumber, $basketno);
Transfer an order line to a basket.
-Mark $ordernumber as cancelled with an internal note 'Cancelled and transfered
+Mark $ordernumber as cancelled with an internal note 'Cancelled and transferred
to BOOKSELLER on DATE' and create new order with internal note
-'Transfered from BOOKSELLER on DATE'.
+'Transferred from BOOKSELLER on DATE'.
Move all attached items to the new order.
-Received orders cannot be transfered.
+Received orders cannot be transferred.
Return the ordernumber of created order.
=cut
$query = q{
UPDATE aqorders
- SET datecancellationprinted = CAST(NOW() AS date)
+ SET datecancellationprinted = CAST(NOW() AS date), orderstatus = ?
WHERE ordernumber = ?
};
$sth = $dbh->prepare($query);
- $rv = $sth->execute($ordernumber);
+ $rv = $sth->execute('cancelled', $ordernumber);
delete $order->{'ordernumber'};
delete $order->{parent_ordernumber};
push @bind_strs, " borrowers.branchcode = ? ";
push @bind_args, $args{branchcode};
}
+ if($args{message_id}) {
+ push @bind_strs, " aqinvoices.message_id = ? ";
+ push @bind_args, $args{message_id};
+ }
$query .= " WHERE " . join(" AND ", @bind_strs) if @bind_strs;
$query .= " GROUP BY aqinvoices.invoiceid ";
return unless(%invoice and $invoice{invoicenumber});
my @columns = qw(invoicenumber booksellerid shipmentdate billingdate
- closedate shipmentcost shipmentcost_budgetid);
+ closedate shipmentcost shipmentcost_budgetid message_id);
my @set_strs;
my @set_args;
Reopen an invoice
-Equivalent to ModInvoice(invoiceid => $invoiceid, closedate => C4::Dates->new()->output('iso'))
+Equivalent to ModInvoice(invoiceid => $invoiceid, closedate => output_pref({ dt=>dt_from_string, dateonly=>1, otputpref=>'iso' }))
=cut
$order->{ecost} = Koha::Number::Price->new( $order->{ecost} )->round;
if ($ordering) {
if ( $bookseller->{listincgst} ) {
- $order->{rrpgsti} = $order->{rrp};
- $order->{rrpgste} = Koha::Number::Price->new(
- $order->{rrpgsti} / ( 1 + $order->{gstrate} ) )->round;
- $order->{ecostgsti} = $order->{ecost};
- $order->{ecostgste} = Koha::Number::Price->new(
- $order->{ecost} / ( 1 + $order->{gstrate} ) )->round;
- $order->{gstvalue} = Koha::Number::Price->new(
- ( $order->{ecostgsti} - $order->{ecostgste} ) *
+ $order->{rrp_tax_included} = $order->{rrp};
+ $order->{rrp_tax_excluded} = Koha::Number::Price->new(
+ $order->{rrp_tax_included} / ( 1 + $order->{tax_rate} ) )->round;
+ $order->{ecost_tax_included} = $order->{ecost};
+ $order->{ecost_tax_excluded} = Koha::Number::Price->new(
+ $order->{ecost} / ( 1 + $order->{tax_rate} ) )->round;
+ $order->{tax_value} = Koha::Number::Price->new(
+ ( $order->{ecost_tax_included} - $order->{ecost_tax_excluded} ) *
$order->{quantity} )->round;
- $order->{totalgste} = $order->{ecostgste} * $order->{quantity};
- $order->{totalgsti} = $order->{ecostgsti} * $order->{quantity};
}
else {
- $order->{rrpgste} = $order->{rrp};
- $order->{rrpgsti} = Koha::Number::Price->new(
- $order->{rrp} * ( 1 + $order->{gstrate} ) )->round;
- $order->{ecostgste} = $order->{ecost};
- $order->{ecostgsti} = Koha::Number::Price->new(
- $order->{ecost} * ( 1 + $order->{gstrate} ) )->round;
- $order->{gstvalue} = Koha::Number::Price->new(
- ( $order->{ecostgsti} - $order->{ecostgste} ) *
+ $order->{rrp_tax_excluded} = $order->{rrp};
+ $order->{rrp_tax_included} = Koha::Number::Price->new(
+ $order->{rrp} * ( 1 + $order->{tax_rate} ) )->round;
+ $order->{ecost_tax_excluded} = $order->{ecost};
+ $order->{ecost_tax_included} = Koha::Number::Price->new(
+ $order->{ecost} * ( 1 + $order->{tax_rate} ) )->round;
+ $order->{tax_value} = Koha::Number::Price->new(
+ ( $order->{ecost_tax_included} - $order->{ecost_tax_excluded} ) *
$order->{quantity} )->round;
- $order->{totalgste} = $order->{ecostgste} * $order->{quantity};
- $order->{totalgsti} = $order->{ecostgsti} * $order->{quantity};
}
}
if ($receiving) {
if ( $bookseller->{listincgst} ) {
- $order->{unitpricegsti} = Koha::Number::Price->new( $order->{unitprice} )->round;
- $order->{unitpricegste} = Koha::Number::Price->new(
- $order->{unitpricegsti} / ( 1 + $order->{gstrate} ) )->round;
+ $order->{unitprice_tax_included} = Koha::Number::Price->new( $order->{unitprice} )->round;
+ $order->{unitprice_tax_excluded} = Koha::Number::Price->new(
+ $order->{unitprice_tax_included} / ( 1 + $order->{tax_rate} ) )->round;
}
else {
- $order->{unitpricegste} = Koha::Number::Price->new( $order->{unitprice} )->round;
- $order->{unitpricegsti} = Koha::Number::Price->new(
- $order->{unitpricegste} * ( 1 + $order->{gstrate} ) )->round;
+ $order->{unitprice_tax_excluded} = Koha::Number::Price->new( $order->{unitprice} )->round;
+ $order->{unitprice_tax_included} = Koha::Number::Price->new(
+ $order->{unitprice_tax_excluded} * ( 1 + $order->{tax_rate} ) )->round;
}
- $order->{gstvalue} = Koha::Number::Price->new(
- ( $order->{unitpricegsti} - $order->{unitpricegste} )
+ $order->{tax_value} = Koha::Number::Price->new(
+ ( $order->{unitprice_tax_included} - $order->{unitprice_tax_excluded} )
* $order->{quantityreceived} )->round;
- $order->{totalgste} = $order->{unitpricegste} * $order->{quantity};
- $order->{totalgsti} = $order->{unitpricegsti} * $order->{quantity};
}
return $order;
my $order = GetOrder( $ordernumber );
for my $borrowernumber (@borrowernumbers) {
my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
- my $branch = C4::Branch::GetBranchDetail( $borrower->{branchcode} );
+ my $library = Koha::Libraries->find( $borrower->{branchcode} )->unblessed;
my $biblio = C4::Biblio::GetBiblio( $order->{biblionumber} );
my $letter = C4::Letters::GetPreparedLetter(
module => 'acquisition',
letter_code => 'ACQ_NOTIF_ON_RECEIV',
- branchcode => $branch->{branchcode},
+ branchcode => $library->{branchcode},
tables => {
- 'branches' => $branch,
+ 'branches' => $library,
'borrowers' => $borrower,
'biblio' => $biblio,
'aqorders' => $order,
}
}
+=head3 FillWithDefaultValues
+
+FillWithDefaultValues( $marc_record );
+
+This will update the record with default value defined in the ACQ framework.
+For all existing fields, if a default value exists and there are no subfield, it will be created.
+If the field does not exist, it will be created too.
+
+=cut
+
+sub FillWithDefaultValues {
+ my ($record) = @_;
+ my $tagslib = C4::Biblio::GetMarcStructure( 1, 'ACQ', { unsafe => 1 } );
+ if ($tagslib) {
+ my ($itemfield) =
+ C4::Biblio::GetMarcFromKohaField( 'items.itemnumber', '' );
+ for my $tag ( sort keys %$tagslib ) {
+ next unless $tag;
+ next if $tag == $itemfield;
+ for my $subfield ( sort keys %{ $tagslib->{$tag} } ) {
+ next if IsMarcStructureInternal($tagslib->{$tag}{$subfield});
+ my $defaultvalue = $tagslib->{$tag}{$subfield}{defaultvalue};
+ if ( defined $defaultvalue and $defaultvalue ne '' ) {
+ my @fields = $record->field($tag);
+ if (@fields) {
+ for my $field (@fields) {
+ unless ( defined $field->subfield($subfield) ) {
+ $field->add_subfields(
+ $subfield => $defaultvalue );
+ }
+ }
+ }
+ else {
+ $record->insert_fields_ordered(
+ MARC::Field->new(
+ $tag, '', '', $subfield => $defaultvalue
+ )
+ );
+ }
+ }
+ }
+ }
+ }
+}
+
1;
__END__