Browse Source

核价后台:1、修复复制报价计算错误问题;
2、床垫清单配置列表,针对“林氏辅料”优化匹配机制;
3、修复金蝶核价时间更新字段

chen_yjin 4 days ago
parent
commit
c886cc4b2a

+ 18 - 9
JLHHJSvr/DataStore/web_mattress.xml

@@ -50,7 +50,10 @@
 		dept_cost,
 		foreign_cost,
 		foreign_cost_bz,
-		nottax_factory_cost  / ( dept_profitrate + dept_profitrate_rangli / 100  ) as dijia_cost,
+		CASE WHEN ( dept_profitrate + dept_profitrate_rangli / 100  ) = 0 
+			THEN nottax_factory_cost
+			ELSE nottax_factory_cost  / ( dept_profitrate + dept_profitrate_rangli / 100  )
+		END AS dijia_cost,
 		xd_flag,
 		xd_auditingrep,
 		xd_auditingdate,
@@ -84,14 +87,14 @@
 		cubage,
 		parentid,
 		vv_mattress.child_count,
-		 dannum_cost1,
-		 dannum_cost2,
-		 dannum_cost3,
-		 dannum_cost4,
-		 dijia_cost1,
-		 dijia_cost2,
-		 dijia_cost3,
-		 dijia_cost4
+		dannum_cost1,
+		dannum_cost2,
+		dannum_cost3,
+		dannum_cost4,
+		dijia_cost1,
+		dijia_cost2,
+		dijia_cost3,
+		dijia_cost4
 
 		From u_mattress
 		LEFT JOIN (
@@ -118,6 +121,9 @@
 		<when $user_outrepstr!="-1">
 			u_mattress.createby in ($$user_outrepstr$$)
 		</when>
+		<when $user_deptstr!="-1">
+			u_mattress.deptid in ($$user_deptstr$$)
+		</when>
 		<when notnull="@arg_qr_flag">
 			u_mattress.qr_flag = @arg_qr_flag
 		</when>
@@ -133,6 +139,9 @@
 		<when>
 			u_mattress.bcptypeid = 0
 		</when>
+		<when notnull="@arg_createby">
+			u_mattress.createby = @arg_createby
+		</when>
 		<when notempty="@arg_search">
 			EXISTS (SELECT 1 FROM dbo.SC_SPLIT(@arg_search, ',') A WHERE A.Item <> '' AND (u_mattress.mattresscode LIKE '%'+LTRIM(RTRIM(A.Item))+'%' OR u_mattress.mattressrelcode like '%'+LTRIM(RTRIM(A.Item))+'%' OR u_mattress.mattressname like '%'+LTRIM(RTRIM(A.Item))+'%'))
 		</when>

+ 10 - 0
JLHHJSvr/DataStore/web_mattress_interfacelist.xml

@@ -102,6 +102,16 @@ SELECT u_mattress.mattressid
 		OR u_mattress.mattressname like '%'+ @arg_search + '%' OR u_mattress.erp_mtrlengname like '%'+ @arg_search + '%'
 		OR u_mattress.erp_mtrlcode like '%'+ @arg_search + '%'
 	</when>
+	<when notempty="@arg_firstdate">
+		(@arg_datetype = 0 AND u_mattress.yw_auditingdate >= @arg_firstdate) OR
+		(@arg_datetype = 1 AND u_mattress.js1_auditingdate >= @arg_firstdate) OR
+		(@arg_datetype = 2 AND u_mattress.js2_auditingdate >= @arg_firstdate)
+	</when>
+	<when notempty="@arg_enddate">
+		(@arg_datetype = 0 AND u_mattress.yw_auditingdate <= @arg_enddate) OR
+		(@arg_datetype = 1 AND u_mattress.js1_auditingdate <= @arg_enddate) OR
+		(@arg_datetype = 2 AND u_mattress.js2_auditingdate <= @arg_enddate)
+	</when>
   </where>
   <orderstr>mattressid DESC</orderstr>
   <displayfields>

+ 1 - 1
JLHHJSvr/Excutor/ReCalculateERPCostExcutor.cs

@@ -79,7 +79,7 @@ namespace JLHHJSvr.Excutor
 
                                 if (mattress_temp.erp_mtrlid > 0)
                                 {
-                                    string errmsg = l1Helper.SaveMtrldef(mattress_temp, null, "");
+                                    string errmsg = l1Helper.SaveMtrldef(mattress_temp, null, "GYAuditdate");
                                     if (!string.IsNullOrEmpty(errmsg)) throw new LJCommonException(errmsg);
                                 }
 

+ 7 - 7
JLHHJSvr/Helper/ERPHelper.cs

@@ -342,7 +342,7 @@ namespace JLHHJSvr.Helper
         /// </summary>
         /// <param name="mtrl">核价物料资料</param>
         /// <returns>错误信息</returns>
-        public string SaveMtrldef(u_mattress mtrl, List<u_mattress_interface> interfaceList = null, string fields = "mtrlname,mtrlmode,mtrltypeid,mtrltype,unit,mtrlengname,configcode,configname,model,configcodetype,moddate,modemp,ifautodd,piccode,zxmtrlmode,flag,secflag")
+        public string SaveMtrldef(u_mattress mtrl, List<u_mattress_interface> interfaceList = null, string fields = "mtrlname,mtrlmode,mtrltypeid,mtrltype,unit,mtrlengname,configcode,configname,model,configcodetype,moddate,modemp,ifautodd,piccode,zxmtrlmode,flag,secflag,GYAuditdate")
         {
             var errMsg = string.Empty;
 
@@ -378,13 +378,13 @@ namespace JLHHJSvr.Helper
                         ["mtrltype"] = mtrl.erp_mtrltype,
                         ["unit"] = mtrl.erp_mtrlunit,
                         ["mtrlengname"] = mtrl.erp_mtrlengname,
-                        ["dijia_cost1"] = mtrl.dijia_cost1, // 底价1
-                        ["dijia_cost2"] = mtrl.dijia_cost2, // 底价2
-                        ["dijia_cost3"] = mtrl.dijia_cost3, // 底价3
-                        ["dijia_cost4"] = mtrl.dijia_cost4, // 底价3
+                        ["dijia_cost1"] = mtrl.dijia_cost1.Value.ToString("###0.00"), // 底价1
+                        ["dijia_cost2"] = mtrl.dijia_cost2.Value.ToString("###0.00"), // 底价2
+                        ["dijia_cost3"] = mtrl.dijia_cost3.Value.ToString("###0.00"), // 底价3
+                        ["dijia_cost4"] = mtrl.dijia_cost4.Value.ToString("###0.00"), // 底价3
                         ["GYAuditdate"] = DateTime.Now, // 底价更新时间
-                        ["fob"] = mtrl.fob, // fob费用
-                        ["taxes"] = mtrl.taxes, // 税金
+                        ["fob"] = mtrl.fob.Value.ToString("###0.0000"), // fob费用
+                        ["taxes"] = mtrl.taxes.Value.ToString("###0.0000"), // 税金
                         ["extras_cost"] = mtrl.extras_cost, // 额外费用
                         ["planprice"] = mtrl.nottax_factory_cost, // 计划价
                         ["bj_mxdscrp"] = mtrl.bj_mxdscrp,

+ 41 - 2
JLHHJSvr/Helper/InterfaceHelper.cs

@@ -1844,9 +1844,17 @@ namespace JLHHJSvr.Helper
         {
             var resultList = new List<erp_configure_code>();
             var typeList = new List<erp_configure_code>();
+
+            // 特殊匹配林氏辅料
+            var ifLSAccessory = false;
             foreach (var item in interfaceList)
             {
                 typeList.Add(new erp_configure_code() { typeid = configcodetype, name = item.bj_pzname });
+
+                if (!ifLSAccessory && item.itemname == "辅料" && item.bj_pzname.Contains("林氏") && !item.bj_pzname.Contains("林氏定制正标"))
+                {
+                    ifLSAccessory = true;
+                }
             }
 
             var configure_Type = new u_configure_type() { contfigtypeid = configcodetype };
@@ -1861,6 +1869,11 @@ namespace JLHHJSvr.Helper
                     }
                 }
 
+                var whereStr = "";
+                if (ifLSAccessory)
+                {
+                    whereStr = " OR u_configure_code.name like '%林氏辅料%' ";
+                }
                 // 查询核价系统的配置资料定义
                 cmd.CommandText = @"SELECT u_configure_code.pzid
 	                                    ,u_configure_code.pzcode
@@ -1868,7 +1881,7 @@ namespace JLHHJSvr.Helper
 	                                    ,u_configure_code.inputtype
                                     FROM u_configure_code
                                     WHERE u_configure_code.typeid = @configcodetype
-	                                    AND u_configure_code.name IN " + ListEx.getString(names);
+	                                    AND (u_configure_code.name IN " + ListEx.getString(names) + whereStr + " )";
                 cmd.Parameters.Clear();
                 cmd.Parameters.AddWithValue("@configcodetype", configcodetype);
                 using (var reader = cmd.ExecuteReader())
@@ -1895,15 +1908,17 @@ namespace JLHHJSvr.Helper
                 resultList = erpHelper.GetERPList<erp_configure_code>("GetL1ConfigureCode", parameters);
             }
 
-
+            var LSIndex = 0;
             for (var i = 0; i < interfaceList.Count; i++)
             {
                 interfaceList[i].printid = i + 1;
 
+                var matchState = false;
                 foreach (var result in resultList)
                 {
                     if (interfaceList[i].bj_pzname == result.name)
                     {
+                        matchState = true;
                         if (result.pzid > 0)
                         {
                             interfaceList[i].erp_pzid = result.pzid;
@@ -1914,6 +1929,30 @@ namespace JLHHJSvr.Helper
                         if (interfaceList[i].bj_inputtype != 2) interfaceList[i].bj_inputtype = result.inputtype;
                     }
                 }
+
+                if (ifLSAccessory && !matchState && interfaceList[i].itemname == "辅料" && interfaceList[i].bj_pzname.Contains("林氏") && !interfaceList[i].bj_pzname.Contains("林氏定制正标"))
+                {
+                    if (!interfaceList[i].bj_pzname.Contains("位置"))
+                    {
+                        LSIndex++;
+                    }
+                    foreach (var result in resultList)
+                    {
+                        var _pzname = string.Format("林氏辅料{0}{1}", LSIndex, interfaceList[i].bj_pzname.Contains("位置") ? "位置" : "");
+                        if (result.name == _pzname)
+                        {
+                            matchState = true;
+                            if (result.pzid > 0)
+                            {
+                                interfaceList[i].erp_pzid = result.pzid;
+                                interfaceList[i].erp_pzcode = result.pzcode;
+                                interfaceList[i].erp_pzname = result.name;
+                            }
+
+                            if (interfaceList[i].bj_inputtype != 2) interfaceList[i].bj_inputtype = result.inputtype;
+                        }
+                    }
+                }
             }
         }
         /// <summary>

+ 9 - 7
JLHHJSvr/Helper/MattressHelper.cs

@@ -82,7 +82,7 @@ namespace JLHHJSvr.Helper
 
             InitMattress(mattress);
 
-            InitReplaceMents(mattress, isNewFormula, extraProcesses, extraCosts);
+            InitReplaceMents(mattress, isCalBed, isNewFormula, extraProcesses, extraCosts);
 
             if (isCalBed || isNewFormula) CalCulateBedNet(mxlist, isCalBed, isNewFormula, mattress.deptid.Value);
             // 实时计算价格
@@ -560,12 +560,12 @@ namespace JLHHJSvr.Helper
 
             return amt;
         }
-        private void InitReplaceMents(u_mattress mattress, Boolean isNewFormula = true, List<u_mattress_mx_extra> extraProcesses = null, List<u_mattress_mx_extra> extraCosts = null)
+        private void InitReplaceMents(u_mattress mattress, Boolean isCalBed = true, Boolean isNewFormula = true, List<u_mattress_mx_extra> extraProcesses = null, List<u_mattress_mx_extra> extraCosts = null)
         {
             replacements.Clear();
 
             decimal cost = 0;
-            if (extraCosts != null && extraCosts.Count > 0)
+            if (isCalBed)
             {
                 foreach(var itemCost in extraCosts)
                 {
@@ -579,7 +579,7 @@ namespace JLHHJSvr.Helper
             AddKeyValue("材料额外费用", cost);
 
             decimal cost1 = 0;
-            if (extraProcesses != null && extraProcesses.Count > 0)
+            if (isCalBed)
             {
                 foreach (var itemPro in extraProcesses)
                 {
@@ -1256,8 +1256,8 @@ namespace JLHHJSvr.Helper
             mattress.profitrate_point = GetWorkmanshipRate(mattress, field, "工艺点数", isNewFormula);
             AddKeyValue("工艺点数", mattress.profitrate_point);
 
-            decimal extraProcesses = GetExtraAmt(mattress, 1);
-            AddKeyValue("特殊工艺费用", extraProcesses);
+            //decimal extraProcesses = GetExtraAmt(mattress, 1);
+            //AddKeyValue("特殊工艺费用", extraProcesses);
         }
         /// <summary>
         /// 计算内布套特殊加点
@@ -2188,6 +2188,9 @@ namespace JLHHJSvr.Helper
 
             foreach (var mx in mxlist) {
                 mx.mattressid = mattressid;
+                mx.actual_size = mx.actual_size ?? "";
+                mx.sb_craft = mx.sb_craft ?? "";
+                mx.actual_size_sb = mx.actual_size_sb ?? "";
                 DbSqlHelper.Insert(cmd, mx, "mattressid,printid,itemname,bj_pzname,bj_namemx,actual_size,sb_craft,actual_size_sb,erp_pzid,bj_inputtype,ss_rate,ls_rate"); 
             }
 
@@ -2226,7 +2229,6 @@ namespace JLHHJSvr.Helper
                         if (nottax_factory_cost.Count > 0)
                         {
                             decimal nottax_value = Convert.ToDecimal(nottax_factory_cost[0].value);
-                            decimal dept_costValue = Convert.ToDecimal(dept_cost[0].value);
 
                             if (i == 1)
                             {