A common use case of coreBOS is to control the amount of money a client owes us or that he has prepaid us. Information we need to know in order to reclaim those amounts or to reimburse them in subsequent purchases.
One very trivial and manual way of doing this is just creating a field on the account (or contact) module with the amount and updating accordingly each time a monetary movement is produced. This approach is just a little better than writing down the amount in a note pad or the dreaded spread sheet, but just as effective. Let's look into a more interesting solution.
The coreBOS Payment module serves the purpose of registering all the movements of money that happen in the company. It is like a very basic accounting ledger more oriented towards liquidity control than full accounting.
Using the payment module we can easily register all the movements of money coming from and going to our clients, additionally relating them to invoices or other coreBOS records. The payment module has a checkbox field named "credit" which indicates if the money movement is incoming (credit not checked = debit) to our business or outgoing (credit checked) from our company. So we can sum all the incoming and outgoing amounts and a simple difference will give us the positive or negative balance of our client, their current wallet contents. We can obtain these numbers using workflows and save the amounts in the same field we proposed as a solution at the start of this article, obtaining a fully traceable history of movements along with the total current state of the clients' balance with just a few custom fields and workflows. You can even define workflows to alert you of certain situations you may want to control.
Let's see some things we can do with this approach.
Total Paid Amount
Simply applying the logic explained above and accumulating the amounts accordingly on a field in the account or contact we will obtain the all-time total amount of money obtained by a client. Sadly there is no way of breaking down that amount per time which would be the work of a reporting system, not workflows.
Invoice Amount due and Paid status
Instead (or also) of accumulating the amount on the Account or Contact, we can accumulate them on the Invoice, effectively implementing a full payment control system on each invoice and even automatically changing the invoice status accordingly.
Wallet or Current Balance Control
In this scenario, we want to collect money from a contact and distribute that money to another contact or provider while retaining a percentage for our work. So, for example, if a contact pays a service we will have a debit payment record related to the service and the contact which increments the amount of money received by him. If we now need to pay a provider with that money while keeping a percentage, we will create four new payment records:
Effectively managing the "current" amount in each parties wallet.
Bank Accounts and Liquidity
Installing the Banks and the BankAccounts modules, we can relate them with the payment movements effectively controlling the expected balances in the companies bank accounts. If we add the expected payments, like power and water bills, salaries and expected invoice due dates we should be able to foresee liquidity issues and make the necessary transfers ahead of time to save on interests.
We even have an automatic "Transfer Money" action in the Bank Accounts module that creates the payment records for us!
Closing thoughts
I'm sure I left out some interesting use cases of the payment module, but I am also sure that I stimulated your imagination and that you will find the correct configuration of the payment module for your company. Don't hesitate to share it with us in gitter and/or the forum.
Getting your business under ConTroL with coreBOS!