This is an internal working record, not an everyday instruction. It was written while the system was being rebuilt, for whoever maintains it. If you are here to do today's work, use the everyday documents instead: Procedures · Processes · Runbooks · The working day, step by step
CTC Billing, QBO, Files And Email — Current Source Addendum — 2026-08-08¶
- Status:
CURRENT SOURCE ADDENDUM / ORIGINAL PROCESS PACKET RETAINED - Current review ref:
qa/master@58c24661902c10a30209bab62d43fc5490feaeba - Original source baseline:
qa@8fbe3529792db8b6dcdc18abbea8e52ccebc68a4 - Current source refresh:
CTC_BILLING_QBO_FILES_EMAIL_CURRENT_SOURCE_REFRESH_2026-08-08.md - Original reconciliation:
CTC_BILLING_QBO_FILES_EMAIL_RECONCILIATION.md - Original process owners:
PROC-BMS-BILLING-CLOSE-CTCPROC-BMS-TRANSACTION-LIFECYCLE-CTCPROC-BMS-AR-BILLING-CONFIRM-CTCPROC-BMS-AR-QBO-DELIVERY-CTCPROC-BMS-TRANSACTION-DOCUMENT-CTCPROC-TMS-BOL-EMAIL-CTCPROC-TMS-PACKING-LIST-EMAIL-CTC- Program state:
PHASE IMPLEMENTATION USER HOLD - Effects: documentation only
1. Addendum Decision¶
The original process reconciliation remains the detailed semantic owner.
This addendum corrects only the source-freshness interpretation.
Original process semantics:
RETAIN
Core Billing/QBO/File/Gmail owner source:
NO MATERIAL DRIFT LOCATED
BOL and Packing List send blocks:
NO MATERIAL DRIFT LOCATED
Surrounding Transload/Booking/BMS helper files:
CHANGED FOR ADJACENT PROCESSES
Current environment/role/provider/Wiki evidence:
REQUIRED
Do not rewrite the entire process family based on unrelated file-level drift.
2. Current Composite Boundary¶
The current daily Billing close is still a human/composite reconciliation.
Source work eligible for Billing
-> Local generic AP/AR transaction when applicable
-> Local container AR confirmation when applicable
-> QBO Invoice delivery when applicable
-> File object/link/readability when applicable
-> BOL email when applicable
-> Packing List target/part email when applicable
-> Carry unresolved child with exact evidence and owner
There is no accepted universal persisted BILLING_COMPLETE state.
Each child remains independently authoritative.
3. Current Source Checkpoints¶
3.1 Local generic AP/AR¶
The current route and shared mutation helpers remain the original source contract.
Current checkpoint:
intended source relation
+ intended transaction header
+ intended active lines
+ reviewed close fields
+ exact row reread
= local transaction checkpoint
Non-implications:
local transaction exists
!= reviewed/closed
!= paid
!= QBO delivered
!= file complete
!= email sent
3.2 Local container AR¶
Current confirm remains a local transaction over the submitted item batch.
Current checkpoint:
one intended active local container AR
+ reviewed active lines
+ current local QBO state
+ exact header/line reread
= local container AR checkpoint
READY means local readiness for QBO, not provider delivery.
3.3 QBO Invoice¶
Current checkpoint:
provider invoice identity and intended values
+ local QBO invoice ID/doc/sync token
+ every local group row SYNCED
= reconciled QBO checkpoint
The following remain uncertain and require reconciliation:
SYNCING
ERROR
response timeout
provider accepted / local reference missing
multiple possible provider matches
3.4 File¶
Current checkpoint:
object exists
+ every intended T_FILE business link exists
+ object is readable through each intended link
= file checkpoint
Metadata-only success is not sufficient.
3.5 BOL email¶
Current checkpoint:
intended Transload/reference
+ intended recipient
+ intended subject
+ intended attachments
+ Gmail provider evidence
= BOL email checkpoint
3.6 Packing List email¶
Current checkpoint:
for every intended target
+ for every generated part
+ one provider-accepted message
= Packing List email checkpoint
The current API response is evidence for that request only and is not a durable send ledger.
4. Current Partial-Result Matrix¶
| Situation | Current safe interpretation | Required next step |
|---|---|---|
| Local transaction response missing | commit unknown | reread exact transaction/header/lines before retry |
| Local AR confirmed, QBO not called | local checkpoint succeeded | start only QBO step after reread |
QBO SYNCING stale |
provider state unknown | search/reconcile provider before any create retry |
QBO ERROR |
provider absence not proven | inspect claim/error/provider evidence |
| Provider invoice exists, local ID missing | provider committed/local pending | link/reconcile existing provider invoice; do not recreate |
| File object exists, no link | object-only partial | register/reconcile intended link or controlled cleanup |
| Link exists, object unreadable | metadata/object conflict | file-owner recovery; do not create unrelated duplicate links |
| BOL response missing | Gmail result unknown | search Sent/provider evidence by recipient/subject/time |
| Packing customer sent, inspector failed | partial target result | reconcile sent target; retry only missing approved target/part |
| Packing part N failed | earlier parts may be accepted | provider-side part inventory before retry |
| QuickBooks Time failed after local staff event | separate provider partial | Staff Time/Integration owner recovery; do not alter QBO Invoice state |
5. Current Adjacent-Process Drift¶
5.1 Street Turn in BMS transaction helper¶
The BMS helper now supports guarded Street Turn compensation.
This is a source-ownership warning:
one helper file
!= one Process authority
Street Turn compensation must remain under its own Process/recovery contract and must not be documented as generic Billing transaction behavior.
5.2 Loader and Staff Time in Transload routes¶
The Transload route file now contains Loader, Staff Time, notification and transition-evidence behavior.
The BOL email block itself remains unchanged, but source eligibility and operational close timing may depend on the current Transload state.
5.3 Booking and MK/Street Turn surface¶
The Booking route file now has additional Booking/MK/Street Turn behavior. The CTC Packing List email block remains unchanged.
Do not infer that every Booking change alters Packing List delivery. Reopen the email contract only when the target/recipient/attachment/send/result block changes.
5.4 QuickBooks Time¶
QuickBooks Time is a separate external effect from QBO Invoice.
Current close documentation must not combine their state fields, retry procedures or completion claims.
6. Current State Machines Retained¶
Local container AR¶
NOT_PRESENT
-> READY
-> SYNCING
-> SYNCED
READY / SYNCING
-> ERROR
ERROR
-> manual/provider reconciliation
-> READY only after absence/retry eligibility is established
-> SYNCED when existing provider result is linked
These labels describe current local projection, not a complete provider attempt history.
File¶
NO_OBJECT
OBJECT_ONLY
OBJECT_AND_LINK
READABLE
PARTIAL_LINK
UNREADABLE
ORPHAN_CANDIDATE
DELETE_PENDING
These are semantic classifications for evidence/recovery. They are not claimed current schema enums.
Mail target/part¶
NOT_ATTEMPTED
SENT
FAILED_DEFINITE
UNKNOWN
PARTIAL
Current source persists no full target/part state machine. The classification is reconstructed from response and provider evidence.
7. Stable Identity Retained¶
| Boundary | Current identity | Required evidence |
|---|---|---|
| source work → generic transaction | tenant + related table/id + transaction ID/UUID | source and transaction reread |
| booking/container → local AR | tenant + booking/container + transaction UUID | active header/lines |
| local AR → QBO group | sorted transaction UUIDs + grouping mode + customer/doc values | local claim and provider invoice |
| provider QBO → local | provider invoice ID/doc/sync token + local transaction set | both sides reconciled |
| object → transaction | storage/path or object UUID + T_FILE relation |
object and link/readability |
| Transload → BOL | tenant + Transload/reference + recipient + attachment set | Gmail provider evidence |
| Booking → Packing mail | tenant + Booking + target + part/total + attachment content | per-target/part provider evidence |
Subject text alone is not a sufficient durable identity.
8. Current Access And Role Evidence Required¶
Static source stability does not prove authorization correctness.
The current evidence package must cover:
Office/Billing intended role
Denied field roles
Direct page access
Initial data APIs
Confirm/close/QBO/file/email action APIs
Tenant and record predicates
Current state predicates
Visible button versus backend denial
Super Admin/compatibility behavior
A Super Admin result cannot substitute for the intended Office/Billing role.
9. Current Wiki Requirements¶
Current Wiki topics:
billing
ar-billing-qbo
ctc-daily
errors-recovery
Required current wording:
Local complete != QBO complete
QBO accepted != local reference saved
File metadata != readable object
BOL/Packing response missing != safe resend
Packing target/part partial != complete
QuickBooks Time != QBO Invoice
Actual T_WIKI_PAGE content and rendered role behavior remain unread.
10. Evidence Before Any Source Correction¶
Run only after separate authorization:
Required evidence order:
source/deployment/DB identity
-> schema/index inventory
-> local transaction/AR/QBO row inventory
-> file object/link metadata inventory
-> mail local-evidence inventory
-> named-role GET/action visibility evidence
-> provider reconciliation where separately authorized
-> current Wiki inventory
Do not modify source merely because an old packet header is stale.
11. Addendum Conclusion¶
Original detailed process packet:
RETAIN
Static current source refresh:
COMPLETE
Core owner material drift:
NOT LOCATED
Adjacent source/caller drift:
DOCUMENTED
Current environment evidence:
NOT RUN
Provider evidence:
NOT RUN
Current Wiki evidence:
NOT RUN
M3:
NO
M4:
NO
---¶
Source:
docs/processes/CTC_BILLING_QBO_FILES_EMAIL_CURRENT_SOURCE_ADDENDUM_2026-08-08.md— ctc repository · This page is an English translation of the source document. Identifiers, file paths and code symbols are unchanged.