Where each finance dimension gets captured in Odoo
Each dimension is user-selected, derived, rule-defaulted, or inherited from the product - then reviewed by the buyer at PO commit.
Dimension
Captured at
How we capture it
Tags
SO creation
User-selected SC picks from the active subset of the Sage Tags ledger. Drives default Fund, Department, Functional Category.
Location
SO creation
Derived From Odoo warehouse (DC-HQ / ROC-E/W/S) or shipping address (country / US State).
Fund
SO creation
Rule from Tag Hazard-to-Fund mapping (Hurricane → 103, Wildfire → 104, etc.). 502 General Ops if no Tag.
Department
SO creation
Rule from Tag + purpose DU1-D108 Relief Ops for activations. Overrides for HEAT Training, ROC vehicles + rent, Receivables.
Functional Category
SO / PO line
Rule from line description Captured per line so an SO can span categories. AI reads each line's description: direct relief → Program Services; donor / campaign → Fundraising; admin → M&G.
GL Account
SO line
Inherited from product Default expense GL per the GL Reference Guide. Examples: 6409 / 6415 / 6303.
Expense Type
SO line
Inherited from product Default Expense. Fixed Asset for capital categories. Prepaid recognized at invoice in Sage.
Buyers can override any default at PO commit. Finance has final review at invoice posting. Functional Category at the line level means a single SO can carry mixed categories (e.g., a relief shipment line and a donor-event photography line on the same order).
Odoo + Sage | Finance Integration Briefing
04/8
Vendor master: starting simple, with room to grow
At Go-Live
MVP · one-way pull
Approved payable vendors flow from Sage to Odoo
SC's broader vendor universe stays Odoo-only, no expectation of Sage sync
No onboarding workflow, no status round-trip
Post Go-Live
Mid · onboarding handoff
Lifecycle status visible on both sides (pending / approved / rejected)
Sage stays the system of record for diligence; Odoo gets the queue UI
Odoo + Sage | Finance Integration Briefing
05/8
Two SO states: MVP vs Streamlined
The Sales Order is always the destination. Two ways data gets there - manual SC translation at go-live, direct intake from requesters once streamlining is in place.
At Go-Live
Capture at the SO via SC manual entry
WhatsApp
Slack
Email
Voice / call
→
SC
Manual entry
→
SO
Sales Order
The bottleneck is the feature. SC's manual translation is the data-quality safeguard that keeps Odoo clean.
Post Go-Live
Streamline data directly into Odoo
Odoo Portal / web store
Web form submission
Slack pipe
WhatsApp ingestion
SO
Sales Order
Requesters submit structured data through whatever channel suits them. No SC re-typing. Triage stays human; intake gets automated.
Odoo + Sage | Finance Integration Briefing
06/8
AI Assist
5 of 7 dimensions are deterministic - captured by rule, derivation, or product. Only 2 need interpretation.
5 Deterministic · No AI needed
Tags
User-selected
Location
Derived
Fund
Rule from Tag
GL Account
From product
Expense Type
From product
2 AI interpretation adds real value
AI assists
Functional Category
Why · Free-text reading required
"Photographer hired for Hurricane X" lands on Fundraising, not Program Services - even with an activation Tag. The AI reads each line's description to make the call.
AI assists
Department override
Why · Catch the few exceptions
Most lines default to the activation's Relief Ops dept. The AI catches the small set of explicit overrides (HEAT Training, ROC vehicles + rent, Receivables from Employees).
Priority · Fast-followCan be deferred from scope entirely. If we ship it, it runs at SO creation with no dependency on intake streamlining. Pure upside-only addition once the rest of the integration is wired.
Odoo + Sage | Finance Integration Briefing
07/8
Purchase vs Fulfillment
Moment 1
PURCHASE
ROC buys Cambros for general par stock
Tagblank or general
Fund502 General Ops
Time passesweeks, months
Moment 2
FULFILLMENT
Pulled from stock, shipped to Hurricane Y
TagRLF-### Hurricane Y
Fund?
The same physical goods · Different dimensions at two moments
For Finance to weigh in on
AttributionInter-fund transfer at deployment, or reporting-only?
Coding eventsDoes the SO override the PO dimensions, or run parallel?
Cost basisAVCO, current market, or replacement cost?
Odoo + Sage | Finance Integration Briefing
08/8
Next steps
Locked · Required for Go-Live
Core integration
Master data from Sage → Odoo (Tags, Vendors, GL, Funds, Departments, Locations) via Snowflake
SO created in Odoo with line-level dimensions
PO → Sage with dimensions + SO ref
Goods Receipt → Sage with qty + discrepancies
3-way match runs in Sage
Manual SC entry of Requests
One-way vendor pull from Sage's approved-payable list
Negotiable · Ride Along if Capacity Allows
Improvements
AI assist for Functional Category + Department overrides
Request auto-ingestion (direct into Odoo)
Round-trip vendor sync (promote-to-payable)
Purchase vs Fulfillment treatment (pending Finance guidance)