billing and payment summary views
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sat, 2 Dec 2006 02:49:46 +0000 (02:49 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sat, 2 Dec 2006 02:49:46 +0000 (02:49 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_0@6646 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/reporter-schema.sql

index 2cfd939..1a640da 100644 (file)
                        <field reporter:label="Transaction Payments" name="payments" oils_obj:array_position="28" oils_persist:virtual="true" />
                        <field reporter:label="Base Transaction" name="billable_transaction" oils_obj:array_position="29" oils_persist:virtual="true" />
                        <field reporter:label="Circulation Type" name="circ_type" oils_obj:array_position="30" oils_persist:virtual="true" />
+                       <field reporter:label="Billing Totals" name="billing_total" oils_obj:array_position="31" oils_persist:virtual="true" />
+                       <field reporter:label="Payment Totals" name="payment_total" oils_obj:array_position="32" oils_persist:virtual="true" />
                </fields>
                <links>
                        <link field="billable_transaction" reltype="might_have" key="id" map="" class="mbt"/>
                        <link field="max_fine_rule" reltype="has_a" key="name" map="" class="crmf"/>
                        <link field="recuring_fine_rule" reltype="has_a" key="name" map="" class="crrf"/>
                        <link field="circ_type" reltype="might_have" key="id" map="" class="rcirct"/>
+                       <link field="billing_total" reltype="might_have" key="xact" map="" class="rxbt"/>
+                       <link field="payment_total" reltype="might_have" key="xact" map="" class="rxpt"/>
                </links>
        </class>
        <class id="ccnbi" controller="open-ils.cstore" oils_obj:fieldmapper="container::call_number_bucket_item" oils_persist:tablename="container.call_number_bucket_item">
                        <field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
                        <field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
                        <field name="status" oils_obj:array_position="3" oils_persist:virtual="true" />
-                       <field name="transit" oils_obj:array_position="4" oils_persist:virtual="true" />
+                       <field reporter:label="Transit" name="transit" oils_obj:array_position="4" oils_persist:virtual="true" />
                        <field reporter:label="Capture Date/Time" name="capture_time" oils_obj:array_position="5" oils_persist:virtual="false" reporter:datatype="timestamp"/>
                        <field reporter:label="Currently Targeted Copy" name="current_copy" oils_obj:array_position="6" oils_persist:virtual="false" />
                        <field reporter:label="Notify by Email?" name="email_notify" oils_obj:array_position="7" oils_persist:virtual="false" reporter:datatype="bool"/>
                        <field reporter:label="Notifications Phone Number" name="phone_notify" oils_obj:array_position="15" oils_persist:virtual="false" />
                        <field reporter:label="Pickup Library" name="pickup_lib" oils_obj:array_position="16" oils_persist:virtual="false" />
                        <field reporter:label="Last Targeting Date/Time" name="prev_check_time" oils_obj:array_position="17" oils_persist:virtual="false" reporter:datatype="timestamp"/>
-                       <field name="request_lib" oils_obj:array_position="18" oils_persist:virtual="false" />
+                       <field reporter:label="Requesting Library" name="request_lib" oils_obj:array_position="18" oils_persist:virtual="false" />
                        <field reporter:label="Request Date/Time" name="request_time" oils_obj:array_position="19" oils_persist:virtual="false" reporter:datatype="timestamp"/>
                        <field reporter:label="Requesting User" name="requestor" oils_obj:array_position="20" oils_persist:virtual="false" />
                        <field reporter:label="Item Selection Depth" name="selection_depth" oils_obj:array_position="21" oils_persist:virtual="false" />
                        <field reporter:label="Selection Locus" name="selection_ou" oils_obj:array_position="22" oils_persist:virtual="false" />
-                       <field name="target" oils_obj:array_position="23" oils_persist:virtual="false" />
-                       <field name="usr" oils_obj:array_position="24" oils_persist:virtual="false" />
+                       <field reporter:label="Target Object ID" name="target" oils_obj:array_position="23" oils_persist:virtual="false" />
+                       <field reporter:label="Hold User" name="usr" oils_obj:array_position="24" oils_persist:virtual="false" />
                        <field reporter:label="Hold Cancel Date/Time" name="cancel_time" oils_obj:array_position="25" oils_persist:virtual="false" reporter:datatype="timestamp"/>
                        <field name="notify_time" oils_obj:array_position="26" oils_persist:virtual="true" reporter:datatype="timestamp"/>
                        <field name="notify_count" oils_obj:array_position="27" oils_persist:virtual="true" reporter:datatype="int" />
-                       <field name="notifications" oils_obj:array_position="28" oils_persist:virtual="true" />
+                       <field reporter:label="Notifications" name="notifications" oils_obj:array_position="28" oils_persist:virtual="true" />
+                       <field reporter:label="Bib Record Link" name="bib_rec" oils_obj:array_position="29" oils_persist:virtual="true"/>
                </fields>
                <links>
                        <link field="fulfillment_lib" reltype="has_a" key="id" map="" class="aou"/>
                        <link field="selection_ou" reltype="has_a" key="id" map="" class="aou"/>
                        <link field="requestor" reltype="has_a" key="id" map="" class="au"/>
                        <link field="current_copy" reltype="has_a" key="id" map="" class="acp"/>
-                       <link reporter:label="Hold User" field="usr" reltype="has_a" key="id" map="" class="au"/>
-                       <link reporter:label="Requesting Library" field="request_lib" reltype="has_a" key="id" map="" class="aou"/>
-                       <link reporter:label="Transit" field="transit" reltype="might_have" key="hold" map="" class="ahtc"/>
-                       <link reporter:label="Notifications" field="notifications" reltype="has_many" key="hold" map="" class="ahn"/>
-                       <link reporter:label="Eligible Copies" field="eligible_copies" reltype="has_many" key="hold" map="target_copy" class="ahcm"/>
+                       <link field="usr" reltype="has_a" key="id" map="" class="au"/>
+                       <link field="request_lib" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="transit" reltype="might_have" key="hold" map="" class="ahtc"/>
+                       <link field="notifications" reltype="has_many" key="hold" map="" class="ahn"/>
+                       <link field="eligible_copies" reltype="has_many" key="hold" map="target_copy" class="ahcm"/>
+                       <link field="bib_rec" reltype="might_have" key="id" map="" class="rhrr"/>
                </links>
        </class>
        <class id="aou" controller="open-ils.cstore" oils_obj:fieldmapper="actor::org_unit" oils_persist:tablename="actor.org_unit" reporter:label="Organizational Unit">
                        <field name="billings" oils_obj:array_position="9" oils_persist:virtual="true" />
                        <field name="payments" oils_obj:array_position="10" oils_persist:virtual="true" />
                        <field name="billable_transaction" oils_obj:array_position="11" oils_persist:virtual="true" />
+                       <field reporter:label="Billing Totals" name="billing_total" oils_obj:array_position="31" oils_persist:virtual="true" />
+                       <field reporter:label="Payment Totals" name="payment_total" oils_obj:array_position="32" oils_persist:virtual="true" />
                </fields>
                <links>
                        <link field="usr" reltype="has_a" key="id" map="" class="au"/>
                        <link field="payments" reltype="has_many" key="xact" map="" class="mp"/>
                        <link field="billings" reltype="has_many" key="xact" map="" class="mb"/>
                        <link field="billing_location" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="billing_total" reltype="might_have" key="xact" map="" class="rxbt"/>
+                       <link field="payment_total" reltype="might_have" key="xact" map="" class="rxpt"/>
                </links>
        </class>
        <class id="cbs" controller="open-ils.cstore" oils_obj:fieldmapper="config::bib_source" oils_persist:tablename="config.bib_source">
                        <field name="grocery" oils_obj:array_position="7" oils_persist:virtual="true" />
                        <field name="circulation" oils_obj:array_position="8" oils_persist:virtual="true" />
                        <field reporter:label="Billing Line Items" name="billings" oils_obj:array_position="9" oils_persist:virtual="true" />
-                       <field reporter:label="Payments" name="payments" oils_obj:array_position="10" oils_persist:virtual="true" />
+                       <field reporter:label="Payment Line Items" name="payments" oils_obj:array_position="10" oils_persist:virtual="true" />
+                       <field reporter:label="Billing Totals" name="billing_total" oils_obj:array_position="31" oils_persist:virtual="true" />
+                       <field reporter:label="Payment Totals" name="payment_total" oils_obj:array_position="32" oils_persist:virtual="true" />
                </fields>
                <links>
                        <link field="grocery" reltype="might_have" key="id" map="" class="mg"/>
                        <link field="usr" reltype="has_a" key="id" map="" class="au"/>
                        <link field="payments" reltype="has_many" key="xact" map="" class="mp"/>
                        <link field="billings" reltype="has_many" key="xact" map="" class="mb"/>
+                       <link field="billing_total" reltype="might_have" key="xact" map="" class="rxbt"/>
+                       <link field="payment_total" reltype="might_have" key="xact" map="" class="rxpt"/>
                </links>
        </class>
        <class id="actsce" controller="open-ils.cstore" oils_obj:fieldmapper="actor::stat_cat_entry" oils_persist:tablename="actor.stat_cat_entry" reporter:label="User Stat Cat Entry">
                        <link field="id" reltype="might_have" key="id" map="" class="circ"/>
                </links>
        </class>
+       <class id="rhrr" controller="open-ils.reporter-store" oils_obj:fieldmapper="reporter::hold_request_record" oils_persist:tablename="reporter.hold_request_record">
+               <fields oils_persist:primary="id">
+                       <field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
+                       <field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
+                       <field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
+                       <field reporter:label="Hold ID" name="id" oils_obj:array_position="3" oils_persist:virtual="false" reporter:datatype="int" />
+                       <field reporter:label="Hold Target" name="target" oils_obj:array_position="4" oils_persist:virtual="false" reporter:datatype="int" />
+                       <field reporter:label="Hold Request Type" name="hold_type" oils_obj:array_position="5" oils_persist:virtual="false"/>
+                       <field reporter:label="Target Bib Record" name="bib_record" oils_obj:array_position="6" oils_persist:virtual="false"/>
+               </fields>
+               <links>
+                       <link field="id" reltype="might_have" key="id" map="" class="ahr"/>
+                       <link field="bib_record" reltype="has_a" key="id" map="" class="bre"/>
+               </links>
+       </class>
+       <class id="rxbt" controller="open-ils.reporter-store" oils_obj:fieldmapper="reporter::xact_billing_totals" oils_persist:tablename="reporter.xact_billing_totals">
+               <fields oils_persist:primary="xact">
+                       <field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
+                       <field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
+                       <field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
+                       <field reporter:label="Transaction ID" name="xact" oils_obj:array_position="3" oils_persist:virtual="false" reporter:datatype="int" />
+                       <field reporter:label="Unvoided Billing Amount" name="unvoided" oils_obj:array_position="4" oils_persist:virtual="false" reporter:datatype="int" />
+                       <field reporter:label="Voided Billing Amount" name="voided" oils_obj:array_position="5" oils_persist:virtual="false"/>
+                       <field reporter:label="Total Billing Amount" name="total" oils_obj:array_position="6" oils_persist:virtual="false"/>
+               </fields>
+               <links>
+                       <link field="xact" reltype="might_have" key="id" map="" class="mbt"/>
+               </links>
+       </class>
+       <class id="rxpt" controller="open-ils.reporter-store" oils_obj:fieldmapper="reporter::xact_paid_totals" oils_persist:tablename="reporter.xact_paid_totals">
+               <fields oils_persist:primary="xact">
+                       <field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
+                       <field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
+                       <field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
+                       <field reporter:label="Transaction ID" name="xact" oils_obj:array_position="3" oils_persist:virtual="false" reporter:datatype="int" />
+                       <field reporter:label="Unvoided Paid Amount" name="unvoided" oils_obj:array_position="4" oils_persist:virtual="false" reporter:datatype="int" />
+                       <field reporter:label="Voided (Returned) Paid Amount" name="voided" oils_obj:array_position="5" oils_persist:virtual="false"/>
+                       <field reporter:label="Total Paid Amount" name="total" oils_obj:array_position="6" oils_persist:virtual="false"/>
+               </fields>
+               <links>
+                       <link field="xact" reltype="might_have" key="id" map="" class="mbt"/>
+               </links>
+       </class>
 </IDL>
index 8990e46..55c6e57 100644 (file)
@@ -174,5 +174,37 @@ SELECT     id,
        END AS "type"
   FROM action.circulation;
 
+CREATE OR REPLACE VIEW reporter.hold_request_record AS
+SELECT id,
+       target,
+       hold_type,
+       CASE
+               WHEN hold_type = 'T'
+                       THEN target
+               WHEN hold_type = 'V'
+                       THEN (SELECT cn.record FROM asset.call_number cn WHERE cn.id = ahr.target)
+               WHEN hold_type = 'C'
+                       THEN (SELECT cn.record FROM asset.call_number cn JOIN asset.copy cp ON (cn.id = cp.call_number) WHERE cp.id = ahr.target)
+               WHEN hold_type = 'M'
+                       THEN (SELECT mr.master_record FROM metabib.metarecord mr WHERE mr.id = ahr.target)
+       END AS bib_record
+  FROM action.hold_request ahr;
+
+CREATE OR REPLACE VIEW reporter.xact_billing_totals AS
+SELECT b.xact,
+       SUM( CASE WHEN b.voided THEN 0 ELSE amount END ) as unvoided,
+       SUM( CASE WHEN b.voided THEN amount ELSE 0 END ) as voided,
+       SUM( amount ) as total
+  FROM money.billing b
+  GROUP BY 1;
+
+CREATE OR REPLACE VIEW reporter.xact_paid_totals AS
+SELECT b.xact,
+       SUM( CASE WHEN b.voided THEN 0 ELSE amount END ) as unvoided,
+       SUM( CASE WHEN b.voided THEN amount ELSE 0 END ) as voided,
+       SUM( amount ) as total
+  FROM money.payment b
+  GROUP BY 1;
+
 COMMIT;