Skip to content

CAP-ACC-TRX-017Explain a customer’s current financial position

Markdown

CAP-ACC-TRX-017

Explain a customer’s current financial position

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationInconsistent

KindCapabilityProduct areaAccountingModuleTransactionsRevision1

Read atservices-accounting f47cb263react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Staff and Commerce inspect debt, held money and eligible payment choices separately by currency.Unknown customers with no open items return empty currency groups. The product should make payment-plan collection holds visible when that contract is implemented.
Surfaces
consoleapi
Intent sources
services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-16services-accounting:docs/architecture/accounting-2.0/02-decisions.md#A-17services-accounting:docs/architecture/accounting-2.0/02-decisions.md#C-9services-accounting:docs/milestones/plans/ACCT-M2-plan.md#D6

Controls

21 controls apply, from the corpus control catalogue.

TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-006 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-LOG-004 TC-PI-001 TC-PI-005 TC-PRV-001 TC-PRV-002

Permissions

KeyChecked atScope
accounting.invoices.readapitenant
accounting.payments.readapitenant
accounting.credits.readapitenant

Business Rules

8 rules, 7 to be proved before approval. A rule's product intent is derived from its origin: 0 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
Today’s customer summary groups invoice debt, overdue debt, unapplied receipts, credit and net position by currency using the same receivable entries as aging.
calculationservicetest
services-accounting:modules/transactions/tests/integration/services/customers/customer-summary.integration.spec.js#it answers, as of today, its two open invoices (owing 9000), the overdue one (4000), the check’s 1000 unapplied, the 1500 credit, a net position of 6500
02must prove
Proposed
Debt becomes overdue after its due date, so amounts due today remain current.
calculationservicetest
services-accounting:modules/transactions/tests/unit/rules/customer-summary.spec.js#it counts an invoice due today as not yet overdue, and one due yesterday as overdue
03must prove
Proposed
A contact summary excludes organization figures even though its payable list includes the primary organization’s outstanding invoices.
policyservicetest
services-accounting:modules/transactions/tests/integration/services/customers/customer-summary.integration.spec.js#it keeps the contact’s figures its own: Acme’s invoices are not counted in Ivy’s summary (1.0’s balances.js)
04
Proposed
The summary separately identifies unapplied receipts from another payer while retaining them within total unapplied money; remitter remainder belongs to the remitter.
calculationservicetest
services-accounting:modules/transactions/tests/unit/rules/customer-summary.spec.js#it counts the unapplied payments another party sent (a payer that is not the customer, or a payer known by name alone) again, and not the customer’s own
05must prove
Proposed
Payable lists contain outstanding issued real invoices oldest first, excluding drafts, voids and quotes, with card and bank-debit eligibility.
policyservicetest
06must prove
Proposed
Fee quotes apply the unit rule once to eligible tender value and produce no fee for checks or fee-free policies.
calculationservicetest
services-accounting:modules/transactions/tests/integration/services/invoices/payable-invoices.integration.spec.js#it quotes the card fee of a required invoice by its unit’s rule, on the balance or on the amount tendered, and none for a check
07must prove
Proposed
Invoice read authority is sufficient for financial standing, and customers without open items return no currency groups even if CRM does not know them.
permissionapitest
services-accounting:modules/transactions/tests/e2e/customer-summary.e2e.spec.js#it reads with accounting.invoices.read alone and refuses a principal without it (403 permission_missing)
08must prove
Proposed
The product should expose payment-plan standing and let Billing pause collection through a hold; neither behavior is implemented.
policyserviceunknown

Scenarios

IdGivenWhenThenProvenance
01The member owes 90.00, including 40.00 overdue, and holds 10.00 of receipt value and 15.00 of credit.Inspect the financial summary.The separate figures reconcile to 65.00 net debt.test
services-accounting:modules/transactions/tests/integration/services/customers/customer-summary.integration.spec.js#it answers, as of today, its two open invoices (owing 9000), the overdue one (4000), the check’s 1000 unapplied, the 1500 credit, a net position of 6500
02The contact’s primary organization also owes invoices.Request the contact’s payable description through Commerce.Contact invoices precede the organization’s eligible invoices in the described totals.test
services-accounting:modules/transactions/tests/integration/services/invoices/payable-invoices.integration.spec.js#it describes the primary affiliate’s own open invoices, oldest first, then its organization’s, the totals summed

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.