fix(sales): wire missing berth-rule triggers + portal company-billed invoices
- G-C4: deposit_received in invoices.ts - G-C4 + G-I2: interest_archived + notifyNextInLine in archiveInterest - G-C4: interest_completed in setInterestOutcome - G-C4: berth_unlinked in removeInterestBerth - G-I5: portal invoices include billingEntityType='company' when client is the director Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,7 @@ import { db } from '@/lib/db';
|
||||
import { interestBerths, interests, type InterestBerth } from '@/lib/db/schema/interests';
|
||||
import { berths } from '@/lib/db/schema/berths';
|
||||
import { CodedError, NotFoundError } from '@/lib/errors';
|
||||
import type { AuditMeta } from '@/lib/audit';
|
||||
|
||||
type DbOrTx = typeof db | Parameters<Parameters<typeof db.transaction>[0]>[0];
|
||||
|
||||
@@ -287,6 +288,7 @@ export async function removeInterestBerth(
|
||||
interestId: string,
|
||||
berthId: string,
|
||||
portId: string,
|
||||
meta?: AuditMeta,
|
||||
): Promise<void> {
|
||||
// Verify both the interest and the berth belong to the caller's
|
||||
// port before issuing the delete. A tenant boundary breach would
|
||||
@@ -305,4 +307,14 @@ export async function removeInterestBerth(
|
||||
await db
|
||||
.delete(interestBerths)
|
||||
.where(and(eq(interestBerths.interestId, interestId), eq(interestBerths.berthId, berthId)));
|
||||
|
||||
// G-C4: fire the berth_unlinked berth-rule. Default mode is 'off' so this
|
||||
// is a silent no-op unless an admin opted in via system_settings.berth_rules.
|
||||
// Dynamic import avoids a static cycle: berth-rules-engine imports this file
|
||||
// (getPrimaryBerth). meta is optional so older callers that haven't been
|
||||
// threaded through can still call this without triggering the rule.
|
||||
if (meta) {
|
||||
const { evaluateRule } = await import('@/lib/services/berth-rules-engine');
|
||||
void evaluateRule('berth_unlinked', interestId, portId, meta);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user