/// <summary>
        ///  匯出yahoo出貨當
        /// </summary>
        public void OutChannelOrderCSV()
        {
            DeliverMasterQuery query = new DeliverMasterQuery();
            _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
            try
            {
                int totalCount = 0;
                string condition = Request.Params["condition"];
                string content = Request.Params["content"];
                string deliverystore = Request.Params["delivery_store"];
                string channel = Request.Params["channel"];
                string ddstatus = Request.Params["delivery_status"];
                string retrieve_mode = Request.Params["retrieve_mode"];
                string datequery = Request.Params["datequery"];
                string starttime = Request.Params["time_start"];
                string endtime = Request.Params["time_end"];
                query.IsPage = false;
                if (condition != "0")
                {
                    if (!string.IsNullOrEmpty(content))
                    {
                        switch (condition)
                        {
                            case "1":
                                query.od_order_id = uint.Parse(content);
                                break;
                            case "2":
                                query.channel_order_id = content;
                                break;
                            case "3":
                                query.sub_order_id = content;
                                break;
                            default:
                                break;
                        }
                    }
                }
                if (deliverystore != "0" && !string.IsNullOrEmpty(deliverystore))
                {
                    query.delivery_store = uint.Parse(deliverystore);
                }
                if (channel != "0" && !string.IsNullOrEmpty(channel))
                {
                    query.channel = int.Parse(channel);
                }
                if (ddstatus != "-1")
                {
                    query.dd_status = int.Parse(ddstatus);
                }
                if (retrieve_mode != "-1" && !string.IsNullOrEmpty(retrieve_mode))
                {
                    query.retrieve_mode = int.Parse(retrieve_mode);
                }
                if (datequery != "0")
                {
                    if (!string.IsNullOrEmpty(starttime))
                    {
                        starttime = DateTime.Parse(starttime).ToString("yyyy-MM-dd HH:mm:ss");
                        query.sqlwhere = " and dm.delivery_date >='" + starttime + "'";
                    }
                    if (!string.IsNullOrEmpty(endtime))
                    {
                        endtime = DateTime.Parse(endtime).ToString("yyyy-MM-dd") + " 23:59:59";
                        query.sqlwhere += " and dm.delivery_date <='" + endtime + "'";
                    }
                }
                object ob = _DeliverDetailMgr.GetChannelOrderList(query, out totalCount, 1);
                DataTable channelorder = new DataTable();
                if (ob.GetType() == typeof(DataTable))
                {
                    channelorder = (DataTable)ob;
                }
                //DataTable newchannel = channelorder.DefaultView.ToTable(false, new string[] { "sub_order_id", "delivery_code" });
                // newchannel.Columns["delivery_store"].Expression = " IIF (delivery_store <> 11,11,11)";
                DataColumn dcol = new DataColumn("delivery_store", typeof(String));
                dcol.DefaultValue = 11;
                channelorder.Columns.Add(dcol);
                channelorder.Columns["delivery_store"].SetOrdinal(1);
                //dcol.Expression = " IIF (delivery_store <> 11,11,11)";
                DataColumn col = new DataColumn("ok", typeof(String));
                col.DefaultValue = "OK";
                channelorder.Columns.Add(col);
                string fileName = string.Empty;
                string newName = string.Empty;
                fileName = "channel_order_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".csv";
                if (!System.IO.Directory.Exists(Server.MapPath(excelPath)))
                {
                    System.IO.Directory.CreateDirectory(Server.MapPath(excelPath));
                }
                newName = Server.MapPath(excelPath) + fileName;

                if (System.IO.File.Exists(newName))
                {
                    //設置文件的屬性,以防刪除文件的時候因為文件的屬性造成無法刪除
                    System.IO.File.SetAttributes(newName, FileAttributes.Normal);
                    System.IO.File.Delete(newName);
                }
                //StringWriter sw = ExcelHelperXhf.SetCsvFromData(channelorder, fileName);
                // CsvHelper.ExportDataTableToCsv(channelorder,newName,null,false);
                StringWriter sw = new StringWriter();
                foreach (DataRow dr in channelorder.Rows)
                {
                    for (int i = 0; i < channelorder.Columns.Count; i++)
                    {
                        sw.Write(dr[i].ToString());
                        if (i != channelorder.Columns.Count - 1)
                        {
                            sw.Write(",");
                        }
                    }
                    sw.WriteLine("");
                }
                sw.Close();

                Response.Clear();
                Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
                Response.ContentType = "application/ms-excel";
                Response.ContentEncoding = Encoding.Default;
                Response.Write(sw);
                Response.End();
            }
            catch (Exception ex)
            {
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
            }


        }
        /// <summary>
        /// 貨運單  delivery_store=17 即 吉甲地車隊貨到付款 才須匯出貨運單
        /// </summary>
        public void GetCarWaybillsPDF()
        {
            _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
            string deliver_id = string.Empty;
            if (!string.IsNullOrEmpty(Request.Params["deliver_id"]))
            {
                deliver_id = Request.Params["deliver_id"];
            }
            string ticketid = string.Empty;
            if (!string.IsNullOrEmpty(Request.Params["ticket_id"]))
            {
                ticketid = Request.Params["ticket_id"];
                ticketid = ticketid.Remove(ticketid.LastIndexOf(','));
            }
            DataTable bills = _DeliverDetailMgr.GetWayBills(deliver_id, ticketid);
            string estimated_delivery_date = string.Empty;
            string sestimated_arrival_period = string.Empty;
            string estimated_arrival_period = string.Empty;
            string infor = string.Empty;
            string receivable = string.Empty;
            string order_id = string.Empty;
            int i = 0;
            Document document = new Document(PageSize.A4, (float)5, (float)5, (float)5, (float)0.5);
            int iTemp = 0;
            string filename = string.Empty;
            if (int.TryParse(ticketid, out iTemp))
            {
                filename = "carwaybills_T" + ticketid.PadLeft(8, '0') + ".pdf";
            }
            else
            {
                filename = "carwaybills_T" + ticketid.Substring(0, ticketid.IndexOf(',')).ToString().PadLeft(8, '0') + ".pdf";
            }

            string newPDFName = Server.MapPath(excelPath) + filename;
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(newPDFName, FileMode.Create));
            document.Open();
            BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            iTextSharp.text.Font fontChinese = new iTextSharp.text.Font(bfChinese, 8, iTextSharp.text.Font.UNDERLINE, iTextSharp.text.BaseColor.RED);
            iTextSharp.text.Font font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  

            foreach (DataRow dr in bills.Rows)
            {
                estimated_delivery_date = !string.IsNullOrEmpty(dr["estimated_delivery_date"].ToString()) ? DateTime.Parse(dr["estimated_delivery_date"].ToString()).ToString("yyyy-MM-dd") : DateTime.Now.ToString("yyyy-MM-dd");
                estimated_arrival_period = dr["estimated_arrival_period"].ToString();
                switch (dr["estimated_arrival_period"].ToString())
                {
                    case "0":
                        sestimated_arrival_period = "不限時";
                        break;
                    case "1":
                        sestimated_arrival_period = "12:00以前";
                        break;
                    case "2":
                        sestimated_arrival_period = "12:00-17:00";
                        break;
                    case "3":
                        sestimated_arrival_period = "17:00-20:00";
                        break;
                    default:
                        break;

                }
                //infor = dr["delivery_name"].ToString() + "\n\n" + CommonFunction.ZipAddress(dr["delivery_zip"].ToString()) + "\n" + dr["delivery_address"].ToString() + "\n\n\n" + dr["delivery_mobile"].ToString();
                receivable = dr["receivable"].ToString() != "0" ? dr["receivable"].ToString() : "不收款";
                order_id = dr["order_id"].ToString();
                font = new iTextSharp.text.Font(bfChinese, 16, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑 
                Chunk c1 = new Chunk(dr["delivery_name"].ToString() + "\n\n", font);
                font = new iTextSharp.text.Font(bfChinese, 8, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑 
                Chunk c2 = new Chunk(CommonFunction.ZipAddress(dr["delivery_zip"].ToString()) + "\n\n" + dr["delivery_address"].ToString() + "\n\n\n", font);
                font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑 
                Chunk c3 = new Chunk(dr["delivery_mobile"].ToString(), font);
                Phrase pinfor = new Phrase();
                pinfor.Add(c1);
                pinfor.Add(c2);
                pinfor.Add(c3);
                BarCode.Code128 _Code = new BarCode.Code128();
                _Code.ValueFont = new System.Drawing.Font("宋体", 20);
                System.Drawing.Bitmap imgTemp = _Code.GetCodeImage(order_id, BarCode.Code128.Encode.Code128A);
                imgTemp.Save(System.AppDomain.CurrentDomain.BaseDirectory + "\\ImportUserIOExcel\\" + "Code.gif", System.Drawing.Imaging.ImageFormat.Gif);
                iTextSharp.text.Image IMG = iTextSharp.text.Image.GetInstance(Server.MapPath("../ImportUserIOExcel/Code.gif"));
                IMG.ScaleToFit(200, 40);
                Chunk orderidck = new Chunk(IMG, 0, 0); //图片可设置 偏移


                imgTemp = _Code.GetCodeImage("D" + dr["deliver_id"].ToString().PadLeft(8, '0'), BarCode.Code128.Encode.Code128A);
                imgTemp.Save(System.AppDomain.CurrentDomain.BaseDirectory + "\\ImportUserIOExcel\\" + "Code.gif", System.Drawing.Imaging.ImageFormat.Gif);
                IMG = iTextSharp.text.Image.GetInstance(Server.MapPath("../ImportUserIOExcel/Code.gif"));
                IMG.ScaleToFit(200, 40);
                Chunk deliveridck = new Chunk(IMG, 0, 0); //图片可设置 偏移



                //PdfContentByte cb = writer.DirectContent;
                // cb.BeginText();
                if (i % 2 == 0 && i != 0)
                {
                    document.NewPage();
                }
                PdfPTable totaltable = new PdfPTable(3);
                totaltable.WidthPercentage = 100;
                totaltable.SetWidths(new int[] { 45, 2, 53 });
                totaltable.DefaultCell.DisableBorderSide(1);
                totaltable.DefaultCell.DisableBorderSide(2);
                totaltable.DefaultCell.DisableBorderSide(4);
                totaltable.DefaultCell.DisableBorderSide(8);
                PdfPCell cell;
                #region 左邊框
                PdfPTable table = new PdfPTable(4);
                table.SetTotalWidth(new float[] { 60, 75, 10, 100 });
                table.DefaultCell.UseAscender = true;
                table.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                table.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell = new PdfPCell(new Phrase("出貨日", font));
                cell.FixedHeight = 17f;
                table.AddCell(cell);
                table.AddCell(new Phrase("預定配送日", font));

                cell = new PdfPCell(new Phrase("指定時段", font));
                cell.Colspan = 2;
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase(DateTime.Now.ToString("yyyyMMdd"), font));
                cell.FixedHeight = 17f;
                table.AddCell(cell);
                //table.AddCell(new Phrase(DateTime.Now.ToString("yyyyMMdd"), font));
                table.AddCell(new Phrase(estimated_delivery_date, font));
                table.AddCell(new Phrase(estimated_arrival_period, font));
                table.AddCell(new Phrase(sestimated_arrival_period, font));
                table.AddCell(new Phrase("收\n件\n人", font));
                cell = new PdfPCell(pinfor);
                cell.Colspan = 3;
                table.AddCell(cell);
                table.AddCell(new Phrase("寄件人", font));
                font = new iTextSharp.text.Font(bfChinese, 7, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                cell = new PdfPCell(new Phrase("台北市南港區八德路四段768巷5號4F之一 \n\n 吉甲地好市集股份有限公司", font));
                cell.UseAscender = true;
                cell.HorizontalAlignment = 3;
                cell.Colspan = 3;
                table.AddCell(cell);
                font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                table.AddCell(new Phrase("訂單編號", font));
                cell = new PdfPCell(new Phrase(orderidck));
                cell.UseAscender = true;
                cell.HorizontalAlignment = 1;
                cell.Colspan = 3;
                table.AddCell(cell);
                font = new iTextSharp.text.Font(bfChinese, 14, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                cell = new PdfPCell(new Phrase("吉\n甲\n地", font));
                cell.UseDescender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(2);
                table.AddCell(cell);
                PdfPTable stable = new PdfPTable(2);
                stable.DefaultCell.UseAscender = true;
                stable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                stable.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;
                font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                stable.AddCell(new Phrase("代收貨款", font));
                stable.AddCell(new Phrase(receivable, font));
                stable.AddCell(new Phrase("出貨單號", font));
                cell = new PdfPCell(new Phrase(deliveridck));
                float h = cell.Height;
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                stable.AddCell(cell);
                cell = new PdfPCell(stable);
                cell.Colspan = 3;
                table.AddCell(cell);
                // table.WriteSelectedRows(0, -1, 10, 820, writer.DirectContent);
                #endregion
                #region
                totaltable.AddCell(table);
                totaltable.AddCell(" ");
                #endregion
                #region 右邊框
                font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                table = new PdfPTable(6);
                table.SetTotalWidth(new float[] { 60, 70, 40, 65, 40, 50 });
                table.DefaultCell.UseAscender = true;
                table.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                table.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell = new PdfPCell();
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(4);
                table.AddCell(cell);
                stable = new PdfPTable(1);
                stable.DefaultCell.UseAscender = true;
                stable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                stable.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;
                //stable.AddCell(new Phrase("包裹查詢號碼", font));
                cell = new PdfPCell(new Phrase("包裹查詢號碼", font));
                cell.FixedHeight = 17f;
                stable.AddCell(cell);
                //stable.AddCell(new Phrase("D" + dr["deliver_id"].ToString().PadLeft(8, '0'), font));
                cell = new PdfPCell(new Phrase("D" + dr["deliver_id"].ToString().PadLeft(8, '0'), font));
                cell.FixedHeight = 17f;
                stable.AddCell(cell);
                cell = new PdfPCell(stable);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase(deliveridck));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.Colspan = 2;
                table.AddCell(cell);
                table.AddCell(new Phrase("備註", font));
                string name = string.Empty;
                for (int k = 0; k < dr["delivery_name"].ToString().Length; k++)
                {
                    name += dr["delivery_name"].ToString()[k] + "\n";
                }
                font = new iTextSharp.text.Font(bfChinese, 14, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                cell = new PdfPCell(new Phrase("吉\n甲\n地\n\n" + name, font));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.Rowspan = 6;
                table.AddCell(cell);
                font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                table.AddCell(new Phrase("收\n件\n人", font));
                cell = new PdfPCell(pinfor);
                //cell.UseAscender = true;
                //cell.HorizontalAlignment = Element.ALIGN_LEFT;
                cell.Colspan = 3;
                table.AddCell(cell);
                cell = new PdfPCell();
                cell.Rowspan = 5;
                table.AddCell(cell);
                table.AddCell(new Phrase("寄件人", font));
                font = new iTextSharp.text.Font(bfChinese, 7, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                cell = new PdfPCell(new Phrase("台北市南港區八德路四段768巷5號4F之一 \n\n 吉甲地好市集股份有限公司", font));
                //cell.UseAscender = true;
                //cell.HorizontalAlignment = Element.ALIGN_LEFT;
                cell.Colspan = 3;
                table.AddCell(cell);
                font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                table.AddCell(new Phrase("訂單編號", font));
                cell = new PdfPCell(new Phrase(orderidck));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.Colspan = 3;
                table.AddCell(cell);
                table.AddCell(new Phrase("指定時段", font));
                table.AddCell(new Phrase(sestimated_arrival_period, font));
                cell = new PdfPCell(new Phrase("\n\n收件人簽名\n\n", font));
                cell.Rowspan = 2;
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                // cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                table.AddCell(cell);
                PdfPCell ncell = new PdfPCell();
                //ncell.DisableBorderSide(1);
                //ncell.DisableBorderSide(2);
                ncell.Rowspan = 2;
                table.AddCell(ncell);
                //table.AddCell(new Phrase("收件人簽名", font));
                cell = new PdfPCell(new Phrase("代收貨款", font));
                cell.FixedHeight = h;
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                table.AddCell(cell);
                table.AddCell(new Phrase(receivable, font));
                // table.WriteSelectedRows(0, -1, 280, 820, writer.DirectContent);
                //table.AddCell(ncell);
                //table.AddCell(ncell);
                //table.AddCell(ncell);
                //table.AddCell(ncell);
                #endregion
                totaltable.AddCell(table);
                // cb.EndText();
                totaltable.SpacingAfter = 75f;
                document.Add(totaltable);
                i++;
            }
            document.Close();


            Response.Clear();
            Response.Charset = "gb2312";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            // Response.AddHeader("Content-Disposition", "attach-ment;filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".pdf ");
            Response.AddHeader("Content-Disposition", "attach-ment;filename=" + filename);
            Response.WriteFile(newPDFName);

        }
        public HttpResponseBase GetChannelOrderList()
        {
            string json = String.Empty;
            List<DeliverMasterQuery> store = new List<DeliverMasterQuery>();

            try
            {
                DeliverMasterQuery query = new DeliverMasterQuery();
                _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
                query.Start = Convert.ToInt32(Request.Params["start"] ?? "0");//用於分頁的變量
                query.Limit = Convert.ToInt32(Request.Params["limit"] ?? "25");//用於分頁的變量
                int totalCount = 0;
                string condition = Request.Params["condition"];
                string content = Request.Params["content"];
                string deliverystore = Request.Params["delivery_store"];
                string channel = Request.Params["channel"];
                string ddstatus = Request.Params["delivery_status"];
                string retrieve_mode = Request.Params["retrieve_mode"];
                string datequery = Request.Params["datequery"];
                string starttime = Request.Params["time_start"];
                string endtime = Request.Params["time_end"];
                if (condition != "0")
                {
                    if (!string.IsNullOrEmpty(content))
                    {
                        switch (condition)
                        {
                            case "1":
                                query.od_order_id = uint.Parse(content);
                                break;
                            case "2":
                                query.channel_order_id = content;
                                break;
                            case "3":
                                query.sub_order_id = content;
                                break;
                            default:
                                break;
                        }
                    }
                }
                if (deliverystore != "0" && !string.IsNullOrEmpty(deliverystore))
                {
                    query.delivery_store = uint.Parse(deliverystore);
                }
                if (channel != "0")
                {
                    query.channel = int.Parse(channel);
                }
                if (ddstatus != "-1")
                {
                    query.dd_status = int.Parse(ddstatus);
                }
                if (retrieve_mode != "-1" && !string.IsNullOrEmpty(retrieve_mode))
                {
                    query.retrieve_mode = int.Parse(retrieve_mode);
                }
                if (datequery != "0")
                {
                    if (!string.IsNullOrEmpty(starttime))
                    {
                        starttime = DateTime.Parse(starttime).ToString("yyyy-MM-dd HH:mm:ss");
                        query.sqlwhere = " and dm.delivery_date >='" + starttime + "'";
                    }
                    if (!string.IsNullOrEmpty(endtime))
                    {
                        endtime = DateTime.Parse(endtime).ToString("yyyy-MM-dd") + " 23:59:59";
                        query.sqlwhere += " and dm.delivery_date <='" + endtime + "'";
                    }
                }
                object ob = _DeliverDetailMgr.GetChannelOrderList(query, out totalCount);
                if (ob.GetType() == typeof(List<DeliverMasterQuery>))
                {
                    store = (List<DeliverMasterQuery>)ob;
                }
                IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
                //这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式     
                timeConverter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
                json = "{success:true,totalCount:" + totalCount + ",data:" + JsonConvert.SerializeObject(store, Formatting.Indented, timeConverter) + "}";//返回json數據
            }
            catch (Exception ex)
            {
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
                json = "{success:false,data:[]}";
            }
            this.Response.Clear();
            this.Response.Write(json);
            this.Response.End();
            return this.Response;
        }
        /// <summary>
        /// 出貨明細
        /// </summary>
        public void GetDeliverDetailsPDF()
        {
            string deliver_id = Request.Params["deliver_id"];
            _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
            DataTable deliverdetail = _DeliverDetailMgr.GetOrderDelivers(deliver_id, 1);
            BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            iTextSharp.text.Font fontChinese = new iTextSharp.text.Font(bfChinese, 8, iTextSharp.text.Font.UNDERLINE, iTextSharp.text.BaseColor.RED);
            iTextSharp.text.Font font = new iTextSharp.text.Font(bfChinese, 12, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
            string filename = "deliver_details_D" + deliver_id.PadLeft(8, '0') + ".pdf";
            Document document = new Document(PageSize.A4, (float)5, (float)5, (float)20, (float)0.5);
            string newPDFName = Server.MapPath(excelPath) + filename;
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(newPDFName, FileMode.Create));
            document.Open();
            PdfContentByte cb = writer.DirectContent;
            cb.BeginText();
            DataRow[] singleproduct = new DataRow[] { };//單一商品
            DataRow[] fatherproduct = new DataRow[] { };//組合商品中的父商品
            DataRow[] sonproduct = new DataRow[] { };//組合商品中的子商品
            //DataRow[] normal;
            //DataRow[] low;
            //DataRow[] lowstore;
            //List<DataRow> deliverdetails = new List<DataRow>();
            ArrayList combine = new ArrayList();

            singleproduct = deliverdetail.Select(" combined_mode<=1  and ddeliver_id=" + deliver_id, "item_id asc");//單一商品
            fatherproduct = deliverdetail.Select(" combined_mode>1 and item_mode=1 and ddeliver_id=" + deliver_id, "item_id asc");//組合商品中父商品是否存在
            foreach (var item in fatherproduct)
            {
                combine.Add(item);
                sonproduct = deliverdetail.Select(" combined_mode>1  and item_mode<>1 and parent_id=" + item["parent_id"] + " and pack_id=" + item["pack_id"], "item_id asc");//對應組合商品中的子商品
                foreach (var son in sonproduct)
                {
                    son["buy_num"] = (int.Parse(son["buy_num"].ToString()) * int.Parse(son["parent_num"].ToString())).ToString();
                    combine.Add(son);
                }

            }

            List<DataRow[]> deliverdetails = new List<DataRow[]>();
            //normal = deliverdetail.Select("product_freight_set in(1,3)  and ddeliver_id=" + deliver_id, "item_id asc");//常溫
            //low = deliverdetail.Select("product_freight_set in(2,4)  and ddeliver_id=" + deliver_id, "item_id asc");//冷凍
            //lowstore = deliverdetail.Select("product_freight_set in(5,6)  and ddeliver_id=" + deliver_id, "item_id asc");//冷藏
            if (singleproduct.Count() > 0)
            {
                deliverdetails.Add(singleproduct);
            }
            if (combine.Count > 0)
            {
                deliverdetails.Add((DataRow[])combine.ToArray(typeof(DataRow)));
            }
            if (deliverdetail.Rows.Count > 0)
            {

                cb.SetFontAndSize(bfChinese, 20);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "吉甲地台灣好市集出貨明細", 30, 750, 0);
                string freight_set = string.Empty;

                switch (deliverdetail.Rows[0]["freight_set"].ToString().Trim())
                {
                    case "1":
                        freight_set = "常溫";
                        break;
                    case "2":
                        freight_set = "冷凍";
                        break;
                    case "5":
                        freight_set = "冷藏";
                        break;
                }
                cb.SetFontAndSize(bfChinese, 12);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, freight_set, 350, 780, 0);
                if (deliverdetail.Rows[0]["estimated_arrival_period"].ToString() != "0")
                {
                    string estimated_arrival_period = string.Empty;
                    switch (deliverdetail.Rows[0]["estimated_arrival_period"].ToString().Trim())
                    {
                        case "0":
                            estimated_arrival_period = "不限時";
                            break;
                        case "1":
                            estimated_arrival_period = "12:00以前";
                            break;
                        case "2":
                            estimated_arrival_period = "12:00-17:00";
                            break;
                        case "3":
                            estimated_arrival_period = "17:00-20:00";
                            break;
                    }
                    cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, estimated_arrival_period, 350, 765, 0);
                }

                Phrase ph = new Phrase();
                BarCode.Code128 _Code = new BarCode.Code128();
                _Code.ValueFont = new System.Drawing.Font("宋体", 20);
                System.Drawing.Bitmap imgTemp1 = _Code.GetCodeImage("D" + deliverdetail.Rows[0]["deliver_id"].ToString().PadLeft(8, '0'), BarCode.Code128.Encode.Code128A);
                imgTemp1.Save(System.AppDomain.CurrentDomain.BaseDirectory + "\\ImportUserIOExcel\\" + "Code.gif", System.Drawing.Imaging.ImageFormat.Gif);
                iTextSharp.text.Image IMG1 = iTextSharp.text.Image.GetInstance(Server.MapPath("../ImportUserIOExcel/Code.gif"));
                IMG1.ScaleToFit(200, 30);
                Chunk ck = new Chunk(IMG1, 345, -100); //图片可设置 偏移
                ph.Add(ck);
                document.Add(ph);
                cb.SetFontAndSize(bfChinese, 10);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "付款單號:", 10, 680, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "訂購時間:", 10, 660, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "转单日期:", 200, 660, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "订购人:", 10, 640, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "收货人:", 200, 640, 0);
                string address = string.Empty;


                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, deliverdetail.Rows[0]["order_id"].ToString(), 80, 680, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, deliverdetail.Rows[0]["order_createdate"].ToString() != "0" ? CommonFunction.GetNetTime(long.Parse(deliverdetail.Rows[0]["order_createdate"].ToString())).ToString("yyyy-MM-dd HH:mm:ss") : "", 80, 660, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, deliverdetail.Rows[0]["money_collect_date"].ToString() != "0" ? CommonFunction.GetNetTime(long.Parse(deliverdetail.Rows[0]["money_collect_date"].ToString())).ToString("yyyy-MM-dd HH:mm:ss") : "", 250, 660, 0);
                //cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, deliverdetail.Rows[0]["holiday_deliver"].ToString() == "1" ? "可" : "不可", 250, 620, 0);
                //cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, deliverdetail.Rows[0]["note_order"].ToString(), 80, 600, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, deliverdetail.Rows[0]["order_name"].ToString(), 80, 640, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, deliverdetail.Rows[0]["delivery_name"].ToString(), 250, 640, 0);
                if (deliverdetail.Rows[0]["type"].ToString() != "3")
                {
                    PdfPTable ptable = new PdfPTable(4);
                    ptable.SetTotalWidth(new float[] { 100, 320, 70, 70 });
                    PdfPCell cell = new PdfPCell();
                    cell.BorderWidth = 0.1f;
                    cell.BorderColor = new BaseColor(0, 0, 0);
                    cell = new PdfPCell(new Phrase("商品編號", font));
                    ptable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("商品名稱", font));
                    ptable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("數量", font));
                    ptable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("售价", font));
                    ptable.AddCell(cell);
                    PdfPCell td = new PdfPCell();
                    td.BorderWidth = 0.1f;
                    int j = 0;
                    foreach (var item in deliverdetails)
                    {
                        j++;
                        for (int i = 0; i < item.Count(); i++)
                        {
                            string item_id = string.Empty;
                            if (item[i]["item_mode"].ToString() == "1")
                            {
                                item_id = item[i]["parent_id"].ToString();
                            }
                            else
                            {
                                item_id = item[i]["item_id"].ToString();
                            }
                            cell = new PdfPCell(new Phrase(item_id, font));
                            ptable.AddCell(cell);
                            string datacontent = ((item[i]["item_mode"].ToString() == "2") ? " *" : "") + item[i]["product_name"].ToString() + item[i]["product_spec_name"].ToString();
                            cell = new PdfPCell(new Phrase(item[i]["brand_name"].ToString() + "-" + datacontent, font));
                            ptable.AddCell(cell);
                            cell = new PdfPCell(new Phrase(item[i]["buy_num"].ToString(), font));
                            ptable.AddCell(cell);
                            cell = new PdfPCell(new Phrase(item[i]["item_mode"].ToString() == "1" ? "" : item[i]["single_money"].ToString(), font));
                            ptable.AddCell(cell);
                        }
                        if (deliverdetails.Count > 1 && j != deliverdetails.Count)
                        {
                            td = new PdfPCell();
                            td.Colspan = 4;
                            td.BorderWidthTop = 0.2f;
                            td.DisableBorderSide(2);
                            ptable.AddCell(td);
                        }
                    }
                    ptable.WriteSelectedRows(0, -1, 10, 620, writer.DirectContent);
                }
                else
                {
                    PdfPTable ptable = new PdfPTable(4);
                    // ptable.WidthPercentage = 90;
                    // ptable.TotalWidth = ptable.WidthPercentage;
                    ptable.SetTotalWidth(new float[] { 100, 350, 70, 70 });
                    PdfPCell cell = new PdfPCell();
                    cell.BorderWidth = 0.1f;
                    cell = new PdfPCell(new Phrase("產品細項編號", font));
                    ptable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("產品名稱", font));
                    ptable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("規格", font));
                    ptable.AddCell(cell);
                    cell = new PdfPCell(new Phrase("數量", font));
                    ptable.AddCell(cell);
                    int j = 0;
                    foreach (var item in deliverdetails)
                    {
                        j++;
                        for (int i = 0; i < item.Count(); i++)
                        {
                            cell = new PdfPCell(new Phrase(item[i]["item_id"].ToString(), font));
                            ptable.AddCell(cell);
                            cell = new PdfPCell(new Phrase(item[i]["brand_name"].ToString() + "-" + item[i]["product_name"].ToString(), font));
                            ptable.AddCell(cell);
                            cell = new PdfPCell(new Phrase(item[i]["product_spec_name"].ToString(), font));
                            ptable.AddCell(cell);
                            cell = new PdfPCell(new Phrase(item[i]["buy_num"].ToString(), font));
                            ptable.AddCell(cell);
                        }
                        if (deliverdetails.Count > 1 && j != deliverdetails.Count)
                        {
                            cell = new PdfPCell();
                            cell.Colspan = 4;
                            cell.BorderWidthTop = 0.2f;
                            cell.DisableBorderSide(2);
                            ptable.AddCell(cell);
                        }
                    }
                    ptable.WriteSelectedRows(0, -1, 10, 620, writer.DirectContent);

                }

                cb.EndText();
                document.Close();
                writer.Resume();

                Response.Clear();
                Response.Charset = "gb2312";
                Response.ContentEncoding = System.Text.Encoding.UTF8;
                // Response.AddHeader("Content-Disposition", "attach-ment;filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".pdf ");
                Response.AddHeader("Content-Disposition", "attach-ment;filename=" + filename);
                Response.WriteFile(newPDFName);
            }

        }
        /// <summary>
        /// 貨運單  delivery_store=42 即 到店取貨 才須匯出貨運單
        /// </summary>
        public void GetShopbillsPDF()
        {
            string deliver_id = string.Empty;
            if (!string.IsNullOrEmpty(Request.Params["deliver_id"]))
            {
                deliver_id = Request.Params["deliver_id"];
            }
            string ticket_id = string.Empty;
            string fticket_id = string.Empty; ;
            if (!string.IsNullOrEmpty(Request.Params["ticket_id"]))
            {
                ticket_id = Request.Params["ticket_id"];
                ticket_id = ticket_id.Remove(ticket_id.LastIndexOf(','));
                string[] ticket_ids = ticket_id.Split(',');
                if (ticket_ids.Length > 0)
                {
                    fticket_id = ticket_ids[0];
                }
                else
                {
                    fticket_id = ticket_id;
                }

            }

            int i = 0;//用來計算表格數量,來分頁
            _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
            DataTable bills = _DeliverDetailMgr.GetWayBills(deliver_id, ticket_id);
            BaseFont bf = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            iTextSharp.text.Font fontChinese = new iTextSharp.text.Font(bf, 8, iTextSharp.text.Font.UNDERLINE, iTextSharp.text.BaseColor.RED);
            iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 12, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
            string filename = string.Empty;
            if (string.IsNullOrEmpty(ticket_id))
            {
                filename = "shopbills_T" + deliver_id.PadLeft(8, '0') + ".pdf";
            }
            else
            {
                filename = "shopbills_T" + fticket_id.PadLeft(8, '0') + ".pdf";
            }
            Document document = new Document(PageSize.A4, (float)5, (float)5, (float)20, (float)0.5);
            string newPDFName = Server.MapPath(excelPath) + filename;
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(newPDFName, FileMode.Create));
            document.Open();
            #region 條形碼
            foreach (DataRow dr in bills.Rows)
            {
                #region 條形碼要顯示的內容
                string code1 = string.Empty;
                string csvuser = "******";
                string deliver_stno = dr["deliver_stno"].ToString();
                string delivercode = "0".PadLeft(11 - dr["deliver_id"].ToString().Length, '0');
                if (deliver_stno.Length >= 1)
                {
                    switch (deliver_stno.Substring(0, 1))
                    {
                        case "F":
                            code1 = "1" + csvuser + "00";
                            break;
                        case "K":
                            code1 = "3" + csvuser + "00";
                            break;
                        case "L":
                            code1 = "2" + csvuser + "00";
                            break;
                        default:
                            break;
                    }
                }
                code1 += delivercode + dr["deliver_id"].ToString();
                int checkcode = 0;
                for (int j = 0; j < code1.Length; j++)
                {
                    checkcode += int.Parse(code1.Substring(j, 1));
                }
                checkcode = checkcode % 43;
                string[] checkcodemap = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S",
			     "T","U","V","W","X","Y","Z","-",".","SP","$","/","+","%" };
                code1 += checkcodemap.GetValue(checkcode).ToString();

                string code2 = string.Empty;
                code2 = csvuser + delivercode.Substring(0, 3) + "963";
                string code3 = string.Empty;
                string nreceivable = string.Empty;
                string ndeliver_id = string.Empty;
                ndeliver_id = (delivercode + dr["deliver_id"].ToString()).Substring(3, 8);
                nreceivable = "0".PadLeft(5 - dr["receivable"].ToString().Length, '0') + dr["receivable"].ToString();
                if (dr["order_payment"].ToString() == "20")
                {
                    code3 = ndeliver_id + "1" + nreceivable;
                }
                else
                {
                    code3 = ndeliver_id + "3" + nreceivable;
                }
                int basenum = 0;//奇數
                int evennum = 0;//偶數
                for (int k = 0; k < code2.Length; k++)
                {
                    if ((k + 1) % 2 == 1)
                    {
                        basenum += int.Parse(code2.Substring(k, 1));
                    }
                    else
                    {
                        evennum += int.Parse(code2.Substring(k, 1));
                    }
                }
                for (int l = 0; l < code3.Length; l++)
                {
                    if ((l + 1) % 2 == 1)
                    {
                        basenum += int.Parse(code3.Substring(l, 1));
                    }
                    else
                    {
                        evennum += int.Parse(code3.Substring(l, 1));
                    }
                }
                basenum = basenum % 11;
                evennum = evennum % 11;
                if (basenum == 10)
                {
                    basenum = 1;
                }
                if (evennum == 10)
                {
                    evennum = 9;
                }
                else if (evennum == 0)
                {
                    evennum = 8;
                }
                code3 += basenum.ToString() + evennum.ToString();
                #endregion
                BarCode.Code128 _Code = new BarCode.Code128();
                _Code.ValueFont = new System.Drawing.Font("宋体", 20);
                System.Drawing.Bitmap imgTemp1 = _Code.GetCodeImage((!string.IsNullOrEmpty(dr["dcrono"].ToString())) ? dr["dcrono"].ToString() : "0", BarCode.Code128.Encode.Code128A);
                imgTemp1.Save(System.AppDomain.CurrentDomain.BaseDirectory + "\\ImportUserIOExcel\\" + "Code.gif", System.Drawing.Imaging.ImageFormat.Gif);
                iTextSharp.text.Image IMG1 = iTextSharp.text.Image.GetInstance(Server.MapPath("../ImportUserIOExcel/Code.gif"));
                IMG1.ScaleToFit(200, 30);

                Chunk ck1 = new Chunk(IMG1, 0, 0); //图片可设置 偏移


                _Code = new BarCode.Code128();
                //如果條形碼顯示的內容過長的話,一定要注意設置的字體大小,字體過大,內容不會顯示
                _Code.ValueFont = new System.Drawing.Font("宋体", 18);
                System.Drawing.Bitmap imgTemp2 = _Code.GetCodeImage(code1, BarCode.Code128.Encode.Code128A);
                imgTemp2.Save(System.AppDomain.CurrentDomain.BaseDirectory + "\\ImportUserIOExcel\\" + "Code.gif", System.Drawing.Imaging.ImageFormat.Gif);
                iTextSharp.text.Image IMG2 = iTextSharp.text.Image.GetInstance(Server.MapPath("../ImportUserIOExcel/Code.gif"));
                IMG2.ScaleToFit(200, 30);
                Chunk ck2 = new Chunk(IMG2, 0, 0); //图片可设置 偏移

                _Code = new BarCode.Code128();
                _Code.ValueFont = new System.Drawing.Font("宋体", 20);
                System.Drawing.Bitmap imgTemp3 = _Code.GetCodeImage(code2, BarCode.Code128.Encode.Code128A);
                imgTemp3.Save(System.AppDomain.CurrentDomain.BaseDirectory + "\\ImportUserIOExcel\\" + "Code.gif", System.Drawing.Imaging.ImageFormat.Gif);
                iTextSharp.text.Image IMG3 = iTextSharp.text.Image.GetInstance(Server.MapPath("../ImportUserIOExcel/Code.gif"));
                IMG3.ScaleToFit(200, 30);
                Chunk ck3 = new Chunk(IMG3, 0, 0); //图片可设置 偏移

                _Code = new BarCode.Code128();
                _Code.ValueFont = new System.Drawing.Font("宋体", 18);
                System.Drawing.Bitmap imgTemp4 = _Code.GetCodeImage(code3, BarCode.Code128.Encode.Code128A);
                imgTemp4.Save(System.AppDomain.CurrentDomain.BaseDirectory + "\\ImportUserIOExcel\\" + "Code.gif", System.Drawing.Imaging.ImageFormat.Gif);
                iTextSharp.text.Image IMG4 = iTextSharp.text.Image.GetInstance(Server.MapPath("../ImportUserIOExcel/Code.gif"));
                IMG4.ScaleToFit(200, 30);
                Chunk ck4 = new Chunk(IMG4, 0, 0); //图片可设置 偏移


            #endregion
                if (i % 3 == 0 && i != 0)
                {
                    document.NewPage();
                }
                string stnm_1 = string.Empty;
                string stnm_2 = string.Empty;
                string stnm = dr["stnm"].ToString();
                if (dr["deliver_stno"].ToString().Length >= 1)
                {
                    switch (dr["deliver_stno"].ToString().Substring(0, 1))
                    {
                        case "F":
                            if (stnm.Length * 3 >= 6)
                            {
                                stnm_1 = stnm.Substring(0, 6 / 3);
                            }
                            else
                            {
                                stnm_1 = stnm.Substring(0, stnm.Length);
                            }
                            if (stnm.Length * 3 >= 40)
                            {
                                stnm_2 = stnm.Substring(6 / 3, 40 / 3);
                            }
                            else
                            {
                                if (stnm.Length * 3 >= 6)
                                {
                                    stnm_2 = stnm.Substring(6 / 3, stnm.Length - 6 / 3);
                                }
                            }
                            break;
                        case "K":
                            if (stnm.Length * 3 >= 4)
                            {
                                stnm_1 = stnm.Substring(0, 4 / 3);
                            }
                            else
                            {
                                stnm_1 = stnm.Substring(0, stnm.Length);
                            }
                            if (stnm.Length * 3 >= 40)
                            {
                                stnm_2 = stnm.Substring(2 / 3, 40 / 3);
                            }
                            else
                            {
                                if (stnm.Length * 3 > 2)
                                {
                                    stnm_2 = stnm.Substring(2 / 3, stnm.Length - 2 / 3);
                                }
                            }
                            break;
                        case "L":
                            if (stnm.Length * 3 >= 10)
                            {
                                stnm_1 = stnm.Substring(0, 10 / 3);
                            }
                            else
                            {
                                stnm_1 = stnm.Substring(0, stnm.Length);
                            }
                            if (stnm.Length * 3 >= 40)
                            {
                                stnm_2 = stnm.Substring(9 / 3, 40 / 3);
                            }
                            else
                            {
                                if (stnm.Length * 3 >= 9)
                                {
                                    stnm_2 = stnm.Substring(9 / 3, stnm.Length - 9 / 3);
                                }
                            }
                            break;
                        default:
                            break;
                    }
                }
                PdfPTable totaltable = new PdfPTable(3);
                totaltable.WidthPercentage = 100;
                totaltable.SetWidths(new int[] { 40, 2, 58 });
                PdfPTable table = new PdfPTable(3);
                #region 左邊框
                table.SetWidths(new int[] { 25, 15, 60 });
                table.DefaultCell.DisableBorderSide(1);
                table.DefaultCell.DisableBorderSide(2);
                table.DefaultCell.DisableBorderSide(4);
                table.DefaultCell.DisableBorderSide(8);
                PdfPCell cell;
                font = new iTextSharp.text.Font(bf, 14, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                cell = new PdfPCell(new PdfPCell(new Phrase(dr["dcrono"].ToString(), font)));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase("   提貨人:" + dr["delivery_name"].ToString(), font));
                cell.Colspan = 2;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase(stnm_1 + "\n" + stnm_2, font));
                cell.Colspan = 2;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase(ck1));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase(ck2));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                //cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                cell.Colspan = 3;
                table.AddCell(cell);
                font = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                cell = new PdfPCell(new Phrase("廠商出貨編號:" + dr["deliver_id"].ToString(), font));
                cell.Colspan = 3;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase("金額:" + dr["receivable"].ToString() + "元", font));
                cell.HorizontalAlignment = Element.ALIGN_LEFT;
                cell.Colspan = 3;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase("吉甲地在地好物 www.gigade100.com", font));
                cell.HorizontalAlignment = Element.ALIGN_LEFT;
                cell.Colspan = 3;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase("客服專線:(02) 2783-4997", font));
                cell.HorizontalAlignment = Element.ALIGN_LEFT;
                cell.Colspan = 3;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase("若需退貨請消費者聯繫上述電子商務網站\n\n\n\n\n\n", font));
                cell.HorizontalAlignment = Element.ALIGN_LEFT;
                cell.Colspan = 3;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                font = new iTextSharp.text.Font(bf, 14, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑  
                cell = new PdfPCell(new PdfPCell(new Phrase("D10", font)));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                table.AddCell(cell);
                cell = new PdfPCell();
                cell.Colspan = 2;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                #endregion
                totaltable.AddCell(table);
                cell = new PdfPCell();
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(8);
                totaltable.AddCell(cell);
                #region 右邊
                table = new PdfPTable(6);
                table.SetWidths(new int[] { 20, 20, 37, 10, 1, 12 });
                table.DefaultCell.DisableBorderSide(1);
                table.DefaultCell.DisableBorderSide(2);
                table.DefaultCell.DisableBorderSide(4);
                table.DefaultCell.DisableBorderSide(8);
                table.DefaultCell.UseAscender = true;
                table.HorizontalAlignment = Element.ALIGN_CENTER;
                //table.AddCell(new Phrase(dr["order_payment"].ToString() == "20" ? "取貨付款" : "取貨不付款", font));
                cell = new PdfPCell(new PdfPCell(new Phrase(dr["order_payment"].ToString() == "20" ? " 取貨付款" : " 取貨不付款", font)));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.Colspan = 3;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new PdfPCell(new Phrase("D10", font)));
                //cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase());
                if (dr["order_payment"].ToString() == "20")
                {
                    cell.Rowspan = 6;
                }
                else
                {
                    cell.Rowspan = 7;
                }
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                string delivery_name = string.Empty;
                for (int k = 0; k < dr["delivery_name"].ToString().Length; k++)
                {
                    delivery_name += dr["delivery_name"].ToString()[k] + "\n";
                }
                cell = new PdfPCell(new Phrase("吉\n甲\n地\n\n" + delivery_name, font));
                if (dr["order_payment"].ToString() == "20")
                {
                    cell.Rowspan = 6;
                }
                else
                {
                    cell.Rowspan = 7;
                }
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                //cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase(ck3));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.VerticalAlignment = Element.ALIGN_MIDDLE;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                cell.Colspan = 5;
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase(ck4));
                cell.UseAscender = true;
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                cell.Colspan = 5;
                table.AddCell(cell);

                if (dr["order_payment"].ToString() == "20")
                {
                    font = new iTextSharp.text.Font(bf, 16, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑
                    Phrase p = new Phrase("*應付金額:" + dr["receivable"].ToString() + "元*\n\n", font);
                    font = new iTextSharp.text.Font(bf, 12, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑
                    p.Add(new Phrase("消費者簽名:____________________\n\n\n\n\n", font));
                    cell = new PdfPCell(p);
                    cell.Colspan = 5;
                    cell.DisableBorderSide(1);
                    cell.DisableBorderSide(2);
                    cell.DisableBorderSide(4);
                    cell.DisableBorderSide(8);
                    table.AddCell(cell);

                }
                else
                {
                    Phrase p = new Phrase();
                    font = new iTextSharp.text.Font(bf, 14, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑
                    p.Add(new Phrase(" *憑身分證件正本領貨*\n\n", font));
                    font = new iTextSharp.text.Font(bf, 12, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑
                    p.Add(new Phrase(" 消費者簽名:____________________\n\n", font));
                    p.Add(new Phrase(" 消費者身分證末四碼\n", font));
                    cell = new PdfPCell(p);
                    cell.Colspan = 5;
                    cell.DisableBorderSide(1);
                    cell.DisableBorderSide(2);
                    cell.DisableBorderSide(4);
                    cell.DisableBorderSide(8);
                    table.AddCell(cell);

                    PdfPTable stable = new PdfPTable(4);
                    stable.SetTotalWidth(new float[] { 20, 20, 20, 20 });
                    stable.DefaultCell.FixedHeight = 10;
                    stable.AddCell(new Phrase());
                    stable.AddCell(new Phrase());
                    stable.AddCell(new Phrase());
                    stable.AddCell(new Phrase());
                    //p.Add(new Phrase("請核對證件\n並  簽  名", font));
                    cell = new PdfPCell(stable);
                    cell.DisableBorderSide(1);
                    cell.DisableBorderSide(2);
                    cell.DisableBorderSide(4);
                    cell.DisableBorderSide(8);
                    table.AddCell(cell);
                    cell = new PdfPCell(new Phrase("請核對證件\n並  簽  名\n", font));
                    //cell.AddElement(new Phrase("請核對證件\n並  簽  名", font));
                    cell.Colspan = 4;
                    cell.DisableBorderSide(1);
                    cell.DisableBorderSide(2);
                    cell.DisableBorderSide(4);
                    cell.DisableBorderSide(8);
                    cell.UseAscender = true;
                    cell.HorizontalAlignment = Element.ALIGN_CENTER;
                    table.AddCell(cell);

                }
                font = new iTextSharp.text.Font(bf, 12, iTextSharp.text.Font.BOLD, new iTextSharp.text.BaseColor(0, 0, 0));//黑
                cell = new PdfPCell(new Phrase("\n門市結帳人員簽名:____________________", font));
                cell.Colspan = 5;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                table.AddCell(cell);
                string estimated_delivery_date = (!string.IsNullOrEmpty(dr["estimated_delivery_date"].ToString())) ? DateTime.Parse(dr["estimated_delivery_date"].ToString()).ToString("yyyy/MM/dd") : "";

                cell = new PdfPCell(new PdfPCell(new Phrase(dr["deliver_stno"].ToString(), font)));
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                table.AddCell(cell);
                cell = new PdfPCell(new Phrase(" " + estimated_delivery_date, font));
                cell.Colspan = 2;
                cell.DisableBorderSide(1);
                cell.DisableBorderSide(2);
                cell.DisableBorderSide(4);
                cell.DisableBorderSide(8);
                //cell.HorizontalAlignment = Element.ALIGN_LEFT;
                table.AddCell(cell);
                cell = new PdfPCell(new PdfPCell(new Phrase(dr["dcrono"].ToString(), font)));
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                table.AddCell(cell);
                table.AddCell("");
                //cell = new PdfPCell(new Phrase("11111111111", font));
                //cell.Colspan = 5;
                //table.AddCell(cell);

                totaltable.AddCell(table);
                totaltable.SpacingAfter = 25f;
                #endregion
                document.Add(totaltable);
            }


            document.Close();

            Response.Clear();
            Response.Charset = "gb2312";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            // Response.AddHeader("Content-Disposition", "attach-ment;filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".pdf ");
            Response.AddHeader("Content-Disposition", "attach-ment;filename=" + filename);
            Response.WriteFile(newPDFName);


        }
        /// <summary>
        /// 修改物流單號 出貨日期 出貨信息
        /// </summary>
        /// <returns></returns>
        public HttpResponseBase DeliverDetailEdit()
        {
            string json = string.Empty;
            try
            {
                _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
                string deliver_id = Request.Params["deliver_id"];
                string delivery_store = string.Empty;
                string delivery_code = string.Empty;
                string delivery_date = string.Empty;
                string sms_date = string.Empty;
                bool success = false;
                if (!string.IsNullOrEmpty(Request.Params["delivery_store"]) && !string.IsNullOrEmpty(Request.Params["delivery_code"]))
                {
                    delivery_store = Request.Params["delivery_store"];
                    delivery_code = Request.Params["delivery_code"];
                    delivery_date = Request.Params["delivery_date"];
                    success = _DeliverDetailMgr.DeliveryCode(deliver_id, delivery_store, delivery_code, delivery_date, "0");
                    if (success)
                    {
                        json = "{success:true}";
                    }
                    else
                    {
                        json = "{success:false}";
                    }
                }
                else if (!string.IsNullOrEmpty(Request.Params["sms_date"]))
                {
                    Sms sms = new Sms();
                    sms.memo = deliver_id;
                    string smsid = _DeliverDetailMgr.GetSmsId(sms);
                    if (!string.IsNullOrEmpty(smsid))
                    {
                        int i = _DeliverDetailMgr.UpSmsTime(deliver_id, sms_date, smsid);
                        if (i > 0)
                        {
                            json = "{success:true}";
                        }
                        else
                        {
                            json = "{success:false}";
                        }
                    }
                    else
                    {
                        json = "{success:false}";
                    }
                }
                else
                {
                    DeliverMaster dm = new DeliverMaster();
                    int type = int.Parse(Request.Params["type"]);
                    dm.deliver_id = uint.Parse(deliver_id);
                    if (type == 1)
                    {
                        if (!string.IsNullOrEmpty(Request.Params["estimated_arrival_date"]))
                        {
                            dm.estimated_arrival_date = DateTime.Parse(Request.Params["estimated_arrival_date"]);
                        }
                        if (!string.IsNullOrEmpty(Request.Params["estimated_delivery_date"]))
                        {
                            dm.estimated_delivery_date = DateTime.Parse(Request.Params["estimated_arrival_date"]);
                        }
                        dm.estimated_arrival_period = int.Parse(Request.Params["estimated_arrival_period"]);
                        //dm.estimated_delivery_date = DateTime.Parse(Request.Params["estimated_delivery_date"]);

                    }
                    if (type == 2)
                    {
                        dm.delivery_name = Request.Params["delivery_name"];
                        dm.delivery_mobile = Request.Params["delivery_mobile"];
                        dm.delivery_phone = Request.Params["delivery_phone"];
                        dm.delivery_zip = uint.Parse(Request.Params["delivery_zip"]);
                        dm.delivery_address = Request.Params["delivery_address"];
                    }
                    int j = _DeliverDetailMgr.DeliverMasterEdit(dm, type);
                    if (j == 1)
                    {
                        json = "{success:true}";
                    }
                    else
                    {
                        json = "{success:false}";
                    }
                }
            }
            catch (Exception ex)
            {
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
                json = "{success:false}";
            }
            this.Response.Clear();
            this.Response.Write(json);
            this.Response.End();
            return this.Response;

        }
        /// <summary>
        /// 订单出货明细
        /// </summary>
        public void GetOrderDetailsPDF()
        {
            string deliver_id = Request.Params["deliver_id"];
            _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
            DataTable orderdeliver = _DeliverDetailMgr.GetOrderDelivers(deliver_id);
            Dictionary<string, string> dicproduct_freight_set = new Dictionary<string, string> { { "1", "1" }, { "2", "2" }, { "3", "1" }, { "4", "2" }, { "5", "5" }, { "6", "5" } };
            BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            iTextSharp.text.Font font = new iTextSharp.text.Font(bfChinese, 12, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑

            string filename = "order_details_D" + deliver_id.PadLeft(8, '0') + ".pdf";
            Document document = new Document(PageSize.A4, (float)5, (float)5, (float)20, (float)0.5);
            string newPDFName = Server.MapPath(excelPath) + filename;
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(newPDFName, FileMode.Create));
            document.Open();

            PdfContentByte cb = writer.DirectContent;

            if (orderdeliver.Rows.Count > 0)
            {
                #region 生成條形碼
                BarCode.Code128 _Code = new BarCode.Code128();
                _Code.ValueFont = new System.Drawing.Font("宋体", 20);
                System.Drawing.Bitmap imgTemp = _Code.GetCodeImage("D" + orderdeliver.Rows[0]["deliver_id"].ToString().PadLeft(8, '0'), BarCode.Code128.Encode.Code128A);
                imgTemp.Save(System.AppDomain.CurrentDomain.BaseDirectory + "\\ImportUserIOExcel\\" + "Code.gif", System.Drawing.Imaging.ImageFormat.Gif);
                iTextSharp.text.Image IMG = iTextSharp.text.Image.GetInstance(Server.MapPath("../ImportUserIOExcel/Code.gif"));
                IMG.ScaleToFit(200, 30);
                IMG.SetAbsolutePosition(345, 740);
                #endregion

                cb.BeginText();
                cb.SetFontAndSize(bfChinese, 20);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "吉甲地市集出貨明細", 30, 750, 0);
                //首購
                if (orderdeliver.Rows[0]["priority"].ToString() == "1")
                {
                    PdfPTable ot = new PdfPTable(1);
                    ot.SetTotalWidth(new float[] { 190 });
                    PdfPCell c = new PdfPCell(new Phrase("", font));
                    c.FixedHeight = 30;
                    c.BorderWidthBottom = 0.5f;
                    c.BorderWidthLeft = 0.5f;
                    c.BorderWidthRight = 0.5f;
                    c.BorderWidthTop = 0.5f;
                    ot.AddCell(c);
                    ot.WriteSelectedRows(0, -1, 29, 770, cb);
                }
                cb.AddImage(IMG);
                if (orderdeliver.Rows[0]["channel"].ToString() != "1")
                {
                    cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, orderdeliver.Rows[0]["channel_name_simple"].ToString(), 80, 700, 0);
                }
                if (orderdeliver.Rows[0]["retrieve_mode"].ToString() == "1")
                {
                    cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "7-11取貨", 200, 700, 0);
                }
                cb.SetFontAndSize(bfChinese, 10);
                string freight_set = string.Empty;
                switch (orderdeliver.Rows[0]["freight_set"].ToString().Trim())
                {
                    case "1":
                        freight_set = "常溫";
                        break;
                    case "2":
                        freight_set = "冷凍";
                        break;
                    case "5":
                        freight_set = "冷藏";
                        break;
                }
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, freight_set, 345, 785, 0);
                string estimated_arrival_period = string.Empty;
                if (orderdeliver.Rows[0]["estimated_arrival_period"].ToString() != "0")
                {
                    switch (orderdeliver.Rows[0]["estimated_arrival_period"].ToString().Trim())
                    {
                        case "0":
                            estimated_arrival_period = "不限時";
                            break;
                        case "1":
                            estimated_arrival_period = "12:00以前";
                            break;
                        case "2":
                            estimated_arrival_period = "12:00-17:00";
                            break;
                        case "3":
                            estimated_arrival_period = "17:00-20:00";
                            break;
                    }

                    cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, estimated_arrival_period, 345, 773, 0);
                }

            }
            cb.SetFontAndSize(bfChinese, 10);
            //cb.SetTextMatrix(150,20);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "訂購人:", 10, 680, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "收件人:", 200, 680, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "付款單號:", 10, 660, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "收件地址:", 200, 660, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "訂購時間:", 10, 640, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "聯絡電話:", 200, 640, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "付款時間:", 10, 620, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "假日可收貨:", 200, 620, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "出貨備註:", 10, 600, 0);
            cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "訂單明細:", 10, 580, 0);
            if (orderdeliver.Rows.Count > 0 && orderdeliver.Rows[0]["receivable"].ToString() != "0")
            {
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "應收金額:" + orderdeliver.Rows[0]["receivable"].ToString(), 200, 580, 0);
            }

            string address = string.Empty;
            string deliver_note = string.Empty;
            if (orderdeliver.Rows.Count > 0)
            {
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, orderdeliver.Rows[0]["order_name"].ToString(), 65, 680, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, orderdeliver.Rows[0]["delivery_name"].ToString(), 250, 680, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, orderdeliver.Rows[0]["order_id"].ToString(), 65, 660, 0);
                address += CommonFunction.ZipAddress(orderdeliver.Rows[0]["delivery_zip"].ToString()) + orderdeliver.Rows[0]["delivery_address"].ToString();

                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, address, 250, 660, 0);
                string order_createdate = orderdeliver.Rows[0]["order_createdate"].ToString() != "0" ? CommonFunction.GetNetTime(long.Parse(orderdeliver.Rows[0]["order_createdate"].ToString())).ToString("yyyy-MM-dd HH:mm:ss") : "";
                string money_collect_date = orderdeliver.Rows[0]["money_collect_date"].ToString() != "0" ? CommonFunction.GetNetTime(long.Parse(orderdeliver.Rows[0]["money_collect_date"].ToString())).ToString("yyyy-MM-dd HH:mm:ss") : "";
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, order_createdate, 65, 640, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, orderdeliver.Rows[0]["delivery_mobile"].ToString(), 250, 640, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, money_collect_date, 65, 620, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, orderdeliver.Rows[0]["holiday_deliver"].ToString() == "1" ? "可" : "不可", 260, 620, 0);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, orderdeliver.Rows[0]["note_order"].ToString().Trim(), 65, 600, 0);
                if (orderdeliver.Rows[0]["delivery_store"].ToString() == "12")
                {
                    deliver_note = "*自取(取貨地址:台北市南港區八德路4段768巷7號6樓之1,取貨時間週一~週五,AM9:00~PM6:00)";
                }
                else if (orderdeliver.Rows[0]["delivery_store"].ToString() == "13")
                {
                    deliver_note = "*自取(取貨地址:新北市板橋區三民路二段33號21樓,取貨時間週一~週五,AM9:00~PM6:00)";
                }
                else if (orderdeliver.Rows[0]["delivery_store"].ToString() == "14")
                {
                    deliver_note = "*自取(取貨地址:新北市永和區成功路一段80號20樓,取貨時間週一~週五,AM9:00~PM6:00)";
                }
                cb.SetFontAndSize(bfChinese, 8);
                cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, deliver_note, 65, 580, 0);
            }
            cb.EndText();
            PdfPTable ptable = new PdfPTable(7);
            ptable.WidthPercentage = 98;
            ptable.SetTotalWidth(new float[] { 50, 280, 50, 50, 50, 50, 50 });
            PdfPCell cell;
            font = new iTextSharp.text.Font(bfChinese, 8, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑
            cell = new PdfPCell(new Phrase("商品編號", font));
            cell.DisableBorderSide(2);
            cell.DisableBorderSide(8);
            ptable.AddCell(cell);
            cell = new PdfPCell(new Phrase("商品名稱", font));
            cell.DisableBorderSide(2);
            cell.DisableBorderSide(8);
            ptable.AddCell(cell);
            cell = new PdfPCell(new Phrase("托運單屬性", font));
            cell.DisableBorderSide(2);
            cell.DisableBorderSide(8);
            ptable.AddCell(cell);
            cell = new PdfPCell(new Phrase("數量", font));
            cell.DisableBorderSide(2);
            cell.DisableBorderSide(8);
            ptable.AddCell(cell);
            cell = new PdfPCell(new Phrase("本次出貨", font));
            cell.DisableBorderSide(2);
            cell.DisableBorderSide(8);
            ptable.AddCell(cell);
            cell = new PdfPCell(new Phrase("預計出貨日", font));
            cell.DisableBorderSide(2);
            cell.DisableBorderSide(8);
            ptable.AddCell(cell);
            cell = new PdfPCell(new Phrase("供應商自出", font));
            cell.DisableBorderSide(2);
            ptable.AddCell(cell);
            PdfPCell td;
            string lastdeliverid = "0";
            ArrayList normal = new ArrayList();
            ArrayList low = new ArrayList();
            ArrayList lowstore = new ArrayList();
            DataRow[] sinceorder = new DataRow[] { };

            DataRow[] singleproduct = new DataRow[] { };//單一商品
            DataRow[] fatherproduct = new DataRow[] { };//組合商品中的父商品
            DataRow[] sonproduct = new DataRow[] { };//組合商品中的子商品
            ArrayList combine = new ArrayList();
            List<DataRow[]> orderdelivers = new List<DataRow[]>();

            sinceorder = orderdeliver.Select("dtype=2 and combined_mode<=1 ", "item_id asc");//自出商品
            singleproduct = orderdeliver.Select("dtype <>2 and combined_mode<=1  ", "item_id asc");//單一商品
            if (singleproduct.Count() > 0)
            {
                orderdelivers.Add(singleproduct);
            }
            fatherproduct = orderdeliver.Select(" combined_mode>1 and item_mode=1", "item_id asc");//組合商品中父商品是否存在
            foreach (var item in fatherproduct)
            {
                combine.Add(item);
                sonproduct = orderdeliver.Select(" combined_mode>1 and item_mode<>1 and parent_id=" + item["parent_id"] + " and pack_id=" + item["pack_id"], "item_id asc");//對應組合商品中的子商品
                foreach (var son in sonproduct)
                {
                    son["buy_num"] = (int.Parse(son["buy_num"].ToString()) * int.Parse(son["parent_num"].ToString())).ToString();
                    combine.Add(son);
                }
            }
            if (combine.Count > 0)
            {
                orderdelivers.Add((DataRow[])combine.ToArray(typeof(DataRow)));
            }
            //區分常溫、冷凍、冷藏
            foreach (var item in orderdelivers)
            {
                foreach (var row in item)
                {
                    string s = row["product_freight_set"].ToString();
                    switch (row["product_freight_set"].ToString())
                    {
                        case "1":
                        case "3":
                            normal.Add(row);//常溫
                            break;
                        case "2":
                        case "4":
                            low.Add(row);//冷凍
                            break;
                        case "5":
                        case "6":
                            lowstore.Add(row);//冷藏
                            break;
                        default:
                            break;
                    }
                }
            }

            orderdelivers = new List<DataRow[]>();
            if (normal.Count > 0)
            {
                orderdelivers.Add((DataRow[])normal.ToArray(typeof(DataRow)));
            }
            if (low.Count > 0)
            {
                orderdelivers.Add((DataRow[])low.ToArray(typeof(DataRow)));
            }
            if (lowstore.Count > 0)
            {
                orderdelivers.Add((DataRow[])lowstore.ToArray(typeof(DataRow)));
            }
            if (sinceorder.Count() > 0)
            {
                orderdelivers.Add(sinceorder);
            }
            int j = 0;
            foreach (var item in orderdelivers)
            {
                j++;
                for (int i = 0; i < item.Count(); i++)
                {
                    if (item[i]["ddeliver_id"].ToString() != lastdeliverid || i == 0)
                    {
                        lastdeliverid = item[i]["ddeliver_id"].ToString();//以一個出貨單號為界限
                        if (lastdeliverid != "0" || i == 0)
                        {
                            td = new PdfPCell();
                            td.Colspan = 7;
                            td.DisableBorderSide(2);
                            td.DisableBorderSide(4);
                            td.DisableBorderSide(8);
                            //td.BorderWidthTop = 0.2f;
                            ptable.AddCell(td);
                        }
                    }
                    string item_id = string.Empty;
                    if (item[i]["item_mode"].ToString() == "1")
                    {
                        item_id = item[i]["parent_id"].ToString();
                    }
                    else
                    {
                        item_id = item[i]["item_id"].ToString();
                    }
                    font = new iTextSharp.text.Font(bfChinese, 8, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑
                    td = new PdfPCell(new Phrase(item_id, font));
                    td.DisableBorderSide(1);
                    td.DisableBorderSide(2);
                    td.DisableBorderSide(8);
                    //td.BorderWidthLeft = 0.2f;
                    ptable.AddCell(td);
                    string datacontent = ((item[i]["product_mode"].ToString() == "2" && item[i]["item_mode"].ToString() != "1") ? "*" : " ") + item[i]["brand_name"].ToString() + "-" + item[i]["product_name"].ToString() + item[i]["product_spec_name"].ToString();
                    if (item[i]["combined_mode"].ToString() != "0" && item[i]["item_mode"].ToString() == "2")
                    {
                        datacontent = "  " + datacontent;
                    }
                    td = new PdfPCell(new Phrase(datacontent, font));
                    td.DisableBorderSide(1);
                    td.DisableBorderSide(2);
                    td.DisableBorderSide(8);
                    ptable.AddCell(td);
                    string value = string.Empty;
                    string freight_set = string.Empty;
                    if (dicproduct_freight_set.TryGetValue(item[i]["product_freight_set"].ToString(), out value))
                    {

                    }
                    switch (value)
                    {
                        case "1":
                            freight_set = "常溫";
                            break;
                        case "2":
                            freight_set = "冷凍";
                            break;
                        case "5":
                            freight_set = "冷藏";
                            break;
                    }
                    td = new PdfPCell(new Phrase(freight_set, font));
                    td.DisableBorderSide(1);
                    td.DisableBorderSide(2);
                    td.DisableBorderSide(8);
                    //td.BorderWidthLeft = 0.2f;
                    ptable.AddCell(td);
                    font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑
                    td = new PdfPCell(new Phrase(item[i]["item_mode"].ToString() != "1" ? item[i]["buy_num"].ToString() : "", font));
                    td.DisableBorderSide(1);
                    td.DisableBorderSide(2);
                    td.DisableBorderSide(8);
                    // td.BorderWidthLeft = 0.2f;
                    ptable.AddCell(td);
                    td = new PdfPCell();
                    td.DisableBorderSide(1);
                    td.DisableBorderSide(2);
                    td.DisableBorderSide(8);
                    //td.BorderWidthLeft = 0.2f;
                    ptable.AddCell(td);
                    td = new PdfPCell();
                    td.DisableBorderSide(1);
                    td.DisableBorderSide(2);
                    td.DisableBorderSide(8);
                    //td.BorderWidthLeft = 0.2f;
                    ptable.AddCell(td);

                    Image image = Image.GetInstance(Server.MapPath("../Content/img/icons/mark.png"));
                    image.ScalePercent(5, 5);
                    if (item[i]["dtype"].ToString() == "2")
                    {
                        td = new PdfPCell(image, false);
                    }
                    else
                    {
                        td = new PdfPCell();
                    }
                    td.HorizontalAlignment = Element.ALIGN_CENTER;
                    td.VerticalAlignment = Element.ALIGN_MIDDLE;
                    td.DisableBorderSide(1);
                    td.DisableBorderSide(2);
                    ptable.AddCell(td);
                }
            }
            string note_order = orderdeliver.Rows.Count.ToString() != "0" ? orderdeliver.Rows[0]["note_order"].ToString().Trim() : "";
            cell = new PdfPCell(new Phrase(new Chunk("備註:" + note_order, font)));
            cell.Colspan = 7;
            cell.HorizontalAlignment = Element.ALIGN_LEFT;
            ptable.AddCell(cell);
            PdfPTable nulltable = new PdfPTable(2);
            nulltable.SetWidths(new int[] { 20, 20 });
            nulltable.DefaultCell.DisableBorderSide(1);
            nulltable.DefaultCell.DisableBorderSide(2);
            nulltable.DefaultCell.DisableBorderSide(4);
            nulltable.DefaultCell.DisableBorderSide(8);
            nulltable.AddCell("");
            nulltable.AddCell("");
            nulltable.SpacingAfter = 250;
            document.Add(nulltable);
            ptable.SpacingAfter = 50;
            document.Add(ptable);

            font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑
            document.Add(new Phrase("吉甲地市集網路平台購物發票說明:\n", font));
            font = new iTextSharp.text.Font(bfChinese, 8, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑
            document.Add(new Phrase("若您訂購時未選擇開立三聯式發票,平台一律開立電子發票。\n", font));
            document.Add(new Phrase("發票將於該筆訂單商品完全出貨之後第10天開立並以E-Mail通知您。\n", font));
            document.Add(new Phrase("如需紙本發票請來信客服中心,會計部門將會依需求將電子發票印出並以平信郵寄約2~7個工作天內送達。\n", font));
            document.Add(new Phrase("託管發票將會在單月26日進行對獎作業後,系統將會發信通知中獎發票持有人,\n", font));
            document.Add(new Phrase("且為保障您的權益,我們將在七個工作天內,以掛號方式把中獎發票寄給您。\n", font));
            font = new iTextSharp.text.Font(bfChinese, 10, iTextSharp.text.Font.NORMAL, new iTextSharp.text.BaseColor(0, 0, 0));//黑
            document.Add(new Phrase("祝您購物愉快!", font));
            document.Close();
            writer.Resume();

            Response.Clear();
            Response.Charset = "gb2312";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AddHeader("Content-Disposition", "attach-ment;filename=" + filename);
            Response.WriteFile(newPDFName);
        }
        /// <summary>
        /// 下一次出貨
        /// </summary>
        /// <returns></returns>
        public HttpResponseBase Split()
        {
            string json = string.Empty;
            try
            {
                _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
                string deliver_id = Request.Params["deliver_id"];
                string detail_ids = Request.Params["detail_ids"];
                string[] detailids = detail_ids.Split(',');
                string newdeliverid = _DeliverDetailMgr.Split(deliver_id, detailids);
                if (!string.IsNullOrEmpty(newdeliverid))
                {
                    json = "{success:true,msg:" + newdeliverid + "}";
                }
                else
                {
                    json = "{success:false:msg:}";
                }


            }
            catch (Exception ex)
            {
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
                json = "{success:false:msg:}";
            }
            this.Response.Clear();
            this.Response.Write(json);
            this.Response.End();
            return this.Response;

        }
        /// <summary>
        /// 未到貨
        /// </summary>
        /// <returns></returns>
        public HttpResponseBase LackDelivery()
        {
            string json = string.Empty;
            try
            {
                _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
                string deliver_id = Request.Params["deliver_id"];
                string detail_id = Request.Params["detail_id"];
                bool success = _DeliverDetailMgr.NoDelivery(deliver_id, detail_id);
                if (success == true)
                {
                    json = "{success:true}";
                }
                else
                {
                    json = "{success:false}";
                }
            }
            catch (Exception ex)
            {
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
                json = "{success:false}";
            }
            this.Response.Clear();
            this.Response.Write(json);
            this.Response.End();
            return this.Response;

        }
 /// <summary>
 /// 獲取出貨信息
 /// </summary>
 /// <returns></returns>
 public HttpResponseBase GetDeliverMaster()
 {
     string json = String.Empty;
     List<DeliverMasterQuery> store = new List<DeliverMasterQuery>();
     DeliverMasterQuery query = new DeliverMasterQuery();
     try
     {
         _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
         if (!string.IsNullOrEmpty(Request.Params["deliver_id"]))
         {
             query.deliver_id = uint.Parse(Request.Params["deliver_id"]);
         }
         store = _DeliverDetailMgr.GetDeliverMaster(query);
         IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
         //这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式     
         timeConverter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
         json = "{success:true,data:" + JsonConvert.SerializeObject(store, Formatting.Indented, timeConverter) + "}";//返回json數據
     }
     catch (Exception ex)
     {
         Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
         logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
         logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
         log.Error(logMessage);
         json = "{success:false,data:[]}";
     }
     this.Response.Clear();
     this.Response.Write(json);
     this.Response.End();
     return this.Response;
 }
        /// <summary>
        /// 獲取grid的數據
        /// </summary>
        /// <returns></returns>
        public HttpResponseBase GetDeliverDetail()
        {
            string json = String.Empty;
            StringBuilder sb = new StringBuilder();
            List<DeliverDetailQuery> store = new List<DeliverDetailQuery>();
            List<DeliverDetailQuery> cancel = new List<DeliverDetailQuery>();//取消狀態列表
            List<DeliverDetailQuery> newstore = new List<DeliverDetailQuery>();//去掉組合商品中的父商品
            DeliverDetailQuery query = new DeliverDetailQuery();
            try
            {

                query.Start = Convert.ToInt32(Request.Params["start"] ?? "0");//用於分頁的變量
                query.Limit = Convert.ToInt32(Request.Params["limit"] ?? "25");//用於分頁的變量
                _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
                if (!string.IsNullOrEmpty(Request.Params["deliver_id"]))
                {
                    query.deliver_id = uint.Parse(Request.Params["deliver_id"]);
                }
                store = _DeliverDetailMgr.GetDeliverDetail(query);
                uint[] cancelstatus = { 5, 89, 90, 91, 92 };//取消
                IList cstatus = (IList)cancelstatus;
                foreach (var item in store)
                {
                    if (item.item_mode != 1)
                    {
                        newstore.Add(item);
                        if (cstatus.Contains(item.detail_status))
                        {
                            cancel.Add(item);
                        }

                    }
                }
                IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
                //这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式     
                timeConverter.DateTimeFormat = "yyyy-MM-dd";
                json = "{success:true,normaldata:" + JsonConvert.SerializeObject(newstore, Formatting.Indented, timeConverter) + ",canceldata:" + JsonConvert.SerializeObject(cancel, Formatting.Indented, timeConverter) + "}";//返回json數據

            }
            catch (Exception ex)
            {
                Log4NetCustom.LogMessage logMessage = new Log4NetCustom.LogMessage();
                logMessage.Content = string.Format("TargetSite:{0},Source:{1},Message:{2}", ex.TargetSite.Name, ex.Source, ex.Message);
                logMessage.MethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                log.Error(logMessage);
                json = "{success:false,data:[]}";
            }
            this.Response.Clear();
            this.Response.Write(json);
            this.Response.End();
            return this.Response;
        }
        public void GetWaybillsXls()
        {
            if (!string.IsNullOrEmpty(Request.Params["ticket_id"]))
            {
                string strTemp = Request.Params["ticket_id"].ToString();
                strTemp = strTemp.Remove(strTemp.LastIndexOf(','));

                string newPDFName = string.Empty;
                int iTemp = 0;
                if (int.TryParse(strTemp, out iTemp))
                {
                    newPDFName = "waybills_T" + strTemp.PadLeft(8, '0').ToString() + ".xls";
                }
                else
                {
                    string ss = strTemp.Substring(0, strTemp.IndexOf(','));
                    newPDFName = "waybills_T" + ss.PadLeft(8, '0').ToString() + ".xls";
                }

                _DeliverDetailMgr = new DeliverDetailMgr(mySqlConnectionString);
                DataTable dt = _DeliverDetailMgr.GetWayBills(null, strTemp);
                DataTable dtTemp = new DataTable();
                dtTemp.Columns.Add("訂單編號", typeof(String));
                dtTemp.Columns.Add("收件人姓名", typeof(String));
                dtTemp.Columns.Add("收件人電話", typeof(String));
                dtTemp.Columns.Add("收件人手機", typeof(String));
                dtTemp.Columns.Add("收件人地址", typeof(String));
                dtTemp.Columns.Add("出貨日期\nYYYYMMDD", typeof(String));
                dtTemp.Columns.Add("預定配達日期\n YYYYMMDD", typeof(String));
                dtTemp.Columns.Add("預定配達時段\n (1:中午前~2:12-17時~3:17-20時~4:不指定~5:20-21時)", typeof(String));
                dtTemp.Columns.Add("品名", typeof(String));
                dtTemp.Columns.Add("代收貨款", typeof(String));
                dtTemp.Columns.Add("溫層\n (1:常溫~2:冷藏~3:冷凍)", typeof(String));
                dtTemp.Columns.Add("距離\n  (0:同縣市~1:外縣市~2:離島)", typeof(String));
                dtTemp.Columns.Add("規格\n  (1:60cm~2:90cm~3:120cm~4:150cm)", typeof(String));
                dtTemp.Columns.Add("易碎 \n  (Y~N)", typeof(String));
                dtTemp.Columns.Add("精密 \n  (Y~N)", typeof(String));
                dtTemp.Columns.Add("備註", typeof(String));
                dtTemp.Columns.Add("假日可出貨", typeof(String));
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr = dtTemp.NewRow();
                    dr[0] = dt.Rows[i]["order_id"];
                    dr[1] = dt.Rows[i]["delivery_name"];
                    dr[2] = dt.Rows[i]["delivery_mobile"];

                    dr[3] = dt.Rows[i]["delivery_phone"];
                    dr[4] = CommonFunction.ZipAddress(dt.Rows[i]["delivery_zip"].ToString()) + dt.Rows[i]["delivery_address"].ToString();

                    dr[5] = DateTime.Now.ToString("yyyy-MM-dd");

                    dr[7] = dt.Rows[i]["estimated_arrival_period"];
                    if (dt.Rows[i]["estimated_arrival_period"].ToString() == "2")
                    {
                        dr[8] = "冷凍食品";
                    }

                    dr[9] = dt.Rows[i]["receivable"];
                    dr[10] = dt.Rows[i]["freight_set"];
                    dr[15] = dt.Rows[i]["note_order"];
                    dr[16] = dt.Rows[i]["holiday_deliver"].ToString() == "1" ? "是" : "否";
                    dtTemp.Rows.Add(dr);
                }

                MemoryStream ms = ExcelHelperXhf.ExportDT(dtTemp, "");
                //Response.Clear();
                //Response.Charset = "gb2312";
                //Response.ContentEncoding = System.Text.Encoding.UTF8;
                // Response.AddHeader("Content-Disposition", "attach-ment;filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".pdf ");
                Response.AddHeader("Content-Disposition", "attach-ment;filename=" + newPDFName);
                Response.BinaryWrite(ms.ToArray());
            }
        }