Well if you use ABMaterial (which works great with serial), the serial system would have be server-side. You cant as far as I am aware, work with any hardware at all on the client machine from the web interface. So keep this in mind.
Outside of that, I would highly recommend using ABMaterial because its a web app system so anyone access it from anywhere, and you can even use WebSockets/MQTT between the webapp software itself, and your mobile devices/apps for real-time communications.
Along with MySQL/SQLlite/Firebase, etc database support for all your records and configuration storage. You can also create an API that interfaces between everything and your ABMaterial server software, so your mobile devices can communicate all details to, and from the server, so then its all managed at one point. If there is a bug, or a feature update, you can perform this update on the server, and everyone is affected/updated at once. as far as PBX, well good luck there. Anything you do with this would need written by you, and handled server side and directed over the correct websocket to the correct user. Ill leave that one up to you.
It also has its disadvantages of course, if your network goes offline or if its over the internet and its offline, you wont have any communication ability and nobody will be able to use the software at all until the systems come back online unless you do some sort of App local storage for synchronization purposes.
The other issue is, you need to keep it up to date constantly. the Web/Cloud in general is a very fluid ecosystem that is constantly moving in one direction so as browsers/javascript/etc change, you gotta keep yoru ABMaterial library updated
The other issue is if the Author drops support, or kills it off, then you would have to maintain it yourself or depend on the community to keep it up to date, but you can say that in general with any software, including B4J. If Erel got hit by a bus and died tomorrow, Then what? VB6 is already in this state as an orphan child put out to pasture with it's parents hands washed of it, so..... Things to think about...
Also B4J, and Java in general is very abstracted because of its unique ability to be cross-platform, this makes interfacing with outside drivers very difficult without going through hoops and bounds. you have the JNI interface and a few others to work with dynamic libraries and native code to get things done. (platform specific), And then you would need to write a wrapper that would link this native library into the B4J environment, Whereas with VB6 you can simply link in a DLL and expose its functions to do things. As said above, this isnt so simple with B4J/Java. Its not totally impossible, the jSerial library does this with JSSC so you can use that for reference.
There may be other cons, but personally they do not outweigh the Pros in my own opinion, but an opinion formed would be the result of circumstance.