Esempio n. 1
0
        public ActionResult GetListTaxStoreIntegrate(string storeId)
        {
            PurchaseOrderModels model = new PurchaseOrderModels();
            var lstTaxV2 = _factoryTax.GetListTaxV2(storeId, null, CurrentUser.ListOrganizationId);

            lstTaxV2 = lstTaxV2.Where(x => x.IsActive).ToList();
            string             Symbol   = GetSymbol(storeId);
            List <POTaxModels> listItem = new List <POTaxModels>();
            int OffSet = 0;

            lstTaxV2.ForEach(x =>
            {
                listItem.Add(new POTaxModels
                {
                    ID       = x.ID,
                    Name     = x.Name,
                    Percent  = x.Percent,
                    TaxType  = x.TaxType,
                    OffSet   = OffSet++,
                    Symbol   = Symbol,
                    sTaxType = (x.TaxType == (int)Commons.ETax.Inclusive) ? "Inclusive" : "Exclusive",
                    Amount   = 0
                });
            });
            model.ListItemTax = listItem;
            return(PartialView("_ListItemTax", model));
        }
Esempio n. 2
0
        public PartialViewResult Edit(string id)
        {
            PurchaseOrderModels model = GetDetail(id);

            model.Symbol = "";
            return(PartialView("_Edit", model));
        }
Esempio n. 3
0
        //===
        //public ActionResult GetTaxInfo(string id)
        //{
        //    var taxDetail = _factoryTax.GetListTaxV2(null, id);
        //    return Json(taxDetail, JsonRequestBehavior.AllowGet);
        //}

        public ActionResult Create()
        {
            PurchaseOrderModels model = new PurchaseOrderModels();

            //model.GetListSupplierFromCompnay(listCompanyId);
            return(View(model));
        }
Esempio n. 4
0
        public ActionResult Edit(PurchaseOrderModels model)
        {
            try
            {
                if (!model.StoreIntegrate)
                {
                    if (model.TaxType == (int)Commons.ETax.AddOn)
                    {
                        if (model.TaxValue < 0 || model.TaxValue > 100)
                        {
                            ModelState.AddModelError("TaxValue", CurrentUser.GetLanguageTextFromKey("Please enter a value greater than or equal to 0 and maximun 100%"));
                        }
                    }
                }
                if (model.DeliveryDate.Date < model.PODate.Date)
                {
                    ModelState.AddModelError("DeliveryDate", CurrentUser.GetLanguageTextFromKey("Delivery date cannot be sooner than PO date"));
                }
                model.ModifierBy   = CurrentUser.Email;
                model.ModifierDate = DateTime.Now;
                if (!ModelState.IsValid)
                {
                    //model = GetDetail(model.Id);
                    var ListSupplierInfo = GetListSuppliers(model.StoreID);
                    var ListSupplier     = new SelectList(ListSupplierInfo, "Id", "Name");
                    model.ListSupplier  = ListSupplier.ToList();
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(PartialView("_Edit", model));
                }
                //====================
                model.ListItem = model.ListItem.Where(x => x.Delete != (int)Commons.EStatus.Deleted).ToList();
                List <string> listItemOnData = _factory.listItemOnData(model.Id);
                var           listIdDelete   = listItemOnData.Where(a => !(model.ListItem.Select(x => x.Id).ToList()).Any(a1 => a1 == a)).ToList();

                string msg    = "";
                var    result = _factory.Update(model, listIdDelete, ref msg);
                if (result)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    //model = GetDetail(model.Id);
                    var ListSupplierInfo = GetListSuppliers(model.StoreID);
                    var ListSupplier     = new SelectList(ListSupplierInfo, "Id", "Name");
                    model.ListSupplier = ListSupplier.ToList();
                    ModelState.AddModelError("StoreID", msg);
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(PartialView("_Edit", model));
                }
            }
            catch (Exception ex)
            {
                _logger.Error("PurchaseOrderEdit: " + ex);
                return(new HttpStatusCodeResult(400, ex.Message));
            }
        }
Esempio n. 5
0
        public ActionResult Export(PurchaseOrderModels model)
        {
            try
            {
                if (model.ListStores == null)
                {
                    ModelState.AddModelError("ListStores", CurrentUser.GetLanguageTextFromKey("Please choose store"));
                    return(View(model));
                }

                XLWorkbook wb    = new XLWorkbook();
                var        wsPO  = wb.Worksheets.Add("PO List");
                var        wsPOD = wb.Worksheets.Add("Ingredient List");
                //var wsPOR = wb.Worksheets.Add("Purchase Order Receipt");

                List <SelectListItem> listStore = (List <SelectListItem>)ViewBag.ListStore;

                model.PODate       = new DateTime(model.PODate.Year, model.PODate.Month, model.PODate.Day, 0, 0, 0);
                model.DeliveryDate = new DateTime(model.DeliveryDate.Year, model.DeliveryDate.Month, model.DeliveryDate.Day, 23, 59, 59);

                StatusResponse response = _factory.Export(ref wsPO, ref wsPOD, /*ref wsPOR,*/ model, listStore, listCompanyId);

                if (!response.Status)
                {
                    ModelState.AddModelError("", response.MsgError);
                    return(View(model));
                }

                ViewBag.wb = wb;
                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();
                Response.Charset         = System.Text.UTF8Encoding.UTF8.WebName;
                Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;
                Response.ContentType     = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", String.Format(@"attachment;filename={0}.xlsx", CommonHelper.GetExportFileName("PurchaseOrder").Replace(" ", "_")));

                using (var memoryStream = new System.IO.MemoryStream())
                {
                    wb.SaveAs(memoryStream);
                    memoryStream.WriteTo(HttpContext.Response.OutputStream);
                    memoryStream.Close();
                }
                HttpContext.Response.End();
                return(RedirectToAction("Export"));
            }
            catch (Exception e)
            {
                _logger.Error("PurchaseOrderExport: " + e);
                ModelState.AddModelError("ListStores", CurrentUser.GetLanguageTextFromKey("Export file have error"));
                return(View(model));
            }
        }
Esempio n. 6
0
        public PartialViewResult View(string id)
        {
            PurchaseOrderModels model = GetDetail(id);

            model.Supplier = new SupplierModels();
            model.Supplier = _Supplierfactory.GetDetail(model.SupplierId);
            model.Symbol   = GetSymbol(model.StoreID);
            model.Store    = new SStoreModels();
            model.Store    = _Storefactory.GetListStores(null, model.StoreID)[0];
            if (model.TaxType == (int)Commons.ETax.Inclusive)
            {
                model.TaxAmountInclusive = string.Format("{0} {1:N2}", model.Symbol, (model.SubTotal - (model.SubTotal / (1 + (model.TaxValue / 100)))));
            }
            //============
            return(PartialView("_View", model));
        }
Esempio n. 7
0
        public PurchaseOrderModels GetPurchaseOrder(long?paramId)
        {
            PurchaseOrderModels po = new PurchaseOrderModels();

            try
            {
                using (var db = new Entities())
                {
                    po = (from b in db.PurchaseOrders
                          join c in db.AddressBooks
                          on b.SupplierAddressId equals c.AddressId
                          join d in db.AddressBooks
                          on b.CustomerAddressId equals d.AddressId
                          where b.Id == paramId
                          select new PurchaseOrderModels
                    {
                        Id = b.Id,
                        POType = b.POType,
                        PaymentTerms = b.PaymentTerms,
                        GrossAmount = b.GrossAmount,
                        Remark = b.Remark,
                        GLDate = b.GLDate,
                        AccountNumber = b.AccountNumber,
                        SupplierAddressId = b.SupplierAddressId,
                        SupplierName = c.Name,
                        CustomerAddressId = b.CustomerAddressId,
                        CustomerName = d.Name,
                        ContractId = b.ContractId,
                        POQuoteId = b.POQuoteId,
                        Description = b.Description,
                        ItemNumber = b.ItemNumber,
                        PONumber = b.PONumber,
                        Unit = b.Unit,
                        Quantity = b.Quantity
                    }).Single <PurchaseOrderModels>();
                }
            }
            catch (Exception ex)
            {
            }

            return(po);
        }
Esempio n. 8
0
 public ActionResult Delete(PurchaseOrderModels model)
 {
     try
     {
         string msg    = "";
         var    result = _factory.Delete(model.Id, ref msg);
         if (!result)
         {
             ModelState.AddModelError("PONumber", msg);
             Response.StatusCode = (int)HttpStatusCode.BadRequest;
             return(PartialView("_Delete", model));
         }
         return(new HttpStatusCodeResult(HttpStatusCode.OK));
     }
     catch (Exception ex)
     {
         _logger.Error("PurchaseOrderDelete: " + ex);
         ModelState.AddModelError("PONumber", CurrentUser.GetLanguageTextFromKey("Have an error when you delete a Purchase Order"));
         Response.StatusCode = (int)HttpStatusCode.BadRequest;
         return(PartialView("_Delete", model));
     }
 }
        //[Authorize]
        // GET: api/PurchaseOrder/5
        public PurchaseOrderModels Get(int id)
        {
            PurchaseOrderModels purchaseOrder = _PurchaseOrderRepository.GetPurchaseOrder(id);

            return(purchaseOrder);
        }
Esempio n. 10
0
        public ActionResult Export()
        {
            PurchaseOrderModels model = new PurchaseOrderModels();

            return(View(model));
        }
Esempio n. 11
0
        public PartialViewResult Delete(string id)
        {
            PurchaseOrderModels model = GetDetail(id);

            return(PartialView("_Delete", model));
        }
Esempio n. 12
0
        public PurchaseOrderModels GetDetail(string id)
        {
            try
            {
                PurchaseOrderModels model = _factory.GetDetail(id, listCompanyId);
                //model.GetListSupplierFromCompnay(listCompanyId);
                var ListSupplierInfo = GetListSuppliers(model.StoreID);
                var ListSupplier     = new SelectList(ListSupplierInfo, "Id", "Name");
                model.ListSupplier = ListSupplier.ToList();
                //--------------
                bool IsIntegrate = false;
                var  objStore    = CurrentUser.listStore.Where(x => x.ID.Equals(model.StoreID)).FirstOrDefault();
                if (objStore != null && !string.IsNullOrEmpty(objStore.ThirdParty.ApiURL))
                {
                    IsIntegrate = objStore.ThirdParty.IsIntegrate;
                }

                List <SelectListItem> listItemTax = new List <SelectListItem>();
                if (IsIntegrate)
                {
                    model.StoreIntegrate = true;
                    //---------------------
                    var lstTaxV2 = _factoryTax.GetListTaxV2(model.StoreID, null, CurrentUser.ListOrganizationId);
                    lstTaxV2 = lstTaxV2.Where(x => x.IsActive).ToList();
                    string             Symbol   = GetSymbol(model.StoreID);
                    List <POTaxModels> listItem = new List <POTaxModels>();
                    int OffSet = 0;
                    lstTaxV2.ForEach(x =>
                    {
                        var amount = model.ListItem.Where(z => z.TaxId.Equals(x.ID)).Sum(z => z.TaxAmount);
                        listItem.Add(new POTaxModels
                        {
                            ID       = x.ID,
                            Name     = x.Name,
                            Percent  = x.Percent,
                            TaxType  = x.TaxType,
                            OffSet   = OffSet++,
                            Symbol   = Symbol,
                            sTaxType = (x.TaxType == (int)Commons.ETax.Inclusive) ? "Inclusive" : "Exclusive",
                            Amount   = Math.Round(amount, 2),
                            IsShow   = amount > 0 ? true : false
                        });

                        //----for Dropdownlist
                        listItemTax.Add(new SelectListItem
                        {
                            Text  = x.Name,
                            Value = x.ID,
                        });
                    });
                    model.ListItemTax = listItem;
                    model.TaxAmount   = Math.Round(model.ListItemTax.Sum(z => z.Amount), 2);
                }
                //--------
                model.ListItem.ForEach(x =>
                {
                    if (!string.IsNullOrEmpty(x.TaxId))
                    {
                        var objTax = model.ListItemTax.Where(z => z.ID.Equals(x.TaxId)).FirstOrDefault();
                        x.TaxName  = objTax != null ? objTax.Name : string.Empty;
                        x.TaxType  = objTax != null ? objTax.TaxType : 0;
                    }
                    //-----
                    x.ListTax   = listItemTax;
                    x.IsShowTax = IsIntegrate;
                });

                return(model);
            }
            catch (Exception ex)
            {
                _logger.Error("PurchaseOrderDetail: " + ex);
                return(null);
            }
        }
Esempio n. 13
0
        public ActionResult Create(PurchaseOrderModels model)
        {
            try
            {
                if (!model.StoreIntegrate)
                {
                    if (model.TaxType == (int)Commons.ETax.AddOn)
                    {
                        if (model.TaxValue < 0 || model.TaxValue > 100)
                        {
                            ModelState.AddModelError("TaxValue", CurrentUser.GetLanguageTextFromKey("Please enter a value greater than or equal to 0 and maximun 100%"));
                        }
                    }
                }
                if (model.DeliveryDate.Date < model.PODate.Date)
                {
                    ModelState.AddModelError("DeliveryDate", CurrentUser.GetLanguageTextFromKey("Delivery date cannot be sooner than PO date"));
                }
                if (!ModelState.IsValid)
                {
                    //model.GetListSupplierFromCompnay(listCompanyId);
                    var ListSupplierInfo = GetListSuppliers(model.StoreID);
                    var ListSupplier     = new SelectList(ListSupplierInfo, "Id", "Name");
                    model.ListSupplier = ListSupplier.ToList();

                    return(View(model));
                }
                //====================
                string msg = "";
                model.CreatedBy    = CurrentUser.Email;
                model.ModifierBy   = CurrentUser.Email;
                model.CreatedDate  = DateTime.Now;
                model.ModifierDate = DateTime.Now;
                model.POStatus     = (int)Commons.EPOStatus.Open;
                model.IsActived    = true;
                //=====
                model.ListItem = model.ListItem.Where(x => x.Delete != (int)Commons.EStatus.Deleted).ToList();
                //---------
                //var objStore = lstStore.Where(ww => ww.Value == model.StoreID).FirstOrDefault();
                var objStore = lstStore.Where(ww => ww.Id == model.StoreID).FirstOrDefault();
                if (objStore != null)
                {
                    //model.StoreName = objStore.Text;
                    model.StoreName = objStore.Name;
                }
                //-----
                bool result = _factory.Insert(model, ref msg);
                if (result)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    //model.GetListSupplierFromCompnay(listCompanyId);
                    var ListSupplierInfo = GetListSuppliers(model.StoreID);
                    var ListSupplier     = new SelectList(ListSupplierInfo, "Id", "Name");
                    model.ListSupplier = ListSupplier.ToList();

                    ModelState.AddModelError("StoreID", msg);
                    return(View(model));
                }
            }
            catch (Exception ex)
            {
                _logger.Error("PurchaseOrderCreate: " + ex);
                return(new HttpStatusCodeResult(400, ex.Message));
            }
        }
Esempio n. 14
0
        public ActionResult AddIngredient(POIngredientViewModels data)
        {
            PurchaseOrderModels model = new PurchaseOrderModels();

            model.ListItem = new List <POIngredient>();
            //--------update
            bool IsIntegrate = false;
            bool _IsShowTax  = false;
            var  objStore    = CurrentUser.listStore.Where(x => x.ID.Equals(data.StoreId)).FirstOrDefault();

            if (objStore != null)
            {
                var objThirdParty = objStore.ThirdParty;
                if (objThirdParty != null && !string.IsNullOrEmpty(objThirdParty.ApiURL))
                {
                    IsIntegrate = objThirdParty.IsIntegrate;
                }
            }
            List <SelectListItem> listItemTax = new List <SelectListItem>();

            if (IsIntegrate)
            {
                _IsShowTax = true;
                var lstTaxV2 = _factoryTax.GetListTaxV2(data.StoreId, null, CurrentUser.ListOrganizationId);
                lstTaxV2 = lstTaxV2.Where(x => x.IsActive).ToList();
                if (lstTaxV2 != null)
                {
                    foreach (Shared.Models.Settings.TaxModels tax in lstTaxV2)
                    {
                        listItemTax.Add(new SelectListItem
                        {
                            Text  = tax.Name,
                            Value = tax.ID,
                        });
                    }
                }
            }
            //--------updated
            foreach (var item in data.ListItemView)
            {
                model.ListItem.Add(new POIngredient
                {
                    Id = item.Id, // Add New

                    IngredientId   = item.IngredientId,
                    IngredientName = item.IngredientName,
                    IngredientCode = item.IngredientCode,
                    Description    = item.Description,

                    IsSelect  = item.IsSelect,
                    Qty       = item.Qty,
                    UnitPrice = item.UnitPrice,
                    Amount    = item.Amount,

                    BaseUOM = item.BaseUOM,

                    IngReceivingQty = item.IngReceivingQty,

                    Delete = item.Delete,
                    //--updated
                    TaxId      = item.TaxId,
                    TaxName    = item.TaxName,
                    TaxType    = item.TaxType,
                    TaxAmount  = item.TaxAmount,
                    TaxPercent = item.TaxPercent,
                    ListTax    = listItemTax,
                    IsShowTax  = _IsShowTax
                });
            }

            return(PartialView("_ListItemNew", model));
        }
Esempio n. 15
0
        public ActionResult CreateReturnNote(ReceiptNoteModels model)
        {
            try
            {
                List <PurchaseOrderModels> _ListPurchaseOrder = new List <PurchaseOrderModels>();
                //_ListPurchaseOrder.InsertRange(0, model.ListPurchaseOrder);
                foreach (var item in model.ListPurchaseOrder)
                {
                    var obj = new PurchaseOrderModels();
                    obj.Additional       = item.Additional;
                    obj.AdditionalReason = item.AdditionalReason;
                    obj.ColorAlert       = item.ColorAlert;
                    obj.CreatedBy        = item.CreatedBy;
                    obj.CreatedDate      = item.CreatedDate;
                    obj.Delete           = item.Delete;
                    obj.DeliveryDate     = item.DeliveryDate;
                    obj.Id            = item.Id;
                    obj.IsActived     = item.IsActived;
                    obj.ListItem      = item.ListItem;
                    obj.ListReceiptPO = item.ListReceiptPO;
                    obj.ListStores    = item.ListStores;
                    obj.ListSupplier  = item.ListSupplier;
                    obj.ListTaxType   = item.ListTaxType;
                    obj.ModifierBy    = item.ModifierBy;
                    obj.ModifierDate  = item.ModifierDate;
                    obj.Note          = item.Note;
                    obj.PODate        = item.PODate;
                    obj.PONumber      = item.PONumber;
                    obj.POStatus      = item.POStatus;
                    obj.Store         = item.Store;
                    obj.StoreID       = item.StoreID;
                    obj.StoreName     = item.StoreName;
                    obj.SubTotal      = item.SubTotal;
                    obj.Supplier      = item.Supplier;
                    obj.SupplierId    = item.SupplierId;
                    obj.SupplierName  = item.SupplierName;
                    obj.Symbol        = item.Symbol;
                    obj.TaxAmount     = item.TaxAmount;
                    obj.TaxType       = item.TaxType;
                    obj.TaxValue      = item.TaxValue;
                    obj.Total         = item.Total;

                    _ListPurchaseOrder.Add(obj);
                }

                model.CreatedBy   = CurrentUser.UserName;
                model.UpdatedBy   = CurrentUser.UserName;
                model.ReceiptBy   = CurrentUser.UserName;
                model.CreatedDate = DateTime.Now;
                model.UpdatedDate = DateTime.Now;
                model.ReceiptDate = DateTime.Now;

                model.ListPurchaseOrder.ForEach(x =>
                {
                    x.ListItem = x.ListItem.Where(z => z.ReturnQty > 0).ToList();
                });
                //==========
                ReturnNoteModels RTmodel = new ReturnNoteModels()
                {
                    ReceiptNoteId = model.Id,
                    CreatedBy     = CurrentUser.UserName,
                    CreatedDate   = DateTime.Now,
                    ModifierBy    = CurrentUser.UserName,
                    ModifierDate  = DateTime.Now,
                    IsActived     = true
                };
                RTmodel.ListPurchaseOrder = model.ListPurchaseOrder.Where(x => x.ListItem.Count > 0).ToList();
                bool   result          = false;
                string msg             = "";
                double qtyCurrentStock = 0;
                bool   isCheck         = true;
                string ingredientName  = string.Empty;

                if (RTmodel.ListPurchaseOrder.Count > 0)
                {
                    foreach (var poDetail in RTmodel.ListPurchaseOrder)
                    {
                        foreach (var item in poDetail.ListItem)
                        {
                            if (item.ReturnQty < 0)
                            {
                                ModelState.AddModelError("error_msg" + item.Id, CurrentUser.GetLanguageTextFromKey("Please, can not input negative number"));
                                break;
                            }
                            if (item.ReturnQty > item.ReceivingQty)
                            {
                                ModelState.AddModelError("error_msg" + item.Id, CurrentUser.GetLanguageTextFromKey("Can not return more than receiving quantity"));
                                break;
                            }
                            ingredientName  = string.Empty;
                            qtyCurrentStock = 0;

                            isCheck = _InventoryFactory.CheckStockForReturn(model.StoreId, item.IngredientId
                                                                            , item.ReturnQty, item.BaseQty, ref qtyCurrentStock, ref ingredientName);

                            if (!isCheck)
                            {
                                ModelState.AddModelError("error_msg" + item.Id, string.Format("[{0}] " + CurrentUser.GetLanguageTextFromKey("is not enough stock to return!"), ingredientName));
                                break;
                            }
                        }
                    }
                    if (!ModelState.IsValid)
                    {
                        model.ListPurchaseOrder = _ListPurchaseOrder;
                        //return PartialView("_CreateReturnNote", model);
                        return(View("_CreateReturnNote", model));
                    }
                    result = _RTFactory.Insert(RTmodel, model.StoreId, ref msg);
                }

                else
                {
                    result = true;
                }
                //===
                if (result)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError("StoreId", msg);
                    return(View("_CreateReturnNote", model));
                }
            }
            catch (Exception ex)
            {
                NSLog.Logger.Error("ReturnNote_Create: ", ex);
                return(new HttpStatusCodeResult(400, ex.Message));
            }
        }