Metadata Customization

Metadata customization in Perfecto ERP allows users to tailor data members, by creating new ones or modifying existing, to match specific business requirements. It empowers organizations to adapt the system without coding, ensuring flexibility and efficiency.

Importance:

  1. Tailored Solutions: Customize metadata to reflect unique business processes, ensuring that the ERP system aligns perfectly with organizational needs.
  2. Adaptability: Easily accommodate changes and new requirements without relying on external support or extensive coding.
  3. Data Integrity: Define rules and validations to maintain data accuracy, consistency, and compliance with organizational policies and regulations.

Objectives:

  1. Flexibility: Provide users with the ability to modify metadata members to suit their specific requirements.
  2. Efficiency: Streamline business operations by automating actions and workflows based on predefined conditions and rules.
  3. Compliance: Enforce data integrity and ensure adherence to business policies and regulatory requirements through built-in validations and policies.

To create/modify metadata you can use either one of the following techniques:

1. Create/Modify Metadata From Navigation Menu

Metadata Customization - Desktop Version

Desktop Version


Metadata Customization - Cloud Version

Cloud Version


2. Create/Modify Metadata From Any Detail View Screen

On Desktop Version :

Create/Modify Metadata From Any Detail View Screen

On Cloud Version :

MetadataCustomization Cloud


Metadata Structure

Metadata Header
Metadata Header


FieldDescription
Object TypeSelect the desired metadata type for customization from the ‘Object Type’ dropdown menu, which displays all available types within Perfecto ERP system.
For instance, to customize the 'Sales Order' type, simply choose 'Sales Order' from this dropdown menu.
image 29
InactiveThis field allows you to toggle between active and inactive metadata customization. You can make this metadata customization inactive by simply checking the ‘Inactive’ box.
On Creation Performed ActionThis field enables you to execute simple or subsequent actions when a user creates a new record of the selected type. You can utilize this action to initialize any values.
For instance, when a new 'Sales Order' record is created, set the 'Tax1' field to 'Sales Tax VAT 14%'.
Click here to learn how to create an action

Metadata Members

The “Members” tab allows you to add new member(s) to the selected object type above or apply modifications to existing fields.

image 3


To Apply Modifications to Existing Member(s)

  1. Click on ‘Add Existing Member’ in the Toolbar menu
  2. Select Member to Add from the Popup Screen
  3. Click Ok
image 4


To Add New Member to the Selected Object Type

  1. From ‘Members’ tab , Click ‘New’ icon
image 5


Member Structure

FieldDescription
Member NameMember Name to be displayed and must be unique per selected object type.
Existing Member : Member Name Cannot be modified
New Member : Member Name Must Only Contain Letters without spaces or special characters, and it’s best to captilaze each word.
Ex: "FullName" where the first letter of each word is capitalized
TypePersistent : Member will be saved to database.
Calculated : Member will utilize an expression and will not be saved to the database. Instead, it will be calculated each time the record is retrieved.
Data TypeString: Any text, numeric, or alphanumeric characters.
Integer: Only integer values , without floating point.
Double: Represents any number with a floating point, offering a wider range of values compared to ‘decimal’. However, it sacrifices precision for this extended range.
Date Time: Date and Time.
File: File Attachment.
Entity: Represents a dropdown menu of the selected entity type, meaning you can associate the current ‘Object Type’ to another type.
Collection: Represents list of records of selected type, this means that the current ‘Object Type’ is associated to multiple records of another type.
Decimal: Represents any number with a floating point, providing higher precision compared to ‘double’, but it has a smaller range of values.
Boolean: True or False checkbox.

Persistent Member(s)

  1. Create New Member
  2. Input ‘Member Name’ , Remember Member Name should be unique and should not contain white spaces or special characters
  3. Choose ‘Persistent’ as Type
  4. Choose Data Type

(Member Name , Type , Data Type) will be filled automatically if you are adding an Existing Member , and in this case, those fields will be un-editable.

After creating new member or adding existing member, options per member and depending on ‘Data Type’ will appear on the right side , let’s breakdown each option and explain it.

String

image 26

Integer
Double
DateTime
File

Decimal
Boolean

image 25

Entity

image 24

Collection

image 23
Member Options Based On Selected Data Type
OptionData Type(s)Description
Failed To ImplementAll Data TypesThis field indicates that certain error occured while trying to implement this member.
Failure Error MessageAll Data TypesThis field will appear once ‘Failed To Implement’ is indicated , describing the nature of error and how to fix it.
Disable EditAll Data TypesApply this to disable edit for any persistent member.
On Changed Performed Action
Click here learn how to create an action
All Data TypesCreate an action to be performed when end-user change the value of this member.

Example : You are modifying metadata for 'Sales Order' and when user changes the value of 'Customer' , an action should be performed to change the value of 'Discount Percentage' to be 10%.
Edit Mask*1All Data TypesThe Edit Mask feature enables users to specify a format for data input, ensuring consistency and accuracy. This functionality allows you to define a pattern or mask that dictates how data should be entered into a field. For instance, you can enforce specific characters, placeholders, or even formats like dates or phone numbers, you can also use Regular Expressions.

Usage examples :
Phone Number :
(000) 000-000-00 => (012) 775-111-19
Date Time :
dd/MM/yyyy => 18/12/2011
Number :
N2 => 123.00
N1 => 123.0
N0 => 123
Display Format*1All Data TypesSimilar to Edit Mask , but intended only for formatting how data should be displayed.
Rule Required FieldAll Data TypesIndicates that this member is mandatory, and the end-user cannot save the record without completing it.
Rule Unique ValueAll Data TypesIndicated that this member’s value uniquely applies to the same object type across all records.
Text SizeStringSpecifies the accepted character length.
Default Value: 100
Maximum Value: 4000
Enum ValuesStringOffer a custom text list for the user to choose from using preset values, separate the preset values with a semicolon “;”.
Ex: EGYPT;KSA;UAE
User can select from the list or provide different value.
Entity TypeEntity , CollectionChoose the target type to establish the association.
Usage example :
Create New Member with name 'FollowUpResposibleEmployee' that Allow the selection of an 'Employee' in 'Sales Order' , for the 'Entity Type' field choose 'Employee' from the drop list.
Auto Create AssociationEntity , CollectionAllow an association to be automatically created and therefore collection of current object type is created for the selected ‘Entity Type’
Usage Example:
In accordance with the provided example in the Entity Type, enabling auto-creation of associations permits the 'Employee' type to possess a collection of 'Sales Order'.
Association Name*2Entity , CollectionUnique name is required for the intended association. While this name will not be displayed, it will be used in database alteration. Ensure that this name is unique.
Created Collection Name*2Entity , CollectionDisplayed name for automatically created collection.
Usage Example:
In accordance with the provided examples above in the Entity Type and Auto Create Association, Created collection name should be relative and meaningful Ex : 'SalesOrders'
Datasource CriteriaEntityThis field is visible only when the ‘Entity’ data type is selected.
Provide specific criteria to filter the dropdown list for users to choose from.
Click here to Learn about Criteria
Datasource PropertyEntityThis field is visible only when the ‘Entity’ data type is selected.
Provide another member as datasource.
Usage Example:
Show Only Employees with specific Job Title , therefore Datasource Property shall be similar to this : 'JobTitle.Employees'
Datasource Property Null ModeEntityThis field is visible only when the ‘Entity’ data type is selected.
Define the system behaviour if datasource property hold empty records.
Choose 1 of the following 3 options :
Select nothing : No records will be shown.
Select all : All records present of this type will be shown.
Custom Criteria : Datasource criteria will be applied to filter the dropdown list.

*1 Edit masks and display formats are universally accessible but should be applied in accordance with the data type. For instance, phone number mask/format should exclusively be utilized with string data type. Edit masks and display formats adhere to standard patterns.
*2 Names should not contain empty spaces or special characters.


Calculated Member(s)

  1. Create New Member
  2. Input ‘Member Name’ , Remember Member Name should be unique and should not contain white spaces or special characters
  3. Choose ‘Calculated’ as Type
  4. Choose Data Type

For all data types the following options are shown :

image 27

OptionDescription
Failed To ImplementThis field indicates that certain error occured while trying to implement this member.
Failure Error MessageThis field will appear once ‘Failed To Implement’ is indicated , describing the nature of error and how to fix it.
ExpressionInvoke the expression editor and input the calculated expression to be performed.
Click here to Learn about Expressions
OverrideAbility to manually input expression text without using the Expression Editor
Edit MaskThe Edit Mask feature enables users to specify a format for data input, ensuring consistency and accuracy. This functionality allows you to define a pattern or mask that dictates how data should be entered into a field. For instance, you can enforce specific characters, placeholders, or even formats like dates or phone numbers, you can also use Regular Expressions.

Usage examples :
Phone Number :
(000) 000-000-00 => 012 775 111 19
Date Time :
dd/MM/yyyy => 18/12/2011
Number :
N2 => 123.00
N1 => 123.0
N0 => 123
Display FormatSimilar to Edit Mask , but intended only for formatting how data should be displayed.

💡Important Note
To apply metadata changes, you must restart Perfecto ERP application for changes to take effect.


How to Create Persistent Member - Entity Data Type - Desktop Version
How To Create Persistent Member - String Data Type with Enum Values - Cloud Version