public async Task <IHttpActionResult> Put(string id, NvXuatKhacVm.Dto instance) { var result = new TransferObj <NvVatTuChungTu>(); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var check = _service.FindById(instance.Id); if (id != instance.Id || check.TrangThai == (int)ApprovalState.IsComplete) { return(BadRequest()); } try { var item = _service.UpdatePhieu(instance); await _service.UnitOfWork.SaveAsync(); result.Status = true; result.Data = item; return(Ok(result)); } catch (Exception e) { return(InternalServerError()); } }
public async Task <IHttpActionResult> PostApproval(NvXuatKhacVm.Dto instance) { var unitCode = _service.GetCurrentUnitCode(); var chungTu = _service.FindById(instance.Id); if (chungTu == null || chungTu.TrangThai == (int)ApprovalState.IsComplete) { return(NotFound()); } _service.UpdatePhieu(instance); chungTu.TrangThai = (int)ApprovalState.IsComplete; chungTu.NgayDuyetPhieu = CurrentSetting.GetNgayKhoaSo(unitCode); chungTu.ObjectState = ObjectState.Modified; await _service.UnitOfWork.SaveAsync(); switch (_service.Approval(chungTu.Id)) { case StateProcessApproval.NoPeriod: try { await _service.UnitOfWork.SaveAsync(); return(Ok(true)); } catch (Exception e) { return(InternalServerError()); } case StateProcessApproval.Success: try { await _service.UnitOfWork.SaveAsync(); return(Ok(true)); } catch (Exception e) { return(InternalServerError()); } case StateProcessApproval.Failed: break; default: break; } return(BadRequest("Không thể duyệt phiếu này")); }
public async Task <IHttpActionResult> Post(NvXuatKhacVm.Dto instance) { var result = new TransferObj <NvVatTuChungTu>(); try { if (_service.ValidateNgayCT(instance.NgayCT.Value)) { var item = _service.InsertPhieu(instance); await _service.UnitOfWork.SaveAsync(); result.Data = item; result.Status = true; return(CreatedAtRoute("DefaultApi", new { controller = this, id = instance.Id }, result)); } return(InternalServerError()); } catch (Exception e) { return(InternalServerError()); } }
public async Task <IHttpActionResult> GetDetails(string id) { var _ParentUnitCode = _service.GetParentUnitCode(); var result = new TransferObj <NvXuatKhacVm.Dto>(); var temp = new NvXuatKhacVm.Dto(); var phieu = _service.FindById(id); if (phieu != null) { temp = Mapper.Map <NvVatTuChungTu, NvXuatKhacVm.Dto>(phieu); var chiTietPhieu = _service.UnitOfWork.Repository <NvVatTuChungTuChiTiet>().DbSet.Where(x => x.MaChungTuPk == phieu.MaChungTuPk).ToList(); temp.DataDetails = Mapper.Map <List <NvVatTuChungTuChiTiet>, List <NvXuatKhacVm.DtoDetail> >(chiTietPhieu); temp.DataDetails.ForEach( x => { x.CalcResult(); x.GiaVon = x.GiaVon; } ); if (phieu.TrangThai != 10) { decimal sum = 0; List <NvXuatKhacVm.DtoDetail> listDetails = new List <NvXuatKhacVm.DtoDetail>(); var unitCode = _service.GetCurrentUnitCode(); var ky = CurrentSetting.GetKhoaSo(unitCode); var tableName = ProcedureCollection.GetTableName(ky.Year, ky.Period); var MaKho = temp.MaKhoXuat; decimal giaVon = 0; //string kyKeToan = _servicePeriod.GetKyKeToan((DateTime)phieu.NgayCT); foreach (var value in temp.DataDetails) { var sp = _service.UnitOfWork.Repository <MdMerchandisePrice>().DbSet.Where(x => x.MaVatTu.Equals(value.MaHang) && x.MaDonVi.StartsWith(_ParentUnitCode)).FirstOrDefault(); var item = _service.UnitOfWork.Repository <MdMerchandise>().DbSet.Where(x => x.MaVatTu.Equals(value.MaHang) && x.UnitCode.StartsWith(_ParentUnitCode)).FirstOrDefault(); if (sp != null) { value.TyLeVATVao = sp.TyLeVatVao; } if (item != null) { value.TenHang = item.TenHang; } List <MdMerchandiseVm.DataXNT> data = ProcedureCollection.GetDataInventoryByCondition(unitCode, MaKho, value.MaHang, tableName, _ParentUnitCode); if (data.Count > 0) { decimal.TryParse(value.GiaVon.ToString(), out giaVon); value.DonGia = giaVon; value.TyLeVATRa = data[0].TyLeVATRa; value.TyLeVATVao = data[0].TyLeVATVao; value.ThanhTien = value.DonGia * value.SoLuong; sum += (decimal)value.ThanhTien; } listDetails.Add(value); } temp.DataDetails = listDetails; var tyLe = _service.UnitOfWork.Repository <MdTax>().DbSet.Where(x => x.MaLoaiThue == temp.VAT).Select(x => x.TaxRate).FirstOrDefault(); if (tyLe != null) { temp.TienVat = sum * (tyLe / 100); } else { temp.TienVat = 0; } temp.ThanhTienTruocVat = sum; temp.ThanhTienSauVat = temp.ThanhTienTruocVat + temp.TienVat; } result.Data = temp; result.Status = true; return(Ok(result)); } return(NotFound()); }