# Edit user layout

## What a user layout is

A user layout is the saved column arrangement for one list. Use this page when you need to
parse, compare, or maintain that arrangement. It sits between the [User layouts](doc:configuration-users-layouts-view)
list, where you find a layout, and [Default layouts](doc:configuration-default-layouts), whose
columns provide the comparison layout.

| If you need to… | Go to |
| --- | --- |
| Find and open an existing layout | [User layouts](doc:configuration-users-layouts-view) |
| Review the opened layout's fields and options | Continue to **Understand the edit surface** below |
| Compare the user layout with the configured default | [Default layouts](doc:configuration-default-layouts) |

## Before you start

Open **User layouts** and identify the layout record you want to maintain.

The page loads an existing layout when the ID is non-zero. With no ID or a zero ID, it resets the
layout model. If the layout has changes, leaving the page opens a confirmation flow; if it has no
changes, the page leaves directly.

## Find and open the layout

Open the saved list arrangement before changing its text or columns.

**Prerequisites**

- You know the layout record ID.

**Steps**

1. Open **User layouts**.
2. Open the layout record you want to maintain.
3. Select **Recall** to load the layout and its default comparison.

The selected record opens for editing.

**Result:** The edit page opens at the layout route and shows the layout fields and the two parsed
areas when their column data is available.

## Understand the edit surface

The edit surface has record details, editable layout text, parsed layout areas, and a column editor
that opens from a populated parsed layout.

### Record and layout fields

| Field | Type | State |
| --- | --- | --- |
| **Name** | Text | Required; disabled |
| **List num** | Select | Required; disabled |
| **Is current** | Boolean | Optional; disabled |
| **Is standard** | Boolean | Optional; disabled |
| **Layout** | Text area | Required; editable |

On the page, **Name**, **List num**, and **Layout** have required markers. The page also shows
**Is current** and **Is standard** beside these fields.

### List choices

| Option | ID |
| --- | ---: |
| `Activities (0)` | `0` |
| `Tasks (1)` | `1` |
| `Contract (2)` | `2` |
| `Registeration data (3)` | `3` |
| `Ticket - Running (4)` | `4` |
| `Ticket - Closed (5)` | `5` |
| `Layouts (6)` | `6` |
| `Pricing indicator (7)` | `7` |
| `Project (21)` | `21` |
| `Clients (22)` | `22` |
| `Principals (23)` | `23` |
| `Roles (26)` | `26` |
| `Users (27)` | `27` |
| `Account (29)` | `29` |
| `Contact (30)` | `30` |
| `Invoices all (31)` | `31` |
| `Payment (32)` | `32` |
| `Sales Leads(39)` | `39` |
| `Sales All(40)` | `40` |
| `Sales Inquiries (41)` | `41` |
| `Sales Offers (42)` | `42` |
| `Sales Orders (43)` | `43` |
| `Sales Delivered (44)` | `44` |
| `Sales Lost offer (45)` | `45` |
| `Sales Regretted (46)` | `46` |
| `Sales Deleted (48)` | `48` |
| `Sales Rejected orders (49)` | `49` |
| `Sales Missed Inquiries (50)` | `50` |
| `Sales Cancelled offer (51)` | `51` |
| `Sales Cancelled order (52)` | `52` |
| `Buyout All (53)` | `53` |
| `Buyout RFQ (54)` | `54` |
| `Buyout Offer (55)` | `55` |
| `Buyout Order (56)` | `56` |
| `Buyout Delivered (57)` | `57` |
| `Buyout Rejected offer (58)` | `58` |
| `Buyout Regretted (59)` | `59` |
| `Buyout Deleted (61)` | `61` |
| `Buyout Rejected order(62)` | `62` |
| `Buyout Cancelled offers (64)` | `64` |
| `Buyout Cancelled order (65)` | `65` |
| `Principal invoice (67)` | `67` |
| `teams (70)` | `70` |
| `Account managers (71)` | `71` |
| `Subscription Invoices (72)` | `72` |
| `Letter of guarantees all (73)` | `73` |
| `Products (74)` | `74` |
| `MRQ (75)` | `75` |
| `Procurement All (76)` | `76` |
| `Procurement RFQ (77)` | `77` |
| `Procurement Offer (78)` | `78` |
| `Procurement Order (79)` | `79` |
| `Procurement Delivered (80)` | `80` |
| `Procurement Rejected (81)` | `81` |
| `Procurement Regretted (82)` | `82` |
| `Procurement Deleted (83)` | `83` |
| `Procurement Rejected order (84)` | `84` |
| `Procurement Cancelled offers (85)` | `85` |
| `Procurement Cancelled orders (86)` | `86` |
| `Extension rejected offer (89)` | `89` |
| `Un-allocated products (89)` | `89` |
| `Assigned products to sales (90)` | `90` |
| `Warehouse configuration (91)` | `91` |
| `Receiving shipment (92)` | `92` |
| `Inspection (93)` | `93` |
| `PM All (94)` | `94` |
| `PM Planned To Order (BOM) (95)` | `95` |
| `PM Ready To Order (MRQ) (96)` | `96` |
| `PM In Procurement All (97)` | `97` |
| `PM In Procurement Inquiry (98)` | `98` |
| `PM In Procurement Offer (99)` | `99` |
| `PM In Procurement Order (100)` | `100` |
| `PM In Procurement Stuck (101)` | `101` |
| `PM Products Receipt (102)` | `102` |
| `PM Product Rejected (103)` | `103` |
| `PM Stored (104)` | `104` |
| `PM Assembly (105)` | `105` |
| `PM Loss (106)` | `106` |
| `PM Ready For Shipment (107)` | `107` |
| `PM Delivered (108)` | `108` |
| `Stock (109)` | `109` |
| `Packages (110)` | `110` |
| `upcoming stock (111)` | `111` |
| `Production order (112)` | `112` |
| `Shipping order (113)` | `113` |
| `Issue goods note (114)` | `114` |
| `External service order (115)` | `115` |
| `Transfer order (116)` | `116` |
| `Return note (117)` | `117` |
| `Delivery note (118)` | `118` |
| `PM orders (119)` | `119` |
| `In-warehouse all (120)` | `120` |
| `PM Delivered orders (121)` | `121` |
| `Reference list by serial num. (122)` | `122` |
| `Job Profitabilty (123)` | `123` |
| `Job Cost Transaction (124)` | `124` |
| `Purchase Invoice (125)` | `125` |
| `Outgoing Paymnet (126)` | `126` |

### Parsed layout areas

The **Parsed user layout** and **Parsed Default layout** areas appear when the layout has columns.

| Parsed-area column | Use |
| --- | --- |
| **Index** | Column position |
| **Field** | Data field |
| **Type** | Data type |
| **Caption** | Column caption |
| **Visible** | Visibility setting |
| **Width** | Column width |

In the row for the column you want to change, choose the action that opens its details. In the row
for the column you want to remove, choose the action that opens the removal confirmation. The
confirmation asks **Are you sure?**.

### Column editor fields and choices

To inspect an existing column, in the row for the column you want to change, choose the action that
opens its details. To remove it, in the row for the column you want to remove, choose the action
that opens the removal confirmation. The confirmation asks **Are you sure?**.

| Field | Type | Required | Rule |
| --- | --- | --- | --- |
| **Index** | Text | Yes | Disabled in the column editor |
| **Visible** | Boolean | No | Editable |
| **Field** | Text | Yes | Editable |
| **Type** | Select | Yes | Choose one of the values below |
| **Caption** | Text | No | Editable |
| **Width** | Number | No | Minimum value `0` |
| **Filter value** | Text | No | Editable |
| **Selected filter operation** | Select | Yes | Choose one of the values below |

The **Type** choices are `string`, `number`, `date`, and `boolean`.

The **Selected filter operation** choices are:

| Option | ID when different |
| --- | --- |
| `contains` | — |
| `Does not contain` | `notcontains` |
| `Starts with` | `startswith` |
| `Ends with` | `endswith` |
| `Equals` | `=` |
| `Not equals` | `<>` |

When the layout contains columns, each column row provides actions for editing or deleting it.
**Save** and **Save and Close** are unavailable until you make a change.

## Maintain the layout text and compare defaults

A layout text is the saved representation that the page parses into columns and serializes back
after changes.

**Prerequisites**

- The edit page is open.
- You have a layout record to maintain.

**Steps**

1. Select **Recall** to load the user layout and its default comparison.
2. Review **Layout** for the saved layout text.
3. Select **Parse** to turn the layout text into the parsed user layout.

   ![The **Layout** field and **Parse** control beside the parsed area](https://atloriaassets.blob.core.windows.net/assets/a438221c-c1af-407c-b9e6-a56c986db846/74f4fb4f64f0b97e71aa53c3e02637ff.png)

4. Select **Stringfy** after changing the parsed layout to copy the parsed layout back into
   **Layout**.

   ![The layout text after serializing the parsed layout](https://atloriaassets.blob.core.windows.net/assets/a438221c-c1af-407c-b9e6-a56c986db846/cf8c4df315efc36477ed5c4ec83638d1.png)

5. Choose the action that matches what you need to do:

   | If you need to… | Select | Outcome |
   | --- | --- | --- |
   | Remove duplicate or unmatched user columns | **Clean user layout** | The user layout is cleaned |
   | Add missing default columns and update matching columns | **Update user layout** | The user layout is aligned with the default comparison |
   | Save the layout and remain on the page | **Save** | The layout is validated and saved |
   | Save the layout and leave the page | **Save and Close** | The layout is validated, saved, and the page closes |

**Result:** The layout is saved, the parsed layout is refreshed, and the page shows
`Your request was completed successfully`. **Save and Close** also leaves the page.

## Maintain layout columns

A layout column defines one list column's position, field, type, visibility, caption, width, and
filter behavior.

**Prerequisites**

- The parsed user layout has columns.

**Steps**

1. Select a parsed-layout row to open its column details.
2. In the column editor, review **Index**, **Visible**, **Field**, **Type**, **Caption**, **Width**,
   **Filter value**, and **Selected filter operation**.
3. Choose the column change you need:

   | If you need to… | Action |
   | --- | --- |
   | Add a column | Enter the required values and save the column |
   | Change a column | Change its values and save the column |
   | Remove a column | Select the delete icon in that row to open the removal confirmation |
   | Keep a column after opening removal confirmation | Select **No** |
   | Leave an exit or task-completion confirmation without saving | Select **Don't Save** |
   | Close an applicable confirmation without confirming | Select **Cancel** |

4. If you chose to remove a column, select **Yes** to confirm the removal.

   The column is removed from the parsed layout.

5. Select **Save** on the edit page to save the changed layout.

**Result:** The parsed layout contains the column changes you kept, and the edit page is ready for
the save result.

## When maintenance goes wrong

Use the message text on screen to choose the response.

| What you see | What it means | What to do |
| --- | --- | --- |
| `This Field Is Required` | A required field has no value. | Enter the required value in the field named in the form, then select **Save** again. |
| `An error occurred while processing your request` | Loading or processing did not complete. | Review the layout values and select **Recall** or **Save** again. |
| `Are you sure?` | The delete-column confirmation is open. | Select **Yes** to remove the column or **No** to keep it. |
| No controls appear after opening the route | The route did not load the edit surface. | Return to [User layouts](doc:configuration-users-layouts-view) and open the layout from its list. |

## What to do next

After a successful save, the layout remains the maintained user layout, and **Save and Close**
leaves the edit page. Return to [User layouts](doc:configuration-users-layouts-view) to find the
layout again, or open [Default layouts](doc:configuration-default-layouts) to compare or maintain
the default arrangement.

**Prerequisites**

- You have completed the layout changes you want to keep.

**Steps**

1. Select **Save** and wait for `Your request was completed successfully`.
2. Select **Save and Close** when you want to leave after saving.

**Result:** The saved layout remains available from the user-layout list, and the page closes after
**Save and Close**.
