//行项目 protected override void BindingOrderItem(object[] array) { if (_stockIn.StockDetail == null) { _stockIn.StockDetail = new EntityCollection <StockDetail>(); } if (_itemDefine == null) { throw new ApplicationException("未发现行项目字段定义!"); } if (_itemDefine.Count() == array.Count()) { StockDetail stockItem = new StockDetail(); for (int i = 0; i < array.Count(); i++) { string fieldName = Regex.Replace(_itemDefine[i].ToString(), @"\s", ""); string fieldValue = Regex.Replace(array[i].ToString(), @"\s", ""); switch (fieldName) { case "商品编码": stockItem.CargoCode = fieldValue; string cargoCode = DbCommonMethod.ParsingCargoCode(fieldValue); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("商品不存在:" + fieldValue); } break; case "商品名称": stockItem.CargoName = fieldValue; break; case "规格": stockItem.CargoSpec = fieldValue; break; case "型号": //过滤型号值,如果型号是90.000,则去90,去掉小数点后面的0 double dou; string strModel = fieldValue; double douModel = 0; if (double.TryParse(fieldValue, out dou)) { douModel = dou; } if (douModel != 0 && strModel.Contains(".")) { string sdecimal = strModel.Substring(strModel.IndexOf(".") + 1, strModel.Length - strModel.IndexOf(".") - 1); int istring = Convert.ToInt32(sdecimal); if (istring == 0) { strModel = fieldValue.Substring(0, fieldValue.IndexOf(".")); } } stockItem.CargoModel = strModel; break; case "单位": stockItem.CargoUnits = fieldValue; break; case "数量": if (!string.IsNullOrEmpty(fieldValue)) { double d; if (double.TryParse(fieldValue, out d)) { stockItem.NumOriginalPlan = d; } } break; case "备注": stockItem.Comment = fieldValue; break; default: break; } } if (string.IsNullOrEmpty(stockItem.BillRowNumber)) { stockItem.BillRowNumber = _rowNum.ToString(); } //if (string.IsNullOrEmpty(_order.SICode)) // _order.SICode = KeyGenerator.Instance.GetStockInKey(); stockItem.NumCurrentPlan = stockItem.NumOriginalPlan; //订单数量=应收数量,默认值 stockItem.CargoStatus = 0; //手持机未完成 stockItem.BillCode = _stockIn.SICode; stockItem.SICode = _stockIn.SICode; stockItem.BillType = "02";//入库单 stockItem.InOutWHCode = _stockIn.WHCode; stockItem.StockIn = _stockIn; IEnumerable <KeyValuePair <string, object> > entityKeyValues = new KeyValuePair <string, object>[] { new KeyValuePair <string, object>("BillCode", stockItem.BillCode), new KeyValuePair <string, object>("BillRowNumber", stockItem.BillRowNumber) }; stockItem.EntityKey = new EntityKey("GoldEntities.StockDetail", entityKeyValues); _stockIn.StockDetail.Add(stockItem); } }
/// <summary> /// 从DataTable中获取销售订单明细实体列表 /// </summary> /// <param name="dt"></param> /// <param name="msg"></param> /// <returns></returns> private List <DAL.SalesOrderDetail> GetModelDetailFromDataTable(DataTable dt, out string msg) { try { List <DAL.SalesOrderDetail> list = new List <DAL.SalesOrderDetail>(); msg = ""; //接口协议文档中定义的字段 Dictionary <string, string> dataFieldNameDic = new Dictionary <string, string>(); dataFieldNameDic.Add("NCOrderCode", "订单编号 "); dataFieldNameDic.Add("DetailRowNumber", "行号"); dataFieldNameDic.Add("CargoCode", "商品编码"); dataFieldNameDic.Add("CargoName", "商品名称"); dataFieldNameDic.Add("CargoModel", "规格 "); dataFieldNameDic.Add("CargoSpec", "型号"); dataFieldNameDic.Add("CargoUnits", "单位"); dataFieldNameDic.Add("NumOriginalPlan", "数量"); dataFieldNameDic.Add("Price", "单价"); dataFieldNameDic.Add("Money", "金额"); dataFieldNameDic.Add("DiscountMoney", "折扣金额"); dataFieldNameDic.Add("WHName", "发出仓库 "); if (dt == null || dt.Rows.Count == 0) { msg = "用友系统返回数据集中无数据!"; return(new List <SalesOrderDetail>()); } StringBuilder errorColName = new StringBuilder(); //检查数据集中是否存在指定字段 foreach (KeyValuePair <string, string> kvp in dataFieldNameDic) { if (dt.Columns.Contains(kvp.Key) == false) { errorColName.Append(Environment.NewLine); errorColName.Append(kvp.Value); errorColName.Append("-"); errorColName.Append(kvp.Key); } } if (errorColName.Length > 0) { errorColName.Insert(0, "用友系统返回的数据集中未包含如下字段,不能进行有效解析!"); msg = errorColName.ToString(); return(new List <SalesOrderDetail>());; } //遍历数据集创建实体 foreach (DataRow dr in dt.Rows) { SalesOrderDetail newModel = new SalesOrderDetail(); newModel.NCOrderCode = DataCheckHelper.GetCellString(dr["NCOrderCode"]); newModel.DetailRowNumber = DataCheckHelper.GetCellString(dr["DetailRowNumber"]); newModel.CargoCode = DataCheckHelper.GetCellString(dr["CargoCode"]); string cargoCode = DbCommonMethod.ParsingCargoCode(newModel.CargoCode); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("单号" + newModel.NCOrderCode + ",商品不存在:" + newModel.CargoCode); } newModel.CargoName = DataCheckHelper.GetCellString(dr["CargoName"]); newModel.CargoModel = DataCheckHelper.GetCellString(dr["CargoModel"]); newModel.CargoSpec = DataCheckHelper.GetCellString(dr["CargoSpec"]); newModel.CargoUnits = DataCheckHelper.GetCellString(dr["CargoUnits"]); //数量 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["NumOriginalPlan"]))) { double d; if (double.TryParse(DataCheckHelper.GetCellString(dr["NumOriginalPlan"]), out d)) { newModel.NumOriginalPlan = d; } } //单价 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["Price"]))) { decimal d; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["Price"]), out d)) { newModel.Price = d; } } //金额 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["Money"]))) { decimal d; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["Money"]), out d)) { newModel.TotalMoney = d; } } //折后金额 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["DiscountMoney"]))) { decimal d; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["DiscountMoney"]), out d)) { newModel.DiscountMoney = d; } } newModel.WHName = DataCheckHelper.GetCellString(dr["WHName"]); if (newModel.WHName != "") { newModel.WHCode = DbCommonMethod.ParsingWarehouse(newModel.WHName); if (newModel.WHCode == "") { throw new ApplicationException("单号" + newModel.NCOrderCode + ",仓库不存在:" + newModel.WHName); } } newModel.DetailRowStatus = 2;//初始态 newModel.OrderCode = newModel.OrderCode; newModel.NCOrderCode = newModel.NCOrderCode; List <SalesOrderDetail> existSalesOrderDetail = (from r in list where r.NCOrderCode == newModel.NCOrderCode && r.DetailRowNumber == newModel.DetailRowNumber select r).ToList <SalesOrderDetail>(); if (existSalesOrderDetail == null || existSalesOrderDetail.Count == 0)//过滤重复数据 { list.Add(newModel); } } return(list); } catch (Exception ex) { msg = ex.Message; return(new List <SalesOrderDetail>());; } }
//行项目 protected override void BindingOrderItem(object[] array) { if (_order.PurchaseOrderDetail == null) { _order.PurchaseOrderDetail = new EntityCollection <PurchaseOrderDetail>(); } if (_itemDefine == null) { throw new ApplicationException("未发现行项目字段定义!"); } if (_itemDefine.Count() == array.Count()) { PurchaseOrderDetail orderItem = new PurchaseOrderDetail(); for (int i = 0; i < array.Count(); i++) { string fieldName = Regex.Replace(_itemDefine[i].ToString(), @"\s", ""); string fieldValue = Regex.Replace(array[i].ToString(), @"\s", ""); switch (fieldName) { case "行号": if (fieldValue.Contains(".")) //如果行号是10.000,则取10,去掉小数点后面的0 { orderItem.DetailRowNumber = fieldValue.Substring(0, fieldValue.IndexOf(".")); } else { orderItem.DetailRowNumber = fieldValue; } break; case "合同号": orderItem.ContractNo = fieldValue; break; case "存货编码": orderItem.CargoCode = fieldValue; string cargoCode = DbCommonMethod.ParsingCargoCode(fieldValue); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("商品不存在:" + fieldValue); } break; case "存货名称": orderItem.CargoName = fieldValue; break; case "规格": orderItem.CargoSpec = fieldValue; break; case "型号": //过滤型号值,如果型号是90.000,则去90,去掉小数点后面的0 double dou; string strModel = fieldValue; double douModel = 0; if (double.TryParse(fieldValue, out dou)) { douModel = dou; } if (douModel != 0 && strModel.Contains(".")) { string sdecimal = strModel.Substring(strModel.IndexOf(".") + 1, strModel.Length - strModel.IndexOf(".") - 1); int istring = Convert.ToInt32(sdecimal); if (istring == 0) { strModel = fieldValue.Substring(0, fieldValue.IndexOf(".")); } } orderItem.CargoModel = strModel; break; //case "自由项": // orderItem.FreedomItem = fieldValue; // break; case "收货仓库": orderItem.WHName = fieldValue; orderItem.WHCode = DbCommonMethod.ParsingWarehouse(fieldValue); if (string.IsNullOrEmpty(orderItem.WHCode)) { throw new ApplicationException("仓库不存在:" + fieldValue); } break; case "计量单位": orderItem.CargoUnits = fieldValue; break; case "数量": if (!string.IsNullOrEmpty(fieldValue)) { double d; if (double.TryParse(fieldValue, out d)) { orderItem.NumOriginalPlan = d; } } break; case "含税单价": if (!string.IsNullOrEmpty(fieldValue)) { decimal d; if (decimal.TryParse(fieldValue, out d)) { orderItem.PriceOfTax = d; } } break; case "单价": if (!string.IsNullOrEmpty(fieldValue)) { decimal d; if (decimal.TryParse(fieldValue, out d)) { orderItem.Price = d; } } break; case "扣率": if (!string.IsNullOrEmpty(fieldValue)) { double d; if (double.TryParse(fieldValue, out d)) { orderItem.DeductRate = d; } } break; case "净含税单价": if (!string.IsNullOrEmpty(fieldValue)) { decimal d; if (decimal.TryParse(fieldValue, out d)) { orderItem.PriceOfNetTax = d; } } break; case "净单价": if (!string.IsNullOrEmpty(fieldValue)) { decimal d; if (decimal.TryParse(fieldValue, out d)) { orderItem.NetPrice = d; } } break; case "金额": if (!string.IsNullOrEmpty(fieldValue)) { decimal d; if (decimal.TryParse(fieldValue, out d)) { orderItem.TotalPrice = d; } } break; case "税率": if (!string.IsNullOrEmpty(fieldValue)) { double d; if (double.TryParse(fieldValue, out d)) { orderItem.TaxRate = d; } } break; case "税额": if (!string.IsNullOrEmpty(fieldValue)) { decimal d; if (decimal.TryParse(fieldValue, out d)) { orderItem.TotalTax = d; } } break; case "价税合计": if (!string.IsNullOrEmpty(fieldValue)) { decimal d; if (decimal.TryParse(fieldValue, out d)) { orderItem.TotalTaxAndPrice = d; } } break; case "计划到货日期": if (!string.IsNullOrEmpty(fieldValue)) { DateTime d; if (DateTime.TryParse(fieldValue, out d)) { orderItem.PlanArrivalDate = d; } } break; case "币种": orderItem.CurrencyType = fieldValue; break; case "折本汇率": if (!string.IsNullOrEmpty(fieldValue)) { double d; if (double.TryParse(fieldValue, out d)) { orderItem.ExchangeRate = d; } } break; case "收货公司": orderItem.ReceiveCompany = fieldValue; break; case "收货库存组织": orderItem.ReceiveOrg = fieldValue; break; case "收票公司": orderItem.ReceiveBillCompany = fieldValue; break; default: break; } } orderItem.DetailRowStatus = 2;//初始态 orderItem.OrderCode = _order.OrderCode; orderItem.NCOrderCode = _order.NCOrderCode; orderItem.PurchaseOrder = _order; IEnumerable <KeyValuePair <string, object> > entityKeyValues = new KeyValuePair <string, object>[] { new KeyValuePair <string, object>("OrderCode", orderItem.OrderCode), new KeyValuePair <string, object>("DetailRowNumber", orderItem.DetailRowNumber) }; orderItem.EntityKey = new EntityKey("GoldEntities.PurchaseOrderDetail", entityKeyValues); _order.PurchaseOrderDetail.Add(orderItem); } }
/// <summary> /// 从DataTable中获取采购订单明细实体列表 /// </summary> /// <param name="dt"></param> /// <param name="msg"></param> /// <returns></returns> private List <DAL.StockDetail> GetModelDetailFromDataTable(DataTable dt, out string msg, string SICode, string WHCode) { try { List <DAL.StockDetail> list = new List <DAL.StockDetail>(); msg = ""; //接口协议文档中定义的字段 Dictionary <string, string> dataFieldNameDic = new Dictionary <string, string>(); dataFieldNameDic.Add("BillCode", "其他入库单号"); dataFieldNameDic.Add("DetailRowNumber", "行号"); dataFieldNameDic.Add("CargoCode", "商品编码"); dataFieldNameDic.Add("CargoName", "商品名称"); dataFieldNameDic.Add("CargoSpec", "规格"); dataFieldNameDic.Add("CargoModel", "型号"); dataFieldNameDic.Add("CargoUnits", "单位"); dataFieldNameDic.Add("NumOriginalPlan", "数量"); dataFieldNameDic.Add("Remark", "备注"); if (dt == null || dt.Rows.Count == 0) { msg = "用友系统返回数据集中无数据!"; return(new List <StockDetail>()); } StringBuilder errorColName = new StringBuilder(); //检查数据集中是否存在指定字段 foreach (KeyValuePair <string, string> kvp in dataFieldNameDic) { if (dt.Columns.Contains(kvp.Key) == false) { errorColName.Append(Environment.NewLine); errorColName.Append(kvp.Value); errorColName.Append("-"); errorColName.Append(kvp.Key); } } if (errorColName.Length > 0) { errorColName.Insert(0, "用友系统返回的数据集中未包含如下字段,不能进行有效解析!"); msg = errorColName.ToString(); return(new List <StockDetail>());; } //遍历数据集创建实体 foreach (DataRow dr in dt.Rows) { StockDetail newModel = new StockDetail(); //newModel.BillCode= DataCheckHelper.GetCellString(dr["BillCode"]); newModel.BillRowNumber = DataCheckHelper.GetCellString(dr["DetailRowNumber"]); //商品编码 newModel.CargoCode = DataCheckHelper.GetCellString(dr["CargoCode"]); string cargoCode = DbCommonMethod.ParsingCargoCode(newModel.CargoCode); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("单号" + DataCheckHelper.GetCellString(dr["BillCode"]) + ",商品不存在:" + newModel.CargoCode); } newModel.CargoName = DataCheckHelper.GetCellString(dr["CargoName"]); newModel.CargoSpec = DataCheckHelper.GetCellString(dr["CargoSpec"]); newModel.CargoModel = DataCheckHelper.GetCellString(dr["CargoModel"]); newModel.CargoUnits = DataCheckHelper.GetCellString(dr["CargoUnits"]); //数量 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["NumOriginalPlan"]))) { double d; if (double.TryParse(DataCheckHelper.GetCellString(dr["NumOriginalPlan"]), out d)) { newModel.NumOriginalPlan = d; } } newModel.Comment = DataCheckHelper.GetCellString(dr["Remark"]); newModel.NumCurrentPlan = newModel.NumOriginalPlan; //订单数量=应收数量,默认值 newModel.CargoStatus = 0; //手持机未完成 newModel.SICode = SICode; newModel.BillCode = newModel.SICode; newModel.BillType = CommonConvert.GetBillTypeCode("入库单"); newModel.InOutWHCode = WHCode; string bill = DataCheckHelper.GetCellString(dr["BillCode"]); List <StockDetail> existStockDetail = (from r in list where r.BillCode == bill && r.BillRowNumber == newModel.BillRowNumber select r).ToList <StockDetail>(); if (existStockDetail == null || existStockDetail.Count == 0)//过滤重复数据 { list.Add(newModel); } } return(list); } catch (Exception ex) { msg = ex.Message; return(new List <StockDetail>());; } }
protected override void BindingOrderItem(object[] array) { if (_order.ShiftOrderDetail == null) { _order.ShiftOrderDetail = new EntityCollection <ShiftOrderDetail>(); } if (_itemDefine == null) { throw new ApplicationException("未发现行项目字段定义!"); } if (_itemDefine.Count() == array.Count()) { ShiftOrderDetail orderItem = new ShiftOrderDetail(); for (int i = 0; i < array.Count(); i++) { string fieldName = Regex.Replace(_itemDefine[i].ToString(), @"\s", ""); string fieldValue = Regex.Replace(array[i].ToString(), @"\s", ""); switch (fieldName) { case "商品编码": orderItem.CargoCode = fieldValue; string cargoCode = DbCommonMethod.ParsingCargoCode(fieldValue); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("商品不存在:" + fieldValue); } break; case "商品名称": orderItem.CargoName = fieldValue; break; case "规格": orderItem.CargoSpec = fieldValue; break; case "型号": //过滤型号值,如果型号是90.000,则去90,去掉小数点后面的0 double dou; string strModel = fieldValue; double douModel = 0; if (double.TryParse(fieldValue, out dou)) { douModel = dou; } if (douModel != 0 && strModel.Contains(".")) { string sdecimal = strModel.Substring(strModel.IndexOf(".") + 1, strModel.Length - strModel.IndexOf(".") - 1); int istring = Convert.ToInt32(sdecimal); if (istring == 0) { strModel = fieldValue.Substring(0, fieldValue.IndexOf(".")); } } orderItem.CargoModel = strModel; break; case "单位": orderItem.CargoUnits = fieldValue; break; case "数量": if (!string.IsNullOrEmpty(fieldValue)) { double d; if (double.TryParse(fieldValue, out d)) { orderItem.NumOriginalPlan = d; } } break; default: break; } } if (string.IsNullOrEmpty(orderItem.DetailRowNumber)) { orderItem.DetailRowNumber = _rowNum.ToString(); } orderItem.DetailRowStatus = 2;//初始态 orderItem.OrderCode = _order.OrderCode; orderItem.NCOrderCode = _order.NCOrderCode; orderItem.ShiftOrder = _order; IEnumerable <KeyValuePair <string, object> > entityKeyValues = new KeyValuePair <string, object>[] { new KeyValuePair <string, object>("OrderCode", orderItem.OrderCode), new KeyValuePair <string, object>("DetailRowNumber", orderItem.DetailRowNumber) }; orderItem.EntityKey = new EntityKey("GoldEntities.ShiftOrderDetail", entityKeyValues); _order.ShiftOrderDetail.Add(orderItem); } }
protected override void BindingOrderItem(object[] array) { if (_order.StockDetail == null) { _order.StockDetail = new EntityCollection <StockDetail>(); } if (_itemDefine == null) { throw new ApplicationException("未发现行项目字段定义!"); } if (_itemDefine.Count() == array.Count()) { StockDetail orderItem = new StockDetail(); for (int i = 0; i < array.Count(); i++) { string fieldName = Regex.Replace(_itemDefine[i].ToString(), @"\s", ""); string fieldValue = Regex.Replace(array[i].ToString(), @"\s", ""); switch (fieldName) { case "存货编码": orderItem.CargoCode = fieldValue; string cargoCode = DbCommonMethod.ParsingCargoCode(fieldValue); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("商品不存在:" + fieldValue); } break; case "商品名称": orderItem.CargoName = fieldValue; break; case "规格": orderItem.CargoSpec = fieldValue; break; case "型号": //过滤型号值,如果型号是90.000,则去90,去掉小数点后面的0 double dou; string strModel = fieldValue; double douModel = 0; if (double.TryParse(fieldValue, out dou)) { douModel = dou; } if (douModel != 0 && strModel.Contains(".")) { string sdecimal = strModel.Substring(strModel.IndexOf(".") + 1, strModel.Length - strModel.IndexOf(".") - 1); int istring = Convert.ToInt32(sdecimal); if (istring == 0) { strModel = fieldValue.Substring(0, fieldValue.IndexOf(".")); } } orderItem.CargoModel = strModel; break; case "单位": orderItem.CargoUnits = fieldValue; break; case "数量": if (!string.IsNullOrEmpty(fieldValue)) { double d; if (double.TryParse(fieldValue, out d)) { orderItem.NumOriginalPlan = d; } } break; //暂留空,因为没看到有字段保存单价信息的(因为系统只管商品,不管金额,所以暂时不用存单价) //case "销售单价": // if (!string.IsNullOrEmpty(fieldValue)) // { // decimal d; // if (decimal.TryParse(fieldValue, out d)) // orderItem.Price = d; // } // break; case "销售金额": if (!string.IsNullOrEmpty(fieldValue)) { decimal de; if (decimal.TryParse(fieldValue, out de)) { orderItem.RowTotalMoney = de; } } break; default: break; } } if (string.IsNullOrEmpty(orderItem.BillRowNumber)) { orderItem.BillRowNumber = _rowNum.ToString(); } orderItem.NumCurrentPlan = orderItem.NumOriginalPlan; //订单数量=应收数量,默认值 orderItem.CargoStatus = 0; //手持机未完成 orderItem.BillCode = _order.SOCode; orderItem.SOCode = _order.SOCode; orderItem.BillType = CommonConvert.GetBillTypeCode("出库单"); orderItem.InOutWHCode = _order.WHCode; orderItem.StockOut = _order; IEnumerable <KeyValuePair <string, object> > entityKeyValues = new KeyValuePair <string, object>[] { new KeyValuePair <string, object>("BillCode", orderItem.BillCode), new KeyValuePair <string, object>("BillRowNumber", orderItem.BillRowNumber) }; orderItem.EntityKey = new EntityKey("GoldEntities.StockDetail", entityKeyValues); _order.StockDetail.Add(orderItem); } }
/// <summary> /// 从DataTable中获取采购订单明细实体列表 /// </summary> /// <param name="dt"></param> /// <param name="msg"></param> /// <returns></returns> private List <DAL.PurchaseOrderDetail> GetModelDetailFromDataTable(DataTable dt, out string msg) { try { List <DAL.PurchaseOrderDetail> list = new List <DAL.PurchaseOrderDetail>(); msg = ""; //接口协议文档中定义的字段 Dictionary <string, string> dataFieldNameDic = new Dictionary <string, string>(); dataFieldNameDic.Add("NCOrderCode", "NC系统订单号"); dataFieldNameDic.Add("DetailRowNumber", "行号"); dataFieldNameDic.Add("ContractNo", "合同号"); dataFieldNameDic.Add("CargoCode", "商品编码"); dataFieldNameDic.Add("CargoName", "商品名称"); dataFieldNameDic.Add("CargoModel", "商品型号"); dataFieldNameDic.Add("CargoSpec", "商品规格"); dataFieldNameDic.Add("WHName", "收货仓库"); dataFieldNameDic.Add("CargoUnits", "商品单位"); dataFieldNameDic.Add("PlanNumber", "应收数量"); dataFieldNameDic.Add("PriceOfTax", "含税单价"); dataFieldNameDic.Add("Price", "单价"); dataFieldNameDic.Add("DeductRate", "折扣"); dataFieldNameDic.Add("PriceOfNetTax", "净含税单价"); dataFieldNameDic.Add("NetPrice", "净单价"); dataFieldNameDic.Add("TotalPrice", "金额"); dataFieldNameDic.Add("TaxRate", "税率"); dataFieldNameDic.Add("TotalTax", "税额"); dataFieldNameDic.Add("TotalTaxAndPrice", "价税合计"); dataFieldNameDic.Add("PlanArrivalDate", "计划到货日期"); dataFieldNameDic.Add("CurrencyType", "币种"); dataFieldNameDic.Add("ExchangeRate", "汇率"); dataFieldNameDic.Add("ReceiveCompany", "收货公司"); dataFieldNameDic.Add("ReceiveOrg", "收货库存组织"); dataFieldNameDic.Add("ReceiveBillCompany", "收票公司"); if (dt == null || dt.Rows.Count == 0) { msg = "用友系统返回数据集中无数据!"; return(new List <PurchaseOrderDetail>()); } StringBuilder errorColName = new StringBuilder(); //检查数据集中是否存在指定字段 foreach (KeyValuePair <string, string> kvp in dataFieldNameDic) { if (dt.Columns.Contains(kvp.Key) == false) { errorColName.Append(Environment.NewLine); errorColName.Append(kvp.Value); errorColName.Append("-"); errorColName.Append(kvp.Key); } } if (errorColName.Length > 0) { errorColName.Insert(0, "用友系统返回的数据集中未包含如下字段,不能进行有效解析!"); msg = errorColName.ToString(); return(new List <PurchaseOrderDetail>());; } //遍历数据集创建实体 foreach (DataRow dr in dt.Rows) { PurchaseOrderDetail newModel = new PurchaseOrderDetail(); newModel.NCOrderCode = DataCheckHelper.GetCellString(dr["NCOrderCode"]); newModel.DetailRowNumber = DataCheckHelper.GetCellString(dr["DetailRowNumber"]); newModel.ContractNo = DataCheckHelper.GetCellString(dr["ContractNo"]); //商品编码 newModel.CargoCode = DataCheckHelper.GetCellString(dr["CargoCode"]); string cargoCode = DbCommonMethod.ParsingCargoCode(newModel.CargoCode); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("单号" + newModel.NCOrderCode + ",商品不存在:" + newModel.CargoCode); } newModel.CargoName = DataCheckHelper.GetCellString(dr["CargoName"]); newModel.CargoModel = DataCheckHelper.GetCellString(dr["CargoModel"]); newModel.CargoSpec = DataCheckHelper.GetCellString(dr["CargoSpec"]); //仓库 newModel.WHName = DataCheckHelper.GetCellString(dr["WHName"]); if (newModel.WHName != "") { newModel.WHCode = DbCommonMethod.ParsingWarehouse(newModel.WHName); if (string.IsNullOrEmpty(newModel.WHCode)) { throw new ApplicationException("单号" + newModel.NCOrderCode + ",仓库不存在:" + newModel.WHName); } } newModel.CargoUnits = DataCheckHelper.GetCellString(dr["CargoUnits"]); //数量 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["PlanNumber"]))) { Double number; if (Double.TryParse(DataCheckHelper.GetCellString(dr["PlanNumber"]), out number)) { newModel.NumOriginalPlan = number; } } //含税单价 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["PriceOfTax"]))) { decimal priceOfTax; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["PriceOfTax"]), out priceOfTax)) { newModel.PriceOfTax = priceOfTax; } } //单价 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["Price"]))) { decimal price; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["Price"]), out price)) { newModel.Price = price; } } //折扣率 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["DeductRate"]))) { double deductRate; if (double.TryParse(DataCheckHelper.GetCellString(dr["DeductRate"]), out deductRate)) { newModel.DeductRate = deductRate; } } //净含税单价 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["PriceOfNetTax"]))) { decimal priceOfNetTax; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["PriceOfNetTax"]), out priceOfNetTax)) { newModel.PriceOfNetTax = priceOfNetTax; } } //净单价 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["NetPrice"]))) { decimal d; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["NetPrice"]), out d)) { newModel.NetPrice = d; } } //金额 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["TotalPrice"]))) { decimal d; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["TotalPrice"]), out d)) { newModel.TotalPrice = d; } } //税率 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["TaxRate"]))) { double d; if (double.TryParse(DataCheckHelper.GetCellString(dr["TaxRate"]), out d)) { newModel.TaxRate = d; } } //税额 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["TotalTax"]))) { decimal d; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["TotalTax"]), out d)) { newModel.TotalTax = d; } } //价税合计 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["TotalTaxAndPrice"]))) { decimal d; if (decimal.TryParse(DataCheckHelper.GetCellString(dr["TotalTaxAndPrice"]), out d)) { newModel.TotalTaxAndPrice = d; } } //计划到货日期 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["PlanArrivalDate"]))) { DateTime d; if (DateTime.TryParse(DataCheckHelper.GetCellString(dr["PlanArrivalDate"]), out d)) { newModel.PlanArrivalDate = d; } } newModel.CurrencyType = DataCheckHelper.GetCellString(dr["CurrencyType"]); //折本汇率 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["ExchangeRate"]))) { double d; if (double.TryParse(DataCheckHelper.GetCellString(dr["ExchangeRate"]), out d)) { newModel.ExchangeRate = d; } } newModel.ReceiveCompany = DataCheckHelper.GetCellString(dr["ReceiveCompany"]); newModel.ReceiveOrg = DataCheckHelper.GetCellString(dr["ReceiveOrg"]); newModel.ReceiveBillCompany = DataCheckHelper.GetCellString(dr["ReceiveBillCompany"]); newModel.DetailRowStatus = 2;//初始态 newModel.OrderCode = newModel.OrderCode; newModel.NCOrderCode = newModel.NCOrderCode; List <PurchaseOrderDetail> existPurchaseOrderDetail = (from r in list where r.NCOrderCode == newModel.NCOrderCode && r.DetailRowNumber == newModel.DetailRowNumber select r).ToList <PurchaseOrderDetail>(); if (existPurchaseOrderDetail == null || existPurchaseOrderDetail.Count == 0)//过滤重复数据 { list.Add(newModel); } } return(list); } catch (Exception ex) { msg = ex.Message; return(new List <PurchaseOrderDetail>());; } }
//行项目 protected override void BindingOrderItem(object[] array) { if (_order.TransferOrderDetail == null) { _order.TransferOrderDetail = new EntityCollection <TransferOrderDetail>(); } if (_itemDefine == null) { throw new ApplicationException("未发现行项目字段定义!"); } if (_itemDefine.Count() == array.Count()) { TransferOrderDetail orderItem = new TransferOrderDetail(); for (int i = 0; i < array.Count(); i++) { string fieldName = Regex.Replace(_itemDefine[i].ToString(), @"\s", ""); string fieldValue = Regex.Replace(array[i].ToString(), @"\s", ""); switch (fieldName) { case "行号": if (fieldValue.Contains(".")) //如果行号是10.000,则取10,去掉小数点后面的0 { orderItem.DetailRowNumber = fieldValue.Substring(0, fieldValue.IndexOf(".")); } else { orderItem.DetailRowNumber = fieldValue; } break; case "存货编码": orderItem.CargoCode = fieldValue; string cargoCode = DbCommonMethod.ParsingCargoCode(fieldValue); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("商品不存在:" + fieldValue); } break; case "存货名称": orderItem.CargoName = fieldValue; break; //case "产地": // break; case "规格": orderItem.CargoSpec = fieldValue; break; case "型号": //过滤型号值,如果型号是90.000,则去90,去掉小数点后面的0 double dou; string strModel = fieldValue; double douModel = 0; if (double.TryParse(fieldValue, out dou)) { douModel = dou; } if (douModel != 0 && strModel.Contains(".")) { string sdecimal = strModel.Substring(strModel.IndexOf(".") + 1, strModel.Length - strModel.IndexOf(".") - 1); int istring = Convert.ToInt32(sdecimal); if (istring == 0) { strModel = fieldValue.Substring(0, fieldValue.IndexOf(".")); } } orderItem.CargoModel = strModel; break; case "主计量单位": orderItem.CargoUnits = fieldValue; break; //case "辅单位": // break; //case "换算率": // break; //case "辅数量": // break; case "数量": if (!string.IsNullOrEmpty(fieldValue)) { double d; if (double.TryParse(fieldValue, out d)) { orderItem.NumOriginalPlan = d; } } break; //case "自由项": // break; //case "批次号": // break; case "生产日期": if (!string.IsNullOrEmpty(fieldValue)) { DateTime dt; if (DateTime.TryParse(fieldValue, out dt)) { orderItem.ReleaseYear = dt.Year.ToString(); } } break; //case "失效日期": // break; //case "是否赠品": // break; case "调出仓库": orderItem.InWHName = fieldValue; orderItem.InWHCode = DbCommonMethod.ParsingWarehouse(fieldValue); break; case "调入仓库": orderItem.OutWHName = fieldValue; orderItem.OutWHCode = DbCommonMethod.ParsingWarehouse(fieldValue); break; //case "出货仓库": // break; //case "调出部门": // break; //case "业务员": // break; //case "调入部门": // break; //case "业务员": // break; //case "出货部门": // break; //case "业务员": // break; //case "调出货位": // break; //case "调入货位": // break; //case "出货货位": // break; //case "计划发货日": // break; //case "计划到货日": // break; //case "收货客户": // break; //case "收货地区": // break; //case "收货地址": // break; //case "收货地点": // break; //case "项目": // break; //case "项目阶段": // break; //case "发运方式": // break; //case "非含税单价": // break; //case "税率": // break; //case "非含税金额": // break; //case "含税金额": // break; //case "询价含税价": // break; //case "含税单价": // break; //case "加价率": // break; //case "询价非含税价": // break; //case "已调出主数量": // break; //case "已调出辅数量": // break; //case "已调入主数量": // break; //case "已调入辅数量": // break; //case "调拨在途主数量": // break; //case "调拨在途辅数量": // break; //case "已发货主数量": // break; //case "已发货辅数量": // break; //case "签收主数量": // break; //case "签收辅数量": // break; //case "调出与调入已结算数量": // break; //case "调出与出货方已经结算数量": // break; //case "调出与出货方已经结算金额": // break; //case "发运退回主数量": // break; //case "发运退回辅数量": // break; //case "发运途损主数量": // break; //case "发运途损辅数量": // break; //case "累计退回数量": // break; //case "应发未出库数量": // break; //case "来源单据类型": // break; //case "来源单据号": // break; //case "来源单据行号": // break; //case "B-UDC1": // break; //case "B-UDC2": // break; //case "B-UDC3": // break; //case "B-UDC4": // break; //case "B-UDC5": // break; //case "B-UDC6": // break; //case "B-UDC7": // break; //case "B-UDC8": // break; //case "B-UDC9": // break; //case "B-UDC10": // break; //case "B-UDC11": // break; //case "B-UDC12": // break; //case "B-UDC13": // break; //case "B-UDC14": // break; //case "B-UDC15": // break; //case "B-UDC16": // break; //case "B-UDC17": // break; //case "B-UDC18": // break; //case "B-UDC19": // break; //case "B-UDC20": // break; //case "报价计量单位": // break; //case "报价计量单位数量": // break; //case "报价计量单位换算率": // break; //case "报价计量单位原币含税净价": // break; //case "报价计量单位原币无税净价": default: break; } } orderItem.DetailRowStatus = 2;//初始态 orderItem.OrderCode = _order.OrderCode; orderItem.NCOrderCode = _order.NCOrderCode; orderItem.TransferOrder = _order; IEnumerable <KeyValuePair <string, object> > entityKeyValues = new KeyValuePair <string, object>[] { new KeyValuePair <string, object>("OrderCode", orderItem.OrderCode), new KeyValuePair <string, object>("DetailRowNumber", orderItem.DetailRowNumber) }; orderItem.EntityKey = new EntityKey("GoldEntities.TransferOrderDetail", entityKeyValues); _order.TransferOrderDetail.Add(orderItem); } }
/// <summary> /// 从DataTable中获取采购订单明细实体列表 /// </summary> /// <param name="dt"></param> /// <param name="msg"></param> /// <returns></returns> private List <DAL.TransferOrderDetail> GetModelDetailFromDataTable(DataTable dt, out string msg) { try { List <DAL.TransferOrderDetail> list = new List <DAL.TransferOrderDetail>(); msg = ""; //接口协议文档中定义的字段 Dictionary <string, string> dataFieldNameDic = new Dictionary <string, string>(); dataFieldNameDic.Add("NCOrderCode", "订单编号"); dataFieldNameDic.Add("DetailRowNumber", "行号"); dataFieldNameDic.Add("CargoCode", "存货编码"); dataFieldNameDic.Add("CargoName", "存货名称"); dataFieldNameDic.Add("CargoSpec", "规格"); dataFieldNameDic.Add("CargoModel", "型号"); dataFieldNameDic.Add("CargoUnits", "主计量单位"); dataFieldNameDic.Add("CargoUnitsAssist", "辅单位"); dataFieldNameDic.Add("ChangeRatio", "换算率"); dataFieldNameDic.Add("NumOriginalPlanAssist", "辅数量"); dataFieldNameDic.Add("NumOriginalPlan", "数量"); dataFieldNameDic.Add("Lot", "批次号"); dataFieldNameDic.Add("ProductDate", "生产日期"); dataFieldNameDic.Add("OutWHName", "调出仓库"); dataFieldNameDic.Add("InWHName", "调入仓库"); dataFieldNameDic.Add("OutWHNameAssist", "出货仓库"); dataFieldNameDic.Add("OutDept", "调出部门"); dataFieldNameDic.Add("OutOperator", "调出部门业务员"); dataFieldNameDic.Add("InDept", "调入部门"); dataFieldNameDic.Add("InOperator", "调入部门业务员"); dataFieldNameDic.Add("OutDeptAssist", "出货部门"); dataFieldNameDic.Add("OutOperatorAssist", "出货部门业务员姓名"); dataFieldNameDic.Add("OutArea", "调出货位"); dataFieldNameDic.Add("InArea", "调入货位"); dataFieldNameDic.Add("OutAreaAssist", "出货货位"); if (dt == null || dt.Rows.Count == 0) { msg = "用友系统返回数据集中无数据!"; return(new List <TransferOrderDetail>()); } StringBuilder errorColName = new StringBuilder(); //检查数据集中是否存在指定字段 foreach (KeyValuePair <string, string> kvp in dataFieldNameDic) { if (dt.Columns.Contains(kvp.Key) == false) { errorColName.Append(Environment.NewLine); errorColName.Append(kvp.Value); errorColName.Append("-"); errorColName.Append(kvp.Key); } } if (errorColName.Length > 0) { errorColName.Insert(0, "用友系统返回的数据集中未包含如下字段,不能进行有效解析!"); msg = errorColName.ToString(); return(new List <TransferOrderDetail>());; } //遍历数据集创建实体 foreach (DataRow dr in dt.Rows) { TransferOrderDetail newModel = new TransferOrderDetail(); newModel.NCOrderCode = DataCheckHelper.GetCellString(dr["NCOrderCode"]); newModel.DetailRowNumber = DataCheckHelper.GetCellString(dr["DetailRowNumber"]); newModel.CargoCode = DataCheckHelper.GetCellString(dr["CargoCode"]); string cargoCode = DbCommonMethod.ParsingCargoCode(newModel.CargoCode); if (string.IsNullOrEmpty(cargoCode)) { throw new ApplicationException("单号" + newModel.NCOrderCode + ",商品不存在:" + newModel.CargoCode); } newModel.CargoName = DataCheckHelper.GetCellString(dr["CargoName"]); newModel.CargoSpec = DataCheckHelper.GetCellString(dr["CargoSpec"]); newModel.CargoModel = DataCheckHelper.GetCellString(dr["CargoModel"]); newModel.CargoUnits = DataCheckHelper.GetCellString(dr["CargoUnits"]); //newModel = DataCheckHelper.GetCellString(dr["CargoUnitsAssist"]); //newModel = DataCheckHelper.GetCellString(dr["ChangeRatio"]); //newModel = DataCheckHelper.GetCellString(dr["NumOriginalPlanAssist"]); //数量 if (!string.IsNullOrEmpty(DataCheckHelper.GetCellString(dr["NumOriginalPlan"]))) { double d; if (double.TryParse(DataCheckHelper.GetCellString(dr["NumOriginalPlan"]), out d)) { newModel.NumOriginalPlan = d; } } //newModel = DataCheckHelper.GetCellString(dr["Lot"]); //newModel = DataCheckHelper.GetCellString(dr["ProductDate"]); newModel.OutWHName = DataCheckHelper.GetCellString(dr["OutWHName"]); if (newModel.OutWHName != "") { newModel.OutWHCode = DbCommonMethod.ParsingWarehouse(newModel.OutWHName); throw new ApplicationException("单号" + newModel.NCOrderCode + ",仓库不存在:" + newModel.OutWHName); } newModel.InWHName = DataCheckHelper.GetCellString(dr["InWHName"]); if (newModel.InWHName != "") { newModel.InWHCode = DbCommonMethod.ParsingWarehouse(newModel.InWHName); throw new ApplicationException("单号" + newModel.NCOrderCode + ",仓库不存在:" + newModel.InWHName); } //newModel = DataCheckHelper.GetCellString(dr["OutWHNameAssist"]); //newModel = DataCheckHelper.GetCellString(dr["OutDept"]); //newModel = DataCheckHelper.GetCellString(dr["OutOperator"]); //newModel = DataCheckHelper.GetCellString(dr["InDept"]); //newModel = DataCheckHelper.GetCellString(dr["InOperator"]); //newModel = DataCheckHelper.GetCellString(dr["OutDeptAssist"]); //newModel = DataCheckHelper.GetCellString(dr["OutOperatorAssist"]); //newModel = DataCheckHelper.GetCellString(dr["OutArea"]); //newModel = DataCheckHelper.GetCellString(dr["InArea"]); //newModel = DataCheckHelper.GetCellString(dr["OutAreaAssist"]); newModel.DetailRowStatus = 2;//初始态 newModel.OrderCode = newModel.OrderCode; newModel.NCOrderCode = newModel.NCOrderCode; List <TransferOrderDetail> existTransferOrderDetail = (from r in list where r.NCOrderCode == newModel.NCOrderCode && r.DetailRowNumber == newModel.DetailRowNumber select r).ToList <TransferOrderDetail>(); if (existTransferOrderDetail == null || existTransferOrderDetail.Count == 0)//过滤重复数据 { list.Add(newModel); } } return(list); } catch (Exception ex) { msg = ex.Message; return(new List <TransferOrderDetail>());; } }