fix(server): mark compute inventory cost flag

This commit is contained in:
Ahmed Bouhuolia
2026-01-25 21:59:44 +02:00
parent f461cc221b
commit 421f0c26a7
5 changed files with 40 additions and 19 deletions

View File

@@ -4,14 +4,15 @@ import { TenancyContext } from '@/modules/Tenancy/TenancyContext.service';
import { TableSheetPdf } from './TableSheetPdf';
import { TemplateInjectableModule } from '@/modules/TemplateInjectable/TemplateInjectable.module';
import { ChromiumlyTenancyModule } from '@/modules/ChromiumlyTenancy/ChromiumlyTenancy.module';
import { InventoryCostModule } from '@/modules/InventoryCost/InventoryCost.module';
@Module({
imports: [TemplateInjectableModule, ChromiumlyTenancyModule],
providers: [
FinancialSheetMeta,
TenancyContext,
TableSheetPdf,
imports: [
TemplateInjectableModule,
ChromiumlyTenancyModule,
InventoryCostModule,
],
providers: [FinancialSheetMeta, TenancyContext, TableSheetPdf],
exports: [FinancialSheetMeta, TableSheetPdf],
})
export class FinancialSheetCommonModule {}

View File

@@ -1,10 +1,14 @@
import { Injectable } from '@nestjs/common';
import { IFinancialSheetCommonMeta } from '../types/Report.types';
import { TenancyContext } from '@/modules/Tenancy/TenancyContext.service';
import { InventoryComputeCostService } from '@/modules/InventoryCost/commands/InventoryComputeCost.service';
@Injectable()
export class FinancialSheetMeta {
constructor(private readonly tenancyContext: TenancyContext) {}
constructor(
private readonly tenancyContext: TenancyContext,
private readonly inventoryComputeCostService: InventoryComputeCostService,
) {}
/**
* Retrieves the common meta data of the financial sheet.
@@ -17,10 +21,8 @@ export class FinancialSheetMeta {
const baseCurrency = tenantMetadata.baseCurrency;
const dateFormat = tenantMetadata.dateFormat;
// const isCostComputeRunning =
// this.inventoryService.isItemsCostComputeRunning();
const isCostComputeRunning = false;
const isCostComputeRunning =
await this.inventoryComputeCostService.isItemsCostComputeRunning();
return {
organizationName,

View File

@@ -68,6 +68,12 @@ export class ComputeItemCostProcessor extends WorkerHost {
} catch (error) {
console.error(`[error] Error computing item cost for item ${itemId}:`, error);
console.error('Error stack:', error instanceof Error ? error.stack : 'No stack trace');
// Reset cost_compute_running when job fails so it does not stay true indefinitely
try {
await this.inventoryComputeCostService.markItemsCostComputeRunning(false);
} catch (markError) {
console.error('[error] Failed to mark cost compute as not running:', markError);
}
throw error;
}
}

View File

@@ -114,7 +114,6 @@ export class SaleInvoicesCost {
*/
scheduleWriteJournalEntries(startingDate?: Date) {
// const agenda = Container.get('agenda');
// return agenda.schedule('in 3 seconds', 'rewrite-invoices-journal-entries', {
// startingDate,
// tenantId,
@@ -123,12 +122,11 @@ export class SaleInvoicesCost {
/**
* Writes cost GL entries from the inventory cost lots.
* @param {number} tenantId -
* @param {Date} startingDate -
* @param {Date} startingDate - Starting date.
* @returns {Promise<void>}
*/
public writeCostLotsGLEntries = (startingDate: Date) => {
return this.uow.withTransaction(async (trx: Knex.Transaction) => {
public writeCostLotsGLEntries = async (startingDate: Date) => {
await this.uow.withTransaction(async (trx: Knex.Transaction) => {
// Triggers event `onInventoryCostLotsGLEntriesBeforeWrite`.
await this.eventPublisher.emitAsync(
events.inventory.onCostLotsGLEntriesBeforeWrite,
@@ -146,5 +144,10 @@ export class SaleInvoicesCost {
} as IInventoryCostLotsGLEntriesWriteEvent,
);
});
// Signal that cost entries have been written so cost_compute_running can be set to false.
await this.eventPublisher.emitAsync(
events.inventory.onInventoryCostEntriesWritten,
{},
);
};
}