SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+INSERT INTO config.internal_flag (name, value, enabled) VALUES (
+ 'serial.rematerialize_on_same_holding_code', NULL, FALSE
+);
+
+INSERT INTO config.org_unit_setting_type (
+ name, label, grp, description, datatype
+) VALUES (
+ 'serial.default_display_grouping',
+ 'Default display grouping for serials distributions presented in the OPAC.',
+ 'serial',
+ 'Default display grouping for serials distributions presented in the OPAC. This can be "enum" or "chron".',
+ 'string'
+);
+
ALTER TABLE serial.distribution
ADD COLUMN display_grouping TEXT NOT NULL DEFAULT 'chron'
CHECK (display_grouping IN ('enum', 'chron'));
use MARC::Field;
use JSON::XS;
-# Do nothing if holding_code has not changed.
-# XXX may need to add a global flag that acts like 'ingest.reingest.force_on_same_marc'
+# Do nothing if holding_code has not changed...
+
if ($_TD->{new}{holding_code} eq $_TD->{old}{holding_code}) {
- return;
+ # ... unless the following internal flag is set.
+
+ my $flag_rv = spi_exec_query(q{
+ SELECT * FROM config.internal_flag
+ WHERE name = 'serial.rematerialize_on_same_holding_code' AND enabled
+ }, 1);
+ return unless $flag_rv->{processed};
}
+
my $holding_code = (new JSON::XS)->decode($_TD->{new}{holding_code});
my $field = new MARC::Field('999', @$holding_code); # tag doesnt matter
CREATE INDEX assist_holdings_display
ON serial.materialized_holding_code (issuance, subfield);
--- XXX add more indices to assist with other joins new to Serial.pm
-
CREATE TRIGGER materialize_holding_code
AFTER INSERT OR UPDATE ON serial.issuance
FOR EACH ROW EXECUTE PROCEDURE serial.materialize_holding_code() ;
--- XXX need to materialize_holding_code() for all existing rows in serial.issuance
--- at time of upgrde script execution as well.
+-- starting here, we materialize all existing holding codes.
+
+UPDATE config.internal_flag
+ SET enabled = TRUE
+ WHERE name = 'serial.rematerialize_on_same_holding_code';
+
+UPDATE serial.issuance SET holding_code = holding_code;
+
+UPDATE config.internal_flag
+ SET enabled = FALSE
+ WHERE name = 'serial.rematerialize_on_same_holding_code';
+
+-- finish holding code materialization process
COMMIT;
}
});
+ var settings = fieldmapper.aou.fetchOrgSettingBatch(
+ openils.User.user.ws_ou(),
+ ["serial.default_display_grouping"]
+ );
+ var default_display_grouping = "chron";
+
+ if (settings && settings["serial.default_display_grouping"]) {
+ default_display_grouping =
+ settings["serial.default_display_grouping"].value;
+ }
+
dist_grid.overrideEditWidgets.display_grouping =
new dijit.form.FilteringSelect({
"store": _display_grouping_store,
"name": "display_grouping"
});
dist_grid.overrideEditWidgets.display_grouping.shove = {
- "create": "chron" /* XXX get default from OU setting?*/
+ "create": default_display_grouping
};
}
</script>