/// <summary>
        /// 获取同步数据
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="objects"></param>
        /// <returns></returns>
        public override IEnumerable <AbsSynchroDataInfo> GetK3Datas(Context ctx, List <DynamicObject> objects, ref HttpResponseResult result)
        {
            K3BatchAdjust        just  = null;
            List <K3BatchAdjust> justs = null;

            result         = new HttpResponseResult();
            result.Success = true;

            if (objects != null && objects.Count > 0)
            {
                justs = new List <K3BatchAdjust>();

                foreach (var obj in objects)
                {
                    if (obj != null)
                    {
                        bool yNInSync = Convert.ToBoolean(SQLUtils.GetFieldValue(obj, "F_HS_YNInSync"));

                        if (!yNInSync)
                        {
                            if (GetK3BatchAdjustEntry(ctx, obj) != null && GetK3BatchAdjustEntry(ctx, obj).Count > 0)
                            {
                                just = new K3BatchAdjust();

                                just.FBillNo       = SQLUtils.GetFieldValue(obj, "BillNo");
                                just.SrcNo         = just.FBillNo;
                                just.FDate         = TimeHelper.GetTimeStamp(Convert.ToDateTime(SQLUtils.GetFieldValue(obj, "Date")));
                                just.F_HS_YNInSync = yNInSync;

                                just.Entry = GetK3BatchAdjustEntry(ctx, obj);
                                justs.Add(just);
                            }
                        }
                    }
                }
            }
            return(justs);
        }
Beispiel #2
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);
        }
Beispiel #3
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 string GetExecuteUpdateSql(Context ctx, List <AbsSynchroDataInfo> datas)
        {
            string sql = string.Empty;

            if (datas != null && datas.Count() > 0)
            {
                foreach (var data in datas)
                {
                    if (data != null)
                    {
                        K3BatchAdjust adjust = data as K3BatchAdjust;

                        if (adjust != null)
                        {
                            sql += string.Format(@"/*dialect*/ update a  set a.F_HS_YNInSync = '{0}'
                                                            from T_SAL_BATCHADJUST a
                                                            inner join T_SAL_BATCHADJUSTENTRY b on a.FID = b.FID
                                                            where a.FBILLNO = '{1}'
                                                            and a.F_HS_YNInSync = '{2}'
                                                            ", "1", adjust.FBillNo, "0");
                            sql += string.Format(@"/*dialect*/ update a  set a.F_HS_YNEntryInSync = '{0}'
                                                            from T_SAL_BATCHADJUSTENTRY a
                                                            inner join T_SAL_BATCHADJUST b on a.FID = b.FID
                                                            where b.FBILLNO = '{1}'
                                                            and a.F_HS_YNEntryInSync = '{2}'
                                                            ", "1", adjust.FBillNo, "0");

                            if (adjust.Entry != null && adjust.Entry.Count > 0)
                            {
                                foreach (var en in adjust.Entry)
                                {
                                    if (en != null)
                                    {
                                        //如果批量调价单调的特价价目表,不反写销售价目表美国价格、澳洲价格、欧洲价格
                                        if (!en.F_HS_YNSpecialPrice)
                                        {
                                            if (!string.IsNullOrWhiteSpace(en.F_HS_AfterUSPrice))
                                            {
                                                if (Convert.ToDecimal(en.F_HS_AfterUSPrice) > 0)
                                                {
                                                    sql += string.Format(@"/*dialect*/update a set a.F_HS_USPrice = {0}
                                                                        from T_SAL_PRICELISTENTRY a
                                                                        inner join T_SAL_PRICELIST b on a.FID = b.FID
                                                                        inner join T_SAL_BATCHADJUSTENTRY c on c.FPRICELISTID = a.FID and a.FMATERIALID=c.FMATERIALID and a.FUNITID=c.FMATUNITID  and a.FEFFECTIVEDATE=c.FAFTEREFFDATE and a.FEXPRIYDATE=c.FAFTERUNEFFDATE
                                                                        inner join T_SAL_BATCHADJUST d on d.FID = c.FID
                                                                        inner join T_BD_MATERIAL e on a.FMATERIALID = e.FMATERIALID
                                                                        where d.FBILLNO = '{1}'
																		and e.FNUMBER = '{2}' 
																		and b.FNUMBER = '{3}'"                                                                        , en.F_HS_AfterUSPrice, adjust.FBillNo, en.FMaterialId, en.FPriceListId) + Environment.NewLine;
                                                }
                                            }
                                            if (!string.IsNullOrWhiteSpace(en.F_HS_AfterUSNoPostagePrice))
                                            {
                                                if (Convert.ToDecimal(en.F_HS_AfterUSNoPostagePrice) > 0)
                                                {
                                                    sql += string.Format(@"/*dialect*/update a set a.F_HS_USNoPostagePrice = {0}
                                                                        from T_SAL_PRICELISTENTRY a
                                                                        inner join T_SAL_PRICELIST b on a.FID = b.FID
                                                                        inner join T_SAL_BATCHADJUSTENTRY c on c.FPRICELISTID = a.FID and a.FMATERIALID=c.FMATERIALID and a.FUNITID=c.FMATUNITID  and a.FEFFECTIVEDATE=c.FAFTEREFFDATE and a.FEXPRIYDATE=c.FAFTERUNEFFDATE
                                                                        inner join T_SAL_BATCHADJUST d on d.FID = c.FID
                                                                        inner join T_BD_MATERIAL e on a.FMATERIALID = e.FMATERIALID
                                                                        where d.FBILLNO = '{1}'
																		and e.FNUMBER = '{2}' 
																		and b.FNUMBER = '{3}'"                                                                        , en.F_HS_AfterUSNoPostagePrice, adjust.FBillNo, en.FMaterialId, en.FPriceListId) + Environment.NewLine;
                                                }
                                            }
                                            if (!string.IsNullOrWhiteSpace(en.F_HS_AfterAUPrice))
                                            {
                                                if (Convert.ToDecimal(en.F_HS_AfterAUPrice) > 0)
                                                {
                                                    sql += string.Format(@"/*dialect*/update a set a.F_HS_AUPrice = {0}
                                                                        from T_SAL_PRICELISTENTRY a
                                                                        inner join T_SAL_PRICELIST b on a.FID = b.FID
                                                                        inner join T_SAL_BATCHADJUSTENTRY c on c.FPRICELISTID = a.FID and a.FMATERIALID=c.FMATERIALID and a.FUNITID=c.FMATUNITID  and a.FEFFECTIVEDATE=c.FAFTEREFFDATE and a.FEXPRIYDATE=c.FAFTERUNEFFDATE
                                                                        inner join T_SAL_BATCHADJUST d on d.FID = c.FID
                                                                        inner join T_BD_MATERIAL e on a.FMATERIALID = e.FMATERIALID
                                                                        where d.FBILLNO = '{1}'
																		and e.FNUMBER = '{2}' 
																		and b.FNUMBER = '{3}'"                                                                        , en.F_HS_AfterAUPrice, adjust.FBillNo, en.FMaterialId, en.FPriceListId) + Environment.NewLine;
                                                }
                                            }
                                            if (!string.IsNullOrWhiteSpace(en.F_HS_AfterAUNoPostagePrice))
                                            {
                                                if (Convert.ToDecimal(en.F_HS_AfterAUNoPostagePrice) > 0)
                                                {
                                                    sql += string.Format(@"/*dialect*/update a set a.F_HS_AUNoPostagePrice = {0}
                                                                        from T_SAL_PRICELISTENTRY a
                                                                        inner join T_SAL_PRICELIST b on a.FID = b.FID
                                                                        inner join T_SAL_BATCHADJUSTENTRY c on c.FPRICELISTID = a.FID and a.FMATERIALID=c.FMATERIALID and a.FUNITID=c.FMATUNITID  and a.FEFFECTIVEDATE=c.FAFTEREFFDATE and a.FEXPRIYDATE=c.FAFTERUNEFFDATE
                                                                        inner join T_SAL_BATCHADJUST d on d.FID = c.FID
                                                                        inner join T_BD_MATERIAL e on a.FMATERIALID = e.FMATERIALID
                                                                        where d.FBILLNO = '{1}'
																		and e.FNUMBER = '{2}' 
																		and b.FNUMBER = '{3}'"                                                                        , en.F_HS_AfterAUNoPostagePrice, adjust.FBillNo, en.FMaterialId, en.FPriceListId) + Environment.NewLine;
                                                }
                                            }
                                            if (!string.IsNullOrWhiteSpace(en.F_HS_AfterEUPrice))
                                            {
                                                if (Convert.ToDecimal(en.F_HS_AfterEUPrice) > 0)
                                                {
                                                    sql += string.Format(@"/*dialect*/update a set a.F_HS_EUPrice = {0}
                                                                        from T_SAL_PRICELISTENTRY a
                                                                        inner join T_SAL_PRICELIST b on a.FID = b.FID
                                                                        inner join T_SAL_BATCHADJUSTENTRY c on c.FPRICELISTID = a.FID and a.FMATERIALID=c.FMATERIALID and a.FUNITID=c.FMATUNITID  and a.FEFFECTIVEDATE=c.FAFTEREFFDATE and a.FEXPRIYDATE=c.FAFTERUNEFFDATE
                                                                        inner join T_SAL_BATCHADJUST d on d.FID = c.FID
                                                                        inner join T_BD_MATERIAL e on a.FMATERIALID = e.FMATERIALID
                                                                        where d.FBILLNO = '{1}'
																		and e.FNUMBER = '{2}' 
																		and b.FNUMBER = '{3}'"                                                                        , en.F_HS_AfterEUPrice, adjust.FBillNo, en.FMaterialId, en.FPriceListId) + Environment.NewLine;
                                                }
                                            }

                                            if (!string.IsNullOrWhiteSpace(en.F_HS_AfterJPNoPostagePrice))
                                            {
                                                if (Convert.ToDecimal(en.F_HS_AfterJPNoPostagePrice) > 0)
                                                {
                                                    sql += string.Format(@"/*dialect*/update a set a.F_HS_JPNoPostagePrice = {0}
                                                                        from T_SAL_PRICELISTENTRY a
                                                                        inner join T_SAL_PRICELIST b on a.FID = b.FID
                                                                        inner join T_SAL_BATCHADJUSTENTRY c on c.FPRICELISTID = a.FID and a.FMATERIALID=c.FMATERIALID and a.FUNITID=c.FMATUNITID  and a.FEFFECTIVEDATE=c.FAFTEREFFDATE and a.FEXPRIYDATE=c.FAFTERUNEFFDATE
                                                                        inner join T_SAL_BATCHADJUST d on d.FID = c.FID
                                                                        inner join T_BD_MATERIAL e on a.FMATERIALID = e.FMATERIALID
                                                                        where d.FBILLNO = '{1}'
																		and e.FNUMBER = '{2}' 
																		and b.FNUMBER = '{3}'"                                                                        , en.F_HS_AfterJPNoPostagePrice, adjust.FBillNo, en.FMaterialId, en.FPriceListId) + Environment.NewLine;
                                                }
                                            }

                                            if (!string.IsNullOrWhiteSpace(en.F_HS_AfterKRNoPostagePrice))
                                            {
                                                if (Convert.ToDecimal(en.F_HS_AfterKRNoPostagePrice) > 0)
                                                {
                                                    sql += string.Format(@"/*dialect*/update a set a.F_HS_KRNoPostagePrice = {0}
                                                                        from T_SAL_PRICELISTENTRY a
                                                                        inner join T_SAL_PRICELIST b on a.FID = b.FID
                                                                        inner join T_SAL_BATCHADJUSTENTRY c on c.FPRICELISTID = a.FID and a.FMATERIALID=c.FMATERIALID and a.FUNITID=c.FMATUNITID  and a.FEFFECTIVEDATE=c.FAFTEREFFDATE and a.FEXPRIYDATE=c.FAFTERUNEFFDATE
                                                                        inner join T_SAL_BATCHADJUST d on d.FID = c.FID
                                                                        inner join T_BD_MATERIAL e on a.FMATERIALID = e.FMATERIALID
                                                                        where d.FBILLNO = '{1}'
																		and e.FNUMBER = '{2}' 
																		and b.FNUMBER = '{3}'"                                                                        , en.F_HS_AfterKRNoPostagePrice, adjust.FBillNo, en.FMaterialId, en.FPriceListId) + Environment.NewLine;
                                                }
                                            }
                                            if (!string.IsNullOrWhiteSpace(en.F_HS_AfterEUNoPostagePrice))
                                            {
                                                if (Convert.ToDecimal(en.F_HS_AfterEUNoPostagePrice) > 0)
                                                {
                                                    sql += string.Format(@"/*dialect*/update a set a.F_HS_EUNoPostagePrice = {0}
                                                                        from T_SAL_PRICELISTENTRY a
                                                                        inner join T_SAL_PRICELIST b on a.FID = b.FID
                                                                        inner join T_SAL_BATCHADJUSTENTRY c on c.FPRICELISTID = a.FID and a.FMATERIALID=c.FMATERIALID and a.FUNITID=c.FMATUNITID  and a.FEFFECTIVEDATE=c.FAFTEREFFDATE and a.FEXPRIYDATE=c.FAFTERUNEFFDATE
                                                                        inner join T_SAL_BATCHADJUST d on d.FID = c.FID
                                                                        inner join T_BD_MATERIAL e on a.FMATERIALID = e.FMATERIALID
                                                                        where d.FBILLNO = '{1}'
																		and e.FNUMBER = '{2}' 
																		and b.FNUMBER = '{3}'"                                                                        , en.F_HS_AfterEUNoPostagePrice, adjust.FBillNo, en.FMaterialId, en.FPriceListId) + Environment.NewLine;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(sql);
        }