Пример #1
0
        public ActionResult Edit(Shippings models)
        {
            bool status = false;

            if (ModelState.IsValid)
            {
                using (ZONYEntities db = new ZONYEntities())
                {
                    if (models.rowid > 0)
                    {
                        //Edit
                        var Shippings = db.Shippings.Where(m => m.rowid == models.rowid).FirstOrDefault();
                        if (Shippings != null)
                        {
                            Shippings.mno    = models.mno;
                            Shippings.mname  = models.mname;
                            Shippings.remark = models.remark;
                        }
                    }
                    else
                    {
                        //Save
                        db.Shippings.Add(models);
                    }
                    db.SaveChanges();
                    status = true;
                }
            }
            return(new JsonResult {
                Data = new { status = status }
            });
        }
Пример #2
0
 public ActionResult Edit(int id = 0)
 {
     using (ZONYEntities db = new ZONYEntities())
     {
         if (id == 0)
         {
             Shippings new_model = new Shippings();
             return(View(new_model));
         }
         var models = db.Shippings.Where(m => m.rowid == id).FirstOrDefault();
         return(View(models));
     }
 }
Пример #3
0
        protected override DocumentInfo ComposeDocument(IUnitOfWork db,
                                                        long companyId,
                                                        MarketType market,
                                                        string marketplaceId,
                                                        IList <string> asinList)
        {
            Log.Info("Get orders");
            var shippingMethodList = db.ShippingMethods.GetAllAsDto().ToList();
            var fromDate           = Time.GetAppNowTime().AddDays(-7);

            var shippingLabels = db.OrderShippingInfos.GetOrdersToFulfillAsDTO(market, marketplaceId)
                                 .Where(sh => sh.ShippingDate > fromDate).ToList();
            var shippingInfoIds = shippingLabels.Select(i => i.Id).ToList();

            Shippings      = db.OrderShippingInfos.GetFiltered(sh => shippingInfoIds.Contains(sh.Id)).ToList();
            shippingLabels = PrepareOrderShippings(db, shippingLabels);

            var mailLabels = db.MailLabelInfos.GetInfosToFulfillAsDTO(market, marketplaceId)
                             .Where(sh => sh.ShippingDate > fromDate).ToList();
            var mailInfoIds = mailLabels.Select(i => i.Id).ToList();

            MailInfoes = db.MailLabelInfos.GetFiltered(m => mailInfoIds.Contains(m.Id)).ToList();
            mailLabels = PrepareMailShippings(db, mailLabels);

            var allShippings = shippingLabels;

            allShippings.AddRange(mailLabels);

            if (asinList != null)
            {
                allShippings = allShippings.Where(sh => asinList.Contains(sh.AmazonIdentifier)).ToList();
            }

            if (allShippings.Any())
            {
                var orderMessages = new List <XmlElement>();
                var index         = 0;
                var merchant      = db.Companies.Get(companyId).AmazonFeedMerchantIdentifier;
                foreach (var shipping in allShippings)
                {
                    index++;
                    Log.Info("add order " + index + ", shippingId=" + shipping.Id);

                    var shippingMethod = shippingMethodList.FirstOrDefault(m => m.Id == shipping.ShippingMethodId);

                    string shippingService = String.Empty;
                    if (string.IsNullOrEmpty(shipping.ShippingService)) //NOTE: this options using Mail Labels, todo: make join
                    {
                        if (shippingMethod != null)
                        {
                            shippingService = shippingMethod.Name;
                        }
                        Log.Info("shipping service=" + shippingService);
                    }
                    else
                    {
                        shippingService = shipping.ShippingService;
                    }

                    OrderHelper.PrepareSourceItemOrderId(shipping.Items);
                    shipping.Items = OrderHelper.GroupBySourceItemOrderId(shipping.Items);

                    var carrier = shippingMethod?.CarrierName;
                    if (!String.IsNullOrEmpty(shipping.CustomCurrier))
                    {
                        carrier = shipping.CustomCurrier;
                    }

                    orderMessages.Add(FeedHelper.ComposeOrderFulfillmentMessage(index,
                                                                                shipping.AmazonIdentifier,
                                                                                shipping.ShippingDate,
                                                                                shipping.OrderDate,
                                                                                ShippingUtils.FormattedToMarketShippingService(shippingService, shippingMethod.IsInternational),
                                                                                shippingMethod != null ? ShippingUtils.FormattedToMarketCurrierName(carrier, shippingMethod.IsInternational, market) : String.Empty,
                                                                                shipping.TrackingNumber,
                                                                                shipping.Items));

                    if (shipping.IsFromMailPage)
                    {
                        MailInfoes.First(m => m.Id == shipping.Id).MessageIdentifier = index;
                    }
                    else
                    {
                        Shippings.First(o => o.Id == shipping.Id).MessageIdentifier = index;
                    }
                }
                Log.Info("Compose feed");
                var document = FeedHelper.ComposeFeed(orderMessages, merchant, Type.ToString());
                return(new DocumentInfo
                {
                    XmlDocument = document,
                    NodesCount = index
                });
            }
            return(null);
        }
        public OrderEditViewModel(IUnitOfWork db,
                                  ILogService log,
                                  DTOOrder order,
                                  IList <ShipmentProviderDTO> shipmentProviders,
                                  bool isFulfilmentUser)
        {
            EntityId      = order.Id;
            Market        = (MarketType)order.Market;
            MarketplaceId = order.MarketplaceId;
            BatchId       = order.BatchId;
            OrderStatus   = order.OrderStatus;

            OrderId          = order.OrderId;
            ExpectedShipDate = order.EarliestShipDate;
            OnHold           = order.OnHold;
            OnHoldUpdateDate = order.OnHoldUpdateDate;
            IsRefundLocked   = order.IsRefundLocked ?? false;

            AddressValidationStatus    = order.AddressValidationStatus;
            IsDismissAddressValidation = order.IsDismissAddressValidation;
            AddressVerifyRequestDate   = order.AddressVerifyRequestDate;

            AttachedToOrderId = order.AttachedToOrderString;

            PersonName         = order.PersonName;
            BuyerEmail         = order.BuyerEmail;
            ShippingAddress1   = order.ShippingAddress1;
            ShippingAddress2   = order.ShippingAddress2;
            ShippingCity       = order.ShippingCity;
            ShippingState      = order.ShippingState;
            ShippingCountry    = order.ShippingCountry;
            ShippingZip        = order.ShippingZip;
            ShippingZipAddon   = order.ShippingZipAddon;
            ShippingPhone      = order.ShippingPhone;
            SourceShippingName = order.InitialServiceType;

            log.Info("OnEditOrder, Id=" + order.Id + " Before GetByOrderIdDto");
            Comments = db.OrderComments.GetByOrderIdDto(order.Id).OrderBy(c => c.CreateDate)
                       .Select(c => new CommentViewModel
            {
                Id            = c.Id,
                Comment       = c.Message,
                Type          = c.Type,
                LinkedEmailId = c.LinkedEmailId,
                CommentDate   = c.CreateDate,
                CommentByName = c.CreatedByName
            }).ToList();
            Comments.ForEach(c =>
            {
                c.OrderNumber = OrderId; //NOTE: for View Email Url (reply button)
            });

            log.Info("OnEditOrder, Id=" + order.Id + " Before GetByOrderIdDto");
            var addressGoogleValidationMessage = db.OrderNotifies.GetAll()
                                                 .OrderByDescending(n => n.CreateDate)
                                                 .FirstOrDefault(n => n.Type == (int)OrderNotifyType.AddressCheckGoogleGeocode &&
                                                                 n.OrderId == order.Id);

            if (addressGoogleValidationMessage != null)
            {
                AddressGoogleValidationMessage = AddressHelper.GeocodeMessageToDisplay(addressGoogleValidationMessage.Message, false);
            }

            log.Info("OnEditOrder, Id=" + order.Id + " Before GetShippingOptions");
            ShippingOptions = OrderViewModel.GetShippingOptions(order.ShippingInfos,
                                                                (MarketType)order.Market,
                                                                order.IsSignConfirmation,
                                                                order.IsInsured,
                                                                isFulfilmentUser,
                                                                showOptionsPrices: false,
                                                                showProviderName: false);
            ShippingProviders = OrderViewModel.GetShippingProviders(shipmentProviders,
                                                                    (MarketType)order.Market,
                                                                    order.MarketplaceId,
                                                                    order.ShippingCountry,
                                                                    order.SourceShippingService,
                                                                    order.OrderType);

            Shippings = order.ShippingInfos.Select(sh => new OrderShippingViewModel(sh)).ToList();

            Packages = Shippings
                       .Where(sh => sh.IsActive)
                       .OrderBy(sh => sh.ShippingInfoId)
                       .Select(p => new PackageViewModel()
            {
                ShippingId    = p.ShippingInfoId,
                PackageLength = p.PackageLength,
                PackageWidth  = p.PackageWidth,
                PackageHeight = p.PackageHeight,
            })
                       .ToList();

            ManuallyShipmentProviderType = order.ShipmentProviderType;

            var shippingGroup = ShippingOptions.FirstOrDefault(x => x.Selected);

            ManuallyShippingGroupId = shippingGroup == null ? null : shippingGroup.Value;
            RequiredPackageSize     = shippingGroup != null && shippingGroup.RequiredPackageSize;

            if (order.IsManuallyUpdated)
            {
                ManuallyPersonName       = order.ManuallyPersonName;
                ManuallyShippingAddress1 = order.ManuallyShippingAddress1;
                ManuallyShippingAddress2 = order.ManuallyShippingAddress2;
                ManuallyShippingCity     = order.ManuallyShippingCity;
                ManuallyShippingState    = order.ManuallyShippingState;
                ManuallyShippingUSState  = order.ManuallyShippingState;
                ManuallyShippingCountry  = order.ManuallyShippingCountry;
                ManuallyShippingZip      = order.ManuallyShippingZip;
                ManuallyShippingZipAddon = order.ManuallyShippingZipAddon;
                ManuallyShippingPhone    = order.ManuallyShippingPhone;
            }
            else
            {
                ManuallyPersonName       = order.PersonName;
                ManuallyShippingAddress1 = order.ShippingAddress1;
                ManuallyShippingAddress2 = order.ShippingAddress2;
                ManuallyShippingCity     = order.ShippingCity;
                ManuallyShippingState    = order.ShippingState;
                ManuallyShippingUSState  = order.ShippingState;
                ManuallyShippingCountry  = order.ShippingCountry;
                ManuallyShippingZip      = order.ShippingZip;
                ManuallyShippingZipAddon = order.ShippingZipAddon;
                ManuallyShippingPhone    = order.ShippingPhone;
            }

            IsManuallyUpdated = order.IsManuallyUpdated;

            IsPrime = order.OrderType == (int)OrderTypeEnum.Prime;

            //InsuredValue = order.TotalPrice;
            InsuredValue       = order.Items.Sum(i => i.ItemPrice);
            IsInsured          = order.IsInsured;
            IsSignConfirmation = order.IsSignConfirmation;

            HasBatchLabel = order.ShippingInfos.Any(sh => !String.IsNullOrEmpty(sh.TrackingNumber));
            Items         = SplitItems(order.Items).ToList();

            if (order.Notifies != null)
            {
                var cancelationRequest =
                    order.Notifies.FirstOrDefault(n => n.Type == (int)OrderNotifyType.CancellationRequest);
                if (cancelationRequest != null)
                {
                    HasCancelationRequest = true;
                }

                var oversoldNotify = order.Notifies.FirstOrDefault(n => n.Type == (int)OrderNotifyType.OversoldItem ||
                                                                   n.Type == (int)OrderNotifyType.OversoldOnHoldItem);
                if (oversoldNotify != null)
                {
                    IsOversold = true;
                }
            }
            log.Info("OnEditOrder, Id=" + order.Id + " End OrderEditViewModel");
        }