Ejemplo n.º 1
0
        /// <summary>
        /// 新增采购记录
        /// </summary>
        /// <param name="date">日期</param>
        /// <param name="category">分类</param>
        /// <param name="item">项</param>
        /// <param name="quantity">数量</param>
        /// <param name="unit">单位</param>
        /// <param name="supplier">供应方</param>
        /// <param name="remark">备注</param>
        /// <param name="costs">成本</param>
        /// <param name="creator">创建人</param>
        public void Add(DateTime date, string category, string item, decimal quantity, string unit, string supplier, string remark, Dictionary <string, decimal> costs, string creator)
        {
            using (DbConnection conn = DbHelper.CreateConnection())
            {
                DbTransaction trans = null;
                try
                {
                    conn.Open();
                    trans = conn.BeginTransaction();
                    if (trans == null)
                    {
                        throw new ArgumentNullException("DbTransaction");
                    }

                    Purchase entity = new Purchase();
                    entity.Create(date, category, item, quantity, unit, supplier, remark, creator);

                    foreach (KeyValuePair <string, decimal> cost in costs)
                    {
                        Cost cost1 = new Cost();
                        cost1.Create(entity.Id, CostItemCategory.Purchase, cost.Key, cost.Value);
                        entity.AddCost(cost.Value);
                        this.costRepository.Insert(trans, cost1);
                    }

                    this.purchaseRepository.Insert(trans, entity);

                    trans.Commit();
                }
                catch
                {
                    if (trans != null)
                    {
                        trans.Rollback();
                    }
                    throw;
                }
            }
        }