billing_type TEXT,
payment_ou INT,
billing_ou INT,
+ billing_leftover NUMERIC(8,2), -- debugging
+ payment_leftover NUMERIC(8,2), -- debugging
+ used_billings BIGINT[], -- debugging
+ billing_l INT, -- debugging
CONSTRAINT x_p_b_once UNIQUE (xact,payment,billing)
);
current_result.billing_type = current_billing.billing_type;
current_result.payment_ou = payment_ou;
current_result.billing_ou = billing_ou;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.used_billings = billing_id_used; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
IF billing_remainder >= payment_remainder THEN
current_result.amount = payment_remainder;
continuing_payment := TRUE;
END IF;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.used_billings = billing_id_used; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
RETURN NEXT current_result;
-- Done paying the billing rows when we run out of rows to pay (out of bounds)
EXIT WHEN array_length(billing_id_used, 1) = billing_row_count;
current_result.billing_type = current_billing.billing_type;
current_result.payment_ou = payment_ou;
current_result.billing_ou = billing_ou;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.used_billings = billing_id_used; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
IF billing_remainder >= payment_remainder THEN
current_result.amount = payment_remainder;
billing_offset = billing_offset + 1;
billing_id_used = array_append( billing_id_used, current_billing_id );
END IF;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.used_billings = billing_id_used; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
RETURN NEXT current_result;
IF continuing_payment_last_row THEN
current_result.billing_type = current_billing.billing_type;
current_result.payment_ou = payment_ou;
current_result.billing_ou = billing_ou;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.used_billings = billing_id_used; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
IF billing_remainder >= payment_remainder THEN
current_result.amount = payment_remainder;
billing_id_used = array_append( billing_id_used, current_billing_id );
END IF;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.used_billings = billing_id_used; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
RETURN NEXT current_result;
EXIT WHEN payment_remainder = 0.0;
END LOOP;
current_result.billing_type = current_billing.billing_type;
current_result.payment_ou = payment_ou;
current_result.billing_ou = billing_ou;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
IF billing_remainder >= payment_remainder THEN
current_result.amount = payment_remainder;
END IF;
current_result.amount = -current_result.amount;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.used_billings = billing_id_used; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
+
RETURN NEXT current_result;
-- Done paying the billing rows when we run out of rows to pay (out of bounds)
EXIT WHEN billing_offset = billing_row_count + 1;
current_result.billing_type = current_billing.billing_type;
current_result.payment_ou = payment_ou;
current_result.billing_ou = billing_ou;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
IF billing_remainder >= payment_remainder THEN
current_result.amount = payment_remainder;
END IF;
current_result.amount = -current_result.amount;
+ current_result.billing_leftover = billing_remainder; -- debugging
+ current_result.payment_leftover = payment_remainder; -- debugging
+ current_result.used_billings = billing_id_used; -- debugging
+ current_result.billing_l = billing_loop; -- debugging
RETURN NEXT current_result;
EXIT WHEN payment_remainder = 0.0;
INSERT INTO money.materialized_payment_by_billing_type (
xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+billing_leftover,payment_leftover,used_billings,billing_l -- debugging
) SELECT xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+billing_leftover,payment_leftover,used_billings,billing_l -- debugging
FROM money.payment_by_billing_type( NEW.xact );
ELSIF TG_OP = 'UPDATE' THEN
INSERT INTO money.materialized_payment_by_billing_type (
xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+billing_leftover,payment_leftover,used_billings,billing_l -- debugging
) SELECT xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+billing_leftover,payment_leftover,used_billings,billing_l -- debugging
FROM money.payment_by_billing_type( NEW.xact );
IF NEW.xact <> OLD.xact THEN
INSERT INTO money.materialized_payment_by_billing_type (
xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+billing_leftover,payment_leftover,used_billings,billing_l -- debugging
) SELECT xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+billing_leftover,payment_leftover,used_billings,billing_l -- debugging
FROM money.payment_by_billing_type( OLD.xact );
END IF;
INSERT INTO money.materialized_payment_by_billing_type (
xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+billing_leftover,payment_leftover,used_billings,billing_l -- debugging
) SELECT xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+billing_leftover,payment_leftover,used_billings,billing_l -- debugging
FROM money.payment_by_billing_type( OLD.xact );
RETURN OLD;
INSERT INTO money.materialized_payment_by_billing_type (
xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+ billing_leftover,payment_leftover,used_billings,billing_l -- debugging
) SELECT xact, payment, billing, payment_ts, billing_ts,
- payment_type, billing_type, amount, billing_ou, payment_ou
+ payment_type, billing_type, amount, billing_ou, payment_ou,
+ billing_leftover,payment_leftover,used_billings,billing_l -- debugging
FROM money.payment_by_billing_type( p.xact );
END LOOP;