Example #1
0
        public LineItemModifier(OrderLineVM lineitem, Action onDone = null)
        {
            _lineitem  = lineitem;
            _line      = lineitem._line;
            IsPopup    = true;
            EnableMask = true;
            _onDone    = onDone;
            _quantity  = _lineitem.Quantity;


            _size           = _line.vLineItemsize;
            _spice          = _line.vLineItemspice;
            _cooked         = _line.vLineItemcooked;
            _customComments = _line.vCustomComments;


            if (!string.IsNullOrEmpty(_line.vLineitemaddon))
            {
                var addonpairs = JsonConvert.DeserializeObject <Dictionary <string, decimal> >(_line.vLineitemaddon);

                foreach (var n in Addons)
                {
                    if (addonpairs.ContainsKey(n.Key))
                    {
                        n.IsSelected = true;
                        n.Value      = addonpairs[n.Key];
                    }
                }
            }
        }
Example #2
0
        public virtual void OnDelete(object sender, EventArgs e)
        {
            var mi = ((MenuItem)sender);
            OrderContainerVM <T, U> vm   = this.BindingContext as OrderContainerVM <T, U>;
            OrderLineVM             line = (sender as MenuItem).CommandParameter as OrderLineVM;

            vm.DisableLine(line);
        }
 public async Task <IActionResult> AddOrderLine([FromBody] OrderLineVM vm)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest());
     }
     try
     {
         await _orderService.AddOrderLineAsync(vm.OrderId, vm.ProductId, vm.VariantId);
     }
     catch (ArgumentException)
     {
         return(BadRequest());
     }
     return(Ok());
 }
Example #4
0
        public virtual void OnMoveStart(object sender, EventArgs e)
        {
            var mi = ((MenuItem)sender);
            OrderContainerVM <T, U> vm   = this.BindingContext as OrderContainerVM <T, U>;
            OrderLineVM             line = (sender as MenuItem).CommandParameter as OrderLineVM;

            if (vm != null && line != null && vm.Order.LineForMove == null && line.LineMoveStatus == MoveStatus.Finished)
            {
                line.LineMoveStatus  = MoveStatus.Started;
                vm.Order.LineForMove = line;
                vm.Order.RaiseChanges();
            }
            else if (vm != null && line != null && vm.Order.LineForMove != null && vm.Order.LineForMove.LineMoveStatus == MoveStatus.Started)
            {
                int index = line.Index;
                vm.Order.MoveOutputLine(vm.Order.LineForMove, index, SwipeType.Down);
            }
        }
Example #5
0
        private void AddCustomItem(decimal price, int quantity, string customitemname)
        {
            var cat    = GConfig.POS_Setup.ItemCategories.FirstOrDefault(n => n.vCategoryCode == "custom-cat");
            var catAll = GConfig.POS_Setup.ItemCategories.FirstOrDefault(n => n.vCategoryCode != "custom-cat");

            if (cat == null)
            {
                DateTime date = DateTime.Now;

                var item = new POS_ItemMaster()
                {
                    vItemDesc1 = "Custom Item", dStartDate = date, dEndDate = date
                };                                                                                                  //added var to give editable custom item name SAA.
                cat = new POS_ItemCategory
                {
                    vCategoryCode      = "custom-cat",
                    vStatus            = "hidden",
                    vCategoryShortDesc = "Custom",
                    dEndDt             = date,
                    dStartDt           = date,
                    POS_ItemMasters    = new List <POS_ItemMaster> {
                        item
                    }
                };


                GConfig.POS_Setup.ItemCategories.Add(cat);
                GConfig.DAL.SaveChanges();
            }



            var customitem = cat.POS_ItemMasters.FirstOrDefault(); //Get Normal Custom Item

            //Below code is for custom items can take user defined item description. //Added 5/6/16 //
            if (customitemname != null && customitemname.Trim() != "")
            {
                var customitemSpecial = cat.POS_ItemMasters.Where(n => n.vItemDesc1 == customitemname); //Check if custom name entered is in itemMaster

                if (customitemSpecial.Count() == 0 && customitem.vItemDesc1 != customitemname)
                {
                    Int32 customitemid = cat.POS_ItemMasters.Max(p => p.itemID); //get max itemid of custom items.
                    Int32 ItemMasterid = catAll.POS_ItemMasters.Max(p => p.Id);  //get max of id from itemMaster.

                    ItemMasterid++;
                    if (customitemid == 0)
                    {
                        customitemid = 9000;
                    }
                    else
                    {
                        customitemid++;
                    }
                    if (customitem.vItemDesc1 != customitemname)
                    {
                        DateTime date = DateTime.Now;

                        var item = new POS_ItemMaster()
                        {
                            Id = ItemMasterid, itemID = customitemid, vItemStatus = "hidden", vItemDesc1 = customitemname, dStartDate = date, dEndDate = date
                        };                                                                                                                                                                  //added var to give editable custom item name SAA.
                        cat.POS_ItemMasters.Add(item);
                        GConfig.DAL.SaveChanges();
                        customitem = item;
                    }
                }
                if (customitemSpecial != null)
                {
                    customitem = customitemSpecial.FirstOrDefault();
                }
            }

            //Above code is for custom items can take user defined item description. //Added 5/6/16
            if (customitem != null)
            {
                OrderLineVM line = new OrderLineVM(customitem, Order, new POS_OrderDetails()
                {
                    POS_OrderHeaderId = Order._orderHeader.Id,
                    POS_ItemMasterId  = customitem.Id,

                    fLineItemPrice = price,
                    fOrderQty      = quantity,
                    fLineSubTotal  = price * quantity
                })
                {
                    ItemCreated = true
                };



                Order.OrderLines.Add(line);

                Order.RefreshValues();

                _scroll.ScrollToBottom();
            }
        }
        /// <summary>
        /// Order page
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public async Task <IActionResult> Order(int Id)
        {
            // Get and check user
            var user = _dbHelper.GetUser(_context, User.Identity.Name);

            if (user == null)
            {
                return(RedirectToAction("LogOut", "Account"));
            }

            // Get and check order
            var order = _dbHelper.GetExactOrderByIdToVM(_context, Id);

            if (order == null || order.Lines == null)
            {
                return(RedirectToAction(nameof(Index), new { sm = StateMessage.FailedMissingInfo }));
            }

            var vm = new ExactOrderVM();

            // Check if the order have to be sent or is already sent
            if (!order.IsStoredInExact)
            {
                // Set Exact data
                ExactOnlineConnect.data.Context     = _context;
                ExactOnlineConnect.data.AccessToken = user.Token;
                // TODO: Check if active??

                // Check if items are int exact and if not it neeeds to be created first
                if (!order.ItemsAreInExact)
                {
                    return(RedirectToAction(nameof(ItemsToBeCreatedInExact), new { Id = Id }));
                }

                // Get DB values
                var config = _dbHelper.GetExactConfig(_context, user.ConfigID);

                // Checks if config is correctly saved
                if (config.PaymentConditionId == null)
                {
                    return(RedirectToAction(nameof(Areas.ExactOnline.Controllers.ConfigurationController.Index), new { sm = StateMessage.FailedPaymentConditionMissing }));
                }
                if (config.UserId == null)
                {
                    return(RedirectToAction(nameof(Areas.ExactOnline.Controllers.ConfigurationController.Index), new { sm = StateMessage.FailedOrderCreatorMissing }));
                }

                var items = await ExactOnlineConnect.data.GetItems(user.DivisionId);

                if (items == null)
                {
                    return(RedirectToAction(nameof(Index), new { sm = StateMessage.FailedNoExactConnection }));
                }

                var toBeCreated = new List <Item>();

                vm.Id                 = order.Id;
                vm.Currency           = order.Currency;
                vm.Description        = order.Description;
                vm.Created            = order.Created;
                vm.CreatorId          = user.CreatorId;
                vm.PaymentConditionId = config.PaymentConditionId.ToString();
                vm.Lines              = new List <OrderLineVM>();
                vm.CreatedItems       = toBeCreated.Any() ? toBeCreated
                                        .Select(x => x.Description)
                                        .ToList()
                    :
                                        new List <string>();
                vm.HasBeenSend  = order.IsStoredInExact;
                vm.SupplierName = order.SupplierName;

                // Get alertData
                var messageItems = order.Lines
                                   .Select(y => y.Item)
                                   .Where(y => !y.MessageSeen)
                                   .ToList();

                if (messageItems.Any())
                {
                    vm.CreatedItems = messageItems.Select(y => y.Name).ToList();
                    foreach (var x in messageItems)
                    {
                        var item = _context.ExactItems
                                   .FirstOrDefault(y => y.Id == x.Id);
                        item.MessageSeen = true;
                    }
                    await _context.SaveChangesAsync();
                }
                else
                {
                    vm.CreatedItems = new List <string>();
                }

                foreach (var x in order.Lines)
                {
                    //var item = listItems.FirstOrDefault(y => y.Description == x.Item.Name);

                    var line = new OrderLineVM
                    {
                        Id          = x.Id,
                        AmountDC    = x.AmountDC,
                        Description = x.Description,
                        Item        = new ItemVM
                        {
                            ExactId     = x.Item.ExactId,
                            Name        = x.Item.Name,
                            Code        = x.Item.Code,
                            Description = x.Item.Description,
                        },
                        NetPrice      = x.NetPrice,
                        Project       = x.Project,
                        Quantity      = x.Quantity,
                        ReceiptDate   = x.ReceiptDate,
                        Unit          = x.Unit,
                        VATAmount     = x.VATAmount,
                        VATCode       = x.VATCode,
                        VATPercentage = x.VATPercentage,
                    };
                    vm.Lines.Add(line);
                    vm.StateMessage = StateMessage.SuccessAddedItems;
                }
                ;
            }
            else
            {
                vm.Id                   = order.Id;
                vm.CreatedItems         = new List <string>();
                vm.Currency             = order.Currency;
                vm.Description          = order.Description;
                vm.Created              = order.Created;
                vm.Project              = order.Project;
                vm.Document             = order.Document;
                vm.OrderNumber          = order.OrderNumber;
                vm.CreatorId            = user.CreatorId;
                vm.OrderDate            = order.OrderDate;
                vm.PaymentConditionName = "";
                vm.Lines                = new List <OrderLineVM>();
                vm.IsStoredInExact      = order.IsStoredInExact;
                foreach (var x in order.Lines)
                {
                    var line = new OrderLineVM
                    {
                        Id          = x.Id,
                        AmountDC    = x.AmountDC,
                        Description = x.Description,
                        Item        = new ItemVM
                        {
                            ExactId     = x.Item.ExactId,
                            Name        = x.Item.Name,
                            Code        = x.Item.Code,
                            Description = x.Item.Description,
                        },
                        NetPrice      = x.NetPrice,
                        Project       = x.Project,
                        Quantity      = x.Quantity,
                        ReceiptDate   = x.ReceiptDate,
                        Unit          = x.Unit,
                        VATAmount     = x.VATAmount,
                        VATCode       = x.VATCode,
                        VATPercentage = x.VATPercentage,
                    };
                    vm.Lines.Add(line);
                    vm.StateMessage = StateMessage.WarningNotCreatedYet;
                }
                ;
            }

            return(View(vm));
        }