mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 06:40:31 +00:00
fix(server): mark compute inventory cost flag
This commit is contained in:
@@ -4,14 +4,15 @@ import { TenancyContext } from '@/modules/Tenancy/TenancyContext.service';
|
|||||||
import { TableSheetPdf } from './TableSheetPdf';
|
import { TableSheetPdf } from './TableSheetPdf';
|
||||||
import { TemplateInjectableModule } from '@/modules/TemplateInjectable/TemplateInjectable.module';
|
import { TemplateInjectableModule } from '@/modules/TemplateInjectable/TemplateInjectable.module';
|
||||||
import { ChromiumlyTenancyModule } from '@/modules/ChromiumlyTenancy/ChromiumlyTenancy.module';
|
import { ChromiumlyTenancyModule } from '@/modules/ChromiumlyTenancy/ChromiumlyTenancy.module';
|
||||||
|
import { InventoryCostModule } from '@/modules/InventoryCost/InventoryCost.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [TemplateInjectableModule, ChromiumlyTenancyModule],
|
imports: [
|
||||||
providers: [
|
TemplateInjectableModule,
|
||||||
FinancialSheetMeta,
|
ChromiumlyTenancyModule,
|
||||||
TenancyContext,
|
InventoryCostModule,
|
||||||
TableSheetPdf,
|
|
||||||
],
|
],
|
||||||
|
providers: [FinancialSheetMeta, TenancyContext, TableSheetPdf],
|
||||||
exports: [FinancialSheetMeta, TableSheetPdf],
|
exports: [FinancialSheetMeta, TableSheetPdf],
|
||||||
})
|
})
|
||||||
export class FinancialSheetCommonModule {}
|
export class FinancialSheetCommonModule {}
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { IFinancialSheetCommonMeta } from '../types/Report.types';
|
import { IFinancialSheetCommonMeta } from '../types/Report.types';
|
||||||
import { TenancyContext } from '@/modules/Tenancy/TenancyContext.service';
|
import { TenancyContext } from '@/modules/Tenancy/TenancyContext.service';
|
||||||
|
import { InventoryComputeCostService } from '@/modules/InventoryCost/commands/InventoryComputeCost.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FinancialSheetMeta {
|
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.
|
* Retrieves the common meta data of the financial sheet.
|
||||||
@@ -17,10 +21,8 @@ export class FinancialSheetMeta {
|
|||||||
const baseCurrency = tenantMetadata.baseCurrency;
|
const baseCurrency = tenantMetadata.baseCurrency;
|
||||||
const dateFormat = tenantMetadata.dateFormat;
|
const dateFormat = tenantMetadata.dateFormat;
|
||||||
|
|
||||||
// const isCostComputeRunning =
|
const isCostComputeRunning =
|
||||||
// this.inventoryService.isItemsCostComputeRunning();
|
await this.inventoryComputeCostService.isItemsCostComputeRunning();
|
||||||
|
|
||||||
const isCostComputeRunning = false;
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
organizationName,
|
organizationName,
|
||||||
|
|||||||
@@ -68,6 +68,12 @@ export class ComputeItemCostProcessor extends WorkerHost {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`[error] Error computing item cost for item ${itemId}:`, error);
|
console.error(`[error] Error computing item cost for item ${itemId}:`, error);
|
||||||
console.error('Error stack:', error instanceof Error ? error.stack : 'No stack trace');
|
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;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,6 @@ export class SaleInvoicesCost {
|
|||||||
*/
|
*/
|
||||||
scheduleWriteJournalEntries(startingDate?: Date) {
|
scheduleWriteJournalEntries(startingDate?: Date) {
|
||||||
// const agenda = Container.get('agenda');
|
// const agenda = Container.get('agenda');
|
||||||
|
|
||||||
// return agenda.schedule('in 3 seconds', 'rewrite-invoices-journal-entries', {
|
// return agenda.schedule('in 3 seconds', 'rewrite-invoices-journal-entries', {
|
||||||
// startingDate,
|
// startingDate,
|
||||||
// tenantId,
|
// tenantId,
|
||||||
@@ -123,12 +122,11 @@ export class SaleInvoicesCost {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes cost GL entries from the inventory cost lots.
|
* Writes cost GL entries from the inventory cost lots.
|
||||||
* @param {number} tenantId -
|
* @param {Date} startingDate - Starting date.
|
||||||
* @param {Date} startingDate -
|
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
public writeCostLotsGLEntries = (startingDate: Date) => {
|
public writeCostLotsGLEntries = async (startingDate: Date) => {
|
||||||
return this.uow.withTransaction(async (trx: Knex.Transaction) => {
|
await this.uow.withTransaction(async (trx: Knex.Transaction) => {
|
||||||
// Triggers event `onInventoryCostLotsGLEntriesBeforeWrite`.
|
// Triggers event `onInventoryCostLotsGLEntriesBeforeWrite`.
|
||||||
await this.eventPublisher.emitAsync(
|
await this.eventPublisher.emitAsync(
|
||||||
events.inventory.onCostLotsGLEntriesBeforeWrite,
|
events.inventory.onCostLotsGLEntriesBeforeWrite,
|
||||||
@@ -146,5 +144,10 @@ export class SaleInvoicesCost {
|
|||||||
} as IInventoryCostLotsGLEntriesWriteEvent,
|
} 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,
|
||||||
|
{},
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,12 +18,21 @@ export default function FinancialReportPage(props) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const FinancialComputeAlert = styled.div`
|
export const FinancialComputeAlert = styled.div`
|
||||||
|
--x-background-color: #fdecda;
|
||||||
|
--x-text-color: #342515;
|
||||||
|
--x-button-text-color: #824400;
|
||||||
|
|
||||||
|
.bp4-dark & {
|
||||||
|
--x-background-color: rgba(200, 118, 25, 0.2);
|
||||||
|
--x-text-color: rgba(255, 255, 255, 0.8);
|
||||||
|
--x-button-text-color: rgba(255, 255, 255, 0.8);
|
||||||
|
}
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 8px 20px;
|
padding: 8px 20px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
color: #342515;
|
background-color: var(--x-background-color);
|
||||||
|
color: var(--x-text-color);
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
background-color: var(--color-financial-report-background);
|
|
||||||
|
|
||||||
button {
|
button {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
@@ -32,7 +41,7 @@ export const FinancialComputeAlert = styled.div`
|
|||||||
|
|
||||||
&,
|
&,
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #824400;
|
color: var(--x-button-text-color);
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -40,7 +49,7 @@ export const FinancialComputeAlert = styled.div`
|
|||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -2px;
|
top: -2px;
|
||||||
fill: #975f19;
|
fill: var(--x-text-color);
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user