2
0
mirror of https://github.com/frappe/books.git synced 2024-11-10 07:40:55 +00:00
books/models/inventory/helpers.ts
2023-02-27 19:16:04 +05:30

52 lines
1.4 KiB
TypeScript

import { ValidationError } from 'fyo/utils/errors';
import { Invoice } from 'models/baseModels/Invoice/Invoice';
import { InvoiceItem } from 'models/baseModels/InvoiceItem/InvoiceItem';
import { ModelNameEnum } from 'models/types';
import { StockMovement } from './StockMovement';
import { StockMovementItem } from './StockMovementItem';
import { StockTransfer } from './StockTransfer';
import { StockTransferItem } from './StockTransferItem';
export async function validateBatchNumber(
doc: StockMovement | StockTransfer | Invoice
) {
for (const row of doc.items ?? []) {
await validateItemRowBatchNumber(row);
}
}
async function validateItemRowBatchNumber(
doc: StockMovementItem | StockTransferItem | InvoiceItem
) {
const idx = doc.idx ?? 0 + 1;
const item = doc.item;
const batchNumber = doc.batchNumber;
if (!item) {
return;
}
const hasBatchNumber = await doc.fyo.getValue(
ModelNameEnum.Item,
item,
'hasBatchNumber'
);
if (!hasBatchNumber && batchNumber) {
throw new ValidationError(
[
doc.fyo.t`Batch Number set for row ${idx}.`,
doc.fyo.t`Item ${item} is not a batched item`,
].join(' ')
);
}
if (hasBatchNumber && !batchNumber) {
throw new ValidationError(
[
doc.fyo.t`Batch Number not set for row ${idx}.`,
doc.fyo.t`Item ${item} is a batched item`,
].join(' ')
);
}
}