Add GRN batch and serial tracking
This commit is contained in:
@@ -4,9 +4,15 @@ namespace Distribution.Models
|
||||
{
|
||||
public class GoodsReceipt : Template
|
||||
{
|
||||
public Guid FK_PurchaseOrderId { get; set; }
|
||||
/// <summary>Null for a direct receipt (goods received without a purchase order).</summary>
|
||||
public Guid? FK_PurchaseOrderId { get; set; }
|
||||
[ForeignKey("FK_PurchaseOrderId")]
|
||||
public PurchaseOrder PurchaseOrder { get; set; }
|
||||
public PurchaseOrder? PurchaseOrder { get; set; }
|
||||
|
||||
/// <summary>Optional supplier for a direct receipt; for PO receipts the supplier comes from the PO.</summary>
|
||||
public Guid? FK_SupplierId { get; set; }
|
||||
[ForeignKey("FK_SupplierId")]
|
||||
public Supplier? Supplier { get; set; }
|
||||
|
||||
public Guid FK_ReceivedByUserId { get; set; }
|
||||
|
||||
|
||||
@@ -8,14 +8,26 @@ namespace Distribution.Models
|
||||
[ForeignKey("FK_GoodsReceiptId")]
|
||||
public GoodsReceipt GoodsReceipt { get; set; }
|
||||
|
||||
public Guid FK_PurchaseOrderItemId { get; set; }
|
||||
/// <summary>Null for a direct receipt line (no purchase order); FK_ItemId is set instead.</summary>
|
||||
public Guid? FK_PurchaseOrderItemId { get; set; }
|
||||
[ForeignKey("FK_PurchaseOrderItemId")]
|
||||
public PurchaseOrderItem PurchaseOrderItem { get; set; }
|
||||
public PurchaseOrderItem? PurchaseOrderItem { get; set; }
|
||||
|
||||
/// <summary>Set for direct receipt lines. PO-based lines resolve the item through PurchaseOrderItem.</summary>
|
||||
public Guid? FK_ItemId { get; set; }
|
||||
[ForeignKey("FK_ItemId")]
|
||||
public Item? Item { get; set; }
|
||||
|
||||
/// <summary>Added to warehouse stock.</summary>
|
||||
public int AcceptedQuantity { get; set; }
|
||||
|
||||
/// <summary>Damaged/short at receipt, not added to stock.</summary>
|
||||
public int RejectedQuantity { get; set; } = 0;
|
||||
|
||||
/// <summary>Populated when the received item tracks batches and/or expiry dates.</summary>
|
||||
public ICollection<GoodsReceiptItemBatch> Batches { get; set; } = [];
|
||||
|
||||
/// <summary>Populated when the received item tracks serial numbers.</summary>
|
||||
public ICollection<GoodsReceiptItemSerial> Serials { get; set; } = [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Distribution.Models
|
||||
{
|
||||
/// <summary>One row per batch/expiry-lot split within a single GRN line.</summary>
|
||||
public class GoodsReceiptItemBatch : Template
|
||||
{
|
||||
public Guid FK_GoodsReceiptItemId { get; set; }
|
||||
[ForeignKey("FK_GoodsReceiptItemId")]
|
||||
public GoodsReceiptItem GoodsReceiptItem { get; set; }
|
||||
|
||||
public Guid FK_ItemBatchId { get; set; }
|
||||
[ForeignKey("FK_ItemBatchId")]
|
||||
public ItemBatch ItemBatch { get; set; }
|
||||
|
||||
public int Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Distribution.Models
|
||||
{
|
||||
/// <summary>One row per serial number received within a single GRN line.</summary>
|
||||
public class GoodsReceiptItemSerial : Template
|
||||
{
|
||||
public Guid FK_GoodsReceiptItemId { get; set; }
|
||||
[ForeignKey("FK_GoodsReceiptItemId")]
|
||||
public GoodsReceiptItem GoodsReceiptItem { get; set; }
|
||||
|
||||
public Guid FK_ItemSerialNumberId { get; set; }
|
||||
[ForeignKey("FK_ItemSerialNumberId")]
|
||||
public ItemSerialNumber ItemSerialNumber { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user