public ResponseDocUpdate DocUpdate([FromBody] RequestDocUpdate request) { try { DocBLL bll = new DocBLL(); return(bll.DocUpdate(request)); } catch (Exception ex) { throw new HttpResponseException( Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message)); } }
public ResponseDocUpdate DocUpdate(RequestDocUpdate request) { ResponseDocUpdate response = new ResponseDocUpdate(); using (cnn = GetConnection()) { var ts = cnn.BeginTransaction(); BalanceBLL balBLL = new BalanceBLL(cnn); try { var user = this.UserInfoGet(request.Token, ts); var doc = cnn.QueryFirst <TKS_FAS_Doc>("select * from TKS_FAS_Doc where id=@Id", new { Id = request.Head.Id }, ts); PeriodBLL period = new PeriodBLL(cnn); bool flag = period.IsPeriodPaid(doc.PeriodId, ts); if (flag) { throw new NormalException("该凭证已经期末结转,无法修改"); } flag = period.IsHasPeriod(doc.PeriodId, ts); if (!flag) { throw new NormalException("该凭证期间非激活状态,无法修改"); } List <TKS_FAS_DocDetail> Detail = cnn.Query <TKS_FAS_DocDetail>("select * from TKS_FAS_DocDetail where parentId=@ParentId", new { ParentId = request.Head.Id }, ts).ToList(); #region 先回滚余额表 Hero.Zhang RequestDocAdd oldDoc = new RequestDocAdd(); oldDoc.Head = doc; oldDoc.Detail = Detail; foreach (var det in oldDoc.Detail) { det.Money_Debit = -1 * det.Money_Debit; det.Money_Credit = -1 * det.Money_Credit; det.Quantity = -1 * det.Quantity; } balBLL.UpdateBalance(oldDoc, ts, user); #endregion string sql = @" delete from TKS_FAS_Doc where id=@Id"; cnn.Execute(sql, request.Head, ts); sql = "delete from TKS_FAS_DocDetail where parentId=@ParentId"; cnn.Execute(sql, new { ParentId = request.Head.Id }, ts); request.Head.Id = request.Head.Id; request.Head.Source = "LR"; var id = Add(new RequestDocAdd { Token = request.Token, Head = request.Head, Detail = request.Detail }, ts, user); #region 更新余额表 Hero.Zhang RequestDocAdd docRequest = new RequestDocAdd(); docRequest.Head = request.Head; docRequest.Detail = request.Detail; docRequest.Type = request.Type; docRequest.TPLId = request.TPLId; docRequest.Key = request.Key; balBLL.UpdateBalance(docRequest, ts, user); #endregion ts.Commit(); response.IsSuccess = true; response.Id = id; response.Message = "更新成功"; return(response); } catch (Exception ex) { ts.Rollback(); return(this.DealException(response, ex) as ResponseDocUpdate); } } }