import type { IModuleServer, ModuleParams } from "@erp/core/api"; import { models } from "./infrastructure"; import { issuedInvoicesRouter } from "./infrastructure/express/issued-invoices/issued-invoices.routes"; export const customerInvoicesAPIModule: IModuleServer = { name: "customer-invoices", version: "1.0.0", dependencies: ["customers"], async init(params: ModuleParams) { const { logger, env } = params; //proformasRouter(params); issuedInvoicesRouter({ ...params, services: issuedInvoicesServices, }); logger.info("🚀 CustomerInvoices module initialized", { label: this.name }); }, async registerDependencies( params: ModuleParams & { getService: (name: string) => any; } ) { const { logger, getService } = params; // ----------------------------------------------------------------------- // 1️⃣ Obtener dependencias CORE // ----------------------------------------------------------------------- const coreDocuments = getService("core.documents"); const transactionManager = getService("core.transactionManager"); if (!coreDocuments) { throw new Error("core.documents service not available"); } // ----------------------------------------------------------------------- // 2️⃣ Construir DI del módulo // ----------------------------------------------------------------------- issuedInvoicesServices = buildIssuedInvoicesDI({ coreDocuments, transactionManager, }); // ----------------------------------------------------------------------- // 3️⃣ Exponer servicios del módulo // ----------------------------------------------------------------------- logger.info("🚀 CustomerInvoices module dependencies registered", { label: this.name, }); return { models, services: { issuedInvoices: issuedInvoicesServices, }, }; }, }; export default customerInvoicesAPIModule;