/// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #5
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        /// <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);
        }
Exemple #9
0
        /// <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);
        }
Exemple #15
0
        /// <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);
Exemple #19
0
        /// <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);
        }
Exemple #20
0
        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);
        }
Exemple #23
0
        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);
 }
Exemple #25
0
        /// <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);
        }