public void SendErrorEmails(string psMessage, ShippingRequestHeader poH)
        {
            try
            {
                string lsRecipients = Util.AppSettingValue("ErrorRecipients");

                string lsBody =
                    "<div style='font-size:10pt;font-family:arial;padding-bottom:5px;'>The following error occurred when attempting to save an online customer order:</div><hr/>" +
                    "<table style='width:100%;font-size:10pt;font-family:arial'>" +
                    "<tr>" +
                    "<td style='width:10%;padding:5px;font-weight:bold'>Customer Account #:</td>" +
                    "<td style='width:90%;padding:5px'>" + poH.CustomerAccountID + "</td>" +
                    "</tr>" +
                    "<tr>" +
                    "<td style='padding:5px;width:10%;font-weight:bold'>Order #:</td>" +
                    "<td style='padding:5px;width:90%'>" + poH.CustomerPONum + "</td>" +
                    "</tr>" +
                    "<tr>" +
                    "<td style='padding:5px;width:10%;font-weight:bold'>Error:</td>" +
                    "<td style='padding:5px;width:90%'>" + psMessage + "</td>" +
                    "</tr>" +
                    "<tr>" +
                    "<td style='padding:5px;width:10%;font-weight:bold'>Shipping Request ID:</td>" +
                    "<td style='padding:5px;width:90%'>" + poH.ShipReqID.ToString() + "</td>" +
                    "</tr>" +
                    "</table>" +
                    "<hr/>";

                string lsSubject = Util.AppSettingValue("ErrorSubject");

                foreach (string lsTo in lsRecipients.Split(';'))
                {
                    if (lsTo.Trim() != "" && lsTo.IndexOf("@") > -1)
                    {
                        MailHelper mh = new MailHelper();

                        mh.Body = lsBody;

                        mh.HostName = GetConfigProperty("SMTPServer");    // "MELSVEX3046.SCTLOGISTICS.COM.AU"; //lsHostName;

                        mh.FromEmail    = GetConfigProperty("SMTPEmail"); // "*****@*****.**";
                        mh.IsHtmlBody   = true;
                        mh.ToEmail      = lsTo.Trim();
                        mh.SiteName     = GetConfigProperty("SiteName");
                        mh.SMTPEmail    = GetConfigProperty("SMTPEmail");
                        mh.SMTPPassword = GetConfigProperty("SMTPPassword");
                        mh.Subject      = lsSubject;
                        // mh.SMTPPort = 0;

                        mh.SendEmail();
                    }
                }
            }
            catch (Exception e)
            {
                Log.LogError(e.ToString(), "OrderImportService.SendErrorEmails");
            }
        }
        private bool ProcessHeader(SCTWS.zsd_create_web_so poWS, Int32 piShipReqID, out string psMessage)
        {
            bool lbResult = true;

            psMessage = "";

            string lsMessage = "";

            SCT db = new SCT();

            try {
                List <ShippingRequestDetail> itemList = null;
                ShippingRequestHeader        h        = db.ShippingRequestHeaders.Find(piShipReqID);
                h.ProcessedDate = System.DateTime.Now;
                db.SaveChanges();

                itemList = (from p in db.ShippingRequestDetails where p.ShipReqID == piShipReqID select p).ToList();

                if (itemList != null && itemList.Count > 0)
                {
                    string lsSAPOrderNumber = "";

                    ZSD_CREATE_WEB_SALES_ORDER so = new ZSD_CREATE_WEB_SALES_ORDER();

                    so.IS_SO_HEADER = new ZSD_WEB_SO_HEADER_S();

                    ZSD_WEB_SO_HEADER_S header = so.IS_SO_HEADER;
                    header.BSTKD   = Util.GetString(h.CustomerPONum);
                    header.BSTKD_E = Util.GetString(h.ConsignmentRef);
                    header.TEMP    = Util.GetString(h.TemperatureID);
                    header.TRATY   = Util.GetString(h.MeansOfTransportID);
                    header.KUNAG   = Util.GetString(h.CustomerAccountID);
                    header.SHIPFR  = Util.GetString(h.PickupFromID);
                    header.BSTDK   = Util.GetString(h.PickupDate.ToString("yyyy-MM-dd"));
                    header.PICKUP  = GetTimeCode(Util.GetString(h.PickupTime), false);

                    if (header.PICKUP == "")
                    {
                        lsMessage = "Unable to resolve PICKUP time code for " + Util.GetString(h.PickupTime);
                        Log.LogError(lsMessage, "OrderImportClasses.ProcessOrder", piShipReqID);
                        return(false);
                    }

                    header.SHIPTO = Util.GetString(h.DeliverToID);
                    header.VDATU  = Util.GetString(h.DeliveryDate.ToString("yyyy-MM-dd"));
                    header.DELCO  = GetTimeCode(Util.GetString(h.DeliveryTime), true);

                    if (header.DELCO == "")
                    {
                        psMessage = "Unable to resolve DELCO time code for " + Util.GetString(h.DeliveryTime);
                        Log.LogError(psMessage, "OrderImportClasses.ProcessOrder", piShipReqID);
                        return(false);
                    }

                    header.DELIV_INSTR = Util.GetString(h.DeliveryInstructions);

                    List <ZSD_WEB_SO_ITEM_S> items = new List <ZSD_WEB_SO_ITEM_S>();

                    foreach (ShippingRequestDetail i in itemList)
                    {
                        ZSD_WEB_SO_ITEM_S item = new ZSD_WEB_SO_ITEM_S();
                        item.BRGEW  = Util.GetDecimal(i.GrossWeight);
                        item.KWMENG = Util.GetDecimal(i.Quantity);
                        item.MATNR  = Util.GetString(i.MaterialNumber);
                        item.MEINS  = Util.GetString(i.UnitOfMeasure);
                        item.NTGEW  = Util.GetDecimal(i.NetWeight);
                        item.VOLUM  = Util.GetDecimal(i.Volume);
                        items.Add(item);
                    }

                    so.IT_SO_ITEM = items.ToArray();

                    List <BAPIRET2> retlist = new List <BAPIRET2>();

                    BAPIRET2 bret = new BAPIRET2();

                    retlist.Add(bret);
                    so.ET_RETURN = retlist.ToArray();

                    ZSD_CREATE_WEB_SALES_ORDERResponse ret = null;

                    try
                    {
                        // Log.LogError("Pre send web request", "OrderImportClasses.ProcessOrders");
                        ret = poWS.ZSD_CREATE_WEB_SALES_ORDER(so);
                        // Log.LogError("Post send web request", "OrderImportClasses.ProcessOrders");
                        if (ret != null && ret.ET_RETURN != null && ret.ET_RETURN.Length > 0)
                        {
                            for (int i = 0; i < ret.ET_RETURN.Length; i++)
                            {
                                BAPIRET2 returnLine  = ret.ET_RETURN[i];
                                string   allMessages = returnLine.MESSAGE + " " +
                                                       returnLine.MESSAGE_V1 + " " +
                                                       returnLine.MESSAGE_V2 + " " +
                                                       returnLine.MESSAGE_V3 + " " +
                                                       returnLine.MESSAGE_V4;

                                if (returnLine.TYPE.ToUpper() != "S")
                                {
                                    lbResult   = false;
                                    psMessage += " " + allMessages;
                                }
                                else
                                {
                                    if (returnLine.NUMBER == "311")
                                    {
                                        allMessages = allMessages.ToLower();
                                        int start = allMessages.IndexOf("booking request");
                                        allMessages      = allMessages.Substring(start + "booking request".Length + 1);
                                        start            = allMessages.IndexOf("has been saved");
                                        lsSAPOrderNumber = allMessages.Substring(0, start).Trim();
                                    }
                                }
                            }
                        }
                        else
                        {
                            psMessage += "No return data from web service.";
                            lbResult   = false;
                        }
                    }
                    catch (Exception ex)
                    {
                        psMessage = ex.ToString();
                        lbResult  = false;
                    }


                    if (lbResult)
                    {
                        h.SAPOrderNumber = lsSAPOrderNumber;
                        psMessage       += " created order " + lsSAPOrderNumber;
                    }
                    else
                    {
                        h.SAPOrderNumber = "";

                        Log.LogError("Failed to create Sales Request Header. " + psMessage + " Customer ID = " + so.IS_SO_HEADER.KUNAG + "; Order No = " + so.IS_SO_HEADER.BSTDK,
                                     "OrderImportClasses.ProcessOrder", h.ShipReqID);
                    }

                    h.ProcessedSuccessfully = lbResult;
                    h.UpdateDate            = System.DateTime.Now;
                    db.SaveChanges();
                }
            }
            catch (Exception e)
            {
                Log.LogError(e.ToString(), "ProcessOrders.ProcessOrder", piShipReqID);
            }
            finally
            {
                if (db != null)
                {
                    db.Dispose();
                }
            }

            return(lbResult);
        }