Browse Source

1、床垫清单新增字段记录领料工组(新旧L1)
2、计算床垫报价时返回床网的计算参数

chen_yjin 1 week ago
parent
commit
c8b76f0a1a

+ 1 - 0
JLHHJSvr/Com/GetComputeMattress.cs

@@ -36,5 +36,6 @@ namespace JLHHJSvr.Com
         public string message { get; set; }
         public List<replacement> formulas_origin { get; set; }
         public List<u_mattress_computed> differ { get; set; }
+        public List<replacement> formulas_bednet { get; set; }
     }
 }

+ 8 - 0
JLHHJSvr/Com/Model/erp_prdpf.cs

@@ -67,6 +67,14 @@ namespace JLHHJSvr.Com.Model
         public string mtrlcode_son { get; set; }
         public decimal? price_bj_notax { get; set; }
         public string wrkgrpname { get; set; }
+        /// <summary>
+        /// 核价清单1的领料工组
+        /// </summary>
+        public string wrkgrpcode1 { get; set; }
+        /// <summary>
+        /// 核价清单2的领料工组
+        /// </summary>
+        public string wrkgrpcode2 { get; set; }
         #endregion
     }
 }

+ 1 - 0
JLHHJSvr/Com/Model/u_mattress_computed.cs

@@ -12,5 +12,6 @@ namespace JLHHJSvr.Com.Model
         public List<replacement> replace { get; set; }
         public string message { get; set; }
         public List<replacement> replace_origin { get; set; }
+        public List<replacement> replace_bednet { get; set; }
     }
 }

+ 9 - 0
JLHHJSvr/Com/Model/u_mattress_interface_qd.cs

@@ -18,6 +18,7 @@ namespace JLHHJSvr.Com.Model
         public int? mtrlid { get; set; }
         public int? erp_mtrlid { get; set; }
         public int? wrkgrpid { get; set; }
+        public int? wrkgrpid_new { get; set; }
         public decimal? useqty { get; set; }
         public string dscrp { get; set; }
         public decimal? actual_useqty { get; set; }
@@ -35,6 +36,14 @@ namespace JLHHJSvr.Com.Model
         public string erp_mtrlengname { get; set; }
         public int? billtype { get; set; }
         public int? formulaid { get; set; }
+        /// <summary>
+        /// 核价清单1的领料工组
+        /// </summary>
+        public string wrkgrpcode1 { get; set; }
+        /// <summary>
+        /// 核价清单2的领料工组
+        /// </summary>
+        public string wrkgrpcode2 { get; set; }
         #endregion
     }
 }

+ 7 - 2
JLHHJSvr/DataStore/_Mapper_mtrl2.xml

@@ -2,10 +2,15 @@
 <select>
 	<selectstr>
 		select u_mtrl_price.mtrlid,
-		u_mtrl_price.name as mtrlname,
-		ISNULL(u_mtrl_price_pricelist.price, 0) AS pricelistprice
+			u_mtrl_price.name as mtrlname,
+			ISNULL(u_mtrl_price_pricelist.price, 0) AS pricelistprice,
+			u_mtrltype.dannum1_rate,
+			u_mtrltype.dannum2_rate,
+			u_mtrltype.dannum3_rate,
+			u_mtrltype.dannum4_rate
 		from u_mtrl_price
 		LEFT JOIN u_mtrl_price_pricelist ON u_mtrl_price.mtrlid = u_mtrl_price_pricelist.mtrlid
+		LEFT OUTER JOIN u_mtrltype ON u_mtrl_price.mtrltype = u_mtrltype.mtrltypeid
 	</selectstr>
 	<where>
 		<when>

+ 32 - 0
JLHHJSvr/DataStore/_Mapper_wrkgrpcode2.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<data>
+	<json>
+		[
+          {
+              "value": 11,
+              "label": "木工-开料(1)1",
+              "code": "A001"
+          },
+          {
+              "value": 12,
+              "label": "木工-加厚(1)2",
+              "code": "A002"
+          },
+          {
+              "value": 13,
+              "label": "木工-精裁(1)3",
+              "code": "A003"
+          },
+          {
+              "value": 14,
+              "label": "木工-钻孔(1)",
+              "code": "A004"
+          },
+          {
+              "value": 15,
+              "label": "木工-铣型(1)",
+              "code": "A005"
+          },
+        ]
+	</json>
+</data>

+ 3 - 0
JLHHJSvr/DataStore/web_bednet_define.xml

@@ -90,6 +90,9 @@
 		u_mtrl_edge.name as mtrl_edge_name,
 		u_mtrl_felt.name as mtrl_felt_name,
 		u_mtrl_felt_x.name as mtrl_felt_x_name,
+		felt_mtrl_cost,
+		felt_mtrl_x_cost,
+		sponge_mtrl_tc_cost,
 		u_bednet.felt_mtrlid,
 		u_bednet.felt_x_mtrlid,
 		u_bednet.nottax_factory_cost,

+ 8 - 1
JLHHJSvr/DataStore/web_bednet_mx_add.xml

@@ -56,7 +56,11 @@
 			spring_mtrl_cost_replace_formula,
 			spring_hr_cost_replace_formula,
 
-			spring_weight_replace_formula
+			spring_weight_replace_formula,
+			u_mtrltype_spring.dannum1_rate,
+			u_mtrltype_spring.dannum2_rate,
+			u_mtrltype_spring.dannum3_rate,
+			u_mtrltype_spring.dannum4_rate
 		From u_bednetmx
 		left outer join (
 			SELECT u_spring.springid,
@@ -85,6 +89,9 @@
 			left(rtrim(cast(u_spring.cyclenum  as char(10))),4)   as name
 			FROM u_spring
 		) as vv_hard_spring on vv_hard_spring.springid = u_bednetmx.hard_around_springid
+		CROSS JOIN (
+			select dannum1_rate, dannum2_rate, dannum3_rate, dannum4_rate from u_mtrltype where mtrltypeid = 0
+		) AS u_mtrltype_spring
 	</selectstr>
 	<where>
 		<when notnull="@arg_bednetid">

+ 6 - 1
JLHHJSvr/Excutor/CreatMtrlPfExcutor.cs

@@ -97,12 +97,15 @@ namespace JLHHJSvr.Excutor
 	                            ,u_mattress_interface_qd.qd_actual_size 
 	                            ,u_mattress_interface_qd.qd_pfgroupqty 
 	                            ,u_mattress_interface_qd.wrkgrpid 
+	                            ,u_mattress_interface_qd.wrkgrpid_new 
+	                            ,u_mattress_interface_qd.wrkgrpcode1
+	                            ,u_mattress_interface_qd.wrkgrpcode2
 	                            ,u_mattress_interface_qd.ss_rate 
 	                            ,u_mattress_interface_qd.ls_rate 
 	                            ,u_mattress_interface_qd.sh_rate 
                             FROM u_mattress_interface_qd
                             LEFT JOIN u_mtrl_price ON u_mtrl_price.mtrlid = u_mattress_interface_qd.mtrlid";
-                var outputFields = "mattressid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,useqty,dscrp,mtrlname,actual_useqty,qd_actual_size,qd_pfgroupqty,wrkgrpid,ss_rate,ls_rate,sh_rate";
+                var outputFields = "mattressid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,useqty,dscrp,mtrlname,actual_useqty,qd_actual_size,qd_pfgroupqty,wrkgrpid,wrkgrpid_new,ss_rate,ls_rate,sh_rate,wrkgrpcode1,wrkgrpcode2";
                 DbSqlHelper.SelectJoin(cmd, selectStr, "mattressid = @mattressid", new Dictionary<string, object>() { { "@mattressid", request.mattressid } }, "printid", outputFields, 0, 0, mattress_interface_qd_list);
 
 
@@ -160,6 +163,8 @@ namespace JLHHJSvr.Excutor
                         pfgroup = ls_temp_pfgroup,
                         SonMtrlid = mx.erp_mtrlid,
                         wrkgrpid = mx.wrkgrpid,
+                        wrkgrpcode1 = mx.wrkgrpcode1,
+                        wrkgrpcode2 = mx.wrkgrpcode2,
                         sonpfcode = "[常规]",
                         dscrp = mx.bj_pzname_mx_mx,
                         pfgroupqty = mx.qd_pfgroupqty,

+ 4 - 4
JLHHJSvr/Excutor/GetComputeMattressExcutor.cs

@@ -74,17 +74,17 @@ namespace JLHHJSvr.Excutor
                                 helper.CalCulateFormula(_mattress, request.mattressMx, false);
                                 rslt.replace = helper.Replacements;
                                 rslt.formulas = helper.FormulaReplacements;
-
-                                differItem.replace = helper.Replacements;
+                                rslt.formulas_bednet = helper.BendetFormulasReplace;
                             }
                             else
                             {
                                 _mattress.dannum_type = i;
-
                                 helper.CalCulateFormula(_mattress, request.mattressMx, false);
-                                differItem.replace = helper.Replacements;
                             }
 
+                            differItem.replace = helper.Replacements;
+                            differItem.replace_bednet = helper.BendetReplace;
+
                             if (request.check_original == 1)
                             {
                                 _mattress.dannum_type = i;

+ 75 - 4
JLHHJSvr/Helper/BedNetHelper.cs

@@ -94,6 +94,17 @@ namespace JLHHJSvr.Helper
             CulcalateCost(bednet, mxlist, springList, isNewFormula);
 
             CulcalateWeight(bednet, mxlist, springList);
+
+
+            if (formula_replacements_hide.Count > 0)
+            {
+                foreach (var replacement in formula_replacements_hide)
+                {
+                    var _key = replacement.Key.Replace("【", "").Replace("】", "");
+                    var value = CalculateVarFormula(_key).DecimalValue;
+                    AddKeyValue(_key, value);
+                }
+            }
         }
         /// <summary>
         /// 获取损耗率
@@ -206,7 +217,6 @@ namespace JLHHJSvr.Helper
                         mx.spring_mtrl_cost = Calculate(mx.spring_mtrl_cost_replace_formula, out rp_formula, "弹簧材料总成本").DecimalValue;
                         mx.spring_mtrl_cost_replace_formula = rp_formula;
 
-
                         #region 获取损耗率,计算
                         if (isNewFormula)
                         {
@@ -323,6 +333,18 @@ namespace JLHHJSvr.Helper
                     mx.hard_around_mtrl_cost = Calculate(mx.hard_around_mtrl_cost_replace_formula, out rp_formula, "四周加硬材料成本").DecimalValue;
                     mx.hard_around_mtrl_cost_replace_formula = rp_formula;
                     bednet.hard_around_mtrl_cost += mx.hard_around_mtrl_cost;
+
+                    #region 获取损耗率,计算
+                    if (isNewFormula)
+                    {
+                        decimal? _rate = GetSumhaoRate(0);
+                        bednet.hard_around_mtrl_cost += mx.hard_around_mtrl_cost * (1 + _rate);
+                    }
+                    else
+                    {
+                        bednet.hard_around_mtrl_cost += mx.hard_around_mtrl_cost;
+                    }
+                    #endregion
                     AddKeyValue("四周加硬材料成本", bednet.hard_around_mtrl_cost);
                     AddFormulaMxKeyValue("【四周加硬材料成本】", bednet.hard_around_mtrl_formula);
                 }
@@ -407,7 +429,7 @@ namespace JLHHJSvr.Helper
                         if (mtrlPrice != null)
                         {
                             decimal? _rate = GetSumhaoRate(mtrlPrice.mtrltype.Value);
-                            bednet.fabrics1_mtrl_cost = bednet.fabrics2_mtrl_cost * (1 + _rate);
+                            bednet.fabrics2_mtrl_cost = bednet.fabrics2_mtrl_cost * (1 + _rate);
                         }
                     }
                     #endregion
@@ -833,6 +855,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("钢丝重量", bednet.spring_weight_qty);
                     AddFormulaWeightKeyValue("【钢丝重量】", bednet.spring_weight_formula, true, 1);
                 }
+                else
+                {
+                    AddKeyValue("钢丝重量", 0);
+                }
                 #endregion 计算 钢丝重量 结束
 
                 #region  计算 边铁重量 开始
@@ -844,6 +870,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("边铁重量", bednet.side_iron_weight_qty);
                     AddFormulaWeightKeyValue("【边铁重量】", bednet.side_iron_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("边铁重量", 0);
+                }
                 #endregion 计算 边铁重量 结束
 
                 #region  计算 四周加硬重量 开始
@@ -855,6 +885,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("四周加硬重量", bednet.hard_around_weight_qty);
                     AddFormulaWeightKeyValue("【四周加硬重量】", bednet.hard_around_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("四周加硬重量", 0);
+                }
                 #endregion 计算 四周加硬重量 结束
 
                 #region  计算 入袋无纺布重量 开始
@@ -866,6 +900,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("入袋无纺布重量", bednet.fabrics1_weight_qty);
                     AddFormulaWeightKeyValue("【入袋无纺布重量】", bednet.fabrics1_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("入袋无纺布重量", 0);
+                }
                 #endregion 计算 入袋无纺布重量 结束
 
                 #region  计算 面底无纺布重量 开始
@@ -877,6 +915,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("面底无纺布重量", bednet.fabrics2_weight_qty);
                     AddFormulaWeightKeyValue("【面底无纺布重量】", bednet.fabrics2_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("面底无纺布重量", 0);
+                }
                 #endregion 计算 面底无纺布重量 结束
 
                 #region  计算 上垫层重量 开始
@@ -891,6 +933,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("上/下垫层重量", bednet.felt_weight_qty);
                     AddFormulaWeightKeyValue("【上/下垫层重量】", bednet.felt_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("上/下垫层重量", 0);
+                }
                 #endregion 计算 上垫层重量 结束
 
                 #region  计算 下垫层重量 开始
@@ -905,6 +951,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("上/下垫层重量", bednet.felt_weight_qty);
                     AddFormulaWeightKeyValue("【上/下垫层重量】", bednet.felt_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("四周加硬重量", 0);
+                }
 
                 bednet.felt_weight_replace_formula += felt_weight_formula_replace_formula;
                 bednet.felt_weight_replace_formula += Environment.NewLine;
@@ -921,6 +971,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("C钉/夹码重量", bednet.cnail_weight_qty);
                     AddFormulaWeightKeyValue("【C钉/夹码重量】", bednet.cnail_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("C钉/夹码重量", 0);
+                }
                 #endregion 计算 C钉/夹码重量 结束
 
                 #region  计算 海绵包边重量 开始
@@ -932,6 +986,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("海绵包边重量", bednet.sponge_weight_qty);
                     AddFormulaWeightKeyValue("【海绵包边重量】", bednet.sponge_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("海绵包边重量", 0);
+                }
                 #endregion 计算 海绵包边重量 结束
 
                 #region  计算 填充海绵重量 开始
@@ -945,6 +1003,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("填充海绵重量", bednet.sponge_weight_tc_qty);
                     AddFormulaWeightKeyValue("【填充海绵重量】", bednet.sponge_weight_tc_formula);
                 }
+                else
+                {
+                    AddKeyValue("填充海绵重量", 0);
+                }
                 #endregion 计算 填充海绵重量 结束
 
                 #region  计算 封边材料重量 开始
@@ -958,6 +1020,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("封边材料重量", bednet.edge_weight_qty);
                     AddFormulaWeightKeyValue("【封边材料重量】", bednet.edge_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("封边材料重量", 0);
+                }
                 #endregion 计算 封边材料重量 结束
 
                 #region  计算 弹叉材料重量 开始
@@ -969,6 +1035,10 @@ namespace JLHHJSvr.Helper
                     AddKeyValue("弹叉材料重量", bednet.fork_weight_qty);
                     AddFormulaWeightKeyValue("【弹叉材料重量】", bednet.fork_weight_formula);
                 }
+                else
+                {
+                    AddKeyValue("弹叉材料重量", 0);
+                }
                 #endregion 计算 弹叉材料重量 结束
             }
 
@@ -1687,8 +1757,9 @@ namespace JLHHJSvr.Helper
         private TData CalculateVarFormula(string varname)
         {
             varname = $"【{varname}】";
-            if (!formula_replacements.ContainsKey(varname)) return null;
-            return Calculate(formula_replacements[varname].value, varname);
+            if (formula_replacements.ContainsKey(varname)) return Calculate(formula_replacements[varname].value, varname);
+            if (formula_replacements_hide.ContainsKey(varname)) return Calculate(formula_replacements_hide[varname].value, varname);
+            return null;
         }
         private void replaceFormulas(ref string expression)
         {

+ 4 - 1
JLHHJSvr/Helper/InterfaceHelper.cs

@@ -176,13 +176,16 @@ namespace JLHHJSvr.Helper
 	                            ,u_mattress_interface_qd.qd_actual_size 
 	                            ,u_mattress_interface_qd.qd_pfgroupqty 
 	                            ,u_mattress_interface_qd.wrkgrpid 
+	                            ,u_mattress_interface_qd.wrkgrpcode1
+	                            ,u_mattress_interface_qd.wrkgrpcode2
+	                            ,u_mattress_interface_qd.wrkgrpid_new
 	                            ,u_mattress_interface_qd.ss_rate 
 	                            ,u_mattress_interface_qd.ls_rate 
 	                            ,u_mattress_interface_qd.sh_rate 
 	                            ,u_mattress_interface_qd.formulaid 
                             FROM u_mattress_interface_qd
                             LEFT JOIN u_mtrl_price ON u_mtrl_price.mtrlid = u_mattress_interface_qd.mtrlid";
-            var outputFields = "mattressid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,useqty,dscrp,mtrlname,actual_useqty,qd_actual_size,qd_pfgroupqty,wrkgrpid,ss_rate,ls_rate,sh_rate";
+            var outputFields = "mattressid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,useqty,dscrp,mtrlname,actual_useqty,qd_actual_size,qd_pfgroupqty,wrkgrpid,wrkgrpid_new,ss_rate,ls_rate,sh_rate,wrkgrpcode1,wrkgrpcode2";
             DbSqlHelper.SelectJoin(cmd, selectStr, "mattressid = @mattressid", new Dictionary<string, object>() { { "@mattressid", mattressid } }, "printid", outputFields, 0, 0, qdList);
 
             if (qdList.Count <= 0)

+ 44 - 4
JLHHJSvr/Helper/MattressHelper.cs

@@ -27,6 +27,11 @@ namespace JLHHJSvr.Helper
         /// 隐藏公式
         /// </summary>
         private Dictionary<string, string> formula_replacements_hide = new Dictionary<string, string>();
+        /// <summary>
+        /// 床网参数替换
+        /// </summary>
+        public List<replacement> BendetReplace = new List<replacement>();
+        public List<replacement> BendetFormulasReplace = new List<replacement>();
 
         public List<replacement> Replacements
         {
@@ -68,6 +73,10 @@ namespace JLHHJSvr.Helper
         /// <param name="extraCosts">额外费用</param>
         public void CalCulateFormula(u_mattress mattress, List<u_mattress_mx_mtrl> mxlist, Boolean isCalBed = true, Boolean isNewFormula = true, List<u_mattress_mx_extra> extraProcesses = null, List<u_mattress_mx_extra> extraCosts = null)
         {
+
+            BendetReplace = new List<replacement>();
+            BendetFormulasReplace = new List<replacement>();
+
             InitMattress(mattress);
 
             InitReplaceMents(mattress, isNewFormula, extraProcesses, extraCosts);
@@ -212,6 +221,16 @@ namespace JLHHJSvr.Helper
             }
 
             InitMattressMxListReplaceMents(mattress, mxlist, isNewFormula);
+
+            if (formula_replacements_hide.Count > 0)
+            {
+                foreach (var replacement in formula_replacements_hide)
+                {
+                    var _key = replacement.Key.Replace("【", "").Replace("】", "");
+                    var value = CalculateVarFormula(_key).DecimalValue;
+                    AddKeyValue(_key, value);
+                }
+            }
         }
         /// <summary>
         /// 记录明细按分组读取厚度变量
@@ -310,6 +329,9 @@ namespace JLHHJSvr.Helper
 
                 bedNetHelper.CalCulateFormula(bednet, bednetMxlist, bednetSpringList, true, true);
 
+                BendetReplace = bedNetHelper.Replacements;
+                BendetFormulasReplace = bedNetHelper.FormulaReplacements.Where(itm => itm.label == "【车间成本】").ToList();
+
                 bedNetHelper.SaveBedNet(bednet, bednetMxlist, bednetSpringList);
 
                 mx.price = bednet.nottax_factory_cost;
@@ -634,10 +656,18 @@ namespace JLHHJSvr.Helper
                 param.Add("@varclass", 2);
                 DbSqlHelper.SelectJoin(cmd, selectStr, ListEx.GetWhereStr(whereList), param, "varid", "varid,varkind,varcode,varname,varclass,vartype,varunit,formula", 0, 0, bednetVarList);
 
+                string[] keys = { "车间成本", "不含税出厂价", "部门不含税价", "税金", "部门含税价", "外币价", "底价", "佣金" };
                 // 添加替换公式变量
                 foreach (var netvar in bednetVarList)
                 {
-                    AddFormulaKeyValue(netvar.varname, netvar.formula);
+                    if (keys.Contains(netvar.varname))
+                    {
+                        AddFormulaKeyValue(netvar.varname, netvar.formula);
+                    }
+                    else
+                    {
+                        AddFormulaHideKeyValue(netvar.varname, netvar.formula);
+                    }
                 }
             }
 
@@ -1967,7 +1997,7 @@ namespace JLHHJSvr.Helper
             foreach (var mx in qdlist)
             {
                 mx.mattressid = mattressid;
-                DbSqlHelper.Insert(cmd, mx, "mattressid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,wrkgrpid,useqty,dscrp,actual_useqty,qd_actual_size,qd_pfgroupqty,ss_rate,ls_rate,sh_rate,formulaid");
+                DbSqlHelper.Insert(cmd, mx, "mattressid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,wrkgrpid,wrkgrpid_new,useqty,dscrp,actual_useqty,qd_actual_size,qd_pfgroupqty,ss_rate,ls_rate,sh_rate,formulaid,wrkgrpcode1,wrkgrpcode2");
             }
 
 
@@ -2383,6 +2413,7 @@ namespace JLHHJSvr.Helper
         /// <param name="isReplace"></param>
         private void AddFormulaHideKeyValue(string key, string value, bool isReplace = true)
         {
+            key = $"【{key}】";
             if (!formula_replacements_hide.ContainsKey(key))
             {
                 formula_replacements_hide.Add(key, value);
@@ -2415,8 +2446,9 @@ namespace JLHHJSvr.Helper
         private TData CalculateVarFormula(string varname)
         {
             varname = $"【{varname}】";
-            if (!formula_replacements.ContainsKey(varname)) return null;
-            return Calculate(formula_replacements[varname], varname);
+            if (formula_replacements.ContainsKey(varname)) return Calculate(formula_replacements[varname], varname);
+            if (formula_replacements_hide.ContainsKey(varname)) return Calculate(formula_replacements_hide[varname], varname);
+            return null;
         }
         private void replaceFormulas(ref string expression)
         {
@@ -2430,6 +2462,14 @@ namespace JLHHJSvr.Helper
                     hasReplace = true;
                 }
             }
+            foreach (var replacement in formula_replacements_hide)
+            {
+                if (expression.IndexOf(replacement.Key) > -1)
+                {
+                    expression = expression.Replace(replacement.Key, "(" + replacement.Value + ")");
+                    hasReplace = true;
+                }
+            }
             if (hasReplace)
             {
                 replaceFormulas(ref expression);