You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
321 lines
11 KiB
C#
321 lines
11 KiB
C#
using CrystalDecisions.CrystalReports.Engine;
|
|
using CrystalDecisions.Shared;
|
|
using CrystalDecisions.Web;
|
|
using NetLibrary.Express;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using TradeData;
|
|
using TradeModel;
|
|
|
|
namespace TradeManage.DingDan
|
|
{
|
|
public partial class DD_OrderPrint : System.Web.UI.Page
|
|
{
|
|
public static List<Order> ordermodel = null;
|
|
public static string idlist = "";
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (!IsPostBack)
|
|
{
|
|
ordermodel = null;
|
|
}
|
|
string idarr = "5342600";//.Split(',');
|
|
if (idlist == "") idlist = idarr;
|
|
else
|
|
{
|
|
if (idlist != idarr)
|
|
{
|
|
ordermodel = null;
|
|
idlist = idarr;
|
|
}
|
|
}
|
|
int printType = 0;
|
|
//int ExpressID = Convert.ToInt32(Session["ExpressID"].ToString());
|
|
int CompanyId = 1;
|
|
if (idarr == null || idarr == "")
|
|
return;
|
|
//List<int> orderlist = new List<int>();
|
|
//for (int i = 0; i < idarr.Length; i++)
|
|
//{
|
|
// orderlist.Add(Convert.ToInt32(idarr[i]));
|
|
//}
|
|
OrderPrintData opd = new OrderPrintData();
|
|
if (ordermodel == null)
|
|
ordermodel = opd.GetOrderPrint(idarr, CompanyId, printType);
|
|
if (ordermodel == null || ordermodel.Count() == 0)
|
|
return;
|
|
|
|
CrystalReportSource1.Report.FileName = ordermodel.First().ExpressRPT;
|
|
|
|
|
|
if (ordermodel.First().ExpressService.Contains("EUB") || ordermodel.First().ExpressService.Contains("E邮宝"))
|
|
{
|
|
List<OrderDetail> listod = new List<OrderDetail>();
|
|
foreach (var q in ordermodel)
|
|
{
|
|
if (q.ExpressService == ("EUB") || q.ExpressService == ("线上EUB") || q.ExpressService == ("Wish-E邮宝"))
|
|
{
|
|
//美国EUB邮编图片
|
|
q.Image = GetZipcodeImg(q.RevZip);
|
|
}
|
|
int count = 0;
|
|
foreach (var d in q.ListModel)
|
|
{
|
|
var check = listod.Where(o => o.JoinOrderCode == d.JoinOrderCode && o.GoodsCode == d.GoodsCode && o.GoodsSku == d.GoodsSku && o.TypeDesc == d.TypeDesc && o.GoodsName == d.GoodsName);
|
|
if (check.Count() == 0)
|
|
{
|
|
if (count > 2) break;
|
|
OrderDetail od = new OrderDetail();
|
|
|
|
od = d;
|
|
count++;
|
|
listod.Add(od);
|
|
}
|
|
|
|
}
|
|
}
|
|
//EUB子报表
|
|
Sections sections = CrystalReportSource1.ReportDocument.ReportDefinition.Sections;
|
|
|
|
DD_OrderPrint ppe = new DD_OrderPrint();
|
|
string back = setdata(listod, sections, ppe);
|
|
}
|
|
else
|
|
{
|
|
if (ordermodel.First().ExpressService.Contains("Wish") || ordermodel.First().ExpressService == "燕邮宝" || ordermodel.First().ExpressService.Contains("德邮"))
|
|
{
|
|
foreach (var q in ordermodel)
|
|
{
|
|
//Wish邮
|
|
if (q.ExpressService.Contains("Wish"))
|
|
q.RevAddress = GetInfoWH(q.RevCountry, q.RevAddress, q.RevMobile, q.RevPhone, q.ExpressService, q.AreaSerial, q.CountryName);
|
|
|
|
//燕邮宝
|
|
if (q.ExpressService.Contains("燕邮宝"))
|
|
q.AreaSerial = Getcode(q.RevZip);
|
|
//德国邮政
|
|
if (q.ExpressService.Contains("德邮"))
|
|
q.RevAddress = getDHLCustom(q.RevAddress);
|
|
}
|
|
}
|
|
foreach (var q in ordermodel)
|
|
{
|
|
if (q.JoinOrderCode != null)
|
|
{
|
|
q.OrderCode = q.JoinOrderCode;
|
|
}
|
|
}
|
|
}
|
|
|
|
CrystalReportSource1.ReportDocument.SetDataSource(ordermodel);
|
|
|
|
CrystalReportSource1.DataBind();
|
|
}
|
|
public string getDHLCustom(string custom)
|
|
{
|
|
string str = "";
|
|
string[] templist = custom.Split(',');
|
|
for (int i = 0; i < templist.Length; i++)
|
|
{
|
|
if (templist[i].Trim() != "") str += templist[i].Trim() + "\r\n";
|
|
}
|
|
return str;
|
|
}
|
|
|
|
protected string GetInfoWH(string CountryEn, string address, string phone, string tel, string shippmark, string code1, string CountryCN)
|
|
{
|
|
string result = "";
|
|
string pstr = "";
|
|
string str = "";
|
|
if (shippmark.Contains("平邮"))
|
|
{
|
|
|
|
str = CountryEn + " " + code1 + " " + CountryCN + "\r\n";
|
|
|
|
if (phone != null)
|
|
{
|
|
if (phone.Length > 5)
|
|
{
|
|
pstr = phone;
|
|
}
|
|
}
|
|
if (pstr == "") pstr = tel;
|
|
string[] alist = address.Split(',');
|
|
string a = alist[0] + "\r\n";
|
|
string zip = alist[alist.Length - 2].ToString();
|
|
for (int i = 1; i < alist.Length - 2; i++)
|
|
{
|
|
a += alist[i] + ",";
|
|
}
|
|
result = a + CountryEn + " " + zip + "\r\n" + str + "Phone:" + pstr;
|
|
}
|
|
else
|
|
{
|
|
//var data = pr.Where(o => o.Country.Trim() == CountryEn.Trim());
|
|
|
|
//if (data.Count() > 0)
|
|
//{
|
|
str = CountryEn + " " + code1 + " " + CountryCN + "\r\n";
|
|
//}
|
|
if (phone != null)
|
|
{
|
|
if (phone.Length > 5)
|
|
{
|
|
pstr = phone;
|
|
}
|
|
}
|
|
if (pstr == "") pstr = tel;
|
|
string[] alist = address.Split(',');
|
|
string a = alist[0] + "\r\n";
|
|
string zip = alist[alist.Length - 2].ToString();
|
|
for (int i = 1; i < alist.Length - 2; i++)
|
|
{
|
|
a += alist[i] + ",";
|
|
}
|
|
result = a + CountryEn + " " + zip + "\r\n" + str + "Phone:" + pstr;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public string Getcode(string data)
|
|
{
|
|
var str = "1";
|
|
try
|
|
{
|
|
string[] address = data.Split(',');
|
|
string temp = address[address.Length - 2];
|
|
int zip = Convert.ToInt32(temp);
|
|
if (zip >= 100000 && zip <= 199999)
|
|
str = "1";
|
|
if (zip >= 200000 && zip <= 299999)
|
|
str = "2";
|
|
if (zip >= 300000 && zip <= 399999)
|
|
str = "3";
|
|
if ((zip >= 400000 && zip <= 499999) || (zip >= 600000 && zip <= 629999) || (zip >= 640000 && zip <= 641999))
|
|
str = "4";
|
|
if (zip >= 500000 && zip <= 599999)
|
|
str = "5";
|
|
if ((zip >= 630000 && zip <= 639999) || (zip >= 642000 && zip <= 699999))
|
|
str = "6";
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
|
|
return str;
|
|
}
|
|
|
|
public static string setdata(List<OrderDetail> listod, Sections sections, DD_OrderPrint ppe)
|
|
{
|
|
ppe.CrystalReportSource1 = new CrystalDecisions.Web.CrystalReportSource();
|
|
|
|
|
|
foreach (Section section in sections)
|
|
{
|
|
ReportObjects reportObjects = section.ReportObjects;
|
|
foreach (ReportObject reportObject in reportObjects)
|
|
{
|
|
if (reportObject.Kind == ReportObjectKind.SubreportObject)
|
|
{
|
|
SubreportObject subreportObject = (SubreportObject)reportObject;
|
|
ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
|
|
subReportDocument.SetDataSource(listod);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
return "";
|
|
}
|
|
|
|
public byte[] GetZipcodeImg(string str)
|
|
{
|
|
string barType = "A";
|
|
string rawData = "420" + str;
|
|
if (string.IsNullOrEmpty(barType))
|
|
{
|
|
barType = "C";
|
|
}
|
|
int cw = 1;
|
|
int hm = 1;
|
|
int vm = 1;
|
|
bool showblank = false;
|
|
bool showfont = false;
|
|
int emSize = 12;
|
|
int textA = 1;
|
|
FontFamily ff = new FontFamily("Arial");
|
|
absCode128 code128;
|
|
code128 = new GS1_128(rawData);
|
|
|
|
code128.BarCellWidth = (byte)cw;
|
|
code128.HorizontalMulriple = (byte)hm;
|
|
code128.VerticalMulriple = (byte)vm;
|
|
code128.ShowBlank = showblank;
|
|
code128.DataDisplay = showfont;
|
|
code128.FontSize = emSize;
|
|
code128.FontFamily = ff;
|
|
code128.TextAlignment = (System.Drawing.StringAlignment)textA;
|
|
|
|
System.Drawing.Image img = code128.GetBarCodeImage();
|
|
|
|
ReportDocument rptDoc1;
|
|
System.IO.MemoryStream ms = new System.IO.MemoryStream();
|
|
|
|
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
|
|
ms.Position = 0;
|
|
byte[] imageBytes = new byte[ms.Length];
|
|
ms.Read(imageBytes, 0, imageBytes.Length);
|
|
// CrystalDecisions.CrystalReports.Engine.FieldObject img1 = rptDoc1.ReportDefinition.ReportObjects["crtimg"] as CrystalDecisions.CrystalReports.Engine.FieldObject;
|
|
//img1=img
|
|
return imageBytes;
|
|
}
|
|
public static DataTable ToDataTable<T>(IEnumerable<T> varlist)
|
|
{
|
|
DataTable dtReturn = new DataTable();
|
|
|
|
// column names
|
|
PropertyInfo[] oProps = null;
|
|
|
|
if (varlist == null) return dtReturn;
|
|
|
|
foreach (T rec in varlist)
|
|
{
|
|
if (oProps == null)
|
|
{
|
|
oProps = ((Type)rec.GetType()).GetProperties();
|
|
foreach (PropertyInfo pi in oProps)
|
|
{
|
|
Type colType = pi.PropertyType;
|
|
|
|
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition()
|
|
== typeof(Nullable<>)))
|
|
{
|
|
colType = colType.GetGenericArguments()[0];
|
|
}
|
|
|
|
dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
|
|
}
|
|
}
|
|
|
|
DataRow dr = dtReturn.NewRow();
|
|
|
|
foreach (PropertyInfo pi in oProps)
|
|
{
|
|
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue
|
|
(rec, null);
|
|
}
|
|
|
|
dtReturn.Rows.Add(dr);
|
|
}
|
|
return dtReturn;
|
|
}
|
|
}
|
|
|
|
} |