diff --git a/models/baseModels/InvoiceItem/InvoiceItem.ts b/models/baseModels/InvoiceItem/InvoiceItem.ts index 2e941038..ec93b471 100644 --- a/models/baseModels/InvoiceItem/InvoiceItem.ts +++ b/models/baseModels/InvoiceItem/InvoiceItem.ts @@ -430,9 +430,13 @@ export abstract class InvoiceItem extends Doc { !(this.enableDiscounting && !!this.setItemDiscountAmount), itemDiscountPercent: () => !(this.enableDiscounting && !this.setItemDiscountAmount), - transferUnit: () => !this.enableInventory, - transferQuantity: () => !this.enableInventory, - unitConversionFactor: () => !this.enableInventory, + batchNumber: () => !this.fyo.singles.InventorySettings?.enableBatches, + transferUnit: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, + transferQuantity: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, + unitConversionFactor: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, }; static filters: FiltersMap = { diff --git a/models/baseModels/Item/Item.ts b/models/baseModels/Item/Item.ts index c7a6b8e1..51193c6e 100644 --- a/models/baseModels/Item/Item.ts +++ b/models/baseModels/Item/Item.ts @@ -146,9 +146,11 @@ export class Item extends Doc { !this.fyo.singles.AccountingSettings?.enableInventory || this.itemType !== 'Product' || (this.inserted && !this.trackItem), - hasBatchNumber: () => !this.trackItem, barcode: () => !this.fyo.singles.InventorySettings?.enableBarcodes, - uomConversions: () => !this.fyo.singles.AccountingSettings?.enableInventory, + hasBatchNumber: () => + !(this.fyo.singles.InventorySettings?.enableBatches && this.trackItem), + uomConversions: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, }; readOnly: ReadOnlyMap = { diff --git a/models/inventory/StockMovementItem.ts b/models/inventory/StockMovementItem.ts index f1b385fb..12e16534 100644 --- a/models/inventory/StockMovementItem.ts +++ b/models/inventory/StockMovementItem.ts @@ -4,6 +4,7 @@ import { Doc } from 'fyo/model/doc'; import { FiltersMap, FormulaMap, + HiddenMap, ReadOnlyMap, RequiredMap, ValidationMap, @@ -233,6 +234,16 @@ export class StockMovementItem extends Doc { toLocation: () => this.isIssue, }; + override hidden: HiddenMap = { + batchNumber: () => !this.fyo.singles.InventorySettings?.enableBatches, + transferUnit: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, + transferQuantity: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, + unitConversionFactor: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, + }; + static createFilters: FiltersMap = { item: () => ({ trackItem: true, itemType: 'Product' }), }; diff --git a/models/inventory/StockTransferItem.ts b/models/inventory/StockTransferItem.ts index 96f63547..2c5c2ccc 100644 --- a/models/inventory/StockTransferItem.ts +++ b/models/inventory/StockTransferItem.ts @@ -1,7 +1,12 @@ import { t } from 'fyo'; import { DocValue } from 'fyo/core/types'; import { Doc } from 'fyo/model/doc'; -import { FiltersMap, FormulaMap, ValidationMap } from 'fyo/model/types'; +import { + FiltersMap, + FormulaMap, + HiddenMap, + ValidationMap, +} from 'fyo/model/types'; import { ValidationError } from 'fyo/utils/errors'; import { ModelNameEnum } from 'models/types'; import { Money } from 'pesa'; @@ -21,7 +26,7 @@ export class StockTransferItem extends Doc { amount?: Money; description?: string; hsnCode?: number; - batchNumber?: string + batchNumber?: string; formulas: FormulaMap = { description: { @@ -200,4 +205,14 @@ export class StockTransferItem extends Doc { return { for: ['not in', [itemNotFor]], trackItem: true }; }, }; + + override hidden: HiddenMap = { + batchNumber: () => !this.fyo.singles.InventorySettings?.enableBatches, + transferUnit: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, + transferQuantity: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, + unitConversionFactor: () => + !this.fyo.singles.InventorySettings?.enableUomConversions, + }; } diff --git a/schemas/app/InvoiceItem.json b/schemas/app/InvoiceItem.json index b6bbb522..b7d544c5 100644 --- a/schemas/app/InvoiceItem.json +++ b/schemas/app/InvoiceItem.json @@ -134,7 +134,7 @@ "readOnly": true } ], - "tableFields": ["item", "tax", "batchNumber", "quantity", "rate", "amount"], + "tableFields": ["item", "tax", "quantity", "rate", "amount"], "keywordFields": ["item", "tax"], "quickEditFields": [ "item", diff --git a/schemas/app/Item.json b/schemas/app/Item.json index 47d0901c..2420297b 100644 --- a/schemas/app/Item.json +++ b/schemas/app/Item.json @@ -158,7 +158,6 @@ "barcode", "hsnCode", "trackItem", - "hasBatchNumber", "uom" ], "keywordFields": ["name", "itemType", "for"] diff --git a/schemas/app/inventory/InventorySettings.json b/schemas/app/inventory/InventorySettings.json index b00252d9..0df7e6b4 100644 --- a/schemas/app/inventory/InventorySettings.json +++ b/schemas/app/inventory/InventorySettings.json @@ -50,6 +50,16 @@ "fieldname": "enableBarcodes", "label": "Enable Barcodes", "fieldtype": "Check" + }, + { + "fieldname": "enableBatches", + "label": "Enable Batches", + "fieldtype": "Check" + }, + { + "fieldname": "enableUomConversions", + "label": "Enable UOM Conversion", + "fieldtype": "Check" } ] } diff --git a/schemas/app/inventory/StockMovementItem.json b/schemas/app/inventory/StockMovementItem.json index cffb017c..e3f536cf 100644 --- a/schemas/app/inventory/StockMovementItem.json +++ b/schemas/app/inventory/StockMovementItem.json @@ -84,7 +84,7 @@ "readOnly": true } ], - "tableFields": ["item", "fromLocation", "toLocation", "batchNumber", "quantity", "rate"], + "tableFields": ["item", "fromLocation", "toLocation", "quantity", "rate"], "keywordFields": ["item"], "quickEditFields": [ "item", diff --git a/schemas/app/inventory/StockTransferItem.json b/schemas/app/inventory/StockTransferItem.json index 5c6eb207..3262a0b7 100644 --- a/schemas/app/inventory/StockTransferItem.json +++ b/schemas/app/inventory/StockTransferItem.json @@ -86,7 +86,7 @@ "placeholder": "HSN/SAC Code" } ], - "tableFields": ["item", "location", "batchNumber", "quantity", "rate", "amount"], + "tableFields": ["item", "location", "quantity", "rate", "amount"], "quickEditFields": [ "item", diff --git a/src/utils/search.ts b/src/utils/search.ts index 05832e73..cfa581d7 100644 --- a/src/utils/search.ts +++ b/src/utils/search.ts @@ -234,6 +234,11 @@ function getListViewList(fyo: Fyo): SearchItem[] { ); } + const hasBatch = fyo.doc.singles.InventorySettings?.enableBatches; + if (hasBatch) { + schemaNames.push(ModelNameEnum.BatchNumber); + } + if (fyo.store.isDevelopment) { schemaNames = Object.keys(fyo.schemaMap) as ModelNameEnum[]; }