<IDL xmlns="http://opensrf.org/spec/IDL/base/v1" xmlns:oils_persist="http://open-ils.org/spec/opensrf/IDL/persistance/v1" xmlns:oils_obj="http://open-ils.org/spec/opensrf/IDL/objects/v1">
<!-- Virutal classes -->
+ <class id="mwps" oils_obj:fieldmapper="money::workstation_payment_summary" oils_persist:virtual="true">
+ <fields>
+ <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 name="workstation" oils_obj:array_position="3" oils_persist:virtual="true" />
+ <field name="cash_payment" oils_obj:array_position="4" oils_persist:virtual="true" />
+ <field name="check_payment" oils_obj:array_position="5" oils_persist:virtual="true" />
+ <field name="credit_card_payment" oils_obj:array_position="6" oils_persist:virtual="true" />
+ </fields>
+ <links>
+ <link field="workstation" reltype="has_a" key="id" map="" class="aws"/>
+ </links>
+ </class>
+
<class id="brn" oils_obj:fieldmapper="biblio::record_node" oils_persist:virtual="true">
<fields>
<field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
argc => 3,
);
+sub ou_desk_payments {
+ my $self = shift;
+ my $client = shift;
+ my $lib = shift;
+ my $startdate = shift;
+ my $enddate = shift;
+
+ my $sql = <<' SQL';
+
+SELECT *
+ FROM crosstab($$
+ SELECT ws.id,
+ p.payment_type,
+ SUM(COALESCE(p.amount,0.0))
+ FROM money.desk_payment_view p
+ JOIN actor.workstation ws ON (ws.id = p.cash_drawer)
+ WHERE p.payment_ts >= ?
+ AND p.payment_ts < ?::TIMESTAMPTZ + INTERVAL '1 day'
+ AND p.voided IS FALSE
+ AND ws.owning_lib = ?
+ GROUP BY 1, 2
+ ORDER BY 1,2
+ $$) AS X(
+ workstation int,
+ cash_payment numeric(10,2),
+ check_payment numeric(10,2),
+ credit_card_payment numeric(10,2) );
+
+ SQL
+
+ my $rows = money::payment->db_Main->selectall_arrayref( $sql, {}, $startdate, $enddate, $lib );
+
+ for my $r (@$rows) {
+ my $x = new Fieldmapper::money::workstation_payment_summary;
+ $x->workstation( actor::workstation->retrieve($$r[0])->to_fieldmapper );
+ $x->cash_payment($$r[1]);
+ $x->check_payment($$r[2]);
+ $x->credit_card_payment($$r[3]);
+
+ $client->respond($x);
+ }
+
+ return undef;
+}
+__PACKAGE__->register_method(
+ method => 'ou_desk_payments',
+ api_name => 'open-ils.storage.money.org_unit.desk_payments',
+ stream => 1,
+ argc => 3,
+);
+
+
1;