diff --git a/00.SDK/E_ZKEccSDK/E_ZKEccSDK.csproj b/00.SDK/E_ZKEccSDK/E_ZKEccSDK.csproj index 8afddd2..1ae2850 100644 --- a/00.SDK/E_ZKEccSDK/E_ZKEccSDK.csproj +++ b/00.SDK/E_ZKEccSDK/E_ZKEccSDK.csproj @@ -7,7 +7,7 @@ {9A0273E4-D584-4418-951C-020D4EFF1732} Library Properties - E_ZKEccSDK + E_ZKEcc E_ZKEccSDK v4.0 512 @@ -74,8 +74,9 @@ HandleUtils + - + \ No newline at end of file diff --git a/00.SDK/E_ZKEccSDK/Request/DepartmentGetRequest.cs b/00.SDK/E_ZKEccSDK/Request/DepartmentGetRequest.cs index c2e901d..9338b3d 100644 --- a/00.SDK/E_ZKEccSDK/Request/DepartmentGetRequest.cs +++ b/00.SDK/E_ZKEccSDK/Request/DepartmentGetRequest.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Request +namespace E_ZKEcc.Request { public class DepartmentGetRequest { diff --git a/00.SDK/E_ZKEccSDK/Request/DepartmentUpdateRequest.cs b/00.SDK/E_ZKEccSDK/Request/DepartmentUpdateRequest.cs index 2678b67..fd4eefc 100644 --- a/00.SDK/E_ZKEccSDK/Request/DepartmentUpdateRequest.cs +++ b/00.SDK/E_ZKEccSDK/Request/DepartmentUpdateRequest.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Request +namespace E_ZKEcc.Request { public class DepartmentUpdateRequest { diff --git a/00.SDK/E_ZKEccSDK/Request/EmployeeGetRequest.cs b/00.SDK/E_ZKEccSDK/Request/EmployeeGetRequest.cs index c4aecfa..4809d6f 100644 --- a/00.SDK/E_ZKEccSDK/Request/EmployeeGetRequest.cs +++ b/00.SDK/E_ZKEccSDK/Request/EmployeeGetRequest.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Request +namespace E_ZKEcc.Request { public class EmployeeGetRequest { diff --git a/00.SDK/E_ZKEccSDK/Request/EmployeeUpdateRequest.cs b/00.SDK/E_ZKEccSDK/Request/EmployeeUpdateRequest.cs index 4e7f41c..fe3706d 100644 --- a/00.SDK/E_ZKEccSDK/Request/EmployeeUpdateRequest.cs +++ b/00.SDK/E_ZKEccSDK/Request/EmployeeUpdateRequest.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Request +namespace E_ZKEcc.Request { public class EmployeeUpdateRequest { diff --git a/00.SDK/E_ZKEccSDK/Request/TransactionGetRequest.cs b/00.SDK/E_ZKEccSDK/Request/TransactionGetRequest.cs index 2c5c9ef..ac4984b 100644 --- a/00.SDK/E_ZKEccSDK/Request/TransactionGetRequest.cs +++ b/00.SDK/E_ZKEccSDK/Request/TransactionGetRequest.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Request +namespace E_ZKEcc.Request { public class TransactionGetRequest { diff --git a/00.SDK/E_ZKEccSDK/Response/DepartmentGetResponse.cs b/00.SDK/E_ZKEccSDK/Response/DepartmentGetResponse.cs index 8d117a5..04e8edd 100644 --- a/00.SDK/E_ZKEccSDK/Response/DepartmentGetResponse.cs +++ b/00.SDK/E_ZKEccSDK/Response/DepartmentGetResponse.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Response +namespace E_ZKEcc.Response { public class DepartmentGetResponse { diff --git a/00.SDK/E_ZKEccSDK/Response/EmployeeGetResponse.cs b/00.SDK/E_ZKEccSDK/Response/EmployeeGetResponse.cs index 953ec06..9d6d597 100644 --- a/00.SDK/E_ZKEccSDK/Response/EmployeeGetResponse.cs +++ b/00.SDK/E_ZKEccSDK/Response/EmployeeGetResponse.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Response +namespace E_ZKEcc.Response { public class EmployeeGetResponse { diff --git a/00.SDK/E_ZKEccSDK/Response/TransactionGetResponse.cs b/00.SDK/E_ZKEccSDK/Response/TransactionGetResponse.cs index 82edf46..be25d3f 100644 --- a/00.SDK/E_ZKEccSDK/Response/TransactionGetResponse.cs +++ b/00.SDK/E_ZKEccSDK/Response/TransactionGetResponse.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Response +namespace E_ZKEcc.Response { public class TransactionGetResponse { diff --git a/00.SDK/E_ZKEccSDK/Service/DepartmentService.cs b/00.SDK/E_ZKEccSDK/Service/DepartmentService.cs index f0e0c1d..018acb7 100644 --- a/00.SDK/E_ZKEccSDK/Service/DepartmentService.cs +++ b/00.SDK/E_ZKEccSDK/Service/DepartmentService.cs @@ -1,14 +1,14 @@ using E_ZKEcc; using E_ZKEcc.Domian; -using E_ZKEccSDK.Request; -using E_ZKEccSDK.Response; +using E_ZKEcc.Request; +using E_ZKEcc.Response; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; -namespace E_ZKEccSDK.Service +namespace E_ZKEcc.Service { public class DepartmentService : BaseService { @@ -49,13 +49,13 @@ namespace E_ZKEccSDK.Service /// /// /// - public ResultDomian UpdateDepartment(DepartmentUpdateRequest request) + public ResultDomian UpdateDepartment(List list) { _actionName = "update"; try { - var dataJson = JsonConvert.SerializeObject(request, Formatting.None, _serializerSettings); + var dataJson = JsonConvert.SerializeObject(list, Formatting.None, _serializerSettings); var resultJson = this.DoExecute(dataJson); @@ -69,6 +69,11 @@ namespace E_ZKEccSDK.Service } } + public ResultDomian UpdateDepartment(DepartmentUpdateRequest request) + { + return UpdateDepartment(new List() { request }); + } + /// /// 获取部门信息 /// diff --git a/00.SDK/E_ZKEccSDK/Service/EmployeeService.cs b/00.SDK/E_ZKEccSDK/Service/EmployeeService.cs index 1714cbd..7b73eb0 100644 --- a/00.SDK/E_ZKEccSDK/Service/EmployeeService.cs +++ b/00.SDK/E_ZKEccSDK/Service/EmployeeService.cs @@ -7,8 +7,10 @@ using System.Runtime.CompilerServices; using System.Text; using System.Runtime.Serialization; using Newtonsoft.Json; -using E_ZKEccSDK.Response; -using E_ZKEccSDK.Request; +using E_ZKEcc.Response; +using E_ZKEcc.Request; +using Kingdee.BOS; +using System.Net.NetworkInformation; namespace E_ZKEcc.Service { @@ -98,6 +100,36 @@ namespace E_ZKEcc.Service { return LeaveEmployee(pin, leavedate.ToString("yyyy-MM-dd HH:MM"), leavetype, reason); } + + /// + /// 离职恢复 + /// + /// + /// + public ResultDomian RestoreEmployee(string[] userpin) + { + _actionName = "restore"; + ResultDomian result; + try + { + object data = new + { + userpin + }; + + var dataJson = JsonConvert.SerializeObject(data, Formatting.None, _serializerSettings); + + var resultJson = this.DoExecute(dataJson); + + result = JsonConvert.DeserializeObject(resultJson); + + return result; + } + catch (Exception ex) + { + throw ex; + } + } #endregion 人员离职 #region 获取人员信息 diff --git a/00.SDK/E_ZKEccSDK/Service/TransactionService.cs b/00.SDK/E_ZKEccSDK/Service/TransactionService.cs index 180051c..1192b4f 100644 --- a/00.SDK/E_ZKEccSDK/Service/TransactionService.cs +++ b/00.SDK/E_ZKEccSDK/Service/TransactionService.cs @@ -1,6 +1,6 @@ using E_ZKEcc.Domian; -using E_ZKEccSDK.Request; -using E_ZKEccSDK.Response; +using E_ZKEcc.Request; +using E_ZKEcc.Response; using Newtonsoft.Json; using System; using System.Collections.Generic; diff --git a/00.未分类/UnitTestProject2/UnitTest1.cs b/00.未分类/UnitTestProject2/UnitTest1.cs index 70f1f6d..c205d12 100644 --- a/00.未分类/UnitTestProject2/UnitTest1.cs +++ b/00.未分类/UnitTestProject2/UnitTest1.cs @@ -12,6 +12,7 @@ using System.Data.SqlClient; using Kingdee.BOS.Util; using E_ZKEcc.Service; using E_ZKEcc.Domian; +using E_ZKEcc.Request; namespace UnitTestProject2 { @@ -65,6 +66,7 @@ namespace UnitTestProject2 string ip = "sftp.betagrid.gxs.com"; string port = "22"; string user = "HUIWE_SFTP_TST"; + string pPath= "LEXMK_SFTP_TST"; string pwd = "@m+n|9+v^.R}1[^"; string localPath = "D:\\Work\\GateDge\\SFTP\\aatat.docx"; string remotePath = "/././POLLABLE"; @@ -90,61 +92,26 @@ namespace UnitTestProject2 apiInfo.appKey = "3391hexqe5h0wv4z4veju_dvn7gntnr5oiv_dxjabqtt"; apiInfo.apiVersion = "v2"; apiInfo.serverUrl = "http://14.21.32.187:8088"; + var service = new EmployeeService(apiInfo); - var data = service.GetEmployee(null); + var domain = new EmployeeUpdateRequest(); + domain.pin = "99999"; + domain.name = "测试1"; + domain.deptnumber = "999"; + //domain.identitycard = "440444444444444444"; + var result = service.UpdateEmployee(new List() { domain }); + //var data = service.GetEmployee("999999,888888"); + //var service2 = new DepartmentService(apiInfo); + //var result = service2.UpdateDepartment(new E_ZKEcc.Request.DepartmentUpdateRequest + //{ + // deptnumber = "999", + // deptname = "金蝶云星空", + // parentnumber = "1" + //}); return; } - [Serializable] - public class EmployeeUpdateDomain - { - /// - /// 人员编号 长度为1~24个字符 必填 - /// - public string pin { get; set; } - - /// - /// 名称。长度为1~20个字符 - /// - public string name { get; set; } - - /// - /// 人员所属部门编号(更新可以不填,新增必填) - /// - public string deptnumber { get; set; } - - /// - /// 性别 。'M'表示男,'F'表示女 允许值: 'M', 'F' - /// - public string gender { get; set; } - - /// - /// 身份证号 - /// - public string identitycard { get; set; } - - /// - /// 人员自助密码 - /// - public string selfpassword { get; set; } - - /// - /// 人员是否考勤 - /// - public int? att { get; set; } - - /// - /// 验证方式 - /// - public int? comverifys { get; set; } - - /// - /// 比对照片信息,BASE64格式 - /// - public string enrollpic { get; set; } - } - [TestMethod] public void TestMethod3() { @@ -153,7 +120,8 @@ namespace UnitTestProject2 SqlConnection con = new SqlConnection(sqlConn); //SqlConnection con = new SqlConnection("Server=.;Database=ASSDB;uid=ooa;pwd=123qwe123;Trusted_Connection=False;"); con.Open(); - + //client.InitClient("654e408a013340", "appID", "appSec", "userName", 2052, "100", "http://desktop-2r7oavu/k3cloud/"); + //client.Save("STK_MISCELLANEOUS", "{"NeedUpDateFields":[],"NeedReturnFields":[],"IsDeleteEntry":"true","SubSystemId":"","IsVerifyBaseDataField":"false","IsEntryBatchFill":"true","ValidateFlag":"true","NumberSearch":"true","IsAutoAdjustField":"false","InterationFlags":"","IgnoreInterationFlag":"","IsControlPrecision":"false","ValidateRepeatJson":"false","Model":{"FID":0,"FBillNo":"","FBillTypeID":{"FNUMBER":""},"FStockOrgId":{"FNumber":""},"FStockDirect":"","FDate":"1900 - 01 - 01","FSUPPLIERID":{"FNumber":""},"FDEPTID":{"FNumber":""},"FACCEPTANCE":{"FStaffNumber":""},"FSTOCKERID":{"FNumber":""},"FSTOCKERGROUPID":{"FNumber":""},"FOwnerTypeIdHead":"","FOwnerIdHead":{"FNumber":""},"FNOTE":"","FBaseCurrId":{"FNumber":""},"FScanBox":"","FEntity":[{"FEntryID":0,"FInStockType":"","FMATERIALID":{"FNumber":""},"FAuxPropId":{"FAUXPROPID__FF100002":{"FNumber":""}},"FUnitID":{"FNumber":""},"FSTOCKID":{"FNumber":""},"FStockLocId":{"FSTOCKLOCID__FF100001":{"FNumber":""},"FSTOCKLOCID__FF100002":{"FNumber":""}},"FSTOCKSTATUSID":{"FNumber":""},"FLOT":{"FNumber":""},"FQty":0,"FEntryNote":"","FSRCBILLNO":"","FSRCBILLTYPEID":"","FBOMID":{"FNumber":""},"FPRODUCEDATE":"1900 - 01 - 01","FMTONO":"","FExtAuxUnitId":{"FNumber":""},"FExtAuxUnitQty":0,"FProjectNo":"","FOWNERTYPEID":"","FOWNERID":{"FNumber":""},"FKEEPERTYPEID":"","FKEEPERID":{"FNumber":""},"FInstockDate":"1900 - 01 - 01","FSerialSubEntity":[{"FDetailID":0,"FSerialNo":"","FSerialNote":""}]}]}}"); } diff --git a/01.扩展/Extensions/ObjectExtension.cs b/01.扩展/Extensions/ObjectExtension.cs index 3f5aa56..bbcc237 100644 --- a/01.扩展/Extensions/ObjectExtension.cs +++ b/01.扩展/Extensions/ObjectExtension.cs @@ -14,5 +14,11 @@ namespace ExtensionMethods return obj.ToString(); } + + public static bool ToBool(this object obj) + { + bool.TryParse(obj.ToSafeTurnString(), out bool resultVal); + return resultVal; + } } } diff --git a/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/BillEventPlugInEx.py b/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/BillEventPlugInEx.py index 6f59342..2e63e4d 100644 --- a/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/BillEventPlugInEx.py +++ b/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/BillEventPlugInEx.py @@ -26,6 +26,7 @@ def DataChanged(e): if e.NewValue != None and e.NewValue != 0: hasQRCost = this.View.Model.GetValue("FHasQRCost") idlist = [{ "materialId" : e.NewValue , "inRow" : e.Row}] + # raise Exception(str(e.NewValue)+","+str(e.Row)) GetcContractAnnualCost(idlist,hasQRCost) else: this.View.Model.SetValue("FTAXPRICE", 0, e.Row) @@ -40,7 +41,21 @@ def DataChanged(e): idlist = list(filter(lambda x:x["materialId"] > 0,map(lambda x:{ "materialId":x["MaterialId_Id"] ,"inRow": x["Seq"] - 1} ,entrys))) GetcContractAnnualCost(idlist,hasQRCost) - +def AfterCreateNewData(e): + if DoCheckConditions(): + details = this.View.BusinessInfo.GetEntity("FEntity"); + if details != None : + entrys = this.View.Model.GetEntityDataObject(details); + if entrys != None and entrys.Count > 0: + hasQRCost = this.View.Model.GetValue("FHasQRCost") + idlist = [] + for entry in entrys: + rowIndex = this.View.Model.GetRowIndex(details, entry) + materialObjValue = entry["MaterialId_Id"] + materialValue = 0 if materialObjValue == None else materialObjValue + idlist.append({ "materialId" :materialValue , "inRow" : rowIndex}) + GetcContractAnnualCost(idlist,hasQRCost) + def GetcContractAnnualCost(idList,hasQRCost): # whereSql = " AND t0e.F_QNV_BASE1 IN ({0}) ".format(",".join(idList)) intoSqlList = List[str]() @@ -125,18 +140,4 @@ def DoCheckConditions(): orgObj = this.View.Model.GetValue("FApplicationOrgId") if orgObj["Id"] == 101542: return True - return False - - -# --alter table T_STK_MISDELIVERYENTRY alter column FReferPrice decimal(23,10) not null - - -# --UPDATE T_STK_MISDELIVERYENTRY SET FReferPrice = 0 -# --WHERE FReferPrice = '' OR FReferPrice is null - -# alter table T_STK_MISDELIVERYENTRY alter column FReferAmount decimal(23,10) not null - - -# UPDATE T_STK_MISDELIVERYENTRY SET FReferAmount = 0 -# WHERE FReferAmount = '' OR FReferAmount is null - + return False \ No newline at end of file diff --git a/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/sql/获取合同年度单价.sql b/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/sql/获取合同年度单价.sql index fb8574c..13e4c7f 100644 --- a/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/sql/获取合同年度单价.sql +++ b/02.珠海市供水有限公司/ZHSW.Python/PUR_Requisition/sql/获取合同年度单价.sql @@ -1,19 +1,56 @@ -SELECT t.* -FROM (SELECT t0e.FID - ,t0e.FENTRYID - ,t0.FBILLNO - ,t0.F_QNV_TEXT2 - ,t0e.F_QNV_BASE1 AS '' - ,t0e.F_QNV_DECIMAL1 AS '˰' - ,t0e.F_QNV_DECIMAL3 AS 'ۺϵ' - ,t0e.F_QNV_DATE2 AS 'Ч' - ,t0e.F_QNV_DATE3 AS 'ʧЧ' - ,t1.FTAXRATE AS 'Ĭ˰' - ,ROW_NUMBER() over(PARTITION BY t0e.F_QNV_BASE1 ORDER BY t0e.F_QNV_DATE2 DESC) AS 'RN' -FROM QNV_t_Cust_Entry100003 t0 - INNER JOIN QNV_t_Cust_Entry100004 t0e on t0.FID = t0e.FID - INNER JOIN T_BD_TAXRATE t1 on t1.FID = t0e.F_QNV_BASE3 -WHERE 1=1 - AND t0.FDOCUMENTSTATUS ='C' - AND GETDATE() BETWEEN t0e.F_QNV_DATE2 AND t0e.F_QNV_DATE3) t -WHERE t.RN = 1 \ No newline at end of file +SELECT + rowSet2.[1] AS 'MaterialId' + ,rowSet2.[2] AS 'inRow' + INTO #TMPMATERIALNUM +FROM ( + SELECT 1 ID,CAST(''+ REPLACE('{0}',';','') + '' AS XML) AS xmlVal +) AS valSet +OUTER APPLY ( + SELECT ROW_NUMBER() OVER (ORDER BY valSet.ID) RN + ,CAST(''+ REPLACE(T.C.value('.','varchar(100)'),',','') + '' AS XML) xmlVal + FROM valSet.xmlVal.nodes('/v') AS T(C) +) rowSet +OUTER APPLY ( + SELECT * FROM ( + SELECT T.C.value('.','varchar(100)') AS xmlVal + ,ROW_NUMBER() OVER (ORDER BY rowSet.RN) RowNo + FROM rowSet.xmlVal.nodes('/v') AS T(C) + ) TT + PIVOT ( MAX(TT.xmlVal) FOR TT.RowNo IN ([1],[2])) TT2 +) rowSet2 + +SELECT CONVERT(int,tt0.inRow) AS inRow + ,ISNULL(tt2.,0) AS '' + ,ISNULL(tt2.˰,0) AS '˰' + ,ISNULL(tt2.ۺϵ,0) AS 'ۺϵ' + ,ISNULL(tt2.Ĭ˰,0) AS 'Ĭ˰' + ,tt2.FBILLNO +FROM #TMPMATERIALNUM tt0 + OUTER APPLY ( + SELECT TOP 1 + t0e.FID + ,t0e.FENTRYID + ,t0.FBILLNO + ,t0.F_QNV_TEXT2 + ,t0e.F_QNV_BASE1 AS '' + ,t0e.F_QNV_DECIMAL1 AS '˰' + ,t0e.F_QNV_DECIMAL3 AS 'ۺϵ' + ,t0e.F_QNV_DATE2 AS 'Ч' + ,t0e.F_QNV_DATE3 AS 'ʧЧ' + ,t1.FTAXRATE AS 'Ĭ˰' + FROM QNV_t_Cust_Entry100003 t0 + INNER JOIN QNV_t_Cust_Entry100004 t0e on t0.FID = t0e.FID + INNER JOIN T_BD_TAXRATE t1 on t1.FID = t0e.F_QNV_BASE3 + CROSS APPLY ( + SELECT t3.FMATERIALID + FROM T_BD_MATERIAL t2 + INNER JOIN T_BD_MATERIAL t3 on t2.FMASTERID = t3.FMASTERID + WHERE t2.FMATERIALID = tt0.MATERIALID + AND t3.FMATERIALID = t0e.F_QNV_BASE1 + ) tt1 + WHERE 1 = 1 + AND t0.FDOCUMENTSTATUS ='C' + AND GETDATE() BETWEEN t0e.F_QNV_DATE2 AND t0e.F_QNV_DATE3 + ORDER BY t0e.F_QNV_DATE2 DESC + ) tt2 +WHERE 1 = 1 diff --git a/02.珠海市供水有限公司/ZHSW/STK_MisDelivery/BillEventPlugInEx.cs b/02.珠海市供水有限公司/ZHSW/STK_MisDelivery/BillEventPlugInEx.cs index 5b54c96..411abea 100644 --- a/02.珠海市供水有限公司/ZHSW/STK_MisDelivery/BillEventPlugInEx.cs +++ b/02.珠海市供水有限公司/ZHSW/STK_MisDelivery/BillEventPlugInEx.cs @@ -151,6 +151,7 @@ namespace ZHSW.STK_MisDelivery #endregion } + public override void AfterCreateNewData(EventArgs e) { base.AfterCreateNewData(e); diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj index 2c33f05..4b2a528 100644 --- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj +++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj @@ -43,10 +43,15 @@ + + + + + diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/PRD_MO/BillEventPlugInEx.py b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/PRD_MO/BillEventPlugInEx.py new file mode 100644 index 0000000..2746778 --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/PRD_MO/BillEventPlugInEx.py @@ -0,0 +1,41 @@ +import clr +clr.AddReference("System") +clr.AddReference("Kingdee.BOS") +clr.AddReference("Kingdee.BOS.Core") +clr.AddReference("Kingdee.BOS.DataEntity") +clr.AddReference("Kingdee.BOS.App") +clr.AddReference("Kingdee.BOS.Contracts") +clr.AddReference("Kingdee.BOS.ServiceHelper") + +from Kingdee.BOS import * +from Kingdee.BOS.Core import * +from Kingdee.BOS.Core.Metadata.EntityElement import * +from Kingdee.BOS.Orm.DataEntity import * +from Kingdee.BOS.Core.DynamicForm.PlugIn import * +from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * +from Kingdee.BOS.Util import * +from System import * +from System.ComponentModel import * +from System.Collections.Generic import * +from System.Text import* +from Kingdee.BOS.ServiceHelper import * + +def BarItemClick(e): + if e.BarItemKey == "tbSNew" or e.BarItemKey == "tbNew": + parameterData = this.View.Model.ParameterData + billTypeField = this.View.BillBusinessInfo.GetBillTypeField() + + info = None + for x in parameterData["BillTypeEntity"]: + if x[4]: + info = x + break + + if info != None: + SetBillTypeDefValue(billTypeField, info[5]) + +def SetBillTypeDefValue(billTypeField,defBillTypeId): + if billTypeField != None and (defBillTypeId != None and defBillTypeId != ""): + billTypeObj = this.Model.LoadReferenceData(billTypeField.RefFormDynamicObjectType, defBillTypeId) + billTypeField.RefIDDynamicProperty.SetValue(this.Model.DataObject, defBillTypeId) + billTypeField.DynamicProperty.SetValue(this.Model.DataObject, billTypeObj) \ No newline at end of file diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/PRD_MO/OperactionEventPlugInEx.py b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/PRD_MO/OperactionEventPlugInEx.py index 5996fe9..e0acc12 100644 --- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/PRD_MO/OperactionEventPlugInEx.py +++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/PRD_MO/OperactionEventPlugInEx.py @@ -1,10 +1,10 @@ -#clrп +#引入clr运行库 import clr -#Ӷcloudij +#添加对cloud插件开发的常用组件引用 clr.AddReference('System') clr.AddReference('System.Data') clr.AddReference("ExtensionMethods") -# ýstart +# 常用金蝶插件类库start clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.App') clr.AddReference('Kingdee.BOS.App.Core') @@ -13,9 +13,9 @@ clr.AddReference('Kingdee.BOS.Contracts') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.DataEntity') clr.AddReference('Kingdee.BOS.ServiceHelper') -# ýend +# 常用金蝶插件类库end -#dairycloudеijʵ󣨷ռ䵼룬ݹ鵼룩 +#dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入) from System import * from System.Data import * from System.Collections.Generic import List @@ -39,9 +39,10 @@ def OnPreparePropertys(e): def EndOperationTransaction(e): - # 8ύ9126 - if this.FormOperation.OperationId == 8: - va = "1111"; - # raise Exception("sss:{0}".format(type(strObjEx.ToDouble(va)))); - raise Exception("sss:{0}".format(type(DictionaryUtils.Long2Int(va)))); - # raise Exception(va.ToDouble()); \ No newline at end of file + # 保存8提交9审核1反审核26 + # if this.FormOperation.OperationId == 8: + # va = "1111"; + # if this.FormOperation.OperationId == 8: + # raise Exception(JsonUtil.Serialize(this.FormOperation)); + if this.FromOperation.Operation == 'New': + raise Exception(JsonUtil.Serialize(e)); \ No newline at end of file diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/ProductionMaterialsReport/sql/aaaaaa.sql b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/ProductionMaterialsReport/sql/aaaaaa.sql index d9129a5..8a8737a 100644 --- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/ProductionMaterialsReport/sql/aaaaaa.sql +++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/ProductionMaterialsReport/sql/aaaaaa.sql @@ -2702,18 +2702,18 @@ WHERE δ --δ() --***********************δ()***************************** --ѯֹ֮ǰ -SELECT (MO.FBILLNO) ,(MO.FID) ,(ME.FENTRYID) ¼, -PE.FMATERIALID ,(PP.FID) ,PP.FBILLNO ϵ,(PE.FENTRYID) ϵ¼, -ISNULL(PC.FSTOCKID,0) ֿ,PE.FAUXPROPID,(PE.FMUSTQTY) AS Ӧ, -PQ.FSELPICKEDQTY AS ѡ,PQ.FBASENOPICKEDQTY AS δ +SELECT (MO.FBILLNO) ,(MO.FID) ,(ME.FENTRYID) ¼ + ,PE.FMATERIALID ,(PP.FID) ,PP.FBILLNO ϵ,(PE.FENTRYID) ϵ¼ + ,ISNULL(PC.FSTOCKID,0) ֿ,PE.FAUXPROPID,(PE.FMUSTQTY) AS Ӧ + ,PQ.FSELPICKEDQTY AS ѡ,PQ.FBASENOPICKEDQTY AS δ INTO #tmpPPBOM - FROM T_PRD_MO MO -INNER JOIN T_PRD_MOENTRY ME ON MO.FID =ME.FID -INNER JOIN T_PRD_MOENTRY_A MA ON MA.FID =ME.FID AND ME.FENTRYID =MA.FENTRYID -INNER JOIN T_PRD_PPBOM PP ON PP.FMOID=MO.FID AND ME.FENTRYID =PP.FMOENTRYID -INNER JOIN T_PRD_PPBOMENTRY PE ON PP.FID =PE.FID -LEFT JOIN T_PRD_PPBOMENTRY_Q PQ ON PP.FID =PQ.FID AND PE.FENTRYID =PQ.FENTRYID -LEFT JOIN T_PRD_PPBOMENTRY_C PC ON PP.FID =PC.FID AND PE.FENTRYID =PC.FENTRYID +FROM T_PRD_MO MO + INNER JOIN T_PRD_MOENTRY ME ON MO.FID =ME.FID + INNER JOIN T_PRD_MOENTRY_A MA ON MA.FID =ME.FID AND ME.FENTRYID =MA.FENTRYID + INNER JOIN T_PRD_PPBOM PP ON PP.FMOID=MO.FID AND ME.FENTRYID =PP.FMOENTRYID + INNER JOIN T_PRD_PPBOMENTRY PE ON PP.FID =PE.FID + LEFT JOIN T_PRD_PPBOMENTRY_Q PQ ON PP.FID =PQ.FID AND PE.FENTRYID =PQ.FENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_C PC ON PP.FID =PC.FID AND PE.FENTRYID =PC.FENTRYID WHERE 1=1 AND MO.FCANCELSTATUS='A' AND MO.FDOCUMENTSTATUS='C' AND ME.FPRODUCTTYPE =1 AND (MO.FDATE <=@FEDate AND ISNULL(MA.FCONVEYDATE,'')<>'') AND (MA.FFINISHDATE >@FEDate OR ISNULL(MA.FFINISHDATE,'')='')--2020-04-27֮깤Ϊ׼깤 @@ -2740,8 +2740,6 @@ GROUP BY tse.FMOID,tse.FMOBILLNO,tse.FMOENTRYID,tse.FPPBOMENTRYID,tse.FPPBOMBILL ) t2 ON t1.=t2.FMOBILLNO AND t1.¼=t2.FMOENTRYID AND t1.ϵ=t2.FPPBOMBILLNO AND t1.ϵ¼=t2.FPPBOMENTRYID AND t1.=t2.FMATERIALID - - --ºδ --SELECT * FROM #tmpPPBOM @@ -2754,19 +2752,15 @@ LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B. --WHERE (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) AND TSK.FSTOCKID IN ( SELECT DISTINCT FStockID FROM #tmpStockID ) ORDER BY - - -SELECT ,Ӧ,δ,FAUXPROPID,ֿ +SELECT ,Ӧ,δ,FAUXPROPID,ֿ INTO #tmpPPBOM3 FROM #tmpPPBOM1 B -LEFT JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) -LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) + LEFT JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID) + LEFT JOIN T_BD_STOCK TSK ON (TSK.FMASTERID = B.ֿ) WHERE -- (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) (TM.FNUMBER IN(SELECT DISTINCT ϱ FROM #YC_T_MRP )) -AND TSK.FSTOCKID IN ( SELECT DISTINCT FStockID FROM #tmpStockID ) + AND TSK.FSTOCKID IN (SELECT DISTINCT FStockID FROM #tmpStockID) ORDER BY - - SELECT ,SUM(Ӧ)Ӧ,SUM(δ)δ,FAUXPROPID,ֿ INTO #tmpPPBOM2 FROM #tmpPPBOM3 GROUP BY ֿ,,FAUXPROPID @@ -2775,8 +2769,9 @@ ORDER BY --δ() UPDATE t1 SET t1.δ=t2.δ FROM #Stock_Status_temp t1 -INNER JOIN #tmpPPBOM2 -t2 ON t1.=t2. AND t1.ֿ=t2.ֿ AND t1.װ=T2.FAUXPROPID + INNER JOIN #tmpPPBOM2 t2 ON t1.=t2. + AND t1.ֿ=t2.ֿ + AND t1.װ=T2.FAUXPROPID --ݾ @@ -2857,8 +2852,6 @@ LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B. --WHERE (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) AND TSK.FSTOCKID IN ( SELECT DISTINCT FStockID FROM #tmpStockID ) ORDER BY - - SELECT ,Ӧ,δ,FAUXPROPID,ֿ INTO #tmpSubBOM3 FROM #tmpSubBOM1 B LEFT JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) @@ -2868,8 +2861,6 @@ WHERE -- (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) AND TSK.FSTOCKID IN ( SELECT DISTINCT FStockID FROM #tmpStockID ) ORDER BY - - SELECT ,SUM(Ӧ)Ӧ,SUM(δ)δ,FAUXPROPID,ֿ INTO #tmpSubBOM2 FROM #tmpSubBOM3 GROUP BY ֿ,,FAUXPROPID @@ -2886,9 +2877,10 @@ t2 ON t1. --ݾ INSERT INTO #Stock_Status_temp (,ϴ,,ͺ,ɱ,װʽ,ֿ,ֿ,ֿ,װ,δ) - -SELECT TM.fmaterialid AS ,(TM.fnumber) ϴ,(TML.FNAME) AS ,(TML.FSPECIFICATION) AS ͺ,ISNULL(TM.FOLDNUMBER,'') AS ɱ - ,ISNULL(t5.FAUXPTYNUMBER,'') װʽ,TBS.FSTOCKID ֿ,TSL.fname ֿ,TBS.fnumber ֿ,TSE.FAUXPROPID AS װ,(δ) +SELECT TM.fmaterialid AS ,(TM.fnumber) ϴ,(TML.FNAME) AS + ,(TML.FSPECIFICATION) AS ͺ,ISNULL(TM.FOLDNUMBER,'') AS ɱ + ,ISNULL(t5.FAUXPTYNUMBER,'') װʽ,TBS.FSTOCKID ֿ,TSL.fname ֿ + ,TBS.fnumber ֿ,TSE.FAUXPROPID AS װ,(δ) FROM #tmpSubBOM2 TSE INNER JOIN T_BD_MATERIAL TM ON (TM.FMASTERID = TSE. ) INNER JOIN T_BD_MATERIAL_L TML ON TM.FMATERIALID =TML.FMATERIALID AND TML.FLOCALEID =2052 diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/库存状态查询视图.sql b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/库存状态查询视图.sql new file mode 100644 index 0000000..a2c9bbe --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/库存状态查询视图.sql @@ -0,0 +1,81 @@ +CREATE PROC PROC_MATERIAL_STOCK_STATU( + @sDate varchar(80) + ,@eDate varchar(80) +) +AS +BEGIN +SELECT t0.FMATERIALID + ,ISNULL(t3.sumQTY,0) AS 即时库存 + ,ISNULL(t4.sumBASENOPICKEDQTY,0) AS 未发数 + ,ISNULL(t5.sumNoStockInQty,0) AS 在制数 + ,CASE WHEN CHARINDEX('TC',t0.FNUMBER) = 1 THEN 0 ELSE ISNULL(t1.数量 - t1.未发数量,0) END AS '受订量' + ,ISNULL(t2.数量 - t2.入库数量,0) AS '在途量' + ,(ISNULL(t3.sumQTY,0) - ISNULL(t4.sumBASENOPICKEDQTY,0) + ISNULL(t5.sumNoStockInQty,0) - ISNULL(t1.数量 - t1.未发数量,0) + ISNULL(t2.数量 - t2.入库数量,0)) AS '可用库存' + ,ISNULL(t6.进检量,0) AS '进检量' + --INTO #Material_Stock_Statu +FROM T_BD_MATERIAL t0 + LEFT JOIN ( + SELECT + t0e.FMATERIALID,SUM(t0e.FQTY) AS '数量' + ,SUM((t0e_r.FBASEREMAINOUTQTY + t0e_r.FBASERETURNQTY)) AS '未发数量' + FROM T_SAL_ORDER t0 + INNER JOIN T_SAL_ORDERENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_SAL_ORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE between @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t1 on t1.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT + t0e.FMATERIALID,SUM(t0e.FQTY) AS '数量' + ,SUM(t0e_r.FREMAINSTOCKINQTY) AS '剩余入库数量' + ,SUM(t0e_r.FBASESTOCKINQTY) AS '入库数量' + FROM T_PUR_POORDER t0 + INNER JOIN T_PUR_POORDERENTRY t0e on t0.FID = t0e.FID AND t0.FBUSINESSTYPE != 'ZCCG' AND t0.FBUSINESSTYPE != 'FYCG' + INNER JOIN T_PUR_POORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE BETWEEN @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t2 on t2.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT tt0.FMATERIALID,tt0.FSTOCKORGID,SUM(tt0.FBASEQTY) AS sumQTY + FROM T_STK_INVENTORY tt0 + GROUP BY tt0.FMATERIALID,tt0.FSTOCKORGID + ) t3 on t3.FMATERIALID = t0.FMASTERID AND t3.FSTOCKORGID = t0.FUSEORGID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOPICKEDQTY) sumBASENOPICKEDQTY --未发量 + FROM T_PRD_PPBOMENTRY t0e + INNER JOIN T_PRD_PPBOMENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FMOENTRYID + WHERE t0e_a.FSTATUS = 4 + GROUP BY t0e.FMATERIALID + ) t4 on t4.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOSTOCKINQTY) AS sumNoStockInQty + FROM T_PRD_MOENTRY t0e + INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + WHERE t0e_a.FSTATUS = 4 + GROUP BY t0e.FMATERIALID + ) t5 on t5.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(FBASEUNITQTY-FINSTOCKBASEQTY + FRETURNBASEQTY) AS '进检量' + FROM T_PUR_RECEIVE t0 + INNER JOIN T_PUR_RECEIVEENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PUR_RECEIVEENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e.FENTRYID = t0e_r.FENTRYID + INNER JOIN T_PUR_RECEIVEENTRY_S t0e_s on t0e.FID = t0e_s.FID AND t0e.FENTRYID = t0e_s.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE BETWEEN @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t6 on t6.FMATERIALID = t0.FMATERIALID +WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FFORBIDSTATUS = 'A' + + --RETURN #Material_Stock_Statu +END \ No newline at end of file diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V1.sql b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V1.sql index 80678c5..a925e35 100644 --- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V1.sql +++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V1.sql @@ -7,20 +7,20 @@ SET @sDate = '2024-02-24' SET @eDate = '2024-03-24' select @dbName = db_name() - +--把需要分析的物料id跟数据量分组统计 SELECT tt.MATERIALID,SUM(tt.needNum) needNum INTO #TMPMATERIALNUM -FROM (SELECT +FROM ( + SELECT CASE @dbName WHEN 'AIS20231110222743' THEN 101521 ELSE 782449 END AS 'MATERIALID' ,10 needNum - Union + UNION ALL SELECT CASE @dbName WHEN 'AIS20231110222743' THEN 101530 ELSE 808372 END AS 'MATERIALID' ,30 needNum ) tt GROUP BY tt.MATERIALID - SELECT t0.FMASTERID ,t0.FMATERIALID ,t0.FNUMBER @@ -32,20 +32,14 @@ FROM T_BD_MATERIAL t0 WHERE t0.FDOCUMENTSTATUS = 'C' CREATE TABLE #MATERIAL_LACKANALYE( - FIDENTITYID int not null default 0 - ,MaterialId int not null default 0 + FIDENTITYID INT NOT NULL DEFAULT 0 + ,MATERIALID INT NOT NULL DEFAULT 0 ,BomId int - ,物料代码 varchar(100) default '' - ,物料名称 varchar(100) default '' + ,物料代码 varchar(100) DEFAULT '' + ,物料名称 varchar(100) DEFAULT '' ,物料_分析需求数 decimal(23,6) default 0 - ,物料_即时库存 decimal(23,6) default 0 - ,物料_未发数 decimal(23,6) default 0 - ,物料_在制数 decimal(23,6) default 0 - ,物料_受订量 decimal(23,6) default 0 - ,物料_在途量 decimal(23,6) default 0 - ,物料_可用库存数 decimal(23,6) default 0 - ,物料_实际需求数 decimal(23,6) default 0 - ,物料_进检量 decimal(23,6) default 0 + ,物料_可用库存数 decimal(23,6) DEFAULT 0 + ,物料_实际需求数 decimal(23,6) DEFAULT 0 ,BOMLEVEL int ,IsProduct int ,物料个数分组合计 int @@ -56,9 +50,8 @@ SELECT t0.FMATERIALID ,ISNULL(t4.sumBASENOPICKEDQTY,0) AS 未发数 ,ISNULL(t5.sumNoStockInQty,0) AS 在制数 ,CASE WHEN CHARINDEX('TC',t0.FNUMBER) = 1 THEN 0 ELSE ISNULL(t1.数量 - t1.未发数量,0) END AS '受订量' - --,ISNULL(t2.数量 - t2.入库数量,0) AS '在途量' - ,ISNULL(t2.剩余入库数量,0) AS '在途量' - ,0 AS '可用库存' + ,ISNULL(t2.数量 - t2.入库数量,0) AS '在途量' + ,(ISNULL(t3.sumQTY,0) - ISNULL(t4.sumBASENOPICKEDQTY,0) + ISNULL(t5.sumNoStockInQty,0) - ISNULL(t1.数量 - t1.未发数量,0) + ISNULL(t2.数量 - t2.入库数量,0)) AS '可用库存' ,ISNULL(t6.进检量,0) AS '进检量' INTO #Material_Stock_Statu FROM T_BD_MATERIAL t0 @@ -78,35 +71,11 @@ FROM T_BD_MATERIAL t0 LEFT JOIN ( SELECT t0e.FMATERIALID,SUM(t0e.FQTY) AS '数量' - ,SUM(t0e_r.FREMAINSTOCKINQTY - ISNULL(t1.sumBaseInQty,0) + ISNULL(t2.sumBaseInQty,0)) AS '剩余入库数量' + ,SUM(t0e_r.FREMAINSTOCKINQTY) AS '剩余入库数量' ,SUM(t0e_r.FBASESTOCKINQTY) AS '入库数量' FROM T_PUR_POORDER t0 INNER JOIN T_PUR_POORDERENTRY t0e on t0.FID = t0e.FID AND t0.FBUSINESSTYPE != 'ZCCG' AND t0.FBUSINESSTYPE != 'FYCG' INNER JOIN T_PUR_POORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID - LEFT JOIN ( - SELECT t1e.FMATERIALID,SUM(t1e.FBASEUNITQTY) sumBaseInQty - FROM T_PUR_MRB t1 - INNER JOIN T_PUR_MRBENTRY t1e on t1.FID = t1e.FID - INNER JOIN T_PUR_MRBFIN t1f on t1f.FID = t1.FID - WHERE t1.FDOCUMENTSTATUS = 'C' - AND t1.FCANCELSTATUS = 'A' - AND t1f.FISGENFORIOS = 0 - AND t1.FDATE > @eDate - GROUP BY t1e.FMATERIALID - ) t1 on t1.FMATERIALID = t0e.FMATERIALID - LEFT JOIN ( - SELECT t0e.FMATERIALID,SUM(t0e.FBASEUNITQTY) sumBaseInQty - FROM T_STK_INSTOCK t0 - INNER JOIN T_STK_INSTOCKENTRY t0e on t0.FID = t0e.FID - INNER JOIN T_STK_INSTOCKENTRY_F t0e_f on t0e_f.FID = t0e.FID AND t0e_f.FENTRYID = t0e.FENTRYID - INNER JOIN T_STK_INSTOCKENTRY_LK t0e_lk on t0e_lk.FENTRYID = t0e.FENTRYID - INNER JOIN T_STK_INSTOCKFIN t0f on t0e.FID = t0f.FID - WHERE 1 = 1 - AND t0.FCANCELSTATUS = 'A' - AND t0.FDOCUMENTSTATUS = 'C' - AND t0.FDATE > @eDate - GROUP BY t0e.FMATERIALID - ) t2 on t2.FMATERIALID = t0e.FMATERIALID WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FCANCELSTATUS = 'A' AND t0.FCLOSESTATUS = 'A' @@ -119,13 +88,13 @@ FROM T_BD_MATERIAL t0 GROUP BY tt0.FMATERIALID,tt0.FSTOCKORGID ) t3 on t3.FMATERIALID = t0.FMASTERID AND t3.FSTOCKORGID = t0.FUSEORGID LEFT JOIN ( - SELECT t0e.FMATERIALID,SUM(t0e_q.FNOPICKEDQTY) sumBASENOPICKEDQTY + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOPICKEDQTY) sumBASENOPICKEDQTY --未发量 FROM T_PRD_PPBOMENTRY t0e INNER JOIN T_PRD_PPBOMENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FMOENTRYID WHERE t0e_a.FSTATUS = 4 GROUP BY t0e.FMATERIALID - ) t4 on t4.FMATERIALID = t0.FMATERIALID + ) t4 on t4.FMATERIALID = t0.FMATERIALID LEFT JOIN ( SELECT t0e.FMATERIALID,SUM(t0e_q.FNOSTOCKINQTY) AS sumNoStockInQty FROM T_PRD_MOENTRY t0e @@ -150,6 +119,7 @@ WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FFORBIDSTATUS = 'A' UPDATE #Material_Stock_Statu SET 可用库存 = 即时库存 - 未发数 - 受订量 + 在制数 + 在途量 + INSERT INTO #MATERIAL_LACKANALYE SELECT ROW_NUMBER() OVER (ORDER BY t0.FMATERIALID) @@ -158,26 +128,21 @@ SELECT ,t2.FNUMBER ,t2_l.FNAME ,t0.ProMaterialQty - ,t3.即时库存 - ,t3.未发数 - ,t3.在制数 - ,t3.受订量 - ,t3.在途量 ,t3.可用库存 - ,(CASE - WHEN t3.可用库存 > t0.ProMaterialQty THEN 0 - ELSE t3.可用库存 - t0.ProMaterialQty - END) - ,t3.进检量 + ,(CASE CHARINDEX('TC',t0.FNUMBER) + WHEN 1 THEN 0 - t0.ProMaterialQty + ELSE (CASE + WHEN t3.可用库存 > t0.ProMaterialQty THEN 0 + ELSE t3.可用库存 - t0.ProMaterialQty + END) + END) ,0 ,1 ,1 FROM #ProMaterial t0 INNER JOIN ( SELECT tt.FID,tt.FMATERIALID,ROW_NUMBER() OVER (PARTITION BY tt.FMATERIALID ORDER BY tt.FID DESC) AS 'rn' FROM T_ENG_BOM tt - WHERE 1 = 1 - AND tt.FDOCUMENTSTATUS = 'C' - AND tt.FFORBIDSTATUS = 'A' + WHERE 1 = 1 AND tt.FDOCUMENTSTATUS = 'C' AND tt.FFORBIDSTATUS = 'A' ) t1 on t0.FMATERIALID = t1.FMATERIALID AND t1.rn = 1 --AND t0.FUSEORGID = t1.FUSEORGID INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t1.FMATERIALID INNER JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t1.FMATERIALID AND t2_l.FLOCALEID = 2052 @@ -193,29 +158,25 @@ SET @LoopCount = 0; WHILE (@num <> 0 AND @LoopCount < 10) BEGIN - INSERT INTO #MATERIAL_LACKANALYE(MaterialId,BomId,物料_分析需求数,物料_即时库存,物料_未发数,物料_在制数,物料_受订量,物料_在途量,物料_可用库存数,物料_实际需求数,物料_进检量,BOMLEVEL,物料个数分组合计,IsProduct) + INSERT INTO #MATERIAL_LACKANALYE(MaterialId,BomId,物料_分析需求数 + ,物料_可用库存数,物料_实际需求数 + ,BOMLEVEL,物料个数分组合计,IsProduct) SELECT tt.FMATERIALID ,ISNULL(t2.FID,0) AS BomId ,ABS(tt.汇总_分析需求数) - ,t3.即时库存 ,t3.未发数 - ,t3.在制数 - ,t3.受订量 - ,t3.在途量 ,t3.可用库存 ,(CASE WHEN t3.可用库存 > (ABS(tt.汇总_分析需求数) + ISNULL(t4.上级_实际需求数,0)) THEN 0 ELSE t3.可用库存 - (ABS(tt.汇总_分析需求数) + ISNULL(t4.上级_实际需求数,0)) END) AS '实际需求数' - ,t3.进检量 ,@level + 1 ,tt.co ,0 FROM ( SELECT - t1.FMATERIALID + t1.FMATERIALID,count(1) co ,SUM(t0.物料_实际需求数 * (t1.FNUMERATOR / t1.FDENOMINATOR)) AS '汇总_分析需求数' - ,count(1) co FROM #MATERIAL_LACKANALYE t0 INNER JOIN T_ENG_BOMCHILD t1 on t0.BomId = t1.FID @@ -223,32 +184,42 @@ BEGIN AND t0.BOMLEVEL = @level GROUP BY t1.FMATERIALID ) tt - LEFT JOIN ( - SELECT tt3.FID,tt3.FNUMBER,tt3.FMATERIALID,ROW_NUMBER() OVER (PARTITION BY tt3.FMATERIALID ORDER BY tt3.FID DESC) AS 'rn' + OUTER APPLY ( + SELECT TOP 1 tt3.FID,tt3.FNUMBER,tt3.FMATERIALID FROM T_ENG_BOM tt3 WHERE 1 = 1 AND tt3.FDOCUMENTSTATUS = 'C' AND tt3.FFORBIDSTATUS = 'A' - ) t2 ON t2.rn = 1 AND tt.FMATERIALID = t2.FMATERIALID + AND tt.FMATERIALID = tt3.FMATERIALID + ORDER BY tt3.FID DESC + ) t2 LEFT JOIN #Material_Stock_Statu t3 on t3.FMATERIALID = tt.FMATERIALID - LEFT JOIN ( - SELECT tt.MaterialId,sum(tt.物料_实际需求数) AS '上级_实际需求数' FROM #MATERIAL_LACKANALYE tt GROUP BY tt.MaterialId - ) t4 on t4.MaterialId = tt.FMATERIALID - + OUTER APPLY ( + SELECT tt4.MaterialId + ,ABS(SUM(tt4.物料_实际需求数)) AS '上级_实际需求数' + FROM #MATERIAL_LACKANALYE tt4 + WHERE tt4.MaterialId = tt.FMATERIALID + GROUP BY tt4.MaterialId + ) t4 SET @num = @@ROWCOUNT SET @level += 1 SET @LoopCount += 1 - END -UPDATE t0 SET - t0.物料代码 = t1.FNUMBER - ,t0.物料名称 = t1_l.FNAME - ,t0.FIDENTITYID = t2.rn -FROM #MATERIAL_LACKANALYE t0 +SELECT t0.MATERIALID,t0.物料_分析需求数,t0.物料_实际需求数,t0.IsProduct,t1.FNUMBER,t1_l.FNAME + ,ROW_NUMBER() OVER (ORDER BY t0.BOMLEVEL,t1.FNumber) 'FIDENTITYID' + ,t2.即时库存 AS '物料_即时库存',t2.未发数 AS '物料_未发数',t2.在制数 AS '物料_在制数' + ,t2.受订量 AS '物料_受订量',t2.在途量 AS '物料_在途量',t2.可用库存 AS '物料_可用库存数',t2.进检量 AS '物料_进检量' +FROM ( + SELECT t0.MATERIALID + ,SUM(t0.物料_实际需求数) AS '物料_实际需求数' + ,SUM(t0.物料_分析需求数) AS '物料_分析需求数' + ,MAX(t0.BOMLEVEL) AS 'BOMLEVEL' + ,MAX(t0.IsProduct) AS 'IsProduct' + FROM #MATERIAL_LACKANALYE t0 + GROUP BY t0.MATERIALID +) t0 INNER JOIN T_BD_MATERIAL t1 on t0.MaterialId = t1.FMATERIALID INNER JOIN T_BD_MATERIAL_L t1_l on t0.MaterialId = t1_l.FMATERIALID AND t1_l.FLOCALEID = 2052 - INNER JOIN (SELECT MaterialId,ROW_NUMBER() OVER (ORDER BY bomlevel,物料代码) 'rn' FROM #MATERIAL_LACKANALYE) t2 on t0.MaterialId = t2.MaterialId - -SELECT t0.* FROM #MATERIAL_LACKANALYE t0 ORDER BY FIDENTITYID + INNER JOIN #Material_Stock_Statu t2 on t2.FMATERIALID = t0.MATERIALID DROP TABLE #ProMaterial DROP TABLE #TMPMATERIALNUM diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V3.sql b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V3.sql new file mode 100644 index 0000000..a7b9905 --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V3.sql @@ -0,0 +1,218 @@ +DECLARE @needNum DECIMAL(23,6) +,@sDate varchar(100) +,@eDate varchar(100) +,@dbName varchar(100) +SET @needNum = 20 +SET @sDate = '2024-02-24' +SET @eDate = '2024-03-24' + +select @dbName = db_name() + +CREATE TABLE #MATERIAL_LACKANALYE( + FIDENTITYID INT NOT NULL DEFAULT 0 + ,MATERIALID INT NOT NULL DEFAULT 0 + ,BomId int + ,物料代码 varchar(100) DEFAULT '' + ,物料名称 varchar(100) DEFAULT '' + ,物料_分析需求数 decimal(23,6) default 0 + ,物料_可用库存数 decimal(23,6) DEFAULT 0 + ,物料_实际需求数 decimal(23,6) DEFAULT 0 + ,BOMLEVEL int + ,IsProduct int default 0 + ,物料个数分组合计 int +) + +SELECT t0.FMATERIALID + ,ISNULL(t3.sumQTY,0) AS 即时库存 + ,ISNULL(t4.sumBASENOPICKEDQTY,0) AS 未发数 + ,ISNULL(t5.sumNoStockInQty,0) AS 在制数 + ,CASE WHEN CHARINDEX('TC',t0.FNUMBER) = 1 THEN 0 ELSE ISNULL(t1.数量 - t1.未发数量,0) END AS '受订量' + ,ISNULL(t2.数量 - t2.入库数量,0) AS '在途量' + ,(ISNULL(t3.sumQTY,0) - ISNULL(t4.sumBASENOPICKEDQTY,0) + ISNULL(t5.sumNoStockInQty,0) - ISNULL(t1.数量 - t1.未发数量,0) + ISNULL(t2.数量 - t2.入库数量,0)) AS '可用库存' + ,ISNULL(t6.进检量,0) AS '进检量' + INTO #Material_Stock_Statu +FROM T_BD_MATERIAL t0 + LEFT JOIN ( + SELECT + t0e.FMATERIALID,SUM(t0e.FQTY) AS '数量' + ,SUM((t0e_r.FBASEREMAINOUTQTY + t0e_r.FBASERETURNQTY)) AS '未发数量' + FROM T_SAL_ORDER t0 + INNER JOIN T_SAL_ORDERENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_SAL_ORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE between @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t1 on t1.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT + t0e.FMATERIALID,SUM(t0e.FQTY) AS '数量' + ,SUM(t0e_r.FREMAINSTOCKINQTY) AS '剩余入库数量' + ,SUM(t0e_r.FBASESTOCKINQTY) AS '入库数量' + FROM T_PUR_POORDER t0 + INNER JOIN T_PUR_POORDERENTRY t0e on t0.FID = t0e.FID AND t0.FBUSINESSTYPE != 'ZCCG' AND t0.FBUSINESSTYPE != 'FYCG' + INNER JOIN T_PUR_POORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE BETWEEN @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t2 on t2.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT tt0.FMATERIALID,tt0.FSTOCKORGID,SUM(tt0.FBASEQTY) AS sumQTY + FROM T_STK_INVENTORY tt0 + GROUP BY tt0.FMATERIALID,tt0.FSTOCKORGID + ) t3 on t3.FMATERIALID = t0.FMASTERID AND t3.FSTOCKORGID = t0.FUSEORGID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOPICKEDQTY) sumBASENOPICKEDQTY --未发量 + FROM T_PRD_PPBOMENTRY t0e + INNER JOIN T_PRD_PPBOMENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FMOENTRYID + WHERE t0e_a.FSTATUS = 4 + GROUP BY t0e.FMATERIALID + ) t4 on t4.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOSTOCKINQTY) AS sumNoStockInQty + FROM T_PRD_MOENTRY t0e + INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + WHERE t0e_a.FSTATUS = 4 + GROUP BY t0e.FMATERIALID + ) t5 on t5.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(FBASEUNITQTY-FINSTOCKBASEQTY + FRETURNBASEQTY) AS '进检量' + FROM T_PUR_RECEIVE t0 + INNER JOIN T_PUR_RECEIVEENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PUR_RECEIVEENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e.FENTRYID = t0e_r.FENTRYID + INNER JOIN T_PUR_RECEIVEENTRY_S t0e_s on t0e.FID = t0e_s.FID AND t0e.FENTRYID = t0e_s.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE BETWEEN @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t6 on t6.FMATERIALID = t0.FMATERIALID +WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FFORBIDSTATUS = 'A' + +UPDATE #Material_Stock_Statu SET 可用库存 = 即时库存 - 未发数 - 受订量 + 在制数 + 在途量; +WITH #TMPMATERIALNUM AS ( + --把需要分析的物料id跟数据量分组统计 + SELECT tt.MATERIALID,SUM(tt.needNum) needNum + FROM ( + SELECT + CASE @dbName WHEN 'AIS20231110222743' THEN 101521 ELSE 782449 END AS 'MATERIALID' + ,10 needNum + --UNION ALL + --SELECT + --CASE @dbName WHEN 'AIS20231110222743' THEN 101530 ELSE 808372 END AS 'MATERIALID' + --,30 needNum + ) tt + GROUP BY tt.MATERIALID +), #ProMaterial AS( + SELECT t0.FMASTERID + ,t0.FMATERIALID + ,t0.FNUMBER + ,t0.FUSEORGID + ,t1.needNum AS 'ProMaterialQty' + FROM T_BD_MATERIAL t0 + INNER JOIN #TMPMATERIALNUM t1 on t0.FMATERIALID = t1.MATERIALID + WHERE t0.FDOCUMENTSTATUS = 'C' +)INSERT INTO #MATERIAL_LACKANALYE +SELECT + ROW_NUMBER() OVER (ORDER BY t0.FMATERIALID) + ,t0.FMATERIALID + ,t1.FID + ,t2.FNUMBER + ,t2_l.FNAME + ,t0.ProMaterialQty + ,t3.可用库存 + ,(CASE CHARINDEX('TC',t0.FNUMBER) + WHEN 1 THEN 0 - t0.ProMaterialQty + ELSE (CASE WHEN t3.可用库存 > t0.ProMaterialQty THEN 0 ELSE t3.可用库存 - t0.ProMaterialQty END) + END) + ,0 'BOMLEVEL',1 'IsProduct',1 '物料个数分组合计' +FROM #ProMaterial t0 + CROSS APPLY ( + SELECT TOP 1 tt.FID,tt.FMATERIALID FROM T_ENG_BOM tt + WHERE 1 = 1 AND t0.FMATERIALID = tt.FMATERIALID AND tt.FDOCUMENTSTATUS = 'C' AND tt.FFORBIDSTATUS = 'A' + ORDER BY tt.FID DESC + ) t1 + INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t1.FMATERIALID AND t2_l.FLOCALEID = 2052 + LEFT JOIN #Material_Stock_Statu t3 on t1.FMATERIALID = t3.FMATERIALID + +DECLARE @num INT,@level int,@LoopCount int +SET @num = 1 +SET @level =0 +SET @LoopCount = 0; + +WHILE (@num != 0 AND @LoopCount < 10) +BEGIN + WITH t1 AS( + SELECT + tt.FMATERIALID + ,ISNULL(t2.FID,0) AS 'BomId' + ,ABS(tt.汇总_分析需求数) '汇总_分析需求数' + ,t3.可用库存 + ,(CASE + WHEN t3.可用库存 > (ABS(tt.汇总_分析需求数) - ISNULL(t4.上级_实际需求数,0)) THEN 0 + ELSE t3.可用库存 - (ABS(tt.汇总_分析需求数) - ISNULL(t4.上级_实际需求数,0)) + END) AS '实际需求数' + ,@level + 1 lv + ,tt.物料个数分组合计 + FROM ( --获取BOM子项物料 + SELECT t1.FMATERIALID,COUNT(1) AS '物料个数分组合计' + ,SUM(t0.物料_实际需求数 * (t1.FNUMERATOR / t1.FDENOMINATOR)) AS '汇总_分析需求数' + FROM #MATERIAL_LACKANALYE t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.BomId = t1.FID + WHERE 1 = 1 AND t0.BOMLEVEL = @level + GROUP BY t1.FMATERIALID + ) tt + OUTER APPLY ( --获取最新层级物料的最新BOM + SELECT TOP 1 tt3.FID,tt3.FNUMBER,tt3.FMATERIALID + FROM T_ENG_BOM tt3 + WHERE 1 = 1 AND tt3.FDOCUMENTSTATUS = 'C' AND tt3.FFORBIDSTATUS = 'A' + AND tt.FMATERIALID = tt3.FMATERIALID + ORDER BY tt3.FID DESC + ) t2 + LEFT JOIN #Material_Stock_Statu t3 on t3.FMATERIALID = tt.FMATERIALID + OUTER APPLY ( --统计BOM子项物料已存在临时表中的物料的需求数 + SELECT ABS(SUM(tt4.物料_实际需求数)) AS '上级_实际需求数' + FROM #MATERIAL_LACKANALYE tt4 + WHERE tt4.MaterialId = tt.FMATERIALID + GROUP BY tt4.MaterialId + ) t4 + ) + INSERT INTO #MATERIAL_LACKANALYE(MaterialId,BomId,物料_分析需求数,物料_可用库存数,物料_实际需求数,BOMLEVEL,物料个数分组合计) + SELECT t1.FMATERIALID,t1.BomId,t1.汇总_分析需求数,t1.可用库存,t1.实际需求数,t1.lv,t1.物料个数分组合计 + FROM t1 + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 +END + +SELECT + ROW_NUMBER() OVER (ORDER BY t0.BOMLEVEL,t1.FNumber) 'FIDENTITYID' + ,t0.MATERIALID,t0.IsProduct,t1_l.FNAME,t1.FNUMBER + ,t0.物料_分析需求数,t0.物料_实际需求数 + ,t2.即时库存 AS '物料_即时库存',t2.未发数 AS '物料_未发数',t2.在制数 AS '物料_在制数' + ,t2.受订量 AS '物料_受订量',t2.在途量 AS '物料_在途量',t2.可用库存 AS '物料_可用库存数',t2.进检量 AS '物料_进检量' + ,t0.物料个数分组合计 +FROM ( + SELECT t0.MATERIALID + ,SUM(t0.物料_实际需求数) AS '物料_实际需求数' + ,SUM(t0.物料_分析需求数) AS '物料_分析需求数' + ,MAX(t0.BOMLEVEL) AS 'BOMLEVEL' + ,MAX(t0.IsProduct) AS 'IsProduct' + ,SUM(t0.物料个数分组合计) AS '物料个数分组合计' + FROM #MATERIAL_LACKANALYE t0 + GROUP BY t0.MATERIALID +) t0 + INNER JOIN T_BD_MATERIAL t1 on t0.MaterialId = t1.FMATERIALID + INNER JOIN T_BD_MATERIAL_L t1_l on t0.MaterialId = t1_l.FMATERIALID AND t1_l.FLOCALEID = 2052 + INNER JOIN #Material_Stock_Statu t2 on t2.FMATERIALID = t0.MATERIALID + +DROP TABLE #MATERIAL_LACKANALYE +DROP TABLE #Material_Stock_Statu \ No newline at end of file diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V4.sql b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V4.sql new file mode 100644 index 0000000..98f08a2 --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/sql/缺料分析单数据查询V4.sql @@ -0,0 +1,171 @@ +DECLARE @needNum DECIMAL(23,6) +,@sDate varchar(100) +,@eDate varchar(100) +,@dbName varchar(100) +SET @needNum = 20 +SET @sDate = '2024-02-24' +SET @eDate = '2024-03-24' + +select @dbName = db_name() + +SELECT t0.FMATERIALID + ,ISNULL(t3.sumQTY,0) AS ʱ + ,ISNULL(t4.sumBASENOPICKEDQTY,0) AS δ + ,ISNULL(t5.sumNoStockInQty,0) AS + ,CASE WHEN CHARINDEX('TC',t0.FNUMBER) = 1 THEN 0 ELSE ISNULL(t1. - t1.δ,0) END AS 'ܶ' + ,ISNULL(t2. - t2.,0) AS ';' + ,(ISNULL(t3.sumQTY,0) - ISNULL(t4.sumBASENOPICKEDQTY,0) + ISNULL(t5.sumNoStockInQty,0) - ISNULL(t1. - t1.δ,0) + ISNULL(t2. - t2.,0)) AS 'ÿ' + ,ISNULL(t6.,0) AS '' + INTO #Material_Stock_Statu +FROM T_BD_MATERIAL t0 + LEFT JOIN ( + SELECT + t0e.FMATERIALID,SUM(t0e.FQTY) AS '' + ,SUM((t0e_r.FBASEREMAINOUTQTY + t0e_r.FBASERETURNQTY)) AS 'δ' + FROM T_SAL_ORDER t0 + INNER JOIN T_SAL_ORDERENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_SAL_ORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE between @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t1 on t1.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT + t0e.FMATERIALID,SUM(t0e.FQTY) AS '' + ,SUM(t0e_r.FREMAINSTOCKINQTY) AS 'ʣ' + ,SUM(t0e_r.FBASESTOCKINQTY) AS '' + FROM T_PUR_POORDER t0 + INNER JOIN T_PUR_POORDERENTRY t0e on t0.FID = t0e.FID AND t0.FBUSINESSTYPE != 'ZCCG' AND t0.FBUSINESSTYPE != 'FYCG' + INNER JOIN T_PUR_POORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE BETWEEN @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t2 on t2.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT tt0.FMATERIALID,tt0.FSTOCKORGID,SUM(tt0.FBASEQTY) AS sumQTY + FROM T_STK_INVENTORY tt0 + GROUP BY tt0.FMATERIALID,tt0.FSTOCKORGID + ) t3 on t3.FMATERIALID = t0.FMASTERID AND t3.FSTOCKORGID = t0.FUSEORGID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOPICKEDQTY) sumBASENOPICKEDQTY --δ + FROM T_PRD_PPBOMENTRY t0e + INNER JOIN T_PRD_PPBOMENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FMOENTRYID + WHERE t0e_a.FSTATUS = 4 + GROUP BY t0e.FMATERIALID + ) t4 on t4.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(t0e_q.FNOSTOCKINQTY) AS sumNoStockInQty + FROM T_PRD_MOENTRY t0e + INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + WHERE t0e_a.FSTATUS = 4 + GROUP BY t0e.FMATERIALID + ) t5 on t5.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT t0e.FMATERIALID,SUM(FBASEUNITQTY-FINSTOCKBASEQTY + FRETURNBASEQTY) AS '' + FROM T_PUR_RECEIVE t0 + INNER JOIN T_PUR_RECEIVEENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PUR_RECEIVEENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e.FENTRYID = t0e_r.FENTRYID + INNER JOIN T_PUR_RECEIVEENTRY_S t0e_s on t0e.FID = t0e_s.FID AND t0e.FENTRYID = t0e_s.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FCANCELSTATUS = 'A' + AND t0.FCLOSESTATUS = 'A' + AND t0.FDATE BETWEEN @sDate AND @eDate + GROUP BY t0e.FMATERIALID + ) t6 on t6.FMATERIALID = t0.FMATERIALID +WHERE t0.FDOCUMENTSTATUS = 'C' + AND t0.FFORBIDSTATUS = 'A' + +UPDATE #Material_Stock_Statu SET ÿ = ʱ - δ - ܶ + + ;; + +WITH #TMPMATERIALNUM AS ( + --Ҫidͳ + SELECT tt.MATERIALID,SUM(tt.needNum) needNum + FROM ( + SELECT + CASE @dbName WHEN 'AIS20231110222743' THEN 101521 ELSE 782449 END AS 'MATERIALID' + ,10 needNum + --UNION ALL + --SELECT + --CASE @dbName WHEN 'AIS20231110222743' THEN 101530 ELSE 808372 END AS 'MATERIALID' + --,30 needNum + ) tt + GROUP BY tt.MATERIALID +), #ProMaterial AS( + SELECT t0.FMASTERID + ,t0.FMATERIALID + ,t0.FNUMBER + ,t0.FUSEORGID + ,CAST(t1.needNum AS decimal(23,6)) AS 'ProMaterialQty' + FROM T_BD_MATERIAL t0 + INNER JOIN #TMPMATERIALNUM t1 on t0.FMATERIALID = t1.MATERIALID + WHERE t0.FDOCUMENTSTATUS = 'C' +), #T_ENG_BOM_TOP1 AS( + --ȡ²㼶ϵBOM + SELECT + t1.FMATERIALID AS 'EMaterialId',t1.FNUMERATOR,t1.FDENOMINATOR + ,ISNULL(t0.FID,0) AS 'BomId',ISNULL(t0.FNUMBER,'') AS 'FNUMBER' + ,ISNULL(t0.FMATERIALID,0) AS 'FMATERIALID',t1.FID AS 'BOMCHILD_FID' + FROM T_ENG_BOMCHILD t1 + OUTER APPLY ( + SELECT TOP 1 t0.FID,t0.FNUMBER,t0.FMATERIALID + FROM T_ENG_BOM t0 + WHERE t0.FMATERIALID = t1.FMATERIALID + AND t0.FDOCUMENTSTATUS = 'C' AND t0.FFORBIDSTATUS = 'A' + ORDER BY t0.FID DESC + ) t0 +), #MATERIAL_LACKANALYE AS( + SELECT + t0.FMATERIALID AS 'MATERIALID' + ,t1.BomId AS 'BomId' + ,t0.ProMaterialQty AS '_' + ,t3.ÿ + ,CAST((CASE CHARINDEX('TC',t0.FNUMBER) + WHEN 1 THEN 0 - t0.ProMaterialQty + ELSE (CASE WHEN t3.ÿ > t0.ProMaterialQty THEN 0 ELSE t3.ÿ - t0.ProMaterialQty END) + END) AS decimal(23,6)) AS '_ʵ' + ,0 'BOMLEVEL',1 'IsProduct',1 'ϸϼ' + FROM #ProMaterial t0 + CROSS APPLY ( + SELECT TOP 1 tt.BomId,tt.FMATERIALID FROM #T_ENG_BOM_TOP1 tt + WHERE 1 = 1 AND t0.FMATERIALID = tt.FMATERIALID ORDER BY tt.BomId DESC + ) t1 + INNER JOIN #Material_Stock_Statu t3 on t1.FMATERIALID = t3.FMATERIALID + UNION ALL + SELECT t1.EMaterialId AS 'MATERIALID' + ,t1.BomId + ,CAST(t0._ * (t1.FNUMERATOR / t1.FDENOMINATOR) AS decimal(23,6)) AS '_' + ,t0.ÿ + ,CAST(t0._ʵ * (t1.FNUMERATOR / t1.FDENOMINATOR) AS decimal(23,6)) AS '_ʵ' + ,t0.BOMLEVEL + 1 AS 'BOMLEVEL',0 AS 'IsProduct',1 AS 'ϸϼ' + FROM #MATERIAL_LACKANALYE t0 + INNER JOIN #T_ENG_BOM_TOP1 t1 on t0.BomId = t1.BOMCHILD_FID +) +SELECT + ROW_NUMBER() OVER (ORDER BY t0.BOMLEVEL,t1.FNumber) 'FIDENTITYID' + ,t0.MATERIALID,t0.IsProduct,t1_l.FNAME,t1.FNUMBER + ,t0._--,t0._ʵ + ,t2.ʱ AS '_ʱ',t2.δ AS '_δ',t2. AS '_' + ,t2.ܶ AS '_ܶ',t2.; AS '_;',t2.ÿ AS '_ÿ',t2. AS '_' + ,t0.ϸϼ +FROM ( + SELECT t0.MATERIALID + --,SUM(t0._ʵ) AS '_ʵ' + ,SUM(t0._) AS '_' + ,MAX(t0.BOMLEVEL) AS 'BOMLEVEL' + ,MAX(t0.IsProduct) AS 'IsProduct' + ,SUM(t0.ϸϼ) AS 'ϸϼ' + FROM #MATERIAL_LACKANALYE t0 + GROUP BY t0.MATERIALID +) t0 + INNER JOIN T_BD_MATERIAL t1 on t0.MaterialId = t1.FMATERIALID + INNER JOIN T_BD_MATERIAL_L t1_l on t0.MaterialId = t1_l.FMATERIALID AND t1_l.FLOCALEID = 2052 + INNER JOIN #Material_Stock_Statu t2 on t2.FMATERIALID = t0.MATERIALID +OPTION (MAXRECURSION 30) + +DROP TABLE #Material_Stock_Statu \ No newline at end of file diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI/HUIWEI.csproj b/03.珠海市汇威精密制造有限公司/HUIWEI/HUIWEI.csproj index 5c92a12..15cb756 100644 --- a/03.珠海市汇威精密制造有限公司/HUIWEI/HUIWEI.csproj +++ b/03.珠海市汇威精密制造有限公司/HUIWEI/HUIWEI.csproj @@ -89,6 +89,7 @@ + @@ -117,5 +118,11 @@ + + + {beae0bf6-7ab9-4af5-83ce-d08e3c6880ef} + ExtensionMethods + + \ No newline at end of file diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI/PRD_MO/BillEventPlugInEx.cs b/03.珠海市汇威精密制造有限公司/HUIWEI/PRD_MO/BillEventPlugInEx.cs new file mode 100644 index 0000000..d2a9904 --- /dev/null +++ b/03.珠海市汇威精密制造有限公司/HUIWEI/PRD_MO/BillEventPlugInEx.cs @@ -0,0 +1,55 @@ +using ExtensionMethods; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Metadata.FieldElement; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace HUIWEI.PRD_MO +{ + [Description("测试"), HotUpdate] + public class BillEventPlugInEx : AbstractDynamicFormPlugIn + { + private bool isNewData = false; + + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.Equals("tbSNew") || e.BarItemKey.Equals("tbNew")) + { + var openParameter = this.View.OpenParameter; + var customerParams = openParameter.GetCustomParameters(); + var parameterData = this.View.Model.ParameterData; + var billTypeField = this.View.BillBusinessInfo.GetBillTypeField(); + + var infos = billTypeField.BillTypeInfo; + var info = (parameterData["BillTypeEntity"] as DynamicObjectCollection).FirstOrDefault(x => Convert.ToBoolean(x[4])); + + if (info != null) + { + SetBillTypeDefValue(billTypeField, info[5].ToString()); + } + } + } + + /// + /// 设置单据类型默认值 + /// + /// + /// + private void SetBillTypeDefValue(BillTypeField billTypeField, string defBillTypeId) + { + if (billTypeField != null && !string.IsNullOrWhiteSpace(defBillTypeId)) + { + var billTypeObj = this.Model.LoadReferenceData(billTypeField.RefFormDynamicObjectType, defBillTypeId); + billTypeField.RefIDDynamicProperty.SetValue(this.Model.DataObject, defBillTypeId); + billTypeField.DynamicProperty.SetValue(this.Model.DataObject, billTypeObj); + } + } + } +} diff --git a/05.长园/CYG.Python/CRM_Contract/BillEventPlugInEx.py b/05.长园/CYG.Python/CRM_Contract/BillEventPlugInEx.py index 309e67f..098ba01 100644 --- a/05.长园/CYG.Python/CRM_Contract/BillEventPlugInEx.py +++ b/05.长园/CYG.Python/CRM_Contract/BillEventPlugInEx.py @@ -23,16 +23,56 @@ from Kingdee.BOS.ServiceHelper import * def AfterCreateNewData(e): details = this.View.BusinessInfo.GetEntity("FContractPlan") entrys = this.View.Model.GetEntityDataObject(details) - dataJson = [{"name":"预付","FRecAdvanceRate":100} + dataJson = [{"name":"预付","FRecAdvanceRate":0} ,{"name":"发货","FRecAdvanceRate":0} ,{"name":"到货","FRecAdvanceRate":0} ,{"name":"验收","FRecAdvanceRate":0} ,{"name":"质保","FRecAdvanceRate":0}] - + # "预付" if FMaterialSeq == 1 else "发货" if FMaterialSeq == 2 else "到货" if FMaterialSeq == 3 else "验收" if FMaterialSeq == 4 else "质保" if entrys != None and entrys.Count > 0: + contractAmount = this.View.Model.GetValue("FCONTRACTAMOUNT") + countRecAdvanceRate = 0 for entry in entrys: rowIndex = this.View.Model.GetRowIndex(details, entry) if rowIndex > 4: continue entry["F_CYG_Text"] = dataJson[rowIndex]["name"] - entry["FRecAdvanceRate"] = dataJson[rowIndex]["FRecAdvanceRate"] \ No newline at end of file + recAdvanceRate = dataJson[rowIndex]["FRecAdvanceRate"] + countRecAdvanceRate = countRecAdvanceRate + recAdvanceRate + entry["FRecAdvanceRate"] = recAdvanceRate + entry["FRecAdvanceAmount"] = recAdvanceRate / 100 * contractAmount + +# def AfterCreateNewData(e): +# details = this.View.BusinessInfo.GetEntity("FContractPlan") +# entrys = this.View.Model.GetEntityDataObject(details) +# dataJson = [{"name":"预付","FRecAdvanceRate":0} +# ,{"name":"发货","FRecAdvanceRate":0} +# ,{"name":"到货","FRecAdvanceRate":0} +# ,{"name":"验收","FRecAdvanceRate":0} +# ,{"name":"质保","FRecAdvanceRate":0}] +# # "预付" if FMaterialSeq == 1 else "发货" if FMaterialSeq == 2 else "到货" if FMaterialSeq == 3 else "验收" if FMaterialSeq == 4 else "质保" +# if entrys != None and entrys.Count > 0: +# contractAmount = this.View.Model.GetValue("FCONTRACTAMOUNT") +# countRecAdvanceRate = 0 +# for entry in entrys: +# rowIndex = this.View.Model.GetRowIndex(details, entry) +# if rowIndex > 4: +# continue +# entry["F_CYG_Text"] = dataJson[rowIndex]["name"] +# recAdvanceRate = entry["FRecAdvanceRate"] +# recAdvanceRate = dataJson[rowIndex]["FRecAdvanceRate"] if recAdvanceRate == 0 else recAdvanceRate +# countRecAdvanceRate = countRecAdvanceRate + recAdvanceRate +# entry["FRecAdvanceRate"] = recAdvanceRate +# entry["FRecAdvanceAmount"] = recAdvanceRate / 100 * contractAmount + +# if countRecAdvanceRate == 0: +# this.View.Model.SetValue("FRecAdvanceRate", 100, 0) +# this.View.Model.SetValue("FRecAdvanceAmount", contractAmount, 0) + +# def DataChanged(e): +# if e.Field.Key == "FRecAdvanceRate": +# contractAmount = this.View.Model.GetValue("FCONTRACTAMOUNT") +# recAdvanceRate = e.NewValue +# rowIndex = e.Row +# recAdvanceAmount = recAdvanceRate * contractAmount / 100 +# this.View.Model.SetValue("FRecAdvanceAmount", recAdvanceAmount, rowIndex) \ No newline at end of file diff --git a/05.长园/CYG.Python/CRM_Contract/OperationEvenPlugInEx.py b/05.长园/CYG.Python/CRM_Contract/OperationEvenPlugInEx.py new file mode 100644 index 0000000..a9ece4f --- /dev/null +++ b/05.长园/CYG.Python/CRM_Contract/OperationEvenPlugInEx.py @@ -0,0 +1,46 @@ +#引入clr运行库 +import clr +#添加对cloud插件开发的常用组件引用 +clr.AddReference('System') +clr.AddReference('System.Data') +clr.AddReference('Kingdee.BOS') +clr.AddReference('Kingdee.BOS.Core') +clr.AddReference('Kingdee.BOS.App') +clr.AddReference('Kingdee.BOS.Contracts') +clr.AddReference('Kingdee.BOS.DataEntity') +clr.AddReference('Kingdee.BOS.ServiceHelper') + +#dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入) +from Kingdee.BOS.Core import * +from Kingdee.BOS.Util import * +from Kingdee.BOS.Orm.DataEntity import * +from Kingdee.BOS.Core.DynamicForm.PlugIn import * +from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * +from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * +from System import * +from System.Data import * +from System.Collections.Generic import * +from Kingdee.BOS.App.Data import * +from Kingdee.BOS.ServiceHelper import * + +# 执行保存操作前 +def BeforeDoSaveExecute(e): + if e.DataEntities.Count > 0: + # raise Exception(JsonUtil.Serialize(e.DataEntities)) + for item in e.DataEntities: + # 收款计划 + FContractPlan = item["FContractPlan"] + # 财务信息 + CRM_ContractFIN = item["CRM_ContractFIN"][0] + # 合同金额 + FCONTRACTAMOUNT = CRM_ContractFIN["FCONTRACTAMOUNT"] + removeList = [] + for idx, planItem in enumerate(FContractPlan): + # 应收金额 + planItem["FRECADVANCEAMOUNT"] = planItem["FRECADVANCERATE"] * FCONTRACTAMOUNT / 100 + if planItem["F_CYG_Text"] == None or planItem["F_CYG_Text"] == "": + removeList.append(idx) + + for idx in removeList: + FContractPlan.RemoveAt(idx) + # raise Exception(JsonUtil.Serialize(e.DataEntities)) \ No newline at end of file diff --git a/05.长园/CYG/CYG.csproj b/05.长园/CYG/CYG.csproj index 98e2350..c5b0e72 100644 --- a/05.长园/CYG/CYG.csproj +++ b/05.长园/CYG/CYG.csproj @@ -31,10 +31,11 @@ 4 - true + false - CYGTEST.pfx + + @@ -52,6 +53,9 @@ ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + ..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.CRM.OPP.Business.PlugIn.dll + @@ -79,8 +83,5 @@ - - - \ No newline at end of file diff --git a/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj b/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj index c3a8e6b..ecec177 100644 --- a/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj +++ b/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj @@ -27,6 +27,9 @@ + + +