Пример #1
0
        /// <summary>
        /// Update InvoiceDetail
        /// </summary>
        /// <param name="obj">New InvoiceDetail</param>
        /// <returns></returns>
        public ApiResponseViewModel Update(InvoiceDetail obj)
        {
            var result   = new InvoiceDetailViewModel();
            var response = new ApiResponseViewModel
            {
                Code    = CommonConstants.ApiResponseSuccessCode,
                Message = null,
                Result  = null
            };

            try
            {
                var exists = _InvoiceDetailRepository.CheckContains(m => m.ID == obj.ID);
                if (exists)
                {
                    _InvoiceDetailRepository.Update(obj);
                    _unitOfWork.Commit();
                    response.Message = CommonConstants.SaveSuccess;
                }
                else
                {
                    response.Code    = CommonConstants.ApiResponseNotFoundCode;
                    response.Message = CommonConstants.NotFoundMessage;
                }
            }
            catch (Exception ex)
            {
                response.Code    = CommonConstants.ApiResponseExceptionCode;
                response.Message = CommonConstants.ErrorMessage + " " + ex.Message;
            }

            return(response);
        }
Пример #2
0
        public ActionResult Create(InvoiceDetailViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var invoice = _invoiceMagager.GetById(viewModel.InvoiceId);

            ViewBag.InvoiceId = invoice.Id;

            var detail = invoice.InvoiceDetailById(viewModel.Id);

            if (detail != null)
            {
                ModelState.AddModelError(string.Empty, "Invoice Detail already exists");

                return(View());
            }

            try
            {
                var invoiceDetail = new InvoiceDetail();

                invoiceDetail.Invoice = invoice;
                AutoMapper.Mapper.Map(viewModel, invoiceDetail);
                invoice.AddDetail(invoiceDetail);

                return(RedirectToAction("Index", new { invoiceId = invoice.Id }));
            }
            catch
            {
                return(View());
            }
        }
Пример #3
0
        public async Task <IActionResult> AddInvoiceDetail(InvoiceDetailViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (!(await productService.ReadAsync(model.Product.Value) != null) || model.Amount.Value < 1 || model.Amount.Value > 50)
                {
                    return(RedirectToAction("InvoiceDetail", new { id = model.InvoiceId.Value }).WithDanger("Lỗi", "Thêm chi tiết thất bại"));
                }
                model.Id = Guid.NewGuid();

                model.CreatedDate  = DateTime.Now;
                model.ModifiedDate = DateTime.Now;

                model.UnitPrice  = (await productService.ReadAsync(model.Product.Value)).UnitPrice;
                model.TotalPrice = model.UnitPrice * model.Amount;

                var currentInvoice = await invoiceService.ReadAsync(model.InvoiceId.Value);

                currentInvoice.TotalPrice += model.UnitPrice;
                await invoiceDetailService.CreateAsync(model);



                return(RedirectToAction("InvoiceDetail", new { id = currentInvoice.Id }).WithSuccess("Thành công", "Thêm chi tiết hóa đơn thành công"));
            }

            ViewBag.Product   = productService.GetAll();
            ViewBag.InvoiceId = model.InvoiceId.Value;
            return(RedirectToAction("AddInvoiceDetail", new { id = model.InvoiceId.Value }).WithDanger("Lỗi", "Thêm chi tiết hóa đơn thất bại"));
        }
Пример #4
0
        public void Update(InvoiceDetailViewModel model)
        {
            var entity = mapper.Map(model, new InvoiceDetail());

            invoiceDetailRepository.Update(entity);
            invoiceDetailRepository.SaveChanges();
        }
Пример #5
0
        public async Task UpdateAsync(InvoiceDetailViewModel model)
        {
            var entity = mapper.Map(model, new InvoiceDetail());

            invoiceDetailRepository.Update(entity);
            await invoiceDetailRepository.SaveChangesAsync();
        }
Пример #6
0
        public PartialViewResult AddItem(int sequence, string companyCode, string pymItems)
        {
            InvoiceService service = new InvoiceService();
            InvoiceDetailViewModel invoiceItemModel = service.InitialItem(sequence,companyCode,pymItems);

            return PartialView("~/Views/Invoice/InvoiceItemDetail.cshtml", invoiceItemModel);

        }
        public InvoiceDetailViewModel Add(InvoiceDetailViewModel InvoiceDetailViewModel)
        {
            var invoiceDetail = Mapper.Map <InvoiceDetailViewModel, InvoiceDetail>(InvoiceDetailViewModel);

            _invoiceDetailRepository.Add(invoiceDetail);
            _unitOfWork.Commit();
            return(InvoiceDetailViewModel);
        }
Пример #8
0
        public ActionResult Order()
        {
            InvoiceDetailViewModel NewData = new InvoiceDetailViewModel();

            ViewData["Receipts"]      = db.Receipts.Where(p => p.IsEnabled == true).ToList();
            ViewData["InvoiceDetail"] = db.InvoiceDetail.ToList();

            return(View(NewData));
        }
Пример #9
0
        public async Task CreateAsync(InvoiceDetailViewModel model)
        {
            var entity = mapper.Map(model, new InvoiceDetail());

            invoiceDetailRepository.Add(entity);
            await invoiceDetailRepository.SaveChangesAsync();

            dataAccess.AddInvoiceTotalPrice(entity.InvoiceId.Value, entity.TotalPrice.Value);
        }
Пример #10
0
        private void ShowInvoice(List <Invoice> data, string title)
        {
            var vm   = new InvoiceDetailViewModel(data, title);
            var page = new InvoiceDetailView()
            {
                BindingContext = vm
            };

            Shell.Current.Navigation.PushAsync(page);
        }
Пример #11
0
        /// <summary>
        /// Gets the new row for the invoice.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <returns></returns>
        public JsonResult GetRow(int id)
        {
            ViewBag.CurrentItemID = id;
            InvoiceDetailViewModel invoiceDetail = new InvoiceDetailViewModel(new InvoiceDetail());

            invoiceDetail.Id = id;

            var rowView = RenderView("DetaiInvoicelRow", invoiceDetail);

            return(Json(new { rowId = id, rowData = rowView }, JsonRequestBehavior.AllowGet));
        }
Пример #12
0
        public void Update(InvoiceDetailViewModel InvoiceDetailViewModel)
        {
            var temp = _invoiceDetailRepository.FindById(InvoiceDetailViewModel.KeyId);

            if (temp != null)
            {
                temp.BookFK    = InvoiceDetailViewModel.BookFK;
                temp.SubTotal  = InvoiceDetailViewModel.SubTotal;
                temp.InvoiceFK = InvoiceDetailViewModel.InvoiceFK;
            }
        }
Пример #13
0
        // GET: InvoiceDetail/Edit/5
        public ActionResult Edit(long id, long invoiceId)
        {
            var invoice = _invoiceMagager.GetById(invoiceId);
            var detail  = invoice.GetDetail().First(x => x.Id == id);

            var viewModel = new InvoiceDetailViewModel();

            AutoMapper.Mapper.Map(detail, viewModel);

            return(View(viewModel));
        }
Пример #14
0
        /// <summary>
        /// Get all Invoice
        /// </summary>
        /// <returns></returns>
        public ApiResponseViewModel Filter(string fromDate, string toDate)
        {
            var result   = new List <InvoiceDetailViewModel>();
            var response = new ApiResponseViewModel
            {
                Code    = CommonConstants.ApiResponseSuccessCode,
                Message = null,
                Result  = null
            };

            try
            {
                var invoiceDetails = _InvoiceDetailRepository.GetMulti(m => m.IsActive == true);
                var fromDateValue  = !string.IsNullOrEmpty(fromDate) ? DateTime.Parse(fromDate) : DateTime.Now;
                var toDateValue    = !string.IsNullOrEmpty(toDate) ? DateTime.Parse(toDate) : DateTime.Now;
                foreach (var idetail in invoiceDetails)
                {
                    var invoice = _InvoiceRepository.GetMulti(
                        m => m.IsActive == true &&
                        m.ID == idetail.InvoiceID &&
                        (m.CreatedDate >= fromDateValue) &&
                        (m.CreatedDate <= toDateValue)
                        //&& (string.IsNullOrEmpty(fromDate.Trim()) || m.CreatedDate >= fromDateValue)
                        //&& (string.IsNullOrEmpty(toDate.Trim()) || m.CreatedDate <= toDateValue)
                        ).FirstOrDefault();
                    if (invoice != null)
                    {
                        var obj = new InvoiceDetailViewModel
                        {
                            ID          = invoice.ID,
                            InvoiceCode = invoice.InvoiceCode,
                            CreateDate  = invoice.CreatedDate.ToShortDateString(),
                            CustomerID  = int.Parse(invoice.CustomerID.ToString()),
                            Customer    = _CustomerRepository.GetSingleById(int.Parse(invoice.CustomerID.ToString())).CustomerName,
                            Category    = idetail.Category.CategoryName,
                            InOut       = invoice.InOut ?? false,
                            Status      = invoice.Status,
                            Value       = decimal.Parse(idetail.Value.ToString()).ToString("###,##"),
                            IsActive    = idetail.IsActive ?? false,
                            TaxValue    = idetail.TaxValue.Value.ToString()
                                          //InvoiceDetails = _InvoiceDetailRepository.GetListInvoiceDetailsByInvoiceID(idetail.ID)
                        };
                        result.Add(obj);
                    }
                }
                response.Result = result;
            }
            catch (Exception ex)
            {
                response.Code    = CommonConstants.ApiResponseExceptionCode;
                response.Message = CommonConstants.ErrorMessage + " " + ex.Message;
            }
            return(response);
        }
        public ActionResult Create(InvoiceDetailViewModel viewModel)
        {
            this.FillDataSourceInvoice(AutoMapper.Mapper.Map <InvoiceViewModel>(_manager.GetById(viewModel.InvoiceId)));
            if (!ModelState.IsValid)
            {
                return(View("Create", viewModel));
            }

            _manager.GetById(viewModel.InvoiceId).AddDetail(AutoMapper.Mapper.Map <InvoiceDetail>(viewModel));

            return(RedirectToAction("Detail", "Invoice", new { id = viewModel.InvoiceId }));
        }
        public static InvoiceDetailViewModel ConvertToViewModel(InvoiceDetail dbModel)
        {
            var viewModel = new InvoiceDetailViewModel
            {
                Id       = dbModel.Id,
                product  = ProductDto.FromModel(dbModel.product),
                invoice  = InvoiceDto.FromModel(dbModel.invoice),
                Quantity = dbModel.Quantity,
                Price    = dbModel.Price
            };

            return(viewModel);
        }
Пример #17
0
        public ActionResult Details(long?id)
        {
            var invoice   = invoiceService.GetById(id ?? 0) ?? new Invoice();
            var viewModel = new InvoiceDetailViewModel
            {
                Invoice  = invoice,
                Currency = currencyService.GetById(invoice.CurrencyId ?? 0) ?? new Currency(),
                Customer = customerService.GetById(invoice.CustomerId ?? 0) ?? new Customer(),
                Branch   = branchService.GetById(LogedInUser.BranchId ?? 0)
            };

            return(View(viewModel));
        }
Пример #18
0
        /// <summary>
        /// Get InvoiceDetail by invoice id
        /// </summary>
        /// <param name="id">ID of Invoice</param>
        /// <returns></returns>
        public ApiResponseViewModel GetByInvoiceId(int id)
        {
            var lstResult = new List <InvoiceDetailViewModel>();
            var response  = new ApiResponseViewModel
            {
                Code    = CommonConstants.ApiResponseSuccessCode,
                Message = null,
                Result  = null
            };

            try
            {
                var exists  = _InvoiceDetailRepository.CheckContains(m => m.InvoiceID == id);
                var invoice = _invoiceRepository.GetSingleById(id);
                if (exists)
                {
                    var lst = _InvoiceDetailRepository.GetMulti(m => m.InvoiceID == id && m.IsActive == true).ToList();
                    foreach (var tempResult in lst)
                    {
                        var result = new InvoiceDetailViewModel();
                        result.ID           = tempResult.ID;
                        result.InvoiceID    = tempResult.InvoiceID;
                        result.Value        = decimal.Parse(tempResult.Value.ToString()).ToString("###,##");
                        result.IsActive     = tempResult.IsActive ?? false;
                        result.DepartmentID = tempResult.DepartmentID;
                        result.Department   = tempResult.Department != null ? tempResult.Department.DepartmentName : "";
                        result.CategoryID   = tempResult.CategoryID;
                        result.Category     = tempResult.Category != null ? tempResult.Category.CategoryName : "";
                        result.TaxValueID   = tempResult.TaxValueID;
                        result.TaxValue     = tempResult.TaxValue != null?tempResult.TaxValue.Value.ToString() : "";

                        lstResult.Add(result);
                    }
                    response.Result = lstResult;
                }
                else
                {
                    response.Code    = CommonConstants.ApiResponseNotFoundCode;
                    response.Message = CommonConstants.NotFoundMessage;
                }
            }
            catch (Exception ex)
            {
                response.Code    = CommonConstants.ApiResponseExceptionCode;
                response.Message = CommonConstants.ErrorMessage + " " + ex.Message;
            }

            return(response);
        }
        public InvoiceViewModel GetByInvoiceId(string invoiceId)
        {
            InvoiceViewModel invoiceViewModel            = new InvoiceViewModel();
            List <InvoiceDetailViewModel> lstDetailModel = new List <InvoiceDetailViewModel>();
            InvoiceDetailViewModel        detailModel;

            var result = _invoiceRepository.GetByInvoiceId(invoiceId);

            invoiceViewModel.InvoiceId            = result.InvoiceId;
            invoiceViewModel.CompanyId            = result.CompanyId;
            invoiceViewModel.Date                 = result.Date;
            invoiceViewModel.BillingContactName   = result.BillingContactName;
            invoiceViewModel.ShippingContactName  = result.ShippingContactName;
            invoiceViewModel.ShippingCompanyName  = result.ShippingCompanyName;
            invoiceViewModel.ShippingAddressLine1 = result.ShippingAddressLine1;
            invoiceViewModel.ShippingAddressLine2 = result.ShippingAddressLine2;
            invoiceViewModel.ShippingCity         = result.ShippingCity;
            invoiceViewModel.ShippingState        = result.ShippingState;
            invoiceViewModel.ShippingZipcode      = result.ShippingZipcode;
            invoiceViewModel.ShippingCountry      = result.ShippingCountry;
            invoiceViewModel.ShippingPhone        = result.ShippingPhone;
            invoiceViewModel.ShippingEmail        = result.ShippingEmail;
            invoiceViewModel.SubTotal             = result.SubTotal;
            invoiceViewModel.Discount             = result.Discount;
            invoiceViewModel.GrandTotal           = result.GrandTotal;
            invoiceViewModel.TaxRate              = result.TaxRate;
            invoiceViewModel.TaxAmount            = result.TaxAmount;
            invoiceViewModel.ShippingCharges      = result.ShippingCharges;
            invoiceViewModel.Balance              = result.Balance;
            invoiceViewModel.Remarks              = result.Remarks;

            foreach (var temp in result.InvoiceDetails)
            {
                detailModel = new InvoiceDetailViewModel();
                detailModel.InvoiceDetailId = temp.InvoiceDetailId;
                detailModel.InvoiceId       = temp.InvoiceId;
                detailModel.Description     = temp.Description;
                detailModel.Price           = temp.Price;
                detailModel.Quantity        = temp.Quantity;
                detailModel.Total           = temp.Total;
                lstDetailModel.Add(detailModel);
            }

            invoiceViewModel.lstInvoiceDetails = lstDetailModel;

            return(invoiceViewModel);
        }
        public InvoiceDetailViewModel GetDetail(int?id)
        {
            InvoiceViewModel           invoice       = FindById(id);
            List <DetailLineViewModel> detailLines   = _detailLineBusinessLogic.FindByInvoice(invoice);
            InvoiceDetailViewModel     invoiceDetail = new InvoiceDetailViewModel()
            {
                Invoice     = invoice,
                DetailLines = detailLines,
                TotalAmount = GetTotalAmount(detailLines),
                Discount    = GetDiscount(detailLines),
                VAT         = GetVAT(detailLines),
                FinalTotal  = GetTotalPrice(detailLines)
            };

            invoiceDetail.Customer = _customerBusinessLogic.FindById(invoice.CustomerId);
            return(invoiceDetail);
        }
Пример #21
0
        /// <summary>
        /// Hàm để ánh xạ từ lớp InvoiceDetailViewModel sang lớp InvoiceDetail
        /// </summary>
        /// <returns>InvoiceDetail</returns>
        /// Người tạo: ntxuan (20/6/2019)
        public InvoiceDetail MapInvoiceDetaiViewModelToInvoiceDetail(InvoiceDetailViewModel invoiceDetailViewModel)
        {
            var invoiceDetail = new InvoiceDetail();

            // Ánh xạ các thuộc tính tương ứng
            invoiceDetail.InvoiceDetailID    = invoiceDetailViewModel.InvoiceDetailID;
            invoiceDetail.InvoiceID          = invoiceDetailViewModel.InvoiceID;
            invoiceDetail.ProductName        = invoiceDetailViewModel.ProductName;
            invoiceDetail.SKU                = invoiceDetailViewModel.SKU;
            invoiceDetail.Unit               = invoiceDetailViewModel.Unit;
            invoiceDetail.Storage            = invoiceDetailViewModel.Storage;
            invoiceDetail.UnitPrice          = invoiceDetailViewModel.UnitPrice;
            invoiceDetail.DiscountPercentage = invoiceDetailViewModel.DiscountPercentage;
            invoiceDetail.TaxPercentage      = invoiceDetailViewModel.TaxPercentage;
            invoiceDetail.Quantity           = invoiceDetailViewModel.Quantity;

            return(invoiceDetail);
        }
Пример #22
0
        public async Task <IActionResult> View(int Id)
        {
            Invoice invoice = _invoiceRepository.GetInvoice(Id);

            RentalAsset rentalAsset = await _rentalAssetRepository.GetItemByIdAsync(invoice.RentalAssetId);

            var vm = new InvoiceDetailViewModel
            {
                InvoiceId           = invoice.InvoiceId,
                RentalAssetLocation = rentalAsset.Location,
                RentalAssetName     = rentalAsset.Name,
                RentalAssetPrice    = rentalAsset.Price,
                LeaseFrom           = invoice.LeaseFrom,
                LeaseTo             = invoice.LeaseTo,
                AmountPaid          = invoice.AmountPaid
            };

            return(View(vm));
        }
        public ActionResult Update(InvoiceDetailViewModel viewModel)
        {
            this.FillDataSourceInvoice(AutoMapper.Mapper.Map <InvoiceViewModel>(_manager.GetById(viewModel.InvoiceId)));
            if (!ModelState.IsValid)
            {
                return(View("Update", viewModel));
            }

            var invoiceDb = _manager.GetById(viewModel.InvoiceId);

            if (invoiceDb == null)
            {
                return(View("InvoiceError", new InvoiceErrorViewModel {
                    Message = "The invoice detail that you looking for doesnt exist."
                }));
            }

            AutoMapper.Mapper.Map(viewModel, invoiceDb.GetDetail().FirstOrDefault(d => d.Id == viewModel.Id));

            return(RedirectToAction("Detail", "Invoice", new { id = viewModel.InvoiceId }));
        }
Пример #24
0
        public ActionResult Edit(InvoiceDetailViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            try
            {
                var invoice = _invoiceMagager.GetById(viewModel.InvoiceId);
                var detail  = invoice.InvoiceDetailById(viewModel.Id);

                AutoMapper.Mapper.Map(viewModel, detail);

                return(RedirectToAction("Index", new { invoiceId = invoice.Id }));
            }
            catch
            {
                return(View());
            }
        }
Пример #25
0
        /// <summary>
        /// Hàm dùng để ánh xạ từ lớp InvoiceDetail sang InvoiceDetailViewModel
        /// </summary>
        /// <param name="invoice">Hóa đơn</param>
        /// <returns>InvoiceDetailViewModel</returns>
        /// Người tạo: ntxuan (20/6/2019)
        public InvoiceDetailViewModel MapInvoiceDetailToInvoiceDetailViewModel(InvoiceDetail invoiceDetail)
        {
            var invoiceDetailViewModel = new InvoiceDetailViewModel();

            invoiceDetailViewModel.InvoiceDetailID    = invoiceDetail.InvoiceDetailID;
            invoiceDetailViewModel.InvoiceID          = invoiceDetail.InvoiceID;
            invoiceDetailViewModel.ProductName        = invoiceDetail.ProductName;
            invoiceDetailViewModel.SKU                = invoiceDetail.SKU;
            invoiceDetailViewModel.Unit               = invoiceDetail.Unit;
            invoiceDetailViewModel.Storage            = invoiceDetail.Storage;
            invoiceDetailViewModel.UnitPrice          = invoiceDetail.UnitPrice;
            invoiceDetailViewModel.DiscountPercentage = invoiceDetail.DiscountPercentage;
            invoiceDetailViewModel.TaxPercentage      = invoiceDetail.TaxPercentage;
            invoiceDetailViewModel.Quantity           = invoiceDetail.Quantity;
            invoiceDetailViewModel.Money              = (double)invoiceDetail.Quantity * (double)invoiceDetail.UnitPrice;
            invoiceDetailViewModel.DiscountMoney      = invoiceDetailViewModel.Money * (double)invoiceDetail.DiscountPercentage * 0.01;
            invoiceDetailViewModel.TaxMoney           = (invoiceDetailViewModel.Money - invoiceDetailViewModel.DiscountMoney) * (double)invoiceDetail.TaxPercentage * 0.01;
            invoiceDetailViewModel.PaidMoney          = invoiceDetailViewModel.Money - invoiceDetailViewModel.DiscountMoney + invoiceDetailViewModel.TaxMoney;

            return(invoiceDetailViewModel);
        }
Пример #26
0
        /// <summary>
        /// Make InvoiceDetail in-active by Id
        /// </summary>
        /// <param name="id">ID of InvoiceDetail</param>
        /// <returns></returns>
        public ApiResponseViewModel SetInActive(int id)
        {
            var result   = new InvoiceDetail();
            var response = new ApiResponseViewModel
            {
                Code    = CommonConstants.ApiResponseSuccessCode,
                Message = null,
                Result  = null
            };

            try
            {
                var exists = _InvoiceDetailRepository.CheckContains(m => m.ID == id);
                if (exists)
                {
                    result          = _InvoiceDetailRepository.GetSingleById(id);
                    result.IsActive = false;
                    _InvoiceDetailRepository.Update(result);
                    _unitOfWork.Commit();
                    response.Message = CommonConstants.DeleteSuccess;

                    var temp = new InvoiceDetailViewModel();
                    temp.ID         = result.ID;
                    temp.InvoiceID  = result.InvoiceID;
                    response.Result = temp;
                }
                else
                {
                    response.Code    = CommonConstants.ApiResponseNotFoundCode;
                    response.Message = CommonConstants.NotFoundMessage;
                }
            }
            catch (Exception ex)
            {
                response.Code    = CommonConstants.ApiResponseExceptionCode;
                response.Message = CommonConstants.ErrorMessage + " " + ex.Message;
            }
            return(response);
        }
Пример #27
0
        // For saving detail data
        public JsonResult SetInvoiceDetailsListForSave_org(List <InvoiceDetailViewModel> lstInvoiceDetails)
        {
            var strMessage = string.Empty;

            // Clear detail list
            Session["lstInvoiceDetails"] = null;

            try
            {
                List <InvoiceDetailViewModel> list = new List <InvoiceDetailViewModel>();
                var invoiceModel = new InvoiceModel();

                // Add new detail information
                foreach (var item in lstInvoiceDetails)
                {
                    InvoiceDetailViewModel entityModel = new InvoiceDetailViewModel();

                    entityModel.InvoiceId = item.InvoiceId;
                    entityModel.ProductId = item.ProductId;
                    entityModel.UnitPrice = item.UnitPrice;
                    //entityModel.SalesQTY = item.SalesQTY;
                    //entityModel.TP = entityModel.SalesTP * item.SalesQTY;
                    list.Add(entityModel);
                }

                Session["lstInvoiceDetails"] = list;
                return(Json(invoiceModel, JsonRequestBehavior.AllowGet));
                //strMessage = Boolean.TrueString;
            }
            catch (Exception ex)
            {
                strMessage = CommonExceptionMessage.GetExceptionMessage(ex, CommonAction.Save);
            }

            return(Json(new { strMessage = strMessage }));
        }
Пример #28
0
        public JsonResult GetPaymentTerm(Guid invoiceId, Guid customerId, DateTime invoiceDate, bool isChangeCustomer)
        {
            var cashbookId = UserContext.GetCurrentCashbookId();

            var invoice = (invoiceId as Guid?).HasRealValue() ? _invoiceQueryService.GetInvoiceById(invoiceId) : null;

            var contact = _contactsQueryService.GetContactDetail(cashbookId, customerId);

            var isCustomer = contact == null || contact.IsCustomer;

            Guid paymentTermId = contact == null ? Guid.Empty : contact.TermId.GetValueOrDefault(Guid.Empty);

            var paymmentTerms = _paymentTermQueryService.GetPaymentTerms(cashbookId,
                                                                         customerId,
                                                                         isCustomer,
                                                                         !isCustomer)
                                .Where(p => p.IsActive).ToList();

            PaymentTermDetail paymentTerm;

            //Set default paymentterm to cashbook's default
            PaymentTermDetail defaultPaymentTerm = paymmentTerms.FirstOrDefault(p => p.IsDefault);

            if (isChangeCustomer)
            {
                if (paymentTermId != Guid.Empty)
                {
                    paymentTerm = _paymentTermQueryService.GetPaymentTermById(paymentTermId);
                    if (paymentTerm.IsActive)
                    {
                        paymentTerm.TermName += PAYMENTTERM_EXTRA;
                    }
                    else
                    {
                        paymentTerm = new PaymentTermDetail();
                    }
                }
                else
                {
                    paymentTerm = defaultPaymentTerm ?? new PaymentTermDetail();
                }
            }
            else
            {
                var invoiceViewModel = new InvoiceDetailViewModel(invoice, _cashbookSettings, CountrySettings, _cashbookQueryService, _companyQueryService);
                if (invoiceViewModel.PaymentTermId == null)
                {
                    if (paymentTermId != Guid.Empty)
                    {
                        paymentTerm = _paymentTermQueryService.GetPaymentTermById(paymentTermId);
                        //If customer has a paymentterm then set customer's paymentterm as default
                        if (paymentTerm.IsActive)
                        {
                            defaultPaymentTerm = paymentTerm;
                        }
                    }
                    else
                    {
                        paymentTerm = defaultPaymentTerm ?? new PaymentTermDetail();
                    }
                }
                else
                {
                    paymentTerm = _paymentTermQueryService.GetPaymentTermById(invoiceViewModel.PaymentTermId.Value);
                }
            }

            if (defaultPaymentTerm != null)
            {
                var selectedPayment = paymmentTerms.FirstOrDefault(p => p.PaymentTermId == (defaultPaymentTerm.PaymentTermId));
                if (selectedPayment != null)
                {
                    selectedPayment.TermName += PAYMENTTERM_EXTRA;
                }
            }

            DateTime paymentDueDate = DateTime.MinValue;

            if (invoice != null && paymentTerm != null)
            {
                paymentDueDate = _paymentTermQueryService.GetPaymentTermDueDate(cashbookId,
                                                                                paymentTerm.PaymentTermId,
                                                                                invoice.InvoiceDate,
                                                                                UserContext.LoginName);
            }
            else
            {
                if (invoiceDate != DateTime.MinValue && paymentTerm != null)
                {
                    paymentDueDate = _paymentTermQueryService.GetPaymentTermDueDate(cashbookId,
                                                                                    paymentTerm.PaymentTermId,
                                                                                    invoiceDate,
                                                                                    UserContext.LoginName);
                }
            }

            DateTime?dueDate = null;

            if (paymentDueDate != DateTime.MinValue)
            {
                dueDate = paymentDueDate;
            }

            var creditLimit = _contactsQueryService.GetAvailableCreditLimit(new AvailableCreditLimitRequest()
            {
                CashbookID          = cashbookId,
                CustomerSupplierID  = customerId,
                IsCustomer          = isCustomer,
                ExcludesTransaction = true,
                TransactionID       = Guid.Empty,
                TransactionType     = CreditTransactionType.NotSet
            });

            // Return data using Newtonsoft.Net so dates will be in ISO 8601 format.
            return(new JsonNetResult()
            {
                Data = new PaymentTermInfo()
                {
                    HasCreditLimit = creditLimit.HasCreditLimit,
                    AvailableBalance = creditLimit.AvailableCredit,
                    CustomerCreditLimit = creditLimit.CreditLimit,
                    PaymentDueDate = dueDate,
                    PaymentTerm = paymentTerm,
                    PaymentTerms = paymmentTerms
                }
            });
        }
Пример #29
0
        public InvoiceDetailPage()
        {
            InitializeComponent();

            BindingContext = new InvoiceDetailViewModel();
        }
        public ActionResult Index(FormCollection invoice)
        {
            InvoiceViewModel model = new InvoiceViewModel();

            try
            {
                model.CompanyId            = Convert.ToString(invoice["CompanyId"]);
                model.InvoiceId            = string.Format("{0}-{1}-{2}", model.CompanyId, DateTime.Now.ToString("yyMMdd"), DateTime.Now.ToString("hhmm"));
                model.Date                 = Convert.ToDateTime(invoice["Date"]);
                model.BillingContactName   = Convert.ToString(invoice["BillingContactName"]);
                model.ShippingContactName  = Convert.ToString(invoice["ShippingContactName"]);
                model.ShippingCompanyName  = Convert.ToString(invoice["ShippingCompanyName"]);
                model.ShippingAddressLine1 = Convert.ToString(invoice["ShippingAddressLine1"]);
                model.ShippingAddressLine2 = Convert.ToString(invoice["ShippingAddressLine2"]);
                model.ShippingCity         = Convert.ToString(invoice["ShippingCity"]);
                model.ShippingState        = Convert.ToString(invoice["ShippingState"]);
                model.ShippingZipcode      = Convert.ToInt32(invoice["ShippingZipcode"]);
                model.ShippingCountry      = Convert.ToString(invoice["ShippingCountry"]);
                model.ShippingPhone        = Convert.ToString(invoice["ShippingPhone"]);
                model.ShippingEmail        = Convert.ToString(invoice["ShippingEmail"]);
                model.SubTotal             = Convert.ToDecimal(invoice["SubTotal"]);
                model.Discount             = Convert.ToDecimal(invoice["Discount"]);
                model.GrandTotal           = Convert.ToDecimal(invoice["GrandTotal"]);
                model.TaxRate              = Convert.ToDecimal(invoice["TaxRate"]);
                model.TaxAmount            = Convert.ToDecimal(invoice["TaxAmount"]);
                model.ShippingCharges      = Convert.ToDecimal(invoice["ShippingCharges"]);
                model.Balance              = Convert.ToDecimal(invoice["Balance"]);
                model.Remarks              = Convert.ToString(invoice["Remarks"]);

                string[] Description = Convert.ToString(invoice["Description"]).Split(',');
                string[] Price       = Convert.ToString(invoice["Price"]).Split(',');
                string[] Quantity    = Convert.ToString(invoice["Quantity"]).Split(',');
                string[] Total       = Convert.ToString(invoice["Total"]).Split(',');

                List <InvoiceDetailViewModel> lstDetailsModel = new List <InvoiceDetailViewModel>();
                InvoiceDetailViewModel        detailModel;

                for (int i = 0; i < Description.Count(); i++)
                {
                    detailModel           = new InvoiceDetailViewModel();
                    detailModel.InvoiceId = model.InvoiceId;
                    if (Convert.ToString(Description[i]) == null || string.IsNullOrEmpty(Convert.ToString(Description[i])))
                    {
                        continue;
                    }
                    detailModel.Description = Convert.ToString(Description[i]);
                    detailModel.Price       = Convert.ToDecimal(Price[i]);
                    detailModel.Quantity    = Convert.ToInt32(Quantity[i]);
                    detailModel.Total       = Convert.ToDecimal(Total[i]);
                    lstDetailsModel.Add(detailModel);
                }

                model.lstInvoiceDetails = lstDetailsModel;
            }
            catch
            {
                ModelState.AddModelError(string.Empty, "An error ocurred while processing data. Please make sure right format of data has been provided in all fields");
            }
            try
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri("https://localhost:44343/api/invoice/");
                    var postTask = client.PostAsJsonAsync <InvoiceViewModel>("PostNewInvoice", model);
                    postTask.Wait();

                    var result = postTask.Result;
                    if (result.IsSuccessStatusCode)
                    {
                        var readTask = result.Content.ReadAsAsync <string>();
                        readTask.Wait();

                        ModelState.Clear();
                        ViewBag.Message = string.Format("{0} - {1}", "Invoice has been inserted successfully. Invoice Number", model.InvoiceId);
                        return(View());
                    }
                }

                ModelState.AddModelError(string.Empty, "An error ocurred. Please try again later/contact administrator.");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, "An error ocurred. Please try again later/contact administrator.");
            }

            return(View());
        }