CVGo POS Data Posting
Manual Posting
Navigation: Shell18 > CVGo > XML Day Data > select a record in Validated status
- Open a CVGo POS Data record with status Validated
- Ensure all MOP accounts are properly configured — see MOP Accounts
- Click the Post button in the header
- The system creates Sales Orders based on each MOP's posting mode
:::warning Configuration gate
If any MOP account on this record is Configured = False, posting fails with an error listing the unconfigured MOPs. Open each one, review settings, then click Mark Configured before re-posting.
:::
Detailed Mode (1 SO per transaction)
| Step | Description |
|---|---|
| 1. Find partner | Looks up the partner matching the transaction's MOP name |
| 2. Build order lines | Creates SO lines for PRODUCT and POST PAY DELIVERY items |
| 3. Handle discounts | Creates negative SO lines for DISCOUNT items |
| 4. Apply tax | Matches CVGo tax codes to Odoo taxes (prefers VAT-inclusive 12% tax) |
| 5. Create SO | Creates sale.order with all lines on the data's branch (company_id) |
| 6. Auto-confirm | If enabled: confirms SO, validates delivery, posts invoice, registers payment |
| 7. Mark posted | Links SO to transaction and marks it as posted |
Summarized Mode (1 SO per shift + MOP)
| Step | Description |
|---|---|
| 1. Group transactions | Groups all unposted transactions by shift period + MOP name + branch |
| 2. Aggregate items | Combines quantities and amounts for identical products |
| 3. Create SO | Creates one SO per group with aggregated lines |
| 4. Set reference | SO reference shows receipt range (e.g. OR001 ~ OR200 (200 transactions)) |
| 5. Auto-confirm | Same as detailed mode |
| 6. Mark posted | Links all transactions in group to the same SO |
:::note Batch processing In Detailed mode, transactions are processed in batches of 50 to avoid timeouts. :::
Tax Handling
- CVGo prices are VAT-inclusive (12% VAT is already included in the sale price)
- The system uses the special "12% CVGo (Incl.)" tax which extracts VAT from the inclusive price
- Each branch has its own copy of this tax (created by the post-install hook). The posting code looks up taxes scoped to the data's branch — see Taxes.
Tax matching logic:
- For
VATtax code: searches for a 12% VAT-inclusive tax on the branch - For
NVATtax code: searches for a 0% non-VAT tax on the branch - If no matching tax found, the line is created without tax
Automatic Posting (Cron)
A cron job runs every minute and automatically posts the oldest Validated record (skipping any with unconfigured MOPs). See Cron Jobs.
Next step
Once posted, the record moves to Posted status. Review the Reconciliation tab to verify totals balance, and use Payment Registration for any unpaid charge invoices.