private void SetTrackingNumber(AOOrder order)
        {
            if (_settings.DoPrintLabel)
            {
                Thread.Sleep(_settings.GLSStatusFileWaitSeconds * 1000);
                _trackingNumber = _ftpService.GetTrackingNumber(_settings.FTPTempFolder, _settings.FTPRemoteStatusFilePath, order.Id);

                if (string.IsNullOrEmpty(_trackingNumber))
                {
                    if (_glsStatusFileRetries < _settings.GLSStatusFileRetries)
                    {
                        _glsStatusFileRetries++;
                        SetTrackingNumber(order);
                    }

                    CleanupGLSStatusFiles();

                    if (string.IsNullOrEmpty(_trackingNumber))
                    {
                        // This extra check is important!
                        throw new ArgumentException("No tracking number found for orderid: " + order.Id + ". Maybe number of retries should be increased.");
                    }
                }

                _orderManagementService.SetTrackingNumberOnShipment(_trackingNumber);
                _anyChangesDone = true;
            }
        }
        public IActionResult CompleteOrder(int orderId)
        {
            try
            {
                _anyChangesDone = false;
                AOOrder order = _orderManagementService.GetOrder(orderId);

                HandleGLSLabel(order);

                Capture(order);


                SendMails(order);

                _glsStatusFileRetries = 0;
                SetTrackingNumber(order);

                ChangeOrderStatus(orderId);

                if (_anyChangesDone == false)
                {
                    return(Json("Warning: No changes done. Maybe change settings for this plugin."));
                }
            }
            catch (Exception ex)
            {
                return(HandleException(ex));
            }
            return(Json("Done"));
        }
 private void SendMails(AOOrder order)
 {
     if (_settings.DoSendEmails)
     {
         _orderManagementService.SendShipmentMail(order);
         _anyChangesDone = true;
     }
 }
示例#4
0
        private string GetOrderNotes(AOOrder order)
        {
            if (string.IsNullOrEmpty(order.OrderNotes))
            {
                return("&nbsp;");
            }

            var orderNotes = order.OrderNotes.TrimStart(',').Replace(",", "<hr class='hrSmall' /><br />").Replace("#", "<br />");

            return(orderNotes);
        }
示例#5
0
        public AOOrder GetOrder(int orderId)
        {
            if (orderId <= 0)
            {
                throw new ArgumentException("No proper orderId: " + orderId);
            }

            _order = _context.AoOrders.Where(o => o.Id == orderId).FirstOrDefault();

            if (_order == null)
            {
                throw new ArgumentException("No order found with id: " + orderId);
            }

            return(_order);
        }
示例#6
0
        /// <summary>+
        /// Returns a list of string arrays. Each array contains 2 items, 1 with id, 1 with text
        /// </summary>
        private List <AOOrderItem> GetProductInfo(AOOrder order)
        {
            if (string.IsNullOrEmpty(order.OrderItems))
            {
                List <AOOrderItem> errorItems = new List <AOOrderItem>();
                errorItems.Add(new AOOrderItem()
                {
                    ProductId   = 0,
                    ProductName = "No order items found for this order"
                });
                return(errorItems);
            }

            List <AOOrderItem> orderItems = GetOrderItems(order.OrderItems);

            return(orderItems);
        }
        private void Capture(AOOrder order)
        {
            if (_settings.DoCapture)
            {
                Shipment shipment = _orderManagementService.OrderShipment;
                if (shipment == null)
                {
                    throw new ArgumentNullException("Shipment is null in Capture");
                }

                switch (order.PaymentMethodSystemName)
                {
                case "Payments.QuickPayV10":
                {
                    PaymentApiStatus paymentApiStatus = _quickPayService.GetPayment(order.AuthorizationTransactionId);
                    if (paymentApiStatus.Payment == null || paymentApiStatus.HttpResponse.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        throw new ArgumentException("No payment found with orderid: " + order.Id + " and AuthorizationTransactionId: " + order.AuthorizationTransactionId);
                    }

                    PaymentApiStatus captureStatus = _quickPayService.CapturePayment(order.AuthorizationTransactionId, Convert.ToInt32(order.TotalOrderAmount));

                    if (captureStatus.HttpResponse.IsSuccessStatusCode == false)
                    {
                        throw new ArgumentException("Error capturing money on orderid: " + order.Id + ", Error: " + captureStatus.HttpResponse.ReasonPhrase);
                    }
                    _eventPublisher.PublishShipmentSent(shipment);
                    break;
                }

                case "Payments.KlarnaCheckout":
                {
                    _eventPublisher.PublishShipmentSent(shipment);
                    break;
                }

                default:
                {
                    throw new ArgumentException("Payment system not recognized: '" + order.PaymentMethodSystemName + "'");
                }
                }

                _anyChangesDone = true;
            }
        }
        private void HandleGLSLabel(AOOrder order)
        {
            if (_settings.DoPrintLabel)
            {
                _ftpService.Initialize(
                    _settings.FTPHost,
                    _settings.FTPUsername,
                    _settings.FTPPassword);

                string localFilepath = _settings.FTPLocalFilePath + "\\" + _settings.FTPLocalFileName;

                System.IO.File.WriteAllText(localFilepath, CreateSingleLine(order), Encoding.UTF8);

                _ftpService.SendFile(localFilepath, _settings.FTPRemoteFolderPath + "/" + _settings.FTPLocalFileName);

                _anyChangesDone = true;
            }
        }
示例#9
0
        private string GetShippingInfo(AOOrder order)
        {
            if (string.IsNullOrEmpty(order.ShippingInfo))
            {
                return("&nbsp;");
            }

            var    shippingInfo = order.ShippingInfo.Replace("#", "<br />");
            string ship         = order.Shipment;

            if (string.IsNullOrEmpty(ship) == false)
            {
                if (ship.Contains(";"))
                {
                    shippingInfo += "<br /><br />Admin comment:<br />";
                    shippingInfo += ship.Substring(ship.IndexOf(";") + 1);
                }
            }

            return(shippingInfo);
        }
        private string CreateSingleLine(AOOrder order)
        {
            string glsShopnumber = "";

            if (string.IsNullOrEmpty(order.ShippingInfo))
            {
                throw new ArgumentException("No shipping info on order");
            }

            if (order.ShippingInfo.Contains("("))
            {
                glsShopnumber = order.ShippingInfo.Substring(order.ShippingInfo.IndexOf("(") + 1);
                if (glsShopnumber.Contains(")"))
                {
                    glsShopnumber = glsShopnumber.Substring(0, glsShopnumber.IndexOf(")"));
                }
            }

            PakkeshopData pakkeshopData = _glsService.GetParcelShopData(glsShopnumber);

            if (pakkeshopData == null)
            {
                throw new ArgumentException("No Parcel shop found with number: '" + glsShopnumber + "'");
            }

            StringBuilder sb = new StringBuilder();

            sb.Append("\"" + order.Id.ToString() + "\"");                // 1 Order number
            sb.Append(",\"" + pakkeshopData.CompanyName + "\"");         // 2 Consignee name (Name of parcelshop)
            sb.Append(",\"" + order.CustomerInfo + "\"");                // 3 Recipient address
            sb.Append(",\"" + pakkeshopData.Number + "\"");              // 4 Parcelshop number
            sb.Append(",\"" + pakkeshopData.ZipCode + "\"");             // 5 Zipcode of recipient
            sb.Append(",\"" + pakkeshopData.CityName + "\"");            // 6 Postal district of recipient
            sb.Append(",\"" + pakkeshopData.CountryCode + "\"");         // 7 Country of recipient
            sb.Append(",\"" + DateTime.Now.ToString("dd-MM-yy") + "\""); // 8 Date
            sb.Append(",\"1\"");                                         // 9 Parcel weight
            sb.Append(",\"1\"");                                         // 10 Number of parcels
            sb.Append(",\"\"");                                          // 11 COD Amount (Order amount?)
            sb.Append(",\"\"");                                          // 12 Parcel value amount (Total parcel value)
            sb.Append(",\"A\"");                                         // 13 Parcel type
            sb.Append(",\"Z\"");                                         // 14 Shipment type
            sb.Append(",\"" + order.UserName + "\"");                    // 15 Name of recipient to pick up parcel
            sb.Append(",\"\"");                                          // 16 Customer note (not the one for friliv.dk)
            sb.Append(",\"90022\"");                                     // 17 Customer number (vores GLS kundenummer)
            sb.Append(",\"" + order.CustomerEmail + "\"");               // 18 Customer mail address
            sb.Append(",\"" + order.PhoneNumber + "\"");                 // 19 Customer mobile number
            sb.Append(",\"\"E");                                         // 20 Notification: E = Email
            sb.Append(",\"\"" + _settings.FTPPrinterName + "\"");        // 21 Pxx = Printer no
            sb.Append(",\"\"");                                          // 22
            sb.Append(",\"\"");                                          // 23
            sb.Append(",\"\"");                                          // 24
            sb.Append(",\"\"");                                          // 25
            sb.Append(",\"\"");                                          // 26
            sb.Append(",\"\"");                                          // 27
            sb.Append(",\"\"");                                          // 28
            sb.Append(",\"\"");                                          // 29

            string info = sb.ToString();

            return(info);
        }
示例#11
0
 private string GetTotal(AOOrder order)
 {
     return(order.TotalOrderAmount.ToString("N2", _workikngCultureInfo) + " " + order.Currency);
 }
示例#12
0
 private string GetCustomerInfo(AOOrder order)
 {
     return(order.UserName + "<br />" + order.CustomerInfo.Replace("#", "<br />"));
 }
示例#13
0
 private string GetCustomerComment(AOOrder order)
 {
     return(string.IsNullOrEmpty(order.CheckoutAttributeDescription) ? "&nbsp;" : order.CheckoutAttributeDescription);
 }
示例#14
0
 public void SendShipmentMail(AOOrder order)
 {
     _workflowMessageService.SendShipmentSentCustomerNotification(OrderShipment, _workContext.WorkingLanguage.Id);
 }