35 lines
2.0 KiB
C#
35 lines
2.0 KiB
C#
using AyCode.Core.Serializers.Attributes;
|
|
using AyCode.Core.Serializers.Toons;
|
|
using FruitBank.Common.Enums;
|
|
using LinqToDB.Mapping;
|
|
using Mango.Nop.Core.Entities;
|
|
|
|
namespace FruitBank.Common.Entities;
|
|
|
|
[AcBinarySerializable(false, true, false, true, false, false)]
|
|
[Table(Name = FruitBankConstClient.PreOrderDbTableName)]
|
|
[System.ComponentModel.DataAnnotations.Schema.Table(FruitBankConstClient.PreOrderDbTableName)]
|
|
[ToonDescription("Customer advance order placed before the goods physically arrive", Purpose = "Header of a customer pre-order against an upcoming inbound delivery. Pending items are allocated from incoming stock first-come-first-served by PreOrderId when a shipping document confirms arrival, then converted into a real NopCommerce Order once any quantity is fulfilled.")]
|
|
public sealed class PreOrder : MgEntityBase
|
|
{
|
|
public int CustomerId { get; set; }
|
|
public int StoreId { get; set; }
|
|
|
|
[ToonDescription(Purpose = "Requested delivery date. Drives the conversion window (only preorders within PreOrderConversionWindowDays of this date are eligible for allocation) and the expiry sweep — once this date is past, any still-Pending items are Dropped.")]
|
|
public DateTime DateOfReceipt { get; set; }
|
|
|
|
[ToonDescription(Purpose = "Header lifecycle: Pending -> Confirmed (all items Fulfilled) / PartiallyFulfilled (some Dropped or partial, none left Pending) / Cancelled.")]
|
|
public PreOrderStatus Status { get; set; }
|
|
|
|
[ToonDescription(Purpose = "Optional free-text note entered by the customer when placing the preorder.")]
|
|
public string? CustomerNote { get; set; }
|
|
|
|
public DateTime CreatedOnUtc { get; set; }
|
|
public DateTime UpdatedOnUtc { get; set; }
|
|
|
|
[ToonDescription(Purpose = "FK to the real NopCommerce Order created from this preorder. Null until the first item is fulfilled; set once on first conversion and reused so subsequent shipping documents append items to the same order.")]
|
|
public int? OrderId { get; set; }
|
|
|
|
public List<PreOrderItem> PreOrderItems { get; set; } = [];
|
|
}
|