Example #1
0
        public AmazonLog Add(AmazonLogType type, AmazonLogStatus status, Exception elmahError, MarketplaceWebService.Model.Error amazonError,
            AmazonApiSection? apiSection, string apiOperation, AmazonOrder amazonOrder, AmazonListing amazonListing, AmazonListingGroup amazonListingGroup,
            string message = "", string details = "")
        {
            var log = new AmazonLog
                          {
                              LogType = type,
                              LogStatus = status,
                              AmazonOrder = amazonOrder,
                              ApiSection = apiSection,
                              ApiOperation = !String.IsNullOrWhiteSpace(apiOperation) ? apiOperation : null,
                              AmazonListing = amazonListing,
                              AmazonListingGroup = amazonListingGroup,
                              Message = !String.IsNullOrWhiteSpace(message) ? message : null,
                              Detail = !String.IsNullOrWhiteSpace(details) ? details : null,
                              Site = CurrentRequestData.CurrentSite
                          };
            log.SetGuid(Guid.NewGuid());
            if (elmahError != null)
            {
                log.Message = elmahError.Message;
                log.Detail = elmahError.StackTrace;
            }
            if (amazonError != null)
            {
                log.ErrorCode = amazonError.Code;
                log.ErrorType = amazonError.Type;
                log.Message = amazonError.Message;
                log.Detail = amazonError.Detail.ToString();
            }

            return Save(log);
        }
Example #2
0
        public void Delete(AmazonOrder item)
        {
            _amazonLogService.Add(AmazonLogType.Orders, AmazonLogStatus.Delete, 
                null, null, null, null, item, null, null, "Amazon Order #" + item.AmazonOrderId);

            _session.Transact(session => session.Delete(item));
        }
Example #3
0
 public void SaveOrUpdate(AmazonOrder amazonOrder)
 {
     var orderId = amazonOrder.AmazonOrderId;
     var id = amazonOrder.Id;
     _session.Transact(session => session.SaveOrUpdate(amazonOrder));
     _amazonLogService.Add(AmazonLogType.Orders, id>0?AmazonLogStatus.Update:AmazonLogStatus.Insert, 
         null, null, null, null, amazonOrder, null, null,"Amazon Order #"+orderId);
 }
        public AmazonOrder SetAmazonOrderItems(IEnumerable<OrderItem> rawOrderItems, AmazonOrder amazonOrder)
        {
            foreach (var rawOrderItem in rawOrderItems)
                _validateAmazonOrderService.SetAmazonOrderItem(ref amazonOrder, rawOrderItem);

            amazonOrder.Order = _validateAmazonOrderService.GetOrder(amazonOrder);

            return amazonOrder;
        }
Example #5
0
 public bool Update(AmazonOrder amazonOrder, Order order)
 {
     if (amazonOrder.Status == AmazonOrderStatus.Unshipped)
     {
         var shippingAddress = _validateAmazonOrderService.GetAmazonOrderAddress(order);
         _validateAmazonOrderService.SetShippingAddress(amazonOrder, shippingAddress);
     }
     return true;
 }
        public void AmazonOrderService_GetByAmazonOrderId_ShouldReturnPersistedEntryFromSession()
        {
            var item = new AmazonOrder() { AmazonOrderId = "T1" };
            Session.Transact(session => session.Save(item));

            var results = _amazonOrderService.GetByAmazonOrderId("T1");

            results.As<AmazonOrder>().Id.Should().Be(1);
        }
        public void AmazonOrderService_Update_ShouldUpdateInSession()
        {
            var item = new AmazonOrder();
            Session.Transact(session => session.Save(item));
            item.BuyerName = "T1";

            _amazonOrderService.Update(item);
            Session.Evict(item);

            Session.Get<AmazonOrder>(1).BuyerName.Should().Be("T1");
        }
Example #8
0
        public bool Update(AmazonOrder amazonOrder, Order order)
        {
            if (amazonOrder.Status == AmazonOrderStatus.Unshipped && order.OrderStatus == OrderStatusEnum.Canceled)
            {
                amazonOrder.Status = AmazonOrderStatus.Canceled;
                _amazonOrderService.Update(amazonOrder);

                _orderService.Cancel(amazonOrder.Order);
            }
            return true;
        }
        public void AmazonOrderService_Update_ShouldCallAddLog()
        {
            var item = new AmazonOrder(){AmazonOrderId = "1"};
            Session.Transact(session => session.Save(item));

            _amazonOrderService.Update(item);

            A.CallTo(() => _amazonLogService.Add(AmazonLogType.Orders, AmazonLogStatus.Update,
                                 null, null, null, null, item, null, null,
                                 "Amazon Order #" + item.AmazonOrderId,string.Empty)
                                  ).MustHaveHappened();
        }
Example #10
0
        public bool Update(AmazonOrder amazonOrder, Order order)
        {
            if (amazonOrder.Id == 0 || (amazonOrder.Status != AmazonOrderStatus.Shipped &&
                                        amazonOrder.Status != AmazonOrderStatus.Canceled))
            {
                var shippingAddress = _validateAmazonOrderService.GetAmazonOrderAddress(order);
                _validateAmazonOrderService.GetAmazonOrderDetails(order, ref amazonOrder, shippingAddress);
            }

            amazonOrder.NumberOfItemsShipped = order.NumberOfItemsShipped;
            amazonOrder.Status = order.OrderStatus.GetEnumByValue<AmazonOrderStatus>();
            return true;
        }
        public void SetAmazonOrderItem(ref AmazonOrder amazonOrder, OrderItem rawOrderItem)
        {
            AmazonOrderItem item =
                amazonOrder.Items.SingleOrDefault(x => x.AmazonOrderItemId == rawOrderItem.OrderItemId);
            if (item != null)
                item.QuantityShipped = rawOrderItem.QuantityShipped;
            else
            {
                AmazonOrderItem orderItem = GetAmazonOrderItem(amazonOrder, rawOrderItem);

                amazonOrder.Items.Add(orderItem);
            }
        }
Example #12
0
        public void AmazonOrder_ShippingAmount_ShouldBeSumOfShippingPriceAmount()
        {
            var item1 = A.Fake<AmazonOrderItem>();
            var item2 = A.Fake<AmazonOrderItem>();
            A.CallTo(() => item1.ShippingPriceAmount).Returns(10);
            A.CallTo(() => item2.ShippingPriceAmount).Returns(20);
            var amazonOrder = new AmazonOrder()
            {
                Items = new List<AmazonOrderItem> { item1, item2 }
            };

            var result = amazonOrder.ShippingAmount;

            result.Should().Be(30);
        }
Example #13
0
        public void AmazonOrder_ItemTax_ShouldBeSumOfItemTaxAmount()
        {
            var item1 = A.Fake<AmazonOrderItem>();
            var item2 = A.Fake<AmazonOrderItem>();
            A.CallTo(() => item1.ItemTaxAmount).Returns(10);
            A.CallTo(() => item2.ItemTaxAmount).Returns(20);
            var amazonOrder = new AmazonOrder()
            {
                Items = new List<AmazonOrderItem> { item1, item2 }
            };

            var result = amazonOrder.ItemTax;

            result.Should().Be(30);
        }
Example #14
0
        private bool ProcessOrder(Order order, ref AmazonOrder amazonOrder, bool newOrder)
        {
            foreach (var update in _amazonUpdates.OrderBy(updates => updates.Order))
            {
                if (!update.Update(amazonOrder, order))
                    return false;
            }

            _amazonOrderService.SaveOrUpdate(amazonOrder);

            if (newOrder)
                foreach (var orderPlaced in _onAmazonOrderPlaceds)
                    orderPlaced.OnAmazonOrderPlaced(amazonOrder);

            return true;
        }
Example #15
0
 public bool Update(AmazonOrder amazonOrder, Order order)
 {
     if (amazonOrder.Items.Any())
         return true;
     try
     {
         var orderItems = _amazonOrdersApiService.ListOrderItems(amazonOrder.AmazonOrderId);
         _importAmazonOrderService.SetAmazonOrderItems(orderItems, amazonOrder);
         return true;
     }
     catch (Exception exception)
     {
         CurrentRequestData.ErrorSignal.Raise(exception);
         return false;
     }
 }
 public void GetAmazonOrderDetails(Order rawOrder, ref AmazonOrder order, AddressData shippingAddress)
 {
     order.AmazonOrderId = !String.IsNullOrWhiteSpace(rawOrder.AmazonOrderId)
         ? rawOrder.AmazonOrderId
         : String.Empty;
     order.BuyerEmail = !String.IsNullOrWhiteSpace(rawOrder.BuyerEmail) ? rawOrder.BuyerEmail : String.Empty;
     order.BuyerName = !String.IsNullOrWhiteSpace(rawOrder.BuyerName) ? rawOrder.BuyerName : String.Empty;
     order.PurchaseDate = TimeZoneInfo.ConvertTime(rawOrder.PurchaseDate, TimeZoneInfo.Utc,
         CurrentRequestData.TimeZoneInfo);
     order.PaymentMethod = rawOrder.PaymentMethod.GetEnumByValue<AmazonPaymentMethod>();
     order.SalesChannel = !String.IsNullOrWhiteSpace(rawOrder.SalesChannel)
         ? rawOrder.SalesChannel
         : String.Empty;
     order.OrderType = !String.IsNullOrWhiteSpace(rawOrder.OrderType) ? rawOrder.OrderType : String.Empty;
     order.OrderTotalAmount = (rawOrder.OrderTotal != null && rawOrder.OrderTotal.Amount != null)
         ? Decimal.Parse(rawOrder.OrderTotal.Amount, (new CultureInfo("en-GB", false)))
         : 0;
     order.OrderCurrency = (rawOrder.OrderTotal != null && rawOrder.OrderTotal.Amount != null)
         ? rawOrder.OrderTotal.CurrencyCode
         : String.Empty;
     order.MarketplaceId = !String.IsNullOrWhiteSpace(rawOrder.MarketplaceId)
         ? rawOrder.MarketplaceId
         : String.Empty;
     order.ShipServiceLevel = !String.IsNullOrWhiteSpace(rawOrder.ShipServiceLevel)
         ? rawOrder.ShipServiceLevel
         : String.Empty;
     order.ShipmentServiceLevelCategory = !String.IsNullOrWhiteSpace(rawOrder.ShipmentServiceLevelCategory)
         ? rawOrder.ShipmentServiceLevelCategory
         : String.Empty;
     SetShippingAddress(order, shippingAddress);
     order.NumberOfItemsUnshipped = rawOrder.NumberOfItemsUnshipped;
     order.NumberOfItemsShipped = rawOrder.NumberOfItemsShipped;
     order.FulfillmentChannel = rawOrder.FulfillmentChannel.GetEnumByValue<AmazonFulfillmentChannel>();
     order.LastUpdatedDate = TimeZoneInfo.ConvertTime(rawOrder.LastUpdateDate, TimeZoneInfo.Utc,
         CurrentRequestData.TimeZoneInfo);
 }
Example #17
0
 public void MarkAsShipped(AmazonOrder amazonOrder)
 {
     amazonOrder.Status = AmazonOrderStatus.Shipped;
     SaveOrUpdate(amazonOrder);
 }
 private Ecommerce.Entities.Orders.Order GetOrderDetails(AmazonOrder amazonOrder)
 {
     return new Ecommerce.Entities.Orders.Order
     {
         ShippingAddress = amazonOrder.ShippingAddress,
         BillingAddress = amazonOrder.ShippingAddress,
         PaymentMethod = amazonOrder.PaymentMethod.GetDescription(),
         PaidDate = amazonOrder.PurchaseDate,
         Total = amazonOrder.OrderTotalAmount,
         TotalPaid = amazonOrder.OrderTotalAmount,
         Subtotal = amazonOrder.ItemAmount,
         DiscountAmount = amazonOrder.ItemDiscountAmount,
         ShippingTax = amazonOrder.ShippingTax,
         ShippingTotal = amazonOrder.ShippingTotal,
         OrderEmail = amazonOrder.BuyerEmail,
         IsCancelled = false,
         SalesChannel = AmazonApp.SalesChannel,
         PaymentStatus = PaymentStatus.Paid,
         CreatedOn =
             amazonOrder.PurchaseDate.HasValue ? (DateTime)amazonOrder.PurchaseDate : CurrentRequestData.Now
     };
 }
 private void GetOrderLines(AmazonOrder amazonOrder, ref Ecommerce.Entities.Orders.Order order)
 {
     foreach (AmazonOrderItem amazonOrderItem in amazonOrder.Items)
     {
         var orderLine = new OrderLine
         {
             Order = order,
             UnitPrice =
                 amazonOrderItem.QuantityOrdered > 0
                     ? (amazonOrderItem.ItemPriceAmount / amazonOrderItem.QuantityOrdered)
                     : 0,
             Price = amazonOrderItem.ItemPriceAmount,
             Name = amazonOrderItem.Title,
             Tax = amazonOrderItem.ItemTaxAmount,
             Discount = amazonOrderItem.PromotionDiscountAmount,
             Quantity = Decimal.ToInt32(amazonOrderItem.QuantityOrdered),
             SKU = amazonOrderItem.SellerSKU
         };
         order.OrderLines.Add(orderLine);
         _session.Transact(session => session.Save(orderLine));
     }
 }
Example #20
0
        public void AmazonOrder_ShippingTotal_ShouldBeSumOShippingAmountShippingTaxMinusShippingDiscountAmount()
        {
            var item1 = A.Fake<AmazonOrderItem>();
            A.CallTo(() => item1.ShippingPriceAmount).Returns(10);
            A.CallTo(() => item1.ShippingTaxAmount).Returns(10);
            A.CallTo(() => item1.ShippingDiscountAmount).Returns(10);
            var amazonOrder = new AmazonOrder()
            {
                Items = new List<AmazonOrderItem> { item1 }
            };

            var result = amazonOrder.ShippingTotal;

            result.Should().Be(10);
        }
Example #21
0
        public void AmazonOrder_Tax_ShouldBeSumOfItemTaxShippingTaxGiftWrapTax()
        {
            var item1 = A.Fake<AmazonOrderItem>();
            A.CallTo(() => item1.ItemTaxAmount).Returns(10);
            A.CallTo(() => item1.ShippingTaxAmount).Returns(10);
            A.CallTo(() => item1.GiftWrapTaxAmount).Returns(10);
            var amazonOrder = new AmazonOrder()
            {
                Items = new List<AmazonOrderItem> { item1 }
            };

            var result = amazonOrder.Tax;

            result.Should().Be(30);
        }
Example #22
0
 public FileStream GetOrderFulfillmentFeed(AmazonOrder order)
 {
     return _amazonGenerateFeedContentService.GetSingleFeed(_amazonGenerateFeedContentService.GetOrderFulfillment(order),
         AmazonEnvelopeMessageType.OrderFulfillment, null);
 }
 private AmazonOrderItem GetAmazonOrderItem(AmazonOrder amazonOrder, OrderItem rawOrderItem)
 {
     Currency currency = _ecommerceSettings.Currency();
     return new AmazonOrderItem
     {
         ASIN = !String.IsNullOrWhiteSpace(rawOrderItem.ASIN) ? rawOrderItem.ASIN : String.Empty,
         AmazonOrder = amazonOrder,
         AmazonOrderItemId =
             !String.IsNullOrWhiteSpace(rawOrderItem.OrderItemId) ? rawOrderItem.OrderItemId : String.Empty,
         Title = !String.IsNullOrWhiteSpace(rawOrderItem.Title) ? rawOrderItem.Title : String.Empty,
         SellerSKU =
             !String.IsNullOrWhiteSpace(rawOrderItem.SellerSKU) ? rawOrderItem.SellerSKU : String.Empty,
         Condition =
             !String.IsNullOrWhiteSpace(rawOrderItem.ConditionId)
                 ? rawOrderItem.ConditionId.GetEnumByValue<AmazonListingCondition>()
                 : AmazonListingCondition.New,
         ConditionSubtype =
             !String.IsNullOrWhiteSpace(rawOrderItem.ConditionSubtypeId)
                 ? rawOrderItem.ConditionSubtypeId.GetEnumByValue<AmazonListingCondition>()
                 : AmazonListingCondition.New,
         GiftWrapPriceAmount =
             (rawOrderItem.GiftWrapPrice != null && rawOrderItem.GiftWrapPrice.Amount != null)
                 ? Decimal.Parse(rawOrderItem.GiftWrapPrice.Amount, new CultureInfo("en-GB", false))
                 : 0,
         GiftWrapPriceCurrency =
             (rawOrderItem.GiftWrapPrice != null && rawOrderItem.GiftWrapPrice.CurrencyCode != null)
                 ? rawOrderItem.GiftWrapPrice.CurrencyCode
                 : currency.Code,
         GiftWrapTaxAmount =
             (rawOrderItem.GiftWrapTax != null && rawOrderItem.GiftWrapTax.Amount != null)
                 ? Decimal.Parse(rawOrderItem.GiftWrapTax.Amount, new CultureInfo("en-GB", false))
                 : 0,
         GiftWrapTaxCurrency =
             (rawOrderItem.GiftWrapTax != null && rawOrderItem.GiftWrapTax.CurrencyCode != null)
                 ? rawOrderItem.GiftWrapTax.CurrencyCode
                 : currency.Code,
         ItemPriceAmount =
             (rawOrderItem.ItemPrice != null && rawOrderItem.ItemPrice.Amount != null)
                 ? Decimal.Parse(rawOrderItem.ItemPrice.Amount, new CultureInfo("en-GB", false))
                 : 0,
         ItemPriceCurrency =
             (rawOrderItem.ItemPrice != null && rawOrderItem.ItemPrice.CurrencyCode != null)
                 ? rawOrderItem.ItemPrice.CurrencyCode
                 : currency.Code,
         ItemTaxAmount =
             (rawOrderItem.ItemTax != null && rawOrderItem.ItemTax.Amount != null)
                 ? Decimal.Parse(rawOrderItem.ItemTax.Amount, new CultureInfo("en-GB", false))
                 : 0,
         ItemTaxCurrency =
             (rawOrderItem.ItemTax != null && rawOrderItem.ItemTax.CurrencyCode != null)
                 ? rawOrderItem.ItemTax.CurrencyCode
                 : currency.Code,
         PromotionDiscountAmount =
             (rawOrderItem.PromotionDiscount != null && rawOrderItem.PromotionDiscount.Amount != null)
                 ? Decimal.Parse(rawOrderItem.PromotionDiscount.Amount, new CultureInfo("en-GB", false))
                 : 0,
         PromotionDiscountCurrency =
             (rawOrderItem.PromotionDiscount != null && rawOrderItem.PromotionDiscount.CurrencyCode != null)
                 ? rawOrderItem.PromotionDiscount.CurrencyCode
                 : currency.Code,
         QuantityOrdered = rawOrderItem.QuantityOrdered,
         QuantityShipped = rawOrderItem.QuantityShipped,
         ShippingDiscountAmount =
             (rawOrderItem.ShippingDiscount != null && rawOrderItem.ShippingDiscount.Amount != null)
                 ? Decimal.Parse(rawOrderItem.ShippingDiscount.Amount, new CultureInfo("en-GB", false))
                 : 0,
         ShippingDiscountCurrency =
             (rawOrderItem.ShippingDiscount != null && rawOrderItem.ShippingDiscount.CurrencyCode != null)
                 ? rawOrderItem.ShippingDiscount.CurrencyCode
                 : currency.Code,
         ShippingPriceAmount =
             (rawOrderItem.ShippingPrice != null && rawOrderItem.ShippingPrice.Amount != null)
                 ? Decimal.Parse(rawOrderItem.ShippingPrice.Amount, new CultureInfo("en-GB", false))
                 : 0,
         ShippingPriceCurrency =
             (rawOrderItem.ShippingPrice != null && rawOrderItem.ShippingPrice.CurrencyCode != null)
                 ? rawOrderItem.ShippingPrice.CurrencyCode
                 : currency.Code,
         ShippingTaxAmount =
             (rawOrderItem.ShippingTax != null && rawOrderItem.ShippingTax.Amount != null)
                 ? Decimal.Parse(rawOrderItem.ShippingTax.Amount, new CultureInfo("en-GB", false))
                 : 0,
         ShippingTaxCurrency =
             (rawOrderItem.ShippingTax != null && rawOrderItem.ShippingTax.CurrencyCode != null)
                 ? rawOrderItem.ShippingTax.CurrencyCode
                 : currency.Code,
     };
 }
 public void SetShippingAddress(AmazonOrder amazonOrder, AddressData address)
 {
     amazonOrder.ShippingAddress = address;
 }
        public OrderFulfillment GetOrderFulfillment(AmazonOrder amazonOrder)
        {
            var orderFulfillment = new OrderFulfillment()
            {
                Item=amazonOrder.AmazonOrderId,
                ItemElementName = ItemChoiceType2.AmazonOrderID,
                FulfillmentData = new OrderFulfillmentFulfillmentData()
                    {
                        Item="Other",
                        ShippingMethod = "Standard"
                    },
               Item1 = new OrderFulfillmentItemCollection()
            };

            orderFulfillment.FulfillmentDate = amazonOrder.Order.ShippingDate.HasValue ? amazonOrder.Order.ShippingDate.Value.ToUniversalTime().AddMinutes(-15) : DateTime.UtcNow.AddMinutes(-15); //-15 because server times differ

            foreach (var amazonOrderItem in amazonOrder.Items)
            {
                var item = new OrderFulfillmentItem()
                    {
                        Item = amazonOrderItem.AmazonOrderItemId,
                        ItemElementName = ItemChoiceType3.AmazonOrderItemCode,
                        Quantity = decimal.ToInt32(amazonOrderItem.QuantityOrdered).ToString()
                    };
                orderFulfillment.Item1.Add(item);
            }
            return orderFulfillment;
        }
        public void AmazonOrderService_Delete_ShouldRemoveItemFromTheSession()
        {
            var item = new AmazonOrder();
            Session.Transact(session => session.Save(item));

            _amazonOrderService.Delete(item);

            Session.QueryOver<AmazonOrder>().RowCount().Should().Be(0);
        }
        public Ecommerce.Entities.Orders.Order GetOrder(AmazonOrder amazonOrder)
        {
            Ecommerce.Entities.Orders.Order order = amazonOrder.Order ?? new Ecommerce.Entities.Orders.Order();

            if (order.Id == 0)
            {
                order = GetOrderDetails(amazonOrder);
                Ecommerce.Entities.Orders.Order order1 = order;
                _session.Transact(session => session.Save(order1));
                GetOrderLines(amazonOrder, ref order);

                _setTax.SetTax(ref order, amazonOrder.Tax);
            }

            order.ShippingStatus = amazonOrder.Status.GetEnumByValue<ShippingStatus>();

            return order;
        }