public PurchaseInvoiceComplex Create(PurchaseInvoiceComplex source)
        {
            #region 取資料


            #endregion

            #region 邏輯驗證
            if (this.IsDataExists(source))
            {
                throw new Exception($"{"InvoiceID".ToLocalized()}:{source.Invoice.InvoiceID} 已經存在!");
            }
            #endregion

            #region 變為Models需要之型別及邏輯資料
            PurchaseInvoice main = GetPurchaseInvoiceOnCreate(source);

            List <PurchaseInvoiceDetail> children = GetChildOnCreate(main, source);
            #endregion

            #region Models資料庫

            this._Repository.Create(main);

            foreach (PurchaseInvoiceDetail item in children)
            {
                this._DetailRepository.Create(item);
            }

            this._UnitOfWork.SaveChange();
            #endregion

            return(this.Get(main.InvoiceID));
        }
        public bool IsDataExists(PurchaseInvoiceComplex info)
        {
            var query = this._Repository
                        .Get(x => x.InvoiceID == info.Invoice.InvoiceID);

            return(query != null);
        }
        public void Delete(PurchaseInvoiceComplex model)
        {
            //#region 取資料
            //Model.PurchaseInvoice query = this.Get(Model.InvoiceID);
            ////var queryoverseastaff = this._overseaService.GetForOverType(query.ID_OverType);
            //#endregion

            //#region 邏輯驗證
            //if (query == null)//沒有資料
            //    throw new Exception("MessageNoData".ToLocalized());

            ////驗證
            ////if (queryoverseastaff == null)//沒有資料
            ////    throw new Exception("MessageDataHasLinking".ToLocalized());
            //#endregion

            //#region 變為Models需要之型別及邏輯資料

            //#endregion

            //#region Models資料庫
            //this._Repository.Delete(query);
            //this._UnitOfWork.SaveChange();
            //#endregion
        }
        private PurchaseInvoice GetPurchaseInvoiceOnUpdate(PurchaseInvoiceComplex source)
        {
            PurchaseInvoice info = Mapper.Map <PurchaseInvoice>(source.Invoice);

            info.LastPerson = IdentityService.GetUserData().UserID;
            info.LastUpdate = DateTime.Now;
            return(info);
        }
        private PurchaseInvoice GetPurchaseInvoiceOnCreate(PurchaseInvoiceComplex source)
        {
            PurchaseInvoice info = Mapper.Map <PurchaseInvoice>(source.Invoice);

            // 取得詢價單號;目前由使用者自型輸入
            info.InvoiceID  = GenerateInvoiceID(info);
            info.LastPerson = IdentityService.GetUserData().UserID;
            info.LastUpdate = DateTime.Now;
            return(info);
        }
Exemplo n.º 6
0
        public ActionResult Create()
        {
            var info = new PurchaseInvoiceComplex()
            {
#if DEBUG
                Invoice = new PurchaseInvoiceViewModel()
                {
                    InvoiceID       = "",
                    InvoiceDate     = DateTime.Today,
                    Title           = "Title",
                    TaxID           = "0".PadLeft(8, '0'), //統一編號
                    TaxLevelID      = TaxLevel.TaxInclude.Value,
                    TaxExcluded     = 10000,
                    TaxIncluded     = 10500,
                    Tax             = 500,
                    DiscountAmount  = 2000,
                    DeductAmount    = 1000,
                    SupplierID      = "888888",
                    AccountMonth    = "1712",
                    InvoiceStatusID = InvoiceStatus.Valid.Value,
                    Remarks         = "Remarks"
                },
                ChildList = new List <PurchaseInvoiceDetailViewModel>()
                {
                    new PurchaseInvoiceDetailViewModel()
                    {
                        SeqNo     = 0,
                        InvoiceID = "",
                        ProductID = "9".PadLeft(20, '9'),
                        Price     = 2000,
                        Qty       = 2,
                        Amount    = 4000,
                        IsDirty   = true
                    },
                    new PurchaseInvoiceDetailViewModel()
                    {
                        SeqNo     = 0,
                        InvoiceID = "",
                        ProductID = "8".PadLeft(20, '8'),
                        Price     = 1000,
                        Qty       = 6,
                        Amount    = 6000,
                        IsDirty   = true
                    },
                }
#endif
            };

            InitViewBag(info);
            InitChildViewBag(null);
            return(View(info));
        }
        public PurchaseInvoiceComplex Get(string id)
        {
            PurchaseInvoiceComplex info = new PurchaseInvoiceComplex();
            var query =
                from u in this._Repository.GetAll()
                join p in this._Company.GetAll() on u.SupplierID equals p.CompanyID into g
                from p in g.DefaultIfEmpty()
                where (u.InvoiceID == id)
                select new PurchaseInvoiceViewModel()
            {
                InvoiceID       = u.InvoiceID,
                InvoiceDate     = u.InvoiceDate,
                Title           = u.Title,
                TaxID           = u.TaxID,
                TaxLevelID      = u.TaxLevelID,
                TaxExcluded     = u.TaxExcluded,
                TaxIncluded     = u.TaxIncluded,
                Tax             = u.Tax,
                DiscountAmount  = u.DiscountAmount,
                DeductAmount    = u.DeductAmount,
                SupplierID      = u.SupplierID,
                AccountMonth    = u.AccountMonth,
                InvoiceStatusID = u.InvoiceStatusID,
                Remarks         = u.Remarks,
                CompanyName     = (p == null) ? "" : p.ShortName
            };

            info.Invoice = query.SingleOrDefault();

            var query2 =
                from u in this._DetailRepository.GetAll()
                join p in this._Product.GetAll() on u.ProductID equals p.ProductID into g
                from p in g.DefaultIfEmpty()
                where (u.InvoiceID == id)
                select new PurchaseInvoiceDetailViewModel()
            {
                SeqNo       = u.SeqNo,
                InvoiceID   = u.InvoiceID,
                ProductID   = u.ProductID,
                Price       = u.Price,
                Qty         = u.Qty,
                Amount      = u.Amount,
                ProductName = (p == null) ? "" : p.ProductName
            };

            info.ChildList = query2.ToList();

            return(info);
        }
Exemplo n.º 8
0
        public ActionResult Create(PurchaseInvoiceComplex info)
        {
            ResultModel result = new ResultModel();

            try
            {
                #region 驗證Model
                if (!ModelState.IsValid)
                {
                    throw new Exception(ModelStateErrorClass.FormatToString(ModelState));
                }

                if (this._PurchaseInvoiceComplexService.IsDataExists(info))
                {
                    ModelState.AddModelError("InvoiceID",
                                             $"{"InvoiceID".ToLocalized()}:{info.Invoice.InvoiceID} 已經存在!");
                    throw new Exception(ModelStateErrorClass.FormatToString(ModelState));
                }

                #endregion

                #region 前端資料變後端用資料ViewModel時用

                #endregion

                #region Service資料庫
                info = this._PurchaseInvoiceComplexService.Create(info);
                #endregion

                #region  息頁面設定
                result.Status      = true;
                result.CloseWindow = false;
                result.Url         = Url.Action("Edit", new { id = info.Invoice.InvoiceID });
                result.Message     = "MessageComplete".ToLocalized();
                #endregion
            }
            catch (Exception ex)
            {
                #region  錯誤時錯誤訊息
                result.Status  = false;
                result.Message = ex.Message.ToString();
                #endregion
            }
            return(Json(result));
        }
Exemplo n.º 9
0
        private void InitViewBag(PurchaseInvoiceComplex info)
        {
            // 公司供應商廠商名稱
            ViewBag.CompanyList =
                new SelectList(this._GlobalService.GetCompanyShortNameList(), "Key", "Value", null);

            // 課稅別
            ViewBag.TaxLevelList =
                new SelectList(TaxLevel.GetAll(), "Value", "Text", null);

            // 營業稅率
            ViewBag.TaxRateList =
                new SelectList(TaxRate.GetAll(), "Value", "Text", null);

            // 狀態
            ViewBag.InvoiceStatusList =
                new SelectList(InvoiceStatus.GetAll(), "Value", "Text", null);
        }
Exemplo n.º 10
0
        public void Update(PurchaseInvoiceComplex source)
        {
            #region 取資料


            #endregion

            #region 邏輯驗證


            #endregion

            #region 變為Models需要之型別及邏輯資料
            PurchaseInvoice main = GetPurchaseInvoiceOnUpdate(source);

            List <PurchaseInvoiceDetail> children = GetChildOnCreate(main, source);
            #endregion

            #region Models資料庫

            this._Repository.Update(main);

            foreach (PurchaseInvoiceDetail item in children)
            {
                if (item.SeqNo == 0)
                {
                    this._DetailRepository.Create(item);
                }
                else
                {
                    this._DetailRepository.Update(item);
                }
            }

            this._UnitOfWork.SaveChange();
            #endregion
        }
Exemplo n.º 11
0
        public ActionResult DeleteConfirmed(PurchaseInvoiceComplex info)
        {
            ResultModel result = new ResultModel();

            try
            {
                #region Service資料庫
                this._PurchaseInvoiceComplexService.Delete(info);
                #endregion

                #region  息頁面設定
                result.Status  = true;
                result.Message = "MessageComplete".ToLocalized();
                #endregion
            }
            catch (Exception ex)
            {
                #region  錯誤時錯誤訊息
                result.Status  = false;
                result.Message = ex.Message.ToString();
                #endregion
            }
            return(Json(result));
        }
Exemplo n.º 12
0
        private List <PurchaseInvoiceDetail> GetChildOnCreate(PurchaseInvoice master, PurchaseInvoiceComplex source)
        {
            List <PurchaseInvoiceDetail> infos = new List <PurchaseInvoiceDetail>();
            var wanted = source.ChildList.Where(x => x.IsDirty == true);

            foreach (var item in wanted)
            {
                PurchaseInvoiceDetail temp = Mapper.Map <PurchaseInvoiceDetail>(item);
                temp.InvoiceID  = master.InvoiceID;
                temp.LastPerson = IdentityService.GetUserData().UserID;
                temp.LastUpdate = DateTime.Now;
                infos.Add(temp);
            }
            return(infos);
        }