</actions>
</permacrud>
</class>
+ <class id="rcbed"
+ controller="open-ils.cstore open-ils.pcrud"
+ oils_obj:fieldmapper="reporter::cataloged_browse_entry_detail"
+ oils_persist:tablename="reporter.cataloged_browse_entry_detail"
+ reporter:label="Cataloged Headings"
+ reporter:core="true" oils_persist:readonly="true">
+ <fields>
+ <field name="browse_axis" reporter:datatype="text" reporter:label="Heading Type"/>
+ <field name="heading_date" reporter:datatype="timestamp" reporter:label="Heading Date"/>
+ <field name="prev_entry_value" reporter:datatype="text" reporter:label="Previous Heading"/>
+ <field name="prev_entry" reporter:datatype="link" reporter:label="Previous Browse Entry"/>
+ <field name="prev_bib_record" reporter:datatype="link" reporter:label="Previous Bib Record"/>
+ <field name="prev_field_label" reporter:datatype="text" reporter:label="Previous Field Label"/>
+ <field name="prev_field_def" reporter:datatype="link" reporter:label="Previous Field Definition"/>
+ <field name="prev_auth_tag" reporter:datatype="text" reporter:label="Previous Authority Tag"/>
+ <field name="entry_value" reporter:datatype="text" reporter:label="Heading"/>
+ <field name="entry" reporter:datatype="link" reporter:label="Browse Entry"/>
+ <field name="entry_create_date" reporter:datatype="timestamp" reporter:label="Browse Entry Create Date"/>
+ <field name="bib_record" reporter:datatype="link" reporter:label="Bib Record"/>
+ <field name="field_label" reporter:datatype="text" reporter:label="Field Label"/>
+ <field name="field_def" reporter:datatype="link" reporter:label="Field Definition"/>
+ <field name="bib_edit_date" reporter:datatype="timestamp" reporter:label="Bib Record Edit Date"/>
+ <field name="bib_create_date" reporter:datatype="timestamp" reporter:label="Bib Record Create Date"/>
+ <field name="bib_cataloging_date" reporter:datatype="timestamp" reporter:label="Bib Record Cataloging Date"/>
+ <field name="bib_marc_001" reporter:datatype="text" reporter:label="Bib Record MARC 001"/>
+ <field name="bib_marc_1xx" reporter:datatype="text" reporter:label="Bib Record MARC 1XX"/>
+ <field name="bib_marc_245" reporter:datatype="text" reporter:label="Bib Record MARC 245"/>
+ <field name="mattype" reporter:datatype="text" reporter:label="Material Type"/>
+ <field name="bib_editor" reporter:datatype="link" reporter:label="Bib Record Editor"/>
+ <field name="bib_editor_usrname" reporter:datatype="text" reporter:label="Bib Record Editor Username"/>
+ <field name="next_entry" reporter:datatype="link" reporter:label="Next Browse Entry"/>
+ <field name="next_entry_value" reporter:datatype="text" reporter:label="Next Heading"/>
+ <field name="next_bib_record" reporter:datatype="link" reporter:label="Next Bib Record"/>
+ <field name="next_field_label" reporter:datatype="text" reporter:label="Next Field Label"/>
+ <field name="next_field_def" reporter:datatype="link" reporter:label="Next Field Definition"/>
+ <field name="next_auth_tag" reporter:datatype="text" reporter:label="Next Authority Tag"/>
+ </fields>
+ <links>
+ <link field="prev_entry" reltype="has_a" key="id" map="" class="mbae"/>
+ <link field="prev_bib_record" reltype="has_a" key="id" map="" class="bre"/>
+ <link field="prev_field_def" reltype="has_a" key="id" map="" class="cmf"/>
+ <link field="entry" reltype="has_a" key="id" map="" class="mbae"/>
+ <link field="bib_record" reltype="has_a" key="id" map="" class="bre"/>
+ <link field="bib_editor" reltype="has_a" key="id" map="" class="au"/>
+ <link field="field_def" reltype="has_a" key="id" map="" class="cmf"/>
+ <link field="next_entry" reltype="has_a" key="id" map="" class="mbae"/>
+ <link field="next_bib_record" reltype="has_a" key="id" map="" class="bre"/>
+ <link field="next_field_def" reltype="has_a" key="id" map="" class="cmf"/>
+ </links>
+ <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+ <actions>
+ <retrieve permission="STAFF_LOGIN" global_required='true'/>
+ </actions>
+ </permacrud>
+ </class>
<!-- ********************************************************************************************************************* -->
</IDL>
--- /dev/null
+
+CREATE VIEW reporter.live_cataloged_browse_entry AS
+ WITH cataloged_entries AS (
+ SELECT entry.id AS entry,
+ entry.value AS entry_value,
+ entry.sort_value AS entry_sort_value,
+ entry.create_date AS entry_create_date,
+ map.source AS bib_record,
+ map.def AS field_def,
+ bre.cataloging_date AS bib_cataloging_date,
+ bre.editor AS bib_editor,
+ bre.edit_date AS bib_edit_date,
+ bre.create_date AS bib_create_date,
+ cmf.field_class AS browse_axis,
+ cmf.label AS field_label,
+ ccvm.code AS mattype,
+ GREATEST(bre.cataloging_date, entry.create_date) AS heading_date,
+ rank() OVER (PARTITION BY entry.id ORDER BY bre.cataloging_date, map.id) AS rank
+ FROM (((((metabib.browse_entry entry
+ JOIN metabib.browse_entry_def_map map ON ((map.entry = entry.id)))
+ JOIN config.metabib_field cmf ON ((cmf.id = map.def)))
+ JOIN biblio.record_entry bre ON ((bre.id = map.source)))
+ JOIN metabib.record_attr_vector_list vec ON ((vec.source = bre.id)))
+ JOIN config.coded_value_map ccvm ON (((ccvm.ctype = 'mattype'::text) AND (ccvm.id = ANY (vec.vlist)))))
+ WHERE ((bre.cataloging_date IS NOT NULL) AND (cmf.field_class = ANY (ARRAY['author'::text, 'subject'::text, 'series'::text])))
+ )
+ SELECT all_entries.entry,
+ all_entries.entry_value,
+ all_entries.entry_sort_value,
+ all_entries.entry_create_date,
+ all_entries.bib_record,
+ all_entries.field_def,
+ all_entries.bib_cataloging_date,
+ all_entries.bib_editor,
+ all_entries.bib_edit_date,
+ all_entries.bib_create_date,
+ all_entries.browse_axis,
+ all_entries.field_label,
+ all_entries.mattype,
+ all_entries.heading_date,
+ all_entries.rank
+ FROM cataloged_entries all_entries
+ WHERE (all_entries.rank = 1);
+
+
+CREATE VIEW reporter.cataloged_browse_entry_detail AS
+ SELECT entry.entry,
+ entry.entry_value,
+ entry.entry_sort_value,
+ entry.entry_create_date,
+ entry.bib_record,
+ entry.field_def,
+ entry.bib_cataloging_date,
+ entry.bib_editor,
+ entry.bib_edit_date,
+ entry.bib_create_date,
+ entry.browse_axis,
+ entry.field_label,
+ entry.mattype,
+ entry.heading_date,
+ entry.rank,
+ usr.usrname AS bib_editor_usrname,
+ evergreen.marc_tag_to_string('1'::text, bre.marc) AS bib_marc_1xx,
+ evergreen.marc_tag_to_string('245'::text, bre.marc) AS bib_marc_245,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_entry AS prev_entry,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_entry_value AS prev_entry_value,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_entry_sort_value AS prev_entry_sort_value,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_entry_create_date AS prev_entry_create_date,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_record AS prev_bib_record,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_editor AS prev_bib_editor,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_edit_date AS prev_bib_edit_date,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_create_date AS prev_bib_create_date,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_bib_cataloging_date AS prev_bib_cataloging_date,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_field_def AS prev_field_def,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_field_label AS prev_field_label,
+ (reporter.metabib_browse_entry_window_prev(entry.browse_axis, entry.entry_sort_value)).prev_auth_tag AS prev_auth_tag,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_entry AS next_entry,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_entry_value AS next_entry_value,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_entry_sort_value AS next_entry_sort_value,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_entry_create_date AS next_entry_create_date,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_record AS next_bib_record,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_editor AS next_bib_editor,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_edit_date AS next_bib_edit_date,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_create_date AS next_bib_create_date,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_bib_cataloging_date AS next_bib_cataloging_date,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_field_def AS next_field_def,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_field_label AS next_field_label,
+ (reporter.metabib_browse_entry_window_next(entry.browse_axis, entry.entry_sort_value)).next_auth_tag AS next_auth_tag
+ FROM ((reporter.live_cataloged_browse_entry entry
+ JOIN biblio.record_entry bre ON ((bre.id = entry.bib_record)))
+ JOIN actor.usr usr ON ((usr.id = bre.editor)))
+ ORDER BY
+ CASE entry.browse_axis
+ WHEN 'author'::text THEN 1
+ WHEN 'subject'::text THEN 2
+ ELSE 3
+ END, entry.entry_sort_value;
+
+