Привет. Все это моя первая попытка доменного дизайна, поэтому, пожалуйста, потерпите меня
У меня есть два документа в системе Good Receipt
и Goods Issue
.При утверждении этих документов мне необходимо обновить регистр движения запаса. У меня есть следующие правила
Об утверждении поступлений материала.
ВКЛ. Подтверждение отпуска материала
- Проверить остаток на складе
- Добавить строку в движении материала с отрицательным количеством
Ниже приведен мой дизайн, так что
public class MaterialMovementEntity
{
public DateTime MovementDate { get; }
public int Quantity { get; }
public int MaterialId { get; }
public string DocInstanceType { get; }
public int DocInstaanceId { get; set; }
public MaterialMovementEntity(DateTime _MovementDate
, string _Quantity
, string _DocInstanceType
, string _MaterialID
, int _DocInstaanceId)
{
MovementDate = _MovementDate;
MaterialID = _MaterialID;
Quantity = _Quantity;
DocInstanceType = _DocInstanceType;
DocInstaanceId = _DocInstaanceId;
}
public void Stockin()
{
if(quantity<0)
//through Exception invalid quantity
//... other rule check
//Shoudl I place new Average Cost Calculation here
}
public void StockOut()
{
if (quantity>0)
{
//through Exception invalid quantity
}
StockBalance=materialservice.GetCurrentStock(MaterialID);
if(StockBalance<-1*Quantity)
{
//through Exception
}
}
}
In Calling Service
First i prepare movement object then call Stockin And Stock Out
MovementID MaterialID MovementDate Quantity AverageCost DocInstanceID DocInstanceType
1 1 2019-09-28 50 68 1 GR
2 1 2019-09-28 -10 68 1 GI
3 1 2019-09-28 15 63.09 2 GR
Мои запросы
- Где выполнять расчет средней стоимости, является ли он объектом значения или дочерней сущностью
- Поскольку я готовлю движение с перегруженным конструктором, оно готово к сохранению.поэтому я должен удалить stockin и метод Stockout и переместить все правила в конструкторе?
- Должен ли я сделать среднюю стоимость
private set;
и добавить метод для вычисления средней стоимости
Я не использую docinstancetypeв качестве индикатора наличия и отсутствия может появиться больше типов документов, которые выполняют ввод и вывод Столбец средней стоимости также должен быть сохранен в движении материала.но я запутался, как отправить его при создании объекта