示例#1
0
        /// <summary>
        /// Создание связей между позициями РЦ и позициями входящих принятых с расхождениями накладных
        /// </summary>
        /// <param name="incomingRows">Список позиций входящих принятых с расхождениями накладных</param>
        /// <param name="priceList">РЦ</param>
        /// <param name="isOnAccountingPriceListStart">Признак: создается ли связь на начало периода действия РЦ</param>
        /// <param name="takingDate">Дата и время связи</param>
        public void CreateTakingFromIncomingDivergenceArticleAvailability(IEnumerable <IncomingWaybillRow> incomingRows, AccountingPriceList priceList, bool isOnAccountingPriceListStart, DateTime takingDate)
        {
            // если создаем связь на конец периода действия РЦ, но дата завершения действия РЦ не установлена - ошибка
            ValidationUtils.Assert(priceList.EndDate != null || isOnAccountingPriceListStart, "Не установлена дата окончания действия реестра цен.");

            foreach (var incomingRow in incomingRows)
            {
                var articleId = incomingRow.Batch.Article.Id;
                var articleAccountingPrice = priceList.ArticlePrices.Where(x => x.Article.Id == articleId).FirstOrDefault();

                if (articleAccountingPrice != null)
                {
                    var taking = new AccountingPriceListWaybillTaking(takingDate, true,
                                                                      articleAccountingPrice.Id, incomingRow.Type, incomingRow.Id, articleId, incomingRow.RecipientStorage.Id, incomingRow.Recipient.Id,
                                                                      articleAccountingPrice.AccountingPrice, isOnAccountingPriceListStart, 0); // для позиций, принятых с расхождениями, в связи указываем 0

                    accountingPriceListWaybillTakingRepository.Save(taking);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Создание связей между позициями РЦ и позициями исходящих проведенных, но не отгруженных/не принятых получателем накладных (Дельта 1-)
        /// </summary>
        /// <param name="outgoingRows">Список позиций исходящих проведенных, но не отгруженных/не принятых получателем накладных</param>
        /// <param name="priceList">РЦ</param>
        /// <param name="isOnAccountingPriceListStart">Признак: создается ли связь на начало периода действия РЦ</param>
        /// <param name="takingDate">Дата и время связи</param>
        public void CreateTakingFromOutgoingAcceptedArticleAvailability(IEnumerable <OutgoingWaybillRow> outgoingRows, AccountingPriceList priceList, bool isOnAccountingPriceListStart, DateTime takingDate)
        {
            // если создаем связь на конец периода действия РЦ, но дата завершения действия РЦ не установлена - ошибка
            ValidationUtils.Assert(priceList.EndDate != null || isOnAccountingPriceListStart, "Не установлена дата окончания действия реестра цен.");

            foreach (var outgoingRow in outgoingRows)
            {
                var articleId = outgoingRow.Batch.Article.Id;
                var articleAccountingPrice = priceList.ArticlePrices.Where(x => x.Article.Id == articleId).FirstOrDefault();

                if (articleAccountingPrice != null)
                {
                    var taking = new AccountingPriceListWaybillTaking(takingDate, false,
                                                                      articleAccountingPrice.Id, outgoingRow.Type, outgoingRow.Id, articleId, outgoingRow.SenderStorage.Id, outgoingRow.Sender.Id,
                                                                      articleAccountingPrice.AccountingPrice, isOnAccountingPriceListStart, outgoingRow.Count);

                    accountingPriceListWaybillTakingRepository.Save(taking);
                }
            }
        }
示例#3
0
        /// <summary>
        /// Создание связей между позициями РЦ и позициями входящих принятых накладных по точному наличию (Дельта 0)
        /// </summary>
        /// <param name="incomingRows">Список позиций входящих принятых накладных</param>
        /// <param name="priceList">РЦ</param>
        /// <param name="isOnAccountingPriceListStart">Признак: создается ли связь на начало периода действия РЦ</param>
        /// <param name="takingDate">Дата и время связи</param>
        public void CreateTakingFromExactArticleAvailability(IEnumerable <IncomingWaybillRow> incomingRows, AccountingPriceList priceList, bool isOnAccountingPriceListStart, DateTime takingDate)
        {
            // если создаем связь на конец периода действия РЦ, но дата завершения действия РЦ не установлена - ошибка
            ValidationUtils.Assert(priceList.EndDate != null || isOnAccountingPriceListStart, "Не установлена дата окончания действия реестра цен.");

            foreach (var incomingRow in incomingRows)
            {
                var articleId = incomingRow.Batch.Article.Id;
                var articleAccountingPrice = priceList.ArticlePrices.Where(x => x.Article.Id == articleId).FirstOrDefault();

                if (articleAccountingPrice != null)
                {
                    var taking = new AccountingPriceListWaybillTaking(takingDate, true,
                                                                      articleAccountingPrice.Id, incomingRow.Type, incomingRow.Id, articleId, incomingRow.RecipientStorage.Id, incomingRow.Recipient.Id,
                                                                      articleAccountingPrice.AccountingPrice, isOnAccountingPriceListStart, incomingRow.AvailableInStorageCount);

                    // для связи типа Дельта_0 можно сразу установить дату осуществления переоценки
                    taking.RevaluationDate = isOnAccountingPriceListStart ? priceList.StartDate : priceList.EndDate.Value;

                    accountingPriceListWaybillTakingRepository.Save(taking);
                }
            }
        }
示例#4
0
 public void Delete(AccountingPriceListWaybillTaking value)
 {
     CurrentSession.Delete(value);
 }
示例#5
0
 public void Save(AccountingPriceListWaybillTaking value)
 {
     CurrentSession.SaveOrUpdate(value);
 }