From 506a979d440995849bd8eafd244dbbb2799dbdc0 Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Mon, 2 Dec 2019 16:42:59 +0000 Subject: [PATCH] Bug 24134: Add placeholder for 2 digit years to allow autogeneration of dates in 008 This patch modifies the code for parsing MARC framework configurations so that the placeholder "<>" translates to a two-year date. To test, apply the patch and modify a framework to include placeholders. For example, in MARC21: - Administration -> MARC structure -> 952 -> Edit subfields -> d - Expand "Advanced constraints" and add a default value: <> <> <> <
> <> - Save your configuration and go to Cataloging. - Go to the add/edit items page for a record which uses the framework you edited. - In the "Add item" form, in the "Date aquired" field, you should see the correct values. For example: '2019 19 12 03 Leonard' Perform the same test when adding an item during the Acquisitions process (depending on your AcqCreateItem setting). Note that acqui/neworderempty.pl has been modified because the placeholder-replacement code is repeated there, but I couldn't discover how to test it (if it is used at all?) Signed-off-by: Lucas Gass Signed-off-by: Katrin Fischer Signed-off-by: Tomas Cohen Arazi --- C4/Items.pm | 17 +++++++++++++++++ acqui/neworderempty.pl | 4 +++- cataloguing/addbiblio.pl | 4 +++- cataloguing/additem.pl | 4 +++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/C4/Items.pm b/C4/Items.pm index f2db7a4894..22ac2de12c 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -1608,6 +1608,23 @@ sub PrepareItemrecordDisplay { $defaultvalue = q||; } else { $defaultvalue =~ s/"/"/g; + # get today date & replace <>, <>, <
> if provided in the default value + my $today_dt = dt_from_string; + my $year = $today_dt->strftime('%Y'); + my $shortyear = $today_dt->strftime('%y'); + my $month = $today_dt->strftime('%m'); + my $day = $today_dt->strftime('%d'); + $defaultvalue =~ s/<>/$year/g; + $defaultvalue =~ s/<>/$shortyear/g; + $defaultvalue =~ s/<>/$month/g; + $defaultvalue =~ s/<
>/$day/g; + + # And <> with surname (?) + my $username = + ( C4::Context->userenv + ? C4::Context->userenv->{'surname'} + : "superlibrarian" ); + $defaultvalue =~ s/<>/$username/g; } my $maxlength = $tagslib->{$tag}->{$subfield}->{maxlength}; diff --git a/acqui/neworderempty.pl b/acqui/neworderempty.pl index dfa9ebe9ff..d9505d1440 100755 --- a/acqui/neworderempty.pl +++ b/acqui/neworderempty.pl @@ -228,12 +228,14 @@ if ( not $ordernumber ) { # create order if ( $value ) { - # get today date & replace <>, <>, <
> if provided in the default value + # get today date & replace <>, <>, <>, <
> if provided in the default value my $today_dt = dt_from_string; my $year = $today_dt->strftime('%Y'); + my $shortyear = $today_dt->strftime('%y'); my $month = $today_dt->strftime('%m'); my $day = $today_dt->strftime('%d'); $value =~ s/<>/$year/g; + $value =~ s/<>/$shortyear/g; $value =~ s/<>/$month/g; $value =~ s/<
>/$day/g; diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl index 7d48842c6a..4bbf81df9a 100755 --- a/cataloguing/addbiblio.pl +++ b/cataloguing/addbiblio.pl @@ -279,12 +279,14 @@ sub create_input { if ( $value eq '' ) { $value = $tagslib->{$tag}->{$subfield}->{defaultvalue} // q{}; - # get today date & replace <>, <>, <
> if provided in the default value + # get today date & replace <>, <>, <>, <
> if provided in the default value my $today_dt = dt_from_string; my $year = $today_dt->strftime('%Y'); + my $shortyear = $today_dt->strftime('%y'); my $month = $today_dt->strftime('%m'); my $day = $today_dt->strftime('%d'); $value =~ s/<>/$year/g; + $value =~ s/<>/$shortyear/g; $value =~ s/<>/$month/g; $value =~ s/<
>/$day/g; # And <> with surname (?) diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 001d9d8c15..bbdedf6d1d 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -132,12 +132,14 @@ sub generate_subfield_form { if ( ! defined( $value ) || $value eq '') { $value = $subfieldlib->{defaultvalue}; if ( $value ) { - # get today date & replace <>, <>, <
> if provided in the default value + # get today date & replace <>, <>, <>, <
> if provided in the default value my $today_dt = dt_from_string; my $year = $today_dt->strftime('%Y'); + my $shortyear = $today_dt->strftime('%y'); my $month = $today_dt->strftime('%m'); my $day = $today_dt->strftime('%d'); $value =~ s/<>/$year/g; + $value =~ s/<>/$shortyear/g; $value =~ s/<>/$month/g; $value =~ s/<
>/$day/g; # And <> with surname (?) -- 2.28.0