Фондовый Движение Домен Управляемый Дизайн - PullRequest
0 голосов
/ 29 сентября 2019

Привет. Все это моя первая попытка доменного дизайна, поэтому, пожалуйста, потерпите меня

У меня есть два документа в системе 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в качестве индикатора наличия и отсутствия может появиться больше типов документов, которые выполняют ввод и вывод Столбец средней стоимости также должен быть сохранен в движении материала.но я запутался, как отправить его при создании объекта

...