Hi Jim,
Don't give up on the SonicWALL just yet - they're pretty good firewalls however you do need to know what you are doing, or at least have someone handy that does.
A couple of things:
Check the UDP timeout setting for SIP registrations to your VoIP provider and ensure that they are set to a higher number of seconds than your system needs to re-register. SonicWALL firewalls are very good at closing connections if they don't see any traffic after the default 30 seconds and this can catch you out by disconnecting your registrations until the next re-registration by the 3CX Server. (You get an engaged signal on inbound calls or it misses inbound calls altogether)
Also, in the VoIP section select "Enable SIP transformations" - this allows the SonicWALL to understand your SIP calls and VoIP works significantly better with this switched on. Don't change any other settings in this screen.
By the way, that feature appeared possibly in a later version of the firmware as you are running a seriously old one yourself. I would recommend ensuring that your firewall is under maintenance (and if not, there is a one-time reinstatement which makes this affordable) and download the latest version. On this note, the enhanced version of the firmware is much better although a little more difficult to drive and you would have to manually re-do the config between version changes.
FYI - when you run the firewall tests in 3CX, they will fail because the SonicWALL does seem to play around with the RTP port mappings however this does still allow calls to pass through reliably (the purpose of the SIP tranformations setting). We have seen this on 3CX as well as other VoIP systems.
...and of course, don't forget to setup your QoS settings on the firewall - you would need to define the actual amount of bandwidth that you have on the WAN interface first before then applying the bandwidth and priority rules on the firewall rules themselves.
We have 3CX working behind a couple of SonicWALL firewalls, ranging from TZ170, 190 through to the 3060 if this helps.