Пример #1
0
        public OrderView(order o, organisation s, string receiverAddress, long sessionid, TransactionType type)
        {
            order  = o.ToModel(type, sessionid);
            sender = s.ToFullOrganisationAddress();
            banner =
                s.logo.HasValue
                    ? s.image.ToModel(Imgsize.BANNER).url.ToHtmlImage()
                    : "";
            receiver = receiverAddress;
            currency = o.currency.ToCurrency();

            // handle addresses
            if (!o.allDigitalOrderItems())
            {
                order.billingAddress  = o.address1.ToHtmlString();
                order.shippingAddress = o.address.ToHtmlString();
            }

            if (o.shipwireTransaction != null)
            {
                submittedToShipwire = true;
            }

            transactionID = (o.transactions ?? o.transactions1.First()).id;

            // init commentrs for new inline format
            comments = Enumerable.Empty <OrderComment>();
        }
Пример #2
0
        public static Order ToModel(this order o, TransactionType type, long sessionid)
        {
            var order = new Order();

            order.currency = o.currency.ToCurrency(); // discount and total dependent on this being initialised first

            if (o.discountPercentage.HasValue)
            {
                order.discount     = o.discountPercentage.Value.ToString("n2");
                order.discountType = "%";
            }
            else if (o.discountValue.HasValue)
            {
                order.discount = o.discountValue.Value.ToString("n" + order.currency.decimalCount);
            }
            order.discountCode = o.discountCouponCode;

            order.id              = o.id;
            order.isOwner         = o.owner == sessionid;
            order.terms           = o.terms;
            order.orderStatus     = o.status.ToEnum <OrderStatus>();
            order.TransactionType = type;
            order.orderNumber     = o.orderNumber;
            order.orderDate       = o.orderDate.ToLocalTime();
            order.location        = o.inventoryLocation.HasValue ? o.inventoryLocation1.name : GeneralConstants.INVENTORY_LOCATION_DEFAULT;
            if (o.user.organisation.HasValue)
            {
                order.receiverOrgID = o.user.organisation.Value;
                order.receiverName  = o.user.organisation1.name;
            }
            else
            {
                throw new Exception();
            }

            // handle tax
            order.totalTax = o.taxAmount.HasValue ? o.taxAmount.Value.ToString("n" + order.currency.decimalCount) : "";

            // handle shipping
            order.shippingCost       = o.shippingCost.HasValue ? o.shippingCost.Value.ToString("n" + order.currency.decimalCount) : "";
            order.shippingMethod     = o.shippingMethod;
            order.shipwireShippingID = o.shipwireShippingid;

            if (string.IsNullOrEmpty(order.shippingMethod))
            {
                if (o.allDigitalOrderItems())
                {
                    order.shippingNotes = "Digital product. Not applicable.";
                }
                else
                {
                    //order.shippingNotes = "Shipping method not specified.";
                }
            }
            else
            {
                if (string.IsNullOrEmpty(order.shippingCost))
                {
                    order.shippingNotes = string.Format("{0}. Shipping cost has not been determined.", order.shippingMethod);
                }
                else
                {
                    order.shippingNotes = string.Format("{0}. Shipping cost is {1}{2}.", order.shippingMethod, order.currency.symbol, order.shippingCost);
                }
            }

            // handle payment
            var cart = o.carts.SingleOrDefault();

            if (cart != null)
            {
                var methodType   = cart.paymentMethod.ToEnum <PaymentMethodType>();
                var method       = "";
                var instructions = "";
                switch (methodType)
                {
                case PaymentMethodType.Custom:
                    if (cart.paymentCustomId.HasValue)
                    {
                        method       = cart.paymentMethod1.name;
                        instructions = cart.paymentMethod1.instructions;
                    }
                    break;

                case PaymentMethodType.Paypal:
                    method = "Paypal";
                    break;

                default:
                    // customer will get here when shipping method not found so no payment method specified
                    break;
                }
                order.paymentMethod       = method;
                order.paymentInstructions = instructions;
            }

            // have unreviewed payment?
            if (o.payments.Any(x => x.status == PaymentStatus.New.ToString()))
            {
                order.hasUnreviewedCustomPayment = true;
            }

            // shipping costs already included in order total so there is no need to check
            order.orderTotal = o.total.ToString("n" + order.currency.decimalCount);
            order.totalPaid  = o.totalPaid.ToString("n" + order.currency.decimalCount);
            order.amountDue  = (o.total - o.totalPaid);
            order.orderItems = o.orderItems.ToModel(order.currency);
            order.subTotal   = order.orderItems.Sum(x => x.subTotal).ToString("n" + order.currency.decimalCount);

            return(order);
        }