Example #1
0
        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());
            }
        }
Example #2
0
        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"));
        }
Example #3
0
        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());
            }
        }
Example #4
0
        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());
        }