Maybe renew a customer when they top up
If they are expired and they top up, ask sgx-jmp to check if they and registered
and bill/renew them.
Require settled_after to be NOT NULL
Add settled_after to transactions table
Customer with no plan gets highest matching rate
Since we don't know their plan, be safe and pick the highest rate. This means
we can still get a sense of Transitional users' usage instead of not knowing at all.
Fix for cdr_with_charge performance
Allow check_and_notify_low_balance to be called outside of trigger
For use from, eg, jmp-pay
NOTIFY on low balance
This will be picked up by the LISTEN in sgx-jmp to auto-top-up or notify the
customer of low balance.
Get customer data from Redis
Insert charge for CDR
Trigger to insert a transaction charging the customer for the amount owed for
an INSERTed CDR.
Function to compute the amount to charge a customer for a given cdr
This takes into account how much of their "included" minute credit has already
been used in the calendar month.
Store plans data in a table
Ideally this would come via FDW, but for now we can easily have a script push to
this table from the source of truth.
Table for call_rates and view to augment CDRs with that data
For every $15 deposited, add one invite code
View to get all invites not yet used up.
Table to store invite codes and their status. Stores who make the code and
when, who used the code (if anyone has used it yet) and when, and the code
itself. Codes are single-use so once used_by_id is set the code cannot be used again.
plan_log uses a tsrange instead of two timestamps now
This is honestly just more correct, but also allows for easy checking of
non-overlapping ranges, which we now do.
Merge sub_cent_transaction plan item into transactions
Since none of this is deployed or tagged yet, there's no reason for the overly
complex alter table schenanigans. We have to leave the empty plan item though,
since it's in the git history and otherwise sqitch rebase would break
Will get the hang of this tooling!
Create table for cdr storage
Some of this data is not needed for billing (such as disposition, or full tel of
the other side vs a prefix) however it will be very useful if we expose call
logs to the user. If this is a privacy concern we can allow users to request
deletion of CDRs from past billing periods in the future.
View for the most current plan for each customer
This includes a plan even if it is expired, with the expires_at present for
checking if desired. This is because an expired user may still want to may a
payment or similar, and checking their plan is how we know what currency to
charge them in.