private ConfirmationEmailViewModel MapPurchaseOrder(Ucommerce.EntitiesV2.PurchaseOrder purchaseOrder, ConfirmationEmailViewModel confirmationEmailViewModel)
        {
            confirmationEmailViewModel.BillingAddress  = purchaseOrder.BillingAddress ?? new Ucommerce.EntitiesV2.OrderAddress();
            confirmationEmailViewModel.ShipmentAddress = purchaseOrder.GetShippingAddress("Shipment") ?? new Ucommerce.EntitiesV2.OrderAddress();

            foreach (var orderLine in purchaseOrder.OrderLines)
            {
                var orderLineCurrencyIsoCode = orderLine.PurchaseOrder.BillingCurrency.ISOCode;
                var orderLineModel           = new ConfirmationEmailOrderLine
                {
                    ProductName       = orderLine.ProductName,
                    Sku               = orderLine.Sku,
                    VariantSku        = orderLine.VariantSku,
                    Total             = new Money(orderLine.Total.GetValueOrDefault(), orderLineCurrencyIsoCode).ToString(),
                    Tax               = new Money(orderLine.VAT, orderLineCurrencyIsoCode).ToString(),
                    Price             = new Money(orderLine.Price, orderLineCurrencyIsoCode).ToString(),
                    PriceWithDiscount = new Money(orderLine.Price - orderLine.Discount, orderLineCurrencyIsoCode).ToString(),
                    Quantity          = orderLine.Quantity,
                    Discount          = orderLine.Discount
                };
                confirmationEmailViewModel.OrderLines.Add(orderLineModel);
            }

            var currencyIsoCode = purchaseOrder.BillingCurrency.ISOCode;

            confirmationEmailViewModel.DiscountTotal  = new Money(purchaseOrder.DiscountTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.DiscountAmount = purchaseOrder.DiscountTotal.GetValueOrDefault();
            confirmationEmailViewModel.SubTotal       = new Money(purchaseOrder.SubTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.OrderTotal     = new Money(purchaseOrder.OrderTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.TaxTotal       = new Money(purchaseOrder.TaxTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.ShippingTotal  = new Money(purchaseOrder.ShippingTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.PaymentTotal   = new Money(purchaseOrder.PaymentTotal.GetValueOrDefault(), currencyIsoCode).ToString();

            confirmationEmailViewModel.OrderNumber  = purchaseOrder.OrderNumber;
            confirmationEmailViewModel.CustomerName = purchaseOrder.Customer.FirstName;

            var shipment = purchaseOrder.Shipments.FirstOrDefault();

            if (shipment != null)
            {
                confirmationEmailViewModel.ShipmentName   = shipment.ShipmentName;
                confirmationEmailViewModel.ShipmentAmount = purchaseOrder.ShippingTotal.GetValueOrDefault();
            }

            var payment = purchaseOrder.Payments.FirstOrDefault();

            if (payment != null)
            {
                confirmationEmailViewModel.PaymentName   = payment.PaymentMethodName;
                confirmationEmailViewModel.PaymentAmount = purchaseOrder.PaymentTotal.GetValueOrDefault();
            }

            return(confirmationEmailViewModel);
        }
        private ConfirmationEmailViewModel MapPurchaseOrderToViewModel(PurchaseOrder purchaseOrder, ConfirmationEmailViewModel confirmationEmailViewModel)
        {
            confirmationEmailViewModel.BillingAddress  = purchaseOrder.BillingAddress ?? new OrderAddress();
            confirmationEmailViewModel.ShipmentAddress = purchaseOrder.GetShippingAddress(Constants.DefaultShipmentAddressName) ?? new OrderAddress();

            foreach (var orderLine in purchaseOrder.OrderLines)
            {
                var orderLineModel = new ConfirmationEmailOrderLine
                {
                    ProductName       = orderLine.ProductName,
                    Sku               = orderLine.Sku,
                    VariantSku        = orderLine.VariantSku,
                    Total             = new Money(orderLine.Total.GetValueOrDefault(), orderLine.PurchaseOrder.BillingCurrency).ToString(),
                    Tax               = new Money(orderLine.VAT, purchaseOrder.BillingCurrency).ToString(),
                    Price             = new Money(orderLine.Price, purchaseOrder.BillingCurrency).ToString(),
                    PriceWithDiscount = new Money(orderLine.Price - orderLine.Discount, purchaseOrder.BillingCurrency).ToString(),
                    Quantity          = orderLine.Quantity,
                    Discount          = orderLine.Discount
                };

                confirmationEmailViewModel.OrderLines.Add(orderLineModel);
            }

            confirmationEmailViewModel.DiscountTotal  = new Money(purchaseOrder.DiscountTotal.GetValueOrDefault(), purchaseOrder.BillingCurrency).ToString();
            confirmationEmailViewModel.DiscountAmount = purchaseOrder.DiscountTotal.GetValueOrDefault();
            confirmationEmailViewModel.SubTotal       = new Money(purchaseOrder.SubTotal.GetValueOrDefault(), purchaseOrder.BillingCurrency).ToString();
            confirmationEmailViewModel.OrderTotal     = new Money(purchaseOrder.OrderTotal.GetValueOrDefault(), purchaseOrder.BillingCurrency).ToString();
            confirmationEmailViewModel.TaxTotal       = new Money(purchaseOrder.TaxTotal.GetValueOrDefault(), purchaseOrder.BillingCurrency).ToString();
            confirmationEmailViewModel.ShippingTotal  = new Money(purchaseOrder.ShippingTotal.GetValueOrDefault(), purchaseOrder.BillingCurrency).ToString();
            confirmationEmailViewModel.PaymentTotal   = new Money(purchaseOrder.PaymentTotal.GetValueOrDefault(), purchaseOrder.BillingCurrency).ToString();

            confirmationEmailViewModel.OrderNumber  = purchaseOrder.OrderNumber;
            confirmationEmailViewModel.CustomerName = purchaseOrder.Customer.FirstName;

            var shipment = purchaseOrder.Shipments.FirstOrDefault();

            if (shipment != null)
            {
                confirmationEmailViewModel.ShipmentName   = shipment.ShipmentName;
                confirmationEmailViewModel.ShipmentAmount = purchaseOrder.ShippingTotal.GetValueOrDefault();
            }

            var payment = purchaseOrder.Payments.FirstOrDefault();

            if (payment != null)
            {
                confirmationEmailViewModel.PaymentName   = payment.PaymentMethodName;
                confirmationEmailViewModel.PaymentAmount = purchaseOrder.PaymentTotal.GetValueOrDefault();
            }

            ViewBag.RowSpan = 4;
            if (purchaseOrder.DiscountTotal > 0)
            {
                ViewBag.RowSpan++;
            }
            if (purchaseOrder.ShippingTotal > 0)
            {
                ViewBag.RowSpan++;
            }
            if (purchaseOrder.PaymentTotal > 0)
            {
                ViewBag.RowSpan++;
            }

            return(confirmationEmailViewModel);
        }