SAP journal export
For campgrounds whose accounting lives in SAP, this adapter posts one consolidated journal entry per day — the day’s revenue grouped by GL account — directly to SAP. No CSV exports, no manual postings.
What it gives you
Section titled “What it gives you”- Daily journal posted at 02:00 (configurable) via Celery beat
- Aggregates POS, payments, and invoices for the day into balanced debit / credit lines
- Idempotent —
(tenant, journal_date)is unique, so re-runs don’t double-post - Reverse a posted journal in one click (records the SAP reversal doc number)
- Full log of every post / reverse with the SAP-side document number
Supports SAP Business One Service Layer and SAP S/4HANA OData in the same adapter — pick the flavor on the settings card.
Prerequisites
Section titled “Prerequisites”SAP integrations are per-customer: each campground that uses SAP has their own SAP environment with their own users, GL accounts, and rules. CampOne can’t pre-provision a sandbox.
You’ll need:
- For B1 (Service Layer): instance URL (typically
https://<host>:50000/b1s/v1/), Company DB name, a service-layer integration user with permission to postJournalEntriesand run theCancelaction. - For S/4HANA: the tenant base URL, a communication-arrangement user for
SAP_COM_0002/API_JOURNALENTRYBULKCREATE_REQUE_SRV, withS_DEVELOPand posting permission on the target ledger. - A GL account mapping — which CampOne revenue type maps to which SAP account.
If you don’t have an SAP partner yet, the standard path is:
- Email partner@sap.com to enrol in SAP PartnerEdge as an ISV
- Or contact a Swiss B1 partner directly: Versino Schweiz (+41 56 418 32 99 · sapsupport@versino.ch) or MTF B1 Consulting (+41 52 632 33 88)
What you’ll paste into CampOne
Section titled “What you’ll paste into CampOne”Settings → Integrations → Vendor Adapters → SAP:
| Field | Description |
|---|---|
| Flavor | Business One or S/4HANA |
| Environment | Test / Production |
| Instance URL | The SAP endpoint |
| Company DB | (B1 only) — e.g. SBO_DEMO_CH |
| Username / Password | The integration user’s credentials |
| GL account mapping | JSON: {"booking_revenue": "4001", "pos_revenue": "4002", "vat_collected": "2200", …} |
| Default cost center | Optional — applied to every line if set |
Click Save, then Test connection. The probe calls the cheapest no-op (whoami / login) — green pill confirms.
What gets posted
Section titled “What gets posted”Once a day (default 02:00 server time) for each enabled tenant:
- Aggregate the previous day’s
POSTransaction,Payment, andInvoicerows by(revenue_type, vat_rate). - Build a balanced journal: cash + receivables on the debit side; revenue + VAT on the credit side.
- Post to SAP. Save the returned document number on a
SAPJournalDocrow. - If the day had no closeable transactions, skip silently.
The settings card shows the Posted journals table — date, SAP doc number, total, status — with a per-row Reverse button.
Reversing a journal
Section titled “Reversing a journal”Click Reverse on a posted journal, enter a reason, confirm. CampOne calls SAP’s Cancel (B1) or equivalent on S/4HANA, records the reversal doc number, and marks the original as reversed. The reversal reason appears on the audit trail.
Support contacts
Section titled “Support contacts”- SAP partner enrolment: partner@sap.com
- Swiss B1 partner — Versino: +41 56 418 32 99 · sapsupport@versino.ch
- Swiss B1 partner — MTF: +41 52 632 33 88
- B1 Service Layer documentation: https://learning.sap.com/courses/leveraging-the-sap-business-one-service-layer
Limitations
Section titled “Limitations”- Each SAP customer has their own service-layer URL and Company DB — there is no shared sandbox we can ship.
- The S/4HANA OData payload shape is implemented from public documentation; before the first S/4HANA customer goes live, run a journal post against their sandbox to confirm it lines up with their comm-arrangement.
- POS line items are bucketed under a single
(pos_revenue, normal VAT)line. Adding richer per-item VAT breakdowns is a roadmap item. - TLS with private CAs is a follow-up — currently the adapter expects the SAP endpoint to use a CA already in the system trust store.