示例#1
0
 /// <summary>
 /// 保存表单(新增、修改)
 /// </summary>
 /// <param name="keyValue">主键值</param>
 /// <param name="entity">实体对象</param>
 /// <returns></returns>
 public void SaveForm(string keyValue, Sales_ContractEntity entity, List <Sales_Contract_ItemEntity> entryList)
 {
     try
     {
         service.SaveForm(keyValue, entity, entryList);
     }
     catch (Exception)
     {
         throw;
     }
 }
示例#2
0
        /// <summary>
        /// 保存表单(新增、修改)
        /// </summary>
        /// <param name="keyValue">主键值</param>
        /// <param name="entity">实体对象</param>
        /// <param name="entryList">明细对象</param>
        /// <returns></returns>
        public void SaveForm(string keyValue, Sales_ContractEntity entity, List <Sales_Contract_ItemEntity> entryList)
        {
            IRepository db = this.BaseRepository().BeginTrans();

            try
            {
                if (!string.IsNullOrEmpty(keyValue))
                {
                    //主表
                    entity.Modify(keyValue);
                    db.Update(entity);

                    //明细
                    db.Delete <Sales_Contract_ItemEntity>(t => t.ContractId.Equals(keyValue));

                    foreach (Sales_Contract_ItemEntity item in entryList)
                    {
                        item.Create();
                        item.ContractId = entity.Id;
                        db.Insert(item);
                        //出库才减库存
                        if (entity.Status == 1)
                        {
                            MinusWareGoods(db, item);
                        }
                    }
                }
                else
                {
                    //主表
                    entity.Create();
                    db.Insert(entity);

                    //出库再操作,初始化余量主表
                    if (entity.Status == 1)
                    {
                        Sale_CustomerEntity saleCustomer = db.FindEntity <Sale_CustomerEntity>(t => t.CustomerId.Equals(entity.CustomerId));

                        if (saleCustomer != null)
                        {
                            saleCustomer.SumTotalAmount = saleCustomer.SumTotalAmount + entity.TotalAmount;
                            saleCustomer.SumTotalCount  = saleCustomer.SumTotalCount + entity.TotalCount;
                            saleCustomer.ModifyUserId   = entity.UserId;
                            saleCustomer.ModifyUserName = entity.UserName;
                            saleCustomer.Modify(saleCustomer.CustomerId);
                            db.Update(saleCustomer);
                        }
                        else
                        {
                            Sale_CustomerEntity saleCustomerEntity = new Sale_CustomerEntity()
                            {
                                CustomerId      = entity.CustomerId,
                                CustomerCompany = entity.CustomerCompany,
                                SumTotalAmount  = entity.TotalAmount,
                                SumTotalCount   = entity.TotalCount,
                                CreateUserId    = entity.UserId,
                                CreateUserName  = entity.UserName,
                            };
                            saleCustomerEntity.Create();
                            db.Insert(saleCustomerEntity);
                        }
                    }



                    //明细
                    int sort = 0;
                    foreach (Sales_Contract_ItemEntity item in entryList)
                    {
                        item.Sort = sort++;
                        item.Create();
                        item.ContractId = entity.Id;
                        db.Insert(item);
                        //出库才减库存
                        if (entity.Status == 1)
                        {
                            //出库才减库存
                            MinusWareGoods(db, item);

                            #region 余量信息
                            //出库才初始化余量子表
                            Sale_Customer_ItemEntity saleCustomerItem = db.FindEntity <Sale_Customer_ItemEntity>(t => t.CustomerId.Equals(entity.CustomerId) && t.ProductId.Equals(item.ProductId));
                            //商品已经进过一次货,在上次进货基础上累加总进货量
                            if (saleCustomerItem != null)
                            {
                                saleCustomerItem.UnitPrice = item.UnitPrice;
                                saleCustomerItem.SumAmount = saleCustomerItem.SumAmount + item.Amount;
                                saleCustomerItem.SumCount  = saleCustomerItem.SumCount + item.Count;
                                saleCustomerItem.Modify(saleCustomerItem.Id);
                                db.Update(saleCustomerItem);
                            }
                            else
                            {
                                //第一次进货,新增此商品
                                Sale_Customer_ItemEntity saleCustomerItemEntity = new Sale_Customer_ItemEntity()
                                {
                                    CustomerId  = entity.CustomerId,
                                    ProductId   = item.ProductId,
                                    ProductCode = item.ProductCode,
                                    ProductName = item.ProductName,
                                    UnitPrice   = item.UnitPrice,
                                    SumAmount   = item.Amount,
                                    SumCount    = item.Count,
                                    Sort        = item.Sort,
                                };
                                saleCustomerItemEntity.Create();
                                db.Insert(saleCustomerItemEntity);
                            }

                            #endregion
                        }
                    }
                    //占用单据号
                    coderuleService.UseRuleSeed(SystemInfo.CurrentModuleId, db);
                }
                db.Commit();
            }
            catch (Exception ex)
            {
                db.Rollback();
                throw;
            }
        }