/// <summary> /// 将同步的数据转换为JSON格式 /// </summary> /// <param name="sourceData"></param> /// <param name="operationType"></param> /// <returns></returns> private JObject ConvertSynDataToJObj(AbsSynchroDataInfo sourceData, SynOperationType operationType) { DeliveryNotice notice = sourceData as DeliveryNotice; JObject baseData = default(JObject); if (notice != null) { baseData = new JObject(); JObject FBillTypeID = new JObject();//单据类型 FBillTypeID.Add("FNumber", ""); baseData.Add("FBillTypeID", FBillTypeID); baseData.Add("FBillNo", notice.FBillNo);//单据编号 baseData.Add("FDate", notice.FDate); JObject FSaleOrgId = new JObject();//销售组织 baseData.Add("FNumber", notice.FSaleOrgId); FSaleOrgId.Add("FSaleOrgId", FSaleOrgId); JObject FDeliveryOrgID = new JObject();//发货组织 FDeliveryOrgID.Add("FNumber", ""); baseData.Add("FDeliveryOrgID", FDeliveryOrgID); baseData.Add("FEntity", BuildDeliveryNoitceEntryJson(notice)); //明细信息 baseData.Add("SubHeadEntity", BuildDeliveryNoticeFinJson(notice)); //财务信息 baseData.Add("F_HS_LocusEntity", DeliveryNoticeLocusEntryJson(notice)); //轨迹明细信息 baseData.Add("FDeliNoticeTrace", BuildDeliveryNoticeTraceEntryJson(notice)); //物流跟踪明细信息 } return(baseData); }
/// <summary> /// 点击“CEO特批已到款”后设置付款状态 /// </summary> /// <param name="ctx"></param> private void SetBillStatus(Context ctx, AbsSynchroDataInfo info) { if (info != null) { AbsDataInfo order = info as AbsDataInfo; this.View.Model.SetValue("F_HS_BalanceDeducted", order.F_HS_BalanceDeducted); if (order.F_HS_CheckBox) { this.View.Model.SetValue("F_HS_CheckBox", true); this.View.InvokeFormOperation("Save"); if (this.DataType != SynchroDataType.DropShippingSalOrder) { this.View.Model.SetValue("F_HS_PaymentStatus", "3"); bool success = this.View.InvokeFormOperation("Save"); if (success) { this.View.ShowMessage("付款状态已设置为已到款!", MessageBoxType.Notice); } else { this.View.ShowMessage("付款状态设置失败!", MessageBoxType.Notice); } } else { if (!order.F_HS_BalanceDeducted) { if (order.FDocumentStatus.Equals(BillDocumentStatus.Audit)) { if (!order.F_HS_PaymentStatus.Equals("3")) { if (order.FBillAmount <= order.FCustBalanceAmount) { if (!string.IsNullOrWhiteSpace(order.FDocumentStatus)) { if (order.FDocumentStatus.Equals(BillDocumentStatus.Audit)) { this.View.InvokeFormOperation("UnAudit"); this.View.InvokeFormOperation("Save"); this.View.InvokeFormOperation("Submit"); this.View.InvokeFormOperation("Audit"); } } } } } } } } else { this.View.Model.SetValue("F_HS_CheckBox", false); this.View.ShowErrMessage("该订单不是CEO特批已到款", "错误提示", MessageBoxType.Error); } } }
/// <summary> /// 将需要同步的会员(用户)数据进行打包(单个客户) /// </summary> /// <param name="sourceData"></param> /// <param name="log"></param> /// <param name="operationType"></param> /// <returns></returns> public override JObject BuildSynchroDataJson(AbsSynchroDataInfo sourceData, SynchroLog log, SynOperationType operationType) { JObject root = new JObject(); root.Add("NeedUpDateFields", new JArray("")); root.Add("IsDeleteEntry", "false"); root.Add("SubSystemId", ""); root.Add("IsVerifyBaseDataField", "true"); if (operationType == SynOperationType.SAVE) { root.Add("Model", ConvertSynObjToJObj(sourceData, operationType)); return(root); } //数据更新时的Json格式 else { //更新单据时,表体信息必须填写明细表体的主键 K3CustomerInfo custData = sourceData as K3CustomerInfo; string sFCustId = string.Format(@"/*dialect*/ select FCUSTID from T_BD_CUSTOMER where FNumber = '{0}'", custData.FNumber); string sMainFCustId = string.Format(@"/*dialect*/ select FCUSTID from T_BD_CUSTOMER where FNumber = '{0}' and FUseOrgId != 1", custData.FNumber); int subFCustId = Convert.ToInt32(JsonUtils.ConvertObjectToString(SQLUtils.GetObject(this.K3CloudContext, sMainFCustId, "FCUSTID"))); DynamicObjectCollection coll = SQLUtils.GetObjects(this.K3CloudContext, sFCustId); JArray model = new JArray(); if (coll.Count > 0) { foreach (var item in coll) { if (item["FCUSTID"] != null) { JObject baseData = ConvertSynObjToJObj(sourceData, operationType); baseData.Add("FCUSTID", Convert.ToInt32(JsonUtils.ConvertObjectToString(item["FCUSTID"]))); if (subFCustId != Convert.ToInt32(JsonUtils.ConvertObjectToString(item["FCUSTID"]))) { K3CustomerInfo soData = sourceData as K3CustomerInfo; baseData = ConvertSynObjToJObj(soData, operationType); baseData.Add("FCUSTID", Convert.ToInt32(JsonUtils.ConvertObjectToString(item["FCUSTID"]))); } model.Add(baseData); } } } root.Add("Model", model); return(root); } }
/// <summary> ///子类转换为父类 /// </summary> /// <param name="custs"></param> /// <returns></returns> public List <AbsSynchroDataInfo> ConvertSynchroObjectAbs(List <K3CustomerInfo> custs) { if (custs != null) { if (custs.Count > 0) { List <AbsSynchroDataInfo> absInfos = new List <AbsSynchroDataInfo>(); foreach (var item in custs) { if (item != null) { AbsSynchroDataInfo absInfo = item as AbsSynchroDataInfo; absInfos.Add(absInfo); } } return(absInfos); } } return(null); }
public override JObject BuildSynchroDataJson(AbsSynchroDataInfo sourceData, SynchroLog log, SynOperationType operationType) { JObject baseData = null; if (sourceData != null) { K3BatchAdjust just = sourceData as K3BatchAdjust; if (just != null) { baseData = new JObject(); baseData.Add("FName", just.FName); baseData.Add("FDate", DateTime.Now); JObject FSaleOrgId = new JObject(); FSaleOrgId.Add("FNumber", "100.01"); baseData.Add("FSaleOrgId", FSaleOrgId); baseData.Add("FBATCHADJUSTENTRY", BuildBatchAdjustEntry(sourceData)); } } return(baseData); }
/// <summary> /// 是否取消同步操作 /// </summary> /// <param name="srcData"></param> /// <returns></returns> public override bool IsCancelSynchro(AbsSynchroDataInfo srcData) { K3CustomerInfo cust = srcData as K3CustomerInfo; if (SynSuccList != default(List <string>)) { if (SynSuccList.Count > 0) { foreach (var item in SynSuccList) { if (item.CompareTo(cust.FNumber) == 0) { return(false); } } } } QueryBuilderParemeter para = new QueryBuilderParemeter(); para.FormId = this.FormKey; para.SelectItems = SelectorItemInfo.CreateItems("FNumber"); if (cust != null) { para.FilterClauseWihtKey = " FNumber='" + cust.FNumber + "' "; } var k3Data = Kingdee.BOS.App.ServiceHelper.GetService <IQueryService>().GetDynamicObjectCollection(this.K3CloudContext, para); if (k3Data == null || k3Data.Count == 0) { return(false); } return(true); }
public override AbsSynchroDataInfo BuildSynchroData(Context ctx, string json, AbsSynchroDataInfo data = null) { JArray jArr = JArray.Parse(json); List <K3CustContactInfo> contacts = null; K3CustContactInfo contact = null; if (jArr != null && jArr.Count > 0) { contacts = new List <K3CustContactInfo>(); for (int i = 0; i < jArr.Count; i++) { JObject jObj = jArr[i] as JObject; contact = new K3CustContactInfo(); contact.FCustNo = JsonUtils.GetFieldValue(jObj, "customers_id"); contact.FNUMBER1 = JsonUtils.GetFieldValue(jObj, "address_book_id"); contact.FNAME1 = JsonUtils.GetFieldValue(jObj, "entry_street_address") + " " + JsonUtils.GetFieldValue(jObj, "entry_city") + " " + JsonUtils.GetFieldValue(jObj, "entry_state") + " " + JsonUtils.GetFieldValue(jObj, "countries_iso_code_2"); contact.FADDRESS1 = JsonUtils.GetFieldValue(jObj, "entry_street_address") + System.Environment.NewLine + JsonUtils.GetFieldValue(jObj, "entry_suburb"); //contact.FTTel = JsonUtils.GetFieldValue(jObj, "entry_telephone"); contact.FMOBILE = JsonUtils.GetFieldValue(jObj, "entry_telephone"); contact.F_HS_DeliveryName = JsonUtils.GetFieldValue(jObj, "entry_firstname") + " " + JsonUtils.GetFieldValue(jObj, "entry_lastname"); contact.F_HS_PostCode = JsonUtils.GetFieldValue(jObj, "entry_postcode"); contact.F_HS_DeliveryCity = JsonUtils.GetFieldValue(jObj, "entry_city"); contact.F_HS_DeliveryProvinces = JsonUtils.GetFieldValue(jObj, "entry_state"); contact.F_HS_RecipientCountry = JsonUtils.GetFieldValue(jObj, "countries_iso_code_2"); if (string.IsNullOrWhiteSpace(contact.F_HS_RecipientCountry)) { string errorInfo = "客户地址同步,客户编码为:[" + contact.FCustNo + "]的信息国家编码为空!"; LogUtils.WriteSynchroLog(ctx, SynchroDataType.CustomerAddress, errorInfo); } contacts.Add(contact); } } if (contacts != null && contacts.Count > 0) { K3CustomerInfo k3Cust = GetCustomerByNo(ctx, contacts.ElementAt(0).FCustNo); if (k3Cust != null) { if (string.IsNullOrWhiteSpace(k3Cust.FFCOUNTRY)) { k3Cust.FFCOUNTRY = contacts.Select(c => c.F_HS_RecipientCountry).ToList().ElementAt(0); } k3Cust.lstCustCtaInfo = contacts; return(k3Cust); } else { k3Cust = new K3CustomerInfo(); k3Cust.lstCustCtaInfo = contacts; return(k3Cust); } } return(null); }
/// <summary> /// /// </summary> /// <param name="customerNo">客户编码</param> /// <param name="customerLevel">客户等级(1-8,默认1)</param> /// <param name="countryNo">国家编码</param> /// <param name="city">城市</param> /// <param name="zipCode">邮编</param> /// <param name="currencyNo">币别</param> /// <param name="inLogisWay">发货方式</param> public static Dictionary <string, object> GetFrei123(Context ctx, AbsSynchroDataInfo info) { #region 参数 Dictionary <string, object> dict = null; if (info != null) { K3SalOrderInfo order = info as K3SalOrderInfo; if (order != null) { long timeStamp = GetTimeStamp(DateTime.Now); //时间戳 string phpKey = "ERPSHIPPINGFREE"; //签名key string signMsg = MD5Encrypt(order.FCustId + timeStamp + phpKey, Encoding.UTF8).ToUpper(); //签名(需大写) JSONObject jObj = new JSONObject(); jObj.Add("customer_id", order.FCustId); jObj.Add("whole", !string.IsNullOrWhiteSpace(order.FCustLevel) ? order.FCustLevel.Substring(order.FCustLevel.Length - 1, 1) : ""); jObj.Add("country", order.F_HS_RecipientCountry.ToUpper()); //国家代号(例如:US) jObj.Add("city", order.F_HS_DeliveryCity); //收货地址城市 jObj.Add("code", order.F_HS_PostCode); //收货地址邮编 jObj.Add("currency", order.FSettleCurrId); //货币类型(例如:USD)(首字母要大写) jObj.Add("time_stamp", timeStamp); //时间戳 jObj.Add("signMsg", signMsg); //签名 JSONArray rows = null; JSONObject products = null; JSONObject row = null; string dlcHSName = string.Empty; if (order.OrderEntry != null && order.OrderEntry.Count > 0) { var groups = from o in order.OrderEntry where !string.IsNullOrWhiteSpace(o.FMaterialId) && !string.IsNullOrWhiteSpace(o.FStockId) group o by o.FStockId into g select g; if (groups != null && groups.Count() > 0) { products = new JSONObject(); foreach (var group in groups) { if (group != null && group.Count() > 0) { rows = new JSONArray(); dlcHSName = GetStockName(ctx, group.FirstOrDefault().FStockId); foreach (var item in group) { if (item != null && !item.FMaterialId.StartsWith("99.")) { row = new JSONObject(); row.Add("fix_id", item.FMaterialId); row.Add("quantity", item.FQTY); rows.Add(row); } } if (!string.IsNullOrWhiteSpace(dlcHSName) && rows.Count > 0) { products.Add(dlcHSName, rows); } } } jObj.Add("products", products); } } #endregion //获取运费 HttpClient http = new HttpClient() { IsProxy = true }; //http.Url = "https://test.healthcabin.net/index.php?t_method=shipping"; //测试地址 http.Url = "https://www.healthcabin.net/index.php?t_method=shipping"; //正式地址 http.Content = ""; //清除之前的记录 http.Content = string.Concat("&ERP=", jObj.ToString()); //线上那边要求以键值对参数的形式传过去 string result = ""; try { result = http.PostData(); } catch (Exception) { //服务器在美国,存在连不上远程服务器的情况,此时等待一秒再请求 System.Threading.Thread.Sleep(1000); result = http.PostData(); } StringBuilder errorMes = new StringBuilder(); List <Dictionary <string, string> > lstFreiInfo = AnalysisResult(result, ref errorMes); if (errorMes.Length > 0) { } var freiData = lstFreiInfo.Where(o => o["F_HS_FreTiltle"].Contains(order.F_HS_DropShipDeliveryChannel)).FirstOrDefault(); if (freiData != null) { dict = new Dictionary <string, object>(); string outLogisWay = freiData["F_HS_FreTiltle"]; //线上发货方式 string freiAmount = freiData["F_HS_FreAmount"]; //运费金额(结算币别) string freiAmountUSD = freiData["F_HS_AmountNoteUSD"]; //各发货仓运费(USD) dict.Add("F_HS_FreTiltle", outLogisWay == null ? "": outLogisWay); dict.Add("F_HS_FreAmount", freiAmount); dict.Add("F_HS_AmountNoteUSD", freiAmountUSD == null ?"": freiAmountUSD); } } } return(dict); }
/// <summary> /// 从Redis获取同步数据 /// </summary> /// <param name="ctx"></param> /// <param name="dataType"></param> /// <param name="redis"></param> /// <param name="redisKeys"></param> /// <returns></returns> private static List <AbsSynchroDataInfo> GetSynchroObjects(Context ctx, SynchroDataType dataType, IRedisClient redis, IEnumerable <string> redisKeys, SynchroDirection direction = SynchroDirection.ToK3) { List <AbsSynchroDataInfo> datas = null; List <string> jsons = null; Dictionary <string, string> dict = null; if (redis != null) { if (redisKeys != null && redisKeys.Count() > 0) { dict = new Dictionary <string, string>(); jsons = new List <string>(); foreach (var item in redisKeys) { if (!string.IsNullOrWhiteSpace(item)) { string json = redis.Get <string>(item.ToString()); if (!string.IsNullOrWhiteSpace(json)) { BackupJson.WriteJsonToLocal(ctx, dataType, json); jsons.Add(json); dict.Add(item.ToString(), JsonUtils.ReplaceDoubleQuotes(json)); } } } BackupDataToRedis(ctx, dict, redisKeys, dataType, direction); } } if (jsons != null && jsons.Count > 0) { datas = new List <AbsSynchroDataInfo>(); foreach (var json in jsons) { if (json.IsNullOrEmptyOrWhiteSpace() || json.EqualsIgnoreCase("None")) { continue; } try { AbsSynchroDataInfo data = SynchroDataHelper.BuildSynchroData(ctx, dataType, json); if (data != null) { datas.Add(data); } } catch (Exception ex) { LogUtils.WriteSynchroLog(ctx, dataType, "下载" + dataType + "出现异常" + ex.Message + System.Environment.NewLine + ex.StackTrace); } } } return(datas); }
public override AbsSynchroDataInfo BuildSynchroData(Context ctx, string json, AbsSynchroDataInfo data = null) { throw new NotImplementedException(); }
/// <summary> /// 是否取消同步: true 取消同步 ,false 不取消同步 /// </summary> /// <param name="srcData"></param> /// <returns></returns> public virtual bool IsCancelSynchro(AbsSynchroDataInfo srcData) { return(false); }
/// <summary> /// 将需要同步的数据转换为JSON格式(单个) /// </summary> /// <param name="sourceData"></param> /// <param name="log"></param> /// <param name="operationType"></param> /// <returns></returns> public abstract JObject BuildSynchroDataJson(AbsSynchroDataInfo sourceData, SynchroLog log, SynOperationType operationType);
public override JObject BuildSynchroDataJson(AbsSynchroDataInfo sourceData, SynchroLog log, SynOperationType operationType) { return(null); }
/// <summary> /// 将需要同步的客户转换为JSON格式对象(单个客户) /// </summary> /// <param name="sourceData"></param> /// <param name="opreationType"></param> /// <returns></returns> private JObject ConvertSynObjToJObj(AbsSynchroDataInfo sourceData, SynOperationType opreationType) { K3CustomerInfo cust = sourceData as K3CustomerInfo; JObject baseData = default(JObject); if (cust != null) { baseData = new JObject(); //创建组织为必填项 JObject FCreateOrgId = new JObject(); FCreateOrgId.Add("FNumber", cust.FCreateOrgId); baseData.Add("FCreateOrgId", FCreateOrgId); if (opreationType == SynOperationType.SAVE) { baseData.Add("FNumber", cust.FNumber); //组织内编码不允许变更 JObject FUseOrgId = new JObject(); FUseOrgId.Add("FNumber", cust.FUseOrgId); baseData.Add("FUseOrgId", FUseOrgId); } if (opreationType == SynOperationType.UPDATE) { baseData.Add("FT_BD_CUSTCONTACT", BuildK3CustContactJsons(cust)); //客户地址信息 } baseData.Add("FName", cust.FName); //客户名称 baseData.Add("FShortName", cust.FShortName); JObject FCOUNTRY = new JObject();//国家 FCOUNTRY.Add("FNumber", cust.FFCOUNTRY); baseData.Add("FCOUNTRY", FCOUNTRY); baseData.Add("FADDRESS", cust.FAddress);//通讯地址 baseData.Add("FZIP", cust.FZIP); baseData.Add("FTEL", cust.FTEL); //JObject FGroup = new JObject();//客户分组 //FGroup.Add("FNumber", cust.FGroup); //baseData.Add("FGroup", FGroup); JObject FCustTypeId = new JObject();//客户类别 FCustTypeId.Add("FNumber", cust.FCustTypeId); baseData.Add("FCustTypeId", FCustTypeId); JObject FTRADINGCURRID = new JObject();//结算币别 FTRADINGCURRID.Add("FNumber", cust.FTRADINGCURRID); baseData.Add("FTRADINGCURRID", FTRADINGCURRID); baseData.Add("FInvoiceType", cust.FInvoiceType); //发票类型 JObject FTaxType = new JObject(); //税率类别 FTaxType.Add("FNumber", cust.FTaxType); baseData.Add("FTaxType", FTaxType); JObject FTaxRate = new JObject();//默认税率 FTaxRate.Add("FNumber", cust.FTaxRate); baseData.Add("FTaxRate", FTaxRate); baseData.Add("FPriority", cust.FPriority); //客户优先级 baseData.Add("FIsTrade", cust.FIsTrade); //是否交易客户 baseData.Add("F_HS_CustomerRegisteredMail", cust.F_HS_CustomerRegisteredMail); //客户电子邮箱 } return(baseData); }
/// <summary> /// 5.21.3.2 同步余额扣减数据到redis /// 5.21.3.4 更新销售订单.已扣减余额为true、更新客户.余额USD,更新客户.剩余信用额度USD /// 5.21.3.5 写客户余额支付日志、信用额度支付日志 /// </summary> /// <param name="ctx"></param> private void ExecuteOperate(Context ctx) { AbsSynchroDataInfo data = GetK3Data(ctx); SetBillStatus(ctx, data); }
public override AbsSynchroDataInfo BuildSynchroData(Context ctx, string json, AbsSynchroDataInfo data = null) { JArray jArr = JArray.Parse(json); List <K3CustContactInfo> contacts = null; K3CustContactInfo contact = null; K3CustomerInfo k3Cust = null; List <string> addrNos = null; if (jArr != null && jArr.Count > 0) { addrNos = jArr.Select(j => JsonUtils.GetFieldValue(j, "address_book_id")).ToList(); } if (addrNos != null && addrNos.Count > 0) { string sql = string.Format(@"/*dialect*/ select a.FNUMBER as CUSTNO,b.FNUMBER as ADDRNO from T_BD_CUSTOMER a inner join T_BD_CUSTLOCATION b on a.FCUSTID = b.FCUSTID where b.FNUMBER in( '{0}') ", string.Join("','", addrNos)); DynamicObjectCollection coll = SQLUtils.GetObjects(ctx, sql); var group = from o in coll group o by SQLUtils.GetFieldValue(o, "CUSTNO") into c select c; if (group != null && group.Count() > 0) { foreach (var g in group) { if (g != null) { contacts = new List <K3CustContactInfo>(); k3Cust = new K3CustomerInfo(); k3Cust.FNumber = SQLUtils.GetFieldValue(g.ElementAt(0), "CUSTNO"); foreach (var s in g) { if (s != null) { contact = new K3CustContactInfo(); contact.FNUMBER1 = SQLUtils.GetFieldValue(s, "ADDRNO"); contacts.Add(contact); } } k3Cust.lstCustCtaInfo = contacts; } } } } return(k3Cust); }
public HttpResponseResult AfterAllot(Context ctx, List <K3CustomerInfo> custs) { HttpResponseResult result = null; List <int> pkIds = new List <int>(); List <string> numbers = new List <string>(); if (custs != null && custs.Count > 0) { numbers = new List <string>(); foreach (var cust in custs) { numbers.Add(cust.FNumber); pkIds.Add(cust.FCUSTID); } } #region if (custs != null) { string FNumber = ""; //分配成功后单据编码集合,做为查询从组织的内码的条件 if (numbers != null && numbers.Count > 0) { for (int i = 0; i < numbers.Count; i++) { if (i < numbers.Count - 1) { FNumber += "\'" + numbers[i] + "\',"; } else if (i == numbers.Count - 1) { FNumber += "\'" + numbers[i] + "\'"; } } } //根据单据编码集合查询出从组织的内码集合 string sFCustId = string.Format(@"/*dialect*/ select FCUSTID,FNUMBER from T_BD_CUSTOMER where FNumber in ({0}) and FUSEORGID = {1}", FNumber, ORGID); DynamicObjectCollection items = SQLUtils.GetObjects(ctx, sFCustId); List <AbsSynchroDataInfo> datas = new List <AbsSynchroDataInfo>(); if (items != null && items.Count > 0) { if (pkIds != null && pkIds.Count > 0) { pkIds.Clear(); foreach (var item in items) { pkIds.Add(Convert.ToInt32(JsonUtils.ConvertObjectToString(item["FCUSTID"]))); } } for (int i = 0; i < items.Count; i++) { if (JsonUtils.ConvertObjectToString(items[i]["FNUMBER"]).CompareTo(custs[i].FNumber) == 0) { custs[i].FCUSTID = Convert.ToInt32(JsonUtils.ConvertObjectToString(items[i]["FCUSTID"])); AbsSynchroDataInfo data = custs[i] as AbsSynchroDataInfo; datas.Add(data); } } string json = BuildSyschroDataJsonForAfterAllot(ctx, datas, SynOperationType.UPDATE).ToString(); //更新单据 //result = InvokeWebApi.InvokeBatchSave(ctx, this.DataType, this.FormKey, json); //numbers.Clear(); //if (result.Success == true) //{ // //单据提交 // result = InvokeWebApi.InvokeBatchSubmit(ctx, this.DataType, FormKey, numbers, pkIds); // if (result != null && result.Success == true) // { // //单据审核 // result = InvokeWebApi.InvokeBatchAudit(ctx, this.DataType, FormKey, numbers, pkIds); // pkIds.Clear(); // } //} } } #endregion return(result); }
/// <summary> /// 构建同步至K3的对象 /// </summary> /// <param name="ctx"></param> /// <param name="json"></param> /// <returns></returns> public abstract AbsSynchroDataInfo BuildSynchroData(Context ctx, string json, AbsSynchroDataInfo data = null);
/// <summary> /// 收款明细 /// </summary> /// <param name="ctx"></param> /// <param name="data"></param> /// <returns></returns> private JArray BuildReceiveBillEntry(Context ctx, AbsSynchroDataInfo data) { JArray FRECEIVEBILLENTRY = null; JObject baseData = null; if (data != null) { if (data.GetType() == typeof(K3SalOrderInfo)) { K3SalOrderInfo order = data as K3SalOrderInfo; FRECEIVEBILLENTRY = new JArray(); baseData = new JObject(); JObject FSETTLETYPEID = new JObject();//结算方式"JSFS01_SYS" FSETTLETYPEID.Add("FNumber", SQLUtils.GetSettleTypeNo(K3CloudContext, SQLUtils.GetPaymentMethodId(K3CloudContext, order.F_HS_PaymentModeNew))); baseData.Add("FSETTLETYPEID", FSETTLETYPEID); JObject FPURPOSEID = new JObject();//收款用途 FPURPOSEID.Add("FNumber", "SFKYT02_SYS"); baseData.Add("FPURPOSEID", FPURPOSEID); baseData.Add("FRECEIVEITEMTYPE", "1"); //预收项目类型 baseData.Add("FRECEIVEITEM", order.FBillNo); //销售订单 baseData.Add("FSaleOrderID", SQLUtils.GetSaleOrderId(K3CloudContext, order.FBillNo)); //销售订单内码 if (Convert.ToDecimal(order.F_HS_PayTotal) > 0) { if (order.FSettleCurrId.CompareTo("JPY") == 0) { baseData.Add("FRECTOTALAMOUNTFOR", Math.Truncate(Convert.ToDecimal(order.F_HS_PayTotal) * order.F_HS_RateToUSA));//财务实收金额 } else { baseData.Add("FRECTOTALAMOUNTFOR", Convert.ToDecimal(order.F_HS_PayTotal) * order.F_HS_RateToUSA);//财务实收金额 } } else if (string.IsNullOrWhiteSpace(order.F_HS_PayTotal)) { if (order.FSettleCurrId.CompareTo("JPY") == 0) { baseData.Add("FRECTOTALAMOUNTFOR", Math.Truncate(order.F_HS_Total));//财务实收金额 } else { baseData.Add("FRECTOTALAMOUNTFOR", order.F_HS_Total);//财务实收金额 } } JObject FACCOUNTID = new JObject();//我方银行账号 FACCOUNTID.Add("FNumber", SQLUtils.GetBankAccountNo(K3CloudContext, SQLUtils.GetBankAccountId(K3CloudContext, order.F_HS_PaymentModeNew))); baseData.Add("FACCOUNTID", FACCOUNTID); baseData.Add("FSETTLENO", order.F_HS_TransactionID.Trim());//结算号 FRECEIVEBILLENTRY.Add(baseData); } else if (data.GetType() == typeof(AbsDataInfo)) { AbsDataInfo info = data as AbsDataInfo; FRECEIVEBILLENTRY = new JArray(); baseData = new JObject(); JObject FSETTLETYPEID = new JObject();//结算方式"JSFS01_SYS" FSETTLETYPEID.Add("FNumber", info.FSettleTypeId); baseData.Add("FSETTLETYPEID", FSETTLETYPEID); JObject FPURPOSEID = new JObject();//收款用途 FPURPOSEID.Add("FNumber", "SFKYT02_SYS"); baseData.Add("FPURPOSEID", FPURPOSEID); if (Convert.ToDecimal(info.FRealAmountFor) > 0) { baseData.Add("FRECTOTALAMOUNTFOR", info.FRealAmountFor);//财务实收金额 } JObject FACCOUNTID = new JObject();//我方银行账号 FACCOUNTID.Add("FNumber", SQLUtils.GetBankAccountNo(K3CloudContext, SQLUtils.GetBankAccountId(K3CloudContext, info.FSettleTypeId))); baseData.Add("FACCOUNTID", FACCOUNTID); baseData.Add("FSETTLENO", "");//结算号 baseData.Add("F_HS_YNRecharge", false); baseData.Add("F_HS_SynchronizedRecharge", false); FRECEIVEBILLENTRY.Add(baseData); } } return(FRECEIVEBILLENTRY); }
public override AbsSynchroDataInfo BuildSynchroData(Context ctx, string json, AbsSynchroDataInfo data = null) { K3SalOrderInfo so = null; JObject jobj = JsonUtils.ParseJson2JObj(ctx, this.DataType, json); if (jobj != null) { so = new K3SalOrderInfo(); string payStatus = JsonUtils.GetFieldValue(jobj, "order_status"); if ("1".Equals(payStatus)) { so.F_HS_SaleOrderSource = "HCWebPendingOder"; //订单来源 so.F_HS_PaymentStatus = "2"; //未付款 } else if ("2".Equals(payStatus)) { so.F_HS_SaleOrderSource = "HCWebProcessingOder"; //订单来源 so.F_HS_PaymentStatus = "3"; //已到款 } so.FBillNo = JsonUtils.GetFieldValue(jobj, "orders_id"); so.F_HS_PaymentModeNew = JsonUtils.GetFieldValue(jobj, "payment"); so.F_HS_IsSameAdress = IsSameAddress(ctx, so, jobj); } return(so); }
/// <summary> /// 单条数据同步之前的相关操作:如判断数据是否存在,存在则先反审核等等之类的动作 /// </summary> public virtual void BeforeDoSynchroDataSign(AbsSynchroDataInfo row, SynchroLog log, out bool cancel) { cancel = false; }
public override AbsSynchroDataInfo BuildSynchroData(Context ctx, string fNumber, AbsSynchroDataInfo data = null) { QueryBuilderParemeter para = new QueryBuilderParemeter(); para.FormId = "BD_Customer"; para.SelectItems = SelectorItemInfo.CreateItems("FCreateOrgId,FUseOrgId,FNumber,FShortName,FName,FCOUNTRY,FAddress,FZIP,FTEL,FSELLER,FSALDEPTID,FCustTypeId,FTRADINGCURRID,FPriority,FIsTrade,F_HS_CustomerRegisteredMail"); if (!string.IsNullOrEmpty(fNumber)) { para.FilterClauseWihtKey = " FNumber ='" + fNumber + "' and FUseOrgId = 1"; var k3Data = Kingdee.BOS.App.ServiceHelper.GetService <IQueryService>().GetDynamicObjectCollection(ctx, para); if (k3Data != null && k3Data.Count > 0) { List <K3CustomerInfo> custs = BuildSynObjByCollection(ctx, k3Data); return(custs[0]); } } return(null); }
private JArray BuildBatchAdjustEntry(AbsSynchroDataInfo data) { JArray model = null; JObject baseData = null; if (data != null) { K3BatchAdjust just = data as K3BatchAdjust; if (just != null) { model = new JArray(); if (just.Entry != null && just.Entry.Count > 0) { foreach (var item in just.Entry) { if (item != null) { baseData = new JObject(); baseData.Add("FAdjustType", item.FAdjustType); JObject FPriceListId = new JObject();//价目表 FPriceListId.Add("FNUMBER", item.FPriceListId); baseData.Add("FPriceListId", FPriceListId); JObject FCurrencyId = new JObject();//币别 FCurrencyId.Add("FNUMBER", "USD"); baseData.Add("FCurrencyId", FCurrencyId); baseData.Add("FPriceObject", "A"); baseData.Add("FIsIncludedTax", "true"); JObject FMaterialId = new JObject(); FMaterialId.Add("FNUMBER", item.FMaterialId); baseData.Add("FMaterialId", FMaterialId); JObject FMatUnitId = new JObject(); FMatUnitId.Add("FNUMBER", item.FMatUnitId); baseData.Add("FMatUnitId", FMatUnitId); baseData.Add("FBeforePrice", item.FBeforePrice); baseData.Add("FAfterPrice", item.FAfterPrice); baseData.Add("F_HS_BeforeUSPrice", item.F_HS_BeforeUSPrice); baseData.Add("F_HS_BeforeUSNoPostagePrice", item.F_HS_BeforeUSNoPostagePrice); baseData.Add("F_HS_AfterUSPrice", item.F_HS_AfterUSPrice); baseData.Add("F_HS_AfterUSNoPostagePrice", item.F_HS_AfterUSNoPostagePrice); baseData.Add("F_HS_BeforeEUPrice", 0); baseData.Add("F_HS_AfterEUPrice", item.F_HS_AfterEUPrice); baseData.Add("F_HS_BeforeAUPrice", item.F_HS_BeforeAUPrice); baseData.Add("F_HS_BeforeAUNoPostagePrice", item.F_HS_BeforeAUNoPostagePrice); baseData.Add("F_HS_AfterAUPrice", item.F_HS_AfterAUPrice); baseData.Add("F_HS_AfterAUNoPostagePrice", item.F_HS_AfterAUNoPostagePrice); baseData.Add("F_HS_BeforeJPNoPostagePrice", item.F_HS_BeforeJPNoPostagePrice); baseData.Add("F_HS_AfterJPNoPostagePrice", item.F_HS_AfterJPNoPostagePrice); baseData.Add("F_HS_BeforeKRNoPostagePrice", item.F_HS_BeforeKRNoPostagePrice); baseData.Add("F_HS_AfterKRNoPostagePrice", item.F_HS_AfterKRNoPostagePrice); baseData.Add("F_HS_BeforeUKNoPostagePrice", item.F_HS_BeforeUKNoPostagePrice); baseData.Add("F_HS_AfterUKNoPostagePrice", item.F_HS_AfterUKNoPostagePrice); baseData.Add("F_HS_BeforeDENoPostagePrice", item.F_HS_BeforeDENoPostagePrice); baseData.Add("F_HS_AfterDENoPostagePrice", item.F_HS_AfterDENoPostagePrice); baseData.Add("F_HS_BeforeFRNoPostagePrice", item.F_HS_BeforeFRNoPostagePrice); baseData.Add("F_HS_AfterFRNoPostagePrice", item.F_HS_AfterFRNoPostagePrice); baseData.Add("F_HS_BeforeEUNoPostagePrice", item.F_HS_BeforeEUNoPostagePrice); baseData.Add("F_HS_AfterEUNoPostagePrice", item.F_HS_AfterEUNoPostagePrice); baseData.Add("FBeforeEffDate", item.FBeforeEffDate); baseData.Add("FAfterEffDate", item.FAfterEffDate); baseData.Add("FBeforeUnEffDate", item.FBeforeUnEffDate); baseData.Add("FAfterUnEffDate", item.FAfterUnEffDate); baseData.Add("FUnEffective", ""); model.Add(baseData); } } } } } return(model); }
public override AbsSynchroDataInfo BuildSynchroData(Context ctx, string json, AbsSynchroDataInfo data = null) { return(null); }
/// <summary> /// /// </summary> /// <param name="customerNo">客户编码</param> /// <param name="customerLevel">客户等级(1-8,默认1)</param> /// <param name="countryNo">国家编码</param> /// <param name="city">城市</param> /// <param name="zipCode">邮编</param> /// <param name="currencyNo">币别</param> /// <param name="inLogisWay">发货方式</param> public static Dictionary <string, string> GetFreight(Context ctx, AbsSynchroDataInfo info) { #region 参数 Dictionary <string, object> dict = null; if (info != null) { K3SalOrderInfo order = info as K3SalOrderInfo; if (order != null) { long timeStamp = GetTimeStamp(DateTime.Now); //时间戳 string phpKey = "ERPSHIPPINGFREE"; //签名key string signMsg = MD5Encrypt(order.FCustId + timeStamp + phpKey, Encoding.UTF8).ToUpper(); //签名(需大写) JSONObject jObj = new JSONObject(); jObj.Add("customer_id", order.FCustId); jObj.Add("whole", !string.IsNullOrWhiteSpace(order.FCustLevel) ? order.FCustLevel.Substring(order.FCustLevel.Length - 1, 1) : ""); jObj.Add("country", order.F_HS_RecipientCountry.ToUpper()); //国家代号(例如:US) jObj.Add("city", order.F_HS_DeliveryCity); //收货地址城市 jObj.Add("code", order.F_HS_PostCode); //收货地址邮编 jObj.Add("currency", order.FSettleCurrId); //货币类型(例如:USD)(首字母要大写) jObj.Add("time_stamp", timeStamp); //时间戳 jObj.Add("signMsg", signMsg); //签名 JSONArray rows = null; JSONObject products = null; JSONObject row = null; string dlcHSName = string.Empty; if (order.OrderEntry != null && order.OrderEntry.Count > 0) { var groups = from o in order.OrderEntry where !string.IsNullOrWhiteSpace(o.FMaterialId) && !string.IsNullOrWhiteSpace(o.FStockId) group o by o.FStockId into g select g; if (groups != null && groups.Count() > 0) { products = new JSONObject(); foreach (var group in groups) { if (group != null && group.Count() > 0) { rows = new JSONArray(); dlcHSName = GetStockName(ctx, group.FirstOrDefault().FStockId); foreach (var item in group) { if (item != null && !item.FMaterialId.StartsWith("99.")) { row = new JSONObject(); row.Add("fix_id", item.FMaterialId); row.Add("quantity", item.FQTY); rows.Add(row); } } if (!string.IsNullOrWhiteSpace(dlcHSName) && rows.Count > 0) { products.Add(dlcHSName, rows); } } } jObj.Add("products", products); } } #endregion StringBuilder sb = new StringBuilder(); List <Dictionary <string, string> > lstDic = CommonMethod.GetFreight(ctx, jObj, out sb); if (lstDic != null && lstDic.Count > 0) { foreach (var dic in lstDic) { if (dic.ContainsKey("F_HS_FreAmount") || dic.ContainsKey("F_HS_FreTiltle") || dic.ContainsKey("F_HS_AmountNoteUSD")) { return(dic); } } } } } return(null); }