<name>circ_count</name>
<tag>circs</tag>
<iteration>0</iteration>
- <report_title>Open Circulations</report_title>
- <heading>Circulation Status.Migrated.Count of Circs</heading>
- <query>SELECT 'Closed Circulations', x_migrate::TEXT, COUNT(id) FROM action_circulation_legacy WHERE xact_finish IS NOT NULL GROUP BY 2 UNION ALL SELECT 'Open Circulations', x_migrate::TEXT, COUNT(id) FROM action_circulation_legacy WHERE xact_finish IS NULL GROUP BY 2</query>
+ <report_title>Migrated Circulations</report_title>
+ <heading>Circulation Status.Count of Circs</heading>
+ <query>SELECT 'Closed Circulations', COUNT(id) FROM action_circulation_legacy WHERE xact_finish IS NOT NULL AND x_migrate
+ UNION ALL SELECT 'Open Circulations', COUNT(id) FROM action_circulation_legacy WHERE xact_finish IS NULL AND x_migrate</query>
+ </report>
+
+ <report>
+ <name>circ_count_unmigrated</name>
+ <tag>circs</tag>
+ <iteration>0</iteration>
+ <report_title>Open Un-migrated Circulations</report_title>
+ <heading>Circulation Status.Count of Circs</heading>
+ <query>SELECT 'No Matching User', COUNT(id) FROM action_circulation_legacy WHERE xact_finish IS NULL AND x_migrate = FALSE AND usr IS NULL
+ UNION ALL SELECT 'No Matching Item', COUNT(id) FROM action_circulation_legacy WHERE xact_finish IS NULL AND x_migrate = FALSE AND target_copy IS NULL </query>
</report>
<report>
<iteration>0</iteration>
<report_title>Migrated Circulations by Duration, Fine and Max Fine</report_title>
<heading>Count of Circs.Duration.Fine.Max Fine.Migrated</heading>
- <query>SELECT COUNT(id), duration, recurring_fine, max_fine, x_migrate::TEXT FROM action_circulation_legacy WHERE x_migrate = TRUE GROUP BY 2, 3, 4, 5</query>
+ <query>SELECT COUNT(id), duration_rule, recurring_fine_rule, max_fine_rule, x_migrate::TEXT FROM action_circulation_legacy WHERE x_migrate = TRUE GROUP BY 2, 3, 4, 5</query>
</report>
<report>
<iteration>1</iteration>
<report_title>Circulations by Duration, Fine and Max Fine</report_title>
<heading>Count of Circs.Duration.Fine.Max Fine</heading>
- <query>SELECT COUNT(id), duration, recurring_fine, max_fine FROM action_circulation GROUP BY 2, 3, 4 ORDER BY 2, 3, 4</query>
+ <query>SELECT COUNT(id), duration_rule, recurring_fine_rule, max_fine_rule FROM action_circulation GROUP BY 2, 3, 4 ORDER BY 2, 3, 4</query>
</report>
<report>
<iteration>0</iteration>
<report_title>Circulations by Rules and Patron Group</report_title>
<heading>Count of Circs.Duration.Fine.Max Fine.User Group.Matchpoints</heading>
- <query>SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, pgt.name, x.buildrows FROM action_circulation_legacy acirc JOIN actor.usr au ON au.id = acirc.usr JOIN permission.grp_tree pgt ON pgt.id = au.profile JOIN (SELECT acirc.id, ARRAY_TO_STRING(find_cmm(acirc.id),',') AS buildrows FROM action_circulation_legacy acirc WHERE acirc.x_migrate = TRUE) x ON x.id = acirc.id WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6</query>
+ <query>SELECT COUNT(acirc.id), acirc.duration_rule, acirc.recurring_fine_rule, acirc.max_fine_rule, pgt.name, x.buildrows FROM action_circulation_legacy acirc JOIN actor.usr au ON au.id = acirc.usr JOIN permission.grp_tree pgt ON pgt.id = au.profile JOIN (SELECT acirc.id, ARRAY_TO_STRING(find_cmm(acirc.id),',') AS buildrows FROM action_circulation_legacy acirc WHERE acirc.x_migrate = TRUE) x ON x.id = acirc.id WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6</query>
</report>
<report>
<iteration>1</iteration>
<report_title>Circulations by Rules and Patron Group</report_title>
<heading>Count of Circs.Duration.Fine.Max Fine.User Group.Matchpoints</heading>
- <query>SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, pgt.name, x.buildrows FROM action_circulation acirc JOIN actor.usr au ON au.id = acirc.usr JOIN permission.grp_tree pgt ON pgt.id = au.profile JOIN (SELECT acirc.id, ARRAY_TO_STRING(find_cmm(acirc.id),',') AS buildrows FROM action_circulation acirc) x ON x.id = acirc.id GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6</query>
+ <query>SELECT COUNT(acirc.id), acirc.duration_rule, acirc.recurring_fine_rule, acirc.max_fine_rule, pgt.name, x.buildrows FROM action_circulation acirc JOIN actor.usr au ON au.id = acirc.usr JOIN permission.grp_tree pgt ON pgt.id = au.profile JOIN (SELECT acirc.id, ARRAY_TO_STRING(find_cmm(acirc.id),',') AS buildrows FROM action_circulation acirc) x ON x.id = acirc.id GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6</query>
</report>
<report>
<iteration>0</iteration>
<report_title>Circulations by Rules and Circulation Modifier</report_title>
<heading>Count of Circs.Duration.Fine.Max Fine.Circulation Modifier.Matchpoints</heading>
- <query>SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, ac.circ_modifier, x.buildrows FROM action_circulation_legacy acirc JOIN asset.copy ac ON ac.id = acirc.target_copy JOIN (SELECT acirc.id, ARRAY_TO_STRING(find_cmm(acirc.id),',') AS buildrows FROM action_circulation_legacy acirc WHERE acirc.x_migrate = TRUE) x ON x.id = acirc.id WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6</query>
+ <query>SELECT COUNT(acirc.id), acirc.duration_rule, acirc.recurring_fine_rule, acirc.max_fine_rule, ac.circ_modifier, x.buildrows FROM action_circulation_legacy acirc JOIN asset.copy ac ON ac.id = acirc.target_copy JOIN (SELECT acirc.id, ARRAY_TO_STRING(find_cmm(acirc.id),',') AS buildrows FROM action_circulation_legacy acirc WHERE acirc.x_migrate = TRUE) x ON x.id = acirc.id WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6</query>
</report>
<report>
<iteration>1</iteration>
<report_title>Circulations by Rules and Circulation Modifier</report_title>
<heading>Count of Circs.Duration.Fine.Max Fine.Circulation Modifier.Matchpoints</heading>
- <query>SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, ac.circ_modifier, x.buildrows FROM action_circulation acirc JOIN asset.copy ac ON ac.id = acirc.target_copy JOIN (SELECT acirc.id, ARRAY_TO_STRING(find_cmm(acirc.id),',') AS buildrows FROM action_circulation acirc) x ON x.id = acirc.id
+ <query>SELECT COUNT(acirc.id), acirc.duration_rule, acirc.recurring_fine_rule, acirc.max_fine_rule, ac.circ_modifier, x.buildrows FROM action_circulation acirc JOIN asset.copy ac ON ac.id = acirc.target_copy JOIN (SELECT acirc.id, ARRAY_TO_STRING(find_cmm(acirc.id),',') AS buildrows FROM action_circulation acirc) x ON x.id = acirc.id
GROUP BY 2, 3, 4, 5, 6 ORDER BY 2, 3, 4, 5, 6</query>
</report>
<iteration>0</iteration>
<report_title>Circulations by Rules and Org Unit</report_title>
<heading>Count of Circs.Duration.Fine.Max Fine.Library Branch</heading>
- <query>SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, aou.name FROM action_circulation_legacy acirc JOIN actor.org_unit aou ON aou.id = acirc.circ_lib WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5 ORDER BY 2, 3, 4, 5</query>
+ <query>SELECT COUNT(acirc.id), acirc.duration_rule, acirc.recurring_fine_rule, acirc.max_fine_rule, aou.name FROM action_circulation_legacy acirc JOIN actor.org_unit aou ON aou.id = acirc.circ_lib WHERE acirc.x_migrate = TRUE GROUP BY 2, 3, 4, 5 ORDER BY 2, 3, 4, 5</query>
</report>
<report>
<iteration>1</iteration>
<report_title>Circulations by Rules and Org Unit</report_title>
<heading>Count of Circs.Duration.Fine.Max Fine.Library Branch</heading>
- <query>SELECT COUNT(acirc.id), acirc.duration, acirc.recurring_fine, acirc.max_fine, aou.name FROM action_circulation acirc JOIN actor.org_unit aou ON aou.id = acirc.circ_lib GROUP BY 2, 3, 4, 5 ORDER BY 2, 3, 4, 5</query>
+ <query>SELECT COUNT(acirc.id), acirc.duration_rule, acirc.recurring_fine_rule, acirc.max_fine_rule, aou.name FROM action_circulation acirc JOIN actor.org_unit aou ON aou.id = acirc.circ_lib GROUP BY 2, 3, 4, 5 ORDER BY 2, 3, 4, 5</query>
</report>
<report>
</report>
<report>
+ <name>asset_precat</name>
+ <report_title>Precats (AKA Copies Without Bibs)</report_title>
+ <tag>assets</tag>
+ <iteration>0</iteration>
+ <heading>Copy Count.Migating</heading>
+ <query>SELECT COUNT(ac.id), ac.x_migrate::TEXT FROM asset_copy_legacy ac WHERE ac.x_bre_id = -1 GROUP BY 2</query>
+ </report>
+
+ <report>
<name>asset_circ_mod_copies_count</name>
<report_title>Copies by Circulation Modifier</report_title>
<tag>assets</tag>
<iteration>0</iteration>
<heading>Collision List</heading>
<query>SELECT ac.barcode FROM asset_copy_legacy ac WHERE ac.barcode ~* 'collision' ORDER BY 1 LIMIT 20</query>
- <note>This is a shortlist of patron barcode collisions that maxes out at 20. If there are more collisions we will need to run a custom report.</note>
+ <note>This is a shortlist of copy barcode collisions that maxes out at 20. If there are more collisions we will need to run a custom report.</note>
</report>
<report>
<query>SELECT COUNT(map.id), tag.tag_type, tag.label, tag.staff_note, tag.pub FROM asset_copy_tag tag JOIN asset_copy_tag_copy_map map ON map.tag = tag.id GROUP BY 2,3,4,5 ORDER BY 2,3</query>
</report>
+ <report>
+ <name>asset_copy_alerts</name>
+ <report_title>Copy Alerts</report_title>
+ <tag>assets</tag>
+ <iteration>0</iteration>
+ <heading>Alert Count.Alert Type</heading>
+ <query>SELECT COUNT(*), cat.name FROM asset_copy_alert aca JOIN config.copy_alert_type cat ON cat.id = aca.alert_type GROUP BY 2</query>
+ </report>
+
<!-- MONEY REPORTS -->
<report>
<!-- BIBS REPORTS -->
<report>
- <name>bibs</name>
- <report_title>Extracted Bibliographic Records</report_title>
+ <name>bibs_loaded</name>
+ <report_title>Loaded Bibliographic Records</report_title>
<tag>bibs</tag>
<iteration>0</iteration>
- <heading>Count.Deleted.Migrated</heading>
- <query>SELECT COUNT(bre.id), bre.deleted::TEXT, bre.x_migrate::TEXT FROM biblio_record_entry_legacy bre GROUP BY 2, 3 ORDER BY 2, 3</query>
+ <heading>Count.Loaded</heading>
+ <query>SELECT COUNT(bre.id), bre.x_migrate::TEXT FROM biblio_record_entry_legacy bre WHERE id IN (SELECT id FROM biblio.record_entry WHERE deleted = FALSE) GROUP BY 2 ORDER BY 2</query>
<note>False means the records are not deleted.</note>
</report>
<report>
- <name>bibs</name>
- <report_title>Extracted Bibliographic Records</report_title>
- <tag>bibs</tag>
- <iteration>1</iteration>
- <heading>Count</heading>
- <query>SELECT COUNT(id) FROM biblio_record_entry_stage WHERE x_migrate = TRUE</query>
- </report>
-
- <report>
<name>bibswovolumes</name>
<report_title>Bibliographic Records Without Volumes</report_title>
<tag>bibs</tag>
<query>SELECT COUNT(b.id) FROM biblio_monograph_part b</query>
</report>
+ <report>
+ <name>bib_merges</name>
+ <report_title>Bibliographic Merge Count</report_title>
+ <tag>bibs</tag>
+ <iteration>0</iteration>
+ <heading>Records Merged.Incumbent Records Merged Into</heading>
+ <query>SELECT SUM(array_length(records,1)), COUNT(*) FROM groups</query>
+ </report>
+
+ <report>
+ <name>bib_merges_by_search_format</name>
+ <report_title>Bibliographic Merges By Search Format</report_title>
+ <tag>bibs</tag>
+ <iteration>0</iteration>
+ <heading>Count.Item Type</heading>
+ <query>WITH g AS (SELECT UNNEST(records) FROM groups) SELECT COUNT(record), search_format_str FROM dedupe_batch WHERE record IN (SELECT * FROM g) GROUP BY 2</query>
+ </report>
+
+ </report>
+ <name>bibs_not_loaded</name>
+ <report_title>Bibliographic Records That Failed to Load</report_title>
+ <tag>bibs</tag>
+ <iteration>0</iteration>
+ <heading>Title.Author.Control Number</heading>
+ <query>SELECT LEFT(ARRAY_TO_STRING(oils_xpath( '//*[@tag="245"]/*[@code="a"]/text()', a.marc),''),50) AS "Title",
+ LEFT(ARRAY_TO_STRING(oils_xpath( '//*[@tag="100"]/*[@code="a"]/text()', a.marc),''),50) AS "Author",
+ ARRAY_TO_STRING(oils_xpath( '//*[@tag="001"]/text()', a.marc),'') AS "001"
+ FROM biblio_record_entry aLEFT JOIN biblio.record_entry b ON b.id = a.id WHERE b.id IS NULL AND a.x_migrate;
+ </query>
+ </report>
+
+
<!-- ACTORS REPORTS -->
<report>
</query>
</report>
+ <!-- NOTICES REPORTS -->
+
+ <report>
+ <name>notices_overview</name>
+ <tag>notices</tag>
+ <iteration>0</iteration>
+ <report_title>Overview of Notices for Migration</report_title>
+ <heading>ID.Active.Owner.Name.Delay.Validator.Reactor</heading>
+ <query>SELECT ed.id, ed.active, aou.shortname, LEFT(ed.name,25) || '...', ed.delay, ed.validator, ed.reactor
+ FROM action_trigger.event_definition ed
+ JOIN actor.org_unit aou ON aou.id = ed.owner
+ WHERE ed.owner IN (SELECT DISTINCT home_ou FROM actor_usr)
+ OR ed.owner IN (SELECT DISTINCT parent_ou FROM actor.org_unit WHERE id in (SELECT DISTINCT home_ou FROM actor_usr));
+ </query>
+ </report>
+
+ <report>
+ <name>notices_count</name>
+ <tag>notices</tag>
+ <iteration>0</iteration>
+ <report_title>Count of Notices Run with State</report_title>
+ <heading>Count of Notices.State.ID.Owner.Name</heading>
+ <query>SELECT COUNT(ate.id), ate.state, ed.id, aou.shortname, LEFT(ed.name,25) || '...'
+ FROM action_trigger.event_definition ed
+ JOIN actor.org_unit aou ON aou.id = ed.owner
+ JOIN action_trigger.event ate ON ate.event_def = ed.id
+ WHERE ed.owner IN (SELECT DISTINCT home_ou FROM actor_usr)
+ OR ed.owner IN (SELECT DISTINCT parent_ou FROM actor.org_unit WHERE id in (SELECT DISTINCT home_ou FROM actor_usr))
+ GROUP BY 2,3,4;
+ </query>
+ </report>
+
+
</reports_file>