{
  "formId": "codedefine",
  "entity": "CodeDefine",
  "title": "Code Definition",

  "pages": [
    {
      "pageId": "Header",
      "pageName": "Code Definition",
      "sections": [
        {
          "sectionId": "headerInfo",
          "sectionName": "Header Information",
          "layout": { "columns": 12 },
          "fields": [
            { "Name": "CodeDefineId",   "Type": "number", "PostData": true,  "DefaultValue": 0, "IsVisible": false },
            {
              "Name": "EntityId", "Type": "number",
              "Label": "Entity", "Required": true,
              "lookup": {
                "api": "Framework.Entity.Selectlist",
                "valueField": "id",
                "displayField": "name"
              },
              "layout": { "colSpan": 4 }
            },
            {
              "Name": "CategoryCode", "Type": "string",
              "Label": "Category.Code", "Required": true,
              "layout": { "colSpan": 4 }
            },
            {
              "Name": "CategoryName", "Type": "string",
              "Label": "Category.Name", "Required": true,
              "layout": { "colSpan": 4 }
            },
            {
              "Name": "GenerationType", "Type": "combobox",
              "Label": "Generation.Type", "Required": true,
              "PickLists": [
                {"key": 0, "value": "Auto"},
                {"key": 1, "value": "Manual"},
                {"key": 2, "value": "Formula"},
                {"key": 3, "value": "Hidden"},
                {"key": 4, "value": "Segment"}
              ],
              "DefaultValue": 1,
              "layout": { "colSpan": 4 }
            },
            {
              "Name": "FormulaId", "Type": "number",
              "Label": "Formula",
              "lookup": {
                "api": "Framework.Formula.Picklist",
                "valueField": "id",
                "displayField": "name"
              },
              "DependendFieldName": "GenerationType",
              "DependendFieldValue": "2",
              "layout": { "colSpan": 4 }
            },
            {
              "Name": "CatPrefix", "Type": "string",
              "Label": "Prefix",
              "layout": { "colSpan": 3 }
            },
            {
              "Name": "CatSuffix", "Type": "string",
              "Label": "Suffix",
              "layout": { "colSpan": 3 }
            },
            {
              "Name": "CatStartNo", "Type": "number",
              "Label": "Start.Number", "Required": true, "DefaultValue": 1,
              "layout": { "colSpan": 3 }
            },
            {
              "Name": "CatEndNo", "Type": "number",
              "Label": "End.Number", "Required": true, "DefaultValue": 999999999,
              "layout": { "colSpan": 3 }
            },
            {
              "Name": "CodeSize", "Type": "number",
              "Label": "Code.Size", "Required": true, "DefaultValue": 20,
              "layout": { "colSpan": 3 }
            },
            {
              "Name": "CatLastNo", "Type": "number",
              "Label": "Last.Number.Used", "ReadOnly": true, "PostData": false,
              "layout": { "colSpan": 3 }
            },
            {
              "Name": "IsActive", "Type": "checkbox",
              "Label": "Active", "DefaultValue": true,
              "layout": { "colSpan": 3 }
            }
          ]
        }
      ]
    },
    {
      "pageId": "Segments",
      "pageName": "Segments",
      "sections": [
        {
          "sectionId": "segmentList",
          "sectionName": "Code Segments",
          "layout": { "columns": 12 },
          "fields": [],
          "grid": {
            "fieldId": "CodeDefineSegments",
            "entity": "CodeDefineSegment",
            "allowAdd": true,
            "allowDelete": true,
            "columns": [
              { "Name": "SegmentId",    "Type": "number", "PostData": true,  "DefaultValue": 0,  "IsVisible": false },
              { "Name": "SlNo",         "Type": "number", "Label": "Seq",    "ReadOnly": true, "PostData": false, "Width": 50 },
              {
                "Name": "SegmentType",  "Type": "combobox", "Label": "Type", "Width": 130,
                "PickLists": [
                  {"key": 0, "value": "Fixed"},
                  {"key": 1, "value": "Attribute"},
                  {"key": 2, "value": "Lookup"},
                  {"key": 3, "value": "Sequence"},
                  {"key": 4, "value": "Derived"}
                ],
                "DefaultValue": 0
              },
              {
                "Name": "SourceField",  "Type": "string", "Label": "Source.Field", "Width": 150,
                "DependendFieldName": "SegmentType", "DependendFieldValue": "1"
              },
              {
                "Name": "LookupTable", "Type": "string", "Label": "Lookup.Table", "Width": 150,
                "DependendFieldName": "SegmentType", "DependendFieldValue": "2"
              },
              { "Name": "Prefix",        "Type": "string",   "Label": "Prefix",      "Width": 80 },
              { "Name": "Suffix",        "Type": "string",   "Label": "Suffix",      "Width": 80 },
              { "Name": "IsMandatory",   "Type": "checkbox", "Label": "Mandatory",   "Width": 80,  "DefaultValue": false },
              { "Name": "DefaultValue",  "Type": "string",   "Label": "Default",     "Width": 100 },
              {
                "Name": "Format", "Type": "combobox", "Label": "Format", "Width": 110,
                "PickLists": [
                  {"key": 0, "value": "None"},
                  {"key": 1, "value": "UPPER"},
                  {"key": 2, "value": "PADLEFT"}
                ],
                "DefaultValue": 0
              },
              { "Name": "Separator",     "Type": "string",   "Label": "Separator",   "Width": 80 },
              { "Name": "IsActive",      "Type": "checkbox", "Label": "Active",      "Width": 70,  "DefaultValue": true }
            ]
          }
        }
      ]
    }
  ],

  "quickActions": [],
  "rules": [],
  "serverValidations": [],

  "api": {
    "save":   "Framework.CodeDefine.Save",
    "update": "Framework.CodeDefine.Save",
    "delete": "Framework.CodeDefine.Delete",
    "get":    "Framework.CodeDefine.Get"
  }
}
