* being processed OR if the dialog is manually skipped.
* Returns payment args (with 2ndry auth data) on successful Submit.
*/
+// TODO: move this designation into the database
+var NO_REFUND_CIRC_MODIFIERS = ['1', '7', '45', '46', '66', '40', '41'];
function handle_lost_payment_dialog(payment_blob) {
var lostpaid_xacts = [];
row_ids.forEach(function(row_id) {
var row_params = g.row_map[row_id];
var circ = row_params.row.my.circ;
- if (!circ) return;
- if (circ.id() == xact[0]) {
- if (circ.stop_fines() == 'LOST' && !circ.checkin_time()) {
- lostpaid_xacts.push(xact[0]);
- }
+ var copy = row_params.row.my.acp;
+
+ if (!circ || !copy) return;
+ if (circ.id() != xact[0]) return;
+
+ if (circ.stop_fines() == 'LOST' && // lost payment
+ !circ.checkin_time() && // still checked out
+ NO_REFUND_CIRC_MODIFIERS.indexOf(''+copy.circ_modifier()) < 0) {
+
+ lostpaid_xacts.push(xact[0]);
}
});
});
return;
}
- payment_blob = handle_lost_payment_dialog(payment_blob);
- if (payment_blob === null) return; // payment canceled via dialog
+ if (payment_blob.payment_type == 'cash_payment' ||
+ payment_blob.payment_type == 'check_payment') {
+ payment_blob = handle_lost_payment_dialog(payment_blob);
+
+ if (payment_blob === null) return; // canceled via dialog
+ }
if ( pay( payment_blob ) ) {