Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
299 lines
20 KiB
JSON
299 lines
20 KiB
JSON
{
|
|
"metadata": {
|
|
"purpose": "Source-backed pass-0 recurring timing inventory for the service-period-first billing plan.",
|
|
"generatedOn": "2026-03-17",
|
|
"commands": [
|
|
"rg -l 'resolveServicePeriod' packages server shared --glob '!**/coverage/**' --glob '!**/dist/**'",
|
|
"rg -l 'billing_cycle_alignment' packages server shared --glob '!**/coverage/**' --glob '!**/dist/**'",
|
|
"rg -l 'service_period_start|service_period_end|servicePeriodStart|servicePeriodEnd' packages server shared --glob '!**/coverage/**' --glob '!**/dist/**'",
|
|
"rg -l 'calculateProductCharges\\(|Error calculating initial tax for product service|Missing pricing for product' packages server shared --glob '!**/coverage/**' --glob '!**/dist/**'",
|
|
"rg -l 'calculateLicenseCharges\\(|Error calculating initial tax for license service|Missing pricing for license' packages server shared --glob '!**/coverage/**' --glob '!**/dist/**'"
|
|
]
|
|
},
|
|
"timingControls": {
|
|
"resolveServicePeriodRefs": [
|
|
"packages/billing/src/services/accountingExportInvoiceSelector.ts",
|
|
"server/src/test/integration/billingInvoiceTiming.integration.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.cleanupSource.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.licenseTiming.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.productTiming.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.timing.test.ts"
|
|
],
|
|
"productLateStageProrationRefs": [
|
|
"packages/billing/src/lib/billing/billingEngine.ts",
|
|
"server/src/test/unit/billing/billingEngine.productTiming.test.ts"
|
|
],
|
|
"licenseLateStageProrationRefs": [
|
|
"packages/billing/src/lib/billing/billingEngine.ts",
|
|
"server/src/test/unit/billing/billingEngine.licenseTiming.test.ts"
|
|
],
|
|
"billingCycleAlignmentRefs": [
|
|
"packages/billing/src/actions/contractLineAction.ts",
|
|
"packages/billing/src/actions/contractLineMappingActions.ts",
|
|
"packages/billing/src/actions/contractLinePresetActions.ts",
|
|
"packages/billing/src/actions/contractWizardActions.ts",
|
|
"packages/billing/src/components/billing-dashboard/ContractLineDialog.tsx",
|
|
"packages/billing/src/components/billing-dashboard/contract-lines/ContractLineServiceForm.tsx",
|
|
"packages/billing/src/components/billing-dashboard/contract-lines/FixedContractLineConfiguration.tsx",
|
|
"packages/billing/src/components/billing-dashboard/contract-lines/FixedContractLinePresetConfiguration.tsx",
|
|
"packages/billing/src/components/billing-dashboard/service-configurations/FixedServiceConfigPanel.tsx",
|
|
"packages/billing/src/models/contractLineFixedConfig.ts",
|
|
"packages/billing/src/models/contractLineServiceFixedConfig.ts",
|
|
"packages/billing/src/repositories/contractLineRepository.ts",
|
|
"packages/billing/src/services/contractLineServiceConfigurationService.ts",
|
|
"packages/billing/tests/billingCycleAlignmentCompatibility.model.test.ts",
|
|
"packages/billing/tests/contractLineCadenceOwnerCompatibility.repository.test.ts",
|
|
"packages/billing/tests/contractLineMappingRecurringTiming.wiring.test.ts",
|
|
"packages/billing/tests/contractLinePresetCadenceOwner.actions.test.ts",
|
|
"packages/billing/tests/contractWizardCadenceOwner.wiring.test.ts",
|
|
"packages/billing/tests/fixedContractLineConfiguration.cadenceOwner.ui.test.tsx",
|
|
"packages/billing/tests/templateCadenceOwnerRoundTrip.actions.test.ts",
|
|
"packages/types/src/interfaces/billing.interfaces.ts",
|
|
"packages/types/src/interfaces/contractLineServiceConfiguration.interfaces.ts",
|
|
"server/migrations/20250318200000_create_plan_service_configuration_tables.cjs",
|
|
"server/migrations/20250318200100_migrate_plan_services_data.cjs",
|
|
"server/migrations/20250413032627_add_billing_plan_fixed_config_table.cjs",
|
|
"server/migrations/20250413032701_remove_proration_alignment_from_plan_service_fixed_config.cjs",
|
|
"server/migrations/20251008000001_rename_billing_to_contracts.cjs",
|
|
"server/migrations/20251020090000_contract_templates_phase1.cjs",
|
|
"server/migrations/20251020162000_create_contract_template_tables.cjs",
|
|
"server/migrations/20251020164500_backfill_contract_template_tables.cjs",
|
|
"server/migrations/20251024131616_create_contract_line_preset_relations.cjs",
|
|
"server/migrations/20251028120000_consolidate_contract_line_rates.cjs",
|
|
"server/src/interfaces/billing.interfaces.ts",
|
|
"server/src/interfaces/contractLineServiceConfiguration.interfaces.ts",
|
|
"server/src/lib/api/schemas/contractLineSchemas.ts",
|
|
"server/src/lib/api/schemas/financialSchemas.ts",
|
|
"server/src/lib/api/services/ContractLineService.ts",
|
|
"server/src/lib/repositories/contractLineRepository.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditApplication.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/negativeInvoiceCredit.test.ts",
|
|
"server/src/test/integration/billingInvoiceTiming.integration.test.ts",
|
|
"server/src/test/unit/api/billingCycleAlignmentCompatibility.repository.wiring.test.ts",
|
|
"server/src/test/unit/api/billingCycleAlignmentCompatibility.schema.test.ts",
|
|
"server/src/test/unit/api/contractLineService.billingCycleAlignmentCompatibility.wiring.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.discountPricingTiming.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.timing.test.ts",
|
|
"server/src/test/unit/billing/contractLineCadenceOwner.persistence.test.ts",
|
|
"server/src/test/unit/billing/recurrenceStorageModel.contract.test.ts",
|
|
"server/src/test/unit/billing/templateLineCadenceOwner.persistence.test.ts",
|
|
"server/src/test/unit/billingEngine.test.ts",
|
|
"server/test-utils/billingTestHelpers.ts",
|
|
"shared/billingClients/recurrenceStorageModel.ts"
|
|
]
|
|
},
|
|
"periodFieldInventory": {
|
|
"servicePeriodFieldRefs": [
|
|
"packages/billing/src/actions/accountingExportActions.ts",
|
|
"packages/billing/src/actions/contractReportActions.ts",
|
|
"packages/billing/src/actions/creditActions.ts",
|
|
"packages/billing/src/actions/creditReconciliationActions.ts",
|
|
"packages/billing/src/actions/invoiceGeneration.ts",
|
|
"packages/billing/src/actions/invoiceModification.ts",
|
|
"packages/billing/src/actions/invoiceQueries.ts",
|
|
"packages/billing/src/adapters/accounting/quickBooksOnlineAdapter.ts",
|
|
"packages/billing/src/adapters/accounting/xeroAdapter.ts",
|
|
"packages/billing/src/components/billing-dashboard/CreditManagement.tsx",
|
|
"packages/billing/src/components/invoice-designer/DesignerVisualWorkspace.test.tsx",
|
|
"packages/billing/src/components/invoice-designer/preview/sampleScenarios.ts",
|
|
"packages/billing/src/lib/adapters/invoiceAdapters.test.ts",
|
|
"packages/billing/src/lib/adapters/invoiceAdapters.ts",
|
|
"packages/billing/src/models/invoice.ts",
|
|
"packages/billing/src/repositories/accountingExportRepository.ts",
|
|
"packages/billing/src/services/accountingExportInvoiceSelector.ts",
|
|
"packages/billing/src/services/accountingExportValidation.ts",
|
|
"packages/billing/src/services/invoiceService.ts",
|
|
"packages/billing/src/utils/sampleInvoiceData.ts",
|
|
"packages/billing/src/utils/sampleInvoicePreview.ts",
|
|
"packages/billing/tests/accountingExportAdapters.servicePeriods.wiring.test.ts",
|
|
"packages/billing/tests/accountingExportInvoiceSelector.servicePeriods.wiring.test.ts",
|
|
"packages/billing/tests/accountingExportValidation.servicePeriods.wiring.test.ts",
|
|
"packages/billing/tests/accountingServicePeriodAudit.wiring.test.ts",
|
|
"packages/billing/tests/authoritativeRecurringReaders.servicePeriods.wiring.test.ts",
|
|
"packages/billing/tests/invoiceQueries.recurringDetailRefresh.wiring.test.ts",
|
|
"packages/billing/tests/invoiceService.externalTax.servicePeriods.wiring.test.ts",
|
|
"packages/billing/tests/sampleInvoicePreview.test.ts",
|
|
"packages/billing/tests/taxSourceActions.servicePeriods.wiring.test.ts",
|
|
"packages/client-portal/src/actions/client-portal-actions/dashboard.recurringServicePeriods.test.ts",
|
|
"packages/client-portal/src/actions/client-portal-actions/dashboard.ts",
|
|
"packages/client-portal/src/actions/clientPaymentActions.ts",
|
|
"packages/client-portal/src/components/billing/BillingOverviewTab.servicePeriods.test.tsx",
|
|
"packages/client-portal/src/components/billing/ClientInvoicePreview.servicePeriods.test.tsx",
|
|
"packages/client-portal/src/components/billing/InvoiceDetailsDialog.servicePeriods.test.tsx",
|
|
"packages/client-portal/src/components/billing/InvoiceDetailsDialog.tsx",
|
|
"packages/client-portal/src/components/billing/PaymentSuccessContent.servicePeriods.test.tsx",
|
|
"packages/client-portal/src/components/billing/PaymentSuccessContent.tsx",
|
|
"packages/client-portal/src/components/billing/recurringServicePeriodSummary.test.ts",
|
|
"packages/client-portal/src/components/billing/recurringServicePeriodSummary.ts",
|
|
"packages/clients/src/actions/clientContractActions.ts",
|
|
"packages/clients/src/actions/clientContractLineActions.ts",
|
|
"packages/integrations/src/lib/xero/xeroClientService.ts",
|
|
"packages/reporting/src/actions/reconciliationReportActions.servicePeriods.test.ts",
|
|
"packages/reporting/src/actions/report-actions/README.md",
|
|
"packages/reporting/src/actions/report-actions/README.servicePeriods.test.ts",
|
|
"packages/reporting/src/lib/reports/definitions/contracts/expiration.servicePeriods.test.ts",
|
|
"packages/reporting/src/lib/reports/definitions/contracts/revenue.servicePeriods.test.ts",
|
|
"packages/reporting/src/lib/reports/definitions/contracts/revenue.ts",
|
|
"packages/types/src/interfaces/accountingExport.interfaces.ts",
|
|
"packages/types/src/interfaces/billing.interfaces.ts",
|
|
"packages/types/src/interfaces/invoice.interfaces.ts",
|
|
"packages/types/src/lib/invoice-renderer/types.ts",
|
|
"server/migrations/20251025120000_add_billing_timing_metadata.cjs",
|
|
"server/migrations/20251026121500_create_accounting_export_tables.cjs",
|
|
"server/migrations/20260318120000_create_recurring_service_periods.cjs",
|
|
"server/src/interfaces/billing.interfaces.ts",
|
|
"server/src/interfaces/invoice.interfaces.ts",
|
|
"server/src/lib/api/controllers/ApiAccountingExportController.ts",
|
|
"server/src/lib/api/controllers/ApiCSVAccountingController.ts",
|
|
"server/src/lib/api/schemas/financialSchemas.ts",
|
|
"server/src/lib/api/schemas/invoiceSchemas.ts",
|
|
"server/src/lib/api/services/invoiceWorkflowEvents.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditApplication.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/billingInvoiceGeneration_consistency.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/billingInvoiceGeneration_tax.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/errorHandling.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/negativeInvoiceCredit.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/prepaymentInvoice.test.ts",
|
|
"server/src/test/integration/accounting/batchLifecycle.integration.test.ts",
|
|
"server/src/test/integration/accounting/exportDashboard.integration.test.ts",
|
|
"server/src/test/integration/accounting/invoiceSelection.integration.test.ts",
|
|
"server/src/test/integration/accounting/xeroLiveExport.integration.test.ts",
|
|
"server/src/test/integration/billing/contractPurchaseOrderSupport.integration.test.ts",
|
|
"server/src/test/integration/billingInvoiceTiming.integration.test.ts",
|
|
"server/src/test/unit/accounting/accountingExportValidation.servicePeriodProjection.test.ts",
|
|
"server/src/test/unit/accounting/accountingExportInvoiceSelector.servicePeriods.test.ts",
|
|
"server/src/test/unit/accounting/accountingExportService.replay.servicePeriods.test.ts",
|
|
"server/src/test/unit/accounting/externalTaxConsumers.servicePeriods.test.ts",
|
|
"server/src/test/unit/accounting/quickBooksOnlineAdapter.spec.ts",
|
|
"server/src/test/unit/accounting/xeroAdapter.spec.ts",
|
|
"server/src/test/unit/accounting/xeroClientService.spec.ts",
|
|
"server/src/test/unit/api/invoiceResponseSchema.compatibility.test.ts",
|
|
"server/src/test/unit/api/invoiceService.deleteRecurringDetailGuard.test.ts",
|
|
"server/src/test/unit/api/invoiceService.recurringDetailProjection.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.billedThroughReader.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.bucketTiming.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.discountPricingTiming.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.licenseTiming.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.persistedRecurringSelections.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.productTiming.test.ts",
|
|
"server/src/test/unit/billing/billingEngine.timing.test.ts",
|
|
"server/src/test/unit/billing/clientContractLineMutationGuards.test.ts",
|
|
"server/src/test/unit/billing/contractCadenceServicePeriods.domain.test.ts",
|
|
"server/src/test/unit/billing/creditActions.servicePeriods.test.ts",
|
|
"server/src/test/unit/billing/creditReconciliation.servicePeriods.test.ts",
|
|
"server/src/test/unit/billing/invoiceGeneration.headerPeriods.test.ts",
|
|
"server/src/test/unit/billing/invoiceGeneration.preview.test.ts",
|
|
"server/src/test/unit/billing/invoiceGeneration.recurringSelection.test.ts",
|
|
"server/src/test/unit/billing/invoiceGeneration.zeroDollarFinalization.test.ts",
|
|
"server/src/test/unit/billing/invoiceModel.servicePeriods.test.ts",
|
|
"server/src/test/unit/billing/invoiceService.fixedPersistence.test.ts",
|
|
"server/src/test/unit/billing/invoiceService.manualPeriodPolicy.test.ts",
|
|
"server/src/test/unit/billing/invoiceService.percentageDiscountRecalculation.test.ts",
|
|
"server/src/test/unit/billing/manualInvoiceActions.viewing.test.ts",
|
|
"server/src/test/unit/billingEngine.test.ts",
|
|
"server/src/test/unit/clientContractActions.overlapExclusive.test.ts",
|
|
"server/src/test/unit/contractReportActions.recurringServicePeriodBasis.test.ts",
|
|
"server/src/test/unit/contractReportActions.summary.servicePeriods.test.ts",
|
|
"server/src/test/unit/invoiceWorkflowEvents.test.ts",
|
|
"server/src/test/unit/migrations/recurringServicePeriodsMigration.test.ts",
|
|
"shared/billingClients/recurringRunExecutionIdentity.ts",
|
|
"shared/billingClients/recurringServicePeriodParity.ts"
|
|
],
|
|
"persistedDateFields": [
|
|
"client_billing_cycles.start_date",
|
|
"client_billing_cycles.end_date",
|
|
"invoices.billing_period_start",
|
|
"invoices.billing_period_end",
|
|
"invoice_item_details.service_period_start",
|
|
"invoice_item_details.service_period_end",
|
|
"invoice_item_details.billing_timing",
|
|
"client_contract_lines.start_date",
|
|
"client_contract_lines.end_date",
|
|
"accounting_export_batch_lines.service_period_start",
|
|
"accounting_export_batch_lines.service_period_end"
|
|
]
|
|
},
|
|
"servicePeriodConsumers": {
|
|
"creditsRefs": [
|
|
"packages/billing/src/actions/creditActions.ts",
|
|
"packages/billing/src/actions/creditReconciliationActions.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditExpirationPriority.test.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditExpirationCore.test.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditReconciliation.test.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditExpirationEffects.test.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditCreationAndDates.test.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditApplication.test.ts",
|
|
"server/src/test/infrastructure/billing/credits/creditExpirationIntegration.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/billingInvoiceGeneration_consistency.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/billingInvoiceGeneration_subtotal.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/manualInvoice.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/clientBillingCycleAnchors.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/prepaymentInvoice.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/negativeInvoiceCredit.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/billingInvoiceGeneration_tax.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/billingInvoiceGeneration_edgeCases.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/contractInvoiceManualCredit.test.ts"
|
|
],
|
|
"prepaymentRefs": [
|
|
"packages/billing/src/services/accountingExportInvoiceSelector.ts",
|
|
"packages/billing/src/services/purchaseOrderService.ts",
|
|
"packages/billing/src/actions/manualInvoiceActions.ts",
|
|
"packages/billing/src/actions/invoiceModification.ts",
|
|
"packages/billing/src/actions/creditActions.ts",
|
|
"packages/billing/src/components/billing-dashboard/PrepaymentInvoices.tsx",
|
|
"packages/billing/src/components/billing-dashboard/ManualInvoices.tsx",
|
|
"packages/billing/src/components/billing-dashboard/invoicing/GenerateTab.tsx",
|
|
"server/src/test/infrastructure/billing/invoices/prepaymentInvoice.test.ts",
|
|
"server/src/test/infrastructure/billing/invoices/clientBillingCycleAnchors.test.ts"
|
|
],
|
|
"negativeInvoiceRefs": [
|
|
"packages/billing/src/actions/invoiceModification.ts",
|
|
"server/src/test/infrastructure/billing/invoices/negativeInvoiceCredit.test.ts"
|
|
],
|
|
"accountingExportRefs": [
|
|
"packages/billing/src/adapters/accounting/xeroAdapter.ts",
|
|
"packages/billing/src/adapters/accounting/quickBooksOnlineAdapter.ts",
|
|
"packages/billing/src/repositories/accountingExportRepository.ts",
|
|
"packages/billing/src/services/accountingExportInvoiceSelector.ts",
|
|
"server/src/test/integration/accounting/invoiceSelection.integration.test.ts",
|
|
"server/src/test/integration/accounting/xeroLiveExport.integration.test.ts",
|
|
"server/src/test/integration/accounting/batchLifecycle.integration.test.ts",
|
|
"server/src/test/unit/accounting/xeroAdapter.spec.ts"
|
|
],
|
|
"portalBillingRefs": [
|
|
"packages/client-portal/src/actions/account.ts",
|
|
"packages/client-portal/src/actions/client-portal-actions/client-billing.ts",
|
|
"packages/client-portal/src/actions/client-portal-actions/client-billing-metrics.ts",
|
|
"packages/client-portal/src/components/billing/BillingOverview.tsx",
|
|
"packages/client-portal/src/components/billing/BillingOverviewTab.tsx",
|
|
"packages/client-portal/src/components/billing/ContractLineDetailsDialog.tsx",
|
|
"packages/client-portal/src/components/account/BillingSection.tsx"
|
|
],
|
|
"reportingRefs": [
|
|
"packages/billing/src/actions/contractReportActions.ts"
|
|
]
|
|
},
|
|
"outOfScopeCompatibilityMatrix": [
|
|
{
|
|
"flow": "time entry billing",
|
|
"status": "out_of_scope_v1",
|
|
"boundary": "Retains event-driven service dates and existing billed-through semantics until a dedicated follow-on plan exists."
|
|
},
|
|
{
|
|
"flow": "usage-record billing",
|
|
"status": "out_of_scope_v1",
|
|
"boundary": "Retains usage-event timing instead of inheriting canonical recurring service periods."
|
|
},
|
|
{
|
|
"flow": "materials and non-recurring charges",
|
|
"status": "out_of_scope_v1",
|
|
"boundary": "Remain periodless or manually-timed unless a separate policy is defined."
|
|
},
|
|
{
|
|
"flow": "manual-only invoices",
|
|
"status": "coexist_only",
|
|
"boundary": "Must coexist with recurring detail periods but must not start generating recurring schedules in v1."
|
|
}
|
|
]
|
|
}
|