MobileX can be extended or customised, get in touch to find out more
1. In the custompages/sagecrmws/web.config
we add in the plugin
<add name=”Sage300″/>
In the “client/plugin.js” we download the “chartjs” files
see function “onDocumentReady“
We also add in buttons
EG
//sales today
var _btnname = "btnMy300sales";
Factory.destroyComponent(_btnname);
cApp[_btnname] = Factory.createBottomButton(_btnname);
cApp[_btnname].pr_caption = _getTrans("ERPYear");
cApp[_btnname].pr_icon = "fa fa-cube";
cApp[_btnname].pr_onclick = "cApp.view_arcusyear();";
cApp[_btnname].pr_index = 55;
cApp.addBottomAreaButton(cApp[_btnname]);
2. In “onContextChanged” the system checks the context
If the context is a company we add in those buttons
EG
if (cApp.EntityName.toLowerCase().indexOf("company") == 0) {
Factory.destroyComponent("btnview_arcusCompany");
cApp.btnview_arcusCompany = Factory.createTopButton("btnview_arcusCompany");
cApp.btnview_arcusCompany.pr_caption = "300 ERP";
cApp.btnview_arcusCompany.pr_icon = "cube fa-lg";
cApp.btnview_arcusCompany.pr_onclick = "cApp.view_arcus(cApp.EntityName,cApp.EntityId);";
cApp.btnview_arcusCompany.pr_insert = false;
cApp.btnview_arcusCompany.pr_index = _idx;
cApp.addEntityReworkBtn(cApp.btnview_arcusCompany, true);
3. ERPyear

When we click the “ERPYear” button it calls the method “view_arcusyear” in the client/plugin.js
cTSApp.prototype.view_arcusyear = function () {
collapseTop(true);
cApp.containerTop.clear();
var params = {
fileName: "js\\plugins\\sage300\\server\\view_OESTATS.js"
};
var view_arcustodayCompleted = function (data) {
cApp.drawArcusYear(data);
};
cApp.gatewayPostParams("runServerScript", params, view_arcustodayCompleted);
};
This makes a request to
js\\plugins\\sage300\\server\\view_OESTATS.js
cApp.gatewayPostParams("runServerScript", params, view_arcustodayCompleted);
“view_arcustodayCompleted” is called when the data returns
var view_arcustodayCompleted = function (data) {
cApp.drawArcusYear(data);
};
which in turn called
cApp.drawArcusYear(data);
Sample JSON returned
EG
[{
"yr": "2019",
"period": "1",
"currency": "USD",
"audtdate": null,
"audtdate_raw": "20100818",
"audttime": "10163790",
"audtuser": "ADMIN",
"audtorg": "SAMINC",
"numord": "3",
....
The method
cTSApp.prototype.drawArcusYear = function (data) {
then gets the JSON in the (data) parameter and this is used to build the screen and chart
4. ERP data for the given company

The line
cApp.btnview_arcusCompany.pr_onclick = "cApp.view_arcus(cApp.EntityName,cApp.EntityId);";
calls
cTSApp.prototype.view_arcus = function (EntityName, EntityId) {
var params = {
fileName: "js\\plugins\\sage300\\server\\view_arcus.js",
EntityId: EntityId,
EntityName: EntityName
};
var view_arcusCompleted = function (data) {
cApp.drawArcus(data);
};
cApp.gatewayPostParams("runServerScript", params, view_arcusCompleted);
};
which makes a request to
js\\plugins\\sage300\\server\\view_arcus.js
which in turn calls
cTSApp.prototype.drawArcus = function (data) {
when the data comes back and this creates the screen.
===========================================
Also worth noting…
Footer Menu – now you can update the menu via CRM
As per the help
http://mobilex.crmtogether.com/index.php?title=FooterCustom