using Model; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Pub_Class; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Web.Http; using WebAPI.Models; namespace WebAPI.Controllers { //销售订单Controller public class Xs_SeOrderBillController : ApiController { //获取系统参数 Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); public DBUtility.ClsPub.Enum_BillStatus BillStatus; private json objJsonResult = new json(); SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); DataSet ds; /// /// 根据基础资料ID 查找记录 ///参数:string sql。 ///返回值:object。 /// [Route("Xs_SeOrderBill/cx")] [HttpGet] public object cx(long HInterID) { try { ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList where hmainid =" + HInterID, "h_v_IF_SeOrderBillList"); if (ds == null || ds.Tables[0].Rows.Count == 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "false!"; objJsonResult.data = null; return objJsonResult; } else { objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "Sucess!"; objJsonResult.data = ds.Tables[0]; return objJsonResult; } } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } /// /// 返回销售订单列表 ///参数:string sql。 ///返回值:object。 /// [Route("Xs_SeOrderBill/list")] [HttpGet] public object list(string sWhere,string user) { try { //判断查询权限 if (!DBUtility.ClsPub.Security_Log("Xs_SeOrderBillQuery", 1, false, user)) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "无权限查询!"; objJsonResult.data = null; return objJsonResult; } if (sWhere == null || sWhere.Equals("")) { ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList order by hmainid desc", "h_v_IF_SeOrderBillList"); } else { string sql1 = "select * from h_v_IF_SeOrderBillList where 1 = 1 "; string sql = sql1 + sWhere+ " order by hmainid desc"; ds = oCN.RunProcReturn(sql, "h_v_IF_SeOrderBillList"); } objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "Sucess!"; objJsonResult.data = ds.Tables[0]; return objJsonResult; } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } /// /// 返回销售订单动态列表 /// /// /// /// [Route("Xs_SeOrderBill/DyColList")] [HttpGet] public object DyColList(string sWhere, string user) { try { //判断查询权限 if (!DBUtility.ClsPub.Security_Log("Xs_SeOrderBillQuery", 1, false, user)) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "无权限查询!"; objJsonResult.data = null; return objJsonResult; } ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList where 1 = 1 " + sWhere + " order by hmainid desc ", "h_v_IF_SeOrderBillList"); List listCol = new List(); foreach (DataColumn col in ds.Tables[0].Columns) { Type dataType = col.DataType; string str = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}"; listCol.Add(JsonConvert.DeserializeObject(str)); } objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "Sucess!"; objJsonResult.data = ds.Tables[0]; objJsonResult.list = listCol; return objJsonResult; } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } #region 销售订单 保存/编辑功能 [Route("Xs_SeOrder/SeOrderBillEdit")] [HttpPost] public object SeOrderBillEdit([FromBody] JObject sMainSub) { try { var _value = sMainSub["sMainSub"].ToString(); string msg1 = _value.ToString(); oCN.BeginTran(); //保存主表 objJsonResult = AddBillMain(msg1); if (objJsonResult.code == "0") { oCN.RollBack(); objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = objJsonResult.Message; objJsonResult.data = null; return objJsonResult; } oCN.Commit(); objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "单据保存成功!"; objJsonResult.data = null; return objJsonResult; } catch (Exception e) { oCN.RollBack(); objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "保存失败!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } public json AddBillMain(string msg1) { string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string msg2 = sArray[0].ToString(); //主表数据 string msg3 = sArray[1].ToString(); //子表数据 int OperationType = int.Parse(sArray[2].ToString()); // 数据类型 1添加 3修改 string user = sArray[3].ToString(); string msg_allVal = sArray[4].ToString(); //主表+子表所有数据 try { msg2 = "[" + msg2.ToString() + "]"; List mainList = Newtonsoft.Json.JsonConvert.DeserializeObject>(msg2); long HInterID = mainList[0].HInterID;//递入type得到的单据ID string HBillNo = mainList[0].HBillNo;//递入type得到的单据号 long HPRDORGID = mainList[0].HPRDORGID;//组织 DateTime HDate = mainList[0].HDate;//日期 string HRemark = mainList[0].HRemark;//备注 long HCusID = mainList[0].HCusID;//客户 long HEmpID = mainList[0].HEmpID;//业务员 long HDeptID = mainList[0].HDeptID;//部门 long HCurID = mainList[0].HCurID;//币别 Single HExRate = mainList[0].HExRate;//汇率 long HManagerID = mainList[0].HManagerID;//主管 long HSellSID = mainList[0].HSellSID;//销售方式 long HSSID = mainList[0].HSSID;//结算方式 DateTime HSSDate = mainList[0].HSSDate;//结算日期 string HMaker = user;//制单人 string HAddress = mainList[0].HAddress;//地址 List mainList2 = Newtonsoft.Json.JsonConvert.DeserializeObject>(msg2); DateTime dt = DateTime.Now; long HYear = mainList2[0].HYear == null ? 0 : mainList2[0].HYear; long HPeriod = mainList2[0].HPeriod == null ? 0 : mainList2[0].HPeriod; string HBillType = mainList2[0].HBillType == null ? "''" : mainList2[0].HBillType; string HBillSubType = mainList2[0].HBillSubType == null ? "''" : mainList2[0].HBillSubType; int HBillStatus = mainList2[0].HBillStatus == null ? 0 : mainList2[0].HBillStatus; string HChecker = mainList2[0].HChecker == null ? "''" : mainList2[0].HChecker; string HCheckDate = mainList2[0].HCheckDate == null ? "''" : mainList2[0].HCheckDate; string HMakeDate = mainList2[0].HMakeDate == null ? "''" : mainList2[0].HMakeDate; string HCloseMan = mainList2[0].HCloseMan == null ? "''" : mainList2[0].HCloseMan; string HCloseDate = mainList2[0].HCloseDate == null ? "''" : mainList2[0].HCloseDate; long HERPInterID = mainList2[0].HERPInterID == null ? 0 : mainList2[0].HERPInterID; string HERPBillType = mainList2[0].HERPBillType == null ? "''" : mainList2[0].HERPBillType; long HSALEORGID = mainList2[0].HSALEORGID == null ? 0 : mainList2[0].HSALEORGID; ds = oCN.RunProcReturn("select * from h_v_IF_SeOrderBillList where hmainid=" + HInterID + " and 单据号='" + HBillNo + "'", "h_v_IF_SeOrderBillList"); if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//新增 { DataSet Ds; Int64 NewHInterID = 1; Ds = oCN.RunProcReturn("select MAX(HInterID)HInterID from Xs_SeOrderBillMain", "Xs_SeOrderBillMain"); if (Ds.Tables[0].Rows.Count != 0 && ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString()) != 0) { NewHInterID = ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString()); NewHInterID += 1; } //主表 oCN.RunProc(@"Insert Into Xs_SeOrderBillMain (HBillType,HInterID,HBillNo,HDate ,HYear,HPeriod,HRemark,HMaker,HMakeDate ,HEmpID,HCusID ,HBillSubType,HAddress,HSSDate,HSSID,HSellSID,HCurID,HExRate, HManagerID,HDeptID ,HExplanation,HCheckFlow,HBillStatus,HInnerBillNo ,HICMOFlag,HChangeMan,HSALEORGID,HERPInterID,HERPBillType ,HCloseDate,HCloseMan) values(" + "1401," + HInterID + ",'" + HBillNo + "','" + HDate + "','" + DateTime.Now.Year + "','" + DateTime.Now.Month + "','" + HRemark + "','" + HMaker + "','" + HMakeDate + "'," + HEmpID + "," + HCusID + ",'" + HBillType + "','" + HAddress + "','" + HSSDate + "'," + HSSID + "," + HSellSID + "," + HCurID + "," + HExRate + "," + HManagerID + "," + HDeptID + ",'" + "''" + "'," + "0," + HBillStatus + ",'" + "''" + "'," + 0 + ",'" + "''" + "'," + HSALEORGID + "," + HERPInterID + ",'" + HERPBillType + "','" + HCloseDate + "','" + HCloseMan + "')"); } else if (OperationType == 3 || ds.Tables[0].Rows.Count != 0) { //修改 oCN.RunProc("update Xs_SeOrderBillMain set " + "HRemark='" + HRemark + "', HChecker='" + HMaker + "', HCheckDate=getdate()" + ", HEmpID=" + HEmpID + ", HCusID=" + HCusID + ",HAddress='" + HAddress + "',HDeptID=" + HDeptID + ",HCurID=" + HCurID + ",HExRate=" + HExRate + ",HManagerID=" + HManagerID + ",HSellSID=" + HSellSID + ",HSSID=" + HSSID + ",HSSDate='" + HSSDate + "' where HInterID=" + HInterID); //删除子表 oCN.RunProc("delete from Xs_SeOrderBillSub where HInterID='" + HInterID + "'"); } //保存子表 objJsonResult = AddBillSub(msg3, HInterID, OperationType); if (objJsonResult.code == "0") { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = objJsonResult.Message; objJsonResult.data = null; return objJsonResult; } objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = null; objJsonResult.data = null; return objJsonResult; } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } public json AddBillSub(string msg3, long HInterID, int OperationType) { List DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject>(msg3); List DetailColl2 = Newtonsoft.Json.JsonConvert.DeserializeObject>(msg3); long HSourceInterID = DetailColl2[0].HSourceInterID == null ? 0 : DetailColl2[0].HSourceInterID; long HSourceEntryID = DetailColl2[0].HSourceEntryID == null ? 0 : DetailColl2[0].HSourceEntryID; string HSourceBillNo = DetailColl2[0].HSourceBillNo == null ? "''" : DetailColl2[0].HSourceBillNo; string HSourceBillType = DetailColl2[0].HSourceBillType == null ? "''" : DetailColl2[0].HSourceBillType; double HRelationQty = DetailColl2[0].HRelationQty == null ? 0 : DetailColl2[0].HRelationQty; long HPropertyID = DetailColl2[0].HPropertyID == null ? 0 : DetailColl2[0].HPropertyID; string HBatChNo = DetailColl2[0].HBatChNo == null ? "''" : DetailColl2[0].HBatChNo; long HAuxPropID = DetailColl2[0].HAuxPropID == null ? 0 : DetailColl2[0].HAuxPropID; string HMTONo = DetailColl2[0].HMTONo == null ? "''" : DetailColl2[0].HMTONo; long HERPInterID = DetailColl2[0].HERPInterID == null ? 0 : DetailColl2[0].HERPInterID; long HERPEntryID = DetailColl2[0].HERPEntryID == null ? 0 : DetailColl2[0].HERPEntryID; decimal HBackRelationQty = DetailColl2[0].HBackRelationQty == null ? 0 : DetailColl2[0].HBackRelationQty; long HWhID = DetailColl2[0].HWhID == null ? 0 : DetailColl2[0].HWhID; long HSPID = DetailColl2[0].HSPID == null ? 0 : DetailColl2[0].HSPID; int i = 0; foreach (ClsXs_SeOrderBillSub oSub in DetailColl) { i++; if (oSub.HQty <= 0 || oSub.HQty == null) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "第" + i + "行,数量不能为0或者小于0"; objJsonResult.data = null; return objJsonResult; } if (oSub.HMaterID == 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "第" + i + "行,物料不能为空"; objJsonResult.data = null; return objJsonResult; } //if (oSub.HSourceID == 0) //{ // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "第" + i + "行,生产资源不能为空"; // objJsonResult.data = null; // return objJsonResult; //} if (oSub.HUnitID == 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "第" + i + "行,计量单位不能为空"; objJsonResult.data = null; return objJsonResult; } DataSet Cs; Int64 NewHEntryID = 1; Cs = oCN.RunProcReturn("select MAX(HEntryID)HEntryID from Xs_SeOrderBillSub", "Xs_SeOrderBillSub"); if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString()) != 0) { NewHEntryID = ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString()); NewHEntryID += 1; } oCN.RunProc($@"Insert into Xs_SeOrderBillSub (HInterID,HENTRYID,HQty,HMaterID,HUnitID,HRemark ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType ,HRelationQty,HRelationMoney,HPrice,HTaxPrice,HMoney,HDiscountRate ,HRelTaxPrice,HTaxRate,HTaxMoney,HlineTotal,HlineTotalBB,HDate,HOutStockQty,HInvoiceQty ,HPropertyID,HBatChNo,HAuxPropID,HMTONo,HERPInterID,HERPEntryID,HBackRelationQty,HWhID,HSPID) values({HInterID},{NewHEntryID},{(oSub.HQty == null ? 0 : oSub.HQty)} ,{oSub.HMaterID},{oSub.HUnitID},'{oSub.HRemark}',{HSourceInterID},{HSourceEntryID},{HSourceBillNo},{HSourceBillType},{HRelationQty},0,{oSub.HPrice},{oSub.HTaxPrice},{oSub.HMoney},{oSub.HDiscountRate},{oSub.HRelTaxPrice},{oSub.HTaxRate},{oSub.HTaxMoney},{oSub.HlineTotal},{oSub.HlineTotalBB},getdate(),{oSub.HOutStockQty},{oSub.HInvoiceQty},{HPropertyID},{HBatChNo},{HAuxPropID}, {HMTONo},{HERPInterID},{HERPEntryID},{HBackRelationQty},{HWhID},{HSPID})"); } objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = null; objJsonResult.data = null; return objJsonResult; } #endregion /// ///删除功能 /// /// [Route("Xs_SeOrderBill/DeltetSeOrderBill")] [HttpGet] public object DeltetSeOrderBill(string HInterID) { try { oCN.BeginTran(); oCN.RunProc("Delete From Xs_SeOrderBillMain where HInterID = " + HInterID); oCN.RunProc("Delete From Xs_SeOrderBillSub where HInterID = " + HInterID); oCN.Commit(); objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "删除成功!"; objJsonResult.data = null; return objJsonResult; } catch (Exception e) { oCN.RollBack(); objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } #region [同步单据] [Route("Xs_SeOrderBill/Xs_SeOrderBillViewApi")] [HttpGet] public json Xs_SeOrderBillViewApi(string BillNo, string BillType) { string sql = string.Empty; string sReturn = ""; if (oSystemParameter.ShowBill(ref sReturn) == true) { //系统参数是否为私有云模式,N为公有云模式,Y为私有云模式 if (oSystemParameter.omodel.WMS_CloudMode == "Y") { #region [私有云模式,直接调用数据库存储过程更新] try { oCN.BeginTran(); SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); DataSet DS = oCn.RunProcReturn("exec h_p_WMS_ERPSourceBillToLocal '" + BillNo + "','" + BillType + "'", "h_p_WMS_ERPSourceBillToLocal"); if (DS == null) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "单据同步失败"; objJsonResult.data = null; return objJsonResult; } else { if (DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HBack"]) == "2") { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "ERP中不存在该单据号"; objJsonResult.data = null; return objJsonResult; } else { objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "单据同步成功"; objJsonResult.data = null; return objJsonResult; } } } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } #endregion } else { #region [公有云模式,调用WEBAPI的方式进行更新] var json = new { CreateOrgId = 0, Number = BillNo, Id = "" }; #region [金蝶部分] //登录金蝶 var loginRet = InvokeHelper.Login(); var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value(); //判断是否登录成功 if (isSuccess < 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = loginRet; objJsonResult.data = null; return objJsonResult; } //查看 获取数据 var _result = InvokeHelper.View("SAL_SaleOrder", JsonConvert.SerializeObject(json)); var _saveObj = JObject.Parse(_result); //判断数据是否获取成功 if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE") { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "金蝶销售订单同步失败jsonRoot:" + _result; objJsonResult.data = null; return objJsonResult; } #endregion //获取主表数据 DataSet Ds; Int64 InterID = 0; Ds = oCN.RunProcReturn("select * from Xs_SeOrderBillMain where HBillNo = '" + BillNo + "'", "Xs_SeOrderBillMain"); if (Ds.Tables[0].Rows.Count != 0 && ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString()) != 0) { InterID = ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString()); } #region [主表数据赋值] var jsonData = new { HInterID = _saveObj["Result"]["Result"]["Id"], HYear = DateTime.Now.Year, HPeriod = DateTime.Now.Month, HBillType = 1401, HBillSubType = 1401, HDate = _saveObj["Result"]["Result"]["Date"], HBillNo = _saveObj["Result"]["Result"]["BillNo"], HBillStatus = _saveObj["Result"]["Result"]["ApproverId_Id"].ToString() == Convert.ToString(0) ? 1 : 2, HAddress = _saveObj["Result"]["Result"]["ReceiveAddress"], HSSID = 0, HSSDate = _saveObj["Result"]["Result"]["Date"], HCusID = _saveObj["Result"]["Result"]["CustId_Id"], HCurID = 0, HExRate = 0, HEmpID = _saveObj["Result"]["Result"]["SalerId_Id"], HManagerID = 0, HDeptID = _saveObj["Result"]["Result"]["SaleDeptId_Id"], HExplanation = "", HRemark = "CLOUD导入", HInnerBillNo = _saveObj["Result"]["Result"]["Note"], HChecker = _saveObj["Result"]["Result"]["ApproverId"]["Name"], HCheckDate = _saveObj["Result"]["Result"]["ApproveDate"], HMaker = _saveObj["Result"]["Result"]["CreatorId"]["Name"], HMakeDate = _saveObj["Result"]["Result"]["CreateDate"], HCloseMan = _saveObj["Result"]["Result"]["CloserId_Id"], HCloseDate = _saveObj["Result"]["Result"]["CloseDate"], HERPInterID = _saveObj["Result"]["Result"]["Id"], HERPBillType = _saveObj["Result"]["Result"]["BillTypeId_Id"], HSALEORGID = _saveObj["Result"]["Result"]["SaleOrgId_Id"], HSALEGROUPID = _saveObj["Result"]["Result"]["SaleGroupId_Id"], HRECEIVEID = _saveObj["Result"]["Result"]["ReceiveId_Id"], HSETTLEID = _saveObj["Result"]["Result"]["SettleId_Id"], HCHARGEID = _saveObj["Result"]["Result"]["ChargeId_Id"], HHEADLOCID = _saveObj["Result"]["Result"]["HeadLocId_Id"], HRECCONTACTID = 0, HCORRESPONDORGID = _saveObj["Result"]["Result"]["CorrespondOrgId_Id"], HBUSINESSTYPE = _saveObj["Result"]["Result"]["BusinessType"], }; #endregion // 删除主表对应数据 sql = $"delete from Xs_SeOrderBillMain where HInterID = " + InterID; oCN.RunProc(sql); //插入主表 sql = $@" insert into Xs_SeOrderBillMain (HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate ,HBillNo,HBillStatus ,HAddress,HSSID,HSSDate,HCusID,HCurID,HExRate ,HEmpID,HManagerID,HDeptID,HExplanation,HRemark,HInnerBillNo ,HChecker,HCheckDate,HMaker,HMakeDate,HCloseMan,HCloseDate ,HERPInterID,HERPBillType,HSALEORGID,HSALEGROUPID,HRECEIVEID,HSETTLEID ,HCHARGEID,HHEADLOCID,HRECCONTACTID,HCORRESPONDORGID,HBUSINESSTYPE ) values ({jsonData.HInterID},{jsonData.HYear},{jsonData.HPeriod},{jsonData.HBillType},{jsonData.HBillSubType}, '{jsonData.HDate}','{jsonData.HBillNo}',{jsonData.HBillStatus},'{jsonData.HAddress}',{jsonData.HSSID},'{jsonData.HSSDate}',{jsonData.HCusID}, {jsonData.HCurID},{jsonData.HExRate},{jsonData.HEmpID},{jsonData.HManagerID},{jsonData.HDeptID}, '{jsonData.HExplanation}','{jsonData.HRemark}','{jsonData.HInnerBillNo}','{jsonData.HChecker}','{jsonData.HCheckDate}', '{jsonData.HMaker}','{jsonData.HMakeDate}','{jsonData.HCloseMan}','{jsonData.HCloseDate}',{jsonData.HERPInterID}, '{jsonData.HERPBillType}',{jsonData.HSALEORGID},{jsonData.HSALEGROUPID},{jsonData.HRECEIVEID},{jsonData.HSETTLEID},{jsonData.HCHARGEID}, {jsonData.HHEADLOCID},{jsonData.HRECCONTACTID},{jsonData.HCORRESPONDORGID},'{jsonData.HBUSINESSTYPE}')"; oCN.RunProc(sql); #region [申请子表变量] var dataArr = _saveObj["Result"]["Result"]["SaleOrderEntry"]; DataSet Cs; double RelationQty = 0; #endregion int i = 0; // 获取子表数据 Cs = oCN.RunProcReturn("select * from Xs_SeOrderBillSub where HInterID = " + InterID, "Xs_SeOrderBillSub"); // 删除子表对应数据 sql = $"delete from Xs_SeOrderBillSub where HInterID = " + InterID; oCN.RunProc(sql); foreach (var oSub in dataArr) { #region [子表数据赋值] if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HInterID"].ToString()) != 0) { RelationQty = ClsPub.isDoule(Cs.Tables[0].Rows[i]["HRelationQty"].ToString()); i++; } var subData = new { HInterID = _saveObj["Result"]["Result"]["Id"], HEntryID = oSub["Id"], HMaterID = oSub["MaterialId_Id"], HUnitID = oSub["UnitId_Id"], HQty = oSub["Qty"], HPrice = oSub["Price"], HTaxPrice = oSub["TaxPrice"], HDiscountRate = oSub["DiscountRate"], HRelTaxPrice = 0, HMoney = 0, HTaxRate = oSub["TaxRate"], HTaxMoney = 0, HLineTotal = 0, HlineTotalBB = 0, HDate = oSub["MinPlanDeliveryDate"], HOutStockQty = oSub["StockBaseQty"], HInvoiceQty = 0, HRemark = oSub["Note"], HSourceInterID = 0, HSourceEntryID = 0, HSourceBillNo = oSub["SrcBillNo"], HSourceBillType = oSub["SrcType"], HRelationQty = Convert.ToInt32(oSub["Qty"]) - Convert.ToInt32(oSub["BaseCanOutQty"]), HPropertyID = 0, HBatChNo = oSub["Lot_Text"], HAuxPropID = oSub["AuxPropId_Id"], HMTONo = oSub["MtoNo"], HERPInterID = _saveObj["Result"]["Result"]["Id"], HERPEntryID = oSub["Id"], HBackRelationQty = Convert.ToInt32(oSub["Qty"]) - Convert.ToInt32(oSub["BaseCanReturnQty"]), HWhID = oSub["SOStockId_Id"], HSPID = oSub["SOStockLocalId_Id"], HSTOCKORGID = oSub["StockOrgId_Id"], HOWNERID = oSub["OwnerId_Id"], HOWNERTYPEID = oSub["OwnerTypeId"], HMAPID = oSub["MapId_Id"], HSTOCKUNITID = oSub["StockUnitID_Id"], HBASEUNITID = oSub["BaseUnitId_Id"], HBFLOWID = oSub["FBFLowId_Id"], HSETTLEORGID = oSub["SettleOrgId_Id"], HTAXCOMBINATION = oSub["TaxCombination_Id"], HPRICEUNITID = oSub["PriceUnitId_Id"], HISFREE = oSub["IsFree"], HPRICECOEFFICIENT = oSub["PriceCoefficient"], HSYSPRICE = oSub["SysPrice"], HLIMITDOWNPRICE = oSub["LimitDownPrice"], HPARENTMATID = oSub["ParentMatId_Id"], HROWTYPE = oSub["RowType"], HROWID = oSub["RowId"], HPARENTROWID = oSub["ParentRowId"], HDELIVERYCONTROL = oSub["DeliveryControl"], HLOCALCURRID = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["LocalCurrId_Id"], HEXCHANGETYPEID = oSub["ExchangeTypeId_Id"], HSETTLECURRID = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["SettleCurrId_Id"], HSETTLEMODEID = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["SettleModeId_Id"], HRECCONDITIONID = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["RecConditionId_Id"], HISINCLUDEDTAX = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["IsIncludedTax"], HISPRICEEXCLUDETAX = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["IsPriceExcludeTax"], HEXCHANGERATE = _saveObj["Result"]["Result"]["SaleOrderFinance"][0]["ExchangeRate"], HTAXRATEID = 0, HCOSTPERCENT =0, HVAT = 0, HSELLERWITHHOLDING = 0, HBUYERWITHHOLDING = 0, HPRICELISTENTRY = oSub["PriceListEntry_Id"] }; #endregion //插入子表 sql = $@" insert into Xs_SeOrderBillSub (HInterID,HEntryID,HMaterID,HUnitID,HQty,HPrice ,HTaxPrice,HDiscountRate,HRelTaxPrice,HMoney,HTaxRate,HTaxMoney ,HLineTotal,HlineTotalBB,HDate,HOutStockQty,HInvoiceQty,HRemark ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType ,HRelationQty,HPropertyID,HBatChNo,HAuxPropID,HMTONo ,HERPInterID,HERPEntryID,HBackRelationQty,HWhID,HSPID ,HSTOCKORGID,HOWNERID,HOWNERTYPEID,HMAPID,HSTOCKUNITID,HBASEUNITID ,HBFLOWID,HSETTLEORGID,HTAXCOMBINATION,HPRICEUNITID,HISFREE,HPRICECOEFFICIENT ,HSYSPRICE,HLIMITDOWNPRICE,HPARENTMATID,HROWTYPE,HROWID,HPARENTROWID ,HDELIVERYCONTROL,HLOCALCURRID,HEXCHANGETYPEID,HSETTLECURRID,HSETTLEMODEID ,HRECCONDITIONID,HISINCLUDEDTAX,HISPRICEEXCLUDETAX,HEXCHANGERATE,HTAXRATEID ,HCOSTPERCENT,HVAT,HSELLERWITHHOLDING,HBUYERWITHHOLDING,HPRICELISTENTRY ) values ({subData.HInterID},{subData.HEntryID},{subData.HMaterID},{subData.HUnitID},{subData.HQty},{subData.HPrice}, {subData.HTaxPrice},{subData.HDiscountRate},{subData.HRelTaxPrice},{subData.HMoney},{subData.HTaxRate},{subData.HTaxMoney}, {subData.HLineTotal},{subData.HlineTotalBB},'{subData.HDate}',{subData.HOutStockQty},{subData.HInvoiceQty},'{subData.HRemark}', {subData.HSourceInterID},{subData.HSourceEntryID},'{subData.HSourceBillNo}','{subData.HSourceBillType}',{subData.HRelationQty}, {subData.HPropertyID},'{subData.HBatChNo}',{subData.HAuxPropID},'{subData.HMTONo}',{subData.HERPInterID},{subData.HERPEntryID}, {subData.HBackRelationQty},{subData.HWhID},{subData.HSPID},{subData.HSTOCKORGID},{subData.HOWNERID}, '{subData.HOWNERTYPEID}','{subData.HMAPID}',{subData.HSTOCKUNITID},{subData.HBASEUNITID},'{subData.HBFLOWID}', {subData.HSETTLEORGID},{subData.HTAXCOMBINATION},{subData.HPRICEUNITID},'{subData.HISFREE}', {subData.HPRICECOEFFICIENT},{subData.HSYSPRICE},{subData.HLIMITDOWNPRICE},{subData.HPARENTMATID},'{subData.HROWTYPE}', '{subData.HROWID}','{subData.HPARENTROWID}','{subData.HDELIVERYCONTROL}',{subData.HLOCALCURRID},'{subData.HEXCHANGETYPEID}', {subData.HSETTLECURRID},{subData.HSETTLEMODEID},{subData.HRECCONDITIONID},'{subData.HISINCLUDEDTAX}','{subData.HISPRICEEXCLUDETAX}', {subData.HEXCHANGERATE},{subData.HTAXRATEID},{subData.HCOSTPERCENT},{subData.HVAT},{subData.HSELLERWITHHOLDING}, {subData.HBUYERWITHHOLDING},{subData.HPRICELISTENTRY})"; oCN.RunProc(sql); } objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "单据同步成功!"; objJsonResult.data = null; return objJsonResult; #endregion } } else { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "单据读取失败!"; objJsonResult.data = null; return objJsonResult; } } #endregion } }