How to add screen Project Quotes in mobile app of Acumatica - acumatica

I have tried to add the site map and project quotes screen. but when I publish the project I can't see the screen in the app.
Could you tell me what I'm doing wrong?
Thanks in advance.
**Add PM304500**
add screen PM304500 {
add container "Estimation" {
add field "InventoryID"
add field "Description"
add field "Quantity"
add field "UOM"
}
}
**Update MENU**
update sitemap {
add item "PM304500" {
displayName = "Project Quotes"
icon = "system://Box1"
}
}

The screen definition should not matter as far as getting the screen onto the menu. You will need it defined to view it once you select the menu option. Give this a try to see if you get the screen on the menu.
update sitemap {
add folder "Project" {
type = HubFolder
isDefaultFavorite = True
displayName = "Project Quotes"
icon = "system://Box1"
add item "PM304500" {
displayName = "Project Quotes"
}
}
}
Notice that before you add an item, you add a folder to put it in. The folder is the top-level object that holds the screen. Inside the folder is the item, which is the screen.
For further guidance on setting up a screen on the Mobile App, you can check out the training guide on Open University on the Acumatica website. The training guides you want are listed under T400 and T410 in the Application Development section.

Related

How do I pass a value from one mobile screen to another using Acumatica MDSL?

Here is the scenario:
I have a GI ListFolder, (DB-Appointments), which displays Tech Appoints and the RefNbr of those appointments on the mobile app.
I want to have the user tap on an SO number and then be able to send that SO number to customized mobile app (Service Orders) which will allow the user to edit and change the service order information.
HOWEVER, I am unable to determine how to pass the value of the RefNbr from the first mobile app screen to the other one using the "redirect" command inside of the "EditDetail" container action. (code below)
Does anyone know how to do this?
add container "Result" {
containerActionsToExpand = 2
add field "ServiceOrderTypeFSServiceOrderSrvOrdType"
add field "RefNbr"
add containerAction "Insert" {
icon = "system://Plus"
behavior = Create
redirect = True
}
add containerAction "EditDetail" {
behavior = Open
redirect = True
redirectToScreen = "GI993132"
redirectToContainer = "Filter_$List$ServiceOrderTypeFSServiceOrderRefNbr"
}
}
}
Since it has been a couple of weeks without an answer, I can offer an alternative approach.
I haven't done redirects to other fields in the GI, but I do something similar to what you are describing. If you are open to alternatives, you can use the GI to go to a screen for the record (i.e. the Appointment). Then create a screen in the mobile app for the Service Order. Then put an action on the Appointment graph to View Service Order. Finally, on the Appointment screen use a RecordAction to redirect via the View Service Order action.
add recordAction "ViewServiceOrder" {
redirect = True
}
In this way, the redirect is defined as an action within Acumatica, and you are simply executing that action.

How to add a New Action to the mobile App

Good day
Build 20.107.0026
I have created a New Action and want to add it to my Mobile app. Is it possible to add a custom action to a mobile screen? I have created the below action in the Appointment screen(FS300200)
namespace PX.Objects.FS
{
// Acuminator disable once PX1016 ExtensionDoesNotDeclareIsActiveMethod extension should be constantly active
public class AppointmentEntry_Extension : PXGraphExtension<AppointmentEntry>
{
#region Event Handlers
public PXAction<PX.Objects.FS.FSAppointment> DoWork;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "DoWork")]
protected void doWork()
{
}
#endregion
}
}
Mobile code below. If I want to add the button to the main menu; the 3 dots on the side do I use AppointmentRecords as the container?
update screen FS300200 {
update container "AppointmentRecords" {
add listAction "StartTravelAPICall" {
behavior = Void
displayName = "StartTravelAPICall"
}
}
}
The short answer is YES! The long answer depends in part on what version of Acumatica you are using. For the purpose of this answer, I'll assume you are in 2019R2 and already know how to add or edit a Mobile App screen in Acumatica. If not, the training guides referenced below should give you all the detailed information you need to accomplish your goal.
Manipulating the Mobile App screens/actions is relatively easy if the screen/action works in the browser interface. The T410 course material explains how to add an action in 2019R2. I don't work with Field Services, so I'll have to explain more generically as per the training guide.
First you must either add or edit the screen in the Mobile Application section of the Customization Project. (In your case, you want to Update the existing screen.) This will create a section of code in the customization project that looks like this:
As you can see, the original screen definition in the mobile app is shown on the right, and you will be updating the screen to add your action. You will need to add the appropriate container (not shown in your question) and then the action within that container.
To continue the answer, let's switch to the training guide example on page 12 of the T410 course updating the SO303000 screen. You can compare to your screen to see what needs to be changed.
add container "InvoiceSummary" {
# fields declaration
…
add recordAction "Save" {
behavior = Save
}
add recordAction "Cancel" {
behavior = Cancel
}
add containerAction "Insert" {
behavior = Create
}
add recordAction "ReleaseAction" {
syncLongOperation = true
behavior = Record
}
}
I believe your action would follow the ReleaseAction portion at the bottom of the example, and the need for syngLongOperation = true would depend on what your action is doing (i.e. if you need the action performed asynchronously).
Assuming your container is already defined in the page, which I suspect it is, let's instead look at the example for PO302000 on page 35. This example shows how to UPDATE a container to add your action.
update screen PO302000 {
update container "DocumentSummary" {
add recordAction "AddPOOrderLine" {
displayName = "Add PO Line"
behavior = Void
redirect = True
redirectToContainer = "AddPurchaseOrderLine$List"
}
}
}
That was a more complex action, but yours may be as simple as.
update screen FS300200 {
update container "ServiceOrderTypeLine" {
add listAction "DoWork" {
Behavior = Void
displayName = "Do Work"
}
}
}
If you need guidance on how to read the WDSL Schema to identify the container, etc. that training is found in T400 starting on Page 13.
I highly recommend reviewing both T400 and T410 if you are working with the mobile app as there is a lot more detail in those training guides than can be explained easily in a Stack Overflow post/answer.

Bixby: Unable to print message

user: set my location to new york
Bixby will asked for permission and then asked to store the location and then asked to choose from list of map. User will click one and i will message user that your location is set to New York, USA. Everthing is good. But When i click on the map to select address, I won't get the message but if I voice command like "First one" or type "first one", then i get the message.
My location is result view where in message I checked if levelOne.subdivisionCode exists and country name exists, it will combine and message.
I have summary layout-macro and details 'layout-macro'.
Please let me know if you need some more information. and let me know why my message is not appearing when click select the map?
result view:
result-view {
match: Location (this)
message{
if (exists(this.levelOne.subdivisionCode) && exists(this.country.name)){
template ("Your location is set to #{value(this.name)}, #{value(this.country.name)}. You can now browse by saying following statement.")
}else-if (exists(this.country.name)){
template ("Your location is set to #{value(this.country.name)}. You can now browse by saying following statement.")
}else{
template ("We are unable to find any city")
}
}
Summary-layout
where-each (album) {
layout-macro (location-summary) {
param (location) {
expression (album)
}
}
}
Detail Layout
layout-macro (location-details) {
param(location) {
expression (this)
}
}
This may be an issue that we'll need to investigate further. Can you submit a bug report via Bixby Studio?
With new SDK 19J release, this issue is solved by enable allow-dialogs-on-detail-pages in runtime-flags
After talking with internal team, it is a generic issue we became aware of.
Current version of Bixby does NOT render message section when click from a list of results. The UL utterance "first one" actually re-run the search and display a single result, thus the message is rendered.
A request to add feature of displaying dialog/message when click a list of results is submitted to product management team. Please continue your capsule development with Bixby, and we'll see if next release include such feature.
Have fun with Bixby! And thank you for sharing the diagnostic report with us!

Acumatica Mobile Modify the Location fields to be able to scan a barcode

We are currently using the Acumatica Mobile to process Bin Transfers. We are also looking at the Scandit app to be able to scan the from and to bin location labels in the warehouse. So far with testing We can scan the locations, but only in the search window. We would like to be able to scan/enter the locations on the main screen without going to the search window. It seems the selector forces you to go to the search window. Is there a way around this in Acumatica Mobile.
This is a fairly old question with a relatively new solution. I am using 2020R1 where we now can leverage the built-in scanning capability in the Mobile App.
Your field must be defined in the ASPX as a textedit. Then simply add the field to the mobile app screen (if not already there) and decorate it with special = BarCodeScan as shown in the example below.
add screen ZZ301000 {
add container "ScanContainer" {
add field "MyBarcode"
{
special = BarCodeScan
}
add containerAction "Insert" {
icon = "system://Plus"
behavior = Create
}
add recordAction "Save" {
behavior = Save
}
add recordAction "Cancel" {
behavior = Cancel
}
add recordAction "Insert" {
behavior = Create
}
}
}
The result will be similar to the image below:
By clicking on the barcode icon, the built-in barcode reader will open to utilize the camera to scan the barcode.
You can try to set ForceType to "String" for the Location field to replace selector with a text edit. This will allow to type values directly on the form, but you will loose all selector functionality, like searching for records. Another option is to set the PickerType property to Searchable. For more information about the Field tag attributes, please refer to Acumatica Product Documentation

Creating a navigation menu item in Orchard

I have written an Orchard Module and would like an item to appear in a Navigation list when the module is Enabled. Ideally, I would like to be able to remove the item when the Module is disabled.
Where should I hook into to for when the module is enabled and disabled?
How do I programmatically add a menu item to an already existing Navigation?
You can implement the IMenuProvider interface for this. An example implementation might look something like this:
namespace Orchard.Bar {
public class SuperMenuProvider : IMenuProvider {
private readonly IOrchardServices _orchardServices;
public SuperMenuProvider(IOrchardServices orchardServices) {
_orchardServices = orchardServices;
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public void GetMenu(IContent menu, NavigationBuilder builder) {
string position = "10";
builder.Add(T("Foo"), position, item => item.Url("http://foo.com").AddClass("someClass"));
builder.Add(T("Bar"), position + ".1", item => item.Action("Index", "Foo", new { area = "Orchard.Bar" }));
if (_orchardServices.Authorizer.Authorize(Orchard.Security.StandardPermissions.AccessAdminPanel)) {
builder.Add(T("Secure FooBar"), position + ".2", item => item.Action("Index", "Secure", new { area = "Orchard.Bar" }));
}
}
}
}
This will appear on all menus on the front end. You may want to put in the name of the menu you are targeting if you know for sure that is what it is called (default in Orchard is "Main Menu", people don't generally change it to be honest). This could be a little brittle, so you may want it customizable, either with a site setting or you could create a part that you attach to the menu content type that lets the admin specify whether to show your menu items on the said menu.
An alternative approach would be to hook into the modules enable event using IFeatureEventHandler and using the content manager to create menu items with urls and adding them to a specified Menu. I don't really recommend this approach; you lose control of the menu items (e.g. to update a url), they can be removed from the menu accidentally, you have to know the name of the Menu you are adding them to, you are more limited (cant do permissions checks etc.).
I assume you are talking about showing up on the front end. If you talking about the admin menu then check out pretty much any module for a file generally called AdminMenu.cs, plenty of examples :)
The question doesn't specify what the module does so I guess we're to assume that it creates a content type. In that case you have (at least) two options:
In the Content Type's Content Definition go to Add Parts and add the Menu part. This will allow you to add a content item to a menu from the item's content editor.
From the Navigation menu choose the appropriate Menu and select add a Content Menu Item. Note that the content type must be set as "listable" in Content Definition in order for the items to be listed as a choice.
Disabling the module should remove the item from the navigation in either case.

Resources