Schema Reference
This reference is the table map for the dataset: which tables belong together, how the main relationships work, which keys matter most, and where the bridges between groups live.
If you need the big-picture business story first, start with Dataset Guide and Process Flows.
SQLite Physical Schema
- The generated SQLite file now includes a physical primary key on each table's main surrogate ID column.
- The SQLite file also includes a curated index set for high-value joins and stable business identifiers, but it does not index every relationship column in the model.
- Some business identifiers remain intentionally non-unique in anomaly scenarios, so fields such as supplier invoice numbers or payment references are not universally enforced as unique in SQLite.
How the Reference Is Organized
- Start with Table Groups to see how the model is divided.
- Use How to Read the ER Diagrams before you treat any one group diagram as a complete process story.
- Use Cross-Group Bridge Keys when you need to move from one table family to another.
- Use each group section when you need the main tables, the highest-value fields, and the local join paths.
Table Groups
| Group | What belongs here | Count |
|---|---|---|
| Accounting core | Accounts, journals, and posted ledger detail | 3 |
| Fixed assets and financing | Asset register, lifecycle events, and note schedules | 4 |
| Order-to-cash | Customers, commercial pricing, goods orders, service engagements, shipments, invoices, cash, returns, credits, and refunds | 22 |
| Procure-to-pay | Requisitions, purchase orders, receipts, supplier invoices, and disbursements | 9 |
| Manufacturing | BOMs, routings, work centers, work orders, issues, completions, and close | 14 |
| Payroll and time | Shifts, rosters, absences, overtime approvals, punches, approved daily time, payroll, and remittances | 14 |
| Master data | Item, warehouse, and employee records | 3 |
| Organizational planning | Cost centers, budget summary, and budget detail | 3 |
| Demand planning and MRP | Forecasting, inventory policy, recommendations, MRP, and rough-cut capacity | 5 |
| Total | 77 |
How to Read the ER Diagrams
- Each diagram shows the main local relationships inside one table group, not every possible key in the database.
- These ERs are schema-direct diagrams. An edge appears only when a stored key supports it, or when a polymorphic source-document trace is called out explicitly in prose.
- The diagrams are intentionally simplified. The compact tables below each diagram carry the highest-value fields students usually need first.
- Cross-group bridges such as
ItemID,SupplyPlanRecommendationID, andAccrualJournalEntryIDare summarized separately so the group diagrams stay readable. - The process pages explain business flow. This reference explains table structure and join logic.
Cross-Group Bridge Keys
These are the main keys students use to move across groups.
| Bridge key | Main bridge | How it connects |
|---|---|---|
ItemID | Master data into O2C, P2P, manufacturing, and planning | Product-level analysis across the whole dataset |
FixedAssetID | Fixed assets into lifecycle events and note agreements | Connects the asset register to acquisitions, depreciation, financing, and disposal activity |
DebtAgreementID | Fixed-asset financing into monthly payment schedules | Connects note origination to principal and interest cash behavior |
SupplyPlanRecommendationID | Demand planning into requisitions, work orders, MRP, and rough-cut capacity | Connects planning pressure to later purchasing or manufacturing execution |
WorkOrderID | Manufacturing into issues, completions, close, and labor support | Main manufacturing execution anchor |
WorkOrderOperationID | Manufacturing into operation schedules and labor traceability | Connects scheduling and labor detail to one operation |
ServiceEngagementID | O2C service delivery into staffing, approved time, and billing | Main design-services execution anchor |
TimeClockEntryID | Payroll and time into labor, attendance exceptions, and payroll support | Approved time bridge |
PayrollRegisterID | Payroll header into line detail and payment | Main payroll posting anchor |
AccrualJournalEntryID | Accounting core into accrued-service AP settlement | Bridges finance estimates to later AP activity |
AccountID | Accounting core into budgets and reporting | Chart-of-accounts bridge |
SourceDocumentType, SourceDocumentID, SourceLineID | Operational groups into GLEntry | Main path back from posted accounting to source activity |
Accounting Core
This group provides the posting anchor for every process. JournalEntry is the finance-controlled header, GLEntry is the posted detail, and Account gives the reporting and control-account meaning.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
Account | Chart of accounts and hierarchy | AccountID, AccountNumber, AccountType, AccountSubType, ParentAccountID |
JournalEntry | Finance-controlled journal header lookup | JournalEntryID, EntryNumber, PostingDate, EntryType, ApprovedByEmployeeID, ReversesJournalEntryID |
GLEntry | Posted ledger detail and traceability | GLEntryID, PostingDate, AccountID, VoucherType, VoucherNumber, SourceDocumentType, SourceDocumentID, SourceLineID, FiscalYear, FiscalPeriod |
Join and Traceability Cues
GLEntry.AccountID -> Account.AccountID- When
GLEntry.SourceDocumentType = 'JournalEntry',GLEntry.SourceDocumentID -> JournalEntry.JournalEntryID - For journal-origin rows,
GLEntry.VoucherNumbertypically matchesJournalEntry.EntryNumber GLEntry.SourceDocumentType,SourceDocumentID, andSourceLineIDare the main operational trace fields
Fixed Assets and Financing
This group holds the fixed-asset subledger: the asset register itself, the lifecycle events that tie CAPEX back to purchasing and disposal, and the note-payable schedules used for financed equipment.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
FixedAsset | Asset register and depreciation-routing setup | FixedAssetID, AssetCode, BehaviorGroup, AssetAccountID, AccumulatedDepreciationAccountID, DepreciationDebitAccountID, CostCenterID, WarehouseID, WorkCenterID, InServiceDate, DisposalDate |
FixedAssetEvent | Lifecycle events tied back to purchasing, financing, and disposal | FixedAssetEventID, FixedAssetID, EventType, EventDate, PurchaseInvoiceID, PurchaseInvoiceLineID, DisbursementID, DebtAgreementID, JournalEntryID, FinancingType, ProceedsAmount |
DebtAgreement | Note-payable agreement created for financed CAPEX | DebtAgreementID, AgreementNumber, FixedAssetID, OriginationDate, PrincipalAmount, AnnualInterestRate, TermMonths, PaymentStartDate, ScheduledPaymentAmount |
DebtScheduleLine | Monthly principal and interest schedule detail | DebtScheduleLineID, DebtAgreementID, PaymentSequence, PaymentDate, PrincipalAmount, InterestAmount, PaymentAmount, EndingPrincipal, JournalEntryID, Status |
Join and Traceability Cues
FixedAssetEvent.FixedAssetID -> FixedAsset.FixedAssetIDDebtAgreement.FixedAssetID -> FixedAsset.FixedAssetIDDebtScheduleLine.DebtAgreementID -> DebtAgreement.DebtAgreementIDFixedAssetEvent.PurchaseInvoiceID -> PurchaseInvoice.PurchaseInvoiceIDFixedAssetEvent.DisbursementID -> DisbursementPayment.DisbursementIDFixedAssetEvent.JournalEntryID -> JournalEntry.JournalEntryID
Order-to-Cash
This group holds the full customer-side relationship map: pricing setup, goods and service order capture, service delivery, physical fulfillment, billing, cash settlement, and the return-credit-refund branch.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
Customer | Customer master and segmentation | CustomerID, CustomerName, CustomerSegment, Region, SalesRepEmployeeID |
PriceList | Pricing scope header | PriceListID, ScopeType, CustomerID, CustomerSegment, EffectiveStartDate, EffectiveEndDate |
PriceListLine | Item-level pricing rule | PriceListLineID, PriceListID, ItemID, UnitPrice, MinimumUnitPrice |
PromotionProgram | Promotion definition | PromotionID, PromotionCode, ScopeType, DiscountPct, EffectiveStartDate, EffectiveEndDate |
PriceOverrideApproval | Manual below-floor approval | PriceOverrideApprovalID, SalesOrderLineID, RequestedByEmployeeID, ApprovedByEmployeeID, ApprovedUnitPrice, Status |
SalesOrder | Order header | SalesOrderID, OrderNumber, CustomerID, OrderDate, RequestedDeliveryDate, FreightTerms, Status |
SalesOrderLine | Ordered line with pricing lineage | SalesOrderLineID, SalesOrderID, ItemID, PriceListLineID, PromotionID, PriceOverrideApprovalID, PricingMethod |
ServiceEngagement | Customer service engagement tied to one service order line | ServiceEngagementID, EngagementNumber, CustomerID, SalesOrderLineID, LeadEmployeeID, StartDate, EndDate, PlannedHours, HourlyRate, Status |
ServiceEngagementAssignment | One employee staffing row on one engagement | ServiceEngagementAssignmentID, ServiceEngagementID, EmployeeID, AssignedRole, AssignedHours, Status |
ServiceTimeEntry | Approved service hours and analytical labor cost | ServiceTimeEntryID, ServiceEngagementID, ServiceEngagementAssignmentID, EmployeeID, WorkDate, BillableHours, NonBillableHours, CostRateUsed, ExtendedCost, BillingStatus |
Shipment | Shipment header | ShipmentID, SalesOrderID, ShipmentDate, WarehouseID, FreightCost, BillableFreightAmount, Status |
ShipmentLine | Shipped line | ShipmentLineID, ShipmentID, SalesOrderLineID, ItemID, QuantityShipped |
SalesInvoice | Invoice header | SalesInvoiceID, InvoiceNumber, CustomerID, InvoiceDate, DueDate, FreightAmount, Status |
SalesInvoiceLine | Billed line | SalesInvoiceLineID, SalesInvoiceID, SalesOrderLineID, ShipmentLineID, ItemID, PricingMethod |
ServiceBillingLine | Monthly billed-hours rollup tied to one invoice line | ServiceBillingLineID, ServiceEngagementID, SalesInvoiceLineID, BillingPeriodStartDate, BillingPeriodEndDate, BilledHours, HourlyRate, LineAmount, Status |
SalesCommissionRate | Commission-rate matrix by revenue type and customer segment | SalesCommissionRateID, RevenueType, CustomerSegment, RatePct, EffectiveStartDate, EffectiveEndDate, Status |
SalesCommissionAccrual | Invoice-line commission accrual | SalesCommissionAccrualID, SalesInvoiceLineID, SalesRepEmployeeID, CommissionBaseAmount, CommissionRatePct, CommissionAmount |
SalesCommissionAdjustment | Credit-memo clawback against an original commission accrual | SalesCommissionAdjustmentID, SalesCommissionAccrualID, CreditMemoLineID, CommissionBaseReductionAmount, CommissionAdjustmentAmount |
SalesCommissionPayment | Monthly net commission payment by sales rep | SalesCommissionPaymentID, PaymentNumber, PaymentDate, SalesRepEmployeeID, NetPaymentAmount |
SalesCommissionPaymentLine | Settlement detail connecting payments to accruals and clawbacks | SalesCommissionPaymentLineID, SalesCommissionPaymentID, SourceDocumentType, SourceDocumentID, Amount |
CashReceipt | Customer cash event | CashReceiptID, ReceiptNumber, CustomerID, ReceiptDate, Amount |
CashReceiptApplication | Invoice settlement detail | CashReceiptApplicationID, CashReceiptID, SalesInvoiceID, ApplicationDate, AppliedAmount |
SalesReturn | Return header | SalesReturnID, ReturnNumber, CustomerID, ReturnDate, Status |
SalesReturnLine | Returned line | SalesReturnLineID, SalesReturnID, ShipmentLineID, ItemID, QuantityReturned |
CreditMemo | Credit header | CreditMemoID, CreditMemoNumber, SalesReturnID, OriginalSalesInvoiceID, CreditMemoDate, FreightCreditAmount, Status |
CreditMemoLine | Credit detail with inherited pricing lineage | CreditMemoLineID, CreditMemoID, SalesReturnLineID, ItemID, PricingMethod, PriceListLineID |
CustomerRefund | Refund against customer credit | CustomerRefundID, CreditMemoID, CustomerID, RefundDate, Amount |
Join and Traceability Cues
PriceListLine.PriceListID -> PriceList.PriceListIDSalesOrderLine.PriceListLineID -> PriceListLine.PriceListLineIDSalesOrderLine.PromotionID -> PromotionProgram.PromotionIDSalesOrderLine.PriceOverrideApprovalID -> PriceOverrideApproval.PriceOverrideApprovalIDPriceOverrideApproval.SalesOrderLineID -> SalesOrderLine.SalesOrderLineIDServiceEngagement.SalesOrderLineID -> SalesOrderLine.SalesOrderLineIDServiceEngagementAssignment.ServiceEngagementID -> ServiceEngagement.ServiceEngagementIDServiceTimeEntry.ServiceEngagementAssignmentID -> ServiceEngagementAssignment.ServiceEngagementAssignmentIDShipmentLine.SalesOrderLineID -> SalesOrderLine.SalesOrderLineIDSalesInvoiceLine.ShipmentLineID -> ShipmentLine.ShipmentLineIDServiceBillingLine.SalesInvoiceLineID -> SalesInvoiceLine.SalesInvoiceLineIDSalesCommissionAccrual.SalesInvoiceLineID -> SalesInvoiceLine.SalesInvoiceLineIDSalesCommissionAccrual.SalesCommissionRateID -> SalesCommissionRate.SalesCommissionRateIDSalesCommissionAdjustment.SalesCommissionAccrualID -> SalesCommissionAccrual.SalesCommissionAccrualIDSalesCommissionAdjustment.CreditMemoLineID -> CreditMemoLine.CreditMemoLineIDSalesCommissionPaymentLine.SalesCommissionPaymentID -> SalesCommissionPayment.SalesCommissionPaymentIDCashReceiptApplication.SalesInvoiceID -> SalesInvoice.SalesInvoiceIDSalesReturnLine.ShipmentLineID -> ShipmentLine.ShipmentLineIDCreditMemo.OriginalSalesInvoiceID -> SalesInvoice.SalesInvoiceIDCustomerRefund.CreditMemoID -> CreditMemo.CreditMemoID
Procure-to-Pay
This group holds the supplier-side relationship map: requisition, PO, receipt, invoice, and payment. The main cross-group bridge here is the accrued-service path through AccrualJournalEntryID.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
Supplier | Supplier master and payment context | SupplierID, SupplierName, PaymentTerms, SupplierCategory, SupplierRiskRating |
PurchaseRequisition | Internal purchase demand | RequisitionID, RequisitionNumber, RequestDate, ItemID, CostCenterID, SupplyPlanRecommendationID, Status |
PurchaseOrder | PO header | PurchaseOrderID, PONumber, SupplierID, OrderDate, ExpectedDeliveryDate, Status |
PurchaseOrderLine | Ordered line | POLineID, PurchaseOrderID, RequisitionID, ItemID, Quantity, UnitCost |
GoodsReceipt | Receipt header | GoodsReceiptID, ReceiptNumber, PurchaseOrderID, ReceiptDate, WarehouseID |
GoodsReceiptLine | Received line | GoodsReceiptLineID, GoodsReceiptID, POLineID, ItemID, QuantityReceived, ExtendedStandardCost |
PurchaseInvoice | Supplier invoice header | PurchaseInvoiceID, InvoiceNumber, SupplierID, PurchaseOrderID, InvoiceDate, Status |
PurchaseInvoiceLine | Supplier invoice line | PILineID, PurchaseInvoiceID, POLineID, GoodsReceiptLineID, AccrualJournalEntryID, ItemID |
DisbursementPayment | Supplier payment | DisbursementID, PurchaseInvoiceID, SupplierID, PaymentDate, Amount |
Join and Traceability Cues
PurchaseOrderLine.RequisitionID -> PurchaseRequisition.RequisitionIDGoodsReceipt.PurchaseOrderID -> PurchaseOrder.PurchaseOrderIDGoodsReceiptLine.POLineID -> PurchaseOrderLine.POLineIDPurchaseInvoiceLine.GoodsReceiptLineID -> GoodsReceiptLine.GoodsReceiptLineIDPurchaseInvoiceLine.AccrualJournalEntryID -> JournalEntry.JournalEntryIDDisbursementPayment.PurchaseInvoiceID -> PurchaseInvoice.PurchaseInvoiceID
Manufacturing
This group covers the local manufacturing structure: recipe, routing, work center, work order, issue, completion, and close. Planning and payroll bridges are summarized separately above.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
BillOfMaterial | BOM header | BOMID, ParentItemID, VersionNumber, Status, StandardBatchQuantity |
BillOfMaterialLine | BOM component detail | BOMLineID, BOMID, ComponentItemID, QuantityPerUnit, ScrapFactorPct |
WorkCenter | Work-center master | WorkCenterID, WorkCenterCode, Department, WarehouseID, NominalDailyCapacityHours |
WorkCenterCalendar | Daily available-hours calendar | WorkCenterCalendarID, WorkCenterID, CalendarDate, IsWorkingDay, AvailableHours |
Routing | Routing header | RoutingID, ParentItemID, VersionNumber, Status |
RoutingOperation | Ordered routing step | RoutingOperationID, RoutingID, OperationSequence, OperationCode, WorkCenterID |
WorkOrder | Work-order header | WorkOrderID, WorkOrderNumber, ItemID, BOMID, RoutingID, SupplyPlanRecommendationID, Status |
WorkOrderOperation | Operation-level work-order activity | WorkOrderOperationID, WorkOrderID, RoutingOperationID, OperationSequence, WorkCenterID, Status |
WorkOrderOperationSchedule | Daily scheduled hours | WorkOrderOperationScheduleID, WorkOrderOperationID, WorkCenterID, ScheduleDate, ScheduledHours |
MaterialIssue | Material issue header | MaterialIssueID, WorkOrderID, IssueDate, WarehouseID |
MaterialIssueLine | Material issue line | MaterialIssueLineID, MaterialIssueID, BOMLineID, ItemID, QuantityIssued |
ProductionCompletion | Completion header | ProductionCompletionID, WorkOrderID, CompletionDate, WarehouseID |
ProductionCompletionLine | Completion cost detail | ProductionCompletionLineID, ProductionCompletionID, ItemID, QuantityCompleted, ExtendedStandardTotalCost |
WorkOrderClose | Work-order close and variance record | WorkOrderCloseID, WorkOrderID, CloseDate, TotalVarianceAmount, Status |
Join and Traceability Cues
WorkOrder.BOMID -> BillOfMaterial.BOMIDWorkOrder.RoutingID -> Routing.RoutingIDWorkOrderOperation.RoutingOperationID -> RoutingOperation.RoutingOperationIDWorkOrderOperationSchedule.WorkOrderOperationID -> WorkOrderOperation.WorkOrderOperationIDMaterialIssue.WorkOrderID -> WorkOrder.WorkOrderIDMaterialIssueLine.BOMLineID -> BillOfMaterialLine.BOMLineIDProductionCompletion.WorkOrderID -> WorkOrder.WorkOrderIDWorkOrderClose.WorkOrderID -> WorkOrder.WorkOrderID
Payroll and Time
This group holds the workforce-side relationship map: shifts, rosters, raw punches, approved time, labor detail, payroll registers, payments, and remittances.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
ShiftDefinition | Shift template | ShiftDefinitionID, ShiftCode, Department, WorkCenterID, StartTime, EndTime |
EmployeeShiftAssignment | Employee-to-shift assignment | EmployeeShiftAssignmentID, EmployeeID, ShiftDefinitionID, WorkCenterID, IsPrimary |
EmployeeShiftRoster | Daily planned roster row | EmployeeShiftRosterID, EmployeeID, RosterDate, ShiftDefinitionID, WorkCenterID, ScheduledHours |
EmployeeAbsence | Absence support | EmployeeAbsenceID, EmployeeShiftRosterID, AbsenceDate, AbsenceType, HoursAbsent |
OvertimeApproval | Approved overtime support | OvertimeApprovalID, EmployeeShiftRosterID, WorkDate, ApprovedHours, ReasonCode |
TimeClockEntry | Approved daily time | TimeClockEntryID, EmployeeID, PayrollPeriodID, EmployeeShiftRosterID, RegularHours, OvertimeHours, ClockStatus |
TimeClockPunch | Raw punch events | TimeClockPunchID, EmployeeShiftRosterID, TimeClockEntryID, PunchTimestamp, PunchType |
AttendanceException | Attendance-control exception | AttendanceExceptionID, EmployeeShiftRosterID, TimeClockEntryID, ExceptionType, Severity, Status |
PayrollPeriod | Payroll calendar | PayrollPeriodID, PeriodNumber, PeriodStartDate, PeriodEndDate, PayDate, FiscalPeriod |
LaborTimeEntry | Labor detail used for costing and payroll support | LaborTimeEntryID, PayrollPeriodID, TimeClockEntryID, WorkOrderID, WorkOrderOperationID, LaborType |
PayrollRegister | Payroll header | PayrollRegisterID, PayrollPeriodID, EmployeeID, CostCenterID, GrossPay, NetPay, Status |
PayrollRegisterLine | Payroll line detail | PayrollRegisterLineID, PayrollRegisterID, LineType, Hours, Rate, LaborTimeEntryID |
PayrollPayment | Net-pay settlement | PayrollPaymentID, PayrollRegisterID, PaymentDate, PaymentMethod, ReferenceNumber |
PayrollLiabilityRemittance | Liability clearance | PayrollLiabilityRemittanceID, PayrollPeriodID, LiabilityType, RemittanceDate, Amount |
Join and Traceability Cues
EmployeeShiftAssignment.ShiftDefinitionID -> ShiftDefinition.ShiftDefinitionIDEmployeeShiftRoster.ShiftDefinitionID -> ShiftDefinition.ShiftDefinitionIDEmployeeAbsence.EmployeeShiftRosterID -> EmployeeShiftRoster.EmployeeShiftRosterIDOvertimeApproval.EmployeeShiftRosterID -> EmployeeShiftRoster.EmployeeShiftRosterIDTimeClockEntry.EmployeeShiftRosterID -> EmployeeShiftRoster.EmployeeShiftRosterIDTimeClockEntry.OvertimeApprovalID -> OvertimeApproval.OvertimeApprovalIDTimeClockPunch.TimeClockEntryID -> TimeClockEntry.TimeClockEntryIDAttendanceException.TimeClockEntryID -> TimeClockEntry.TimeClockEntryIDLaborTimeEntry.TimeClockEntryID -> TimeClockEntry.TimeClockEntryIDPayrollRegister.PayrollPeriodID -> PayrollPeriod.PayrollPeriodIDPayrollRegisterLine.LaborTimeEntryID -> LaborTimeEntry.LaborTimeEntryIDPayrollPayment.PayrollRegisterID -> PayrollRegister.PayrollRegisterIDPayrollLiabilityRemittance.PayrollPeriodID -> PayrollPeriod.PayrollPeriodID
Master Data
This group holds the anchor entities reused across the rest of the model. These tables are intentionally simple, but they matter because most other groups attach to them.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
Item | Product master and account mapping | ItemID, ItemCode, ItemGroup, CollectionName, LifecycleStatus, SupplyMode, InventoryAccountID, RevenueAccountID, COGSAccountID |
Warehouse | Warehouse master | WarehouseID, WarehouseName, ManagerID |
Employee | Employee master and approvals | EmployeeID, EmployeeNumber, JobTitle, JobFamily, AuthorizationLevel, PayClass, OvertimeEligible |
Join and Traceability Cues
ItemIDis the main product bridge across O2C, P2P, manufacturing, and planningWarehouseIDconnects fulfillment, receipt, manufacturing, and planning location contextEmployeeIDappears across approvals, rosters, payroll, journals, and organizational reporting
Organizational Planning
This group is small, but it gives the model its reporting structure. CostCenter organizes responsibility, BudgetLine stores the driver-based monthly planning detail, and Budget preserves the student-facing cost-center summary generated from that detail.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
CostCenter | Organizational reporting structure | CostCenterID, CostCenterName, ParentCostCenterID, ManagerID, IsActive |
Budget | Student-facing monthly budget summary by cost center and account | BudgetID, FiscalYear, Month, CostCenterID, AccountID, BudgetAmount |
BudgetLine | Driver-based monthly budget detail for planning, bridges, and pro forma statements | BudgetLineID, FiscalYear, Month, AccountID, CostCenterID, ItemID, WarehouseID, Quantity, UnitAmount, BudgetAmount, BudgetCategory, DriverType |
Join and Traceability Cues
Budget.CostCenterID -> CostCenter.CostCenterIDBudget.AccountID -> Account.AccountIDBudgetLine.CostCenterID -> CostCenter.CostCenterIDBudgetLine.AccountID -> Account.AccountIDBudgetLine.ItemID -> Item.ItemIDBudgetLine.WarehouseID -> Warehouse.WarehouseID
Demand Planning and MRP
This group covers the planning layer that sits ahead of later purchasing and manufacturing execution. It explains why replenishment pressure existed before a requisition or work order appeared.
| Table | Use it for | Highest-value keys or fields |
|---|---|---|
DemandForecast | Weekly demand-planning input | DemandForecastID, ForecastWeekStartDate, ItemID, WarehouseID, ForecastQuantity, ForecastMethod, IsCurrent |
InventoryPolicy | Active replenishment policy | InventoryPolicyID, ItemID, WarehouseID, PolicyType, SafetyStockQuantity, ReorderPointQuantity, TargetDaysSupply, IsActive |
SupplyPlanRecommendation | Weekly replenishment recommendation | SupplyPlanRecommendationID, RecommendationDate, BucketWeekStartDate, ItemID, WarehouseID, RecommendationType, SupplyMode, RecommendationStatus, ConvertedDocumentType, ConvertedDocumentID |
MaterialRequirementPlan | Component-demand explosion | MaterialRequirementPlanID, BucketWeekStartDate, ParentItemID, ComponentItemID, SupplyPlanRecommendationID, NetRequirementQuantity |
RoughCutCapacityPlan | Weekly load-versus-capacity tieout | RoughCutCapacityPlanID, BucketWeekStartDate, WorkCenterID, SupplyPlanRecommendationID, PlannedLoadHours, AvailableHours, UtilizationPct, CapacityStatus |
Join and Traceability Cues
DemandForecastandInventoryPolicyinform recommendations through sharedItemID,WarehouseID, planning buckets, and recommendationDriverType; there is no direct stored forecast or policy ID onSupplyPlanRecommendationPurchaseRequisition.SupplyPlanRecommendationID -> SupplyPlanRecommendation.SupplyPlanRecommendationIDWorkOrder.SupplyPlanRecommendationID -> SupplyPlanRecommendation.SupplyPlanRecommendationIDMaterialRequirementPlan.SupplyPlanRecommendationID -> SupplyPlanRecommendation.SupplyPlanRecommendationIDRoughCutCapacityPlan.SupplyPlanRecommendationID -> SupplyPlanRecommendation.SupplyPlanRecommendationID
Important Schema Notes
CashReceipt.SalesInvoiceIDis compatibility metadata only. The authoritative O2C settlement link isCashReceiptApplication.- Service invoice lines stay in
SalesInvoiceLine, butShipmentLineIDremains null on those rows andServiceBillingLinebecomes the authoritative hours-to-invoice bridge. - O2C freight remains header-level.
SalesOrder.FreightTermssets the policy,Shipment.FreightCostandShipment.BillableFreightAmountcapture the fulfillment result,SalesInvoice.FreightAmountcarries billed freight, andCreditMemo.FreightCreditAmountshows any freight credit. - Price-list and promotion lineage live directly on
SalesOrderLine,SalesInvoiceLine, andCreditMemoLine. Postings remain net revenue. - Sales commissions are a separate O2C payable routine.
SalesCommissionAccrual.CommissionBaseAmountcomes fromSalesInvoiceLine.LineTotal; commission payments settle2034Sales Commission Payable separately from payroll. PurchaseOrder.RequisitionIDis compatibility metadata when one PO batches multiple requisitions. UsePurchaseOrderLine.RequisitionIDas the authoritative trace.PurchaseInvoiceLine.GoodsReceiptLineIDis the main match key for receipt-based inventory invoicing.PurchaseInvoiceLine.AccrualJournalEntryIDlinks direct service invoices back to accrual journals.FixedAsset.BehaviorGroupcontrols whether depreciation feeds manufacturing cost or operating expense.FixedAssetEventpreserves the bridge from capital purchases and disposals back to the source purchasing and journal documents.GoodsReceiptLine.ExtendedStandardCoststores the receipt posting basis used for inventory and GRNI.EmployeeShiftRoster,EmployeeAbsence,TimeClockPunch, andOvertimeApprovalsit beneath the approvedTimeClockEntrylayer.- Design-service labor margin is analytical.
ServiceTimeEntry.ExtendedCostsupports customer-engagement analysis, but payroll expense stays in payroll and does not become manufacturing inventory cost. - Manufacturing uses single-level BOMs plus one active routing per manufactured item.
- Manufacturing remains standard-cost based even though payroll and time provide operational labor detail.
Next Steps
- Read Dataset Guide when you need the mental model, navigation paths, and posting overview.
- Read Process Flows when you want the business-cycle story behind the tables.
- Read GLEntry Posting Reference when you want the exact event-to-ledger rules.