Custom Segments: Transaction Impact
Understanding how custom segments affect transactions, GL postings, and downstream processes.
Transaction Flow
SEGMENT ON TRANSACTION
─────────────────────────────────────────────────────────
┌─────────────────────────────────────────────────────────┐
│ VENDOR BILL │
│ Vendor: ABC Consulting │
│ Amount: $20,000 │
│ Project Code: PRJ-002 (Mobile App) │
├─────────────────────────────────────────────────────────┤
│ │
│ LINE 1: Development Services │
│ ├── Account: 6100 - Professional Services │
│ ├── Amount: $15,000 │
│ └── Project: PRJ-002 │
│ │
│ LINE 2: Project Management │
│ ├── Account: 6100 - Professional Services │
│ ├── Amount: $5,000 │
│ └── Project: PRJ-002 │
│ │
└───────────────────────────┬─────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ GL IMPACT (if enabled) │
├─────────────────────────────────────────────────────────┤
│ │
│ Dr. 6100:PRJ-002 Professional Services $20,000 │
│ Cr. 2000 Accounts Payable $20,000 │
│ │
│ Segment-specific account posting │
└─────────────────────────────────────────────────────────┘
Header vs Line-Level Segments
Header-Level Segment
Applied to entire transaction:
┌─────────────────────────────────────────────────────────┐
│ EXPENSE REPORT │
│ Employee: John Smith │
│ Project Code: PRJ-002 (header) ←────────────────────┐ │
├─────────────────────────────────────────────────────────┤
│ Line 1: Airfare $500 Project: PRJ-002 ◄─┤ │
│ Line 2: Hotel $400 Project: PRJ-002 ◄─┤ │
│ Line 3: Meals $100 Project: PRJ-002 ◄─┘ │
└─────────────────────────────────────────────────────────┘
Line-Level Segment
Each line can have different value:
┌─────────────────────────────────────────────────────────┐
│ VENDOR BILL │
│ Vendor: Multi-Project Consulting │
├─────────────────────────────────────────────────────────┤
│ Line 1: Website Work $5,000 Project: PRJ-001 │
│ Line 2: Mobile Work $8,000 Project: PRJ-002 │
│ Line 3: ERP Analysis $3,000 Project: PRJ-003 │
└─────────────────────────────────────────────────────────┘
GL Account Behavior
With GL Impact Enabled
| Setting | Account Number | Description |
|---|---|---|
| Base Account | 6100 | Professional Services |
| + Segment PRJ-001 | 6100:PRJ-001 | Professional Services : Website |
| + Segment PRJ-002 | 6100:PRJ-002 | Professional Services : Mobile App |
Account Creation
When a segment value is used for the first time:
- System checks for segment-specific account
- If not exists, creates new account automatically
- New account inherits properties from base account
- Posting uses the segment-specific account
First transaction with PRJ-004:
1. System looks for: 6100:PRJ-004
2. Not found → Creates 6100:PRJ-004
3. New account:
- Name: Professional Services : Data Center
- Type: Expense
- Parent: 6100
4. Transaction posts to 6100:PRJ-004
Without GL Impact
Transaction posts to base account only:
Dr. 6100 Professional Services $20,000
Segment stored as metadata:
- Transaction field: cseg_project = PRJ-002
- Available for filtering in reports
- No separate GL account
Intercompany Transactions
Cross-Subsidiary with Segments
INTERCOMPANY SCENARIO
─────────────────────────────────────────────────────────
Subsidiary A (US) → Subsidiary B (UK)
Project: PRJ-002 (shared across subsidiaries)
┌─────────────────────────────────────────────────────────┐
│ INTERCOMPANY JOURNAL ENTRY │
├─────────────────────────────────────────────────────────┤
│ │
│ US Books: │
│ Dr. 1200:PRJ-002 IC Receivable $10,000 │
│ Cr. 4000:PRJ-002 IC Revenue $10,000 │
│ │
│ UK Books: │
│ Dr. 6100:PRJ-002 IC Expense $10,000 │
│ Cr. 2100:PRJ-002 IC Payable $10,000 │
│ │
└─────────────────────────────────────────────────────────┘
Segment Sharing Across Subsidiaries
| Configuration | Behavior |
|---|---|
| Shared Values | Same segment values available in all subsidiaries |
| Subsidiary-Specific | Different values per subsidiary |
| Filtered | Values filtered by subsidiary selection |
Transaction Types Reference
Fully Supported
| Transaction | Header | Lines | GL Impact |
|---|---|---|---|
| Journal Entry | ✓ | ✓ | ✓ |
| Vendor Bill | ✓ | ✓ | ✓ |
| Vendor Credit | ✓ | ✓ | ✓ |
| Check | ✓ | ✓ | ✓ |
| Expense Report | ✓ | ✓ | ✓ |
| Purchase Order | ✓ | ✓ | When billed |
| Invoice | ✓ | ✓ | ✓ |
| Credit Memo | ✓ | ✓ | ✓ |
| Sales Order | ✓ | ✓ | When invoiced |
Inventory Transactions
| Transaction | Header | Lines | Notes |
|---|---|---|---|
| Item Receipt | ✓ | ✓ | Affects inventory accounts |
| Item Fulfillment | ✓ | ✓ | COGS impact |
| Inventory Adjustment | ✓ | ✓ | Full GL impact |
| Assembly Build | ✓ | ✓ | WIP and finished goods |
Segment Inheritance
From Header to Lines
// Default behavior if configured
Transaction Header:
Project Code: PRJ-002
New Line Added:
└── Inherits: Project Code = PRJ-002
From Source Transactions
Purchase Order → Item Receipt → Vendor Bill
PO Line:
├── Item: Widget A
└── Project: PRJ-001
Item Receipt Line (created from PO):
├── Item: Widget A
└── Project: PRJ-001 (inherited)
Vendor Bill Line (created from Receipt):
├── Item: Widget A
└── Project: PRJ-001 (inherited)
Override Behavior
| Setting | Behavior |
|---|---|
| Allow Override | User can change inherited value |
| Locked | Inherited value cannot be changed |
| Default Only | Inherits but can be cleared |
Validation Rules
Mandatory Segments
Transaction cannot be saved without:
├── Project Code (if mandatory for this transaction type)
└── Error: "Please enter a value for Project Code"
Value Restrictions
// User Event Script - Validate segment value
const validateLine = (context) => {
const project = context.currentRecord.getCurrentSublistValue({
sublistId: 'expense',
fieldId: 'cseg_project'
});
const department = context.currentRecord.getValue('department');
// Validate project matches department
if (!isValidProjectForDept(project, department)) {
return false; // Prevent save
}
return true;
};
Cross-Segment Validation
Rule: IT projects only valid with IT department
Valid:
├── Department: IT + Project: PRJ-IT-001 ✓
Invalid:
├── Department: Sales + Project: PRJ-IT-001 ✗
└── Error: "Project PRJ-IT-001 is not valid for Sales department"
Budgeting with Segments
Budget Records
Budget Entry:
├── Account: 6100 - Professional Services
├── Subsidiary: US Operations
├── Department: IT
├── Project Code: PRJ-002
├── Period: Jan 2025
└── Amount: $50,000
Budget vs Actual Reports
Budget vs Actual by Project
─────────────────────────────────────────────────────────
Project Budget Actual Variance
─────────────────────────────────────────────────────────
PRJ-001 $100,000 $95,000 $5,000 (Under)
PRJ-002 $150,000 $162,000 -$12,000 (Over)
PRJ-003 $75,000 $70,000 $5,000 (Under)
─────────────────────────────────────────────────────────
Total $325,000 $327,000 -$2,000
Common Issues
Issue: Segment Not Appearing on Transaction
| Cause | Solution |
|---|---|
| Not deployed to transaction type | Add transaction in Applies To |
| Not on transaction form | Customize form to add field |
| Role doesn't have access | Grant segment permission to role |
| Value is inactive | Reactivate or choose different value |
Issue: GL Account Not Created
| Cause | Solution |
|---|---|
| GL Impact not enabled | Enable GL Impact on segment |
| Account type restricted | Check account type settings |
| Segment value inactive | Activate the segment value |
Issue: Incorrect GL Posting
| Cause | Solution |
|---|---|
| Line vs header conflict | Check segment sourcing rules |
| Missing segment value | Make segment mandatory |
| Wrong segment inherited | Check source transaction |
See Also
- Creating Segments - Setup guide
- Reporting & Analytics - Report configuration
- Journal Entries - JE segment usage