I'm looking for a clever developer with strong, up to date postgresql familiarity, able to write clean/readable php to help me build a reporting and billing tool for a multi-tenant, open source VoIP PBX platform.
I need 4 or 5 custom reports (can show examples that almost work). Perhaps it makes sense to build a template mechanism for custom reports? NOTE: some of the data we need is in simple postgresql columns. Others are nested within a single JSON type column - it is probably necessary to query/filter based on some of these values, and even loop through subarrays of unknown size to find certain values, then use the same keys to get other related values from other subarrays. Familiarity with the JSON data type and the ability to confidently query and report on it will be important.
Additionally, I want to increase automation of our billing. We use freshbooks, so an integration with freshbooks via their API is preferred. Also willing to consider WaveApps via their new API.
The "billing" system must handle different customer types, each with its own billing metrics:
- unmetered cloud pbx users (fixed cost per month, up to XXX minutes/month per extension, per minute afterwards)
- metered cloud pbx user (fixed cost per month per extension, with an included YYY min for the whole company ("company bucket"), per minute afterwards)
- wholesale (cost pus) users (fixed cost per month per extension, plus cost+markup for all usage.)
- all customer with toll free numbers pay monthly per number, and the usage is billed against a prepaid toll free bucket. some customer may have different per/min overage costs.
The voip pbx platform allows custom/user values to be stored per-customer, so the developer can reference things like 'customer type' or 'per minute rate' or "company bucket" size on a per-customer basis, as required. (I have a rough implementation I can show.)
The developer need not provide call rating (lookups per destination to determine buy or sell rates) and all the data will be provided to the billing system in retrospect (nothing needs to happen in real time.)
The same database has a table where we can import CDR data from the carrier. Any final system must use this data from both the Carrier's CDRs and the PBX's internal CDR data. Some information (for custom reports) is found exclusively within the PBX internal CDRs, and other (for billing for trunking customers) is found exclusively within the carrier's CDR records.
I prefer php for such an application because I can understand it, but I am open to other platforms if there are compelling financial benefits. Either way, we need all source code and all rights to it.