Exemple #1
0
        public bool UpdateSaleDetail(MMS_SaleDetail saleDet)
        {
            var query = from item in dc.MMS_SaleDetail
                        where item.ID == saleDet.ID
                        select item;

            BatchEvaluate.Eval(saleDet, query.First());
            dc.SubmitChanges();
            return(true);
        }
 /// <summary>
 ///   打印销售单
 /// </summary>
 /// <param name="id"> </param>
 /// <param name="isAudit"> </param>
 /// <param name="operatorCode"> </param>
 /// <returns> </returns>
 public bool AuditSale(int id, bool isAudit, string operatorCode)
 {
     using (TransactionScope ts = new TransactionScope()) //开启DTC事务
     {
         TSale           tsale   = dao.GetSale(id);       //取销售单组合实体
         MMS_SaleContent content = tsale.Content;         //取入销售主内容实体
         if (content.AuditFlag == true)                   //如果销售单已审核
         {
             throw new Exception("该单据已经审核" + content.SaleBillCode);
         }
         foreach (TSaleDetail tSaleDetail in tsale.Detail) //遍历销售单货品
         {
             MMS_Store storeParam = new MMS_Store();
             storeParam.Warehouse   = content.WareHouse;
             storeParam.ProductCode = tSaleDetail.DetDetail.ProductCode;
             MMS_Store sto = null;
             //根据仓库、货品代码取库存表中该货品信息
             sto = daoStore.GetStore(storeParam);
             if (sto == null) //库存中没有该商品
             {
                 throw new Exception("库存中没有该商品,不能销售" + tSaleDetail.DetDetail.ProductCode);
             }
             else
             {
                 if (tSaleDetail.DetDetail.Quantity > sto.Quantity) //如果销售数量大于库存数量
                 {
                     throw new Exception("库存数据不足,不能销售" + tSaleDetail.DetDetail.ProductCode);
                 }
                 sto.Quantity -= tSaleDetail.DetDetail.Quantity;             //销售冲减数量
                 sto.Amount   -= tSaleDetail.DetDetail.Quantity * sto.Price; //销售冲减金额
                 if (sto.Quantity > 0)
                 {
                     sto.Price = sto.Amount / sto.Quantity; //生新计算单价
                 }
                 daoStore.UpdateInfo(sto);                  //更新库存表
             }
             //更新成本价
             MMS_SaleDetail saleDet = tSaleDetail.DetDetail;
             saleDet.Cost = sto.Price;
             dao.UpdateSaleDetail(saleDet);
         }
         content.AuditFlag   = isAudit; //设销售单已审核
         content.Operator    = operatorCode;
         content.OperateDate = DateTime.Now;
         dao.UpdateInfo(content);
         ts.Complete(); //提交事务
     }
     return(true);
 }