Hey Matt, this is Matthew from VoIPTools (formally VoIPToys). Let me offer some suggestions of where to get started. First, there is some very useful information available in the CDR files 3CX can optionally create for each call. The structure of the data is straightforward and may get you a long way. Our 3CX Exporter add-on makes it easy to collect this information and put it in a SQL database. From there, just about any reporting tool can be used to create custom reports -- Crystal Reports, Active Reports, SQL Reporting Services, Excel, Access, etc. This is the only supported approach to building custom reports.
However, there are cases where the CDR files are insufficient. In that case, the only option remaining is to pull the data out of the 3CX database. Be warned, pulling data out of the 3CX database is ABSOLUTELY NOT supported and strongly discouraged by 3CX support. I think you can appreciate why... the potential to screw up the database or lock tables while 3CX is trying to write data could have some pretty severe impacts.
That said, our Exporter tool uses a carefully crafted read-only connection to PostgreSQL and can safely pull this data and place it in SQL. It's been in use around the world for about 7-8 years now without any reported issues. Further, I have met with many, many people within 3CX to discuss how Exporter works, and while they will never endorse its use, they do turn a reluctant blind eye to its use for pulling PostgreSQL data (they have no concerns about Exporter processing CDR files).
I have to admit that building custom reports is not much fun. They can take a considerable amount of effort depending on the requirements and frankly there can be some sticker shock when you look at what's required. But if you need some help building reports, we are here to help. We have a team of 42 developers now (I know that sounds crazy doesn't it) that can get you what you need.