Table of Contents
1. Overview
The Layaway Plan form is a master configuration screen in the Layaway / EMA Plans module. It allows administrators to define layaway plan templates that govern how customers can reserve products through installment-based payments. A plan defines down payment rules, installment tenure, late penalty charges, cancellation terms, inventory locking behavior, and order generation policies.
| Attribute | Value |
|---|---|
| Form Name | Layaway Plan |
| Module | Layaway / EMA Plans |
| Form Type | Master Configuration |
| Primary Table | emaLayawayPlanHDR |
| Approval Workflow | Yes – MasterDataValueID_ApprovalStatus |
| Multi-Location Support | Yes – via emaLayawayPlanLocationDTL |
| Soft Delete | Yes – Active flag on HDR |
2. Database
SioniqAdminDB
3. Primary Tables
3.1 HDR Table
| Table Name | Description |
|---|---|
emaLayawayPlanHDR | Main header record storing all plan-level configuration fields. One row per layaway plan. |
3.2 DTL Tables
| Table Name | Description |
|---|---|
emaLayawayPlanLocationDTL | Stores applicable business units / locations for the plan. |
emaLayawayPlanMetalDTL | Metal setup entries (Group Category level) for the plan. |
emaLayawayPlanProductCategoryDTL | Category-level metal setup entries. |
emaLayawayPlanProductSubCategoryDTL | Sub-category level metal setup entries. |
emaLayawayPlanProductArticleDTL | Article-level metal setup entries. |
emaLayawayPlanMetalBrandDTL | Brand setup at metal (group category) level. |
emaLayawayPlanProductCategoryBrandDTL | Brand setup at category level. |
emaLayawayPlanProductSubCategoryBrandDTL | Brand setup at sub-category level. |
emaLayawayPlanProductArticleBrandDTL | Brand setup at article level. |
emaLayawayPlanStoneDTL | Stone setup at Stone Group level. |
emaLayawayPlanStoneCategoryDTL | Stone setup at Stone Category level. |
emaLayawayPlanStoneSubCategoryDTL | Stone setup at Stone Sub-Category level. |
emaLayawayPlanStoneAttributeDTL | Stone setup at Stone Attribute level. |
emaLayawayPlanStoneArticleDTL | Stone setup at Stone Article level. |
emaLayawayPlanSoftLockConditionDTL | Soft lock condition header – stores MinDaysBeforeDeliveryForResale and Order Generation Trigger Mode. |
emaLayawayPlanSoftLockConditionDefaultDTL | Default order generation policy rows (policy = Default). |
emaLayawayPlanSoftLockConditionMetalDTL | Order generation policy rows at metal/group-category level. |
emaLayawayPlanSoftLockConditionProductCategoryDTL | Order generation policy rows at product category level. |
emaLayawayPlanSoftLockConditionProductSubCategoryDTL | Order generation policy rows at product sub-category level. |
emaLayawayPlanSoftLockConditionProductArticleDTL | Order generation policy rows at product article level. |
emaLayawayPlanSoftLockConditionMetalValueDTL | Schedule-based value rows linked to metal-level soft lock conditions. |
emaLayawayPlanSoftLockConditionProductCategoryValueDTL | Schedule-based value rows linked to category-level soft lock conditions. |
emaLayawayPlanSoftLockConditionProductSubCategoryValueDTL | Schedule-based value rows linked to sub-category soft lock conditions. |
emaLayawayPlanSoftLockConditionProductArticleValueDTL | Schedule-based value rows linked to article-level soft lock conditions. |
emaLayawayPlanSoftLockConditionInventoryAgeDTL | Inventory age comparison rows within soft lock conditions. |
Table Relationship Diagram
Transaction Flow Diagram
4. Reference / Lookup Tables
| Table Name | Used For |
|---|---|
admLocation | Business Unit / Location multi-selection |
invMetal | Metal dropdown in Metal Setup and Brand Setup sections |
invPurity | Purity dropdown in Metal Setup section |
invProductCategory | Category dropdown in Metal Setup and Order Generation Policy |
invProductSubCategory | Sub-Category dropdown in Metal Setup |
invProductArticleCatalog | Article dropdown in Metal Setup and Order Generation Policy |
invProductBrand | Brand dropdown in Brand Setup section |
invStone | Stone Group dropdown in Stone Setup |
invStoneCategory | Stone Category dropdown in Stone Setup |
invStoneSubCategory | Stone Sub-Category dropdown in Stone Setup |
invStoneArticleCatalog | Stone Article dropdown in Stone Setup |
invStoneAttribute | Stone Attribute dropdown in Stone Setup |
admMasterDataValueDTL | All dropdown lists (charge types, locking mode, settlement mode, collection modes, etc.) |
5. Form Controls & Functionalities
5.1 Basic Information
Active (Toggle)
Controls the active/inactive status of the Layaway Plan record.
Control Properties:- Default Value: Checked (True)
- User Entry: User can Toggle On/Off
- Mandatory: No
- Toggled On (True): Plan is Active and available for use in transactions.
- Toggled Off (False): Plan is Inactive and no longer available for use in transactions.
- Not restricted by Roles and Rights Configuration — available to all users.
- emaLayawayPlanHDR →
Active(bit)
Name (Textbox)
Unique name for the Layaway Plan.
Control Properties:- Default Value: Empty
- User Entry: Manual input
- Mandatory: Yes
- Allowed Characters: Alphanumeric
- emaLayawayPlanHDR →
Name
Min Invoice Value (Textbox)
Minimum invoice amount eligible for this layaway plan.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes
- Allowed Characters: Numeric (decimal)
Must be less than Max Invoice Value.
Saved in & as:- emaLayawayPlanHDR →
MinInvoiceAmount
Max Invoice Value (Textbox)
Maximum invoice amount eligible for this layaway plan.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes
- Allowed Characters: Numeric (decimal)
Must be greater than Min Invoice Value.
Saved in & as:- emaLayawayPlanHDR →
MaxInvoiceAmount
5.2 Down Payment
Down Payment Calculation Type (Single Selection Dropdown)
Defines how the down payment amount is calculated.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = DownPayment_MasterDataValueID_LayawayChargeType
- User Entry: Selection from dropdown
- Mandatory: Yes
- Options:
- Flat Amount — A fixed amount is charged as the down payment regardless of the invoice value.
- Percentage On Total Payment — Down payment is calculated as a percentage of the total invoice amount.
- emaLayawayPlanHDR →
DownPayment__MasterDataValueID_LayawayChargeType
Down Payment Value (Textbox)
The actual down payment amount or percentage value depending on the selected calculation type.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes
- Allowed Characters: Numeric (decimal)
- emaLayawayPlanHDR →
DownPaymentValue
Processing Fee (Textbox)
One-time processing fee charged at the time of plan creation.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: No
- Allowed Characters: Numeric (decimal)
- emaLayawayPlanHDR →
ProcessingFee
5.3 Installment Tenure
Installment Tenure (Months) (Textbox)
Total duration of the layaway plan in months.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes
- Allowed Characters: Numeric (integer)
- emaLayawayPlanHDR →
InstallmentTenureMonths
Lock Tenure (Checkbox)
When checked, the installment tenure cannot be changed after the layaway plan is applied to a transaction.
Control Properties:- Default Value: Unchecked (False)
- User Entry: User can Check/Uncheck
- Mandatory: No
- Checked (True): Tenure is locked and cannot be modified in transaction.
- Unchecked (False): Tenure can be adjusted at transaction level.
- emaLayawayPlanHDR →
IsTenureLocked
5.4 Late Payment Penalty
Late Payment Penalty Type (Single Selection Dropdown)
Defines the method used to calculate the late payment penalty charge.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = LatePenalty_MasterDataValueID_LayawayChargeType
- User Entry: Selection from dropdown
- Mandatory: No
- Options: Flat Amount, Percentage On Down Payment, Percentage On Total Payment
- emaLayawayPlanHDR →
LatePenalty_MasterDataValueID_LayawayChargeType
Penalty Value (Textbox)
The penalty amount or percentage applied when a payment is overdue.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Late Payment Penalty Type is selected)
- Allowed Characters: Numeric (decimal)
- emaLayawayPlanHDR →
LatePenaltyValue
Grace Period (Days) (Textbox)
Number of days after due date before the late penalty is applied.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: No
- Allowed Characters: Numeric (integer)
- emaLayawayPlanHDR →
LatePenaltyGracePeriodDays
5.5 Advance Conversion Charge
Advance Conversion Charge Type (Single Selection Dropdown)
Defines how the advance conversion charge is calculated when advance amount is converted.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = AdvanceConversion_MasterDataValueID_LayawayChargeType
- User Entry: Selection from dropdown
- Mandatory: No
- Options: Flat Amount, Percentage On Down Payment, Percentage On Total Payment
- emaLayawayPlanHDR →
AdvanceConversion_MasterDataValueID_LayawayChargeType
Advance Conversion Charge (Textbox)
The advance conversion charge amount or percentage.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Advance Conversion Charge Type is selected)
- Allowed Characters: Numeric (decimal)
- emaLayawayPlanHDR →
AdvanceConversionChargeValue
5.6 Cancellation Charge
Cancellation Charge Type (Single Selection Dropdown)
Defines the method used to calculate the cancellation charge.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = Cancellation_MasterDataValueID_LayawayChargeType
- User Entry: Selection from dropdown
- Mandatory: No
- Options:
- Flat Amount — A fixed amount is charged as the cancellation fee regardless of the invoice or payment value.
- Percentage On Down Payment — Cancellation charge is calculated as a percentage of the down payment amount collected.
- Percentage On Total Payment — Cancellation charge is calculated as a percentage of the total invoice amount.
- emaLayawayPlanHDR →
Cancellation_MasterDataValueID_LayawayChargeType
Cancellation Charge (Textbox)
The cancellation charge amount or percentage.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Cancellation Charge Type is selected)
- Allowed Characters: Numeric (decimal)
- emaLayawayPlanHDR →
CancellationChargeValue
5.7 Refund Settlement
Refund Settlement Mode (Single Selection Dropdown)
Defines the mode through which refund is settled to the customer on cancellation.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_LayawayRefundSettlementMode
- User Entry: Selection from dropdown
- Mandatory: No
- Options: Cash, Bank Transfer, UPI Transfer, Advance Conversion
- emaLayawayPlanHDR →
MasterDataValueID_LayawayRefundSettlementMode
Refund Timeline (Days) (Textbox)
Number of days within which the refund must be processed after cancellation.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: No
- Allowed Characters: Numeric (integer)
- emaLayawayPlanHDR →
RefundTimelineDays
5.8 Installment Collection Mode
Installment Collection Mode (Single Selection Dropdown)
Defines the schedule type for collecting installments.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_LayawayInstallmentCollectionMode
- User Entry: Selection from dropdown
- Mandatory: Yes
- Options: Monthly Fixed Window, Monthly Flexible, Bi-Weekly Fixed Day, Bi-Weekly Flexible, Custom Interval
- Monthly Fixed Window → Shows From Day and To Day dropdowns.
- Bi-Weekly Fixed Day → Shows Week Day dropdown.
- Custom Interval → Shows Collection Interval Days textbox.
- Monthly Flexible / Bi-Weekly Flexible → No additional sub-fields required.
- emaLayawayPlanHDR →
MasterDataValueID_LayawayInstallmentCollectionMode
From Day (Single Selection Dropdown)
Start day of the collection window within a month.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = From_MasterDataValueID_Day
- User Entry: Selection from dropdown
- Mandatory: Yes (when Collection Mode = Monthly Fixed Window)
Visible only when Installment Collection Mode = Monthly Fixed Window.
Saved in & as:- emaLayawayPlanHDR →
From_MasterDataValueID_Day
To Day (Single Selection Dropdown)
End day of the collection window within a month.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = To_MasterDataValueID_Day
- User Entry: Selection from dropdown
- Mandatory: Yes (when Collection Mode = Monthly Fixed Window)
Visible only when Installment Collection Mode = Monthly Fixed Window. To Day must be ≥ From Day.
Saved in & as:- emaLayawayPlanHDR →
To_MasterDataValueID_Day
Week Day (Single Selection Dropdown)
The specific day of the week on which bi-weekly installment collection is scheduled.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_WeekDay
- User Entry: Selection from dropdown
- Mandatory: Yes (when Collection Mode = Bi-Weekly Fixed Day)
Visible only when Installment Collection Mode = Bi-Weekly Fixed Day.
Saved in & as:- emaLayawayPlanHDR →
MasterDataValueID_WeekDay
Collection Interval Days (Textbox)
Number of days between each installment collection when using Custom Interval mode.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Collection Mode = Custom Interval)
- Allowed Characters: Numeric (integer)
Visible only when Installment Collection Mode = Custom Interval.
Saved in & as:- emaLayawayPlanHDR →
CollectionIntervalDays
5.9 Installment Collection Settings
Auto Deactivate on Missed Collections (Checkbox)
When checked, the layaway plan is automatically deactivated when the maximum missed installments threshold is reached.
Control Properties:- Default Value: Unchecked (False)
- User Entry: User can Check/Uncheck
- Mandatory: No
- Checked (True): Enables Max Missed Installments and Max Overdue Days fields.
- Unchecked (False): Hides / disables those fields.
- emaLayawayPlanHDR →
IsAutoDeactivateOnMissedCollection
Max Missed Installments (Textbox)
Maximum number of missed installments allowed before auto-deactivation.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Auto Deactivate = Checked)
- Allowed Characters: Numeric (integer)
Visible only when Auto Deactivate on Missed Collections = Checked.
Saved in & as:- emaLayawayPlanHDR →
MaxMissedInstallmentCount
Max Overdue Days (Textbox)
Maximum number of overdue days before triggering auto-deactivation.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Auto Deactivate = Checked)
- Allowed Characters: Numeric (integer)
Visible only when Auto Deactivate on Missed Collections = Checked.
Saved in & as:- emaLayawayPlanHDR →
MaxOverdueDays
Allow Collection of Pending Installments (Checkbox)
When checked, allows collecting previously pending installments in addition to the current due installment.
Control Properties:- Default Value: Unchecked (False)
- User Entry: User can Check/Uncheck
- Mandatory: No
- Checked (True): Enables Max Pending Installments Allowed field.
- Unchecked (False): Hides / disables that field.
- emaLayawayPlanHDR →
IsPendingInstallmentCollectionAllowed
Max Pending Installments Allowed (Textbox)
Maximum count of pending installments that can be collected in one transaction.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Allow Pending Installments = Checked)
- Allowed Characters: Numeric (integer)
Visible only when Allow Collection of Pending Installments = Checked.
Saved in & as:- emaLayawayPlanHDR →
MaxPendingInstallmentCollectionCount
Allow Collection of Advance Installments (Checkbox)
When checked, allows customers to pay installments in advance of the due date.
Control Properties:- Default Value: Unchecked (False)
- User Entry: User can Check/Uncheck
- Mandatory: No
- Checked (True): Enables Max Advance Installments Allowed field.
- Unchecked (False): Hides / disables that field.
- emaLayawayPlanHDR →
IsAdvanceInstallmentCollectionAllowed
Max Advance Installments Allowed (Textbox)
Maximum number of future installments that can be collected in advance.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Allow Advance Installments = Checked)
- Allowed Characters: Numeric (integer)
Visible only when Allow Collection of Advance Installments = Checked.
Saved in & as:- emaLayawayPlanHDR →
MaxAdvanceInstallmentCollectionCount
Allow Partial Installment Collection (Checkbox)
When checked, allows customers to pay a partial amount of an installment.
Control Properties:- Default Value: Unchecked (False)
- User Entry: User can Check/Uncheck
- Mandatory: No
- Checked (True): Enables Max Partial Payments Per Installment field.
- Unchecked (False): Hides / disables that field.
- emaLayawayPlanHDR →
IsPartialInstallmentCollectionAllowed
Max Partial Payments Per Installment (Textbox)
Maximum number of partial payments allowed per installment cycle.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Allow Partial Installment Collection = Checked)
- Allowed Characters: Numeric (integer)
Visible only when Allow Partial Installment Collection = Checked.
Saved in & as:- emaLayawayPlanHDR →
MaxPartialPaymentsPerInstallment
5.10 Business Unit
Business Unit (Multi-Selection Dropdown)
Selects the locations/branches where this layaway plan is applicable. Supports multi-selection.
Control Properties:- Default Value: —
- Data Source: admLocation
- Filter Condition:
- Active = True, listed from LocationID
- User Entry: Multi-selection from dropdown
- Mandatory: Yes
- emaLayawayPlanLocationDTL →
RefLocationID(one row per selected location)
5.11 Inventory Locking Mode
Inventory Locking Mode (Single Selection Dropdown)
Defines how inventory is reserved when a layaway plan is applied to a transaction.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_LayawayInventoryLockingMode
- User Entry: Selection from dropdown
- Mandatory: Yes
- Options: Hard Lock, Soft Lock
- Hard Lock: Inventory is fully reserved and cannot be sold to others.
- Soft Lock: Inventory can be resold with conditions defined in the Soft Lock Condition section below.
- emaLayawayPlanHDR →
MasterDataValueID_LayawayInventoryLockingMode
5.12 Soft Lock Conditions (Visible only when Inventory Locking Mode = Soft Lock)
Min Days Before Delivery for Resale (Textbox)
Minimum number of days before the delivery date that a soft-locked item can be resold.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes (when Inventory Locking Mode = Soft Lock)
- Allowed Characters: Numeric (integer)
- emaLayawayPlanSoftLockConditionDTL →
MinDaysBeforeDeliveryForResale
Order Generation Trigger Mode (Single Selection Dropdown)
Defines when the resale order is generated for a soft-locked item.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_LayawayOrderGenerationTriggerMode
- User Entry: Selection from dropdown
- Mandatory: Yes (when Inventory Locking Mode = Soft Lock)
- Options: Immediate, Scheduled
- emaLayawayPlanSoftLockConditionDTL →
MasterDataValueID_LayawayOrderGenerationTriggerMode
5.13 Order Generation Policy (Repeatable Section – Multiple rows allowed)
Multiple Order Generation Policy rows can be added. Default policy is mandatory and can only be added once. All other policy types (Group Category, Category, Sub Category, Article, Inventory Age) can be added multiple times. Duplicate Group Category entries are not allowed (e.g., "Gold" can only appear once per policy type).
Order Generation Policy (Single Selection Dropdown)
Specifies the policy level at which the order generation schedule is defined.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_LayawayorderGenerationPolicy
- User Entry: Selection from dropdown
- Mandatory: Yes (when Order Generation Trigger Mode = Scheduled)
- Options: Default, Group Category, Category, Sub Category, Article, Inventory Age
- Default → Shows the following fields:
- Schedule Based On (Dropdown) – Options: Delivery Date, Sale Date
- Days Before Delivery (Textbox) – Visible when Schedule Based On = Delivery Date
- Days After Sale (Textbox) – Visible when Schedule Based On = Sale Date
- Mandatory to add at least once. Cannot be added multiple times.
- Group Category → Shows the following fields:
- Group Category (Multi-select Dropdown) – Source: invMetal, Active = True, listed from MetalID
- Schedule Based On (Dropdown) – Options: Delivery Date, Sale Date
- Days Before Delivery (Textbox) – Visible when Schedule Based On = Delivery Date
- Days After Sale (Textbox) – Visible when Schedule Based On = Sale Date
- Saved in: emaLayawayPlanSoftLockConditionMetalDTL + emaLayawayPlanSoftLockConditionMetalValueDTL
- Category → Shows the following fields:
- Group Category (Dropdown) – Source: invMetal, Active = True, listed from MetalID
- Category (Multi-select Dropdown) – Source: invProductCategory, Active = True, listed from ProductCategoryID, filtered by selected MetalID
- Schedule Based On (Dropdown) – Options: Delivery Date, Sale Date
- Days Before Delivery (Textbox) – Visible when Schedule Based On = Delivery Date
- Days After Sale (Textbox) – Visible when Schedule Based On = Sale Date
- Saved in: emaLayawayPlanSoftLockConditionProductCategoryDTL + emaLayawayPlanSoftLockConditionProductCategoryValueDTL
- Sub Category → Shows the following fields:
- Group Category (Dropdown) – Source: invMetal, Active = True, listed from MetalID
- Category (Dropdown) – Source: invProductCategory, Active = True, listed from ProductCategoryID, filtered by selected MetalID
- Sub Category Type (Dropdown) – Source: admMasterDataValueDTL, Active = True, listed from MasterDataValueID, MasterDataCategory = MasterDataValueID_ProductSubCategoryType
- Sub Category (Multi-select Dropdown) – Source: invProductSubCategory, Active = True, listed from ProductSubCategoryID, filtered by Category and Sub Category Type
- Schedule Based On (Dropdown) – Options: Delivery Date, Sale Date
- Days Before Delivery (Textbox) – Visible when Schedule Based On = Delivery Date
- Days After Sale (Textbox) – Visible when Schedule Based On = Sale Date
- Saved in: emaLayawayPlanSoftLockConditionProductSubCategoryDTL + emaLayawayPlanSoftLockConditionProductSubCategoryValueDTL
- Article → Shows the following fields:
- Group Category (Dropdown) – Source: invMetal, Active = True, listed from MetalID (for filtration)
- Category (Dropdown) – Source: invProductCategory, Active = True, listed from ProductCategoryID, filtered by MetalID (for filtration)
- Article (Multi-select Dropdown) – Source: invProductArticleCatalog, Active = True, listed from ProductArticleCatalogID, filtered by MetalID and CategoryID
- Schedule Based On (Dropdown) – Options: Delivery Date, Sale Date
- Days Before Delivery (Textbox) – Visible when Schedule Based On = Delivery Date
- Days After Sale (Textbox) – Visible when Schedule Based On = Sale Date
- Saved in: emaLayawayPlanSoftLockConditionProductArticleDTL + emaLayawayPlanSoftLockConditionProductArticleValueDTL
- Inventory Age → Shows the following fields:
- Comparison Operator (Dropdown) – Source: admMasterDataValueDTL, Active = True, listed from MasterDataValueID, MasterDataCategory = MasterDataValueID_ComparisionOperator
- Inventory Age (Days) (Textbox) – Numeric, integer
- Schedule Based On (Dropdown) – Options: Delivery Date, Sale Date
- Days Before Delivery (Textbox) – Visible when Schedule Based On = Delivery Date
- Days After Sale (Textbox) – Visible when Schedule Based On = Sale Date
- Saved in: emaLayawayPlanSoftLockConditionInventoryAgeDTL
- emaLayawayPlanSoftLockConditionDefaultDTL →
MasterDataValueID_LayawayOrderGenerationPolicy(if Default) - emaLayawayPlanSoftLockConditionMetalDTL →
MasterDataValueID_LayawayOrderGenerationPolicy(if Group Category) - emaLayawayPlanSoftLockConditionProductCategoryDTL →
MasterDataValueID_LayawayOrderGenerationPolicy(if Category) - emaLayawayPlanSoftLockConditionProductSubCategoryDTL →
MasterDataValueID_LayawayOrderGenerationPolicy(if Sub Category) - emaLayawayPlanSoftLockConditionProductArticleDTL →
MasterDataValueID_LayawayOrderGenerationPolicy(if Article) - emaLayawayPlanSoftLockConditionInventoryAgeDTL →
MasterDataValueID_LayawayOrderGenerationPolicy(if Inventory Age)
Schedule Based On (Single Selection Dropdown)
Defines whether the order generation schedule is calculated based on delivery date or sale date.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_LayawayOrderGenerationScheduleBasedOn
- Options: Delivery Date, Sale Date
- User Entry: Selection from dropdown
- Mandatory: Yes
- emaLayawayPlanSoftLockConditionDefaultDTL →
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn - emaLayawayPlanSoftLockConditionMetalValueDTL →
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn - emaLayawayPlanSoftLockConditionProductCategoryValueDTL →
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn - emaLayawayPlanSoftLockConditionProductSubCategoryValueDTL →
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn - emaLayawayPlanSoftLockConditionProductArticleValueDTL →
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn - emaLayawayPlanSoftLockConditionInventoryAgeDTL →
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn
Days Before Delivery (Textbox)
Number of days before delivery date to trigger order generation.
Control Properties:- Default Value: Empty
- Mandatory: Yes (when Schedule Based On = Delivery Date)
- Allowed Characters: Numeric (integer)
- Respective Value DTL →
OrderGenerateBeforeDeliveryDays
Days After Sale (Textbox)
Number of days after sale date to trigger order generation.
Control Properties:- Default Value: Empty
- Mandatory: Yes (when Schedule Based On = Sale Date)
- Allowed Characters: Numeric (integer)
- Respective Value DTL →
OrderGenerateAfterSaleDays
Add Button (Order Generation Policy) (Button)
Adds the configured order generation policy row to the plan.
Control Properties:- User Entry: Manual click
- Mandatory: No
- Validates that all required sub-fields for the selected policy are filled.
- Adds a row to the respective DTL table based on selected policy type.
- Prevents duplicate Default entries.
- Prevents duplicate Group Category values across rows of the same type.
- Added rows are displayed in an inline grid (Include section) below the Add button. Each row shows the policy type and configured values with a Remove option.
5.13.1 Order Generation Policy – Sub Fields
Group Category (Single / Multi-Selection Dropdown)
Filters by metal group category. Used as a filtration field in Group Category, Category, Sub Category, and Article policy types.
Control Properties:- Default Value: —
- Data Source: invMetal & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from MetalID
- Filtered by linked ProductArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
- Multi-select: Yes (when policy = Group Category)
Visible when Order Generation Policy = Group Category, Category, Sub Category, or Article.
Saved in & as:- emaLayawayPlanSoftLockConditionMetalDTL →
MetalID - emaLayawayPlanSoftLockConditionProductCategoryDTL →
MetalID - emaLayawayPlanSoftLockConditionProductSubCategoryDTL →
MetalID - emaLayawayPlanSoftLockConditionProductArticleDTL → used for filtration of invProductArticleCatalog
Category (Multi-Selection Dropdown)
Selects product categories filtered by the selected Group Category.
Control Properties:- Default Value: —
- Data Source: invProductCategory & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductCategoryID
- Filtered by selected MetalID
- Filtered by linked ProductArticleCatalogID
- User Entry: Multi-selection from dropdown
- Mandatory: Yes
Visible when Order Generation Policy = Category, Sub Category, or Article.
Saved in & as:- emaLayawayPlanSoftLockConditionProductCategoryDTL →
ProductCategoryID - emaLayawayPlanSoftLockConditionProductSubCategoryDTL →
ProductCategoryID - emaLayawayPlanSoftLockConditionProductArticleDTL → used for filtration of invProductArticleCatalog
Sub Category Type (Single Selection Dropdown)
Defines the type of sub-category to filter sub-categories.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_ProductSubCategoryType
- User Entry: Selection from dropdown
- Mandatory: Yes
- Options: ProductSubCategory1 to ProductSubCategory15 (Dynamic)
Visible only when Order Generation Policy = Sub Category.
Saved in & as:- emaLayawayPlanSoftLockConditionProductSubCategoryDTL →
MasterDataValueID_ProductSubCategoryType
Sub Category (Multi-Selection Dropdown)
Selects sub-categories filtered by Category and Sub Category Type.
Control Properties:- Default Value: —
- Data Source: invProductSubCategory & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductSubCategoryID
- Filtered by selected ProductCategoryID and MasterDataValueID_ProductSubCategoryType
- Filtered by linked ProductArticleCatalogID
- User Entry: Multi-selection from dropdown
- Mandatory: Yes
Visible only when Order Generation Policy = Sub Category.
Saved in & as:- emaLayawayPlanSoftLockConditionProductSubCategoryDTL →
ProductSubCategoryID
Article (Multi-Selection Dropdown)
Selects product articles filtered by Group Category and Category.
Control Properties:- Default Value: —
- Data Source: invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductArticleCatalogID
- Filtered by selected MetalID and ProductCategoryID
- User Entry: Multi-selection from dropdown
- Mandatory: Yes
Visible only when Order Generation Policy = Article.
Saved in & as:- emaLayawayPlanSoftLockConditionProductArticleDTL →
ProductArticleCatalogID
Comparison Operator (Single Selection Dropdown)
Defines the comparison operator used to evaluate the inventory age condition.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_ComparisionOperator
- User Entry: Selection from dropdown
- Mandatory: Yes
- Options:
- Equal To (=) — Inventory age is exactly equal to the specified days.
- Not Equal To (<>) — Inventory age is not equal to the specified days.
- Greater Than (>) — Inventory age is more than the specified days.
- Less Than (<) — Inventory age is less than the specified days.
- Greater Than or Equal To (>=) — Inventory age is more than or equal to the specified days.
- Less Than or Equal To (<=) — Inventory age is less than or equal to the specified days.
Visible only when Order Generation Policy = Inventory Age.
Saved in & as:- emaLayawayPlanSoftLockConditionInventoryAgeDTL →
MasterDataValueID_ComparisionOperator
Inventory Age (Days) (Textbox)
The inventory age value in days used for the comparison condition.
Control Properties:- Default Value: Empty
- User Entry: Manual numeric input
- Mandatory: Yes
- Allowed Characters: Numeric (integer)
Visible only when Order Generation Policy = Inventory Age.
Saved in & as:- emaLayawayPlanSoftLockConditionInventoryAgeDTL →
InventoryAgeInDays
5.14 Metal Setup (Repeatable Section)
Configures metal/purity-level applicability for the plan. Setup Type drives which filtration dropdowns appear.
Setup Type (Metal) (Single Selection Dropdown)
Determines the level of metal setup — Group Category, Category, Sub Category, or Article.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_VendorWastageSetupType
- User Entry: Selection from dropdown
- Options: Group Category, Category, Sub Category, Article
- Mandatory: Yes
- Group Category → Shows Group Category + Purity dropdowns.
- Category → Shows Group Category + Category + Purity dropdowns.
- Sub Category → Shows Group Category + Category + Sub Category Type + Sub Category + Purity dropdowns.
- Article → Shows Article + Purity dropdowns (all for filtration).
- emaLayawayPlanMetalDTL →
MasterDataValueID_VendorWastageSetupType - emaLayawayPlanProductCategoryDTL →
MasterDataValueID_VendorWastageSetupType - emaLayawayPlanProductSubCategoryDTL →
MasterDataValueID_VendorWastageSetupType - emaLayawayPlanProductArticleDTL →
MasterDataValueID_VendorWastageSetupType
5.14.1 Metal Setup – Sub Fields
Group Category (Metal) (Single Selection Dropdown)
Selects the metal group category for the metal setup entry.
Control Properties:- Default Value: —
- Data Source: invMetal & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from MetalID
- Filtered by linked ProductArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible when Setup Type = Group Category, Category, Sub Category.
Saved in & as:- emaLayawayPlanMetalDTL →
MetalID - emaLayawayPlanProductCategoryDTL →
MetalID - emaLayawayPlanProductSubCategoryDTL →
MetalID
Category (Metal) (Single Selection Dropdown)
Selects the product category filtered by the selected Group Category.
Control Properties:- Default Value: —
- Data Source: invProductCategory & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductCategoryID
- Filtered by selected MetalID
- Filtered by linked ProductArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible when Setup Type = Category or Sub Category.
Saved in & as:- emaLayawayPlanProductCategoryDTL →
ProductCategoryID - emaLayawayPlanProductSubCategoryDTL →
ProductCategoryID
Sub Category Type (Metal) (Single Selection Dropdown)
Defines the type of sub-category to filter sub-categories in metal setup.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_ProductSubCategoryType
- User Entry: Selection from dropdown
- Mandatory: Yes
- Options: ProductSubCategory1 to ProductSubCategory15 (Dynamic)
Visible only when Setup Type = Sub Category.
Saved in & as:- emaLayawayPlanProductSubCategoryDTL →
MasterDataValueID_ProductSubCategoryType
Sub Category (Metal) (Single Selection Dropdown)
Selects the product sub-category filtered by Category and Sub Category Type.
Control Properties:- Default Value: —
- Data Source: invProductSubCategory & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductSubCategoryID
- Filtered by selected ProductCategoryID and MasterDataValueID_ProductSubCategoryType
- Filtered by linked ProductArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible only when Setup Type = Sub Category.
Saved in & as:- emaLayawayPlanProductSubCategoryDTL →
ProductSubCategoryID
Article (Metal) (Single Selection Dropdown)
Selects the product article for metal setup. All dropdowns shown are for filtration.
Control Properties:- Default Value: —
- Data Source: invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductArticleCatalogID
- Filtered by selected MetalID and ProductCategoryID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible only when Setup Type = Article.
Saved in & as:- emaLayawayPlanProductArticleDTL →
ProductArticleCatalogID
Purity (Single Selection Dropdown)
Selects the purity level applicable for the metal setup entry.
Control Properties:- Default Value: —
- Data Source: invPurity
- Filter Condition:
- Active = True, listed from PurityID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible for all Setup Types in Metal Setup.
Saved in & as:- emaLayawayPlanMetalDTL →
PurityID - emaLayawayPlanProductCategoryDTL →
PurityID - emaLayawayPlanProductSubCategoryDTL →
PurityID - emaLayawayPlanProductArticleDTL →
PurityID
Add Button (Metal Setup) (Button)
Adds the configured metal setup row to the plan.
Control Properties:- User Entry: Manual click
- Mandatory: No
- Validates that all required fields for the selected Setup Type are filled.
- Inserts a row into the respective Metal DTL table based on selected Setup Type.
- Added rows are displayed in an inline grid (Include section) below the Add button showing Setup Type, Metal, Purity with a Remove option.
5.15 Brand Setup (Repeatable Section)
Same structure as Metal Setup but instead of Purity, the Brand field is shown. Setup Type options are: Brand, Group Category, Category, Sub Category, Article.
Setup Type (Brand) (Single Selection Dropdown)
Determines the level of brand setup.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- User Entry: Selection from dropdown
- Options: Brand, Group Category, Category, Sub Category, Article
- Mandatory: Yes
- Brand → Shows Brand dropdown.
- Group Category → Shows Group Category + Brand dropdowns.
- Category → Shows Group Category + Category + Brand dropdowns.
- Sub Category → Shows Group Category + Category + Sub Category Type + Sub Category + Brand dropdowns.
- Article → Shows Article + Brand dropdowns.
- emaLayawayPlanMetalBrandDTL →
MasterDataValueID_VendorWastageSetupType - emaLayawayPlanProductCategoryBrandDTL, emaLayawayPlanProductSubCategoryBrandDTL, emaLayawayPlanProductArticleBrandDTL similarly.
5.15.1 Brand Setup – Sub Fields
Group Category (Brand) (Single Selection Dropdown)
Selects the metal group category for the brand setup entry.
Control Properties:- Default Value: —
- Data Source: invMetal & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from MetalID
- Filtered by linked ProductArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible when Setup Type = Group Category, Category, Sub Category.
Saved in & as:- emaLayawayPlanMetalBrandDTL →
MetalID - emaLayawayPlanProductCategoryBrandDTL →
MetalID - emaLayawayPlanProductSubCategoryBrandDTL →
MetalID
Category (Brand) (Single Selection Dropdown)
Selects the product category filtered by the selected Group Category.
Control Properties:- Default Value: —
- Data Source: invProductCategory & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductCategoryID
- Filtered by selected MetalID
- Filtered by linked ProductArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible when Setup Type = Category or Sub Category.
Saved in & as:- emaLayawayPlanProductCategoryBrandDTL →
ProductCategoryID - emaLayawayPlanProductSubCategoryBrandDTL →
ProductCategoryID
Sub Category Type (Brand) (Single Selection Dropdown)
Defines the type of sub-category to filter sub-categories in brand setup.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_ProductSubCategoryType
- User Entry: Selection from dropdown
- Mandatory: Yes
- Options: ProductSubCategory1 to ProductSubCategory15 (Dynamic)
Visible only when Setup Type = Sub Category.
Saved in & as:- emaLayawayPlanProductSubCategoryBrandDTL →
MasterDataValueID_ProductSubCategoryType
Sub Category (Brand) (Single Selection Dropdown)
Selects the product sub-category filtered by Category and Sub Category Type.
Control Properties:- Default Value: —
- Data Source: invProductSubCategory & invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductSubCategoryID
- Filtered by selected ProductCategoryID and MasterDataValueID_ProductSubCategoryType
- Filtered by linked ProductArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible only when Setup Type = Sub Category.
Saved in & as:- emaLayawayPlanProductSubCategoryBrandDTL →
ProductSubCategoryID
Article (Brand) (Single Selection Dropdown)
Selects the product article for brand setup. All dropdowns shown are for filtration.
Control Properties:- Default Value: —
- Data Source: invProductArticleCatalog
- Filter Condition:
- Active = True, listed from ProductArticleCatalogID
- Filtered by selected MetalID and ProductCategoryID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible only when Setup Type = Article.
Saved in & as:- emaLayawayPlanProductArticleBrandDTL →
ProductArticleCatalogID
Brand (Single Selection Dropdown)
Selects the product brand applicable for the brand setup entry.
Control Properties:- Default Value: —
- Data Source: invProductBrand
- Filter Condition:
- Active = True, listed from ProductBrandID
- Filtered by selected MetalID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible for all Setup Types in Brand Setup.
Saved in & as:- emaLayawayPlanMetalBrandDTL →
ProductBrandID - emaLayawayPlanProductCategoryBrandDTL →
ProductBrandID - emaLayawayPlanProductSubCategoryBrandDTL →
ProductBrandID - emaLayawayPlanProductArticleBrandDTL →
ProductBrandID
Add Button (Brand Setup) (Button)
Adds the configured brand setup row to the plan.
Control Properties:- User Entry: Manual click
- Mandatory: No
- Validates that all required fields for the selected Setup Type are filled.
- Inserts a row into the respective Brand DTL table based on selected Setup Type.
- Added rows are displayed in an inline grid (Include section) below the Add button showing Setup Type, Metal, Brand with a Remove option.
5.16 Stone Setup (Repeatable Section)
Configures stone-level applicability. At least one of Metal Setup, Brand Setup, or Stone Setup must be configured. Setup Type options: Stone Group, Stone Category, Stone Sub Category, Stone Attribute, Stone Article.
Setup Type (Stone) (Single Selection Dropdown)
Determines the level of stone setup.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_VendorStoneRateSetUpType
- User Entry: Selection from dropdown
- Options: Stone Group, Stone Category, Stone Sub Category, Stone Attribute, Stone Article
- Mandatory: Yes
- Stone Group → Shows Stone Group dropdown.
- Stone Category → Shows Stone Group + Stone Category dropdowns.
- Stone Sub Category → Shows Stone Group + Stone Category + Stone Sub Category dropdowns.
- Stone Attribute → Shows Stone Group + Stone Category + Stone Sub Category + Stone Attribute Type + Stone Attribute dropdowns.
- Stone Article → Shows Stone Article dropdown (with all attribute dropdowns for filtration).
- emaLayawayPlanStoneDTL →
MasterDataValueID_VendorStoneRateSetUpType - emaLayawayPlanStoneCategoryDTL, emaLayawayPlanStoneSubCategoryDTL, emaLayawayPlanStoneAttributeDTL, emaLayawayPlanStoneArticleDTL similarly.
5.16.1 Stone Setup – Sub Fields
Stone Group (Single Selection Dropdown)
Selects the stone group for the stone setup entry.
Control Properties:- Default Value: —
- Data Source: invStone & invStoneArticleCatalog
- Filter Condition:
- Active = True, listed from StoneID
- Filtered by linked StoneArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible when Setup Type = Stone Group, Stone Category, Stone Sub Category, Stone Attribute.
Saved in & as:- emaLayawayPlanStoneDTL →
StoneID - emaLayawayPlanStoneCategoryDTL →
StoneID - emaLayawayPlanStoneSubCategoryDTL →
StoneID - emaLayawayPlanStoneAttributeDTL →
StoneID
Stone Category (Single Selection Dropdown)
Selects the stone category filtered by the selected Stone Group.
Control Properties:- Default Value: —
- Data Source: invStoneCategory & invStoneArticleCatalog
- Filter Condition:
- Active = True, listed from StoneCategoryID
- Filtered by selected StoneID
- Filtered by linked StoneArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible when Setup Type = Stone Category, Stone Sub Category, Stone Attribute.
Saved in & as:- emaLayawayPlanStoneCategoryDTL →
StoneCategoryID - emaLayawayPlanStoneSubCategoryDTL →
StoneCategoryID - emaLayawayPlanStoneAttributeDTL →
StoneCategoryID
Stone Sub Category (Single Selection Dropdown)
Selects the stone sub-category filtered by the selected Stone Category.
Control Properties:- Default Value: —
- Data Source: invStoneSubCategory & invStoneArticleCatalog
- Filter Condition:
- Active = True, listed from StoneSubCategoryID
- Filtered by selected StoneCategoryID and StoneID
- Filtered by linked StoneArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible when Setup Type = Stone Sub Category or Stone Attribute.
Saved in & as:- emaLayawayPlanStoneSubCategoryDTL →
StoneSubCategoryID - emaLayawayPlanStoneAttributeDTL →
StoneSubCategoryID
Stone Attribute Type (Single Selection Dropdown)
Defines the type of stone attribute to filter stone attributes.
Control Properties:- Default Value: —
- Data Source: admMasterDataValueDTL
- Filter Condition:
- Active = True, listed from MasterDataValueID
- MasterDataCategory = MasterDataValueID_StoneAttributeType
- User Entry: Selection from dropdown
- Mandatory: Yes
- Options: Dynamic — populated based on user-defined categories in the system. Options are not fixed at configuration time.
Visible only when Setup Type = Stone Attribute.
Saved in & as:- emaLayawayPlanStoneAttributeDTL →
MasterDataValueID_StoneAttributeType
Stone Attribute (Single Selection Dropdown)
Selects the stone attribute filtered by Stone Attribute Type.
Control Properties:- Default Value: —
- Data Source: invStoneAttribute & invStoneArticleCatalog
- Filter Condition:
- Active = True, listed from StoneAttributeID
- Filtered by selected MasterDataValueID_StoneAttributeType
- Filtered by linked StoneArticleCatalogID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible only when Setup Type = Stone Attribute.
Saved in & as:- emaLayawayPlanStoneAttributeDTL →
StoneAttributeID
Stone Article (Single Selection Dropdown)
Selects the stone article. All attribute dropdowns shown are for filtration purposes.
Control Properties:- Default Value: —
- Data Source: invStoneArticleCatalog
- Filter Condition:
- Active = True, listed from StoneArticleCatalogID
- Filtered by selected StoneID, StoneCategoryID, StoneSubCategoryID
- User Entry: Selection from dropdown
- Mandatory: Yes
Visible only when Setup Type = Stone Article.
Saved in & as:- emaLayawayPlanStoneArticleDTL →
StoneArticleCatalogID
Add Button (Stone Setup) (Button)
Adds the configured stone setup row to the plan.
Control Properties:- User Entry: Manual click
- Mandatory: No
- Validates that all required fields for the selected Setup Type are filled.
- Inserts a row into the respective Stone DTL table based on selected Setup Type.
- Added rows are displayed in an inline grid (Include section) below the Add button showing Setup Type, Stone Group, and related fields with a Remove option.
- At least one of Metal Setup, Brand Setup, or Stone Setup must have at least one row added before saving.
5.17 Form Action Buttons
Save Button (Button)
Submits and saves the Layaway Plan form.
Control Properties:- User Entry: Manual click
- Mandatory: Yes
- Validates all mandatory fields before saving.
- On success: inserts HDR and all DTL records. Sets ApprovalStatus = Pending.
- On failure: displays inline validation error messages next to the respective fields.
Clear Button (Button)
Clears all entered data on the form without navigating away.
Control Properties:- User Entry: Manual click
- Mandatory: No
Discards all unsaved changes and resets all form fields to their default state.
6. Table View
6.1 Column List
| # | Column Header | Source Field | Remarks |
|---|---|---|---|
| 1 | Name | Name | Plan name |
| 2 | Min Invoice Amount | MinInvoiceAmount | Numeric |
| 3 | Max Invoice Amount | MaxInvoiceAmount | Numeric |
| 4 | Installment Tenure (Months) | InstallmentTenureMonths | Integer |
| 5 | Inventory Locking Mode | MasterDataValueID_LayawayInventoryLockingMode | Display master data value name |
| 6 | Collection Mode | MasterDataValueID_LayawayInstallmentCollectionMode | Display master data value name |
| 7 | Status | Active | Active / Inactive |
| 8 | Approval Status | MasterDataValueID_ApprovalStatus | Pending / Approved / Rejected |
| 9 | Actions | — | Add, Edit, Delete, Export, Export All |
6.2 Add Button
Opens the Layaway Plan form in Add mode to create a new record.
Behavior:- Visible and accessible only to users who have Add permission assigned in Roles and Rights Configuration.
- If the user does not have Add rights, the button is either hidden or disabled based on the Rights Configuration setup.
- Opens a blank form with all fields in their default state.
6.3 Edit Button
Opens the Layaway Plan form pre-populated with all HDR and DTL data for the selected record.
Behavior:- Visible and accessible only to users who have Edit permission assigned in Roles and Rights Configuration.
- If the user does not have Edit rights, the button is either hidden or disabled based on the Rights Configuration setup.
- Available only when Approval Status = Pending or Rejected.
- Disabled if Active = False.
- On Save: HDR updated in place; all DTL records deleted and re-inserted.
- Condition: No active transactions linked to this plan.
- Behavior: All plan fields are fully editable. No restrictions apply. Complete plan configuration can be changed.
- Condition: At least one active customer or transaction is linked to this plan.
- Behavior: Only the following fields are editable. All other fields are read-only.
- Name
- Min Invoice Value
- Max Invoice Value
- Down Payment Value — Increase only
- Processing Fee — Increase only
- Penalty Value — Increase only
- Grace Period (Days)
- Advance Conversion Charge
- Cancellation Charge
- Refund Timeline (Days)
- Installment Collection Mode — Mode itself is Not Editable. Only the following sub-fields are editable:
- From Day
- To Day
- Week Day
- Collection Interval Days
- Auto Deactivate on Missed Collections — If existing value = True: Not Editable. If existing value = False: Editable.
- Allow Collection of Pending Installments — If existing value = True: Not Editable. If existing value = False: Editable.
- Allow Collection of Advance Installments — If existing value = True: Not Editable. If existing value = False: Editable.
- Allow Partial Installment Collection — If existing value = True: Not Editable. If existing value = False: Editable.
- Max Missed Installments
- Max Overdue Days
- Max Pending Installments Allowed
- Max Advance Installments Allowed
- Max Partial Payments Per Installment
- Business Unit — Existing selected Business Units are Not Editable. New Business Unit selection is allowed.
- Days Before Delivery
- Days After Sale
- Inventory Age (Days)
6.4 Delete Button
Deactivates the Layaway Plan record.
Behavior:- Visible and accessible only to users who have Delete permission assigned in Roles and Rights Configuration.
- If the user does not have Delete rights, the button is either hidden or disabled based on the Rights Configuration setup.
- Shows a confirmation prompt before deletion.
- Disabled if already Inactive.
- System checks for downstream dependencies in linked modules (e.g., Active Layaway Transactions, Benefit Template Mapping, Member Joining).
- If dependencies exist: deletion is blocked with error message — "Layaway Plan record cannot be deleted as it is linked with active transactions."
- If no dependencies exist:
Active = Falseis set on HDR only. All child DTL records are retained. Hard delete is not performed.
6.5 Export Button
Exports the currently selected / filtered records from the Table View to a downloadable file.
Behavior:- Exports only the records visible in the current filtered/paginated view.
- File format: e.g., Excel, CSV.
- Exported columns match the Table View columns.
6.6 Export All Button
Exports all records from the Layaway Plan table regardless of current filters or pagination.
Behavior:- Exports all records from emaLayawayPlanHDR where Active = True.
- File format: e.g., Excel, CSV.
- Exported columns match the Table View columns.
7. Functional Specifications
7.1 Save Behavior (Add Mode)
- On Save, system first validates all mandatory fields at HDR level.
- Inserts one row into
emaLayawayPlanHDR. - Inserts one row per selected location into
emaLayawayPlanLocationDTL. - Inserts metal DTL rows based on Setup Type selection into respective Metal DTL tables.
- Inserts brand DTL rows based on Setup Type selection into respective Brand DTL tables.
- Inserts stone DTL rows based on Setup Type selection into respective Stone DTL tables.
- If Inventory Locking Mode = Soft Lock: inserts
emaLayawayPlanSoftLockConditionDTLfollowed by policy DTLs and their value DTLs per configured policy type. - Approval Status is set to Pending on initial save.
7.2 Edit Save Behavior
- HDR record is updated in place using the existing
LayawayPlanID. - All existing DTL records (Location, Metal, Brand, Stone, SoftLock) are deleted and re-inserted based on the updated form data.
- Approval Status is reset to Pending after edit save.
7.3.1 HDR Table – emaLayawayPlanHDR
| Column | Value on Save |
|---|---|
LayawayPlanID | New GUID (system generated) |
Name | User input |
MinInvoiceAmount | User input |
MaxInvoiceAmount | User input |
DownPayment__MasterDataValueID_LayawayChargeType | Selected MasterDataValueID |
DownPaymentValue | User input |
ProcessingFee | User input or 0 |
InstallmentTenureMonths | User input |
IsTenureLocked | Checkbox value (True/False) |
MasterDataValueID_LayawayInventoryLockingMode | Selected MasterDataValueID |
LatePenalty_MasterDataValueID_LayawayChargeType | Selected MasterDataValueID or NULL |
LatePenaltyGracePeriodDays | User input or NULL |
LatePenaltyValue | User input or NULL |
AdvanceConversion_MasterDataValueID_LayawayChargeType | Selected MasterDataValueID or NULL |
AdvanceConversionChargeValue | User input or NULL |
Cancellation_MasterDataValueID_LayawayChargeType | Selected MasterDataValueID or NULL |
CancellationChargeValue | User input or NULL |
MasterDataValueID_LayawayRefundSettlementMode | Selected MasterDataValueID or NULL |
RefundTimelineDays | User input or NULL |
MasterDataValueID_LayawayInstallmentCollectionMode | Selected MasterDataValueID |
From_MasterDataValueID_Day | Selected MasterDataValueID or NULL |
To_MasterDataValueID_Day | Selected MasterDataValueID or NULL |
MasterDataValueID_WeekDay | Selected MasterDataValueID or NULL |
CollectionIntervalDays | User input or NULL |
IsAutoDeactivateOnMissedCollection | Checkbox value |
MaxMissedInstallmentCount | User input or NULL |
MaxOverdueDays | User input or NULL |
IsPendingInstallmentCollectionAllowed | Checkbox value |
MaxPendingInstallmentCollectionCount | User input or NULL |
IsAdvanceInstallmentCollectionAllowed | Checkbox value |
MaxAdvanceInstallmentCollectionCount | User input or NULL |
IsPartialInstallmentCollectionAllowed | Checkbox value |
MaxPartialPaymentsPerInstallment | User input or NULL |
Active | True |
MasterDataValueID_ApprovalStatus | Pending (MasterDataValueID) |
7.3.2 DTL Tables
emaLayawayPlanLocationDTL — One row per selected Business Unit.
| Column | Value on Save |
|---|---|
LayawayPlanLocationID | New GUID |
LayawayPlanID | FK from HDR |
RefLocationID | Selected LocationID from admLocation |
emaLayawayPlanMetalDTL — One row per Group Category metal setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanMetalID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorWastageSetupType | Selected Setup Type MasterDataValueID |
MetalID | Selected Metal (Group Category) |
PurityID | Selected Purity or NULL |
emaLayawayPlanProductCategoryDTL — One row per Category-level metal setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanProductCategoryID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorWastageSetupType | Selected Setup Type MasterDataValueID |
MetalID | Selected Metal |
ProductCategoryID | Selected Category |
PurityID | Selected Purity or NULL |
emaLayawayPlanProductSubCategoryDTL — One row per Sub-Category-level metal setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanProductSubCategoryID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorWastageSetupType | Selected Setup Type MasterDataValueID |
MetalID | Selected Metal |
ProductCategoryID | Selected Category |
ProductSubCategoryID | Selected Sub-Category |
MasterDataValueID_ProductSubCategoryType | Selected Sub-Category Type MasterDataValueID |
PurityID | Selected Purity or NULL |
emaLayawayPlanProductArticleDTL — One row per Article-level metal setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanProductArticleID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorWastageSetupType | Selected Setup Type MasterDataValueID |
ProductArticleCatalogID | Selected Article |
PurityID | Selected Purity or NULL |
emaLayawayPlanMetalBrandDTL — One row per Brand setup entry at metal level.
| Column | Value on Save |
|---|---|
LayawayPlanMetalBrandID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorWastageSetupType | Selected Setup Type MasterDataValueID |
MetalID | Selected Metal |
ProductBrandID | Selected Brand |
emaLayawayPlanProductCategoryBrandDTL — One row per Category-level brand setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanProductCategoryBrandID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorWastageSetupType | Selected Setup Type MasterDataValueID |
MetalID | Selected Metal |
ProductCategoryID | Selected Category |
ProductBrandID | Selected Brand |
emaLayawayPlanProductSubCategoryBrandDTL — One row per Sub-Category-level brand setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanProductSubCategoryBrandID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorWastageSetupType | Selected Setup Type MasterDataValueID |
MetalID | Selected Metal |
ProductCategoryID | Selected Category |
ProductSubCategoryID | Selected Sub-Category |
MasterDataValueID_ProductSubCategoryType | Selected Sub-Category Type MasterDataValueID |
ProductBrandID | Selected Brand |
emaLayawayPlanProductArticleBrandDTL — One row per Article-level brand setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanProductArticleBrandID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorWastageSetupType | Selected Setup Type MasterDataValueID |
ProductArticleCatalogID | Selected Article |
ProductBrandID | Selected Brand |
emaLayawayPlanStoneDTL — One row per Stone Group setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanStoneID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorStoneRateSetUpType | Selected Setup Type MasterDataValueID |
StoneID | Selected Stone Group |
emaLayawayPlanStoneCategoryDTL — One row per Stone Category-level setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanStoneCategoryID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorStoneRateSetUpType | Selected Setup Type MasterDataValueID |
StoneID | Selected Stone Group |
StoneCategoryID | Selected Stone Category |
emaLayawayPlanStoneSubCategoryDTL — One row per Stone Sub-Category-level setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanStoneSubCategoryID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorStoneRateSetUpType | Selected Setup Type MasterDataValueID |
StoneID | Selected Stone Group |
StoneCategoryID | Selected Stone Category |
StoneSubCategoryID | Selected Stone Sub-Category |
emaLayawayPlanStoneAttributeDTL — One row per Stone Attribute-level setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanStoneAttributeID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorStoneRateSetUpType | Selected Setup Type MasterDataValueID |
StoneID | Selected Stone Group |
StoneCategoryID | Selected Stone Category |
StoneSubCategoryID | Selected Stone Sub-Category |
MasterDataValueID_StoneAttributeType | Selected Stone Attribute Type MasterDataValueID |
StoneAttributeID | Selected Stone Attribute |
emaLayawayPlanStoneArticleDTL — One row per Stone Article-level setup entry.
| Column | Value on Save |
|---|---|
LayawayPlanStoneArticleID | New GUID |
LayawayPlanID | FK from HDR |
MasterDataValueID_VendorStoneRateSetUpType | Selected Setup Type MasterDataValueID |
StoneArticleCatalogID | Selected Stone Article |
emaLayawayPlanSoftLockConditionDTL — One row per plan (only when Inventory Locking Mode = Soft Lock).
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionID | New GUID |
LayawayPlanID | FK from HDR |
MinDaysBeforeDeliveryForResale | User input or NULL |
MasterDataValueID_LayawayOrderGenerationTriggerMode | Selected MasterDataValueID |
emaLayawayPlanSoftLockConditionDefaultDTL — One row (mandatory Default policy row).
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionDefaultID | New GUID |
LayawayPlanSoftLockConditionID | FK from SoftLockConditionDTL |
MasterDataValueID_LayawayOrderGenerationPolicy | Default MasterDataValueID |
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn | Selected value |
OrderGenerateBeforeDeliveryDays | User input or NULL |
OrderGenerateAfterSaleDays | User input or NULL |
emaLayawayPlanSoftLockConditionMetalDTL — One row per Group Category policy entry.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionMetalID | New GUID |
LayawayPlanSoftLockConditionID | FK from SoftLockConditionDTL |
MasterDataValueID_LayawayOrderGenerationPolicy | Group Category MasterDataValueID |
MetalID | Selected Metal |
LayawayPlanSoftLockConditionMetalValueID | FK to MetalValueDTL |
emaLayawayPlanSoftLockConditionMetalValueDTL — One row per Group Category policy value.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionMetalValueID | New GUID |
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn | Selected Schedule Based On value |
OrderGenerateBeforeDeliveryDays | User input or NULL |
OrderGenerateAfterSaleDays | User input or NULL |
emaLayawayPlanSoftLockConditionProductCategoryDTL — One row per Category policy entry.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionProductCategoryID | New GUID |
LayawayPlanSoftLockConditionID | FK from SoftLockConditionDTL |
MasterDataValueID_LayawayOrderGenerationPolicy | Category MasterDataValueID |
MetalID | Selected Metal |
ProductCategoryID | Selected Category |
LayawayPlanSoftLockConditionProductCategoryValueID | FK to ProductCategoryValueDTL |
emaLayawayPlanSoftLockConditionProductCategoryValueDTL — One row per Category policy value.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionProductCategoryValueID | New GUID |
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn | Selected Schedule Based On value |
OrderGenerateBeforeDeliveryDays | User input or NULL |
OrderGenerateAfterSaleDays | User input or NULL |
emaLayawayPlanSoftLockConditionProductSubCategoryDTL — One row per Sub Category policy entry.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionProductSubCategoryID | New GUID |
LayawayPlanSoftLockConditionID | FK from SoftLockConditionDTL |
MasterDataValueID_LayawayOrderGenerationPolicy | Sub Category MasterDataValueID |
MetalID | Selected Metal |
ProductCategoryID | Selected Category |
ProductSubCategoryID | Selected Sub-Category |
MasterDataValueID_ProductSubCategoryType | Selected Sub-Category Type MasterDataValueID |
LayawayPlanSoftLockConditionProductSubCategoryValueID | FK to ProductSubCategoryValueDTL |
emaLayawayPlanSoftLockConditionProductSubCategoryValueDTL — One row per Sub Category policy value.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionProductSubCategoryValueID | New GUID |
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn | Selected Schedule Based On value |
OrderGenerateBeforeDeliveryDays | User input or NULL |
OrderGenerateAfterSaleDays | User input or NULL |
emaLayawayPlanSoftLockConditionProductArticleDTL — One row per Article policy entry.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionProductArticleID | New GUID |
LayawayPlanSoftLockConditionID | FK from SoftLockConditionDTL |
MasterDataValueID_LayawayOrderGenerationPolicy | Article MasterDataValueID |
ProductArticleCatalogID | Selected Article |
LayawayPlanSoftLockConditionProductArticleValueID | FK to ProductArticleValueDTL |
emaLayawayPlanSoftLockConditionProductArticleValueDTL — One row per Article policy value.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionProductArticleValueID | New GUID |
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn | Selected Schedule Based On value |
OrderGenerateBeforeDeliveryDays | User input or NULL |
OrderGenerateAfterSaleDays | User input or NULL |
emaLayawayPlanSoftLockConditionInventoryAgeDTL — One row per Inventory Age policy entry.
| Column | Value on Save |
|---|---|
LayawayPlanSoftLockConditionDefaultID | New GUID |
LayawayPlanSoftLockConditionID | FK from SoftLockConditionDTL |
MasterDataValueID_LayawayOrderGenerationPolicy | Inventory Age MasterDataValueID |
MasterDataValueID_ComparisionOperator | Selected operator |
InventoryAgeInDays | User input |
MasterDataValueID_LayawayOrderGenerationScheduleBasedOn | Selected value |
OrderGenerateBeforeDeliveryDays | User input or NULL |
OrderGenerateAfterSaleDays | User input or NULL |