Checkpoint: Automatismes séparé en onglets Import et Export. Les règles d’export ciblent un destinataire ou une ventilation, avec destination locale, Teams ou SharePoint et ouverture navigateur optionnelle. La validation BAP unique ou en masse applique la première règle active par priorité puis conserve le paramétrage historique comme repli. Paramètres d’export déplacés vers Automatismes et page renommée Paramètres. Migration additive, tests, TypeScript, build et contrôles visuels validés.
This commit is contained in:
42
server/exportDestinationResolver.ts
Normal file
42
server/exportDestinationResolver.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import type { ImportSettings, Invoice } from "../drizzle/schema";
|
||||
import { findMatchingExportRule } from "@shared/exportAutomation";
|
||||
import { getExportAutomationRulesByUser } from "./db";
|
||||
|
||||
export type ResolvedExportDestination = {
|
||||
exportMode: "browser" | "folder" | "both";
|
||||
destinationPath: string | null;
|
||||
destinationType: "local" | "teams" | "sharepoint";
|
||||
source: "rule" | "default";
|
||||
ruleName?: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Résout une destination pour une validation BAP. Une règle active ciblant le
|
||||
* destinataire ou la ventilation est prioritaire sur les anciens paramètres
|
||||
* globaux, qui restent le comportement de repli pour préserver l’existant.
|
||||
*/
|
||||
export async function resolveBapExportDestination(
|
||||
userId: number,
|
||||
invoice: Pick<Invoice, "recipientName" | "ventilationComptable">,
|
||||
settings: ImportSettings | null,
|
||||
): Promise<ResolvedExportDestination> {
|
||||
const rules = await getExportAutomationRulesByUser(userId);
|
||||
const matchingRule = findMatchingExportRule(rules, invoice);
|
||||
|
||||
if (matchingRule) {
|
||||
return {
|
||||
exportMode: matchingRule.openInBrowser === 1 ? "both" : "folder",
|
||||
destinationPath: matchingRule.destinationPath,
|
||||
destinationType: matchingRule.destinationType,
|
||||
source: "rule",
|
||||
ruleName: matchingRule.name,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
exportMode: settings?.bapExportMode || "browser",
|
||||
destinationPath: settings?.exportFolder || null,
|
||||
destinationType: settings?.exportFolderType || "local",
|
||||
source: "default",
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user