Can you add Serial Number Select to custom app?

Anyone know if it’s possible to open the Erp.UI.SelectSerialNumbersEntry form in a custom app as a slideout?

I’ve got a button created and can get the app to open in a slide out, but so far no luck passing values in (I get an error message and there’s no part info loaded). Before I go down a rabbit hole to only find out this isn’t even possible since it’s serial numbers, thought I’d ask the experts.


Looks like they are importing a shared slider. Not sure how to do that in AppStudio.

This mashes all the layouts, events, DataViews, rules etc into the same App from a AppStudio user perspective. Nearly impossible to untangle the events etc in AppStudio to see how to replicate shared app reuse.

Here is just the init events json, a small portion of what that slider is doing.

MetaUI\Shared\imports\lib\SelectSerialNumbers\events\Initialization.events.jsonc

{
  "$schema": "https://schemas.developer.epicor.com/schemas/v5.0/events.json",
  "contentVersion": "5.0",
  "imports": [],
  "events": [
    {
      "id": "SelectSerial_AfterInitialize",
      "actions": [
        {
          "type": "dataview-filter-set",
          "param": {
            "dataview": "SerialNumberSelection",
            "filter": ""
          }
        },
        {
          "type": "data-clear",
          "param": {
            "type": "table",
            "value": "SerialNumberSelection"
          }
        },
        {
          "type": "event-column-disable",
          "dataTable": "snf"
        },
        {
          "type": "row-update",
          "param": [
            {
              "columns": [
                {
                  "epBinding": "TransView.SkipRowSelectedUpdate",
                  "value": "{sysVariable.SkipRowSelectedUpdate}"
                },
                {
                  "epBinding": "TransView.ClearSelectSerialNumbersParams",
                  "value": "{sysVariable.ClearSelectSerialNumbersParams}"
                },
                {
                  "epBinding": "TransView.SelectedSerialNumbersViewName",
                  "value": "{sysVariable.SelectedSerialNumbersViewName}"
                },
                {
                  "epBinding": "snf.Company",
                  "value": "{Constant.CompanyID}"
                },
                {
                  "epBinding": "snf.ScanSerialNumber",
                  "value": ""
                },
                {
                  "epBinding": "snf.StartSerialNumber",
                  "value": ""
                },
                {
                  "epBinding": "snf.EndSerialNumber",
                  "value": ""
                },
                {
                  "epBinding": "snf.AddSerialNumber",
                  "value": ""
                },
                {
                  "epBinding": "snf.QtyCreated",
                  "value": 0
                },
                {
                  "epBinding": "snf.StartAtQty",
                  "value": ""
                },
                {
                  "epBinding": "snf.CreateConditon",
                  "value": ""
                },
                {
                  "epBinding": "snf.QtySelected",
                  "value": 0
                },
                {
                  "epBinding": "snf.SysRowID",
                  "value": "00000000-0000-0000-0000-000000000000"
                },
                {
                  "epBinding": "snf.ShowSelectedOnly",
                  "value": false
                },
                {
                  "epBinding": "snf.RowMod",
                  "value": "A"
                }
              ]
            }
          ]
        },
        {
          "type": "condition",
          "param": {
            "expression": "'{TransView.SelectedSerialNumbersViewName}' === '' || '{TransView.SelectedSerialNumbersViewName}' === 'undefined'",
            "onSuccess": [
              {
                "type": "row-update",
                "param": [
                  {
                    "columns": [
                      {
                        "epBinding": "TransView.SelectedSerialNumbersViewName",
                        "value": "SelectedSerialNumbers"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "event-next",
          "value": "SelectSerial_SerialNumberSelectionFilter"
        },
        {
          "type": "rest-erp",
          "param": {
            "svc": "Erp.BO.SelectedSerialNumbersSvc",
            "svcPath": "GetSerialNumFormat",
            "requestMethod": "POST",
            "erpRequestMethod": "ErpPostWithDataViewProcessing",
            "methodParameters": [
              {
                "field": "partNum",
                "value": "{SelectSerialNumbersParams.partNum}"
              },
              {
                "field": "xrefPartNum",
                "value": "{SelectSerialNumbersParams.xrefPartNum}"
              },
              {
                "field": "xrefPartType",
                "value": "{SelectSerialNumbersParams.xrefPartType}"
              },
              {
                "field": "xrefCustNum",
                "value": "{SelectSerialNumbersParams.xrefCustNum}"
              },
              {
                "field": "plantID",
                "value": "{SelectSerialNumbersParams.plant}"
              }
            ],
            "erpRestPostArgs": {
              "requestParamArgs": [
                {
                  "viewName": "SNFormat",
                  "paramName": "SNFormat"
                }
              ]
            }
          }
        },
        {
          "type": "condition",
          "param": {
            "expression": "'{SNFormat.SNBaseDataType}' === 'CHARACTER' || ('{SNFormat.SNBaseDataType}' === 'MASK' && {SNFormat.SerialMaskMaskType} === 0)",
            "onSuccess": [
              {
                "type": "row-update",
                "param": [
                  {
                    "columns": [
                      {
                        "epBinding": "snf.CreateConditon",
                        "value": "NEW"
                      }
                    ]
                  }
                ]
              }
            ],
            "onFailure": [
              {
                "type": "row-update",
                "param": [
                  {
                    "columns": [
                      {
                        "epBinding": "snf.CreateConditon",
                        "value": "RANGE"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "event-column-enable",
          "dataTable": "snf"
        },
        {
          "type": "event-column-disable",
          "dataTable": "SerialNumberSelection"
        },
        {
          "type": "event-next",
          "value": "SelectSerial_CopySelected"
        },
        {
          "type": "event-next",
          "value": "SelectSerial_SetSelectedCount"
        },
        {
          "type": "event-column-enable",
          "dataTable": "SerialNumberSelection"
        },
        {
          "type": "dataview-filter-set",
          "param": {
            "dataview": "SerialNumberSelection",
            "filter": "{TransView.SelectSerial_SerialNumberSelectionFilter}"
          }
        },
        {
          "type": "event-next",
          "value": "SelectSerial_GetNextSerialNumber"
        }
      ]
    },
    {
      "id": "SelectSerial_CopySelected",
      "actions": [
        {
          "type": "dataview-condition",
          "param": {
            "expression": "Company = '{Constant.CompanyID}'",
            "dataview": "{TransView.SelectedSerialNumbersViewName}",
            "result": "SelectedSerialNumbersCopy_matches",
            "iterativeEvent": "SelectSerial_CopySelectedSerialNumbers"
          }
        },
        {
          "type": "data-commit",
          "param": {
            "dataview": "SerialNumberSelection"
          }
        }
      ]
    },
    {
      "id": "SelectSerial_SerialNumberSelectionFilter",
      "description": "This event can be overridden if a UI needs to filter on something else i.e. TimeEntry",
      "actions": [
        {
          "type": "row-update",
          "param": [
            {
              "columns": [
                {
                  "epBinding": "TransView.SelectSerial_SerialNumberSelectionFilter",
                  "value": "SourceRowID = '{SelectSerialNumbersParams.sourceRowID}' and PartNum = '{SelectSerialNumbersParams.partNum}' and AttributeSetID = {SelectSerialNumbersParams.attributeSetID}"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": "SelectSerial_CopySelectedSerialNumbers",
      "actions": [
        {
          "type": "row-add",
          "param": {
            "dataview": "SerialNumberSelection",
            "values": {
              "Company": "{SelectedSerialNumbersCopy_matches.Company}",
              "Deselected": "{SelectedSerialNumbersCopy_matches.Deselected}",
              "KBLbrAction": "{SelectedSerialNumbersCopy_matches.KBLbrAction}",
              "KBLbrActionDesc": "{SelectedSerialNumbersCopy_matches.KBLbrActionDesc}",
              "KitWhseList": "{SelectedSerialNumbersCopy_matches.KitWhseList}",
              "NotSavedToDB": "{SelectedSerialNumbersCopy_matches.NotSavedToDB}",
              "PartNum": "{SelectedSerialNumbersCopy_matches.PartNum}",
              "AttributeSetID": "{SelectedSerialNumbersCopy_matches.AttributeSetID}",
              "PassedInspection": "{SelectedSerialNumbersCopy_matches.PassedInspection}",
              "poLinkValues": "{SelectedSerialNumbersCopy_matches.poLinkValues}",
              "PreDeselected": "{SelectedSerialNumbersCopy_matches.PreDeselected}",
              "PreventDeselect": "{SelectedSerialNumbersCopy_matches.PreventDeselect}",
              "RawSerialNum": "{SelectedSerialNumbersCopy_matches.RawSerialNum}",
              "ReasonCodeDesc": "{SelectedSerialNumbersCopy_matches.ReasonCodeDesc}",
              "ReasonCodeType": "{SelectedSerialNumbersCopy_matches.ReasonCodeType}",
              "Reference": "{SelectedSerialNumbersCopy_matches.Reference}",
              "RowSelected": "{SelectedSerialNumbersCopy_matches.RowSelected}",
              "RowMod": "{SelectedSerialNumbersCopy_matches.RowMod}",
              "Scrapped": "{SelectedSerialNumbersCopy_matches.Scrapped}",
              "ScrappedReasonCode": "{SelectedSerialNumbersCopy_matches.ScrappedReasonCode}",
              "SerialNumber": "{SelectedSerialNumbersCopy_matches.SerialNumber}",
              "SNBaseNumber": "{SelectedSerialNumbersCopy_matches.SNBaseNumber}",
              "SNMask": "{SelectedSerialNumbersCopy_matches.SNMask}",
              "SNPrefix": "{SelectedSerialNumbersCopy_matches.SNPrefix}",
              "SourceRowID": "{SelectedSerialNumbersCopy_matches.SourceRowID}",
              "SysRowID": "{SelectedSerialNumbersCopy_matches.SysRowID}",
              "TransType": "{SelectedSerialNumbersCopy_matches.TransType}",
              "Voided": "{SelectedSerialNumbersCopy_matches.Voided}",
              "XRefPartNum": "{SelectedSerialNumbersCopy_matches.XRefPartNum}",
              "XRefPartType": "{SelectedSerialNumbersCopy_matches.XRefPartType}"
            }
          }
        },
        {
          "type": "condition",
          "param": {
            "expression": "'{TransView.SkipRowSelectedUpdate}' === 'false'",
            "onSuccess": [
              {
                "type": "condition",
                "param": {
                  "expression": "({SelectedSerialNumbersCopy_matches.Deselected} === false && {SelectedSerialNumbersCopy_matches.NotSavedToDB} === false) || {SelectedSerialNumbersCopy_matches.RowSelected} === true",
                  "onSuccess": [
                    {
                      "type": "row-update",
                      "param": [
                        {
                          "columns": [
                            {
                              "epBinding": "SerialNumberSelection.RowSelected",
                              "value": true
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  ]
}

Ps- @josecgomez is iit possible to get better json highlighting on here?

Not sure how much “better” that is but I just enabled json hilighting.

2 Likes

Thanks. Yeah looks like a pallete for light background and no bracket/brace highlights.

Not sure why you’re all responding to my old thread. lol.

I ended up just making my own slideout.

responding because you linked to it and it’s unanswered and I’d like to know the answer :man_shrugging:

2 Likes

Fair enough. …carry on.