diff --git a/models/baseModels/Item/Item.ts b/models/baseModels/Item/Item.ts index 0eac8acd..fe82fc4e 100644 --- a/models/baseModels/Item/Item.ts +++ b/models/baseModels/Item/Item.ts @@ -18,6 +18,8 @@ export class Item extends Doc { trackItem?: boolean; itemType?: 'Product' | 'Service'; for?: 'Purchases' | 'Sales' | 'Both'; + hasBatchNumber?: boolean; + batchNumber?:string; formulas: FormulaMap = { incomeAccount: { diff --git a/models/inventory/PurchaseReceipt.ts b/models/inventory/PurchaseReceipt.ts index 019c75b4..41db3e23 100644 --- a/models/inventory/PurchaseReceipt.ts +++ b/models/inventory/PurchaseReceipt.ts @@ -11,6 +11,7 @@ export class PurchaseReceipt extends StockTransfer { formRoute: ({ name }) => `/edit/PurchaseReceipt/${name}`, columns: [ 'name', + 'batchNumber', getTransactionStatusColumn(), 'party', 'date', diff --git a/models/inventory/StockLedgerEntry.ts b/models/inventory/StockLedgerEntry.ts index d137bfea..49e3ec38 100644 --- a/models/inventory/StockLedgerEntry.ts +++ b/models/inventory/StockLedgerEntry.ts @@ -10,4 +10,5 @@ export class StockLedgerEntry extends Doc { location?: string; referenceName?: string; referenceType?: string; + batchNumber?: string; } diff --git a/models/inventory/StockManager.ts b/models/inventory/StockManager.ts index 20d86813..503ba735 100644 --- a/models/inventory/StockManager.ts +++ b/models/inventory/StockManager.ts @@ -204,6 +204,7 @@ class StockManagerItem { referenceType: string; fromLocation?: string; toLocation?: string; + batchNumber?: string; stockLedgerEntries?: StockLedgerEntry[]; @@ -218,6 +219,7 @@ class StockManagerItem { this.toLocation = details.toLocation; this.referenceName = details.referenceName; this.referenceType = details.referenceType; + this.batchNumber = details.batchNumber; this.fyo = fyo; } @@ -270,6 +272,7 @@ class StockManagerItem { date: this.date, item: this.item, rate: this.rate, + batchNumber: this.batchNumber, quantity, location, referenceName: this.referenceName, diff --git a/models/inventory/StockMovement.ts b/models/inventory/StockMovement.ts index 20811237..6827e748 100644 --- a/models/inventory/StockMovement.ts +++ b/models/inventory/StockMovement.ts @@ -84,6 +84,7 @@ export class StockMovement extends Transfer { item: row.item!, rate: row.rate!, quantity: row.quantity!, + batchNumber: row.batchNumber!, fromLocation: row.fromLocation, toLocation: row.toLocation, })); diff --git a/models/inventory/StockMovementItem.ts b/models/inventory/StockMovementItem.ts index 665852a1..b8ae74cf 100644 --- a/models/inventory/StockMovementItem.ts +++ b/models/inventory/StockMovementItem.ts @@ -19,6 +19,7 @@ export class StockMovementItem extends Doc { rate?: Money; amount?: Money; parentdoc?: StockMovement; + batchNumber? : string; get isIssue() { return this.parentdoc?.movementType === MovementType.MaterialIssue; diff --git a/models/inventory/StockTransfer.ts b/models/inventory/StockTransfer.ts index 5aae9c1f..7b82dff4 100644 --- a/models/inventory/StockTransfer.ts +++ b/models/inventory/StockTransfer.ts @@ -68,6 +68,7 @@ export abstract class StockTransfer extends Transfer { item: row.item!, rate: row.rate!, quantity: row.quantity!, + batchNumber: row.batchNumber!, fromLocation, toLocation, }; diff --git a/models/inventory/StockTransferItem.ts b/models/inventory/StockTransferItem.ts index 9b12d208..d5dadc00 100644 --- a/models/inventory/StockTransferItem.ts +++ b/models/inventory/StockTransferItem.ts @@ -12,6 +12,7 @@ export class StockTransferItem extends Doc { unit?: string; description?: string; hsnCode?: number; + batchNumber?: string formulas: FormulaMap = { description: { diff --git a/models/inventory/types.ts b/models/inventory/types.ts index 6a846b1a..0809a0e4 100644 --- a/models/inventory/types.ts +++ b/models/inventory/types.ts @@ -21,6 +21,7 @@ export interface SMTransferDetails { item: string; rate: Money; quantity: number; + batchNumber?: string; fromLocation?: string; toLocation?: string; } diff --git a/reports/inventory/helpers.ts b/reports/inventory/helpers.ts index 2cd093fb..6da6ca65 100644 --- a/reports/inventory/helpers.ts +++ b/reports/inventory/helpers.ts @@ -17,6 +17,7 @@ export async function getRawStockLedgerEntries(fyo: Fyo) { 'name', 'date', 'item', + "batchNumber", 'rate', 'quantity', 'location', @@ -42,7 +43,7 @@ export function getStockLedgerEntries( const name = safeParseInt(sle.name); const date = new Date(sle.date); const rate = safeParseFloat(sle.rate); - const { item, location, quantity, referenceName, referenceType } = sle; + const { item, location, batchNumber, quantity, referenceName, referenceType } = sle; if (quantity === 0) { continue; @@ -81,6 +82,7 @@ export function getStockLedgerEntries( item, location, + batchNumber, quantity, balanceQuantity, diff --git a/reports/inventory/types.ts b/reports/inventory/types.ts index ea7f69c5..b83244b1 100644 --- a/reports/inventory/types.ts +++ b/reports/inventory/types.ts @@ -5,6 +5,7 @@ export interface RawStockLedgerEntry { date: string; item: string; rate: string; + batchNumber: string; quantity: number; location: string; referenceName: string; @@ -20,6 +21,7 @@ export interface ComputedStockLedgerEntry{ item: string; location:string; + batchNumber: string; quantity: number; balanceQuantity: number; diff --git a/schemas/app/InvoiceItem.json b/schemas/app/InvoiceItem.json index 2d95b90f..68d0abfb 100644 --- a/schemas/app/InvoiceItem.json +++ b/schemas/app/InvoiceItem.json @@ -93,9 +93,16 @@ "label": "Stock Not Transferred", "fieldtype": "Float", "readOnly": true + }, + { + "fieldname": "batchNumber", + "label": "Batch No", + "fieldtype": "Data", + "create": true, + "placeholder": "Batch No" } ], - "tableFields": ["item", "tax", "quantity", "rate", "amount"], + "tableFields": ["item", "tax", "quantity", "rate", "amount", "batchNumber"], "keywordFields": ["item", "tax"], "quickEditFields": [ "item", @@ -110,6 +117,7 @@ "itemDiscountAmount", "itemDiscountPercent", "itemDiscountedTotal", - "itemTaxedTotal" + "itemTaxedTotal", + "batchNumber" ] } diff --git a/schemas/app/Item.json b/schemas/app/Item.json index 23a30650..f3bd5eb2 100644 --- a/schemas/app/Item.json +++ b/schemas/app/Item.json @@ -31,6 +31,12 @@ "default": "Unit", "placeholder": "Unit Type" }, + { + "fieldname": "hasBatchNumber", + "label": "Has Batch No", + "fieldtype": "Check", + "default": false + }, { "fieldname": "itemType", "label": "Type", @@ -116,6 +122,7 @@ "quickEditFields": [ "rate", "unit", + "hasBatchNumber", "itemType", "for", "tax", diff --git a/schemas/app/inventory/StockLedgerEntry.json b/schemas/app/inventory/StockLedgerEntry.json index f4955c1c..88a07c35 100644 --- a/schemas/app/inventory/StockLedgerEntry.json +++ b/schemas/app/inventory/StockLedgerEntry.json @@ -49,6 +49,13 @@ "label": "Ref. Type", "fieldtype": "Data", "readOnly": true + }, + { + "fieldname": "batchNumber", + "label": "Batch No", + "fieldtype": "Data", + "create": true, + "placeholder": "Batch No" } ] } diff --git a/schemas/app/inventory/StockTransferItem.json b/schemas/app/inventory/StockTransferItem.json index 464cdd8e..2390257a 100644 --- a/schemas/app/inventory/StockTransferItem.json +++ b/schemas/app/inventory/StockTransferItem.json @@ -17,6 +17,11 @@ "target": "Location", "required": true }, + { + "fieldname": "batchNumber", + "label": "Batch No", + "fieldtype": "Data" + }, { "fieldname": "quantity", "label": "Quantity",