From 5e2781182d1889b967fd9df11a124f04516e8064 Mon Sep 17 00:00:00 2001 From: PastSaid <603806070@qq.com> Date: Mon, 4 Mar 2024 16:50:20 +0800 Subject: [PATCH] a --- AllOperation/AllEventDynamicFormPlugIn.cs | 581 +++ AllOperation/AllOperation.csproj | 59 + AllOperation/Properties/AssemblyInfo.cs | 36 + .../CY.AR_RecMatchFilter.csproj | 109 + CY.AR_RecMatchFilter/Class1.cs | 11 + .../MatchFilterStencilEditEx.cs | 78 + .../Properties/AssemblyInfo.cs | 36 + CY.AR_RecMatchFilter/RecSpecialEditEx.cs | 498 +++ CY.AR_RecMatchFilter/SpecialStencilEditEx.cs | 2308 ++++++++++++ CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.py | 80 + .../CY.PRD_MORPT.Python.pyproj | 42 + .../SQLServer/实际工时归集关联查询.sql | 72 + .../SQLServer/长园客户与开票单位数据置换.sql | 22 + CY.PRD_MORPT.Python/类1.py | 82 + CY.PRD_MORPT/CY.PRD_MORPT.csproj | 75 + CY.PRD_MORPT/Properties/AssemblyInfo.cs | 36 + ...orkTimeAfterAuditOperationServicePlugIn.cs | 137 + CY.PRD_MORPT/实际工时归集关联查询.sql | 51 + EC.STK_Inventory/EC.STK_Inventory.csproj | 62 + EC.STK_Inventory/ListEventPlugIn.cs | 36 + EC.STK_Inventory/Properties/AssemblyInfo.cs | 36 + .../EC.STK_MISCELLANEOUS.csproj | 46 + .../Properties/AssemblyInfo.cs | 36 + EC.STK_MisDelivery/EC.STK_MisDelivery.csproj | 46 + EC.STK_MisDelivery/Properties/AssemblyInfo.cs | 36 + .../EC.STK_StockCountGain.csproj | 46 + .../Properties/AssemblyInfo.cs | 36 + .../EC.STK_StockCountLoss.csproj | 46 + .../Properties/AssemblyInfo.cs | 36 + EastChanger/BaseService.cs | 97 + EastChanger/EastChanger.csproj | 94 + EastChanger/Properties/AssemblyInfo.cs | 36 + EastChanger/SQLServer/0.海关接口请求参数.sql | 12 + EastChanger/SQLServer/1.账册信息视图.sql | 22 + .../SQLServer/2.1.库存明细同步接口回填.sql | 36 + EastChanger/SQLServer/2.明细信息关联视图.sql | 37 + .../STK_Inventory/ListEventPlugInEx.cs | 37 + .../STK_Inventory/STKInventoryService.cs | 209 ++ EastChanger/SignUtil.cs | 87 + EastChanger/sfj4Class.cs | 44 + .../Enpower.Database.sqlproj | 13 +- Enpower.Database/生产订单BOM.sql | 49 + Enpower.Database/生产订单BOM_创建临时表.sql | 186 + Enpower.Database/生产订单BOM_查询.sql | 218 ++ ...单BOM_选中订单_更新层号_存储过程20240115.sql | 231 ++ .../生产订单BOM更新层号_存储过程20240114.sql | 229 ++ .../Enpower.PRD_MO.Python.py | 82 + .../Enpower.PRD_MO.Python.pyproj | 35 + Enpower.PRD_MO/Enpower.PRD_MO.csproj | 61 + Enpower.PRD_MO/Properties/AssemblyInfo.cs | 36 + Enpower.PRD_MO/SQLserver/PLAN2.sql | 222 ++ .../更新计划订单_预测单信息_存储过程.sql | 148 + ...新计划订单_预测单信息_存储过程_20240120.sql | 187 + ...生产层号为空的生产用料清单202402261540.sql | 19 + Enpower.PRD_MO/SQLserver/查询语句.sql | 117 + Enpower.PRD_MO/SQLserver/生产订单BOM.sql | 49 + .../SQLserver/生产订单BOM_创建临时表.sql | 186 + Enpower.PRD_MO/SQLserver/生产订单BOM_查询.sql | 219 ++ ...单BOM_选中订单_更新层号_存储过程20240115.sql | 231 ++ .../生产订单BOM更新层号_存储过程20240114.sql | 229 ++ .../SQLserver/统计需要更新的数据.sql | 20 + .../SQLserver/英博尔测试20240220.sql | 232 ++ .../SQLserver/计划订单更新预测单信息新sql.sql | 179 + Extensions/BooleanExtension.cs | 15 + Extensions/DateTimeExtension.cs | 8 + Extensions/ExtensionMethods.csproj | 2 + Extensions/ObjectExtension.cs | 18 + Extensions/StringExtension.cs | 20 + GateDge2023.pyproj | 217 ++ GateDge2023.sln | 122 + HW.DataBase/Script1.sql | 1 - HW.PRD_MO.Python.pyperf | 13 + HW.PRD_MO.Python/HW.PRD_MO.Python.py | 47 + HW.PRD_MO.Python/HW.PRD_MO.Python.pyproj | 50 + .../SQLServer/更新对应表中产品对照倒置id.sql | 41 + .../SQLServer/模具-产品对照倒置表.sql | 32 + ...具产品对照-同一个模具下多个相同产品查询.sql | 13 + HW.PRD_MO.Python/类1.py | 181 + HW.PRD_MO/AfterSaveOperationServicePlugIn.cs | 66 + HW.PRD_MO/HW.PRD_MO.csproj | 66 + HW.PRD_MO/Properties/AssemblyInfo.cs | 36 + .../HW.ProductionMateralsPlugIn.csproj | 69 + .../Properties/AssemblyInfo.cs | 36 + .../TableOperationPlugInEx.cs | 33 + HW.PythonPlugIn/HW.PythonPlugIn.pyproj | 49 + .../ProductionMaterialsReport.py | 323 ++ .../ProductionMaterialsReport/TablePlugIn.py | 67 + .../sql/20240206联合查询.sql | 127 + .../sql/bom层级库存状态.sql | 3253 +++++++++++++++++ .../sql/创建临时表.sql | 88 + .../sql/新BOM层级库存状态.sql | 32 + .../sql/生产投料查询表_20240206.sql | 179 + .../测试赋值基础资料.py | 48 + .../ProductionMaterialsReport/类1.py | 36 + .../ProductionMaterialsReport/类2.py | 206 ++ HandleUtils/Base64Helper.cs | 72 + HandleUtils/EncryptHelper.cs | 149 + HandleUtils/HandleUtils.csproj | 49 + HandleUtils/Properties/AssemblyInfo.cs | 36 + HandleUtils/WebHelper.cs | 99 + K3CExttensionMethods/ListHeaderExtension.cs | 9 +- .../AutoRecordsInventoryPlugIn.cs | 2 +- .../完成/2.存储过程_生产计划_查询保存数据.sql | 37 +- .../完成/5.存储过程_生产计划表_insert.sql | 104 +- .../完成/6.存储过程_物料即时库存表_insert.sql | 2 +- .../完成/自定义函数-生产计划-包装规格换算.sql | 6 +- .../生产计划表2.0/查询_生产计划数据.sql | 145 +- .../UpdatePlanOrderCustInfoPolicyEx .cs | 4 + .../HW.ProductionMaterialsReport.csproj | 14 + .../ProductionMaterialsReportEx.cs | 363 +- .../SqlServer/仓位值1.sql | 37 + .../SqlServer/仓位值2.sql | 26 + .../SqlServer/存储过程-生产用料清单.sql | 228 +- .../SqlServer/生产用料清单查询.sql | 192 + ProductionMaterialsReport/TablePlugIn.cs | 27 + SQLQuery1.sql | 168 + SQLQuery2.sql | 1 + Trinomab.PUR_RPT_POOrderTrace/app.config | 56 + Trinomab.PUR_RPT_POOrderTrace/packages.config | 41 + .../UnitTestProject.Python.py | 2 + .../UnitTestProject.Python.pyproj | 35 + UnitTestProject1/UnitTest1.cs | 172 +- UnitTestProject1/UnitTestProject1.csproj | 14 + .../BeforeSaveEventBillPlugIn.cs | 2 +- .../DataChangedEventFormPlugIn.cs | 1 - VerifyTest/Ext_HomePagePlugin.cs | 108 + VerifyTest/MacVerify.cs | 163 + VerifyTest/Properties/AssemblyInfo.cs | 36 + VerifyTest/VerifyTest.csproj | 69 + 代码格式修正.sql | 1645 +++++++++ 多组织即时库存查询.sql | 27 + 水务_其他出库单_退货_四舍五入.sql | 48 + 珍妮采.sql | 2560 +++++++++++++ 133 files changed, 20406 insertions(+), 501 deletions(-) create mode 100644 AllOperation/AllEventDynamicFormPlugIn.cs create mode 100644 AllOperation/AllOperation.csproj create mode 100644 AllOperation/Properties/AssemblyInfo.cs create mode 100644 CY.AR_RecMatchFilter/CY.AR_RecMatchFilter.csproj create mode 100644 CY.AR_RecMatchFilter/Class1.cs create mode 100644 CY.AR_RecMatchFilter/MatchFilterStencilEditEx.cs create mode 100644 CY.AR_RecMatchFilter/Properties/AssemblyInfo.cs create mode 100644 CY.AR_RecMatchFilter/RecSpecialEditEx.cs create mode 100644 CY.AR_RecMatchFilter/SpecialStencilEditEx.cs create mode 100644 CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.py create mode 100644 CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.pyproj create mode 100644 CY.PRD_MORPT.Python/SQLServer/实际工时归集关联查询.sql create mode 100644 CY.PRD_MORPT.Python/SQLServer/长园客户与开票单位数据置换.sql create mode 100644 CY.PRD_MORPT.Python/类1.py create mode 100644 CY.PRD_MORPT/CY.PRD_MORPT.csproj create mode 100644 CY.PRD_MORPT/Properties/AssemblyInfo.cs create mode 100644 CY.PRD_MORPT/SetWorkTimeAfterAuditOperationServicePlugIn.cs create mode 100644 CY.PRD_MORPT/实际工时归集关联查询.sql create mode 100644 EC.STK_Inventory/EC.STK_Inventory.csproj create mode 100644 EC.STK_Inventory/ListEventPlugIn.cs create mode 100644 EC.STK_Inventory/Properties/AssemblyInfo.cs create mode 100644 EC.STK_MISCELLANEOUS/EC.STK_MISCELLANEOUS.csproj create mode 100644 EC.STK_MISCELLANEOUS/Properties/AssemblyInfo.cs create mode 100644 EC.STK_MisDelivery/EC.STK_MisDelivery.csproj create mode 100644 EC.STK_MisDelivery/Properties/AssemblyInfo.cs create mode 100644 EC.STK_StockCountGain/EC.STK_StockCountGain.csproj create mode 100644 EC.STK_StockCountGain/Properties/AssemblyInfo.cs create mode 100644 EC.STK_StockCountLoss/EC.STK_StockCountLoss.csproj create mode 100644 EC.STK_StockCountLoss/Properties/AssemblyInfo.cs create mode 100644 EastChanger/BaseService.cs create mode 100644 EastChanger/EastChanger.csproj create mode 100644 EastChanger/Properties/AssemblyInfo.cs create mode 100644 EastChanger/SQLServer/0.海关接口请求参数.sql create mode 100644 EastChanger/SQLServer/1.账册信息视图.sql create mode 100644 EastChanger/SQLServer/2.1.库存明细同步接口回填.sql create mode 100644 EastChanger/SQLServer/2.明细信息关联视图.sql create mode 100644 EastChanger/STK_Inventory/ListEventPlugInEx.cs create mode 100644 EastChanger/STK_Inventory/STKInventoryService.cs create mode 100644 EastChanger/SignUtil.cs create mode 100644 EastChanger/sfj4Class.cs rename HW.DataBase/HW.DataBase.sqlproj => Enpower.Database/Enpower.Database.sqlproj (88%) create mode 100644 Enpower.Database/生产订单BOM.sql create mode 100644 Enpower.Database/生产订单BOM_创建临时表.sql create mode 100644 Enpower.Database/生产订单BOM_查询.sql create mode 100644 Enpower.Database/生产订单BOM_选中订单_更新层号_存储过程20240115.sql create mode 100644 Enpower.Database/生产订单BOM更新层号_存储过程20240114.sql create mode 100644 Enpower.PRD_MO.Python/Enpower.PRD_MO.Python.py create mode 100644 Enpower.PRD_MO.Python/Enpower.PRD_MO.Python.pyproj create mode 100644 Enpower.PRD_MO/Enpower.PRD_MO.csproj create mode 100644 Enpower.PRD_MO/Properties/AssemblyInfo.cs create mode 100644 Enpower.PRD_MO/SQLserver/PLAN2.sql create mode 100644 Enpower.PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程.sql create mode 100644 Enpower.PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程_20240120.sql create mode 100644 Enpower.PRD_MO/SQLserver/查询生产层号为空的生产用料清单202402261540.sql create mode 100644 Enpower.PRD_MO/SQLserver/查询语句.sql create mode 100644 Enpower.PRD_MO/SQLserver/生产订单BOM.sql create mode 100644 Enpower.PRD_MO/SQLserver/生产订单BOM_创建临时表.sql create mode 100644 Enpower.PRD_MO/SQLserver/生产订单BOM_查询.sql create mode 100644 Enpower.PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql create mode 100644 Enpower.PRD_MO/SQLserver/生产订单BOM更新层号_存储过程20240114.sql create mode 100644 Enpower.PRD_MO/SQLserver/统计需要更新的数据.sql create mode 100644 Enpower.PRD_MO/SQLserver/英博尔测试20240220.sql create mode 100644 Enpower.PRD_MO/SQLserver/计划订单更新预测单信息新sql.sql create mode 100644 Extensions/BooleanExtension.cs create mode 100644 Extensions/ObjectExtension.cs create mode 100644 GateDge2023.pyproj delete mode 100644 HW.DataBase/Script1.sql create mode 100644 HW.PRD_MO.Python.pyperf create mode 100644 HW.PRD_MO.Python/HW.PRD_MO.Python.py create mode 100644 HW.PRD_MO.Python/HW.PRD_MO.Python.pyproj create mode 100644 HW.PRD_MO.Python/SQLServer/更新对应表中产品对照倒置id.sql create mode 100644 HW.PRD_MO.Python/SQLServer/模具-产品对照倒置表.sql create mode 100644 HW.PRD_MO.Python/SQLServer/模具产品对照-同一个模具下多个相同产品查询.sql create mode 100644 HW.PRD_MO.Python/类1.py create mode 100644 HW.PRD_MO/AfterSaveOperationServicePlugIn.cs create mode 100644 HW.PRD_MO/HW.PRD_MO.csproj create mode 100644 HW.PRD_MO/Properties/AssemblyInfo.cs create mode 100644 HW.ProductionMateralsPlugIn/HW.ProductionMateralsPlugIn.csproj create mode 100644 HW.ProductionMateralsPlugIn/Properties/AssemblyInfo.cs create mode 100644 HW.ProductionMateralsPlugIn/TableOperationPlugInEx.cs create mode 100644 HW.PythonPlugIn/HW.PythonPlugIn.pyproj create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/ProductionMaterialsReport.py create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/TablePlugIn.py create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/sql/20240206联合查询.sql create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/sql/bom层级库存状态.sql create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/sql/创建临时表.sql create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/sql/新BOM层级库存状态.sql create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/sql/生产投料查询表_20240206.sql create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/测试赋值基础资料.py create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/类1.py create mode 100644 HW.PythonPlugIn/ProductionMaterialsReport/类2.py create mode 100644 HandleUtils/Base64Helper.cs create mode 100644 HandleUtils/EncryptHelper.cs create mode 100644 HandleUtils/HandleUtils.csproj create mode 100644 HandleUtils/Properties/AssemblyInfo.cs create mode 100644 HandleUtils/WebHelper.cs create mode 100644 ProductionMaterialsReport/SqlServer/仓位值1.sql create mode 100644 ProductionMaterialsReport/SqlServer/仓位值2.sql create mode 100644 ProductionMaterialsReport/SqlServer/生产用料清单查询.sql create mode 100644 ProductionMaterialsReport/TablePlugIn.cs create mode 100644 SQLQuery1.sql create mode 100644 SQLQuery2.sql create mode 100644 Trinomab.PUR_RPT_POOrderTrace/app.config create mode 100644 Trinomab.PUR_RPT_POOrderTrace/packages.config create mode 100644 UnitTestProject.Python/UnitTestProject.Python.py create mode 100644 UnitTestProject.Python/UnitTestProject.Python.pyproj create mode 100644 VerifyTest/Ext_HomePagePlugin.cs create mode 100644 VerifyTest/MacVerify.cs create mode 100644 VerifyTest/Properties/AssemblyInfo.cs create mode 100644 VerifyTest/VerifyTest.csproj create mode 100644 代码格式修正.sql create mode 100644 多组织即时库存查询.sql create mode 100644 水务_其他出库单_退货_四舍五入.sql create mode 100644 珍妮采.sql diff --git a/AllOperation/AllEventDynamicFormPlugIn.cs b/AllOperation/AllEventDynamicFormPlugIn.cs new file mode 100644 index 0000000..206ad31 --- /dev/null +++ b/AllOperation/AllEventDynamicFormPlugIn.cs @@ -0,0 +1,581 @@ +using Kingdee.BOS.Util; +using System; +using System.ComponentModel; +namespace Jac.XkDemo.BOS.Business.PlugIn +{ + /// + /// 【表单插件】全事件 + /// + [Description("【表单插件】全事件"), HotUpdate] + public class AllEventDynamicFormPlugIn : Kingdee.BOS.Core.DynamicForm.PlugIn.AbstractDynamicFormPlugIn + { + #region event + public override void BeforeExportDataNew(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeExportDataNewArgs e) + { + PrintEventInfo("BeforeExportDataNew", e); + base.BeforeExportDataNew(e); + } + public override void CreateNewData(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BizDataEventArgs e) + { + PrintEventInfo("CreateNewData", e); + base.CreateNewData(e); + } + public override void AfterCreateNewData(System.EventArgs e) + { + PrintEventInfo("AfterCreateNewData", e); + base.AfterCreateNewData(e); + } + public override void OnChangeConvertRuleEnumList(Kingdee.BOS.Core.List.PlugIn.Args.ChangeConvertRuleEnumListEventArgs e) + { + PrintEventInfo("OnChangeConvertRuleEnumList", e); + base.OnChangeConvertRuleEnumList(e); + } + public override void AfterCreateModelData(System.EventArgs e) + { + PrintEventInfo("AfterCreateModelData", e); + base.AfterCreateModelData(e); + } + public override void BeforeControlDataBinder(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeControlDataBinder e) + { + PrintEventInfo("BeforeControlDataBinder", e); + base.BeforeControlDataBinder(e); + } + public override void BeforeEntryRowDataBinder(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeEntryRowDataBinderArgs e) + { + PrintEventInfo("BeforeEntryRowDataBinder", e); + base.BeforeEntryRowDataBinder(e); + } + public override void BeforeEntryBatchFill(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeBatchFillEventArgs e) + { + PrintEventInfo("BeforeEntryBatchFill", e); + base.BeforeEntryBatchFill(e); + } + public override void AfterEntryBatchFill(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterBatchFillEventArgs e) + { + PrintEventInfo("AfterEntryBatchFill", e); + base.AfterEntryBatchFill(e); + } + public override void BeforeCreateNewEntryRow(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeCreateNewEntryEventArgs e) + { + PrintEventInfo("BeforeCreateNewEntryRow", e); + base.BeforeCreateNewEntryRow(e); + } + public override void AfterCreateNewEntryRow(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.CreateNewEntryEventArgs e) + { + PrintEventInfo("AfterCreateNewEntryRow", e); + base.AfterCreateNewEntryRow(e); + } + public override void BeforeDeleteRow(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeDeleteRowEventArgs e) + { + PrintEventInfo("BeforeDeleteRow", e); + base.BeforeDeleteRow(e); + } + public override void AfterDeleteRow(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterDeleteRowEventArgs e) + { + PrintEventInfo("AfterDeleteRow", e); + base.AfterDeleteRow(e); + } + public override void BeforeUpdateValue(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeUpdateValueEventArgs e) + { + PrintEventInfo("BeforeUpdateValue", e); + base.BeforeUpdateValue(e); + } + public override void DataChanged(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e) + { + PrintEventInfo("DataChanged", e); + base.DataChanged(e); + } + public override void AfterCopyRow(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterCopyRowEventArgs e) + { + PrintEventInfo("AfterCopyRow", e); + base.AfterCopyRow(e); + } + public override void BeforeDeleteEntry(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeDeleteEntryEventArgs e) + { + PrintEventInfo("BeforeDeleteEntry", e); + base.BeforeDeleteEntry(e); + } + public override void AfterDeleteEntry(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterDeleteEntryEventArgs e) + { + PrintEventInfo("AfterDeleteEntry", e); + base.AfterDeleteEntry(e); + } + public override System.Collections.Generic.List GetTreeViewData(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.TreeNodeArgs e) + { + PrintEventInfo("GetTreeViewData", e); + return base.GetTreeViewData(e); + } + public override void BeforeSetItemValueByNumber(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeSetItemValueByNumberArgs e) + { + PrintEventInfo("BeforeSetItemValueByNumber", e); + base.BeforeSetItemValueByNumber(e); + } + public override void GroupSearchMenuPanelAction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.GroupSearchMenuPanelEventArgs e) + { + PrintEventInfo("GroupSearchMenuPanelAction", e); + base.GroupSearchMenuPanelAction(e); + } + public override void ProductsPanelAction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.ProductsPanelEventArgs e) + { + PrintEventInfo("ProductsPanelAction", e); + base.ProductsPanelAction(e); + } + public override void PreOpenForm(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.PreOpenFormEventArgs e) + { + PrintEventInfo("PreOpenForm", e); + base.PreOpenForm(e); + } + public override void OnInitialize(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.InitializeEventArgs e) + { + PrintEventInfo("OnInitialize", e); + base.OnInitialize(e); + } + public override void OnInitializeService(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.InitializeServiceEventArgs e) + { + PrintEventInfo("OnInitializeService", e); + base.OnInitializeService(e); + } + public override void OnSetBusinessInfo(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.SetBusinessInfoArgs e) + { + PrintEventInfo("OnSetBusinessInfo", e); + base.OnSetBusinessInfo(e); + } + public override void OnSetLayoutInfo(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.SetLayoutInfoArgs e) + { + PrintEventInfo("OnSetLayoutInfo", e); + base.OnSetLayoutInfo(e); + } + public override void OnCreateDataBinder(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.CreateDataBinderArgs e) + { + PrintEventInfo("OnCreateDataBinder", e); + base.OnCreateDataBinder(e); + } + public override void OnLoad(System.EventArgs e) + { + PrintEventInfo("OnLoad", e); + base.OnLoad(e); + } + public override void BeforeClosed(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeClosedEventArgs e) + { + PrintEventInfo("BeforeClosed", e); + base.BeforeClosed(e); + } + public override void BeforeFlexClosed(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeClosedEventArgs e) + { + PrintEventInfo("BeforeFlexClosed", e); + base.BeforeFlexClosed(e); + } + public override void AfterShowFlexForm(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterShowFlexFormEventArgs e) + { + PrintEventInfo("AfterShowFlexForm", e); + base.AfterShowFlexForm(e); + } + public override void Dispose() + { + PrintEventInfo("Dispose"); + base.Dispose(); + } + public override void BeforeBindData(System.EventArgs e) + { + PrintEventInfo("BeforeBindData", e); + base.BeforeBindData(e); + } + public override void AfterBindData(System.EventArgs e) + { + PrintEventInfo("AfterBindData", e); + base.AfterBindData(e); + } + public override void AfterUpdateViewState(System.EventArgs e) + { + PrintEventInfo("AfterUpdateViewState", e); + base.AfterUpdateViewState(e); + } + public override void OnTimerElapsed(System.EventArgs e) + { + PrintEventInfo("OnTimerElapsed", e); + base.OnTimerElapsed(e); + } + public override void OnQueryProgressValue(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.QueryProgressValueEventArgs e) + { + PrintEventInfo("OnQueryProgressValue", e); + base.OnQueryProgressValue(e); + } + public override void BarItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BarItemClickEventArgs e) + { + PrintEventInfo("BarItemClick", e); + base.BarItemClick(e); + } + public override void ContextMenuItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.ContextMenuItemClickEventArgs e) + { + PrintEventInfo("ContextMenuItemClick", e); + base.ContextMenuItemClick(e); + } + public override void EntryBarItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BarItemClickEventArgs e) + { + PrintEventInfo("EntryBarItemClick", e); + base.EntryBarItemClick(e); + } + public override void ToolBarItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BarItemClickEventArgs e) + { + PrintEventInfo("ToolBarItemClick", e); + base.ToolBarItemClick(e); + } + public override void AfterBarItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterBarItemClickEventArgs e) + { + PrintEventInfo("AfterBarItemClick", e); + base.AfterBarItemClick(e); + } + public override void AfterEntryBarItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterBarItemClickEventArgs e) + { + PrintEventInfo("AfterEntryBarItemClick", e); + base.AfterEntryBarItemClick(e); + } + public override void AfterToolBarItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterBarItemClickEventArgs e) + { + PrintEventInfo("AfterToolBarItemClick", e); + base.AfterToolBarItemClick(e); + } + public override void ButtonClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.ButtonClickEventArgs e) + { + PrintEventInfo("ButtonClick", e); + base.ButtonClick(e); + } + public override void ChangeHTmlTheme(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.HtmlThemeEventArgs e) + { + PrintEventInfo("ChangeHTmlTheme", e); + base.ChangeHTmlTheme(e); + } + public override void EntryButtonCellClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntryButtonCellClickEventArgs e) + { + PrintEventInfo("EntryButtonCellClick", e); + base.EntryButtonCellClick(e); + } + public override void AfterButtonClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterButtonClickEventArgs e) + { + PrintEventInfo("AfterButtonClick", e); + base.AfterButtonClick(e); + } + public override void TreeNodeClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.TreeNodeArgs e) + { + PrintEventInfo("TreeNodeClick", e); + base.TreeNodeClick(e); + } + public override void TreeNodeDoubleClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.TreeNodeArgs e) + { + PrintEventInfo("TreeNodeDoubleClick", e); + base.TreeNodeDoubleClick(e); + } + public override void TreeLoadData(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.TreeLoadDataArgs e) + { + PrintEventInfo("TreeLoadData", e); + base.TreeLoadData(e); + } + public override void BeforeDoAction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeDoActionEventArgs e) + { + PrintEventInfo("BeforeDoAction", e); + base.BeforeDoAction(e); + } + public override void AfterDoAction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterDoActionEventArgs e) + { + PrintEventInfo("AfterDoAction", e); + base.AfterDoAction(e); + } + public override void AuthPermissionBeforeF7Select(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AuthPermissionBeforeF7SelectEventArgs e) + { + PrintEventInfo("AuthPermissionBeforeF7Select", e); + base.AuthPermissionBeforeF7Select(e); + } + public override void BeforeF7Select(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeF7SelectEventArgs e) + { + PrintEventInfo("BeforeF7Select", e); + base.BeforeF7Select(e); + } + public override void AfterF7Select(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterF7SelectEventArgs e) + { + PrintEventInfo("AfterF7Select", e); + base.AfterF7Select(e); + } + public override void AfterQuickGetData(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterQuickGetDataEventArgs e) + { + PrintEventInfo("AfterQuickGetData", e); + base.AfterQuickGetData(e); + } + public override void AfterQuickSelect(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterQuickSelectEventArgs e) + { + PrintEventInfo("AfterQuickSelect", e); + base.AfterQuickSelect(e); + } + public override void BeforeFlexSelect(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeFlexSelectEventArgs e) + { + PrintEventInfo("BeforeFlexSelect", e); + base.BeforeFlexSelect(e); + } + public override void BeforeFilterGridF7Select(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeFilterGridF7SelectEventArgs e) + { + PrintEventInfo("BeforeFilterGridF7Select", e); + base.BeforeFilterGridF7Select(e); + } + public override void AfterShowCustomerPage(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterShowCustomerPageEventArgs e) + { + PrintEventInfo("AfterShowCustomerPage", e); + base.AfterShowCustomerPage(e); + } + public override void AfterShowForm(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterShowFormEventArgs e) + { + PrintEventInfo("AfterShowForm", e); + base.AfterShowForm(e); + } + public override void BeforeDoOperation(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeDoOperationEventArgs e) + { + PrintEventInfo("BeforeDoOperation", e); + base.BeforeDoOperation(e); + } + public override void BeforeOperAfterSelOrg(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeOperAfterSelOrgArgs e) + { + PrintEventInfo("BeforeOperAfterSelOrg", e); + base.BeforeOperAfterSelOrg(e); + } + public override void AfterDoOperation(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterDoOperationEventArgs e) + { + PrintEventInfo("AfterDoOperation", e); + base.AfterDoOperation(e); + } + public override void AfterConfirmOperation(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterConfirmOperationEventArgs e) + { + PrintEventInfo("AfterConfirmOperation", e); + base.AfterConfirmOperation(e); + } + public override void ListViewClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.ListViewClickArgs e) + { + PrintEventInfo("ListViewClick", e); + base.ListViewClick(e); + } + public override void ListViewAddFavorClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.ListViewClickArgs e) + { + PrintEventInfo("ListViewAddFavorClick", e); + base.ListViewAddFavorClick(e); + } + public override void ListViewClearClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.ListViewClickArgs e) + { + PrintEventInfo("ListViewClearClick", e); + base.ListViewClearClick(e); + } + public override void TreeDragDrop(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.TreeDragDropEventArgs e) + { + PrintEventInfo("TreeDragDrop", e); + base.TreeDragDrop(e); + } + public override void LanguageChanged(System.EventArgs e) + { + PrintEventInfo("LanguageChanged", e); + base.LanguageChanged(e); + } + public override void EntityRowClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e) + { + PrintEventInfo("EntityRowClick", e); + base.EntityRowClick(e); + } + public override void EntryCellFocued(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntryCellFocuedEventArgs e) + { + PrintEventInfo("EntryCellFocued", e); + base.EntryCellFocued(e); + } + public override void EntityRowDoubleClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e) + { + PrintEventInfo("EntityRowDoubleClick", e); + base.EntityRowDoubleClick(e); + } + public override void TabItemSelectedChange(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.TabItemSelectedChangeEventArgs e) + { + PrintEventInfo("TabItemSelectedChange", e); + base.TabItemSelectedChange(e); + } + public override void CustomEvents(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.CustomEventsArgs e) + { + PrintEventInfo("CustomEvents", e); + base.CustomEvents(e); + } + public override void RowExpanding(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e) + { + PrintEventInfo("RowExpanding", e); + base.RowExpanding(e); + } + public override void HeaderCellClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e) + { + PrintEventInfo("HeaderCellClick", e); + base.HeaderCellClick(e); + } + public override void DataUpdateBeginning() + { + PrintEventInfo("DataUpdateBeginning"); + base.DataUpdateBeginning(); + } + public override void DataUpdateEnd() + { + PrintEventInfo("DataUpdateEnd"); + base.DataUpdateEnd(); + } + public override void NaviOperAction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.NaviOperActionArgs e) + { + PrintEventInfo("NaviOperAction", e); + base.NaviOperAction(e); + } + public override void FieldLabelClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.FieldLabelClickArgs e) + { + PrintEventInfo("FieldLabelClick", e); + base.FieldLabelClick(e); + } + public override void FireEntityBlockPasting(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityBlockPastingEventArgs e) + { + PrintEventInfo("FireEntityBlockPasting", e); + base.FireEntityBlockPasting(e); + } + public override void BeforeF1Click(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.F1ClickArgs e) + { + PrintEventInfo("BeforeF1Click", e); + base.BeforeF1Click(e); + } + public override void BeforeImportData(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeImportDataArgs e) + { + PrintEventInfo("BeforeImportData", e); + base.BeforeImportData(e); + } + public override void ImportDataCollectFailInfo(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.ImportDataBeforeCollectFailInfoArgs e) + { + PrintEventInfo("ImportDataCollectFailInfo", e); + base.ImportDataCollectFailInfo(e); + } + public override void BeforeExportData(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeExportDataArgs e) + { + PrintEventInfo("BeforeExportData", e); + base.BeforeExportData(e); + } + public override void BeforeEntityExport(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BeforeEntityExportArgs e) + { + PrintEventInfo("BeforeEntityExport", e); + base.BeforeEntityExport(e); + } + public override void FireEntryCheck(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.FEntryCheckArgs e) + { + PrintEventInfo("FireEntryCheck", e); + base.FireEntryCheck(e); + } + public override void FireMicroBlogClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.FMicroBlogClickArgs e) + { + PrintEventInfo("FireMicroBlogClick", e); + base.FireMicroBlogClick(e); + } + public override void PortDataReceived(Kingdee.BOS.DataEntity.KDSerialPortEventArgs e) + { + PrintEventInfo("PortDataReceived", e); + base.PortDataReceived(e); + } + public override void MsgInnerControlEvent(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.MsgInnerControlEventArgs e) + { + PrintEventInfo("MsgInnerControlEvent", e); + base.MsgInnerControlEvent(e); + } + public override void GetFormTitle(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.GetFormTitleEventArgs e) + { + PrintEventInfo("GetFormTitle", e); + base.GetFormTitle(e); + } + public override void OnEntrySum(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntrySumEventArgs e) + { + PrintEventInfo("OnEntrySum", e); + base.OnEntrySum(e); + } + public override void OnQueryFlexFieldState(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.OnQueryFlexFieldStateEventArgs e) + { + PrintEventInfo("OnQueryFlexFieldState", e); + base.OnQueryFlexFieldState(e); + } + public override void OnPrepareDevPrintData(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.PreparePrintDevDataEventArgs e) + { + PrintEventInfo("OnPrepareDevPrintData", e); + base.OnPrepareDevPrintData(e); + } + public override void OnPrepareNotePrintData(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.PreparePrintDataEventArgs e) + { + PrintEventInfo("OnPrepareNotePrintData", e); + base.OnPrepareNotePrintData(e); + } + public override void OnPrepareNotePrintQueryParam(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.PrepareNotePrintQueryParamEventArgs e) + { + PrintEventInfo("OnPrepareNotePrintQueryParam", e); + base.OnPrepareNotePrintQueryParam(e); + } + public override void OnQueryDynamicColumns(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.QueryDynamicColumnsEventArgs e) + { + PrintEventInfo("OnQueryDynamicColumns", e); + base.OnQueryDynamicColumns(e); + } + public override void OnAfterPrint(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterPrintEventArgs e) + { + PrintEventInfo("OnAfterPrint", e); + base.OnAfterPrint(e); + } + public override System.Collections.Generic.List GetValidNoteTemplates(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.ValidNoteTemplatesEventArgs e) + { + PrintEventInfo("GetValidNoteTemplates", e); + return base.GetValidNoteTemplates(e); + } + public override void OnAfterWebApiOperation(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterWebApiOperationArgs e) + { + PrintEventInfo("OnAfterWebApiOperation", e); + base.OnAfterWebApiOperation(e); + } + public override void OnBeforeWebApiOperation(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.AfterWebApiOperationArgs e) + { + PrintEventInfo("OnBeforeWebApiOperation", e); + base.OnBeforeWebApiOperation(e); + } + #endregion + #region private method + /// + /// 事件执行次数计数器 + /// + private int counter; + /// + /// 事件执行次数计数器 + /// + private int Counter + { + get { return ++counter; } + } + /// + /// 输出事件执行日志 + /// + /// 事件名称 + /// 事件参数 + private void PrintEventInfo(string eventName, params object[] args) + { + var formId = GetFormId(); + var parameters = string.Empty; + try + { + //parameters = Newtonsoft.Json.JsonConvert.SerializeObject(args);// 性能较差,可能会导致页面假死 + } + catch + { + } + var log = string.Format("序号:{0},执行时间:{1},表单Id:{2},事件名称:{3},事件参数:{4}", Counter, DateTime.Now.ToString("yyyy -MM-dd HH:mm:ss.fff"), formId, eventName, parameters); + System.Diagnostics.Debug.Print(log); + Kingdee.BOS.Log.Logger.Error("EVENT", log, null); + } + /// + /// 获取业务对象标识 + /// + /// + private string GetFormId() + { + var formId = string.Empty; + if (this.View != null && this.View.BillBusinessInfo != null) + { + formId = this.View.BillBusinessInfo.GetForm().Id; + } + return formId; + } + #endregion + } +} diff --git a/AllOperation/AllOperation.csproj b/AllOperation/AllOperation.csproj new file mode 100644 index 0000000..91a19f1 --- /dev/null +++ b/AllOperation/AllOperation.csproj @@ -0,0 +1,59 @@ + + + + + Debug + AnyCPU + {DE8419DB-4979-4AF6-830D-73F6B793CC31} + Library + Properties + AllOperation + AllOperation + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AllOperation/Properties/AssemblyInfo.cs b/AllOperation/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0b5ab37 --- /dev/null +++ b/AllOperation/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("AllOperation")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AllOperation")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("de8419db-4979-4af6-830d-73f6b793cc31")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CY.AR_RecMatchFilter/CY.AR_RecMatchFilter.csproj b/CY.AR_RecMatchFilter/CY.AR_RecMatchFilter.csproj new file mode 100644 index 0000000..3ca2e76 --- /dev/null +++ b/CY.AR_RecMatchFilter/CY.AR_RecMatchFilter.csproj @@ -0,0 +1,109 @@ + + + + + Debug + AnyCPU + {7822C382-D01D-41A5-A94A-4A953DD178A7} + Library + Properties + CY.AR_RecMatchFilter + CY.AR_RecMatchFilter + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Business.DynamicForm.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.VerificationHelper.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.FIN.AP.Business.PlugIn.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.FIN.AP.ServiceHelper.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.FIN.App.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.FIN.AR.Business.PlugIn.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.FIN.Business.PlugIn.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.FIN.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.FIN.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.FIN.ServiceHelper.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CY.AR_RecMatchFilter/Class1.cs b/CY.AR_RecMatchFilter/Class1.cs new file mode 100644 index 0000000..8251e54 --- /dev/null +++ b/CY.AR_RecMatchFilter/Class1.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace CY.AR_RecMatchFilter +{ + internal class Class1 + { + } +} diff --git a/CY.AR_RecMatchFilter/MatchFilterStencilEditEx.cs b/CY.AR_RecMatchFilter/MatchFilterStencilEditEx.cs new file mode 100644 index 0000000..b20b010 --- /dev/null +++ b/CY.AR_RecMatchFilter/MatchFilterStencilEditEx.cs @@ -0,0 +1,78 @@ +using Kingdee.BOS.Core.CommonFilter; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Permission.Objects; +using Kingdee.BOS.Util; +using Kingdee.K3.FIN.Business.PlugIn.Match; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace CY.AR_RecMatchFilter +{ + [Description("表单插件"), HotUpdate] + public class MatchFilterStencilEditEx : MatchFilterStencilEdit + { + public override void BeforeSetItemValueByNumber(BeforeSetItemValueByNumberArgs e) + { + base.BeforeSetItemValueByNumber(e); + } + + public override void BeforeFilterGridF7Select(BeforeFilterGridF7SelectEventArgs e) + { + base.BeforeFilterGridF7Select(e); + string text; + if ((text = e.FieldKey.ToUpperInvariant()) == null || !(text == "F_YECK_Base")) + { + return; + } + + string[] array = View.Model.DataObject["FBillSelect"].ToString().Split(','); + if (array.Length > 0) + { + string text2 = ""; + for (int i = 0; i < array.Length; i++) + { + text2 = text2 + "'" + array[i] + "',"; + } + + e.ListFilterParameter.Filter = $"FBillFormID in ({text2.Substring(0, text2.Length - 1)})"; + } + } + + public override void BeforeF7Select(BeforeF7SelectEventArgs e) + { + base.BeforeF7Select(e); + switch (e.FieldKey.ToUpperInvariant()) + { + case "FINVOICECUST": + { + List list2 = baseDataTempTable; + string filterSQLByTempBaseDataTable2 = GetFilterSQLByTempBaseDataTable("BD_Customer", list2); + if (!string.IsNullOrWhiteSpace(filterSQLByTempBaseDataTable2)) + { + if (ObjectUtils.IsNullOrEmptyOrWhiteSpace((object)e.ListFilterParameter.Filter)) + { + e.ListFilterParameter.Filter = filterSQLByTempBaseDataTable2; + break; + } + + IRegularFilterParameter listFilterParameter2 = e.ListFilterParameter; + listFilterParameter2.Filter = listFilterParameter2.Filter + " AND " + filterSQLByTempBaseDataTable2; + } + + break; + } + } + + //系统自动根据字段标识拼接好的过滤表达式 + var filterStr = this.CommonFilterModel.FilterObject.GetFilterSQLString(this.Context); + //条件过滤行原始数据,含比较符 + var filterRows = this.CommonFilterModel.FilterObject.FilterRows; + //高级过滤原始行数据 + var advanceFilterRows = this.CommonFilterModel.FilterObject.AdvancedFilterRows; + + } + } +} diff --git a/CY.AR_RecMatchFilter/Properties/AssemblyInfo.cs b/CY.AR_RecMatchFilter/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9696a3e --- /dev/null +++ b/CY.AR_RecMatchFilter/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("CY.AR_RecMatchFilter")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CY.AR_RecMatchFilter")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("7822c382-d01d-41a5-a94a-4a953dd178a7")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CY.AR_RecMatchFilter/RecSpecialEditEx.cs b/CY.AR_RecMatchFilter/RecSpecialEditEx.cs new file mode 100644 index 0000000..22c3f4a --- /dev/null +++ b/CY.AR_RecMatchFilter/RecSpecialEditEx.cs @@ -0,0 +1,498 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Linq; +using System.Text; +using Kingdee.BOS.Contracts; +using Kingdee.BOS.Core.CommonFilter; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Core.Metadata.FieldElement; +using Kingdee.BOS.Core.Permission; +using Kingdee.BOS.JSON; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Orm.Metadata.DataEntity; +using Kingdee.BOS.Resource; +using Kingdee.BOS.ServiceHelper; +using Kingdee.BOS.Util; +using Kingdee.K3.FIN.AP.ServiceHelper; +using Kingdee.K3.FIN.Business.PlugIn.Match; +using Kingdee.K3.FIN.Core; +using Kingdee.K3.FIN.Core.Match; +using Kingdee.K3.FIN.Core.Match.Object; +using Kingdee.K3.FIN.Core.Object; +using Kingdee.K3.FIN.ServiceHelper; +using Newtonsoft.Json; +using static Kingdee.K3.FIN.Core.Match.MatchBillFrom.BillEntryKey; + +namespace CY.AR_RecMatchFilter +{ + [Description("表单插件"), HotUpdate] + public class RecSpecialEditEx : SpecialStencilEdit + { + protected override string MatchType => "3"; + + protected override string TitelInfo => ResManager.LoadKDString("特殊业务核销主要处理异常业务的核销,例如:往来单位不同的单据间的核销;单据尾数的注销等。如果是正常的核销业务,请通过匹配条件核销进行。请确认是否要继续?", "003186000003556", (SubSystemType)4, new object[0]); + + protected override string FilterFromId => "AR_RecMatchFilter"; + + protected override string MatchWizardFromId => "AR_Matck"; + + protected override string PermissonFormID => "AR_RecSpecial"; + + public RecSpecialEditEx() + { + SetFieldValue.Add("FTheMatchAmount", base.SetAmountValue); + SetFieldValue.Add("FMatchAmount", base.SetAmountValue); + SetFieldValue.Add("FMaxMatchAmount", base.SetAmountValue); + SetFieldValue.Add("FNOTMatchAmount", base.SetAmountValue); + SetFieldValue.Add("FWriteMatchAmount", base.SetAmountValue); + SetFieldValue.Add("FIVMATCHAMOUNTFOR", base.SetAmountValue); + AmountFields.Add("FTheMatchAmount"); + AmountFields.Add("FMatchAmount"); + AmountFields.Add("FMaxMatchAmount"); + AmountFields.Add("FNOTMatchAmount"); + AmountFields.Add("FWriteMatchAmount"); + AmountFields.Add("FIVMATCHAMOUNTFOR"); + sSystemFormID = "AR_SystemParameter"; + sumField.Add("FSumAmount"); + sumField.Add("FMatchSumAmount"); + sumField.Add("FCurMatchSumAmount"); + sumField.Add("FCurMatchSumAmountFor"); + } + + public override void DataChanged(DataChangedEventArgs e) + { + if (e.Field.Key.Equals("FTheIsMatch" + DebitSuffix)) + { + SelectDataChanged(e.Row, DebitSuffix); + } + else if (e.Field.Key.Equals("FTheIsMatch" + CrebitSuffix)) + { + SelectDataChanged(e.Row, CrebitSuffix); + } + + string suffix = ""; + if (e.Field.Key.Equals("FTheMatchAmount" + DebitSuffix) || e.Field.Key.Equals("FTheIsMatch" + DebitSuffix)) + { + suffix = DebitSuffix; + } + else if (e.Field.Key.Equals("FTheMatchAmount" + CrebitSuffix) || e.Field.Key.Equals("FTheIsMatch" + CrebitSuffix)) + { + suffix = CrebitSuffix; + } + + switch (e.Field.Key.ToUpperInvariant()) + { + case "FTHEISMATCHC": + case "FTHEISMATCHD": + SetTotalAmount(bolClear: false, suffix); + break; + case "FTHEMATCHAMOUNTC": + case "FTHEMATCHAMOUNTD": + SetTotalAmount(bolClear: false, suffix); + break; + } + } + + private void SetTotalAmount(bool bolClear, string suffix) + { + decimal num = 0m; + decimal num2 = 0m; + decimal num3 = 0m; + decimal num4 = 0m; + short num5 = 0; + short num6 = 0; + string text = ""; + if (!bolClear) + { + string text2 = ""; + if (suffix == "C") + { + text2 = "FCreditEntry"; + text = "FMatchAmount"; + } + else + { + text2 = "FDebitEntry"; + text = "FMatchAmount"; + } + + object obj = View.Model.DataObject[text2]; + DynamicObjectCollection val = (DynamicObjectCollection)((obj is DynamicObjectCollection) ? obj : null); + if (val != null && ((Collection)(object)val).Count > 0) + { + foreach (DynamicObject item in (Collection)(object)val) + { + if (Convert.ToBoolean(item["FTheIsMatch" + suffix])) + { + decimal num7 = 0m; + decimal num8 = 0m; + decimal num9 = 0m; + decimal num10 = 0m; + decimal num11 = 0m; + decimal num12 = 0m; + short num13 = Convert.ToInt16(item["FAmountDigits" + suffix]); + num5 = ((num5 < num13) ? num13 : num5); + num7 = Convert.ToDecimal(item[text + suffix]); + num8 = Convert.ToDecimal(item["FWriteMatchAmount" + suffix]); + num9 = Convert.ToDecimal(item["FTheMatchAmount" + suffix]); + num10 = Convert.ToDecimal(item["FWRITTENOFFAMOUNT" + suffix]); + short num14 = Convert.ToInt16(item["FAmount_LCDigits" + suffix]); + num6 = ((num6 < num14) ? num14 : num6); + num11 = Convert.ToDecimal(item["FMatchAmountLocal" + suffix]); + bool flag = false; + if (num7 - num8 - num9 == 0m) + { + flag = true; + } + + decimal num15 = Convert.ToDecimal(item["FEXCHANGERATE" + suffix]); + if (num15 == 0m) + { + num15 = num11 / num7; + } + + num12 = (flag ? (num11 - num10) : (num9 * num15)); + if (item["FSOURCEFORMID" + suffix].ToString().ToUpperInvariant().Equals("AP_REFUNDBILL") || item["FSOURCEFORMID" + suffix].ToString().ToUpperInvariant().Equals("AR_REFUNDBILL")) + { + num += num7 * -1m; + num2 += num8 * -1m; + num3 += num9 * -1m; + num4 -= num12; + } + else + { + num += num7; + num2 += num8; + num3 += num9; + num4 += num12; + } + } + } + } + } + + DecimalFieldAppearance decimalfieldAppearance = (DecimalFieldAppearance)View.GetFieldEditor("FSumAmount" + suffix, 0).ControlAppearance; + View.StyleManager.SetScale(decimalfieldAppearance, num5); + View.Model.SetValue("FSumAmount" + suffix, num); + DecimalFieldAppearance decimalfieldAppearance2 = (DecimalFieldAppearance)View.GetFieldEditor("FMatchSumAmount" + suffix, 0).ControlAppearance; + View.StyleManager.SetScale(decimalfieldAppearance2, num5); + View.Model.SetValue("FMatchSumAmount" + suffix, num2); + DecimalFieldAppearance decimalfieldAppearance3 = (DecimalFieldAppearance)View.GetFieldEditor("FCurMatchSumAmount" + suffix, 0).ControlAppearance; + View.StyleManager.SetScale(decimalfieldAppearance3, num5); + View.Model.SetValue("FCurMatchSumAmount" + suffix, num3); + View.UpdateView("FSumAmount" + suffix); + View.UpdateView("FMatchSumAmount" + suffix); + View.UpdateView("FCurMatchSumAmount" + suffix); + if (View.OpenParameter.FormId == "AR_RecSpecial" || View.OpenParameter.FormId == "AP_PaySpecial") + { + DecimalFieldAppearance decimalfieldAppearance4 = (DecimalFieldAppearance)View.GetFieldEditor("FCurMatchSumAmountFor" + suffix, 0).ControlAppearance; + View.StyleManager.SetScale(decimalfieldAppearance4, num6); + View.Model.SetValue("FCurMatchSumAmountFor" + suffix, num4); + View.UpdateView("FCurMatchSumAmountFor" + suffix); + } + } + + public override void BeforeUpdateValue(BeforeUpdateValueEventArgs e) + { + IsAllowSelected(e); + SetGenBussinessWhenBeforeUpdate(e); + string text = ""; + if (e.Key.Equals("FTheMatchAmount" + DebitSuffix)) + { + text = DebitSuffix; + e.Cancel = TheMatchDataChanged(e, text); + } + else if (e.Key.Equals("FTheMatchAmount" + CrebitSuffix)) + { + text = CrebitSuffix; + e.Cancel = TheMatchDataChanged(e, text); + } + } + + protected override void SetSumFieldValue(string entitySuffix, Dictionary datas) + { + } + + protected override int FieldLocked(MatchFieldConfig fieldConfig) + { + if (fieldConfig.FieldName.Equals("FTheIsMatch", StringComparison.OrdinalIgnoreCase) || fieldConfig.FieldName.Equals("FTheMatchAmount", StringComparison.OrdinalIgnoreCase) || fieldConfig.FieldName.Equals("FAbstract", StringComparison.OrdinalIgnoreCase)) + { + return 0; + } + + return base.FieldLocked(fieldConfig); + } + + protected override int FireUpdateEvent(MatchFieldConfig fieldConfig) + { + if (fieldConfig.FieldName.Equals("FTheIsMatch", StringComparison.OrdinalIgnoreCase) || fieldConfig.FieldName.Equals("FTheMatchAmount", StringComparison.OrdinalIgnoreCase)) + { + return 1; + } + + return base.FireUpdateEvent(fieldConfig); + } + + protected override void ResultRowData(MatchBillData data, DynamicObject enrtyData, string suffix) + { + data.FieldValues["FTheMatchAmount"] = enrtyData["FTheMatchAmount" + suffix]; + data.FieldValues["FMaxMatchAmount"] = enrtyData["FMaxMatchAmount" + suffix]; + } + + protected override void SelectReverse(MatchBillData data) + { + data.FieldValues["FTheIsMatch"] = "0"; + data.FieldValues["FTheMatchAmount"] = 0; + data.FieldValues["FMaxMatchAmount"] = data.FieldValues["FWriteMatchAmount"]; + } + + private void SelectDataChanged(int row, string suffix) + { + decimal num = Convert.ToDecimal(View.Model.GetValue("FMatchAmount" + suffix, row)); + decimal num2 = Convert.ToDecimal(View.Model.GetValue("FWriteMatchAmount" + suffix, row)); + if (Convert.ToBoolean(View.Model.GetValue("FTheIsMatch" + suffix, row))) + { + View.Model.SetValue("FTheMatchAmount" + suffix, num - num2, row); + View.Model.SetValue("FMaxMatchAmount" + suffix, num, row); + } + else + { + View.Model.SetValue("FTheMatchAmount" + suffix, 0, row); + View.Model.SetValue("FMaxMatchAmount" + suffix, num2, row); + } + } + + private bool TheMatchDataChanged(BeforeUpdateValueEventArgs e, string suffix) + { + if (Convert.ToString(e.Key).Equals(FGenDate)) + { + return e.Cancel; + } + + decimal num = Convert.ToDecimal(View.Model.GetValue("FMatchAmount" + suffix, e.Row)); + decimal num2 = Convert.ToDecimal(View.Model.GetValue("FWriteMatchAmount" + suffix, e.Row)); + decimal num3 = num - num2; + decimal num4 = Convert.ToDecimal(e.Value); + if (num4 == 0m) + { + View.Model.SetValue("FTheIsMatch" + suffix, false, e.Row); + } + else + { + View.Model.SetValue("FTheIsMatch" + suffix, true, e.Row); + if (num > 0m && (num4 > num3 || num4 < 0m)) + { + View.ShowMessage(ResManager.LoadKDString("本次核销金额不能大于未核销金额并且不能小于0!", "003186000003559", (SubSystemType)4, new object[0])); + return true; + } + + if (num < 0m && (num4 < num3 || num4 > 0m)) + { + View.ShowMessage(ResManager.LoadKDString("本次核销金额不能小于未核销金额并且不能大于0!", "003186000003562", (SubSystemType)4, new object[0])); + return true; + } + } + + View.Model.SetValue("FMaxMatchAmount" + suffix, num4 + num2, e.Row); + return false; + } + + public override void AfterBindData(EventArgs e) + { + base.AfterBindData(e); + GetStartDateAndCloseDateInfo(); + } + + public override void BarItemClick(BarItemClickEventArgs e) + { + switch (e.BarItemKey) + { + case "tbVerify": + if (!CheckPermission("580dcd5cb8fbca")) + { + View.ShowMessage(ResManager.LoadKDString("没有手工核销的权限", "003192000038640", (SubSystemType)4, new object[0])); + return; + } + + break; + case "tbVerifyS": + if (!CheckPermission("580dcd73b8fbcc")) + { + View.ShowMessage(ResManager.LoadKDString("没有特殊核销的权限", "003192000038641", (SubSystemType)4, new object[0])); + return; + } + + break; + case "tbBDHandle": + if (!CheckPermission("5e0ead240e5818")) + { + View.ShowMessage(ResManager.LoadKDString("没有坏账核销的权限", "003186000022353", (SubSystemType)4, new object[0])); + return; + } + + break; + } + + base.BarItemClick(e); + } + + private bool CheckPermission(string permissionItem) + { + List list = new List(); + HashSet hashSet = new HashSet(); + if (base.DebitDate != null) + { + object obj = View.Model.DataObject[DebitEntryKey]; + DynamicObjectCollection val = (DynamicObjectCollection)((obj is DynamicObjectCollection) ? obj : null); + if (val != null) + { + foreach (DynamicObject item in (Collection)(object)val) + { + long key = Convert.ToInt64(item["FEntryId" + DebitSuffix]); + if (Convert.ToBoolean(item["FTheIsMatch" + DebitSuffix])) + { + hashSet.Add(base.DebitDate[key].SettOrgId); + } + } + } + } + + if (base.CrebitDate != null) + { + object obj2 = View.Model.DataObject[CreditEntryKey]; + DynamicObjectCollection val = (DynamicObjectCollection)((obj2 is DynamicObjectCollection) ? obj2 : null); + if (val != null) + { + foreach (DynamicObject item2 in (Collection)(object)val) + { + long key2 = Convert.ToInt64(item2["FEntryId" + CrebitSuffix]); + if (Convert.ToBoolean(item2["FTheIsMatch" + CrebitSuffix])) + { + hashSet.Add(base.CrebitDate[key2].SettOrgId); + } + } + } + } + + if (hashSet.Count > 0) + { + foreach (long item3 in hashSet) + { + BusinessObject businessObject = new BusinessObject(item3); + businessObject.Id = View.BillBusinessInfo.GetForm().Id; + list.Add(businessObject); + } + } + else + { + BusinessObject businessObject = new BusinessObject(); + businessObject.Id = View.BillBusinessInfo.GetForm().Id; + list.Add(businessObject); + } + + List list2 = PermissionServiceHelper.FuncPermissionAuth(View.Context, (IEnumerable)list, permissionItem); + bool result = true; + foreach (PermissionAuthResult item4 in list2) + { + if (!item4.Passed) + { + result = false; + break; + } + } + + return result; + } + + private void GetStartDateAndCloseDateInfo() + { + DynamicObjectCollection lastestCloseAcctDate = ClosingAccountServiceHelper.GetLastestCloseAcctDate(base.Context, lstSettlesOrgPermissionIDs, "AR"); + foreach (DynamicObject item in (Collection)(object)lastestCloseAcctDate) + { + BillExtension.AddWithoutExists((IDictionary)CloseDateInfos, Convert.ToInt64(item["FOrgID"]), Convert.ToDateTime(item["FEndDate"])); + } + + DynamicObjectCollection paramterByCtgOrgAcct = CommonServiceHelper.GetParamterByCtgOrgAcct(base.Context, "AR", 0L, lstSettlesOrgPermissionIDs, "ARStartDate"); + foreach (DynamicObject item2 in (Collection)(object)paramterByCtgOrgAcct) + { + BillExtension.AddWithoutExists((IDictionary)StartDateInfos, Convert.ToInt64(item2["FOrgID"]), Convert.ToDateTime(item2["FValue"])); + } + + SetDateValueForOrgID(); + } + + protected override void GetBillData(string billDirection, FilterParameter filterPara) + { + base.GetBillData(billDirection, filterPara); + + //IMatchService service = ServiceFactory.GetService(this.Context); + } + + protected override void ShowFilterBill(string billDirection) + { + base.ShowFilterBill(billDirection); + } + + protected override void RefreshBillData(string billDirection, FilterParameter filterPara) + { + var filter = filterPara.CustomFilter; + var isHandlingGroupCustomer = IsHandlingGroupCustomer(filter); + var jsonStr = JsonConvert.SerializeObject(filterPara); + IEnumerable enumerable = from DynamicProperty dp in filter.DynamicObjectType.Properties + where (dp.Name.EndsWith("From", StringComparison.InvariantCultureIgnoreCase) || dp.Name.EndsWith("To", StringComparison.InvariantCultureIgnoreCase)) && (!isHandlingGroupCustomer || (isHandlingGroupCustomer && dp.Name != "FCONTACTUNITFrom" && dp.Name != "FCONTACTUNITTo")) + select dp; + //Dictionary fieldValues = this.FieldNames.BillEntrys["Head"].FieldValues; + IMetaDataService service = ServiceFactory.GetService(this.Context); + FormMetadata formMetadata = (FormMetadata)service.Load(this.Context, this.FilterFromId, true); + foreach (DynamicProperty dynamicProperty in enumerable) + { + object obj = filter[dynamicProperty]; + Field field = formMetadata.BusinessInfo.GetField(dynamicProperty.Name); + //if (fieldValues.Any((KeyValuePair p) => p.Key.Equals(field.FieldName, StringComparison.OrdinalIgnoreCase)) + // && (!flag || (!field.Key.ToUpperInvariant().Equals("FCONTACTUNITFROM") && !field.Key.ToUpperInvariant().Equals("FCONTACTUNITTO")))) + //{ + // MatchBillFrom.BillEntryKey.FieldValue fieldValue = fieldValues[field.FieldName]; + // if (!string.IsNullOrWhiteSpace(fieldValue.FieldKey)) + // { + // if (obj is DynamicObject) + // { + // string text3 = (obj as DynamicObject)["Number"] as string; + // if (!string.IsNullOrEmpty(text3)) + // { + // if (dynamicProperty.Name.IndexOf("From") > 0) + // { + // stringBuilder.AppendFormat(" and {0}.FNumber >= '" + text3 + "'", fieldValue.FieldKey); + // } + // else if (dynamicProperty.Name.IndexOf("To") > 0) + // { + // stringBuilder.AppendFormat(" and {0}.FNumber <= '" + text3 + "'", fieldValue.FieldKey); + // } + // } + // } + // else if (obj is DateTime) + // { + // if (dynamicProperty.Name.IndexOf("From") > 0 && Convert.ToDateTime(obj) > DateTime.MinValue && Convert.ToDateTime(obj) < DateTime.MaxValue) + // { + // stringBuilder.AppendFormat(" and {0} >= {1} ", fieldValue.FieldKey, "{ts'" + obj.ToString() + "'}"); + // } + // else if (dynamicProperty.Name.IndexOf("To") > 0 && Convert.ToDateTime(obj) > DateTime.MinValue && Convert.ToDateTime(obj) < DateTime.MaxValue) + // { + // stringBuilder.AppendFormat(" and {0} <= {1} ", fieldValue.FieldKey, "{ts'" + obj.ToString() + "'}"); + // } + // } + // } + //} + } + base.RefreshBillData(billDirection, filterPara); + } + + public bool IsHandlingGroupCustomer(DynamicObject filter) + { + return filter.DynamicObjectType.Properties.Contains("FCONTACTUNITTYPE") && string.Equals(Convert.ToString(filter["FCONTACTUNITTYPE"]), "BD_Customer", StringComparison.OrdinalIgnoreCase) && filter.DynamicObjectType.Properties.Contains("FGroupCustomer") && Convert.ToBoolean(filter["FGroupCustomer"]) && filter.DynamicObjectType.Properties.Contains("FCONTACTUNITFrom") && filter.DynamicObjectType.Properties.Contains("FCONTACTUNITTo"); + } + } +} diff --git a/CY.AR_RecMatchFilter/SpecialStencilEditEx.cs b/CY.AR_RecMatchFilter/SpecialStencilEditEx.cs new file mode 100644 index 0000000..a4b1c52 --- /dev/null +++ b/CY.AR_RecMatchFilter/SpecialStencilEditEx.cs @@ -0,0 +1,2308 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using Kingdee.BOS; +using Kingdee.BOS.Contracts; +using Kingdee.BOS.Core.CommonFilter; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Core.Metadata.ControlElement; +using Kingdee.BOS.Core.Metadata.FieldElement; +using Kingdee.BOS.Core.Metadata.FormElement; +using Kingdee.BOS.Core.NetworkCtrl; +using Kingdee.BOS.Core.Permission.Objects; +using Kingdee.BOS.Core.SqlBuilder; +using Kingdee.BOS.Core.Validation; +using Kingdee.BOS.JSON; +using Kingdee.BOS.Model.CommonFilter; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Orm.Metadata.DataEntity; +using Kingdee.BOS.Resource; +using Kingdee.BOS.ServiceHelper; +using Kingdee.BOS.Util; +using Kingdee.BOS.VerificationHelper; +using Kingdee.K3.FIN.Core; +using Kingdee.K3.FIN.Core.Match; +using Kingdee.K3.FIN.Core.Match.Object; +using Kingdee.K3.FIN.Core.Object; +using Kingdee.K3.FIN.Core.Object.ARAP; +using Kingdee.K3.FIN.Core.Parameters; +using Kingdee.K3.FIN.ServiceHelper; +using System.Data; +using Kingdee.K3.FIN.Contracts; +using ServiceFactory = Kingdee.K3.FIN.Contracts.ServiceFactory; +using IPermissionService = Kingdee.BOS.Contracts.IPermissionService; + +namespace Kingdee.K3.FIN.Business.PlugIn.Match +{ + + + + [Description("特殊业务核销模版")] + public class SpecialStencilEditEx : MatchPublicBillEdit + { + private Dictionary> _dictField; + + private Dictionary> _dictFieldApp; + + private BusinessInfo _businessInfo; + + private LayoutInfo _layoutInfo; + + private Dictionary _debitData; + + private Dictionary _creditData; + + public DateTime _DebitDataTime = DateTime.Now; + + public DateTime _CreditDataTime = DateTime.Now; + + private FilterParameter _debitFilterPara; + + private FilterParameter _creditFilterPara; + + private FormOperation formOperation; + + private List networkCtrlResults; + + private DateTime _maxDate = default(DateTime); + + private bool _isDifCurrency; + + private long lMethodID; + + private CheckResult CheckResult; + + private Dictionary temptable = new Dictionary(); + + private List FormIds = new List { "AP_PAYBILL", "AP_REFUNDBILL", "AR_RECEIVEBILL", "AR_REFUNDBILL" }; + + protected string MatchScheme = "FMatchScheme"; + + public long SelectedSchemeId; + + public bool setMatchScheme; + + protected string DebitEntryKey = "FDebitEntry"; + + protected string CreditEntryKey = "FCreditEntry"; + + protected string DebitSuffix = "D"; + + protected string CrebitSuffix = "C"; + + protected MatchFieldConfig[] Configs; + + protected List lstOrgPermisinfosAll; + + protected DynamicObjectCollection permissionOrgSettleInfos; + + protected List lstSettlesOrgPermissionIDs; + + protected Dictionary CloseDateInfos = new Dictionary(); + + protected Dictionary StartDateInfos = new Dictionary(); + + private Dictionary _closeDateValueByOrgID = new Dictionary(); + + protected string FGenDate = "FGenDate"; + + protected string sSystemFormID = string.Empty; + + private Dictionary orgMatchRangeFromDic; + + private Dictionary orgMatchRangeToDic; + + private Dictionary orgIdRangeInfo; + + private StringBuilder sbMessage; + + private bool isRefresh; + + private bool firstEntry = true; + + protected bool isBadDebt; + + public bool IsDifCurrency + { + get + { + return _isDifCurrency; + } + set + { + _isDifCurrency = value; + } + } + + protected virtual string TitelInfo => ResManager.LoadKDString("特殊业务核销主要处理异常业务的核销,例如:数量不同的单据间的核销;单据尾数的注销等。如果是正常的核销业务,请通过匹配条件核销进行。请确认是否要继续?", "003192000009376", SubSystemType.FIN); + + protected Dictionary DebitDate + { + get + { + return _debitData; + } + set + { + _debitData = value; + } + } + + protected Dictionary CrebitDate + { + get + { + return _creditData; + } + set + { + _creditData = value; + } + } + + protected FilterParameter DebitFilterPara + { + get + { + return _debitFilterPara; + } + set + { + _debitFilterPara = value; + } + } + + protected FilterParameter CreditFilterPara + { + get + { + return _creditFilterPara; + } + set + { + _creditFilterPara = value; + } + } + + protected virtual string FilterFromId => "AP_PayMatchFilter"; + + protected virtual string MatchWizardFromId => "AP_PayMatck"; + + protected virtual string MatchBillSelect => "AP_MatchBillSelect"; + + protected virtual string PermissonFormID => "AP_PaySpecial"; + + public DateTime MaxDate + { + get + { + return _maxDate; + } + set + { + _maxDate = value; + } + } + + protected Dictionary SetCloseDateValueByOrgID + { + get + { + return _closeDateValueByOrgID; + } + set + { + _closeDateValueByOrgID = value; + } + } + + protected DateTime MinGenBussinessDate { get; set; } + + public SpecialStencilEditEx() + { + AmountFields.Add("FALLAMOUNTFOR"); + AmountFields.Add("FNOTAXAMOUNT"); + AmountFields.Add("FMATCHNOTAXAMOUNT"); + AmountFields.Add("FHADMATCHAMOUNTFOR"); + AmountFields.Add("FSPECIALAMOUNTFOR"); + QTYFields.Add("FVALUATIONQTY"); + QTYFields.Add("FSPECIALQTY"); + Suffixs.Add(DebitSuffix); + Suffixs.Add(CrebitSuffix); + SetFieldValue.Add("FALLAMOUNTFOR", base.SetAmountValue); + SetFieldValue.Add("FVALUATIONQTY", base.SetQtyValue); + SetFieldValue.Add("FNOTAXAMOUNT", base.SetAmountValue); + SetFieldValue.Add("FMATCHNOTAXAMOUNT", base.SetAmountValue); + SetFieldValue.Add("FHADMATCHAMOUNTFOR", base.SetAmountValue); + SetFieldValue.Add("FSPECIALQTY", base.SetQtyValue); + SetFieldValue.Add("FSPECIALAMOUNTFOR", base.SetAmountValue); + } + + public override void PreOpenForm(PreOpenFormEventArgs e) + { + base.PreOpenForm(e); + string text = ""; + if (e.OpenParameter != null && e.OpenParameter.FormMetaData != null && e.OpenParameter.FormMetaData.BusinessInfo != null && e.OpenParameter.FormMetaData.BusinessInfo.GetForm() != null && e.OpenParameter.FormMetaData.BusinessInfo.GetForm().Name != null) + { + text = e.OpenParameter.FormMetaData.BusinessInfo.GetForm().Name.ToString(); + } + + LicenseVerifier.CheckViewOnlyOperation(e.Context, text); + } + + public override void BeforeBindData(EventArgs e) + { + string id = View.Model.BusinessInfo.GetForm().Id; + if (firstEntry) + { + firstEntry = false; + FilterParameter filterParameter; + if ((id == "AR_RecSpecial" || id == "AR_BadDebtLossHandleList") && Convert.ToString(View.OpenParameter.GetCustomParameter("isBeInvoked")) == "1") + { + filterParameter = new FilterParameter(); + DynamicObject dynamicObject = new DynamicObject((MetaDataServiceHelper.Load(base.Context, "AR_RecMatchFilter") as FormMetadata).BusinessInfo.GetDynamicObjectType()); + dynamicObject["FSETTLEORGID"] = View.OpenParameter.GetCustomParameter("settleOrgID"); + dynamicObject["FBillSelect"] = "AR_OtherRecAble,AR_receivable"; + string formID = (string)(dynamicObject["FCONTACTUNITTYPE"] = Convert.ToString(View.OpenParameter.GetCustomParameter("contactUnitType"))); + string value = Convert.ToString(View.OpenParameter.GetCustomParameter("currencyID")); + DynamicObject dynamicObject2 = GetDynamicObject("BD_Currency"); + dynamicObject2["Id"] = value; + dynamicObject2["Number"] = View.OpenParameter.GetCustomParameter("currencyNumber"); + dynamicObject["FCurrencyFrom_Id"] = value; + dynamicObject["FCurrencyFrom"] = dynamicObject2; + dynamicObject["FCurrencyTo_Id"] = value; + dynamicObject["FCurrencyTo"] = dynamicObject2; + string s = Convert.ToString(View.OpenParameter.GetCustomParameter("dateFrom")); + dynamicObject["FDateFrom"] = (DateTime.TryParse(s, out var result) ? result : DateTime.Now.Date); + if (id == "AR_RecSpecial") + { + dynamicObject["FMULCONTACT"] = 1; + dynamicObject["FCONTACTUNITMUL"] = View.OpenParameter.GetCustomParameter("contactUnit"); + } + else + { + DynamicObject dynamicObject3 = GetDynamicObject(formID); + dynamicObject3["Number"] = View.OpenParameter.GetCustomParameter("contactUnit"); + dynamicObject["FCONTACTUNITFrom"] = dynamicObject3; + dynamicObject["FCONTACTUNITTo"] = dynamicObject3; + } + + filterParameter.CustomFilter = dynamicObject; + } + else + { + filterParameter = GetDefaultFilterParamer(id); + } + + if (!filterParameter.IsNullOrEmptyOrWhiteSpace()) + { + DivFilter(View.Model.BusinessInfo.GetForm().Id, filterParameter); + } + } + + if (isRefresh) + { + if (DebitFilterPara != null) + { + HideColoumByFilter("1"); + } + + if (CreditFilterPara != null) + { + HideColoumByFilter("-1"); + } + } + + formOperation = MatchServiceHelper.GetMatchFormOperation(View.Context, View.Model.BusinessInfo.GetForm().Id); + string permissionItemId = "59c5e82ba0344251b3a27d24f7627ea5"; + if (id == "AR_RecSpecial" || id == "AP_PaySpecial") + { + permissionItemId = "6e44119a58cb4a8e86f6c385e14a17ad"; + } + + lstOrgPermisinfosAll = CommonServiceHelper.GetPermissionOrgIdList(base.Context, PermissonFormID, permissionItemId); + permissionOrgSettleInfos = GetOrganization(View.Context, lstOrgPermisinfosAll); + lstSettlesOrgPermissionIDs = GetSettleOrgsPermissonValue(); + if (View.BusinessInfo.GetForm().Id == "AR_BadDebtLossHandleList" && View.BusinessInfo.ContainsKey("FPURPOSEIDD")) + { + View.GetControl("FPURPOSEIDD").Visible = false; + } + + if (!setMatchScheme) + { + SetMatchScheme(); + } + } + + private void SetMatchScheme() + { + setMatchScheme = true; + FormMetadata formMetadata = MetaDataServiceHelper.Load(base.Context, MatchWizardFromId) as FormMetadata; + IUserParameterService service = ServiceFactory.GetService(base.Context); + DynamicObject dynamicObject = service.Load(base.Context, formMetadata.BusinessInfo, base.Context.UserId, MatchWizardFromId, ""); + if (dynamicObject != null) + { + Ap_AutoMatchStencil ap_AutoMatchStencil = dynamicObject; + IEnumerable source = from r in ap_AutoMatchStencil.FMatchSchemeEntryList + where r.FSelectScheme + select r.FMatchSchemeID_Id; + if (source.Count() > 0) + { + View.Model.SetValue(MatchScheme, source.Min()); + } + } + } + + private void DivFilter(string formid, FilterParameter InitFilter) + { + string text = InitFilter.CustomFilter["FBillSelect"].ToString(); + FilterParameter filterParameter = ObjectUtils.CreateCopy(InitFilter) as FilterParameter; + switch (formid) + { + case "AR_RecSpecial": + if (text.Contains("AR_OtherRecAble") || text.Contains("AR_receivable")) + { + InitFilter.CustomFilter["FBillSelect"] = text; + RefreshBillDataFliter("1", InitFilter); + filterParameter.CustomFilter["FBillSelect"] = "AR_RECEIVEBILL,AR_REFUNDBILL"; + RefreshBillDataFliter("-1", filterParameter); + } + else + { + InitFilter.CustomFilter["FBillSelect"] = "AR_OtherRecAble,AR_receivable"; + RefreshBillDataFliter("1", InitFilter); + filterParameter.CustomFilter["FBillSelect"] = text; + RefreshBillDataFliter("-1", filterParameter); + } + + break; + case "AP_BillingSpecial": + if (text.Contains("AP_Payable")) + { + InitFilter.CustomFilter["FBillSelect"] = text; + RefreshBillDataFliter("1", InitFilter); + filterParameter.CustomFilter["FBillSelect"] = "IV_PURCHASEIC,IV_PURCHASEOC,IV_PUREXPINV,IV_PUREXVATIN"; + RefreshBillDataFliter("-1", filterParameter); + } + else + { + InitFilter.CustomFilter["FBillSelect"] = "AP_Payable"; + RefreshBillDataFliter("1", InitFilter); + filterParameter.CustomFilter["FBillSelect"] = text; + RefreshBillDataFliter("-1", filterParameter); + } + + break; + case "AP_PaySpecial": + if (text.Contains("AP_OtherPayable") || text.Contains("AP_Payable")) + { + InitFilter.CustomFilter["FBillSelect"] = text; + RefreshBillDataFliter("1", InitFilter); + filterParameter.CustomFilter["FBillSelect"] = "AP_PAYBILL,AP_REFUNDBILL"; + RefreshBillDataFliter("-1", filterParameter); + } + else + { + InitFilter.CustomFilter["FBillSelect"] = "AP_OtherPayable,AP_Payable"; + RefreshBillDataFliter("1", InitFilter); + filterParameter.CustomFilter["FBillSelect"] = text; + RefreshBillDataFliter("-1", filterParameter); + } + + break; + case "AR_BillingSpecial": + if (text.Contains("AR_receivable")) + { + InitFilter.CustomFilter["FBillSelect"] = text; + RefreshBillDataFliter("1", InitFilter); + filterParameter.CustomFilter["FBillSelect"] = "IV_SALEEXINV,IV_SALEEXVATIN,IV_SALESIC,IV_SALESOC"; + RefreshBillDataFliter("-1", filterParameter); + } + else + { + InitFilter.CustomFilter["FBillSelect"] = "AR_receivable"; + RefreshBillDataFliter("1", InitFilter); + filterParameter.CustomFilter["FBillSelect"] = text; + RefreshBillDataFliter("-1", filterParameter); + } + + break; + case "AR_BadDebtLossHandleList": + InitFilter.CustomFilter["FBillSelect"] = "AR_OtherRecAble,AR_receivable"; + RefreshBillDataFliter("1", InitFilter); + break; + } + } + + private FilterParameter GetDefaultFilterParamer(string formid) + { + //IL_0006: Unknown result type (might be due to invalid IL or missing references) + //IL_000c: Expected O, but got Unknown + FilterModel val = new FilterModel(base.Context); + FormMetadata formMetadata = null; + switch (formid) + { + case "AR_RecSpecial": + formMetadata = MetaDataServiceHelper.Load(base.Context, "AR_RecMatchFilter") as FormMetadata; + break; + case "AP_BillingSpecial": + formMetadata = MetaDataServiceHelper.Load(base.Context, "AP_BillingMatchFilter") as FormMetadata; + break; + case "AP_PaySpecial": + formMetadata = MetaDataServiceHelper.Load(base.Context, "AP_PayMatchFilter") as FormMetadata; + break; + case "AR_BillingSpecial": + formMetadata = MetaDataServiceHelper.Load(base.Context, "AR_BillingMatchFilter") as FormMetadata; + break; + case "AR_BadDebtLossHandleList": + formMetadata = MetaDataServiceHelper.Load(base.Context, "AR_BadDebtLossFilter") as FormMetadata; + break; + default: + return null; + } + + BusinessInfo businessInfo = formMetadata.BusinessInfo; + ((AbstractDynamicFormModel)(object)val).SetContext(base.Context, businessInfo, (IResourceServiceProvider)null); + val.FormId = formid; + val.GetSchemeList(); + FilterScheme nextDirectEnterScheme = val.GetNextDirectEnterScheme(); + FilterParameter result = SetTransferFilter(businessInfo); + if (nextDirectEnterScheme == null || nextDirectEnterScheme.IsDefault) + { + return result; + } + + val.Load(nextDirectEnterScheme.Id); + FilterParameter filterParameter = val.GetFilterParameter(); + if (!View.OpenParameter.GetCustomParameter("FTransfer").IsNullOrEmptyOrWhiteSpace()) + { + return result; + } + + return filterParameter; + } + + private FilterParameter SetTransferFilter(BusinessInfo info) + { + FilterParameter filterParameter = null; + if (!View.OpenParameter.GetCustomParameter("FTransfer").IsNullOrEmptyOrWhiteSpace()) + { + filterParameter = new FilterParameter(); + DynamicObject dynamicObject = new DynamicObject(info.GetDynamicObjectType()); + dynamicObject["FBillSelect"] = View.OpenParameter.GetCustomParameter("FBillSelect"); + dynamicObject["FSETTLEORGID"] = View.OpenParameter.GetCustomParameter("FSETTLEORGID"); + dynamicObject["FBillNoTo"] = View.OpenParameter.GetCustomParameter("FBillNoTo"); + dynamicObject["FBillNoFrom"] = View.OpenParameter.GetCustomParameter("FBillNoFrom"); + filterParameter.CustomFilter = dynamicObject; + } + + return filterParameter; + } + + public Field CloneBaseField(string fieldKey, string entryKey, string suffix, MatchFieldConfig fieldConfig) + { + Field field = (Field)_businessInfo.GetField(fieldKey).Clone(); + field.EntityKey = entryKey; + LocaleValue localeValue = new LocaleValue(); + foreach (MatchFieldConfigLocale langInfo in fieldConfig.LangInfos) + { + localeValue.Add(new KeyValuePair(langInfo.LocalId, langInfo.Name)); + } + + field.Name = localeValue; + field.FieldName = fieldConfig.FieldName; + field.FireUpdateEvent = FireUpdateEvent(fieldConfig); + field.Key = fieldConfig.FieldName + suffix; + field.PropertyName = fieldConfig.FieldName + suffix; + return field; + } + + public FieldAppearance CloneBaseFieldApp(string fieldKey, string entryKey, string suffix, MatchFieldConfig fieldConfig) + { + FieldAppearance fieldAppearance = (FieldAppearance)_layoutInfo.GetFieldAppearance(fieldKey).Clone(); + fieldAppearance.EntityKey = entryKey; + LocaleValue localeValue = new LocaleValue(); + LocaleValue localeValue2 = new LocaleValue(); + foreach (MatchFieldConfigLocale langInfo in fieldConfig.LangInfos) + { + localeValue.Add(new KeyValuePair(langInfo.LocalId, langInfo.Name)); + localeValue2.Add(new KeyValuePair(langInfo.LocalId, fieldConfig.Width.ToString())); + } + + fieldAppearance.Caption = localeValue; + fieldAppearance.Width = localeValue2; + fieldAppearance.Locked = FieldLocked(fieldConfig); + fieldAppearance.Visible = (fieldConfig.IsShowSpecial.Equals("1") ? (-1) : 29); + fieldAppearance.Key = fieldConfig.FieldName + suffix; + fieldAppearance.Field = _businessInfo.GetField(fieldAppearance.Key); + return fieldAppearance; + } + + public List VisiableField() + { + List list = new List(); + list.Add("FJOINBILLENTRYID"); + list.Add("FJOINBILLFID"); + list.Add("FJOINRECBILL"); + list.Add("FJOINRECEIVBILLNO"); + return list; + } + + public override void OnSetBusinessInfo(SetBusinessInfoArgs e) + { + MatchFieldConfig[] matchFieldConfigs = MatchServiceHelper.GetMatchFieldConfigs(View.Context, $"FMatchType = '{MatchType}' "); + Configs = matchFieldConfigs.OrderBy((MatchFieldConfig r) => r.ShowSeq).ToArray(); + _dictField = new Dictionary>(StringComparer.OrdinalIgnoreCase); + _dictField.Add("1", CreateIntField); + _dictField.Add("2", CreateTextField); + _dictField.Add("3", CreateDateField); + _dictField.Add("4", CreateBooleanField); + _dictField.Add("5", CreateDecimalField); + _dictField.Add("6", CreateDateTimeField); + _businessInfo = (BusinessInfo)ObjectUtils.CreateCopy(View.OpenParameter.FormMetaData.BusinessInfo); + _businessInfo.Add(CreateIntField(DebitEntryKey, "FEntryId")); + _businessInfo.Add(CreateIntField(CreditEntryKey, "FEntryId")); + MatchFieldConfig[] configs = Configs; + foreach (MatchFieldConfig matchFieldConfig in configs) + { + if (!VisiableField().Contains(matchFieldConfig.FieldName)) + { + if (showBaseField.Contains(matchFieldConfig.FieldName)) + { + _businessInfo.Add(CloneBaseField(matchFieldConfig.FieldName, DebitEntryKey, DebitSuffix, matchFieldConfig)); + _businessInfo.Add(CloneBaseField(matchFieldConfig.FieldName, CreditEntryKey, CrebitSuffix, matchFieldConfig)); + } + else + { + _businessInfo.Add(_dictField[matchFieldConfig.FieldType](DebitEntryKey, matchFieldConfig)); + _businessInfo.Add(_dictField[matchFieldConfig.FieldType](CreditEntryKey, matchFieldConfig)); + } + } + } + + foreach (string suffix in Suffixs) + { + Field field = _businessInfo.GetField("FCURRENCYID" + suffix); + if (field != null) + { + foreach (string amountField in AmountFields) + { + Field field2 = _businessInfo.GetField(amountField + suffix); + if (field2 != null) + { + field2.ControlFieldKey = "FCURRENCYID" + suffix; + field.ChildrenFields.Add(field2); + } + } + + foreach (string priceField in PriceFields) + { + Field field2 = _businessInfo.GetField(priceField + suffix); + if (field2 != null) + { + field2.ControlFieldKey = "FCURRENCYID" + suffix; + field.ChildrenFields.Add(field2); + } + } + } + + field = _businessInfo.GetField("FBASICUNITID" + suffix); + if (field != null) + { + foreach (string qTYField in QTYFields) + { + Field field2 = _businessInfo.GetField(qTYField + suffix); + if (field2 != null) + { + field2.ControlFieldKey = "FBASICUNITID" + suffix; + field.ChildrenFields.Add(field2); + } + } + } + + field = _businessInfo.GetField("FPRICEUNITID" + suffix); + if (field == null) + { + continue; + } + + foreach (string item in QTYFieldsByUnit) + { + Field field2 = _businessInfo.GetField(item + suffix); + if (field2 != null) + { + field2.ControlFieldKey = "FPRICEUNITID" + suffix; + field.ChildrenFields.Add(field2); + } + } + } + + e.BusinessInfo = _businessInfo; + e.BillBusinessInfo = _businessInfo; + } + + public override void OnSetLayoutInfo(SetLayoutInfoArgs e) + { + _layoutInfo = (LayoutInfo)ObjectUtils.CreateCopy(View.OpenParameter.FormMetaData.GetLayoutInfo()); + _dictFieldApp = new Dictionary>(StringComparer.OrdinalIgnoreCase); + _dictFieldApp.Add("1", CreateIntFieldApp); + _dictFieldApp.Add("2", CreateTextFieldApp); + _dictFieldApp.Add("3", CreateDateFieldApp); + _dictFieldApp.Add("4", CreateBooleanFieldApp); + _dictFieldApp.Add("5", CreateDecimalFieldApp); + _dictFieldApp.Add("6", CreateDateTimeFieldApp); + _layoutInfo.Add(CreateIntFieldApp(DebitEntryKey, "FEntryId")); + _layoutInfo.Add(CreateIntFieldApp(CreditEntryKey, "FEntryId")); + MatchFieldConfig[] configs = Configs; + foreach (MatchFieldConfig matchFieldConfig in configs) + { + if (!VisiableField().Contains(matchFieldConfig.FieldName)) + { + if (showBaseField.Contains(matchFieldConfig.FieldName)) + { + _layoutInfo.Add(CloneBaseFieldApp(matchFieldConfig.FieldName, DebitEntryKey, DebitSuffix, matchFieldConfig)); + _layoutInfo.Add(CloneBaseFieldApp(matchFieldConfig.FieldName, CreditEntryKey, CrebitSuffix, matchFieldConfig)); + } + else + { + _layoutInfo.Add(_dictFieldApp[matchFieldConfig.FieldType](DebitEntryKey, matchFieldConfig)); + _layoutInfo.Add(_dictFieldApp[matchFieldConfig.FieldType](CreditEntryKey, matchFieldConfig)); + } + } + } + + e.LayoutInfo = _layoutInfo; + e.BillLayoutInfo = _layoutInfo; + CreateGrid(DebitEntryKey, DebitSuffix); + CreateGrid(CreditEntryKey, CrebitSuffix); + } + + public void CreateGrid(string entryKey, string suffix) + { + string retValue = ""; + List list = new List(); + List list2 = new List(); + List list3 = new List(); + foreach (string qTYField in QTYFields) + { + list.Add((qTYField + suffix).ToUpperInvariant()); + } + + foreach (string item in QTYFieldsByUnit) + { + list.Add((item + suffix).ToUpperInvariant()); + } + + foreach (string amountField in AmountFields) + { + list2.Add((amountField + suffix).ToUpperInvariant()); + } + + foreach (string priceField in PriceFields) + { + list3.Add((priceField + suffix).ToUpperInvariant()); + } + + JSONObject jSONObject = _layoutInfo.GetEntityAppearance(entryKey).CreateControl(); + jSONObject.Put("primaryKey", "FIndex"); + jSONObject.Put("indexKey", "FIndex"); + jSONObject.Put("startRow", 0); + jSONObject.Put("pageSize", _layoutInfo.GetEntityAppearance(entryKey).PageRows); + JSONArray jSONArray = (JSONArray)jSONObject["columns"]; + foreach (JSONObject item2 in jSONArray) + { + if (!item2.TryGetValue("dataIndex", "", out retValue)) + { + continue; + } + + FieldAppearance fieldAppearance = _layoutInfo.GetFieldAppearance(retValue); + if (fieldAppearance != null) + { + if (fieldAppearance.Visible == 29) + { + item2.Put("visible", false); + } + + JSONObject jSONObject3 = (JSONObject)item2["editor"]; + if (list.Contains(retValue) || list2.Contains(retValue)) + { + jSONObject3.Put("precisionField", fieldAppearance.Field.ControlFieldKey); + jSONObject3.Put("precisionIndex", 1); + } + else if (list3.Contains(retValue)) + { + jSONObject3.Put("precisionField", fieldAppearance.Field.ControlFieldKey); + jSONObject3.Put("precisionIndex", 2); + } + } + } + + EntryGrid control = View.GetControl(entryKey); + IDynamicFormState service = View.GetService(); + service.PreInvokeControlMethod(_layoutInfo.GetEntityAppearance(entryKey), "CreateDyanmicList", jSONObject); + control.InvokeControlMethod("CreateDyanmicList", jSONObject, ""); + } + + public override void BarItemClick(BarItemClickEventArgs e) + { + DynamicObject dynamicObject = View.Model.GetValue(MatchScheme) as DynamicObject; + SelectedSchemeId = ((dynamicObject == null) ? 0 : Convert.ToInt64(dynamicObject["Id"])); + switch (e.BarItemKey) + { + case "tbVerify": + if (View.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("ER_ManualMatch")) + { + View.Model.SetValue("FBatchGeneRecord", false); + } + + if (MatchType != "5" || (MatchType == "5" && View.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("ER_ManualMatch"))) + { + lMethodID = 60L; + } + + if ((MatchWizardFromId == "AP_PayMatck" || MatchWizardFromId == "AP_BillingMatck" || MatchWizardFromId == "AR_Matck" || MatchWizardFromId == "AR_BillingMatck" || (MatchWizardFromId == "ER_MatchWizard" && View.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("ER_ManualMatch"))) && SelectedSchemeId == 0) + { + e.Cancel = true; + View.ShowMessage(ResManager.LoadKDString("请选择核销方案", "003192000022643", SubSystemType.FIN)); + } + else + { + Match(); + } + + break; + case "tbVerifyS": + if (View.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("ER_ManualMatch")) + { + View.Model.SetValue("FBatchGeneRecord", true); + } + + lMethodID = 30L; + if (!IsInMatchAmtScop()) + { + View.ShowWarnningMessage(sbMessage.ToString()); + } + else if ((MatchWizardFromId == "AP_PayMatck" || MatchWizardFromId == "AR_Matck") && IsSameOrgAndBatchRecord()) + { + View.ShowErrMessage(ResManager.LoadKDString("选择的核销单据存在结算组织不一致的情况,不能合并产生同一核销记录!", "003192000038823", SubSystemType.FIN)); + } + else if ((MatchWizardFromId == "AP_PayMatck" || MatchWizardFromId == "AP_BillingMatck" || MatchWizardFromId == "AR_Matck" || MatchWizardFromId == "AR_BillingMatck" || (MatchWizardFromId == "ER_MatchWizard" && View.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("ER_ManualMatch"))) && SelectedSchemeId == 0) + { + e.Cancel = true; + View.ShowMessage(ResManager.LoadKDString("请选择核销方案", "003192000022643", SubSystemType.FIN)); + } + else if (IsMatch()) + { + Match(); + } + + break; + case "tbBDHandle": + lMethodID = 81L; + isBadDebt = true; + InitOrgIdRangeInfoDic(); + if ((MatchWizardFromId == "AP_PayMatck" || MatchWizardFromId == "AR_Matck") && IsSameOrgAndBatchRecord()) + { + View.ShowErrMessage(ResManager.LoadKDString("选择的核销单据存在结算组织不一致的情况,不能合并产生同一核销记录!", "003192000038823", SubSystemType.FIN)); + break; + } + + SelectedSchemeId = 20008L; + Match(); + break; + case "tbUpFilter": + ShowFilterBill("1"); + break; + case "tbRefresh": + isRefresh = true; + break; + case "tbDownFilter": + ShowFilterBill("-1"); + break; + case "tbViewCheckResult": + ShowCheckResult(); + break; + case "tbViewMatchLog": + ShowMatchLog(bLog: true); + break; + case "tbViewMatchBill": + ShowMatchLog(bLog: false); + break; + } + } + + protected virtual void ShowMatchLog(bool bLog) + { + } + + public override void AfterBarItemClick(AfterBarItemClickEventArgs e) + { + base.AfterBarItemClick(e); + string barItemKey; + if ((barItemKey = e.BarItemKey) != null && barItemKey == "tbRefresh") + { + GetBillData("1", _debitFilterPara); + GetBillData("-1", _creditFilterPara); + } + } + + protected virtual void ResultRowData(MatchBillData data, DynamicObject enrtyData, string suffix) + { + } + + private bool IsInMatchAmtScop() + { + if (sSystemFormID.IsNullOrEmptyOrWhiteSpace()) + { + return true; + } + + InitOrgInfos(); + return IsInMatchAmtScope(); + } + + private bool IsSameOrgAndBatchRecord() + { + bool value = View.Model.DataObject.GetValue("FBatchGeneRecord", defValue: false); + List list = orgIdRangeInfo.Keys.Select((SpecialDimensions p) => p.SettleOrgID).ToList(); + if (value && list != null && list.Count > 1) + { + return true; + } + + return false; + } + + private void InitOrgInfos() + { + InitOrgIdRangeInfoDic(); + orgMatchRangeFromDic = GetOrgMatchRangeDic(sSystemFormID, "MatchRangeFrom"); + orgMatchRangeToDic = GetOrgMatchRangeDic(sSystemFormID, "MatchRangeTo"); + if (View.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("ER_ManualMatch")) + { + if (orgMatchRangeFromDic != null && orgMatchRangeFromDic.Count() > 0) + { + foreach (long item in orgMatchRangeFromDic.Keys.ToList()) + { + if (Convert.ToDecimal(orgMatchRangeFromDic[item]) == 0m) + { + orgMatchRangeFromDic[item] = -10; + } + } + } + + if (orgMatchRangeToDic != null && orgMatchRangeToDic.Count() > 0) + { + foreach (long item2 in orgMatchRangeToDic.Keys.ToList()) + { + if (Convert.ToDecimal(orgMatchRangeToDic[item2]) == 0m) + { + orgMatchRangeToDic[item2] = 10; + } + } + } + } + + SetMatchRangeToRangeInfoDic(); + } + + private bool IsInMatchAmtScope() + { + sbMessage = new StringBuilder(); + bool flag = View.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("ER_ManualMatch"); + foreach (SpecialDimensions key in orgIdRangeInfo.Keys) + { + if (flag) + { + orgIdRangeInfo[key].SetMessageForERUse(); + } + else + { + orgIdRangeInfo[key].SetMessage(); + } + + if (!orgIdRangeInfo[key].BAllowMatch) + { + sbMessage.AppendLine(orgIdRangeInfo[key].SMessage); + } + } + + return sbMessage.Length == 0; + } + + private Dictionary GetOrgMatchRangeDic(string system, string sRange) + { + List orgIds = orgIdRangeInfo.Keys.Select((SpecialDimensions p) => p.SettleOrgID).ToList(); + Dictionary dictionary = new Dictionary(); + return SystemParameterServiceHelper.GetParamter(base.Context, orgIds, 0L, system, sRange); + } + + private void InitOrgIdRangeInfoDic() + { + MaxDate = InitMaxFDate(); + orgIdRangeInfo = new Dictionary(); + InitOrgIdRangeInfoDicBySuffix(DebitSuffix); + InitOrgIdRangeInfoDicBySuffix(CrebitSuffix); + } + + private DateTime InitMaxFDate() + { + DateTime dateTime = default(DateTime); + DynamicObjectCollection source = View.Model.DataObject["FDebitEntry"] as DynamicObjectCollection; + DynamicObjectCollection source2 = View.Model.DataObject["FCreditEntry"] as DynamicObjectCollection; + new List(); + List list = (from r in source + where Convert.ToBoolean(r["FTheIsMatchD"]) + select r["FCURRENCYIDD_Id"]).ToList(); + List list2 = (from r in source2 + where Convert.ToBoolean(r["FTheIsMatchC"]) + select r["FCURRENCYIDC_Id"]).ToList(); + long num = 0L; + foreach (long item in list) + { + if (num == 0) + { + num = item; + } + else if (num != item) + { + IsDifCurrency = true; + break; + } + } + + if (!IsDifCurrency) + { + foreach (long item2 in list2) + { + if (num == 0) + { + num = item2; + } + else if (num != item2) + { + IsDifCurrency = true; + break; + } + } + } + + if (IsDifCurrency) + { + List list3 = (from r in source + where Convert.ToBoolean(r["FTheIsMatchD"]) + select r["FDateD"]).ToList(); + List list4 = (from r in source2 + where Convert.ToBoolean(r["FTheIsMatchC"]) + select r["FDateC"]).ToList(); + foreach (DateTime item3 in list3) + { + if (item3.CompareTo(dateTime) > 0) + { + dateTime = item3; + } + } + + foreach (DateTime item4 in list4) + { + if (item4.CompareTo(dateTime) > 0) + { + dateTime = item4; + } + } + } + + return dateTime; + } + + private void InitOrgIdRangeInfoDicBySuffix(string Suffix) + { + string key = ((Suffix == DebitSuffix) ? DebitEntryKey : CreditEntryKey); + int entryRowCount = View.Model.GetEntryRowCount(key); + long lOrgId = 0L; + string empty = string.Empty; + long num = 0L; + string empty2 = string.Empty; + long num2 = 0L; + decimal num3 = 0m; + DateTime dateTime = default(DateTime); + long num4 = 0L; + decimal num5 = 0m; + for (int i = 0; i < entryRowCount; i++) + { + if (IsSelectedRow(i, Suffix)) + { + lOrgId = GetSettleOrgIdByRow(i, Suffix); + empty = GetSettleOrgNameByRow(i, Suffix); + num = GetCurrencyIdByRow(i, Suffix); + empty2 = GetCurrencyNameByRow(i, Suffix); + num3 = GetTheMatchAmountByRow(i, Suffix) * (decimal)GetAmountDirByRow(i, Suffix); + num4 = GetExchangeTypeByRow(i, Suffix); + num5 = GetExchangeByRow(i, Suffix); + num2 = GetLocalCurByRow(i, Suffix); + dateTime = GetDateByRow(i, Suffix); + if (!orgIdRangeInfo.Keys.Any((SpecialDimensions p) => p.SettleOrgID == lOrgId)) + { + SpecialDimensions key2 = new SpecialDimensions(lOrgId); + orgIdRangeInfo.Add(key2, new SpecialMatchAmountRangeInfo(lOrgId, empty, num, empty2)); + SetDebitCreditAmount(Suffix, num3, lOrgId, num, num4, num2, num5, dateTime); + orgIdRangeInfo[key2].SMatchType = MatchType; + } + else + { + SetDebitCreditAmount(Suffix, num3, lOrgId, num, num4, num2, num5, dateTime); + } + } + } + } + + private void SetDebitCreditAmount(string suffix, decimal dTheMatchAmt, long lOrgId, long currenyId, long exchangetypeid, long localcurid, decimal srate, DateTime date) + { + SpecialDimensions key = orgIdRangeInfo.Keys.Where((SpecialDimensions p) => p.SettleOrgID == lOrgId).FirstOrDefault(); + if (IsDifCurrency) + { + dTheMatchAmt = srate * dTheMatchAmt; + DynamicObject dynamicObject = FINCommonFunc.GetDynamicObject(base.Context, currenyId, "BD_Currency"); + dTheMatchAmt = Math.Round(dTheMatchAmt, Convert.ToInt32(dynamicObject["AmountDigits"])); + } + + if (suffix == DebitSuffix) + { + orgIdRangeInfo[key].SetDebitAmount(dTheMatchAmt); + } + else + { + orgIdRangeInfo[key].SetCreditAmount(dTheMatchAmt); + } + } + + private void SetMatchRangeToRangeInfoDic() + { + foreach (SpecialDimensions key in orgIdRangeInfo.Keys) + { + orgIdRangeInfo[key].DAllowMatchAmtFrom = Convert.ToDecimal(orgMatchRangeFromDic[key.SettleOrgID]); + orgIdRangeInfo[key].DAllowMatchAmtTo = Convert.ToDecimal(orgMatchRangeToDic[key.SettleOrgID]); + } + } + + private bool IsSelectedRow(int iRow, string sDOrC) + { + return Convert.ToBoolean(View.Model.GetValue("FTheIsMatch" + sDOrC, iRow)); + } + + private long GetSettleOrgIdByRow(int iRow, string sDOrC) + { + long key = Convert.ToInt64(View.Model.GetValue("FENTRYID" + sDOrC, iRow)); + if (!(sDOrC == DebitSuffix)) + { + return CrebitDate[key].SettOrgId; + } + + return DebitDate[key].SettOrgId; + } + + private long GetCurrencyIdByRow(int iRow, string sDOrC) + { + DynamicObject dynamicObject = View.Model.GetValue("FCURRENCYID" + sDOrC, iRow) as DynamicObject; + return Convert.ToInt64(dynamicObject["Id"].ToString()); + } + + private long GetExchangeTypeByRow(int iRow, string sDOrC) + { + long key = Convert.ToInt64(View.Model.GetValue("FENTRYID" + sDOrC, iRow)); + if (!(sDOrC == DebitSuffix)) + { + return Convert.ToInt64(CrebitDate[key].FieldValues["FEXCHANGETYPE"]); + } + + return Convert.ToInt64(DebitDate[key].FieldValues["FEXCHANGETYPE"]); + } + + private decimal GetExchangeByRow(int iRow, string sDOrC) + { + long key = Convert.ToInt64(View.Model.GetValue("FENTRYID" + sDOrC, iRow)); + if (!(sDOrC == DebitSuffix)) + { + return Convert.ToDecimal(CrebitDate[key].FieldValues["FEXCHANGERATE"]); + } + + return Convert.ToDecimal(DebitDate[key].FieldValues["FEXCHANGERATE"]); + } + + private DateTime GetDateByRow(int iRow, string sDOrC) + { + long key = Convert.ToInt64(View.Model.GetValue("FENTRYID" + sDOrC, iRow)); + if (!(sDOrC == DebitSuffix)) + { + return Convert.ToDateTime(CrebitDate[key].FieldValues["FDate"]); + } + + return Convert.ToDateTime(DebitDate[key].FieldValues["FDate"]); + } + + private long GetLocalCurByRow(int iRow, string sDOrC) + { + long key = Convert.ToInt64(View.Model.GetValue("FENTRYID" + sDOrC, iRow)); + if (!(sDOrC == DebitSuffix)) + { + return Convert.ToInt64(CrebitDate[key].FieldValues["FLOCALCURRID"]); + } + + return Convert.ToInt64(DebitDate[key].FieldValues["FLOCALCURRID"]); + } + + private string GetCurrencyNameByRow(int iRow, string sDOrC) + { + DynamicObject dynamicObject = View.Model.GetValue("FCURRENCYID" + sDOrC, iRow) as DynamicObject; + return dynamicObject["Name"].ToString(); + } + + private string GetSettleOrgNameByRow(int iRow, string sDOrc) + { + return Convert.ToString(View.Model.GetValue("FSETTLEORGID" + sDOrc, iRow)); + } + + private decimal GetTheMatchAmountByRow(int iRow, string sDOrC) + { + return Convert.ToDecimal(View.Model.GetValue("FTheMatchAmount" + sDOrC, iRow)); + } + + private int GetAmountDirByRow(int iRow, string sDOrC) + { + long key = Convert.ToInt64(View.Model.GetValue("FENTRYID" + sDOrC, iRow)); + string text = ((sDOrC == DebitSuffix) ? Convert.ToString(DebitDate[key].FieldValues["FIsAmtOpposite"]) : Convert.ToString(CrebitDate[key].FieldValues["FIsAmtOpposite"])); + if (!(text == "0")) + { + return -1; + } + + return 1; + } + + private bool IsMatch() + { + FormMetadata formMetaData = MetaDataServiceHelper.GetFormMetaData(View.Context, "FIN_SpecialInfo"); + DynamicObject dynamicObject = null; + try + { + dynamicObject = UserParamterServiceHelper.Load(base.Context, formMetaData.BusinessInfo, base.Context.UserId, "FIN_SpecialInfo", View.Model.BusinessInfo.GetForm().Id); + } + catch (Exception) + { + } + + if (dynamicObject == null || !((SpecialInfo)dynamicObject).FDownNoRemind) + { + DynamicFormShowParameter dynamicFormShowParameter = new DynamicFormShowParameter(); + dynamicFormShowParameter.FormId = "FIN_SpecialInfo"; + dynamicFormShowParameter.OpenStyle.ShowType = ShowType.Floating; + dynamicFormShowParameter.CustomParams.Add("FromId", View.Model.BusinessInfo.GetForm().Id); + dynamicFormShowParameter.CustomParams.Add("TitelInfo", TitelInfo); + View.ShowForm(dynamicFormShowParameter, ShowFormResult); + return false; + } + + return true; + } + + protected void ShowFormResult(FormResult returnData) + { + if (returnData.ReturnData != null && Convert.ToBoolean(returnData.ReturnData)) + { + Match(); + } + } + + private void Match() + { + Dictionary networkControl = NetworkControl(); + List writeOffNetworkControl = WriteOffNetworkControl(); + List> list = new List>(); + IOperationResult operationResult = new OperationResult(); + if (DebitDate != null) + { + ResultData(DebitDate, DebitEntryKey, DebitSuffix, networkControl, writeOffNetworkControl, operationResult); + list.Add(DebitDate); + } + + if (CrebitDate != null) + { + ResultData(CrebitDate, CreditEntryKey, CrebitSuffix, networkControl, writeOffNetworkControl, operationResult); + list.Add(CrebitDate); + } + + long num = 0L; + long num2 = 0L; + if (DebitDate != null) + { + num = DebitDate.Values.Where((MatchBillData r) => r.TheIsMatch).ToList().Count; + } + + if (CrebitDate != null) + { + num2 = CrebitDate.Values.Where((MatchBillData r) => r.TheIsMatch).ToList().Count; + } + + if (num == 0 && num2 == 0) + { + if (operationResult.ValidationErrors.Count > 0) + { + ShowMessage(operationResult); + } + else + { + string msg = ResManager.LoadKDString("没有选择数据,请重新选择。", "003192000022408", SubSystemType.FIN); + View.ShowMessage(msg); + } + + CommitNetworkControl(); + return; + } + + if (num == 0) + { + _DebitDataTime = _CreditDataTime; + } + else if (num2 == 0) + { + _CreditDataTime = _DebitDataTime; + } + + if (num > 5000 || num2 > 5000) + { + string msg2 = ResManager.LoadKDString("所选参与核销的借方or贷方单据超过5000条,不能进行核销。", "003192000022409", SubSystemType.FIN); + View.ShowMessage(msg2); + return; + } + + MatchParameters matchParameters = new MatchParameters(); + matchParameters.MatchType = MatchType; + matchParameters.SpecialMatch = true; + matchParameters.UserId = View.Context.UserId; + matchParameters.MatchFromId = MatchWizardFromId; + matchParameters.BatchGeneRecord = View.Model.DataObject.GetValue("FBatchGeneRecord", defValue: false); + matchParameters.GenBillDate = Convert.ToDateTime(View.Model.GetValue(FGenDate)); + matchParameters.MatchMethodID = lMethodID; + matchParameters.IsBadDebt = isBadDebt; + matchParameters.DebitDataTime = _DebitDataTime; + matchParameters.CreditDataTime = _CreditDataTime; + if (MatchWizardFromId == "AP_PayMatck" || MatchWizardFromId == "AP_BillingMatck" || MatchWizardFromId == "AR_Matck" || MatchWizardFromId == "AR_BillingMatck" || (MatchWizardFromId == "ER_MatchWizard" && View.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("ER_ManualMatch"))) + { + matchParameters.SelectedSchemeId = new List { SelectedSchemeId }; + } + + if (list.Count == 0) + { + return; + } + + try + { + IOperationResult operationResult2 = MatchServiceHelper.SpecialMatch(View.Context, matchParameters, list, temptable); + operationResult2.ValidationErrors.AddRange(operationResult.ValidationErrors); + ShowMessage(operationResult2); + try + { + bool flag = false; + DynamicObjectCollection systemprofile = MatchServiceHelper.GetSystemprofile(View.Context, "IsRealizedMatch"); + if (systemprofile.Count > 0) + { + if ((matchParameters.MatchType == "1" || matchParameters.MatchType == "3") && systemprofile[0]["FVALUE"].ToString().Equals("1")) + { + if (operationResult2.OperateResult != null && operationResult2.OperateResult.Count > 0) + { + UpdateMatchDataAndView(View.Context, list, operationResult2.OperateResult[0].Number, matchParameters.MatchType); + } + else + { + flag = true; + } + } + else + { + flag = true; + } + } + else + { + flag = true; + } + + if (flag) + { + GetBillData("1", _debitFilterPara); + GetBillData("-1", _creditFilterPara); + } + } + catch (Exception) + { + GetBillData("1", _debitFilterPara); + GetBillData("-1", _creditFilterPara); + } + finally + { + List matchDatas = (from r in list + from p in r.Values + where p.TheIsMatch + select p).ToList(); + AfterMatchProcess(matchDatas, matchParameters); + } + } + catch (Exception ex2) + { + if (ex2.Message.Contains("ERR:")) + { + View.ShowErrMessage(ex2.Message); + return; + } + + throw new KDException("", ex2.Message); + } + finally + { + CheckResult = matchParameters.CheckResult; + CommitNetworkControl(); + } + } + + public void UpdateMatchDataAndView(Context ctx, List> datas, string matchids, string matchtype) + { + string tablename = ((matchtype == "1") ? "T_AP_PAYMATCHLOGENTRY" : "T_AR_RECMACTHLOGENTRY"); + DynamicObjectCollection matchData = MatchServiceHelper.GetMatchData(ctx, matchids, tablename); + if (datas != null && datas.Count > 0) + { + if (DebitDate != null && CrebitDate != null) + { + DebitDate = UpdateViewData(datas[0], matchData, "FDebitEntry", "D"); + CrebitDate = UpdateViewData(datas[1], matchData, "FCreditEntry", "C"); + } + else if (DebitDate != null && CrebitDate == null) + { + DebitDate = UpdateViewData(datas[0], matchData, "FDebitEntry", "D"); + } + else if (DebitDate == null && CrebitDate != null) + { + CrebitDate = UpdateViewData(datas[0], matchData, "FCreditEntry", "C"); + } + } + } + + public Dictionary UpdateViewData(Dictionary sourceData, DynamicObjectCollection matchData, string billdir, string dirkey) + { + List> list = sourceData.Where((KeyValuePair r) => r.Value.TheIsMatch).ToList(); + bool flag = false; + foreach (KeyValuePair item in list) + { + foreach (DynamicObject matchDatum in matchData) + { + if (item.Value.BillNo.Equals(matchDatum["FSRCBILLNO"]) && matchDatum["FSRCBILLID"].ToString().Equals(item.Value.BillId.ToString()) && ((item.Value.FromId != "AR_OtherRecAble" && item.Value.EntryId.ToString().Equals(matchDatum["FSRCROWID"].ToString())) || item.Value.FromId == "AR_OtherRecAble")) + { + if (Convert.ToDecimal(matchDatum["FWRITTENOFFAMOUNTFOR"].ToString()) == Convert.ToDecimal(matchDatum["FPLANAMOUNTFOR"].ToString()) && Convert.ToDecimal(matchDatum["FNOTWRITTENOFFAMOUNTFOR"].ToString()) == 0m) + { + sourceData.Remove(item.Key); + flag = true; + } + else + { + sourceData[item.Key].WriteMatchAmount = Convert.ToDecimal(matchDatum["FWRITTENOFFAMOUNTFOR"].ToString()); + sourceData[item.Key].NoWriteMatchAmount = Convert.ToDecimal(matchDatum["FPLANAMOUNTFOR"].ToString()) - Convert.ToDecimal(matchDatum["FWRITTENOFFAMOUNTFOR"].ToString()); + sourceData[item.Key].TheMatchAmount = 0m; + } + } + } + } + + if (flag) + { + Dictionary dictionary = new Dictionary(); + int num = 1; + foreach (MatchBillData value in sourceData.Values) + { + dictionary.Add(num, value); + num++; + } + + sourceData = dictionary; + } + + SetEntityData(billdir, dirkey, sourceData); + return sourceData; + } + + public virtual void AfterMatchProcess(List MatchDatas, MatchParameters para) + { + } + + private Dictionary NetworkControl() + { + List list = new List(); + AddSettOrgs(list, _debitFilterPara); + AddSettOrgs(list, _creditFilterPara); + Dictionary dictionary = MatchServiceHelper.MatchNetworkControl(View.Context, list, MatchType); + FormMetadata metaObject = MetaDataServiceHelper.Load(base.Context, View.BillBusinessInfo.GetForm().Id) as FormMetadata; + List list2 = new List(); + list2.Add(formOperation); + networkCtrlResults = new List(); + foreach (long item in list) + { + if (!dictionary[item]) + { + NetworkCtrlResult mutexOperationNetCtlResult = NetControlServiceHelper.GetMutexOperationNetCtlResult(View.Context, metaObject, formOperation, list2, item.ToString()); + networkCtrlResults.Add(mutexOperationNetCtlResult); + dictionary[item] = !mutexOperationNetCtlResult.StartSuccess; + } + } + + return dictionary; + } + + private List WriteOffNetworkControl() + { + List list = new List(); + string sql = "SELECT FID FROM T_BAS_NETWORKCTRLOBJECT where FMETAOBJECTID ='ARAP_MatchLockRecord_Temp' and FTYPE='100'"; + string zXRecordBillNOFromNetControl = NetControlServiceHelper.GetZXRecordBillNOFromNetControl(base.Context, sql); + return zXRecordBillNOFromNetControl.Split(',').ToList(); + } + + private void CommitNetworkControl() + { + if (networkCtrlResults != null) + { + NetControlServiceHelper.BatchCommitNetCtrl(base.Context, networkCtrlResults); + } + } + + private void AddSettOrgs(List orgs, FilterParameter filterPara) + { + if (filterPara == null) + { + return; + } + + string text = filterPara.CustomFilter["FSETTLEORGID"].ToString(); + string[] array = text.Split(','); + string[] array2 = array; + foreach (string value in array2) + { + long orgId = Convert.ToInt64(value); + if (!orgs.Any((long p) => p == orgId)) + { + orgs.Add(orgId); + } + } + } + + private void ResultData(Dictionary datas, string enrtyKey, string suffix, Dictionary networkControl, List writeOffNetworkControl, IOperationResult result) + { + DynamicObjectCollection dynamicObjectCollection = View.Model.DataObject[enrtyKey] as DynamicObjectCollection; + foreach (DynamicObject item in dynamicObjectCollection) + { + long key = Convert.ToInt64(item["FEntryId" + suffix]); + MatchBillData matchBillData = datas[key]; + if (networkControl[matchBillData.SettOrgId] && Convert.ToBoolean(item["FTheIsMatch" + suffix])) + { + result.ValidationErrors.Add(new ValidationErrorInfo("", "", 0, 0, key.ToString(), string.Format(ResManager.LoadKDString("单据【{0}】所在的结算组织正在核销中!", "003192000009377", SubSystemType.FIN), matchBillData.BillNo), ResManager.LoadKDString("核销失败", "003192000009378", SubSystemType.FIN))); + matchBillData.TheIsMatch = false; + continue; + } + + if (writeOffNetworkControl.Contains(matchBillData.BillId + "_" + matchBillData.FromId) && Convert.ToBoolean(item["FTheIsMatch" + suffix])) + { + result.ValidationErrors.Add(new ValidationErrorInfo("", "", 0, 0, key.ToString(), string.Format(ResManager.LoadKDString("单据【{0}】正在转销中,不允许特殊核销!", "003192000024575", SubSystemType.FIN), matchBillData.BillNo), ResManager.LoadKDString("核销失败", "003192000009378", SubSystemType.FIN))); + matchBillData.TheIsMatch = false; + continue; + } + + matchBillData.TheIsMatch = Convert.ToBoolean(item["FTheIsMatch" + suffix]); + if (MatchType == "1" || MatchType == "3" || MatchType == "2" || MatchType == "4") + { + matchBillData.FieldValues["FAbstract"] = ((item["FAbstract" + suffix] == null) ? " " : item["FAbstract" + suffix]); + } + + ResultRowData(matchBillData, item, suffix); + } + } + + protected virtual void ShowFilterBill(string billDirection) + { + FilterShowParameter filterShowParameter = new FilterShowParameter(); + if (View.Model.BusinessInfo.GetForm().Id == "AR_BadDebtLossHandleList") + { + filterShowParameter.FormId = "AR_BadDebtLossFilter"; + } + else + { + filterShowParameter.FormId = FilterFromId; + } + + if (billDirection.EqualsIgnoreCase("1")) + { + filterShowParameter.OpenStyle.CacheId = string.Format("{0}{1}", View.PageId, "_up"); + } + else if (billDirection.EqualsIgnoreCase("-1")) + { + filterShowParameter.OpenStyle.CacheId = string.Format("{0}{1}", View.PageId, "_down"); + } + + filterShowParameter.ParentPageId = View.PageId; + filterShowParameter.CustomParams.Add("MtachType", MatchType); + filterShowParameter.CustomParams.Add("BillDirection", billDirection); + filterShowParameter.CustomComplexParams.Add("Business", _businessInfo); + filterShowParameter.CustomComplexParams.Add("LayoutInfo", _layoutInfo); + View.ShowForm(filterShowParameter, delegate (FormResult result) + { + object returnData = result.ReturnData; + if (returnData is FilterParameter) + { + FilterParameter filterParameter = returnData as FilterParameter; + if (filterParameter.CustomFilter.DynamicObjectType.Properties.Contains("FSynchFilterOtherBill") && Convert.ToBoolean(filterParameter.CustomFilter["FSynchFilterOtherBill"])) + { + DivFilter(View.Model.BusinessInfo.GetForm().Id, filterParameter); + } + else + { + RefreshBillData(billDirection, filterParameter); + } + } + }); + } + + protected virtual void RefreshBillData(string billDirection, FilterParameter filterPara) + { + if (billDirection.Equals("1")) + { + _debitFilterPara = filterPara; + } + else + { + _creditFilterPara = filterPara; + } + + SetGenBussinessDate(); + GetBillData(billDirection, filterPara); + HideColoumByFilter(billDirection); + } + + protected virtual void RefreshBillDataFliter(string billDirection, FilterParameter filterPara) + { + if (billDirection.Equals("1")) + { + _debitFilterPara = filterPara; + } + else + { + _creditFilterPara = filterPara; + } + + GetBillData(billDirection, filterPara); + HideColoumByFilter(billDirection); + } + + private void HideColoumByFilter(string billDirection) + { + if (billDirection.Equals("1")) + { + List filterByColumnSetting = GetFilterByColumnSetting(_debitFilterPara, DebitSuffix); + List fields = _businessInfo.GetEntryEntity(DebitEntryKey).Fields; + if (!filterByColumnSetting.IsEmpty()) + { + SetFiledVisible(filterByColumnSetting, fields); + } + + View.GetControl("FTheIsMatchD").Visible = true; + return; + } + + List filterByColumnSetting2 = GetFilterByColumnSetting(_creditFilterPara, CrebitSuffix); + List fields2 = _businessInfo.GetEntryEntity(CreditEntryKey).Fields; + string id = View.Model.BusinessInfo.GetForm().Id; + if ((!(id == "AR_RecSpecial") && !(id == "AR_BadDebtLossHandleList")) || !(Convert.ToString(View.OpenParameter.GetCustomParameter("isBeInvoked")) == "1") || !filterByColumnSetting2.IsEmpty()) + { + SetFiledVisible(filterByColumnSetting2, fields2); + } + + View.GetControl("FTheIsMatchC").Visible = true; + } + + private List GetFilterByColumnSetting(FilterParameter filterPara, string suffix) + { + List list = new List(); + if (filterPara.SchemeEntity != null && filterPara.SchemeEntity.ColumnSetting != null) + { + JSONArray jSONArray = new JSONArray(filterPara.SchemeEntity.ColumnSetting); + for (int i = 0; i < jSONArray.Count; i++) + { + Dictionary dictionary = (Dictionary)jSONArray[i]; + ColumnField columnField = new ColumnField(); + if (dictionary.ContainsKey("F")) + { + columnField.Key = dictionary.GetString("F") + suffix; + } + + if (dictionary.ContainsKey("V")) + { + columnField.Visible = (int)dictionary["V"] == 1; + } + else + { + columnField.Visible = true; + } + + columnField.ColIndex = i; + if (columnField.Visible && !columnField.Key.IsNullOrEmptyOrWhiteSpace()) + { + list.Add(columnField); + } + } + } + + return list; + } + + private void SetFiledVisible(List fieldList, List fdList) + { + foreach (Field fd in fdList) + { + View.GetControl(fd.Key).Visible = false; + } + + foreach (ColumnField field in fieldList) + { + View.GetControl(field.Key).Visible = true; + } + } + + protected virtual void GetBillData(string billDirection, FilterParameter filterPara) + { + string text = ""; + string text2 = ""; + if (billDirection.Equals("1")) + { + text = DebitEntryKey; + text2 = DebitSuffix; + _DebitDataTime = TimeServiceHelper.GetSystemDateTime(base.Context); + } + else + { + text = CreditEntryKey; + text2 = CrebitSuffix; + _CreditDataTime = TimeServiceHelper.GetSystemDateTime(base.Context); + } + + if (filterPara == null) + { + return; + } + + List list = null; + list = ServiceFactory.GetService(View.Context).GetBaseDataTempTable(View.Context, View.BusinessInfo.GetForm().Id); + MatchParameters matchParameters = new MatchParameters(); + matchParameters.MatchType = MatchType; + matchParameters.BillDirection = billDirection; + matchParameters.SelectBillFromId = MatchBillSelect; + matchParameters.SpecialMatch = true; + matchParameters.FilterFromId = FilterFromId; + matchParameters.IsBadDebt = ((View.BusinessInfo.GetForm().Id == "AR_BadDebtLossHandleList") ? true : false); + matchParameters.baseDataTempTable = list; + Dictionary outCacheTable = new Dictionary(); + Dictionary billData = MatchServiceHelper.GetBillData(View.Context, matchParameters, filterPara, out outCacheTable, temptable); + + temptable = outCacheTable; + List list2 = new List(); + if (billDirection.Equals("1")) + { + DebitDate = billData; + SetEntityData(text, text2, billData); + } + else + { + foreach (KeyValuePair item in billData) + { + item.Value.FieldValues["FEntryId"] = -Convert.ToInt64(item.Value.FieldValues["FEntryId"]); + long num = Convert.ToInt64(item.Value.FieldValues["FPAYORGID"]); + if (num > 0) + { + long obj = Convert.ToInt64(item.Value.FieldValues["FSETTLEORGID"]); + string formId = item.Value.FieldValues["FFromId"].ToString(); + if (!num.Equals(obj) && FormIds.Any((string p) => p.EqualsIgnoreCase(formId))) + { + list2.Add(Convert.ToInt64(item.Key)); + } + } + } + + Dictionary dictionary = new Dictionary(); + int num2 = 1; + foreach (KeyValuePair item2 in billData) + { + dictionary.Add(num2, item2.Value); + num2++; + } + + CrebitDate = dictionary; + SetEntityData(text, text2, dictionary); + } + + isRefresh = false; + } + + private void SetEntityData(string entityKey, string entitySuffix, Dictionary datas) + { + if (datas == null) + { + return; + } + + Dictionary> dictionary = new Dictionary>(); + foreach (string baseDataFieldName in showBaseField) + { + string key = baseDataFieldName + entitySuffix; + if (!(View.Model.BillBusinessInfo.GetField(key) is BaseDataField baseDataField)) + { + continue; + } + + MatchFieldConfig matchFieldConfig = Configs.FirstOrDefault((MatchFieldConfig item) => item.FieldName == baseDataFieldName && item.FieldType == "1"); + if (matchFieldConfig == null || dictionary.Keys.Contains(baseDataFieldName)) + { + continue; + } + + dictionary.Add(baseDataFieldName, new Dictionary()); + List list = new List(); + foreach (MatchBillData value in datas.Values) + { + if (!value.FieldValues[baseDataFieldName].IsNullOrEmptyOrWhiteSpace() && Convert.ToString(value.FieldValues[baseDataFieldName]) != "0" && !list.Contains(value.FieldValues[baseDataFieldName])) + { + list.Add(value.FieldValues[baseDataFieldName]); + } + } + + if (list.Count <= 0) + { + continue; + } + + DynamicObject[] array = BusinessDataServiceHelper.LoadFromCache(base.Context, list.ToArray(), baseDataField.RefFormDynamicObjectType); + if (array != null && array.Count() > 0) + { + DynamicObject[] array2 = array; + foreach (DynamicObject dynamicObject in array2) + { + dictionary[baseDataFieldName].AddWithoutExists(Convert.ToInt64(dynamicObject["Id"]), dynamicObject); + } + } + } + + View.Model.DeleteEntryData(entityKey); + View.GetEntryState(entityKey).CurrentPageIndex = 0; + int num = 0; + View.Model.BeginIniti(); + if (datas.Count > 0) + { + View.Model.BatchCreateNewEntryRow(entityKey, datas.Count); + } + + foreach (KeyValuePair data in datas) + { + SelectReverse(data.Value); + View.Model.SetValue("FEntryId" + entitySuffix, data.Key, num); + MatchFieldConfig[] configs = Configs; + foreach (MatchFieldConfig matchFieldConfig2 in configs) + { + string text = matchFieldConfig2.FieldName + entitySuffix; + if (!SetFieldValue.Keys.Contains(matchFieldConfig2.FieldName) && showBaseField.Contains(matchFieldConfig2.FieldName) && dictionary.Keys.Contains(matchFieldConfig2.FieldName)) + { + if (dictionary[matchFieldConfig2.FieldName].ContainsKey(Convert.ToInt64(data.Value.FieldValues[matchFieldConfig2.FieldName]))) + { + View.Model.SetValue(text, dictionary[matchFieldConfig2.FieldName][Convert.ToInt64(data.Value.FieldValues[matchFieldConfig2.FieldName])], num); + View.Model.SetValue(text + "_Id", data.Value.FieldValues[matchFieldConfig2.FieldName], num); + } + } + else + { + SetRowDate(text, matchFieldConfig2.FieldName, matchFieldConfig2.ShowName, num, data.Value.FieldValues); + } + } + + num++; + } + + foreach (string item in sumField) + { + View.Model.SetValue(item + entitySuffix, 0); + View.UpdateView(item + entitySuffix); + } + + SetSumFieldValue(entitySuffix, datas); + View.Model.EndIniti(); + View.UpdateView(entityKey); + } + + protected virtual void SetSumFieldValue(string entitySuffix, Dictionary datas) + { + } + + protected virtual void SelectReverse(MatchBillData data) + { + } + + protected void SetWriteQtyValue(string key, string fieldName, DynamicObject data, int row) + { + if (data.DynamicObjectType.Properties.ContainsKey("FSpecialQTY")) + { + decimal num = Convert.ToDecimal(data[fieldName]) + Convert.ToDecimal(data["FSpecialQTY"]); + object valueWithScale = GetValueWithScale(num, Convert.ToInt16(data["FBASICUNITIDDigits"])); + View.Model.SetValue(key, valueWithScale, row); + View.Model.SetValue(key, num, row); + } + else + { + View.Model.SetValue(key, data[fieldName], row); + } + } + + protected void SetWriteAmountValue(string key, string fieldName, DynamicObject data, int row) + { + if (data.DynamicObjectType.Properties.ContainsKey("FSpecialAmountFor")) + { + decimal num = Convert.ToDecimal(data[fieldName]) + Convert.ToDecimal(data["FSpecialAmountFor"]); + object valueWithScale = GetValueWithScale(num, Convert.ToInt16(data["FAmountDigits"])); + View.Model.SetValue(key, valueWithScale, row); + View.Model.SetValue(key, num, row); + } + else + { + View.Model.SetValue(key, data[fieldName], row); + } + } + + private Field CreateIntField(string entryKey, MatchFieldConfig fieldConfig) + { + Field field = ((!string.IsNullOrWhiteSpace(fieldConfig.ShowName)) ? ((Field)new TextField()) : ((Field)new IntegerField())); + CreateField(entryKey, fieldConfig, field); + return field; + } + + private IntegerField CreateIntField(string entryKey, string fieldName) + { + IntegerField integerField = new IntegerField(); + integerField.EntityKey = entryKey; + if (entryKey.Equals(DebitEntryKey, StringComparison.OrdinalIgnoreCase)) + { + integerField.Key = fieldName + DebitSuffix; + integerField.PropertyName = fieldName + DebitSuffix; + } + else + { + integerField.Key = fieldName + CrebitSuffix; + integerField.PropertyName = fieldName + CrebitSuffix; + } + + return integerField; + } + + private Field CreateDecimalField(string entryKey, MatchFieldConfig fieldConfig) + { + DecimalField decimalField = new DecimalField(); + CreateField(entryKey, fieldConfig, decimalField); + decimalField.FieldPrecision = 23; + decimalField.ZeroShow = 1; + decimalField.FieldScale = 10; + return decimalField; + } + + private Field CreateTextField(string entryKey, MatchFieldConfig fieldConfig) + { + TextField textField = new TextField(); + if (fieldConfig.FieldName.ToUpperInvariant() == "FABSTRACT") + { + textField.Editlen = 255; + } + + CreateField(entryKey, fieldConfig, textField); + return textField; + } + + private Field CreateDateField(string entryKey, MatchFieldConfig fieldConfig) + { + DateField dateField = new DateField(); + CreateField(entryKey, fieldConfig, dateField); + return dateField; + } + + private Field CreateDateTimeField(string entryKey, MatchFieldConfig fieldConfig) + { + DateTimeField dateTimeField = new DateTimeField(); + CreateField(entryKey, fieldConfig, dateTimeField); + return dateTimeField; + } + + private Field CreateBooleanField(string entryKey, MatchFieldConfig fieldConfig) + { + CheckBoxField checkBoxField = new CheckBoxField(); + CreateField(entryKey, fieldConfig, checkBoxField); + return checkBoxField; + } + + private void CreateField(string entryKey, MatchFieldConfig fieldConfig, Field field) + { + field.EntityKey = entryKey; + LocaleValue localeValue = new LocaleValue(); + foreach (MatchFieldConfigLocale langInfo in fieldConfig.LangInfos) + { + localeValue.Add(new KeyValuePair(langInfo.LocalId, langInfo.Name)); + } + + field.Name = localeValue; + field.FieldName = fieldConfig.FieldName; + field.FireUpdateEvent = FireUpdateEvent(fieldConfig); + if (entryKey.Equals(DebitEntryKey, StringComparison.OrdinalIgnoreCase)) + { + field.Key = fieldConfig.FieldName + DebitSuffix; + field.PropertyName = fieldConfig.FieldName + DebitSuffix; + } + else + { + field.Key = fieldConfig.FieldName + CrebitSuffix; + field.PropertyName = fieldConfig.FieldName + CrebitSuffix; + } + } + + private FieldAppearance CreateIntFieldApp(string entryKey, MatchFieldConfig fieldConfig) + { + FieldAppearance fieldAppearance = ((!string.IsNullOrWhiteSpace(fieldConfig.ShowName)) ? ((FieldAppearance)new TextFieldAppearance()) : ((FieldAppearance)new IntegerFieldAppearance())); + CreateFieldApp(entryKey, fieldConfig, fieldAppearance); + return fieldAppearance; + } + + private FieldAppearance CreateIntFieldApp(string entryKey, string fieldName) + { + FieldAppearance fieldAppearance = new IntegerFieldAppearance(); + fieldAppearance.EntityKey = entryKey; + fieldAppearance.Locked = -1; + fieldAppearance.Visible = 29; + if (entryKey.Equals(DebitEntryKey, StringComparison.OrdinalIgnoreCase)) + { + fieldAppearance.Key = fieldName + DebitSuffix; + } + else + { + fieldAppearance.Key = fieldName + CrebitSuffix; + } + + fieldAppearance.Field = _businessInfo.GetField(fieldAppearance.Key); + return fieldAppearance; + } + + private FieldAppearance CreateDecimalFieldApp(string entryKey, MatchFieldConfig fieldConfig) + { + DecimalFieldAppearance decimalFieldAppearance = new DecimalFieldAppearance(); + CreateFieldApp(entryKey, fieldConfig, decimalFieldAppearance); + return decimalFieldAppearance; + } + + private FieldAppearance CreateTextFieldApp(string entryKey, MatchFieldConfig fieldConfig) + { + TextFieldAppearance textFieldAppearance = new TextFieldAppearance(); + CreateFieldApp(entryKey, fieldConfig, textFieldAppearance); + return textFieldAppearance; + } + + private FieldAppearance CreateDateFieldApp(string entryKey, MatchFieldConfig fieldConfig) + { + DateFieldAppearance dateFieldAppearance = new DateFieldAppearance(); + CreateFieldApp(entryKey, fieldConfig, dateFieldAppearance); + return dateFieldAppearance; + } + + private FieldAppearance CreateDateTimeFieldApp(string entryKey, MatchFieldConfig fieldConfig) + { + DateTimeFieldAppearance dateTimeFieldAppearance = new DateTimeFieldAppearance(); + CreateFieldApp(entryKey, fieldConfig, dateTimeFieldAppearance); + return dateTimeFieldAppearance; + } + + private FieldAppearance CreateBooleanFieldApp(string entryKey, MatchFieldConfig fieldConfig) + { + CheckBoxFieldAppearance checkBoxFieldAppearance = new CheckBoxFieldAppearance(); + CreateFieldApp(entryKey, fieldConfig, checkBoxFieldAppearance); + return checkBoxFieldAppearance; + } + + private void CreateFieldApp(string entryKey, MatchFieldConfig fieldConfig, FieldAppearance field) + { + field.EntityKey = entryKey; + LocaleValue localeValue = new LocaleValue(); + LocaleValue localeValue2 = new LocaleValue(); + foreach (MatchFieldConfigLocale langInfo in fieldConfig.LangInfos) + { + localeValue.Add(new KeyValuePair(langInfo.LocalId, langInfo.Name)); + localeValue2.Add(new KeyValuePair(langInfo.LocalId, fieldConfig.Width.ToString())); + } + + field.Caption = localeValue; + field.Width = localeValue2; + field.Locked = FieldLocked(fieldConfig); + field.Visible = (fieldConfig.IsShowSpecial.Equals("1") ? (-1) : 29); + if (entryKey.Equals(DebitEntryKey, StringComparison.OrdinalIgnoreCase)) + { + field.Key = fieldConfig.FieldName + DebitSuffix; + } + else + { + field.Key = fieldConfig.FieldName + CrebitSuffix; + } + + field.Field = _businessInfo.GetField(field.Key); + } + + protected virtual int FieldLocked(MatchFieldConfig fieldConfig) + { + return -1; + } + + protected virtual int FireUpdateEvent(MatchFieldConfig fieldConfig) + { + return 0; + } + + protected DynamicObjectCollection GetOrganization(Context ctx, List lstAllOrgIDS) + { + new List(); + List list = new List(); + list.Add(new SelectorItemInfo("FORGID")); + list.Add(new SelectorItemInfo("FNUMBER")); + list.Add(new SelectorItemInfo("FNAME")); + string settleInFilter = GetSettleInFilter("FORGID", lstAllOrgIDS); + settleInFilter += $" AND FORGFUNCTIONS LIKE '%{107L.ToString()}%' "; + QueryBuilderParemeter queryBuilderParemeter = new QueryBuilderParemeter(); + queryBuilderParemeter.FormId = "ORG_Organizations"; + queryBuilderParemeter.SelectItems = list; + queryBuilderParemeter.FilterClauseWihtKey = settleInFilter; + QueryBuilderParemeter para = queryBuilderParemeter; + return QueryServiceHelper.GetDynamicObjectCollection(base.Context, para); + } + + protected string GetSettleInFilter(string key, List valList) + { + if (valList == null || valList.IsEmpty()) + { + return $"{key} = -1 "; + } + + return string.Format("{0} in ({1})", key, string.Join(",", valList)); + } + + protected List GetSettleOrgsPermissonValue() + { + return permissionOrgSettleInfos.Select((DynamicObject p) => Convert.ToInt64(p["FORGID"])).ToList(); + } + + protected void SetDateValueForOrgID() + { + foreach (KeyValuePair closeDateInfo in CloseDateInfos) + { + SetCloseDateValueByOrgID.AddWithoutExists(closeDateInfo.Key, closeDateInfo.Value.AddDays(1.0)); + } + + foreach (KeyValuePair startDateInfo in StartDateInfos) + { + SetCloseDateValueByOrgID.AddWithoutExists(startDateInfo.Key, startDateInfo.Value); + } + } + + protected void SetGenBussinessDate() + { + if (SetCloseDateValueByOrgID.Count != 0) + { + DateTime dateTime = Convert.ToDateTime(View.Model.GetValue(FGenDate)); + new List(); + DateTime dateTime2 = default(DateTime); + DateTime dateTime3 = default(DateTime); + if (_debitFilterPara != null) + { + dateTime3 = GetManClosDate(_debitFilterPara); + } + + if (_creditFilterPara != null) + { + dateTime2 = GetManClosDate(_creditFilterPara); + } + + dateTime2 = (MinGenBussinessDate = ((dateTime2 < dateTime3) ? dateTime3 : dateTime2)); + if (dateTime < dateTime2) + { + View.Model.SetValue(FGenDate, dateTime2); + } + } + } + + private DateTime GetManClosDate(FilterParameter fFilterPara) + { + string text = fFilterPara.CustomFilter["FSETTLEORGID"].ToString(); + string[] array = text.Split(','); + DateTime dateTime = default(DateTime); + string[] array2 = array; + foreach (string value in array2) + { + long orgId = Convert.ToInt64(value); + if (!lstSettlesOrgPermissionIDs.Any((long p) => p == orgId) || !SetCloseDateValueByOrgID.Keys.Any((long p) => p == orgId)) + { + break; + } + + DateTime dateTime2 = SetCloseDateValueByOrgID[orgId]; + if (dateTime2 > dateTime) + { + dateTime = dateTime2; + } + } + + return dateTime; + } + + protected void SetGenBussinessWhenBeforeUpdate(BeforeUpdateValueEventArgs e) + { + if (!e.Key.Equals(FGenDate)) + { + return; + } + + DateTime.TryParse(e.Value.ToString(), out var result); + string id = View.Model.BusinessInfo.GetForm().Id; + if (_debitFilterPara != null) + { + string text = _debitFilterPara.CustomFilter["FSETTLEORGID"].ToString(); + string[] array = text.Split(','); + if (array.Count() == 1 && (id == "AR_RecSpecial" || id == "AP_PaySpecial")) + { + long num = Convert.ToInt64(array[0]); + if (CloseDateInfos.Keys.Contains(num) && result <= CloseDateInfos[num]) + { + string text2 = ResManager.LoadKDString("应付系统已结帐,生成的应付核销单业务日期必须大于:", "003192000025982", SubSystemType.FIN); + if (id == "AR_RecSpecial") + { + text2 = ResManager.LoadKDString("应收系统已结帐,生成的应收核销单业务日期必须大于:", "003192000023370", SubSystemType.FIN); + } + + View.ShowMessage(text2 + CloseDateInfos[num].ToShortDateString()); + e.Cancel = true; + } + } + } + + if (result < MinGenBussinessDate && id != "AR_RecSpecial" && id != "AP_PaySpecial") + { + string text3 = ResManager.LoadKDString("生成核销单的业务日期不能小于:", "003192000009379", SubSystemType.FIN); + View.ShowMessage(text3 + MinGenBussinessDate.ToShortDateString()); + e.Cancel = true; + } + + object value = View.Model.GetValue(FGenDate, 0); + if (value != null) + { + DateTime dateTime = Convert.ToDateTime(value); + if (!(dateTime <= result)) + { + UnSelectData(DebitEntryKey, DebitSuffix, result); + UnSelectData(CreditEntryKey, CrebitSuffix, result); + } + } + } + + private void UnSelectData(string entryKeys, string entrysSuffix, DateTime newValue) + { + int num = 0; + num = View.Model.GetEntryRowCount(entryKeys); + DateTime dateTime = default(DateTime); + string text = "FDate"; + text += entrysSuffix; + bool flag = false; + for (int i = 0; i < num; i++) + { + if (Convert.ToBoolean(View.Model.GetValue("FTheIsMatch" + entrysSuffix, i))) + { + dateTime = Convert.ToDateTime(View.Model.GetValue(text, i)); + if (newValue < dateTime) + { + View.Model.SetValue("FTheIsMatch" + DebitSuffix, false, i); + } + } + } + } + + protected void IsAllowSelected(BeforeUpdateValueEventArgs e) + { + string text = "FDate"; + bool flag = false; + if (e.Key.Equals("FTheIsMatch" + DebitSuffix)) + { + flag = true; + text += DebitSuffix; + } + + if (!flag && e.Key.Equals("FTheIsMatch" + CrebitSuffix)) + { + flag = true; + text += CrebitSuffix; + } + + if (!flag || !(bool)e.Value) + { + return; + } + + object value = View.Model.GetValue(text, e.Row); + if (!value.IsNullOrEmptyOrWhiteSpace()) + { + string strB = Convert.ToDateTime(value).ToShortDateString(); + object value2 = View.Model.GetValue(FGenDate, 0); + string text2 = ""; + if (value2.IsNullOrEmptyOrWhiteSpace()) + { + text2 = ResManager.LoadKDString("请设置生成单据的业务日期", "003192000009380", SubSystemType.FIN); + View.ShowMessage(text2); + e.Cancel = true; + } + + string text3 = Convert.ToDateTime(value2).ToShortDateString(); + if (string.Compare(text3, strB) < 0) + { + text2 = ResManager.LoadKDString("选择单据的业务日期不能大于{0}", "003192000014955", SubSystemType.FIN); + text2 = string.Format(text2, text3); + View.ShowMessage(text2); + e.Cancel = true; + } + } + } + + private void ShowCheckResult() + { + if (CheckResult.IsNullOrEmptyOrWhiteSpace() || CheckResult.CheckResultDetail.Count <= 0) + { + View.ShowMessage(ResManager.LoadKDString("没有可显示的检查结果", "003192000024709", SubSystemType.FIN)); + return; + } + + DynamicFormShowParameter dynamicFormShowParameter = new DynamicFormShowParameter(); + dynamicFormShowParameter.FormId = "CheckResultAnalysis"; + dynamicFormShowParameter.ParentPageId = View.PageId; + dynamicFormShowParameter.CustomComplexParams.Add("CheckResult", CheckResult); + View.ShowForm(dynamicFormShowParameter); + } + + private DynamicObject GetDynamicObject(string formID) + { + FormMetadata formMetadata = (FormMetadata)MetaDataServiceHelper.Load(base.Context, formID); + DynamicObjectType dynamicObjectType = formMetadata.BusinessInfo.GetDynamicObjectType(); + return new DynamicObject(dynamicObjectType); + } + } +} \ No newline at end of file diff --git a/CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.py b/CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.py new file mode 100644 index 0000000..c55ea33 --- /dev/null +++ b/CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.py @@ -0,0 +1,80 @@ +#clrп +import clr +#Ӷcloudij +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еijʵ󣨷ռ䵼룬ݹ鵼룩 +from Kingdee.BOS.Core import * +from Kingdee.BOS.Util import * +from Kingdee.BOS.Core.Bill import * +from Kingdee.BOS.Core.Bill.PlugIn 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 Kingdee.BOS.App.Data import * +from System.Collections.Generic import List +from Kingdee.BOS.ServiceHelper import * + +def OnPreparePropertys(e): + e.FieldKeys.Add("F_CYG_Worktype") + e.FieldKeys.Add("FFinishQty") + e.FieldKeys.Add("FStdManHour") + e.FieldKeys.Add("FMaterialId") + e.FieldKeys.Add("FHRWORKTIME") + +def EndOperationTransaction(e): + # 8ύ9126 + if this.FormOperation.OperationId == 1: + # sqlList = """""" + sqlLList=List[str](); + for data in e.DataEntitys: + billId = data["Id"] + formId = data["FFormId"] + for item in data["PRD_MORPTENTRY"]: + entryId =item["Id"] + entrySeq = item["Seq"] + # ĬȡεԱʵʱ + hrWorkTime = item["HrWorkTime"] + fitTimeTotal = 0 + guideTimeTotal = 0 + workTimeTypeVal = item["F_CYG_Worktype"] + workTimeType = (0 if workTimeTypeVal.strip() == '' else int(workTimeTypeVal)) + # ʱ 0. 1.װʱ 2.ָװʱ 3.װʱ + if (workTimeType) > 0: + # + finishQty = item["FinishQty"] + # ׼λʱ + stdManHour = item["StdManHour"] + # 1.׼λʱ䲻ΪʱԱʵʱ = * ׼λʱ䣩 + if stdManHour != 0: + hrWorkTime = finishQty * stdManHour + if workTimeType != 3: + materialId = item["MaterialId"] + if workTimeType == 1: + fitTime = materialId["F_CYG_FitTime"] + fitTimeTotal = fitTime * finishQty + # 2.װʱ ׼λʱΪ0ʱ Աʵʱ = εݹʱ + if stdManHour == 0: + hrWorkTime = hrWorkTime - fitTimeTotal + if workTimeType == 2: + guideTime = materialId["F_CYG_GuideTime"] + guideTimeTotal = guideTime * finishQty + # 3.ָװʱ ׼λʱΪ0ʱ Աʵʱ = εݹʱ + if stdManHour == 0: + hrWorkTime = hrWorkTime - guideTimeTotal + sql = ("""/*dialect*/UPDATE T_CB_WORKHOURSENTRY SET F_CYG_Worktype = '{0}' ,FFitTimeTotal = {1},FguideTimeTotal = {2},FHrWorkTimePart = {3} + WHERE FSRCBILLID = {4} AND FSRCENTRYID = {5} AND FSRCSEQ = {6} AND FSRCBILLFORMID = '{7}' ;""").format(workTimeType,fitTimeTotal,guideTimeTotal,hrWorkTime,billId,entryId,entrySeq,formId) + # sqlList = sqlList + sql; + sqlLList.Add(sql); + # DBUtils.Execute(this.Context,sqlList) + if(sqlLList.Count > 0): + DBUtils.ExecuteBatch(this.Context,sqlLList,sqlLList.Count); \ No newline at end of file diff --git a/CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.pyproj b/CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.pyproj new file mode 100644 index 0000000..224fe41 --- /dev/null +++ b/CY.PRD_MORPT.Python/CY.PRD_MORPT.Python.pyproj @@ -0,0 +1,42 @@ + + + Debug + 2.0 + 72a852a8-55c5-4c72-95ed-13b3a6e670ef + . + CY.PRD_MORPT.Python.py + + + . + . + CY.PRD_MORPT.Python + CY.PRD_MORPT.Python + + + true + false + + + true + false + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CY.PRD_MORPT.Python/SQLServer/实际工时归集关联查询.sql b/CY.PRD_MORPT.Python/SQLServer/实际工时归集关联查询.sql new file mode 100644 index 0000000..3e4a0dc --- /dev/null +++ b/CY.PRD_MORPT.Python/SQLServer/实际工时归集关联查询.sql @@ -0,0 +1,72 @@ + SELECT + t0.FBILLNO + ,t0e.FSRCBILLNO + ,t0e.FENTRYID + ,t1e.F_CYG_WORKTYPE + ,t1e.FFINISHQTY + ,t1e.FSTDMANHOUR + ,t1e.FHRWORKTIME + ,t2p.FPERUNITSTANDHOUR + ,(CASE t1e.F_CYG_WORKTYPE --ʱ + WHEN '' THEN t1e.FHRWORKTIME --Աʵʱ + ELSE (CASE t1e.FSTDMANHOUR + WHEN 0 THEN t1e.FHRWORKTIME + ELSE t1e.FSTDMANHOUR * t1e.FFINISHQTY + END) + END) 'NEW_FHRWORKTIME' + ,t2.F_CYG_FITTIME + ,CASE t1e.F_CYG_WORKTYPE WHEN '1' THEN t2.F_CYG_FITTIME * t1e.FFINISHQTY ELSE 0 END 'NEW_FITTIME' + ,t2.F_CYG_GUIDETIME + ,CASE t1e.F_CYG_WORKTYPE WHEN '2' THEN t2.F_CYG_GUIDETIME * t1e.FFINISHQTY ELSE 0 END 'NEW_GUIDETIME' + INTO #temp + FROM T_CB_WORKHOURS t0 --ʵʹʱ鼯ͷ + INNER JOIN T_CB_WORKHOURSENTRY t0e on t0.FID = t0e.FID --ʵʹʱ鼯 + INNER JOIN T_PRD_MORPTENTRY t1e on t1e.FENTRYID = t0e.FSRCENTRYID --㱨 + AND t1e.FID = t0e.FSRCBILLID AND t1e.FSEQ = t0e.FSRCSEQ AND t0e.FSRCBILLFORMID = 'PRD_MORPT' + INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t1e.FMATERIALID + INNER JOIN T_BD_MATERIALPRODUCE t2p on t2p.FMATERIALID = t1e.FMATERIALID + +--ʱ ''. 1.װʱ 2.ָװʱ 3.װʱ +--㱨.ʱ == '' ʵʹʱ鼯.Աʵʱ# = 㱨.Աʵʱ + +--㱨.ʱ == 1 㱨.λ׼ʱ 0 :ʵʹʱ鼯.Աʵʱ# = 㱨.Աʵʱ - 㱨. * .װʱ# +-- 㱨.λ׼ʱ 0 :ʵʹʱ鼯.Աʵʱ# = 㱨. * 㱨.λ׼ʱ + +--㱨.ʱ == 2 㱨.λ׼ʱ 0 :ʵʹʱ鼯.Աʵʱ# = 㱨.Աʵʱ - 㱨. * .ָװʱ +-- 㱨.λ׼ʱ 0 :ʵʹʱ鼯.Աʵʱ# = 㱨. * 㱨.λ׼ʱ + +--㱨.ʱ == 3 㱨.λ׼ʱ 0 :ʵʹʱ鼯.Աʵʱ# = 㱨.Աʵʱ +-- 㱨.λ׼ʱ 0 :ʵʹʱ鼯.Աʵʱ# = 㱨. * 㱨.λ׼ʱ + + +--SELECT +-- t0.FBILLNO +-- ,t0.FSRCBILLNO +-- ,t0.FENTRYID +-- ,t0.F_CYG_WORKTYPE +-- ,t0.FFINISHQTY +-- ,t0.FSTDMANHOUR +-- ,t0.FHRWORKTIME +-- ,t0.FPERUNITSTANDHOUR +-- ,t0.NEW_FHRWORKTIME +-- ,t0.F_CYG_FITTIME +-- ,t0.NEW_FITTIME +-- ,t0.F_CYG_GUIDETIME +-- ,t0.NEW_GUIDETIME +-- INTO #temp1 +--FROM #temp t0 +--WHERE t0.FSTDMANHOUR = 0 + +-- +--UPDATE t0e +--SET t0e.F_CYG_WORKTYPE = t1.F_CYG_WORKTYPE +-- ,t0e.FFitTimeTotal =t1.NEW_FITTIME +-- ,t0e.FguideTimeTotal = t1.NEW_GUIDETIME +-- ,t0e.FHrWorkTimePart = t1.NEW_FHRWORKTIME +--FROM T_CB_WORKHOURSENTRY t0e +-- INNER JOIN #temp t1 on t0e.FENTRYID = t1.FENTRYID + +SELECT * FROM #temp +DROP TABLE #temp +--SELECT * FROM #temp1 +--DROP TABLE #temp1 \ No newline at end of file diff --git a/CY.PRD_MORPT.Python/SQLServer/长园客户与开票单位数据置换.sql b/CY.PRD_MORPT.Python/SQLServer/长园客户与开票单位数据置换.sql new file mode 100644 index 0000000..820c46c --- /dev/null +++ b/CY.PRD_MORPT.Python/SQLServer/长园客户与开票单位数据置换.sql @@ -0,0 +1,22 @@ +SELECT + t0.FBILLNO + ,t0.FID + ,t0.F_CYG_BASE AS 'NewCYG_BASE1' + ,t0.F_CYG_BASE1 AS 'NewCYG_BASE' + INTO #TEMP1 +FROM T_AR_REFUNDBILL t0 + +----SELECT * FROM #TEMP1 +SELECT + t0.FID + ,t0.F_CYG_BASE + ,tt.NewCYG_BASE + ,t0.F_CYG_BASE1 + ,tt.NewCYG_BASE1 +FROM T_AR_REFUNDBILL t0 + INNER JOIN #TEMP1 tt on t0.FID = tt.FID + +--UPDATE t0 SET t0.F_CYG_BASE =tt.NewCYG_BASE,t0.F_CYG_BASE1 =tt.NewCYG_BASE1 +--FROM T_AR_REFUNDBILL t0 +-- INNER JOIN #TEMP1 tt on t0.FID = tt.FID +DROP TABLE #TEMP1 \ No newline at end of file diff --git a/CY.PRD_MORPT.Python/类1.py b/CY.PRD_MORPT.Python/类1.py new file mode 100644 index 0000000..a6fa0ca --- /dev/null +++ b/CY.PRD_MORPT.Python/类1.py @@ -0,0 +1,82 @@ + +#clrп +import clr +#Ӷcloudij +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еijʵ󣨷ռ䵼룬ݹ鵼룩 +from Kingdee.BOS.Core import * +from Kingdee.BOS.Util import * +from Kingdee.BOS.Core.Bill import * +from Kingdee.BOS.Core.Bill.PlugIn 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 Kingdee.BOS.App.Data import * +from System.Collections.Generic import List +from Kingdee.BOS.ServiceHelper import * + +def OnPreparePropertys(e): + e.FieldKeys.Add("F_CYG_Worktype") + e.FieldKeys.Add("FFinishQty") + e.FieldKeys.Add("FStdManHour") + e.FieldKeys.Add("FMaterialId") + e.FieldKeys.Add("FHRWORKTIME") + +def EndOperationTransaction(e): + # 8ύ9126 + if this.FormOperation.Operation == "DoUpdateWorkTime": + # sqlList = """""" + sqlLList=List[str](); + for data in e.DataEntitys: + billId = data["Id"] + formId = data["FFormId"] + for item in data["PRD_MORPTENTRY"]: + entryId =item["Id"] + entrySeq = item["Seq"] + # ĬȡεԱʵʱ + hrWorkTime = item["HrWorkTime"] + fitTimeTotal = 0 + guideTimeTotal = 0 + workTimeTypeVal = item["F_CYG_Worktype"] + workTimeType = (0 if workTimeTypeVal.strip() == '' else int(workTimeTypeVal)) + # ʱ 0. 1.װʱ 2.ָװʱ 3.װʱ + if (workTimeType) > 0: + # + finishQty = item["FinishQty"] + # ׼λʱ + stdManHour = item["StdManHour"] + # 1.׼λʱ䲻ΪʱԱʵʱ = * ׼λʱ䣩 + if stdManHour != 0: + hrWorkTime = finishQty * stdManHour + if workTimeType != 3: + materialId = item["MaterialId"] + if workTimeType == 1: + fitTime = materialId["F_CYG_FitTime"] + fitTimeTotal = fitTime * finishQty + # 2.װʱ ׼λʱΪ0ʱ Աʵʱ = εݹʱ + if stdManHour == 0: + hrWorkTime = hrWorkTime - fitTimeTotal + if workTimeType == 2: + guideTime = materialId["F_CYG_GuideTime"] + guideTimeTotal = guideTime * finishQty + # 3.ָװʱ ׼λʱΪ0ʱ Աʵʱ = εݹʱ + if stdManHour == 0: + hrWorkTime = hrWorkTime - guideTimeTotal + sql = ("""/*dialect*/UPDATE T_CB_WORKHOURSENTRY SET F_CYG_Worktype = '{0}' ,FFitTimeTotal = {1},FguideTimeTotal = {2},FHrWorkTimePart = {3} + WHERE FSRCBILLID = {4} AND FSRCENTRYID = {5} AND FSRCSEQ = {6} AND FSRCBILLFORMID = '{7}' ;""").format(workTimeType,fitTimeTotal,guideTimeTotal,hrWorkTime,billId,entryId,entrySeq,formId) + # sqlList = sqlList + sql; + sqlLList.Add(sql); + # DBUtils.Execute(this.Context,sqlList) + if(sqlLList.Count > 0): + # raise Exception(",".join(sqlLList)); + DBUtils.ExecuteBatch(this.Context,sqlLList,sqlLList.Count); \ No newline at end of file diff --git a/CY.PRD_MORPT/CY.PRD_MORPT.csproj b/CY.PRD_MORPT/CY.PRD_MORPT.csproj new file mode 100644 index 0000000..d018b55 --- /dev/null +++ b/CY.PRD_MORPT/CY.PRD_MORPT.csproj @@ -0,0 +1,75 @@ + + + + + Debug + AnyCPU + {472326F6-01F0-41CA-B124-06D987BA6668} + Library + Properties + CY.PRD_MORPT + CY.PRD_MORPT + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + {50532462-8f7f-455c-b4b3-732ed764e2fa} + ExtensionMethods + + + + + + + \ No newline at end of file diff --git a/CY.PRD_MORPT/Properties/AssemblyInfo.cs b/CY.PRD_MORPT/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ad22c10 --- /dev/null +++ b/CY.PRD_MORPT/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("CY.PRD_MORPT")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CY.PRD_MORPT")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("472326f6-01f0-41ca-b124-06d987ba6668")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CY.PRD_MORPT/SetWorkTimeAfterAuditOperationServicePlugIn.cs b/CY.PRD_MORPT/SetWorkTimeAfterAuditOperationServicePlugIn.cs new file mode 100644 index 0000000..13cb273 --- /dev/null +++ b/CY.PRD_MORPT/SetWorkTimeAfterAuditOperationServicePlugIn.cs @@ -0,0 +1,137 @@ +using ExtensionMethods; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Log; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using Newtonsoft.Json; +using System; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace CY.PRD_MORPT +{ + /// + /// 【服务插件】操作执行后事物结束前修改单据数据包 + /// + [Description("【服务插件_ex】任务汇报审核时,计算人员实作工时"), HotUpdate] + public class SetWorkTimeAfterAuditOperationServicePlugIn : AbstractOperationServicePlugIn + { + public override void OnPreparePropertys(PreparePropertysEventArgs e) + { + base.OnPreparePropertys(e); + //本地测试-工时类型 + e.FieldKeys.Add("FWorkTimeType"); + //长园-工时类型 + //e.FieldKeys.Add("F_CYG_Worktype"); + e.FieldKeys.Add("FFinishQty"); + e.FieldKeys.Add("FStdManHour"); + e.FieldKeys.Add("FMaterialId"); + } + + /// + /// 操作事物后事件(事务内触发) + /// + /// + /// + /// 1. 此事件在操作执行代码之后,操作的内部逻辑已经执行完毕 + /// 2. 此事件在操作事务提交之前 + /// 3. 此事件中的数据库处理,受操作的事务保护 + /// 4. 通常此事件,可以用来做同步数据,如同步生成其他单据,而且需要受事务保护 + /// + public override void EndOperationTransaction(EndOperationTransactionArgs e) + { + base.EndOperationTransaction(e); + // 保存8提交9审核1反审核26 + if (this.FormOperation.OperationId == 1) + //if (this.FormOperation.Operation.EqualsIgnoreCase("Audit")) + { + var dataEntitys = e.DataEntitys; + if (dataEntitys.Any()) + { + var updateSQLList = new StringBuilder(); + foreach (var data in dataEntitys) + { + var id = data["Id"].ToString(); + var formId = data["FFormId"].ToString(); + foreach (var item in data["PRD_MORPTENTRY"] as DynamicObjectCollection) + { + var entryId = item["Id"].ToString(); + var entrySeq = item["Seq"].ToString(); + //人员实作工时 + var hrWorkTime = item["FHRWORKTIME"].ToDouble(); + + // 安装 F_CYG_FitTime + var fitTimeTotal = 0D; + // 指导安装 F_CYG_GuideTime + var guideTimeTotal = 0D; + + //工时类型 0.无 1.含安装工时 2.指导安装工时 3.不含安装工时 + var workTimeType = item["FWorkTimeType"].Long2Int(); + + if (workTimeType > 0) + { + //完成数量 + var finishQty = item["FinishQty"].ToDouble(); + //单位标准工时 + var stdManHour = item["StdManHour"].ToDouble(); + + if (stdManHour != 0) + hrWorkTime = finishQty * stdManHour; + + if (workTimeType != 3) + { + var materialId = item["MaterialId"] as DynamicObject; + + if (workTimeType == 1) + { + var fitTime = materialId["F_CYG_FitTime"].ToDouble(); + fitTimeTotal = fitTime * finishQty; + if (stdManHour == 0) + hrWorkTime -= fitTimeTotal; + } + + if (workTimeType == 2) + { + var guideTime = materialId["F_CYG_GuideTime"].ToDouble(); + guideTimeTotal = guideTime * finishQty; + if (stdManHour == 0) + hrWorkTime -= guideTimeTotal; + } + } + } + + updateSQLList.AppendLine($@" +UPDATE T_CB_WORKHOURSENTRY +SET FWorkTimeType = '{workTimeType}' ,FFitTimeTotal = {fitTimeTotal},FguideTimeTotal = {guideTimeTotal},FHrWorkTimePart = {hrWorkTime} +WHERE FSRCBILLID = {id} + AND FSRCENTRYID = {entryId} + AND FSRCSEQ = {entrySeq} + AND FSRCBILLFORMID = '{formId}';"); + } + } + //Logger.Info("审核测试", JsonConvert.SerializeObject(e)); + //Logger.Info("审核测试2", updateSQLList.ToString()); + var sql = updateSQLList.ToString(); + + if (!updateSQLList.IsNullOrEmpty()) + DBUtils.Execute(this.Context, "/*dialect*/" + sql); + + + } + + + // 保存变更后的数据 + + //new BusinessDataWriter(Context).Save(e.DataEntitys); + + } + } + + } + +} + + diff --git a/CY.PRD_MORPT/实际工时归集关联查询.sql b/CY.PRD_MORPT/实际工时归集关联查询.sql new file mode 100644 index 0000000..1623a10 --- /dev/null +++ b/CY.PRD_MORPT/实际工时归集关联查询.sql @@ -0,0 +1,51 @@ + SELECT + t0.FBILLNO + ,t0e.FSRCBILLNO + ,t0e.FENTRYID + ,t1e.F_CYG_WORKTYPE + ,t1e.FFINISHQTY + ,t1e.FSTDMANHOUR + ,t1e.FHRWORKTIME + ,t2p.FPERUNITSTANDHOUR + ,CASE t1e.F_CYG_WORKTYPE WHEN '' THEN t1e.FHRWORKTIME ELSE (CASE t1e.FSTDMANHOUR WHEN 0 THEN t1e.FHRWORKTIME ELSE t1e.FSTDMANHOUR * t1e.FFINISHQTY END) END 'NEW_FHRWORKTIME' + ,t2.F_CYG_FITTIME + ,CASE t1e.F_CYG_WORKTYPE WHEN '1' THEN t2.F_CYG_FITTIME * t1e.FFINISHQTY ELSE 0 END 'NEW_FITTIME' + ,t2.F_CYG_GUIDETIME + ,CASE t1e.F_CYG_WORKTYPE WHEN '2' THEN t2.F_CYG_GUIDETIME * t1e.FFINISHQTY ELSE 0 END 'NEW_GUIDETIME' + INTO #temp + FROM T_CB_WORKHOURS t0 + INNER JOIN T_CB_WORKHOURSENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MORPTENTRY t1e on t1e.FENTRYID = t0e.FSRCENTRYID + AND t1e.FID = t0e.FSRCBILLID AND t1e.FSEQ = t0e.FSRCSEQ AND t0e.FSRCBILLFORMID = 'PRD_MORPT' + INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t1e.FMATERIALID + INNER JOIN T_BD_MATERIALPRODUCE t2p on t2p.FMATERIALID = t1e.FMATERIALID + +--SELECT +-- t0.FBILLNO +-- ,t0.FSRCBILLNO +-- ,t0.FENTRYID +-- ,t0.F_CYG_WORKTYPE +-- ,t0.FFINISHQTY +-- ,t0.FSTDMANHOUR +-- ,t0.FHRWORKTIME +-- ,t0.FPERUNITSTANDHOUR +-- ,t0.NEW_FHRWORKTIME +-- ,t0.F_CYG_FITTIME +-- ,t0.NEW_FITTIME +-- ,t0.F_CYG_GUIDETIME +-- ,t0.NEW_GUIDETIME +-- INTO #temp1 +--FROM #temp t0 +--WHERE t0.FSTDMANHOUR = 0 +UPDATE t0e +SET t0e.F_CYG_WORKTYPE = t1.F_CYG_WORKTYPE + ,t0e.FFitTimeTotal =t1.NEW_FITTIME + ,t0e.FguideTimeTotal = t1.NEW_GUIDETIME + ,t0e.FHrWorkTimePart = t1.NEW_FHRWORKTIME +FROM T_CB_WORKHOURSENTRY t0e + INNER JOIN #temp t1 on t0e.FENTRYID = t1.FENTRYID + +SELECT * FROM #temp +DROP TABLE #temp +--SELECT * FROM #temp1 +--DROP TABLE #temp1 \ No newline at end of file diff --git a/EC.STK_Inventory/EC.STK_Inventory.csproj b/EC.STK_Inventory/EC.STK_Inventory.csproj new file mode 100644 index 0000000..a4a0af8 --- /dev/null +++ b/EC.STK_Inventory/EC.STK_Inventory.csproj @@ -0,0 +1,62 @@ + + + + + Debug + AnyCPU + {A9B1CCC4-1BDA-468F-B96C-FE66CFA1247D} + Library + Properties + EC.STK_Inventory + EC.STK_Inventory + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.OrmEngine.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.Core.dll + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EC.STK_Inventory/ListEventPlugIn.cs b/EC.STK_Inventory/ListEventPlugIn.cs new file mode 100644 index 0000000..e5d9552 --- /dev/null +++ b/EC.STK_Inventory/ListEventPlugIn.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.List.PlugIn; +using Kingdee.BOS.Util; + +namespace EC.STK_Inventory +{ + [Description("【列表】【海关同步】"), HotUpdate] + public class ListEventPlugIn: AbstractListPlugIn + { + private IOperationResult opResult; + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.Equals("ImmediateInventory")) + { + opResult = new OperationResult(); + var list = this.ListView.SelectedRowsInfo; + var fidList = list.Select(x => x.PrimaryKeyValue).Distinct().ToList(); + HandleSql(this.Context, fidList); + this.View.ShowOperateResult(opResult.OperateResult); + } + + } + + public void HandleSql(Kingdee.BOS.Context context, List fidList) + { + + } + } +} diff --git a/EC.STK_Inventory/Properties/AssemblyInfo.cs b/EC.STK_Inventory/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c3f7646 --- /dev/null +++ b/EC.STK_Inventory/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("EC.STK_Inventory")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EC.STK_Inventory")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("a9b1ccc4-1bda-468f-b96c-fe66cfa1247d")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/EC.STK_MISCELLANEOUS/EC.STK_MISCELLANEOUS.csproj b/EC.STK_MISCELLANEOUS/EC.STK_MISCELLANEOUS.csproj new file mode 100644 index 0000000..c3b2a49 --- /dev/null +++ b/EC.STK_MISCELLANEOUS/EC.STK_MISCELLANEOUS.csproj @@ -0,0 +1,46 @@ + + + + + Debug + AnyCPU + {65D93EE7-1310-436F-9A0D-983CC8EBCDED} + Library + Properties + EC.STK_MISCELLANEOUS + EC.STK_MISCELLANEOUS + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EC.STK_MISCELLANEOUS/Properties/AssemblyInfo.cs b/EC.STK_MISCELLANEOUS/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d056c2a --- /dev/null +++ b/EC.STK_MISCELLANEOUS/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("EC.STK_MISCELLANEOUS")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EC.STK_MISCELLANEOUS")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("65d93ee7-1310-436f-9a0d-983cc8ebcded")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/EC.STK_MisDelivery/EC.STK_MisDelivery.csproj b/EC.STK_MisDelivery/EC.STK_MisDelivery.csproj new file mode 100644 index 0000000..1f6561c --- /dev/null +++ b/EC.STK_MisDelivery/EC.STK_MisDelivery.csproj @@ -0,0 +1,46 @@ + + + + + Debug + AnyCPU + {B3712477-F954-4C64-8984-633A345D4A20} + Library + Properties + EC.STK_MisDelivery + EC.STK_MisDelivery + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EC.STK_MisDelivery/Properties/AssemblyInfo.cs b/EC.STK_MisDelivery/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ba57a86 --- /dev/null +++ b/EC.STK_MisDelivery/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("EC.STK_MisDelivery")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EC.STK_MisDelivery")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("b3712477-f954-4c64-8984-633a345d4a20")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/EC.STK_StockCountGain/EC.STK_StockCountGain.csproj b/EC.STK_StockCountGain/EC.STK_StockCountGain.csproj new file mode 100644 index 0000000..a0958e3 --- /dev/null +++ b/EC.STK_StockCountGain/EC.STK_StockCountGain.csproj @@ -0,0 +1,46 @@ + + + + + Debug + AnyCPU + {67ACCF73-6CAC-4269-8499-B98A48C0E81B} + Library + Properties + EC.STK_StockCountGain + EC.STK_StockCountGain + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EC.STK_StockCountGain/Properties/AssemblyInfo.cs b/EC.STK_StockCountGain/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e10cef1 --- /dev/null +++ b/EC.STK_StockCountGain/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("EC.STK_StockCountGain")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EC.STK_StockCountGain")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("67accf73-6cac-4269-8499-b98a48c0e81b")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/EC.STK_StockCountLoss/EC.STK_StockCountLoss.csproj b/EC.STK_StockCountLoss/EC.STK_StockCountLoss.csproj new file mode 100644 index 0000000..464a8b6 --- /dev/null +++ b/EC.STK_StockCountLoss/EC.STK_StockCountLoss.csproj @@ -0,0 +1,46 @@ + + + + + Debug + AnyCPU + {607A32D7-6B41-4781-8F86-746C74E48696} + Library + Properties + EC.STK_StockCountLoss + EC.STK_StockCountLoss + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EC.STK_StockCountLoss/Properties/AssemblyInfo.cs b/EC.STK_StockCountLoss/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4fc49e2 --- /dev/null +++ b/EC.STK_StockCountLoss/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("EC.STK_StockCountLoss")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EC.STK_StockCountLoss")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("607a32d7-6b41-4781-8f86-746c74e48696")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/EastChanger/BaseService.cs b/EastChanger/BaseService.cs new file mode 100644 index 0000000..1a4148c --- /dev/null +++ b/EastChanger/BaseService.cs @@ -0,0 +1,97 @@ +using HandleUtils; +using Kingdee.BOS; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Log; +using Kingdee.BOS.TCP; +using Kingdee.BOS.Util; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace EastChanger +{ + public class BaseService + { + protected readonly Context _context; + protected readonly string _apiName; + protected readonly string _apiVersion; + protected readonly string _apiUrl; + protected readonly string _appKey; + protected readonly string _appKeySecret; + protected readonly string _moduleCnName; + + public BaseService(Context context, string apiName, string moduleCnName = "海关信息同步") + { + _context = context; + var sql = "SELECT * FROM V_CUSTOMS_API_REQUEST_PARAMETE "; + var data = DBUtils.ExecuteDynamicObject(context, $"/*dialect*/{sql}"); + var info = data[0]; + + _apiUrl = info["appUrl"].ToString(); + _appKey = info["appKey"].ToString(); + _appKeySecret = info["appKeySecret"].ToString(); + _apiName = apiName; + _apiVersion = ""; + _moduleCnName = moduleCnName; + } + + /// + /// 执行数据加密后发送请求 + /// + /// + /// + public string Execute(string dataJson) + { + //对json字符串进行url编码 + var requestData = EncryptHelper.UrlEncode(dataJson); + var request = new Dictionary(); + request.Add("app_key", _appKey); + request.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + request.Add("name", _apiName); //接口名称 + request.Add("data", requestData); + request.Add("version", _apiVersion); + + string sign = SignUtil.BuildSign(request, _appKeySecret); + request.Add("sign", sign); + + string bodyData = JsonUtil.Serialize(request); + string result = WebHelper.DoPost(_apiUrl, bodyData); + // 转换为字符串 + var timestampStr = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + sfj4Class.SaveTxt(dataJson, $"D:/sjf4Class/{timestampStr}.txt", result); + return result; + } + + /// + /// 处理接口回调信息 + /// + /// + /// + /// + /// + public void ExecuteOperateResult(IOperationResult opResult, string itemNo, string msg, bool IsSuccessStatus) + { + if (opResult != null) + { + opResult.OperateResult.Add(new OperateResult + { + Name = "同步编号:" + itemNo, + Message = msg, + SuccessStatus = IsSuccessStatus + }); + } + else + { + if (IsSuccessStatus) + Logger.Info(_moduleCnName, $"同步编号:{itemNo}--{msg}"); + else + Logger.Error(_moduleCnName, "请检查单据状态", new Exception(msg)); + + } + } + } +} diff --git a/EastChanger/EastChanger.csproj b/EastChanger/EastChanger.csproj new file mode 100644 index 0000000..6be385f --- /dev/null +++ b/EastChanger/EastChanger.csproj @@ -0,0 +1,94 @@ + + + + + Debug + AnyCPU + {735CF076-6103-45CE-8B2F-58A9296FE424} + Library + Properties + EastChanger + EastChanger + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.OrmEngine.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + + {50532462-8f7f-455c-b4b3-732ed764e2fa} + ExtensionMethods + + + {a386e924-0477-49bf-a3dd-82390edf75c7} + HandleUtils + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EastChanger/Properties/AssemblyInfo.cs b/EastChanger/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..304e2c9 --- /dev/null +++ b/EastChanger/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("EastChanger")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EastChanger")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("735cf076-6103-45ce-8b2f-58a9296fe424")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/EastChanger/SQLServer/0.海关接口请求参数.sql b/EastChanger/SQLServer/0.海关接口请求参数.sql new file mode 100644 index 0000000..faf37e5 --- /dev/null +++ b/EastChanger/SQLServer/0.海关接口请求参数.sql @@ -0,0 +1,12 @@ +IF EXISTS(SELECT * FROM sysobjects WHERE name = 'V_CUSTOMS_API_REQUEST_PARAMETE')--Ϊͼ + DROP VIEW V_CUSTOMS_API_REQUEST_PARAMETE--ͼ +GO +CREATE VIEW V_CUSTOMS_API_REQUEST_PARAMETE AS +SELECT + 1 AS 'NO' + --,'http://tsjgqy.zheport.com/api/' AS 'appUrl' --ʽ + --,'4257290a253c480e8425efabecefc39d' AS 'appKey' --ʽ + --,'E3002B57-66DE-4D81-A3BE-F088CBF79485' AS 'appKeySecret' --ʽ + ,'http://119.146.223.48:39082/api/' AS 'appUrl' -- + ,'437268ee6e1a44b6ba135eea1614f94d' AS 'appKey' + ,'72CD0295-2312-4B08-9A4C-2A338A0EE9BF' AS 'appKeySecret' \ No newline at end of file diff --git a/EastChanger/SQLServer/1.账册信息视图.sql b/EastChanger/SQLServer/1.账册信息视图.sql new file mode 100644 index 0000000..5770c3b --- /dev/null +++ b/EastChanger/SQLServer/1.账册信息视图.sql @@ -0,0 +1,22 @@ +IF EXISTS(SELECT * FROM sysobjects WHERE name = 'V_LEDGER_INFO')--Ϊͼ + DROP VIEW V_LEDGER_INFO--ͼ +GO +CREATE VIEW V_LEDGER_INFO AS +SELECT + t0.FID AS ID + ,t0.FNUMBER + ,t0.FENTCUSCODE + ,t0.FENTCREDITCODE + ,t0.FENTNAME + ,t0.FDECLAENTCUSCODE + ,t0.FDECLAENTCREDITCODE + ,t0.FDECLAENTNAME + ,t0e.FEntryID + ,t0e.FBOOKNUM + ,t0e.FCUSTOMSCODE +FROM + T_BD_LEDGER t0 + INNER JOIN T_BD_LEDGERENTRY t0e on t0.FID = t0e.FID +WHERE 1=1 + AND t0.FDOCUMENTSTATUS = 'C' + AND t0.FFORBIDSTATUS = 'A' \ No newline at end of file diff --git a/EastChanger/SQLServer/2.1.库存明细同步接口回填.sql b/EastChanger/SQLServer/2.1.库存明细同步接口回填.sql new file mode 100644 index 0000000..a12977d --- /dev/null +++ b/EastChanger/SQLServer/2.1.库存明细同步接口回填.sql @@ -0,0 +1,36 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INSERT_STK_SYNC_RECORD') + DROP PROCEDURE dbo.PROC_INSERT_STK_SYNC_RECORD; +GO + +CREATE PROCEDURE PROC_INSERT_STK_SYNC_RECORD + @newId varchar(100) + ,@oId varchar(100) + ,@itemNo varchar(100) + ,@declaId varchar(100) + ,@syncId varchar(100) + ,@status int +AS +BEGIN + + UPDATE T_STK_INVENTORY set FBILLNO = @itemNo ,FSTATUS = @status WHERE FID = @oId + + INSERT INTO T_STK_INVENTORY_COPY ( + FID,FSTOCKORGID,FKEEPERTYPEID,FKEEPERID,FOWNERTYPEID,FOWNERID, + FSTOCKID,FSTOCKLOCID,FAUXPROPID,FSTOCKSTATUSID,FLOT,FBOMID,FMTONO, + FPROJECTNO,FPRODUCEDATE,FEXPIRYDATE,FBASEUNITID,FBASEQTY,FBASELOCKQTY, + FSECQTY,FSECLOCKQTY,FSTOCKUNITID,FMATERIALID,FQTY,FLOCKQTY,FSECUNITID + ,FOBJECTTYPEID + ,FBASEAVBQTY,FAVBQTY,FSECAVBQTY,FUPDATETIME,FISEFFECTIVED,FBILLNO,FSTATUS + ,FITEMNO,FOSTKID,FDeclaId,FSyncId + ) SELECT + @NID,FSTOCKORGID,FKEEPERTYPEID,FKEEPERID,FOWNERTYPEID,FOWNERID, + FSTOCKID,FSTOCKLOCID,FAUXPROPID,FSTOCKSTATUSID,FLOT,FBOMID,FMTONO, + FPROJECTNO,FPRODUCEDATE,FEXPIRYDATE,FBASEUNITID,FBASEQTY,FBASELOCKQTY, + FSECQTY,FSECLOCKQTY,FSTOCKUNITID,FMATERIALID,FQTY,FLOCKQTY,FSECUNITID + ,'ke9dee1ad634f41fca88bb9296d86117d' + ,FBASEAVBQTY,FAVBQTY,FSECAVBQTY,FUPDATETIME,FISEFFECTIVED,FBILLNO,FSTATUS + ,@itemNo,FID,@declaId,@syncId + FROM T_STK_INVENTORY + WHERE FID = @oId + +END \ No newline at end of file diff --git a/EastChanger/SQLServer/2.明细信息关联视图.sql b/EastChanger/SQLServer/2.明细信息关联视图.sql new file mode 100644 index 0000000..1d61eb2 --- /dev/null +++ b/EastChanger/SQLServer/2.明细信息关联视图.sql @@ -0,0 +1,37 @@ +IF EXISTS(SELECT * FROM sysobjects WHERE name = 'V_IMMEDIATE_INVENTORY')--Ϊͼ + DROP VIEW V_IMMEDIATE_INVENTORY--ͼ +GO +CREATE VIEW V_IMMEDIATE_INVENTORY AS +SELECT + t0.FID AS ID + ,t0.FBILLNO AS 'declaCode' + ,t0.FSTATUS AS 'status' + ,t0.FBASEQTY AS 'materialWarehouse' + ,t1e.FID AS LEDGERID + ,t1e.FENTRYID + ,t1e.FBOOKNUM + ,t1e.FCUSTOMSCODE + ,t1es.FLEDGERSTOCKID + ,t2.FNUMBER AS 'code' + ,t2_l.FNAME AS 'name' + ,t2_l.FSPECIFICATION AS 'specificationsModels' + ,t3.FNUMBER AS calcUnit + ,t3.FNUMBER AS cunit + ,t4.FNUMBER AS warehouseCd + ,t5.FNUMBER AS warehousePosiCd + ,ROW_NUMBER() OVER(PARTITION BY t1e.FENTRYID ORDER BY t0.FID ASC) AS itemNo + ,'' AS reduceable + ,'ǰ˺ŵ' AS inputMan + ,'13' AS declaType +FROM + T_STK_INVENTORY t0 + INNER JOIN T_BD_LEDGERSTOCK t1es on t1es.FLEDGERSTOCKID = t0.FSTOCKID + INNER JOIN T_BD_LEDGERENTRY t1e on t1e.FENTRYID = t1es.FENTRYID + LEFT JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_BD_UNIT t3 on t3.FUNITID = t0.FBASEUNITID + LEFT JOIN T_BD_STOCK t4 on t4.FSTOCKID = t0.FSTOCKID + LEFT JOIN T_BAS_FLEXVALUESDETAIL t6 on t6.FID = t0.FSTOCKLOCID + LEFT JOIN T_BAS_FLEXVALUESENTRY t5 ON t5.FENTRYID = t6.FF100001 OR t5.FENTRYID = t6.FF100002 +WHERE t0.FBASEQTY != 0 + AND t0.FSTATUS != 1 \ No newline at end of file diff --git a/EastChanger/STK_Inventory/ListEventPlugInEx.cs b/EastChanger/STK_Inventory/ListEventPlugInEx.cs new file mode 100644 index 0000000..2458926 --- /dev/null +++ b/EastChanger/STK_Inventory/ListEventPlugInEx.cs @@ -0,0 +1,37 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using Kingdee.BOS.Core.List.PlugIn; +using Kingdee.BOS; + +namespace EastChanger.STK_Inventory +{ + [Description("【列表插件】【1.海关同步】"), HotUpdate] + public class ListEventPlugInEx : AbstractListPlugIn + { + private IOperationResult opResult; + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + //同步海关信息 + if (e.BarItemKey.Equals("ImmediateInventory")) + { + opResult = new OperationResult(); + var list = this.ListView.SelectedRowsInfo; + + var fidList = list.Select(x => x.PrimaryKeyValue).Distinct().ToList(); + STKInventoryService service = new STKInventoryService(this.Context); + service.HandleSyncData(fidList, opResult); + + if (opResult.OperateResult.Any()) + this.View.ShowOperateResult(opResult.OperateResult); + } + } + + } +} diff --git a/EastChanger/STK_Inventory/STKInventoryService.cs b/EastChanger/STK_Inventory/STKInventoryService.cs new file mode 100644 index 0000000..8420f1d --- /dev/null +++ b/EastChanger/STK_Inventory/STKInventoryService.cs @@ -0,0 +1,209 @@ +using ExtensionMethods; +using Kingdee.BOS; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Log; +using Kingdee.BOS.Util; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Schema; + +namespace EastChanger.STK_Inventory +{ + /// + /// 即时库存明细 + /// + public class STKInventoryService : BaseService + { + public STKInventoryService(Context context) : base(context, "supvWarehouse.save", "即时库存明细") + { + } + + /// + /// 处理请求数据 + /// + /// + /// + public void HandleSyncData(List idList, IOperationResult opResult) + { + var declInfos = GetDeclInfos(); + var headSql = @" +SELECT + t0.ID + ,t0.declaCode + ,t0.status + ,t0.materialWarehouse + ,t0.LEDGERID + ,t0.FENTRYID + ,t0.FBOOKNUM + ,t0.FCUSTOMSCODE + ,t0.FLEDGERSTOCKID + ,t0.code + ,t0.name + ,t0.specificationsModels + ,t0.calcUnit + ,t0.cunit + ,t0.warehouseCd + ,t0.warehousePosiCd + ,t0.itemNo + ,t0.reduceable + ,t0.inputMan + ,t0.declaType +FROM + V_IMMEDIATE_INVENTORY t0 +WHERE 1 = 1 + {0} +"; + + var whereSql = ""; + if (idList != null && idList.Any()) + whereSql = string.Format(" AND t0.ID IN ({0}) ", string.Join("','", idList)); + var toSql = string.Format(headSql, whereSql); + + List> itemList = new List>(); + var dbList = DBUtils.ExecuteDynamicObject(_context, $"/*dialect*/{toSql}"); + if (dbList != null && dbList.Any()) + { + var groupList = dbList.GroupBy(x => x["FBOOKNUM"].ToString()); + int no = 0; + foreach (var bookEntity in groupList) + { + no++; + var bookNum = bookEntity.Key; + foreach (var entity in bookEntity) + { + var item = new Dictionary(); + item.Add("itemNo", entity["itemNo"].ToSafeTurnString()); + item.Add("code", entity["code"].ToSafeTurnString()); + item.Add("name", entity["name"].ToSafeTurnString()); + item.Add("specificationsModels", entity["specificationsModels"].ToSafeTurnString()); + item.Add("calcUnit", entity["calcUnit"].ToSafeTurnString()); + item.Add("cunit", entity["cunit"].ToSafeTurnString()); + item.Add("reduceable", entity["reduceable"].ToSafeTurnString()); + item.Add("materialWarehouse", entity["materialWarehouse"].ToSafeTurnString()); + item.Add("warehouseCd", entity["warehouseCd"].ToSafeTurnString()); + item.Add("warehousePosiCd", entity["warehousePosiCd"].ToSafeTurnString()); + itemList.Add(item); + } + var oIdList = bookEntity.ToDictionary(k => k["ID"].ToString(), v => v["itemNo"].Long2Int()); + + var main = declInfos[bookNum]; + + var newDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + //no 补位序号,防止一秒内多次执行,生成相同的itemNo + string itemNo = $"CD{DateTime.Now:yyMMddHHmmss}{no:D2}"; + main.Add("compileDate", newDate); + main.Add("inputMan", _context.UserName); + main.Add("declaType", "00"); + main.Add("busiType", "03"); + main.Add("inputDate", newDate); + main.Add("declaDate", newDate); + main.Add("declaCode", itemNo); + main.Add("itemList", itemList); + + var dataJson = JsonUtil.Serialize(main); + var result = this.Execute(dataJson); + if (!result.IsNullOrEmpty()) + { + JToken resData = JsonUtil.DeserializeObject(result); + var code = resData["code"].Long2Int(); + if (code == 0) + { + var data = resData["data"]; + var rtnFlag = data["rtnFlag"].Long2Int() == 0; + var rtnMessage = data["rtnMessage"].ToString(); + + JArray rtnItemList = null; + if (rtnFlag) + rtnItemList = data["rtnObj"]["entity"]["itemList"] as JArray; + + foreach (var kv in oIdList) + { + var id = kv.Key; + var msg = $"明细ID:{id},{rtnMessage}。"; + if (rtnFlag) + { + var index = kv.Value - 1; + var rtnItem = rtnItemList[index]; + var rItemNo = rtnItem["itemNo"].ToString(); + var declaId = rtnItemList["declaId"].ToString(); + var syncId = rtnItemList["id"].ToString(); + //UpdateStkInventoryInfo(id, 1, itemNo, declaId, syncId); + InserSyncRecord(id, 1, itemNo, declaId, syncId); + } + ExecuteOperateResult(opResult, itemNo, msg, rtnFlag); + } + } + else + { + ExecuteOperateResult(opResult, itemNo, resData["msg"].ToString(), false); + } + } + + } + } + + } + + /// + /// 根据账册分类后设置申报信息表头 + /// + /// + private Dictionary> GetDeclInfos() + { + var newDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + + var ledgerSql = @"SELECT * FROM V_LEDGER_INFO"; + + var ledgerInfos = DBUtils.ExecuteDynamicObject(_context, $"/*dialect*/{ledgerSql}"); + var groupList = ledgerInfos.GroupBy(x => x["FBOOKNUM"].ToString()).ToList(); + //var lInfo = ledgerInfos[0]; + var resultData = new Dictionary>(); + foreach (var item in groupList) + { + var main = new Dictionary(); + resultData.Add(item.Key, main); + var lInfo = item.ToList()[0]; + main.Add("entCusCode", lInfo["FENTCUSCODE"]); + main.Add("entCreditCode", lInfo["FENTCREDITCODE"]); + main.Add("entName", lInfo["FENTNAME"]); + main.Add("declaEntCusCode", lInfo["FDECLAENTCUSCODE"]); + main.Add("declaEntCreditCode", lInfo["FDECLAENTCREDITCODE"]); + main.Add("declaEntName", lInfo["FDECLAENTNAME"]); + main.Add("customsCode", lInfo["FCUSTOMSCODE"]); + main.Add("bookNum", lInfo["FBOOKNUM"]); + } + + return resultData; + } + + /// + /// 同步完成后更新即时库存明细信息 + /// + /// 明细id + /// 同步状态 + /// 同步编号 + /// 申报id + /// 同步id + private void UpdateStkInventoryInfo(string id, int status, string itemNo, string declaId, string syncId) + { + var headSql = $@"UPDATE T_STK_INVENTORY set FBILLNO = '{itemNo}' ,FSTATUS = {status},FDeclaId = '{declaId}',FSyncId ='{syncId}' WHERE FID = '{id}' "; + DBUtils.ExecuteDynamicObject(_context, $"/*dialect*/{headSql}"); + } + + /// + /// 同步完成后记录当前即时库存明细信息 + /// + /// + /// + private void InserSyncRecord(string oId, int status, string itemNo, string declaId, string syncId) + { + var newId = Guid.NewGuid(); + var headSql = $@"EXEC PROC_INSERT_STK_SYNC_RECORD '{newId}' ,'{oId}' ,'{itemNo}' ,'{declaId}' ,'{syncId}' ,{status}"; + DBUtils.ExecuteDynamicObject(_context, $"/*dialect*/{headSql}"); + } + } +} diff --git a/EastChanger/SignUtil.cs b/EastChanger/SignUtil.cs new file mode 100644 index 0000000..bffc4e5 --- /dev/null +++ b/EastChanger/SignUtil.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; + +namespace EastChanger +{ + public static class SignUtil + { + /// + /// sign生成 + /// + /// + /// + /// + public static string BuildSign(Dictionary paramsMap, string secret) + { + //var keySet = paramsMap.Keys; + List paramNames = paramsMap.Keys.ToList(); + paramNames.Sort(); + StringBuilder paramNameValue = new StringBuilder(); + foreach (var paramName in paramNames) + { + paramNameValue.Append(paramName).Append(paramsMap[paramName]); + } + string source = secret + paramNameValue.ToString() + secret; + return ToMD5(source); + } + + /// + /// MD加密 + /// + /// + /// + public static string ToMD5(string message) + { + try + { + // 1 创建一个提供信息摘要算法的对象,初始化为md5算法对象 + MD5 md5 = new MD5CryptoServiceProvider(); + // 2 将消息变成byte数组 + byte[] input = Encoding.UTF8.GetBytes(message); + // 3 计算后获得字节数组,这就是那128位了 + byte[] buff = md5.ComputeHash(input); + // 4 把数组每一字节(一个字节占八位)换成16进制连成md5字符串 + return Byte2hex(buff); + } + catch (Exception e) + { + throw e; + } + } + + private static string Byte2hex(byte[] bytes) + { + //创建一个StringBuilder对象来存储最终的结果 + StringBuilder sign = new StringBuilder(); + //使用for循环遍历字节数组中的每个字节 + for (int i = 0; i < bytes.Length; i++) + { + // 将字节强制转换为整数,并对其进行位运算,即保留后八位的值,并转换为十六进制形式的字符串 + string hex = bytes[i].ToString("x2"); + // 如果转换后的字符串长度为1,即只有1位,则在前面添加一个0,以保证每个字节都是两位十六进制数 + if (hex.Length == 1) + { + sign.Append("0"); + } + // 将转换后的字符串追加到StringBuilder对象中,并转换为大写形式 + sign.Append(hex.ToUpper()); + } + return sign.ToString(); + } + + public static string UrlEncode(string str) + { + StringBuilder sb = new StringBuilder(); + byte[] byStr = System.Text.Encoding.UTF8.GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str) + for (int i = 0; i < byStr.Length; i++) + { + sb.Append(@"%" + Convert.ToString(byStr[i], 16)); + } + + return (sb.ToString()); + } + } +} diff --git a/EastChanger/sfj4Class.cs b/EastChanger/sfj4Class.cs new file mode 100644 index 0000000..5743706 --- /dev/null +++ b/EastChanger/sfj4Class.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace EastChanger +{ + public static class sfj4Class + { + /// + /// 保存Txt到服务器商 + /// + /// 接口调用数据 + /// Txt地址 + /// 接口返回数据 + public static void SaveTxt(string Data, string path, string Result) + { + if (!Directory.Exists(Path.GetDirectoryName(path))) + { + Directory.CreateDirectory(Path.GetDirectoryName(path)); + } + StringBuilder sb = new StringBuilder(); + sb.AppendLine("\r\n"); + sb.AppendLine("----------------------调用接口所用JSon----------------------"); + sb.AppendLine(Data); + sb.AppendLine("\r\n"); + sb.AppendLine("----------------------调用接口返回JSon----------------------"); + sb.AppendLine(Result); + FileStream fs = new FileStream(path, FileMode.Create); + StreamWriter sw = new StreamWriter(fs); + fs.Position = fs.Length; + //开始写入          + sw.Write(sb.ToString()); + //清空缓冲区        + sw.Flush(); + //关闭流            + sw.Close(); + fs.Close(); + } + + + } +} diff --git a/HW.DataBase/HW.DataBase.sqlproj b/Enpower.Database/Enpower.Database.sqlproj similarity index 88% rename from HW.DataBase/HW.DataBase.sqlproj rename to Enpower.Database/Enpower.Database.sqlproj index baaafaf..86202b9 100644 --- a/HW.DataBase/HW.DataBase.sqlproj +++ b/Enpower.Database/Enpower.Database.sqlproj @@ -3,17 +3,17 @@ Debug AnyCPU - HW.DataBase + Enpower.Database 2.0 4.1 - {ba245971-0afa-4434-a524-b53d0ff7f8d6} - Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider + {e0959f3e-c7f5-446b-af8a-642f0bea5955} + Microsoft.Data.Tools.Schema.Sql.Sql150DatabaseSchemaProvider Database - HW.DataBase - HW.DataBase - 1033, CI + Enpower.Database + Enpower.Database + 2052,CI BySchemaAndSchemaType True v4.7.2 @@ -22,6 +22,7 @@ False True True + Chinese_PRC_CI_AS bin\Release\ diff --git a/Enpower.Database/生产订单BOM.sql b/Enpower.Database/生产订单BOM.sql new file mode 100644 index 0000000..41aeddd --- /dev/null +++ b/Enpower.Database/生产订单BOM.sql @@ -0,0 +1,49 @@ + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID 'Դ' + ,t1.FSRCBILLNO 'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,'' BOMLevel + /*һʱ*/ + --INTO #_MO + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID=t0e.FID AND t1e.FINTSUPPLYENTRYID=t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID='PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID=t1.FSRCINTERID AND t2e.FENTRYID=t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + + --CREATE INDEX [#PLid] ON #_MO (FSRCINTERID ASC,FSRCENTRYID ASC) /*ͬ*/ + --CREATE INDEX [#BomId] ON #_MO (FBomId ASC) /*BOM༶չԼײſ*/ + + --SELECT FSRCINTERID,FSRCENTRYID,MO2.FBILLNO AS 'ײIJ' + --into #n_mo + --FROM #_MO MO INNER JOIN T_PRD_MOENTRY MO1 ON MO1.FID=MO.FID AND MO1.FENTRYID=MO.FENTRYID + --INNER JOIN T_PRD_MO MO2 ON MO2.FID=MO.FID + --CREATE INDEX [#n_mo] ON #n_mo (FSRCINTERID ASC,FSRCENTRYID ASC) /*ͬ*/ + + ----update mo set BOMLevel=nmo.ײIJ+'-'+'ֵIJ' + ----from #_MO mo left join #n_mo nmo on nmo.FSRCINTERID=mo.FSRCINTERID and nmo.FSRCENTRYID=mo.FSRCENTRYID + --/*-------------dbo.GetBomSeqΪֵ洢̣ذֶεı----------------- + -- BOM_ID(Ӧ#_MOеFBomId) + -- BOM_ID(Ӧ#_MOеMOBomId) + -- + ----------------dbo.GetBomSeqΪֵ洢̣ذֶεı------------------*/ + ----select dbo.GetBomSeq(7293846,3994919) + + --select * from #_MO + + --DROP TABLE #_MO + --DROP TABLE #n_mo \ No newline at end of file diff --git a/Enpower.Database/生产订单BOM_创建临时表.sql b/Enpower.Database/生产订单BOM_创建临时表.sql new file mode 100644 index 0000000..ced761c --- /dev/null +++ b/Enpower.Database/生产订单BOM_创建临时表.sql @@ -0,0 +1,186 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_UPDATE_BOMLEVEL +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ); + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + --AND t0e.FFORECASTGROUP='' /*Ϊ*/ + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO) order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FBOMID =MOBomId + ) t0 ON tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + AND t0.ROWID =1 + AND t0.Billnolen = len(tt.FBILLNO) + WHERE + tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.FMATERIALID) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID + WHERE 1 = 1 + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + ROW_NUMBER() over(partition BY TOPID order by FSEQ) AS rowId, + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = t0.TOPBILLNO + t1.showlevel + FROM #TMP_MO t0 INNER JOIN #TMP_TOP_BOM_GROUP t1 on t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + --µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + SELECT t0.*,t1.fnumber + FROM #TMP_TOP_BOM_GROUP t0 INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + --WHERE t0.OID = 6339745 + order by t0.FSEQ,t0.BOMLEVEL + SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 AND topbillno='WO2308090009' --ѯʱ + + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/Enpower.Database/生产订单BOM_查询.sql b/Enpower.Database/生产订单BOM_查询.sql new file mode 100644 index 0000000..055f506 --- /dev/null +++ b/Enpower.Database/生产订单BOM_查询.sql @@ -0,0 +1,218 @@ + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + ,t0e.FFORECASTGROUPFRIST + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP = '' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + SELECT t0.* + ,t0_lk.FSTABLENAME + ,t0_lk.FSTABLEID + ,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITBILLNO + ,t0e_Q.FSRCSPLITID + ,t0e_Q.FSRCSPLITSEQ + ,t0e_Q.FSRCSPLITENTRYID + --INTO #TMP_MO_PART + FROM #TMP_MO_GROUP t0 + LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP \ No newline at end of file diff --git a/Enpower.Database/生产订单BOM_选中订单_更新层号_存储过程20240115.sql b/Enpower.Database/生产订单BOM_选中订单_更新层号_存储过程20240115.sql new file mode 100644 index 0000000..1b3bc9d --- /dev/null +++ b/Enpower.Database/生产订单BOM_选中订单_更新层号_存储过程20240115.sql @@ -0,0 +1,231 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SELECT_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_SELECT_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_SELECT_UPDATE_BOMLEVEL + @billnoStr varchar(255) +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + AND t0.FBILLNO in (SELECT b.billno FROM (SELECT CAST(''+REPLACE(@billnoStr,',','')+'' AS xml) billno ) a OUTER APPLY (SELECT T.C.value('.','varchar(50)') billno FROM a.billno.nodes('/v') AS T(C)) b ) --Ų + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + --SELECT t0.* + -- ,t0_lk.FSTABLENAME + -- ,t0_lk.FSTABLEID + -- ,t0_lk.FSBILLID + -- ,t0_lk.FSID + -- ,t0e_Q.FSRCSPLITBILLNO + -- ,t0e_Q.FSRCSPLITID + -- ,t0e_Q.FSRCSPLITSEQ + -- ,t0e_Q.FSRCSPLITENTRYID + -- --INTO #TMP_MO_PART + -- FROM #TMP_MO_GROUP t0 + -- LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + -- INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + -- WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/Enpower.Database/生产订单BOM更新层号_存储过程20240114.sql b/Enpower.Database/生产订单BOM更新层号_存储过程20240114.sql new file mode 100644 index 0000000..7b9536e --- /dev/null +++ b/Enpower.Database/生产订单BOM更新层号_存储过程20240114.sql @@ -0,0 +1,229 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_UPDATE_BOMLEVEL +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + --SELECT t0.* + -- ,t0_lk.FSTABLENAME + -- ,t0_lk.FSTABLEID + -- ,t0_lk.FSBILLID + -- ,t0_lk.FSID + -- ,t0e_Q.FSRCSPLITBILLNO + -- ,t0e_Q.FSRCSPLITID + -- ,t0e_Q.FSRCSPLITSEQ + -- ,t0e_Q.FSRCSPLITENTRYID + -- --INTO #TMP_MO_PART + -- FROM #TMP_MO_GROUP t0 + -- LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + -- INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + -- WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/Enpower.PRD_MO.Python/Enpower.PRD_MO.Python.py b/Enpower.PRD_MO.Python/Enpower.PRD_MO.Python.py new file mode 100644 index 0000000..914a145 --- /dev/null +++ b/Enpower.PRD_MO.Python/Enpower.PRD_MO.Python.py @@ -0,0 +1,82 @@ +#clrп +import clr +#Ӷcloudij +clr.AddReference('System') +clr.AddReference('System.Data') +# ýstart +clr.AddReference('Kingdee.BOS') +clr.AddReference('Kingdee.BOS.App') +clr.AddReference('Kingdee.BOS.App.Core') +clr.AddReference('Kingdee.BOS.Business.DynamicForm') +clr.AddReference('Kingdee.BOS.Contracts') +clr.AddReference('Kingdee.BOS.Core') +clr.AddReference('Kingdee.BOS.DataEntity') +clr.AddReference('Kingdee.BOS.ServiceHelper') +# ýend + +#dairycloudеijʵ󣨷ռ䵼룬ݹ鵼룩 +from System import * +from System.Data import * +from System.Collections.Generic import List +from Kingdee.BOS.Core import * +from Kingdee.BOS.Util import * +from Kingdee.BOS.Core.List import * +from Kingdee.BOS.Core.List.PlugIn 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.App.Data import * +from Kingdee.BOS.ServiceHelper import * + +# def OnPreparePropertys(e): +# e.FieldKeys.Add("FWorkTimeType") + +def AfterDoOperation(e): + # 8ύ9126 + if e.Operation.Operation == "DoUpdatePPBOMLevel": + datas = this.View.SelectedRowsInfo + whereSql = "" + if datas.Count > 0: + whereSql = "AND t0.FID IN({0})".format( ",".join(set(map(lambda x :str(x.PrimaryKeyValue),datas)))) + + sql = """/*dialect*/ +UPDATE t0e SET t0e.FFORECASTGROUP = t1e.FFORECASTGROUP + ,t0e.FFORECASTGROUPFRIST = CASE + WHEN CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0) = 0 + THEN t1e.FFORECASTGROUP + ELSE SUBSTRING(t1e.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0)) + END +FROM T_PRD_PPBOM t0 + INNER JOIN T_PRD_PPBOMENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MOENTRY t1e on t1e.FID = t0.FMOID +WHERE 1 = 1 AND t1e.FFORECASTGROUP != '' + AND t0e.FFORECASTGROUP = '' + AND t0e.FFORECASTGROUPFRIST != t1e.FFORECASTGROUPFRIST + {0} """.format(whereSql) + # raise Exception(sql) + # count = DBUtils.Execute(this.Context, sql) + +# def EndOperationTransaction(e): +# if this.FormOperation.Operation == "DoUpdatePPBOMLevel": +# datas = e.DataEntitys; +# whereSql = "" +# if datas.Count > 0: +# whereSql = "AND t0.FID IN({0})".format( ",".join(set(map(lambda x :str(x.Id),datas)))) + +# sql = """/*dialect*/ +# UPDATE t0e SET t0e.FFORECASTGROUP = t1e.FFORECASTGROUP +# ,t0e.FFORECASTGROUPFRIST = CASE +# WHEN CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0) = 0 +# THEN t1e.FFORECASTGROUP +# ELSE SUBSTRING(t1e.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0)) +# END +# FROM T_PRD_PPBOM t0 +# INNER JOIN T_PRD_PPBOMENTRY t0e on t0.FID = t0e.FID +# INNER JOIN T_PRD_MOENTRY t1e on t1e.FID = t0.FMOID +# WHERE 1 = 1 AND t1e.FFORECASTGROUP != '' +# AND t0e.FFORECASTGROUP = '' +# AND t0e.FFORECASTGROUPFRIST != t1e.FFORECASTGROUPFRIST +# {0} +# """.format(whereSql) + +# raise Exception(sql) \ No newline at end of file diff --git a/Enpower.PRD_MO.Python/Enpower.PRD_MO.Python.pyproj b/Enpower.PRD_MO.Python/Enpower.PRD_MO.Python.pyproj new file mode 100644 index 0000000..128523e --- /dev/null +++ b/Enpower.PRD_MO.Python/Enpower.PRD_MO.Python.pyproj @@ -0,0 +1,35 @@ + + + Debug + 2.0 + 40e7687c-e939-468e-a79a-ef5cbd14dd97 + . + Enpower.PRD_MO.Python.py + + + . + . + Enpower.PRD_MO.Python + Enpower.PRD_MO.Python + + + true + false + + + true + false + + + + + + + + + + + + \ No newline at end of file diff --git a/Enpower.PRD_MO/Enpower.PRD_MO.csproj b/Enpower.PRD_MO/Enpower.PRD_MO.csproj new file mode 100644 index 0000000..5820ae1 --- /dev/null +++ b/Enpower.PRD_MO/Enpower.PRD_MO.csproj @@ -0,0 +1,61 @@ + + + + + Debug + AnyCPU + {4593B258-853F-42E5-8805-64D5A0DA08A3} + Library + Properties + Enpower.PRD_MO + Enpower.PRD_MO + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Enpower.PRD_MO/Properties/AssemblyInfo.cs b/Enpower.PRD_MO/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..775155a --- /dev/null +++ b/Enpower.PRD_MO/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Enpower.PRD_MO")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Enpower.PRD_MO")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("4593b258-853f-42e5-8805-64d5a0da08a3")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Enpower.PRD_MO/SQLserver/PLAN2.sql b/Enpower.PRD_MO/SQLserver/PLAN2.sql new file mode 100644 index 0000000..8a09372 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/PLAN2.sql @@ -0,0 +1,222 @@ +USE [AIS202401040030] +GO +/****** Object: StoredProcedure [dbo].[P_UpdatePlan2] Script Date: 2024-01-17 17:38:56 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO +-- ============================================= +-- Author: +-- Create date: 2023-05-23 +-- Description: ¼ƻϢ +-- ============================================= +ALTER PROCEDURE [dbo].[P_UpdatePlan2] +( + @FBILLNO NVARCHAR(1000) +) + +AS +BEGIN + DECLARE @RC int + SET @RC = 1; + + WHILE(@RC >0) + BEGIN + EXEC @RC = PROC_UPDATE_PLAN_BY_PAGE + END +--SET NOCOUNT ON; + +--SELECT +-- A.FBILLNO AS 'ƻ' +-- ,A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к' +-- ,A.F_Source_order_number as 'ƻ۶' +-- ,A.F_FORECASTNUMBER as 'ƻԤⵥ' +-- ,A.F_Linenumber as 'ƻԤⵥк' +-- ,E.FBILLNO AS 'Ԥⵥ' +-- ,D.FSEQ,D.F_Source_order_number as 'Ԥⵥ۶' +-- ,D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' +--INTO #TEMP1 +--FROM T_PLN_PLANORDER A +--INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +--INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +--INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +--INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +----inner join #temp2 f on f.fname = a.FBILLNO +--WHERE A.F_FORECASTNUMBER='' +----AND A.FBILLNO = @FBILLNO +----where A.FBILLNO = 'MRP00260726' +----WHERE A.F_SOURCE_ORDER_LINE_NUMBER = '' + + + +-- SELECT +--ƻ, Ԥⵥ, +--'Ԥⵥк'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), +--'۶'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶) from #TEMP1 where Ԥⵥ۶<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), +--'۶к'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶к) from #TEMP1 where Ԥⵥ۶к<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') +--into #temp3 +-- FROM #TEMP1 t +-- GROUP BY ƻ,Ԥⵥ + + +-- UPDATE T_PLN_PLANORDER SET F_FORECASTNUMBER=B.Ԥⵥ, F_Linenumber=B.Ԥⵥк, F_SOURCE_ORDER_LINE_NUMBER=b.۶к, F_SOURCE_ORDER_NUMBER=b.۶ +--FROM T_PLN_PLANORDER A +--inner join #temp3 B +--ON A.FBILLNO=B.ƻ +----inner join #temp2 f on f.fname = a.FBILLNO + + + +--DROP TABLE #TEMP1 +--DROP TABLE #temp3 + + +--UPDATE A SET A.F_CUSTOMERNAME=D.FCUSTID,A.F_MATERIALCODE=D.FMATERIALID +--from T_PLN_PLANORDER A +--INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +--INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +--INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +--INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +----inner join #temp2 f on f.fname = a.FBILLNO +----where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 ) +----AND A.FBILLNO = @FBILLNO + +--update a set F_CUSTOMERNAME=d.FCUSTID,F_MATERIALCODE=d.FMATERIALID,F_FORECASTNUMBER=c.FBILLNO,F_Linenumber=d.FSEQ,F_SOURCE_ORDER_LINE_NUMBER=d.F_SOURCE_ORDER_LINE_NUMBER,F_Source_order_number=d.F_Source_order_number +--FROM T_PLN_PLANORDER A +--INNER JOIN T_PLN_PLANORDER_B B ON A.FID=B.FID +--INNER JOIN T_PLN_FORECAST C ON C .FBILLNO = B.FSALEORDERNO +--INNER JOIN T_PLN_FORECASTENTRY D ON D .FID= C.FID AND D.FSEQ=B.FSALEORDERENTRYSEQ +----INNER JOIN #temp2 e ON A.FBILLNO = e.Fname +----WHERE A.FBILLNO = 'MRP00640407' + + + +----UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +----INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +----INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber +----where ( a.F_Remark='' ) + + +--UPDATE E SET F_DESCRIPTION=ISNULL(C.FDESCRIPTION ,'' ) +--from T_PLN_PLANORDER A +--INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID +--INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +--INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +----inner join #temp2 f on f.fname = a.FBILLNO +----where ( e.F_DESCRIPTION='' ) +----AND A.FBILLNO = @FBILLNO + + + + + +--UPDATE T_PLN_PLANORDER SET F_Remark= +-- ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +--from T_PLN_PLANORDER A +----inner join #temp2 f on f.fname = a.FBILLNO +--where +--1=1 +----and ( a.F_Remark='' ) +--AND CONVERT(nvarchar(100), a.FCREATEDATE,23) = CONVERT(nvarchar(100), GETDATE(),23) +----AND A.FBILLNO = @FBILLNO + + +----UPDATE T_PLN_PLANORDER SET F_WAUG_LAYER = +----CASE WHEN B. IS NULL THEN ELSE CONCAT(,'-',) END +---- from T_PLN_PLANORDER A +---- inner join +----( +----select A.FID, dbo.GetBomSeq( B .FBOMID,a.FMATERIALID) as '', A.FMATERIALID,B.FBOMID,A.f_WAUG_LAYER,A.F_FORECASTNUMBER,A.F_LINENUMBER, +----A.F_MATERIALCODE,a.FBILLNO as '1',b.FBILLNO as '' from T_PLN_PLANORDER A +----INNER JOIN T_PLN_PLANORDER B ON A.F_FORECASTNUMBER=B.F_FORECASTNUMBER AND A.F_LINENUMBER=B.F_LINENUMBER AND A.F_MATERIALCODE =B.FMATERIALID +----INNER JOIN #temp2 C ON C.Fname=A.FBILLNO +------WHERE a.F_WAUG_LAYER = '' + +----) B ON A.FID = B.FID + +----DROP TABLE #temp2 + + + + +------select a.FBILLNO AS 'ƻ',A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к',A.F_Source_order_number as 'ƻ۶' +------, A.F_FORECASTNUMBER as 'ƻԤⵥ', A.F_Linenumber as 'ƻԤⵥк', +------E.FBILLNO AS 'Ԥⵥ',D.FSEQ,D.F_Source_order_number as 'Ԥⵥ۶',D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' +------INTO #TEMP1 +------from T_PLN_PLANORDER A +------INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +------INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +------INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +------INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +------WHERE A.F_FORECASTNUMBER='' +------AND A.FBILLNO = @FBILLNO +--------where A.FBILLNO = 'MRP00260726' +--------WHERE A.F_SOURCE_ORDER_LINE_NUMBER = '' + +------ --select * from #TEMP1 +-------- +------UPDATE A SET A.F_FORECASTNUMBER=B.Ԥⵥ,A.F_Linenumber=B.Ԥⵥк,a.F_SOURCE_ORDER_LINE_NUMBER=b.۶к,a.F_SOURCE_ORDER_NUMBER=b.۶ +------FROM T_PLN_PLANORDER A +------inner join +------( +------SELECT +------ƻ, Ԥⵥ, +------'Ԥⵥк'=ISNULL( stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), +------'۶'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶) from #TEMP1 where Ԥⵥ۶<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),''), +------'۶к'=ISNULL( stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶к) from #TEMP1 where Ԥⵥ۶к<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') +------ FROM #TEMP1 t +------ GROUP BY ƻ,Ԥⵥ +------) B +------ON A.FBILLNO=B.ƻ +------WHERE A.F_FORECASTNUMBER='' +------AND A.FBILLNO = @FBILLNO + + + +------DROP TABLE #TEMP1 + + +----UPDATE A SET A.F_CUSTOMERNAME=D.FCUSTID,A.F_MATERIALCODE=D.FMATERIALID +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO +----INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID +----INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID +----INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +----where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 ) +----AND A.FBILLNO = @FBILLNO + + +------UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +------from T_PLN_PLANORDER A +------INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +------INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +------INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber +------where ( a.F_Remark='' ) + + +----UPDATE E SET F_DESCRIPTION=ISNULL(C.FDESCRIPTION ,'' ) +----from T_PLN_PLANORDER A +----INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID +----INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER +----INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID +----where ( e.F_DESCRIPTION='' ) +----AND A.FBILLNO = @FBILLNO + + + + + +----UPDATE T_PLN_PLANORDER SET F_Remark= +---- ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') +----from T_PLN_PLANORDER A +----where +----1=1 +----and ( a.F_Remark='' ) +----AND CONVERT(nvarchar(100), a.FCREATEDATE,23) = CONVERT(nvarchar(100), GETDATE(),23) +----AND A.FBILLNO = @FBILLNO + + + +END \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程.sql b/Enpower.PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程.sql new file mode 100644 index 0000000..c5fe217 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程.sql @@ -0,0 +1,148 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_PLAN_BY_PAGE') + DROP PROCEDURE dbo.PROC_UPDATE_PLAN_BY_PAGE; +GO + +CREATE PROCEDURE PROC_UPDATE_PLAN_BY_PAGE + @ListCount int output +AS +BEGIN + SET NOCOUNT ON; + SET @ListCount = 0; + SELECT + TOP 5000 + A.FID + ,A.FBILLNO AS 'ƻ' + ,A.FSALENOROW,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к' + ,A.F_SOURCE_ORDER_NUMBER as 'ƻ۶' + ,A.F_FORECASTNUMBER as 'ƻԤⵥ' + ,A.F_Linenumber as 'ƻԤⵥк' + ,E.FBILLNO AS 'Ԥⵥ' + ,D.FSEQ,D.F_SOURCE_ORDER_NUMBER as 'Ԥⵥ۶' + ,D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' + INTO #TEMP1 + FROM T_PLN_PLANORDER A + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID = C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST E ON E .FID=D.FID + WHERE A.F_FORECASTNUMBER = '' + --AND A.FBILLNO = @FBILLNO + --AND A.FBILLNO = 'MRP00260726' + + SELECT FID + INTO #BillNoSet + FROM #TEMP1 + GROUP BY FID + + CREATE INDEX [#BillNoSet_INDEX_FID] ON #BillNoSet(FID); + + SELECT @ListCount = count(1) FROM #BillNoSet + --SELECT @ListCount + IF(@ListCount > 0) + BEGIN + SELECT + --ƻ + t.FID + ,Ԥⵥ + ,'Ԥⵥк'=ISNULL(stuff((select ','+CONVERT(nvarchar(100), FSEQ) from #TEMP1 where ƻ=t.ƻ and Ԥⵥ = t.Ԥⵥ for xml path('')),1,1,''),'') + ,'۶'=ISNULL(stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶) from #TEMP1 where Ԥⵥ۶<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') + ,'۶к'=ISNULL(stuff((select distinct ','+CONVERT(nvarchar(100), Ԥⵥ۶к) from #TEMP1 where Ԥⵥ۶к<>'' and ƻ=t.ƻ and Ԥⵥ =t.Ԥⵥ for xml path('')),1,1,''),'') + INTO #TEMP3 + FROM #TEMP1 t + WHERE t.Ԥⵥ = '' + GROUP BY t.FID,t.Ԥⵥ + + UPDATE T_PLN_PLANORDER + SET F_FORECASTNUMBER = B.Ԥⵥ + ,F_Linenumber = B.Ԥⵥк + ,F_SOURCE_ORDER_LINE_NUMBER = b.۶к + ,F_SOURCE_ORDER_NUMBER = b.۶ + FROM + T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + INNER JOIN #TEMP3 B ON A.FID=B.FID + --inner join #temp2 f on f.fname = a.FBILLNO + + --DROP TABLE #TEMP1 + DROP TABLE #temp3 + + UPDATE A SET + A.F_CUSTOMERNAME = D.FCUSTID + ,A.F_MATERIALCODE = D.FMATERIALID + from + T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e.fid=d.FID + --inner join #temp2 f on f.fname = a.FBILLNO + --where (a.F_CUSTOMERNAME=0 or a.F_MATERIALCODE=0 ) + --AND A.FBILLNO = @FBILLNO + + UPDATE A + SET F_CUSTOMERNAME = D.FCUSTID + ,F_MATERIALCODE = D.FMATERIALID + ,F_FORECASTNUMBER = C.FBILLNO + ,F_LINENUMBER = D.FSEQ + ,F_SOURCE_ORDER_LINE_NUMBER = D.F_SOURCE_ORDER_LINE_NUMBER + ,F_SOURCE_ORDER_NUMBER = D.F_SOURCE_ORDER_NUMBER + FROM + T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + INNER JOIN T_PLN_PLANORDER_B B ON A.FID=B.FID + INNER JOIN T_PLN_FORECAST C ON C .FBILLNO = B.FSALEORDERNO + INNER JOIN T_PLN_FORECASTENTRY D ON D .FID= C.FID AND D.FSEQ=B.FSALEORDERENTRYSEQ + --INNER JOIN #temp2 e ON A.FBILLNO = e.Fname + --WHERE A.FBILLNO = 'MRP00640407' + + --UPDATE A SET A.F_Remark=ISNULL( dbo.GetForecast(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') + --from T_PLN_PLANORDER A + --INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER + --INNER JOIN T_PLN_FORECAST_L C ON C.FID=B.FID + --INNER JOIN T_PLN_FORECASTENTRY D on D.FID=B.FID AND D.FSEQ=A.F_Linenumber + --where ( a.F_Remark='' ) + + UPDATE E SET F_DESCRIPTION = ISNULL(C.FDESCRIPTION ,'' ) + from T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + INNER JOIN T_PLN_PLANORDER_L E ON E.FID=A.FID + INNER JOIN T_PLN_FORECAST B ON B.FBILLNO=A.F_FORECASTNUMBER + INNER JOIN T_PLN_FORECAST_L C ON C.FID = B.FID + + --inner join #temp2 f on f.fname = a.FBILLNO + --where ( e.F_DESCRIPTION='' ) + --AND A.FBILLNO = @FBILLNO + + UPDATE T_PLN_PLANORDER + SET F_REMARK = ISNULL( DBO.GETFORECAST(A.F_FORECASTNUMBER ,A.F_LINENUMBER),'') + FROM T_PLN_PLANORDER A + INNER JOIN #BillNoSet tt ON tt.FID = A.FID + --inner join #temp2 f on f.fname = a.FBILLNO + WHERE 1=1 + --and ( a.F_Remark='' ) + --AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = CONVERT(nvarchar(100),GETDATE(),23) + AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = CONVERT(nvarchar(100),'2024-01-17',23) + --AND A.FBILLNO = @FBILLNO + + --UPDATE T_PLN_PLANORDER SET F_WAUG_LAYER = + --CASE WHEN B. IS NULL THEN ELSE CONCAT(,'-',) END + -- from T_PLN_PLANORDER A + -- inner join + --( + --select A.FID, dbo.GetBomSeq( B .FBOMID,a.FMATERIALID) as '', A.FMATERIALID,B.FBOMID,A.f_WAUG_LAYER,A.F_FORECASTNUMBER,A.F_LINENUMBER, + --A.F_MATERIALCODE,a.FBILLNO as '1',b.FBILLNO as '' from T_PLN_PLANORDER A + --INNER JOIN T_PLN_PLANORDER B ON A.F_FORECASTNUMBER=B.F_FORECASTNUMBER AND A.F_LINENUMBER=B.F_LINENUMBER AND A.F_MATERIALCODE =B.FMATERIALID + --INNER JOIN #temp2 C ON C.Fname=A.FBILLNO + ----WHERE a.F_WAUG_LAYER = '' + + --) B ON A.FID = B.FID + + --DROP TABLE #temp2 + END + + DROP TABLE #TEMP1 + DROP TABLE #BillNoSet + + SET NOCOUNT OFF +END \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程_20240120.sql b/Enpower.PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程_20240120.sql new file mode 100644 index 0000000..528eadf --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/更新计划订单_预测单信息_存储过程_20240120.sql @@ -0,0 +1,187 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_PLAN_20240120') + DROP PROCEDURE dbo.PROC_UPDATE_PLAN_20240120; +GO + +CREATE PROCEDURE PROC_UPDATE_PLAN_20240120 +AS +BEGIN + SELECT + t0.FID --id + ,t0.FBILLNO + ,t2.FID 'FORECAST_ID' + ,t2e.FENTRYID 'FORECASTENTRY_ID' + ,t2.FBILLNO 'F_FORECASTNUMBER' + ,t2e.FSEQ 'F_LINENUMBER' + ,t2e.FCUSTID 'F_CUSTOMERNAME' + ,t2e.FMATERIALID 'F_MATERIALCODE' --Ԥⵥid + ,t2e.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t2e.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + INTO #TEMP_PLANORDER_ID_LIST + FROM T_PLN_PLANORDER t0 + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0.FID + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID = t1e.FID + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FENTRYID = t1.FSRCENTRYID + INNER JOIN T_PLN_FORECAST t2 on t2.fid = t2e.FID + WHERE 1 = 1 + AND t0.F_FORECASTNUMBER = '' + --AND CONVERT(nvarchar(100),t0.FCREATEDATE,23) = '2024-01-18' + + CREATE INDEX #TEMP_PLANORDER_ID_LIST_INDEX_FID ON #TEMP_PLANORDER_ID_LIST(FID); + + SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,t0.F_LINENUMBER + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,ISNULL(t1_l.FDESCRIPTION,'') AS F_DESCRIPTION + --,t1_l.FDESCRIPTION F_DESCRIPTION + ,ISNULL(t1e_l.FDESCRIPTION,'') AS F_REMARK --屸ע + --,t1e_l.FDESCRIPTION F_REMARK + ,t2.FNUMBER 'MATERIAL_NUMBER' + ,t2_l.FNAME 'MATERIAL_NAME' + ,t3.TOTAL + INTO #TEMP_PLANORDER_RESERVELINK + + FROM #TEMP_PLANORDER_ID_LIST t0 + INNER JOIN (SELECT FID,COUNT(1) TOTAL FROM #TEMP_PLANORDER_ID_LIST GROUP BY FID ) t3 on t3.FID = t0.FID + LEFT JOIN T_PLN_FORECAST_L t1_l on t0.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052 + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = t0.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052 + LEFT JOIN T_BD_MATERIAL t2 on t0.F_MATERIALCODE = t2.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t2_l on t0.F_MATERIALCODE = t2_l.FMATERIALID AND t2_l.FLOCALEID = 2052 + WHERE 1=1 + --AND t0.F_FORECASTNUMBER = '' + + CREATE INDEX #TEMP_PLANORDER_RESERVELINK_INDEX ON #TEMP_PLANORDER_RESERVELINK(FID); + + --ƻ һԴ--- + UPDATE t0 + SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + ,t0.F_LINENUMBER = tt.F_LINENUMBER + ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + ,t0.F_REMARK = tt.F_REMARK + ,t0.F_MATERIALCODESHOW = tt.MATERIAL_NUMBER + ,t0.F_MATERIALNAMESHOW = tt.MATERIAL_NAME + FROM T_PLN_PLANORDER t0 + INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0.FID = tt.FID AND tt.TOTAL = 1 + + --ƻչ һԴ--- + UPDATE t0_l + SET t0_l.F_DESCRIPTION = tt.F_DESCRIPTION + FROM T_PLN_PLANORDER_L t0_l + INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0_l.FID = tt.FID AND tt.TOTAL = 1 + + SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,DENSE_RANK() over(partition BY t0.FID order by t0.FORECAST_ID) 'FORECASTNUMBER_SEQ' + ,t0.F_LINENUMBER + ,ROW_NUMBER() over(partition BY t0.FID,t0.FORECAST_ID order by t0.F_LINENUMBER) 'LINENUMBER_SEQ' + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + ,t0.F_DESCRIPTION + ,t0.MATERIAL_NUMBER + ,t0.MATERIAL_NAME + ,t0.TOTAL + ,DENSE_RANK() over(partition BY t0.FID order by t0.F_MATERIALCODE) 'DENSE_RANK_NUM' + INTO #TEMP_PLANORDER_RESERVELINK2 + FROM + #TEMP_PLANORDER_RESERVELINK t0 + WHERE 1 = 1 + AND TOTAL > 1 + ORDER BY FID + + CREATE INDEX #TEMP_PLANORDER_RESERVELINK2_INDEX ON #TEMP_PLANORDER_RESERVELINK2(FID); + + UPDATE t0 SET t0.F_MATERIALCODE = 0,t0.F_CUSTOMERNAME = 0 + FROM #TEMP_PLANORDER_RESERVELINK2 t0,(SELECT FID FROM #TEMP_PLANORDER_RESERVELINK2 WHERE DENSE_RANK_NUM = 2) t1 WHERE t0.FID = t1.FID + + SELECT + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ','+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select distinct ';'+ ISNULL(tt.F_REMARK,'') from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ','+ tt.MATERIAL_NUMBER from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'MATERIAL_NUMBER' + ,ISNULL(stuff((select distinct ','+ tt.MATERIAL_NAME from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'MATERIAL_NAME' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP + FROM #TEMP_PLANORDER_RESERVELINK2 t0 + GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + CREATE INDEX #TEMP_INDEX ON #TEMP(FID); + + SELECT + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_FORECASTNUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_FORECASTNUMBER' + ,ISNULL(stuff((select distinct ';' + tt.MATERIAL_NUMBER from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'MATERIAL_NUMBER' + ,ISNULL(stuff((select distinct ';' + tt.MATERIAL_NAME from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'MATERIAL_NAME' + ,ISNULL(stuff((select distinct ';' + tt.F_REMARK from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ';' + ISNULL(tt.F_DESCRIPTION,'') from #TEMP tt where tt.FID = t0.FID for xml path('')),1,1,''),'') 'F_DESCRIPTION' + ,ISNULL(stuff((select distinct ';' + CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ';' + CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP2 + FROM #TEMP t0 + --WHERE t0.fbillno ='MRP01679279' + GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + CREATE INDEX #TEMP2_INDEX ON #TEMP2(FID); + + --UPDATE #TEMP2 SET F_REMARK = '' WHERE F_REMARK = ';' + + --ƻ-Դ-- + UPDATE t0 + SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + ,t0.F_LINENUMBER = tt.F_LINENUMBER + ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + ,t0.F_REMARK = tt.F_REMARK + ,t0.F_MATERIALCODESHOW = tt.MATERIAL_NUMBER + ,t0.F_MATERIALNAMESHOW = tt.MATERIAL_NAME + FROM T_PLN_PLANORDER t0 + INNER JOIN #TEMP2 tt on t0.FID = tt.FID --AND tt.TOTAL = 1 + + --ƻչ-Դ-- + UPDATE t0_l + SET t0_l.F_DESCRIPTION = tt.F_DESCRIPTION + FROM T_PLN_PLANORDER_L t0_l + INNER JOIN #TEMP2 tt on t0_l.FID = tt.FID --AND tt.TOTAL = 1 + + SELECT * FROM #TEMP2 + DROP TABLE #TEMP + DROP TABLE #TEMP2 + DROP TABLE #TEMP_PLANORDER_ID_LIST + DROP TABLE #TEMP_PLANORDER_RESERVELINK + DROP TABLE #TEMP_PLANORDER_RESERVELINK2 +END \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/查询生产层号为空的生产用料清单202402261540.sql b/Enpower.PRD_MO/SQLserver/查询生产层号为空的生产用料清单202402261540.sql new file mode 100644 index 0000000..59f1450 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/查询生产层号为空的生产用料清单202402261540.sql @@ -0,0 +1,19 @@ +SELECT t0.FBILLNO,t0.FID,t0e.FENTRYID + ,t1.FDATE,t0.FMOBILLNO + ,t0e.FFORECASTGROUP,t0e.FFORECASTGROUPFRIST + ,t1e.FFORECASTGROUPFRIST AS MOGROUPFRIST,t1e.FFORECASTGROUP AS MOGROUP, +--UPDATE t0e SET t0e.FFORECASTGROUP = t1e.FFORECASTGROUP +-- ,t0e.FFORECASTGROUPFRIST = + CASE + WHEN CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0) = 0 + THEN t1e.FFORECASTGROUP + ELSE SUBSTRING(t1e.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( t1e.FFORECASTGROUP,'_','-') ,0)) + END +FROM T_PRD_PPBOM t0 + INNER JOIN T_PRD_PPBOMENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MO t1 on t1.FID = t0.FMOID + INNER JOIN T_PRD_MOENTRY t1e on t1e.FID = t0.FMOID +WHERE 1 = 1 AND t1e.FFORECASTGROUP != '' + AND t0e.FFORECASTGROUP = '' + AND t0e.FFORECASTGROUPFRIST != t1e.FFORECASTGROUPFRIST +ORDER BY t1.FDATE desc \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/查询语句.sql b/Enpower.PRD_MO/SQLserver/查询语句.sql new file mode 100644 index 0000000..4c205c9 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/查询语句.sql @@ -0,0 +1,117 @@ +--ƻԤⵥѯstart-- +SELECT + --TOP 5000 + t0.FID + ,t0.FBILLNO + ,t0.FBOMID + ,t0.FMATERIALID --ƻid + ,t0_b.FSALEORDERID --󵥺id + ,t0_b.FSALEORDERENTRYID --󵥺űid + ,t0_b.FSALEORDERENTRYSEQ --󵥺űк + ,t0.F_Linenumber 'Ԥⵥк#' + ,t0_b.FSALEORDERNO '󵥺'--󵥺 + ,t1.FBILLNO 'Ԥⵥ' + ,t0.F_FORECASTNUMBER 'Ԥⵥ#' + ,t1e.FCUSTID + ,t0.F_CUSTOMERNAME + ,t1e.FMATERIALID AS F_MATERIALCODE --Ԥⵥid + ,t0.F_MATERIALCODE + ,t0.F_SOURCE_ORDER_LINE_NUMBER + ,t1e.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER + ,t1e.F_SOURCE_ORDER_NUMBER --۶# + ,ISNULL(t1_l.FDESCRIPTION,'') AS F_DESCRIPTION --ͷע + ,t0_l.F_DESCRIPTION + ,ISNULL(t1e_l.FDESCRIPTION,'') AS F_REMARK --屸ע + ,t0.F_REMARK +FROM + T_PLN_PLANORDER t0 + INNER JOIN T_PLN_PLANORDER_B t0_b on t0.FID = t0_b.FID + INNER JOIN T_PLN_PLANORDER_L t0_l on t0.FID = t0_l.FID + INNER JOIN T_PLN_FORECAST t1 on t0_b.FSALEORDERID = t1.FID --Ԥⵥ + LEFT JOIN T_PLN_FORECAST_L t1_l on t1_l.FID = t0_b.FSALEORDERID --ԤⵥעϢ + INNER JOIN T_PLN_FORECASTENTRY t1e on t1e.FID = t0_b.FSALEORDERID AND t0_b.FSALEORDERENTRYID = t1e.FENTRYID --Ԥⵥ + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = t0_b.FSALEORDERENTRYID --Ԥⵥ屸עϢ + --INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = t0.FBILLNO + --INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID --Ԥϵ + --INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + --INNER JOIN T_PLN_FORECAST E ON E .FID=D.FID +WHERE 1 = 1 + AND t0.F_FORECASTNUMBER = '' + AND t0_b.FDEMANDTYPE = 2 + AND CONVERT(nvarchar(100),t0.FCREATEDATE,23) = '2024-01-18' + --AND t0.FCOMPUTERNO ='MRP000401' + --AND t0_b.FSALEORDERID = 0 +--ORDER BY t0_b.FSALEORDERID,t0_b.FSALEORDERENTRYSEQ + +--ƻԤⵥѯend-- + +--ƻԤϵѯstart-- +SELECT A.FID + into #temp + FROM T_PLN_PLANORDER A + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e .fid=d.FID + WHERE 1=1 + --AND A.F_FORECASTNUMBER='' + AND A.FCOMPUTERNO ='MRP000401' + AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = '2024-01-18' + GROUP BY A.FID + HAVing count(1) > 1 + CREATE INDEX [#temp_INDEX_FID] ON #temp(FID); +SELECT +t0_b.FSALEORDERID --󵥺id +,t0_b.FSALEORDERENTRYID --󵥺űid +,t0_b.FSALEORDERENTRYSEQ --󵥺űк +--,t0.F_Linenumber 'Ԥⵥк#' +,t0_b.FSALEORDERNO '󵥺'--󵥺 +,t0.F_FORECASTNUMBER 'Ԥⵥ#' +,d.FSEQ +,case when t0_b.FSALEORDERENTRYSEQ = d.FSEQ then 1 else 0 end +,t0.FBILLNO +--SELECt * +FROM T_PLN_PLANORDER t0 + INNER JOIN T_PLN_PLANORDER_B t0_b on t0.FID = t0_b.FID + --INNER JOIN T_PLN_FORECAST t1 on t0_b.FSALEORDERID = t1.FID --Ԥⵥ + --LEFT JOIN T_PLN_FORECAST_L t1_l on t1_l.FID = t0_b.FSALEORDERID --ԤⵥעϢ + --INNER JOIN T_PLN_FORECASTENTRY t1e on t1e.FID = t0_b.FSALEORDERID AND t0_b.FSALEORDERENTRYID = t1e.FENTRYID --and t0_b.FSALEORDERENTRYSEQ = t1e.FSEQ--Ԥⵥ + + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = t0.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +WHERE exists (SELECT 1 FROM #temp tt WHERE tt.FID = t0.FID) and (t0_b.FSALEORDERENTRYSEQ != d.FSEQ or t0_b.FSALEORDERNO != e.FBILLNO) + +DROP TABLE #TEMP +--ƻԤϵѯend-- + +--ֶβѯstart-- + +SELECT + a.FBILLNO AS 'ƻ' + ,A.FSALENOROW + ,A.F_SOURCE_ORDER_LINE_NUMBER as 'ƻ۶к' + ,A.F_Source_order_number as 'ƻ۶' + ,A.F_FORECASTNUMBER as 'ƻԤⵥ' + ,A.F_Linenumber as 'ƻԤⵥк' + ,E.FBILLNO AS 'Ԥⵥ' + ,D.FSEQ,D.F_Source_order_number as 'Ԥⵥ۶' + ,D.F_SOURCE_ORDER_LINE_NUMBER as 'Ԥⵥ۶к' +--UPDATE A SET A.F_Forecastnumber = '',A.F_Linenumber='',A.F_MaterialCode = 0,A.F_Remark = '' +SELECT A.* +FROM T_PLN_PLANORDER A + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e .fid=d.FID +WHERE 1=1 + AND A.F_FORECASTNUMBER='' + AND a.fbillno='MRP01348067' + AND CONVERT(nvarchar(100),a.FCREATEDATE,23) = '2024-01-18' + --AND A.F_Forecastnumber ='N+30000028' + + --ֶβѯend-- + + 'WO2401220106,WO2401220362,WO2401220363,WO2401220364,WO2401220365,WO2401220366,WO2401220367,WO2401220368,WO2401220369,WO2401220370,WO2401220371,WO2401220372,WO2401220373,WO2401220374,WO2401220375,WO2401220376,WO2401220377,WO2401220378' \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/生产订单BOM.sql b/Enpower.PRD_MO/SQLserver/生产订单BOM.sql new file mode 100644 index 0000000..41aeddd --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/生产订单BOM.sql @@ -0,0 +1,49 @@ + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID 'Դ' + ,t1.FSRCBILLNO 'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,'' BOMLevel + /*һʱ*/ + --INTO #_MO + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID=t0e.FID AND t1e.FINTSUPPLYENTRYID=t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID='PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID=t1.FSRCINTERID AND t2e.FENTRYID=t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + + --CREATE INDEX [#PLid] ON #_MO (FSRCINTERID ASC,FSRCENTRYID ASC) /*ͬ*/ + --CREATE INDEX [#BomId] ON #_MO (FBomId ASC) /*BOM༶չԼײſ*/ + + --SELECT FSRCINTERID,FSRCENTRYID,MO2.FBILLNO AS 'ײIJ' + --into #n_mo + --FROM #_MO MO INNER JOIN T_PRD_MOENTRY MO1 ON MO1.FID=MO.FID AND MO1.FENTRYID=MO.FENTRYID + --INNER JOIN T_PRD_MO MO2 ON MO2.FID=MO.FID + --CREATE INDEX [#n_mo] ON #n_mo (FSRCINTERID ASC,FSRCENTRYID ASC) /*ͬ*/ + + ----update mo set BOMLevel=nmo.ײIJ+'-'+'ֵIJ' + ----from #_MO mo left join #n_mo nmo on nmo.FSRCINTERID=mo.FSRCINTERID and nmo.FSRCENTRYID=mo.FSRCENTRYID + --/*-------------dbo.GetBomSeqΪֵ洢̣ذֶεı----------------- + -- BOM_ID(Ӧ#_MOеFBomId) + -- BOM_ID(Ӧ#_MOеMOBomId) + -- + ----------------dbo.GetBomSeqΪֵ洢̣ذֶεı------------------*/ + ----select dbo.GetBomSeq(7293846,3994919) + + --select * from #_MO + + --DROP TABLE #_MO + --DROP TABLE #n_mo \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/生产订单BOM_创建临时表.sql b/Enpower.PRD_MO/SQLserver/生产订单BOM_创建临时表.sql new file mode 100644 index 0000000..ced761c --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/生产订单BOM_创建临时表.sql @@ -0,0 +1,186 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_UPDATE_BOMLEVEL +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ); + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + --AND t0e.FFORECASTGROUP='' /*Ϊ*/ + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO) order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FBOMID =MOBomId + ) t0 ON tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + AND t0.ROWID =1 + AND t0.Billnolen = len(tt.FBILLNO) + WHERE + tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.FMATERIALID) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID + WHERE 1 = 1 + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + ROW_NUMBER() over(partition BY TOPID order by FSEQ) AS rowId, + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = t0.TOPBILLNO + t1.showlevel + FROM #TMP_MO t0 INNER JOIN #TMP_TOP_BOM_GROUP t1 on t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + --µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + SELECT t0.*,t1.fnumber + FROM #TMP_TOP_BOM_GROUP t0 INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + --WHERE t0.OID = 6339745 + order by t0.FSEQ,t0.BOMLEVEL + SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 AND topbillno='WO2308090009' --ѯʱ + + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/生产订单BOM_查询.sql b/Enpower.PRD_MO/SQLserver/生产订单BOM_查询.sql new file mode 100644 index 0000000..45dd0b6 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/生产订单BOM_查询.sql @@ -0,0 +1,219 @@ + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + ,t0e.FFORECASTGROUPFRIST + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP = '' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,ISNULL(t0.FBILLNO,'޶') FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + LEFT JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = (CASE t0.TOPBILLNO WHEN '޶' THEN '' ELSE ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') END) + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + --WHERE t0e.FFORECASTGROUP = '' + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + SELECT t0.* + ,t0_lk.FSTABLENAME + ,t0_lk.FSTABLEID + ,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITBILLNO + ,t0e_Q.FSRCSPLITID + ,t0e_Q.FSRCSPLITSEQ + ,t0e_Q.FSRCSPLITENTRYID + --INTO #TMP_MO_PART + FROM #TMP_MO_GROUP t0 + LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql b/Enpower.PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql new file mode 100644 index 0000000..0b7eb2a --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/生产订单BOM_选中订单_更新层号_存储过程20240115.sql @@ -0,0 +1,231 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_SELECT_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_SELECT_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_SELECT_UPDATE_BOMLEVEL + @billnoStr varchar(1000) +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + AND t0.FBILLNO in (SELECT b.billno FROM (SELECT CAST(''+REPLACE(@billnoStr,',','')+'' AS xml) billno ) a OUTER APPLY (SELECT T.C.value('.','varchar(50)') billno FROM a.billno.nodes('/v') AS T(C)) b ) --Ų + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + --SELECT t0.* + -- ,t0_lk.FSTABLENAME + -- ,t0_lk.FSTABLEID + -- ,t0_lk.FSBILLID + -- ,t0_lk.FSID + -- ,t0e_Q.FSRCSPLITBILLNO + -- ,t0e_Q.FSRCSPLITID + -- ,t0e_Q.FSRCSPLITSEQ + -- ,t0e_Q.FSRCSPLITENTRYID + -- --INTO #TMP_MO_PART + -- FROM #TMP_MO_GROUP t0 + -- LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + -- INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + -- WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/生产订单BOM更新层号_存储过程20240114.sql b/Enpower.PRD_MO/SQLserver/生产订单BOM更新层号_存储过程20240114.sql new file mode 100644 index 0000000..cd9c330 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/生产订单BOM更新层号_存储过程20240114.sql @@ -0,0 +1,229 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_UPDATE_BOMLEVEL') + DROP PROCEDURE dbo.PROC_UPDATE_BOMLEVEL; +GO + +CREATE PROCEDURE PROC_UPDATE_BOMLEVEL +AS +BEGIN + CREATE TABLE #TMP_MO --ʱ#TMP + ( + FID INT + ,FBILLNO VARCHAR(255) + ,FDATE DATE + ,FENTRYID INT + ,FMATERIALID INT + ,OMATERAILID int + ,MOBOMID INT + ,FSRCFORMID VARCHAR(255) + ,FSRCBILLNO VARCHAR(255) + ,FSRCINTERID INT + ,FSRCENTRYID INT + ,FSEQ INT + ,FBOMID INT + ,BOMLEVEL VARCHAR(255) + ,TOPBILLNO VARCHAR(255) + ,FFORECASTGROUP varchar(255) + ); + + CREATE INDEX [#TMP_MO_FID] ON #TMP_MO(FID); + + --INSERT INTO #TMP_MO + /*ƻһͶţT_PLN_RESERVELINKENTRYƻתƵ */ + SELECT + t0e.FID + ,t0.FBILLNO + ,t0.FDATE + ,t0e.FENTRYID + ,t0e.FMATERIALID + ,t0e.FBomId MOBomId + ,t1.FSRCFORMID --'Դ' + ,t1.FSRCBILLNO --'Դ' + ,t1.FSRCINTERID /*Դ*/ + ,t1.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,t2e.FSEQ + ,t2e.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,t2e.FMATERIALID OMATERAILID + ,t0e.FFORECASTGROUP + --,t0_lk.FSTABLENAME + --,t0_lk.FSTABLEID + --,t0_lk.FSBILLID + ,t0_lk.FSID + ,t0e_Q.FSRCSPLITID + ,'' BOMLevel + INTO #TMP_MO_PART + FROM T_PRD_MO t0 --ͷ + INNER JOIN T_PRD_MOENTRY t0e ON t0e.FID=t0.FID -- + INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0e.FENTRYID = t0e_Q.FENTRYID + INNER JOIN T_PRD_MOENTRY_LK t0_lk on t0e.FENTRYID = t0_lk.FENTRYID + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0e.FID AND t1e.FINTSUPPLYENTRYID = t0e.FENTRYID--Ԥ + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID=t1e.FID AND t1.FSRCFORMID = 'PLN_FORECAST'--Ԥͷ + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FID = t1.FSRCINTERID AND t2e.FENTRYID = t1.FSRCENTRYID--Ԥⵥ + WHERE 1 = 1 + --t0.FBILLNO='WO2401100002' /**/ + AND t0e.FFORECASTGROUP='' /*Ϊ*/ + --AND t0e.FFORECASTGROUPFRIST = 'WO2312270043' + AND t0e.FSRCBILLTYPE='PLN_PLANORDER' /*ȷͨMRPƵĵ*/ + AND t0e_Q.FSRCSPLITID = 0 + + + INSERT INTO #TMP_MO + SELECT + tt.FID + ,tt.FBILLNO + ,tt.FDATE + ,tt.FENTRYID + ,tt.FMATERIALID + ,tt.OMATERAILID + ,tt.MOBomId + ,tt.FSRCFORMID --'Դ' + ,tt.FSRCBILLNO --'Դ' + ,tt.FSRCINTERID /*Դ*/ + ,tt.FSRCENTRYID /*Դ¼*/ ---ԴͬһԤⵥͬһеֵһͬ + ,tt.FSEQ + ,tt.FBomId /*ԤⶩFBomIdȡƥBOM༶չײ*/ + ,tt.BOMLevel + ,t0.FBILLNO + ,tt.FFORECASTGROUP + --into #TMP_MO + FROM + #TMP_MO_PART tt + INNER JOIN ( + SELECT + FID,MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FBILLNO,FDATE,len(FBILLNO) Billnolen,OMATERAILID,FMATERIALID,FSID + ,ROW_NUMBER() over(partition BY MOBomId,FBOMID,FSEQ,FSRCINTERID,FSRCENTRYID,FDATE,len(FBILLNO),OMATERAILID,FMATERIALID order by FBILLNO) ROWID + FROM + #TMP_MO_PART + WHERE FMATERIALID = OMATERAILID + ) t0 ON 1=1 + AND tt.FBOMID = t0.FBOMID + AND tt.FSEQ = t0.FSEQ + AND tt.FSRCINTERID = t0.FSRCINTERID + AND tt.FSRCENTRYID = t0.FSRCENTRYID + AND tt.FDATE = t0.FDATE + --AND t0.ROWID =1 + AND tt.OMATERAILID = t0.FMATERIALID + AND t0.Billnolen = len(tt.FBILLNO) + --AND tt.fsid = t0.FSID + WHERE 1 = 1 + --AND tt.FFORECASTGROUP = '' + + CREATE TABLE #TMP_TOP_BOM_SET( + FID int + ,FNUMBER varchar(80) + ,FMATERIALID int + ,FSEQ int + ,BOMLEVEL int + ,TOPID int + ,showlevel varchar(80) + ,oId int + ) + CREATE INDEX [#TMP_TOP_BOM_SET_FID] ON #TMP_TOP_BOM_SET(FID); + + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.FID order by t0.fid) + ,1 'BOMLEVEL' + ,t0.FID AS 'TOPID' + ,'' + ,t0.FID + FROM + T_ENG_BOM t0 + INNER JOIN #TMP_MO t3 on t3.FBOMID = t0.FID AND t3.FMATERIALID = t0.FMATERIALID + WHERE 1 = 1 + AND t3.FMATERIALID = t3.OMATERAILID + GROUP BY + t0.FID + ,t0.FNUMBER + ,t0.FMATERIALID + + + DECLARE @num INT,@level int,@LoopCount int + SET @num = 1 + SET @level =1 + SET @LoopCount = 0; + WHILE (@num <> 0 AND @LoopCount < 30) + BEGIN + INSERT INTO #TMP_TOP_BOM_SET + SELECT + t3.FID + ,t3.FNUMBER + ,t3.FMATERIALID + ,ROW_NUMBER() over(partition BY t0.TOPID,t0.oid order by t0.fseq) + ,t0.BOMLEVEL + 1 + ,t0.TOPID + ,CONCAT(t0.showlevel,'-',CAST(dense_rank() over(partition BY t0.topid,t0.oid,t0.fid order by t1.fseq) as VARCHAR)) + ,t0.FID + FROM + #TMP_TOP_BOM_SET t0 + INNER JOIN T_ENG_BOMCHILD t1 on t0.FID = t1.FID + INNER JOIN T_BD_MATERIALBASE t2 on t2.FMATERIALID = t1.FMATERIALID + INNER JOIN T_ENG_BOM t3 on t1.FMATERIALID = t3.FMATERIALID + WHERE 1 = 1 + AND (t2.FERPCLSID = 2 OR t2.FERPCLSID = 5 ) + AND t0.BOMLEVEL = @level + + SET @num = @@ROWCOUNT + SET @level += 1 + SET @LoopCount += 1 + END + + SELECT + * + INTO #TMP_TOP_BOM_GROUP + FROM #TMP_TOP_BOM_SET + WHERE 1 = 1 + GROUP BY FID,FNUMBER,FMATERIALID,FSEQ,BOMLEVEL,TOPID,showlevel,oId + + SELECT FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + INTO #TMP_MO_GROUP + FROM #TMP_MO + GROUP BY FID,FBILLNO,FENTRYID,FDATE,FMATERIALID,OMATERAILID,MOBOMID,FSRCENTRYID,FSRCINTERID,FSEQ,FBOMID,TOPBILLNO,BOMLEVEL,FFORECASTGROUP + + --ʱ + UPDATE t0 SET t0.BOMLEVEL = ISNULL(t0.TOPBILLNO,'') + ISNULL(t1.showlevel ,'') + FROM #TMP_MO_GROUP t0 LEFT JOIN #TMP_TOP_BOM_GROUP t1 on t0.FMATERIALID = t1.FMATERIALID AND t0.MOBOMID = t1.FID AND t0.FBOMID = t1.TOPID + + ----µݿ + --UPDATE t0e SET t0e.FFORECASTGROUP = t1.BOMLEVEL,t0e.FFORECASTGROUPFRIST = t1.TOPBILLNO + --FROM T_PRD_MOENTRY t0e INNER JOIN #TMP_MO_GROUP t1 on t0e.FBOMID = t1.MOBOMID AND t0e.FENTRYID = t1.FENTRYID + + --SELECT t0.*,t1.fnumber + + --FROM #TMP_TOP_BOM_GROUP t0 + --INNER JOIN T_BD_MATERIAL t1 on t0.fmaterialid = t1.fmaterialid + + ----WHERE t0.TOPID = 8062230 + --order by t0.FSEQ,t0.BOMLEVEL + --SELECT t0.*,t1.FENTRYID FROM #TMP_MO_GROUP t0 RIGHT join T_PRD_MOENTRY t1 on t0.FID = t1.FID AND t0.FENTRYID = t1.FENTRYID WHERE 1 = 1 AND t1.FFORECASTGROUPFRIST = 'WO2312270043' + --SELECT t0.* + -- ,t0_lk.FSTABLENAME + -- ,t0_lk.FSTABLEID + -- ,t0_lk.FSBILLID + -- ,t0_lk.FSID + -- ,t0e_Q.FSRCSPLITBILLNO + -- ,t0e_Q.FSRCSPLITID + -- ,t0e_Q.FSRCSPLITSEQ + -- ,t0e_Q.FSRCSPLITENTRYID + -- --INTO #TMP_MO_PART + -- FROM #TMP_MO_GROUP t0 + -- LEft JOIN T_PRD_MOENTRY_LK t0_lk on t0.FENTRYID = t0_lk.FENTRYID + -- INNER JOIN T_PRD_MOENTRY_Q t0e_Q on t0.FENTRYID = t0e_Q.FENTRYID + -- WHERE 1 = 1 + --AND FBOMID =8237478 AND MOBOMID =8237478 + --AND topbillno='WO2311080183' + --SELECT * FROM #TMP_MO WHERE 1 = 1 + --AND FBOMID <> MOBOMID + --AND FBOMID = 6339745 --AND topbillno='WO2308090009' --ѯʱ + DROP TABLE #TMP_MO_GROUP + DROP TABLE #TMP_MO_PART + DROP TABLE #TMP_TOP_BOM_SET + DROP TABLE #TMP_TOP_BOM_GROUP + DROP TABLE #TMP_MO --ɾʱ#TMP +END + +--SET STATISTICS TIME ON +--EXEC PROC_UPDATE_BOMLEVEL +--SET STATISTICS TIME OFF \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/统计需要更新的数据.sql b/Enpower.PRD_MO/SQLserver/统计需要更新的数据.sql new file mode 100644 index 0000000..e87a496 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/统计需要更新的数据.sql @@ -0,0 +1,20 @@ +IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_COUNT_UPDATE_PLAN_LIST') + DROP PROCEDURE dbo.PROC_COUNT_UPDATE_PLAN_LIST; +GO + +CREATE PROCEDURE PROC_COUNT_UPDATE_PLAN_LIST +AS +BEGIN + SELECT COUNT(1) as totalCount,5000 as pageSize + FROM ( + SELECT A.FID + FROM T_PLN_PLANORDER A + INNER JOIN T_PLN_RESERVELINKENTRY B ON B.FSUPPLYBILLNO = A.FBILLNO + INNER JOIN T_PLN_RESERVELINK C ON C.FID=B.FID + INNER JOIN T_PLN_FORECASTENTRY D ON D.FENTRYID=C.FSRCENTRYID + INNER JOIN T_PLN_FORECAST e on e .fid=d.FID + WHERE 1=1 + AND A.F_FORECASTNUMBER = '' + GROUP BY A.FID + ) t +END \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/英博尔测试20240220.sql b/Enpower.PRD_MO/SQLserver/英博尔测试20240220.sql new file mode 100644 index 0000000..94bb978 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/英博尔测试20240220.sql @@ -0,0 +1,232 @@ + +declare @FBILLNO NVARCHAR(1000) +set @FBILLNO = 'WO2402200045,WO2402200046,WO2402200047' +select fname into #temp2 from dbo.fn_hr_StrSplit(@FBILLNO,',') + +UPDATE B SET FFORECASTGROUP = REPLACE( D.FFORECASTGROUP,H.FBILLNO,L.FBILLNO) + +FROM T_PRD_MO A +INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID +INNER JOIN T_PRD_MOENTRY_Q C ON C.FENTRYID=B.FENTRYID +INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FSRCSPLITENTRYID +INNER JOIN T_PRD_MO E ON E.FID=D.FID +INNER JOIN T_PRD_MO H ON H.FBILLNO=D.FFORECASTGROUPFRIST --ײ +INNER JOIN T_PRD_MOENTRY I ON I.FID=H.FID --ײ㵥 +INNER JOIN T_PRD_MOENTRY_Q J ON J.FSRCSPLITENTRYID=I.FENTRYID +INNER JOIN T_PRD_MOENTRY K ON K.FENTRYID=J.FENTRYID +INNER JOIN T_PRD_MO L ON L.FID=K.FID AND SUBSTRING(L.FBILLNO, CHARINDEX('-',L.FBILLNO)+1,LEN(L.FBILLNO)) = SUBSTRING(A.FBILLNO, CHARINDEX('-',A.FBILLNO)+1,LEN(A.FBILLNO)) +inner join #temp2 m on m.Fname=a.FBILLNO +WHERE 1=1 +AND B.FFORECASTGROUP = '' + + + +--2024-01-15 ޸ ,ʹÿ洢 +exec PROC_SELECT_UPDATE_BOMLEVEL @FBILLNO + + +--(ζ) + UPDATE B SET FFORECASTGROUP = ISNULL( cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) ,'') + --SELECT + --F.FNUMBER, + --a.FBILLNO, + --B.FENTRYID , + --D.fbomid,b.fmaterialid, + --cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) as 'Bom', + --CONVERT( nvarchar(1000),'') as 'ε',a.FBILLNO as '',e.FBILLNO as 'Դͷ' + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MOENTRY_LK C ON C .FENTRYID=B.FENTRYID + INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FSBILLID AND D.FENTRYID=C.FSID + INNER JOIN T_PRD_MO E ON E.FID=D.FID + INNER JOIN T_BD_MATERIAL F ON F.FMATERIALID=B.FMATERIALID + inner join #temp2 g on g.Fname=a.FBILLNO + WHERE B.FFORECASTGROUP = '' +--AND A.FBILLNO =@FBILLNO + + +--2024-01-23 1814 ޸start-- + ----(ûε,Ϊĵݱ) + --UPDATE B SET FFORECASTGROUP = A.FBILLNO + ----SELECT * + --FROM T_PRD_MO A + --INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + --LEFT JOIN T_PRD_MOENTRY_LK D ON D.FENTRYID=B.FENTRYID AND D.FSTABLENAME = 'T_PRD_MOENTRY' + --inner join #temp2 f on f.Fname=a.FBILLNO + --WHERE + --1=1 + --AND D.FSID IS NULL + --AND B.FFORECASTGROUP = '' + ----AND A.FBILLNO =@FBILLNO + --2024-01-23 1814 ޸end-- + + --2024-01-23 1814 start-- + UPDATE B SET FFORECASTGROUP = A.FBILLNO + --SELECT A.FBILLNO + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MOENTRY_A t0e_a on B.FENTRYID = t0e_a.FENTRYID + INNER JOIN #temp2 f on f.Fname=a.FBILLNO + WHERE + 1=1 + AND B.FFORECASTGROUP = '' + AND t0e_a.FCREATETYPE != 3 + --AND B.FFORECASTGROUPFRIST != '޶' + AND NOT EXISTS ( + SELECT 1 + FROM T_PRD_MOENTRY_LK t1_lk + WHERE 1=1 + AND t1_lk.FSTABLENAME = 'T_PRD_MOENTRY' + AND t1_lk.FENTRYID = B.FENTRYID) + --2024-01-23 1814 end-- + + + + + --ϵͳ׼ıעֶθµע2ֶ + update B set FNOTE2=c.FMEMO FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MOENTRY_L C ON C.FENTRYID=B.FENTRYID + INNER JOIN #temp2 f on f.Fname=a.FBILLNO + --where FNOTE2 = '' + --AND A.FBILLNO =@FBILLNO + +--𵥻ȡԭע + UPDATE B SET FNOTE2 = D.FNOTE2 +FROM T_PRD_MO A +INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID +INNER JOIN T_PRD_MOENTRY_Q C ON C.FENTRYID=B.FENTRYID +INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FSRCSPLITENTRYID +inner join #temp2 f on f.Fname=a.FBILLNO + --where A.FBILLNO = 'WO2301050101' + where B.FNOTE2= '' + --AND A.FBILLNO =@FBILLNO + + + + + --εݵıע¼ıע + --UPDATE D SET D.FNOTE2 = B.FNOTE2 + --SELECT a.FBILLNO,b.FNOTE2,c.FBILLNO ,d.FNOTE2 + UPDATE B SET FNOTE2 = D.FNOTE2 + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MO C ON C.FBILLNO= B.FFORECASTGROUPFRIST + INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FID + inner join #temp2 f on f.Fname=a.FBILLNO + --where A.FBILLNO = 'WO2301050101' + where B.FNOTE2= '' + AND A.FBILLNO <> B.FFORECASTGROUPFRIST + -- AND A.FBILLNO =@FBILLNO + + --嵥 + UPDATE D SET FFORECASTGROUP= c.FFORECASTGROUP + FROM T_PRD_PPBOM A + INNER JOIN T_PRD_PPBOMENTRY D ON A.FID=D.FID + INNER JOIN T_PRD_MO B ON B.FBILLNO=A.FMOBillNO + INNER JOIN T_PRD_MOENTRY C ON C.FID=B.FID + inner join #temp2 f on f.Fname=a.FMOBILLNO + where d.FFORECASTGROUP = '' + --AND A.FMOBILLNO =@FBILLNO + + + + UPDATE A SET FINVSTOCKQTY=B.FBASEQTY + FROM T_PRD_MOENTRY A + INNER JOIN + ( + SELECT B.FMATERIALID,SUM(FBASEQTY) AS 'FBASEQTY' FROM T_STK_INVENTORY A + INNER JOIN T_BD_MATERIAL B ON A.FMATERIALID=B.FMASTERID + WHERE A.FISEFFECTIVED=1 + GROUP BY B.FMATERIALID + ) B ON A.FMATERIALID=B.FMATERIALID + inner join t_prd_mo c on c.fid=a.fid + inner join #temp2 f on f.Fname=c.FBILLNO WHERE FINVSTOCKQTY = 0 + + --AND c.FBILLNO =@FBILLNO + + + + --UPDATE a SET a.FBILLNO = ISNULL( cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) ,'') + ----SELECT + ----F.FNUMBER, + ----a.FBILLNO, + ----B.FENTRYID , + ----D.fbomid,b.fmaterialid, + ----cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) as 'Bom', + ----CONVERT( nvarchar(1000),'') as 'ε',a.FBILLNO as '',e.FBILLNO as 'Դͷ' + --FROM T_PRD_MO A + --INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + --INNER JOIN T_PRD_MOENTRY_LK C ON C .FENTRYID=B.FENTRYID + --INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FSBILLID AND D.FENTRYID=C.FSID + --INNER JOIN T_PRD_MO E ON E.FID=D.FID + --INNER JOIN T_BD_MATERIAL F ON F.FMATERIALID=B.FMATERIALID + --WHERE B.FFORECASTGROUP = '' + + +--ײ㶩 + + +update a set FFORECASTGROUPFRIST = + CASE WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) = 0 THEN FFORECASTGROUP + + WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) > 0 AND B.FSRCSPLITENTRYID=0 THEN SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',1)) + WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) > 0 AND B.FSRCSPLITENTRYID>0 AND SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',2)) IS NULL THEN FFORECASTGROUP + ELSE SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',2)) END + +FROM T_PRD_MOENTRY A +INNER JOIN T_PRD_MOENTRY_Q B ON A.FENTRYID=B.FENTRYID +inner join T_PRD_MO c on c.fid =a.fid +inner join #temp2 f on f.Fname=c.FBILLNO +WHERE +1=1 +AND FFORECASTGROUPFRIST= '' +--AND c.FBILLNO =@FBILLNO + + +--嵥ײ㶩 +update T_PRD_PPBOMENTRY set FFORECASTGROUPFRIST = + CASE + WHEN CHARINDEX( '-',REPLACE( A.FFORECASTGROUP,'_','-') ,0) = 0 + THEN A.FFORECASTGROUP + ELSE SUBSTRING(A.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( A.FFORECASTGROUP,'_','-') ,0)) + END +FROM T_PRD_PPBOMENTRY a +inner join T_PRD_PPBOM b on a.fid=b.fid +inner join #temp2 f on f.Fname=b.FMOBILLNO +WHERE FFORECASTGROUPFRIST= '' +--and b.FMOBILLNO = @FBILLNO + + + --Ŀͻ¼Ŀͻ¼ӹ + UPDATE E SET E.F_PKGR_CUSTOMER= A.F_PKGR_CUSTOMER + --SELECT * + --D.FNOTE2, + --B.FNOTE2,* + FROM T_PRD_MO A + INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID + INNER JOIN T_PRD_MOENTRY_LK C ON C.FSID=B.FENTRYID AND C.FSBILLID=B.FID + INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FENTRYID + INNER JOIN T_PRD_MO E ON E.FID=D.FID + inner join #temp2 f on f.Fname=a.FBILLNO + --where A.FBILLNO = 'TO2305300002' + AND ISNULL(E.F_PKGR_CUSTOMER,0)= 0 + and E.F_PKGR_CUSTOMER<>A.F_PKGR_CUSTOMER + + + + --嵥ĵλ + --SELECT FNUMERATOR,FDENOMINATOR, + --ROUND(FNUMERATOR/FDENOMINATOR,3), F_PKGR_CONSUMPTION, + --* + update T_PRD_PPBOMENTRY set FBomStdQty = ROUND(FNUMERATOR/FDENOMINATOR,3) + + FROM T_PRD_PPBOMENTRY a + inner join T_PRD_PPBOM b on a.fid=b.fid + inner join #temp2 c on c.Fname=b.FMOBILLNO + + WHERE FBomStdQty = 0 + --and b.FMOBILLNO = @FBILLNO + + +drop table #temp2 \ No newline at end of file diff --git a/Enpower.PRD_MO/SQLserver/计划订单更新预测单信息新sql.sql b/Enpower.PRD_MO/SQLserver/计划订单更新预测单信息新sql.sql new file mode 100644 index 0000000..3d68829 --- /dev/null +++ b/Enpower.PRD_MO/SQLserver/计划订单更新预测单信息新sql.sql @@ -0,0 +1,179 @@ + SELECT + t0.FID --id + ,t0.FBILLNO + ,t2.FID 'FORECAST_ID' + ,t2e.FENTRYID 'FORECASTENTRY_ID' + ,t2.FBILLNO 'F_FORECASTNUMBER' + ,t2e.FSEQ 'F_LINENUMBER' + ,t2e.FCUSTID 'F_CUSTOMERNAME' + ,t2e.FMATERIALID 'F_MATERIALCODE' --Ԥⵥid + ,t2e.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t2e.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + INTO #TEMP_PLANORDER_ID_LIST + FROM T_PLN_PLANORDER t0 + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0.FID + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID = t1e.FID + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FENTRYID = t1.FSRCENTRYID + INNER JOIN T_PLN_FORECAST t2 on t2.fid = t2e.FID + WHERE 1 = 1 + --AND t0.F_FORECASTNUMBER = '' + AND CONVERT(nvarchar(100),t0.FCREATEDATE,23) = '2024-01-18' + + CREATE INDEX #TEMP_PLANORDER_ID_LIST_INDEX_FID ON #TEMP_PLANORDER_ID_LIST(FID); + + SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,t0.F_LINENUMBER + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,ISNULL(t1_l.FDESCRIPTION,'') AS F_DESCRIPTION + --,t1_l.FDESCRIPTION F_DESCRIPTION + ,ISNULL(t1e_l.FDESCRIPTION,'') AS F_REMARK --屸ע + --,t1e_l.FDESCRIPTION F_REMARK + ,t2.FNUMBER 'MATERIAL_NUMBER' + ,t2_l.FNAME 'MATERIAL_NAME' + ,t3.TOTAL + INTO #TEMP_PLANORDER_RESERVELINK + + FROM #TEMP_PLANORDER_ID_LIST t0 + INNER JOIN (SELECT FID,COUNT(1) TOTAL FROM #TEMP_PLANORDER_ID_LIST GROUP BY FID ) t3 on t3.FID = t0.FID + LEFT JOIN T_PLN_FORECAST_L t1_l on t0.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052 + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = t0.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052 + LEFT JOIN T_BD_MATERIAL t2 on t0.F_MATERIALCODE = t2.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t2_l on t0.F_MATERIALCODE = t2_l.FMATERIALID + WHERE 1=1 + --AND t0.F_FORECASTNUMBER = '' + + CREATE INDEX #TEMP_PLANORDER_RESERVELINK_INDEX ON #TEMP_PLANORDER_RESERVELINK(FID); + + ----ƻ һԴ--- + --UPDATE t0 + --SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + -- ,t0.F_LINENUMBER = tt.F_LINENUMBER + -- ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + -- ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + -- ,t0.F_REMARK = tt.F_REMARK + -- ,t0.F_MATERIALCODESHOW = tt.MATERIAL_NUMBER + -- ,t0.F_MATERIALNAMESHOW = tt.MATERIAL_NAME + --FROM T_PLN_PLANORDER t0 + -- INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0.FID = tt.FID AND tt.TOTAL = 1 + + ----ƻչ һԴ--- + --UPDATE t0_l + --SET t0_l.F_DESCRIPTION = tt.F_DESCRIPTION + --FROM T_PLN_PLANORDER_L t0_l + -- INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0_l.FID = tt.FID AND tt.TOTAL = 1 + + SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,DENSE_RANK() over(partition BY t0.FID order by t0.FORECAST_ID) 'FORECASTNUMBER_SEQ' + ,t0.F_LINENUMBER + ,ROW_NUMBER() over(partition BY t0.FID,t0.FORECAST_ID order by t0.F_LINENUMBER) 'LINENUMBER_SEQ' + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + ,t0.F_DESCRIPTION + ,t0.MATERIAL_NUMBER + ,t0.MATERIAL_NAME + ,t0.TOTAL + ,DENSE_RANK() over(partition BY t0.FID order by t0.F_MATERIALCODE) 'DENSE_RANK_NUM' + INTO #TEMP_PLANORDER_RESERVELINK2 + FROM + #TEMP_PLANORDER_RESERVELINK t0 + WHERE 1 = 1 + AND TOTAL > 1 + ORDER BY FID + + CREATE INDEX #TEMP_PLANORDER_RESERVELINK2_INDEX ON #TEMP_PLANORDER_RESERVELINK2(FID); + + UPDATE t0 SET t0.F_MATERIALCODE = 0,t0.F_CUSTOMERNAME = 0 + FROM #TEMP_PLANORDER_RESERVELINK2 t0,(SELECT FID FROM #TEMP_PLANORDER_RESERVELINK2 WHERE DENSE_RANK_NUM = 2) t1 WHERE t0.FID = t1.FID + + SELECT + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ','+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select distinct ';'+ ISNULL(tt.F_REMARK,'') from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ','+ tt.MATERIAL_NUMBER from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'MATERIAL_NUMBER' + ,ISNULL(stuff((select distinct ','+ tt.MATERIAL_NAME from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'MATERIAL_NAME' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP + FROM #TEMP_PLANORDER_RESERVELINK2 t0 + GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + CREATE INDEX #TEMP_INDEX ON #TEMP(FID); + + SELECT + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_FORECASTNUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_FORECASTNUMBER' + ,ISNULL(stuff((select distinct ';' + tt.MATERIAL_NUMBER from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'MATERIAL_NUMBER' + ,ISNULL(stuff((select distinct ';' + tt.MATERIAL_NAME from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'MATERIAL_NAME' + ,ISNULL(stuff((select distinct ';' + tt.F_REMARK from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ';' + ISNULL(tt.F_DESCRIPTION,'') from #TEMP tt where tt.FID = t0.FID for xml path('')),1,1,''),'') 'F_DESCRIPTION' + ,ISNULL(stuff((select distinct ';' + CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ';' + CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP2 + FROM #TEMP t0 + --WHERE t0.fbillno ='MRP01679279' + GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + CREATE INDEX #TEMP2_INDEX ON #TEMP2(FID); + + --UPDATE #TEMP2 SET F_REMARK = '' WHERE F_REMARK = ';' + + ----ƻ-Դ-- + --UPDATE t0 + --SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + -- ,t0.F_LINENUMBER = tt.F_LINENUMBER + -- ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + -- ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + -- ,t0.F_REMARK = tt.F_REMARK + -- ,t0.F_MATERIALCODESHOW = tt.MATERIAL_NUMBER + -- ,t0.F_MATERIALNAMESHOW = tt.MATERIAL_NAME + --FROM T_PLN_PLANORDER t0 + -- INNER JOIN #TEMP2 tt on t0.FID = tt.FID --AND tt.TOTAL = 1 + + ----ƻչ-Դ-- + --UPDATE t0_l + --SET t0_l.F_DESCRIPTION = tt.F_DESCRIPTION + --FROM T_PLN_PLANORDER_L t0_l + -- INNER JOIN #TEMP2 tt on t0_l.FID = tt.FID --AND tt.TOTAL = 1 + + SELECT * FROM #TEMP2 + DROP TABLE #TEMP + DROP TABLE #TEMP2 + DROP TABLE #TEMP_PLANORDER_ID_LIST + DROP TABLE #TEMP_PLANORDER_RESERVELINK + DROP TABLE #TEMP_PLANORDER_RESERVELINK2 \ No newline at end of file diff --git a/Extensions/BooleanExtension.cs b/Extensions/BooleanExtension.cs new file mode 100644 index 0000000..4d27f98 --- /dev/null +++ b/Extensions/BooleanExtension.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ExtensionMethods +{ + public static class BooleanExtension + { + public static bool Turn(this bool obj) + { + return !obj; + } + } +} diff --git a/Extensions/DateTimeExtension.cs b/Extensions/DateTimeExtension.cs index 9e59de6..25f6d66 100644 --- a/Extensions/DateTimeExtension.cs +++ b/Extensions/DateTimeExtension.cs @@ -16,5 +16,13 @@ namespace ExtensionMethods { return dateTime.ToString("yyyy-MM-dd"); } + + //public static string ToUnixTimeMilliseconds(this DateTimeOffset dateTimeOffset) + //{ + // // Unix时间戳是从1970年1月1日00:00:00 UTC开始的,所以我们需要减去这个时间 + // TimeSpan timeSinceEpoch = dateTimeOffset - new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero); + // // 将TimeSpan转换为毫秒 + // return timeSinceEpoch.TotalMilliseconds.ToString(); + //} } } diff --git a/Extensions/ExtensionMethods.csproj b/Extensions/ExtensionMethods.csproj index e728549..3a8236f 100644 --- a/Extensions/ExtensionMethods.csproj +++ b/Extensions/ExtensionMethods.csproj @@ -40,7 +40,9 @@ + + diff --git a/Extensions/ObjectExtension.cs b/Extensions/ObjectExtension.cs new file mode 100644 index 0000000..3f5aa56 --- /dev/null +++ b/Extensions/ObjectExtension.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ExtensionMethods +{ + public static class ObjectExtension + { + public static string ToSafeTurnString(this object obj) + { + if (obj == null) + return string.Empty; + + return obj.ToString(); + } + } +} diff --git a/Extensions/StringExtension.cs b/Extensions/StringExtension.cs index de479fa..0c6e828 100644 --- a/Extensions/StringExtension.cs +++ b/Extensions/StringExtension.cs @@ -44,6 +44,18 @@ namespace ExtensionMethods return result; } + public static double ToDouble(this object obj) + { + if (obj == null) + return 0; + var str = obj.ToString().Trim(); + + double result; + double.TryParse(str, out result); + + return result; + } + public static decimal ToDecimal(this string obj) { @@ -52,5 +64,13 @@ namespace ExtensionMethods return result; } + + + public static double ToDouble(this string obj) + { + double result; + double.TryParse(obj.Trim(), out result); + return result; + } } } diff --git a/GateDge2023.pyproj b/GateDge2023.pyproj new file mode 100644 index 0000000..0f8e49f --- /dev/null +++ b/GateDge2023.pyproj @@ -0,0 +1,217 @@ + + + + Debug + 2.0 + {bfdbcd66-6e46-463d-a975-a9f42e2dde7a} + + + + . + . + {888888a0-9f3d-457c-b088-3a5042f75d52} + Standard Python launcher + + + + + + 10.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GateDge2023.sln b/GateDge2023.sln index a182d87..080f159 100644 --- a/GateDge2023.sln +++ b/GateDge2023.sln @@ -50,6 +50,46 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Trinomab.PUR_RPT_POOrderTra EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "K3CExttensionMethods", "K3CExttensionMethods\K3CExttensionMethods.csproj", "{825DD90B-2A8D-4884-9940-6DA56EF6623F}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "07.珠海英博尔", "07.珠海英博尔", "{CAE5A042-7B8F-49E7-8510-4B93DA85D6D8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Enpower.PRD_MO", "Enpower.PRD_MO\Enpower.PRD_MO.csproj", "{4593B258-853F-42E5-8805-64D5A0DA08A3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CY.AR_RecMatchFilter", "CY.AR_RecMatchFilter\CY.AR_RecMatchFilter.csproj", "{7822C382-D01D-41A5-A94A-4A953DD178A7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CY.PRD_MORPT", "CY.PRD_MORPT\CY.PRD_MORPT.csproj", "{472326F6-01F0-41CA-B124-06D987BA6668}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AllOperation", "AllOperation\AllOperation.csproj", "{DE8419DB-4979-4AF6-830D-73F6B793CC31}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "CY.PRD_MORPT.Python", "CY.PRD_MORPT.Python\CY.PRD_MORPT.Python.pyproj", "{72A852A8-55C5-4C72-95ED-13B3A6E670EF}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "HW.PRD_MO.Python", "HW.PRD_MO.Python\HW.PRD_MO.Python.pyproj", "{71C43A75-6D5C-49D0-8698-DC30B7990E73}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HW.PRD_MO", "HW.PRD_MO\HW.PRD_MO.csproj", "{6B01804E-3777-4AFF-A841-A4114BED02B8}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "HW.PythonPlugIn", "HW.PythonPlugIn\HW.PythonPlugIn.pyproj", "{61F8AB34-1280-4DBE-9826-778330C2B2B6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HW.ProductionMateralsPlugIn", "HW.ProductionMateralsPlugIn\HW.ProductionMateralsPlugIn.csproj", "{A65B2F53-286E-4C0F-91DA-601F257314C1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "08.昶东", "08.昶东", "{2949452D-321C-4EB5-975D-62B8C8DB94C8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EC.STK_StockCountLoss", "EC.STK_StockCountLoss\EC.STK_StockCountLoss.csproj", "{607A32D7-6B41-4781-8F86-746C74E48696}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EC.STK_StockCountGain", "EC.STK_StockCountGain\EC.STK_StockCountGain.csproj", "{67ACCF73-6CAC-4269-8499-B98A48C0E81B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EC.STK_MisDelivery", "EC.STK_MisDelivery\EC.STK_MisDelivery.csproj", "{B3712477-F954-4C64-8984-633A345D4A20}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EC.STK_MISCELLANEOUS", "EC.STK_MISCELLANEOUS\EC.STK_MISCELLANEOUS.csproj", "{65D93EE7-1310-436F-9A0D-983CC8EBCDED}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EC.STK_Inventory", "EC.STK_Inventory\EC.STK_Inventory.csproj", "{A9B1CCC4-1BDA-468F-B96C-FE66CFA1247D}" +EndProject +Project("{888888A0-9F3D-457C-B088-3A5042F75D52}") = "Enpower.PRD_MO.Python", "Enpower.PRD_MO.Python\Enpower.PRD_MO.Python.pyproj", "{40E7687C-E939-468E-A79A-EF5CBD14DD97}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VerifyTest", "VerifyTest\VerifyTest.csproj", "{89C1A54B-6FB2-4DBE-A36E-F21650623538}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandleUtils", "HandleUtils\HandleUtils.csproj", "{A386E924-0477-49BF-A3DD-82390EDF75C7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EastChanger", "EastChanger\EastChanger.csproj", "{735CF076-6103-45CE-8B2F-58A9296FE424}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -108,6 +148,70 @@ Global {825DD90B-2A8D-4884-9940-6DA56EF6623F}.Debug|Any CPU.Build.0 = Debug|Any CPU {825DD90B-2A8D-4884-9940-6DA56EF6623F}.Release|Any CPU.ActiveCfg = Release|Any CPU {825DD90B-2A8D-4884-9940-6DA56EF6623F}.Release|Any CPU.Build.0 = Release|Any CPU + {4593B258-853F-42E5-8805-64D5A0DA08A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4593B258-853F-42E5-8805-64D5A0DA08A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4593B258-853F-42E5-8805-64D5A0DA08A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4593B258-853F-42E5-8805-64D5A0DA08A3}.Release|Any CPU.Build.0 = Release|Any CPU + {7822C382-D01D-41A5-A94A-4A953DD178A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7822C382-D01D-41A5-A94A-4A953DD178A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7822C382-D01D-41A5-A94A-4A953DD178A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7822C382-D01D-41A5-A94A-4A953DD178A7}.Release|Any CPU.Build.0 = Release|Any CPU + {472326F6-01F0-41CA-B124-06D987BA6668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {472326F6-01F0-41CA-B124-06D987BA6668}.Debug|Any CPU.Build.0 = Debug|Any CPU + {472326F6-01F0-41CA-B124-06D987BA6668}.Release|Any CPU.ActiveCfg = Release|Any CPU + {472326F6-01F0-41CA-B124-06D987BA6668}.Release|Any CPU.Build.0 = Release|Any CPU + {DE8419DB-4979-4AF6-830D-73F6B793CC31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DE8419DB-4979-4AF6-830D-73F6B793CC31}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE8419DB-4979-4AF6-830D-73F6B793CC31}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DE8419DB-4979-4AF6-830D-73F6B793CC31}.Release|Any CPU.Build.0 = Release|Any CPU + {72A852A8-55C5-4C72-95ED-13B3A6E670EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72A852A8-55C5-4C72-95ED-13B3A6E670EF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {71C43A75-6D5C-49D0-8698-DC30B7990E73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {71C43A75-6D5C-49D0-8698-DC30B7990E73}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B01804E-3777-4AFF-A841-A4114BED02B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B01804E-3777-4AFF-A841-A4114BED02B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B01804E-3777-4AFF-A841-A4114BED02B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B01804E-3777-4AFF-A841-A4114BED02B8}.Release|Any CPU.Build.0 = Release|Any CPU + {61F8AB34-1280-4DBE-9826-778330C2B2B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61F8AB34-1280-4DBE-9826-778330C2B2B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A65B2F53-286E-4C0F-91DA-601F257314C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A65B2F53-286E-4C0F-91DA-601F257314C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A65B2F53-286E-4C0F-91DA-601F257314C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A65B2F53-286E-4C0F-91DA-601F257314C1}.Release|Any CPU.Build.0 = Release|Any CPU + {607A32D7-6B41-4781-8F86-746C74E48696}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {607A32D7-6B41-4781-8F86-746C74E48696}.Debug|Any CPU.Build.0 = Debug|Any CPU + {607A32D7-6B41-4781-8F86-746C74E48696}.Release|Any CPU.ActiveCfg = Release|Any CPU + {607A32D7-6B41-4781-8F86-746C74E48696}.Release|Any CPU.Build.0 = Release|Any CPU + {67ACCF73-6CAC-4269-8499-B98A48C0E81B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67ACCF73-6CAC-4269-8499-B98A48C0E81B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67ACCF73-6CAC-4269-8499-B98A48C0E81B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67ACCF73-6CAC-4269-8499-B98A48C0E81B}.Release|Any CPU.Build.0 = Release|Any CPU + {B3712477-F954-4C64-8984-633A345D4A20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3712477-F954-4C64-8984-633A345D4A20}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3712477-F954-4C64-8984-633A345D4A20}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3712477-F954-4C64-8984-633A345D4A20}.Release|Any CPU.Build.0 = Release|Any CPU + {65D93EE7-1310-436F-9A0D-983CC8EBCDED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65D93EE7-1310-436F-9A0D-983CC8EBCDED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65D93EE7-1310-436F-9A0D-983CC8EBCDED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65D93EE7-1310-436F-9A0D-983CC8EBCDED}.Release|Any CPU.Build.0 = Release|Any CPU + {A9B1CCC4-1BDA-468F-B96C-FE66CFA1247D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9B1CCC4-1BDA-468F-B96C-FE66CFA1247D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9B1CCC4-1BDA-468F-B96C-FE66CFA1247D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9B1CCC4-1BDA-468F-B96C-FE66CFA1247D}.Release|Any CPU.Build.0 = Release|Any CPU + {40E7687C-E939-468E-A79A-EF5CBD14DD97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {40E7687C-E939-468E-A79A-EF5CBD14DD97}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89C1A54B-6FB2-4DBE-A36E-F21650623538}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89C1A54B-6FB2-4DBE-A36E-F21650623538}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89C1A54B-6FB2-4DBE-A36E-F21650623538}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89C1A54B-6FB2-4DBE-A36E-F21650623538}.Release|Any CPU.Build.0 = Release|Any CPU + {A386E924-0477-49BF-A3DD-82390EDF75C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A386E924-0477-49BF-A3DD-82390EDF75C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A386E924-0477-49BF-A3DD-82390EDF75C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A386E924-0477-49BF-A3DD-82390EDF75C7}.Release|Any CPU.Build.0 = Release|Any CPU + {735CF076-6103-45CE-8B2F-58A9296FE424}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {735CF076-6103-45CE-8B2F-58A9296FE424}.Debug|Any CPU.Build.0 = Debug|Any CPU + {735CF076-6103-45CE-8B2F-58A9296FE424}.Release|Any CPU.ActiveCfg = Release|Any CPU + {735CF076-6103-45CE-8B2F-58A9296FE424}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -128,6 +232,24 @@ Global {5A26AFF4-AE8C-43A3-8C60-BBA153DAE608} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} {9E2DDD7F-02EE-4BDF-A696-4CC6D310FEAD} = {0C4E3DC3-F1FA-4BD7-8D81-BF5EFD452A51} {825DD90B-2A8D-4884-9940-6DA56EF6623F} = {4ACB1DA8-8A4D-451A-A5FB-3CBD7A261263} + {4593B258-853F-42E5-8805-64D5A0DA08A3} = {CAE5A042-7B8F-49E7-8510-4B93DA85D6D8} + {7822C382-D01D-41A5-A94A-4A953DD178A7} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} + {472326F6-01F0-41CA-B124-06D987BA6668} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} + {DE8419DB-4979-4AF6-830D-73F6B793CC31} = {2217EA0E-E53F-4ECC-A49D-F38BC743F47A} + {72A852A8-55C5-4C72-95ED-13B3A6E670EF} = {270F576A-EFFF-4728-8E5C-ABDF5C3F3C8B} + {71C43A75-6D5C-49D0-8698-DC30B7990E73} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} + {6B01804E-3777-4AFF-A841-A4114BED02B8} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} + {61F8AB34-1280-4DBE-9826-778330C2B2B6} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} + {A65B2F53-286E-4C0F-91DA-601F257314C1} = {42311C80-7B4C-4353-BCA9-4ABD024290C8} + {607A32D7-6B41-4781-8F86-746C74E48696} = {2949452D-321C-4EB5-975D-62B8C8DB94C8} + {67ACCF73-6CAC-4269-8499-B98A48C0E81B} = {2949452D-321C-4EB5-975D-62B8C8DB94C8} + {B3712477-F954-4C64-8984-633A345D4A20} = {2949452D-321C-4EB5-975D-62B8C8DB94C8} + {65D93EE7-1310-436F-9A0D-983CC8EBCDED} = {2949452D-321C-4EB5-975D-62B8C8DB94C8} + {A9B1CCC4-1BDA-468F-B96C-FE66CFA1247D} = {2949452D-321C-4EB5-975D-62B8C8DB94C8} + {40E7687C-E939-468E-A79A-EF5CBD14DD97} = {CAE5A042-7B8F-49E7-8510-4B93DA85D6D8} + {89C1A54B-6FB2-4DBE-A36E-F21650623538} = {2217EA0E-E53F-4ECC-A49D-F38BC743F47A} + {A386E924-0477-49BF-A3DD-82390EDF75C7} = {4ACB1DA8-8A4D-451A-A5FB-3CBD7A261263} + {735CF076-6103-45CE-8B2F-58A9296FE424} = {2949452D-321C-4EB5-975D-62B8C8DB94C8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {16F7DBDD-F487-41D6-A856-9E9B7B3F61C5} diff --git a/HW.DataBase/Script1.sql b/HW.DataBase/Script1.sql deleted file mode 100644 index 5f28270..0000000 --- a/HW.DataBase/Script1.sql +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/HW.PRD_MO.Python.pyperf b/HW.PRD_MO.Python.pyperf new file mode 100644 index 0000000..bebe7ed --- /dev/null +++ b/HW.PRD_MO.Python.pyperf @@ -0,0 +1,13 @@ + + + + 71c43a75-6d5c-49d0-8698-dc30b7990e73 + HW.PRD_MO.Python + + + + C:\Users\Fareoh\AppData\Local\Temp\HW.PRD_MO.Python_20240204.vsp + + + false + \ No newline at end of file diff --git a/HW.PRD_MO.Python/HW.PRD_MO.Python.py b/HW.PRD_MO.Python/HW.PRD_MO.Python.py new file mode 100644 index 0000000..5996fe9 --- /dev/null +++ b/HW.PRD_MO.Python/HW.PRD_MO.Python.py @@ -0,0 +1,47 @@ +#clrп +import clr +#Ӷcloudij +clr.AddReference('System') +clr.AddReference('System.Data') +clr.AddReference("ExtensionMethods") +# ýstart +clr.AddReference('Kingdee.BOS') +clr.AddReference('Kingdee.BOS.App') +clr.AddReference('Kingdee.BOS.App.Core') +clr.AddReference('Kingdee.BOS.Business.DynamicForm') +clr.AddReference('Kingdee.BOS.Contracts') +clr.AddReference('Kingdee.BOS.Core') +clr.AddReference('Kingdee.BOS.DataEntity') +clr.AddReference('Kingdee.BOS.ServiceHelper') +# ýend + +#dairycloudеijʵ󣨷ռ䵼룬ݹ鵼룩 +from System import * +from System.Data import * +from System.Collections.Generic import List +from ExtensionMethods import BooleanExtension as boolObjEx +from ExtensionMethods import DateTimeExtension as dateObjEx +from ExtensionMethods import ObjectExtension as objEx +from ExtensionMethods import StringExtension as strObjEx +from Kingdee.BOS.Core import * +from Kingdee.BOS.Util import * +from Kingdee.BOS.Core.Bill import * +from Kingdee.BOS.Core.Bill.PlugIn 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 Kingdee.BOS.App.Data import * +from Kingdee.BOS.ServiceHelper import * + +def OnPreparePropertys(e): + e.FieldKeys.Add("FWorkTimeType") + + +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 diff --git a/HW.PRD_MO.Python/HW.PRD_MO.Python.pyproj b/HW.PRD_MO.Python/HW.PRD_MO.Python.pyproj new file mode 100644 index 0000000..06677c9 --- /dev/null +++ b/HW.PRD_MO.Python/HW.PRD_MO.Python.pyproj @@ -0,0 +1,50 @@ + + + Debug + 2.0 + 71c43a75-6d5c-49d0-8698-dc30b7990e73 + . + HW.PRD_MO.Python.py + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin + . + . + HW.PRD_MO.Python + HW.PRD_MO.Python + + + true + false + + + true + false + + + + + + + + Accessibility + Accessibility.dll + C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\Accessibility.dll + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HW.PRD_MO.Python/SQLServer/更新对应表中产品对照倒置id.sql b/HW.PRD_MO.Python/SQLServer/更新对应表中产品对照倒置id.sql new file mode 100644 index 0000000..911ec92 --- /dev/null +++ b/HW.PRD_MO.Python/SQLServer/更新对应表中产品对照倒置id.sql @@ -0,0 +1,41 @@ +SELECT + t0.FID + ,t0e.FCPID + into #tmp +FROM hw_mjcpdzb t0 + INNER JOIN hw_mjcpdzbs t0e on t0.FID = t0e.FID +GROUP BY + t0.FID,t0e.FCPID +having + count(1) =1 +--SELECT * FROM #tmp +SELECT t0.FID + ,t0.FMJID + ,t0e.FEntryID + ,t0e.FCPID + into #tmp1 +FROM hw_mjcpdzb t0 + inner join hw_mjcpdzbs t0e on t0.FID = t0e.FID +WHERE exists (SELECT 1 from #tmp t WHERE t.fid = t0.fid AND t0e.FCPID = t0.FCPID) + +--UPDATE t0 SET t0.FMJDZDZID = tt.FEntryID +SELECT + tt.FEntryID,t0.* +FROM + #tmp1 tt + inner join T_ENG_BOM t0 on t0.FMATERIALID = tt.FCPID AND t0.F_PAEZ_BASE = tt.FMJID + +drop table #tmp +drop table #tmp1 + +--UPDATE t1e SET t1e.FMJDZDZID = t0.FMJDZDZID +SELECT + t0.FMJDZDZID +FROM + T_ENG_BOM t0 + INNER JOIN T_PRD_MOENTRY t1e on t0.FID = t1e.FBOMID +--UPDATE t0 SET t0.FMJDZDZID = t1.FMJDZDZID +SELECT t0.* +FROM + T_PRD_PPBOM t0 + INNER JOIN T_ENG_BOM t1 on t0.FBOMID = t1.FID diff --git a/HW.PRD_MO.Python/SQLServer/模具-产品对照倒置表.sql b/HW.PRD_MO.Python/SQLServer/模具-产品对照倒置表.sql new file mode 100644 index 0000000..9690fd6 --- /dev/null +++ b/HW.PRD_MO.Python/SQLServer/模具-产品对照倒置表.sql @@ -0,0 +1,32 @@ +IF EXISTS(SELECT * FROM sysobjects WHERE name = 'V_HWMJCPDZDZB')--Ϊͼ + DROP VIEW V_HWMJCPDZDZB--ͼ +GO +CREATE VIEW V_HWMJCPDZDZB AS +SELECT + t0e.FEntryID 'FID' + ,t0e.FID AS 'FPID' + ,t0e.FCPID + ,t0e.FMJSMZQ AS 'FMJSCZQ'--'ģ' + ,CAST(t0e.FMJQS AS decimal(23,6)) AS 'FMJQS'--'ģǻ' + ,t0e.FBZCL AS 'FBZCN'--'׼' + ,t0e.FJTBZ --AS '̨ע' + ,t0e.FMJHH --AS 'ģ/ϸ' + ,t0e.F_PAEZ_DECIMAL AS 'FCPDZ'--'Ʒ' + ,t0e.F_PAEZ_DECIMAL1 AS 'FCCSKZL'--'ˮ' + ,t0.FNUMBER + ,t0.FMJID + ,t0.F_PAEZ_TEXT AS 'FMJGGXH'--'ģ߹(** mm' + ,t0.F_PAEZ_TEXT1 AS 'FMJXS'--'ģѨ' + ,t0.F_PAEZ_COMBO AS 'FMJLX'--'ģ' + ,t0.FDOCUMENTSTATUS + ,t0.FFORBIDSTATUS + ,t1_l.FNAME AS 'FName' + ,t2_l.FNAME AS 'FProName' + ,t0.FMJID AS FMJMATERIALID + ,t0e.FCPID AS FCPMATERIALID +FROM hw_mjcpdzb t0 + INNER JOIN hw_mjcpdzbs t0e on t0.FID = t0e.FID + LEFT JOIN T_BD_MATERIAL_L t1_l on t1_l.FMATERIALID = t0.FMJID AND t1_l.FLOCALEID = 2052 + LEFT JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t0e.FCPID AND t2_l.FLOCALEID = 2052 +WHERE + t0.FDOCUMENTSTATUS ='C' diff --git a/HW.PRD_MO.Python/SQLServer/模具产品对照-同一个模具下多个相同产品查询.sql b/HW.PRD_MO.Python/SQLServer/模具产品对照-同一个模具下多个相同产品查询.sql new file mode 100644 index 0000000..a79a138 --- /dev/null +++ b/HW.PRD_MO.Python/SQLServer/模具产品对照-同一个模具下多个相同产品查询.sql @@ -0,0 +1,13 @@ +SELECT t.*,t1_l.* +FROM (SELECT + t0.FID + ,count(1) co + ,t0e.FCPID +FROM hw_mjcpdzb t0 + INNER JOIN hw_mjcpdzbs t0e on t0.FID = t0e.FID +GROUP BY + t0.FID,t0e.FCPID +having + count(1) >1) t + inner join hw_mjcpdzb t0 on t.FID = t0.FID + inner join T_BD_MATERIAL_L t1_l on t1_l.FMATERIALID = t0.FMJID diff --git a/HW.PRD_MO.Python/类1.py b/HW.PRD_MO.Python/类1.py new file mode 100644 index 0000000..ba97fdb --- /dev/null +++ b/HW.PRD_MO.Python/类1.py @@ -0,0 +1,181 @@ +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.Contracts import* +from Kingdee.BOS.Contracts.Report import* +from Kingdee.BOS.Core import * +from Kingdee.BOS.Core.Metadata import * +from Kingdee.BOS.Core.Report import* +from Kingdee.BOS.Core.SqlBuilder import* +from Kingdee.BOS.Core.Enums import * +from Kingdee.BOS.App.Data import* +from Kingdee.BOS.Orm.DataEntity import* +from System import* +from System.ComponentModel import* +from System.Collections.Generic import* +from System.Text import* +from System.Threading.Tasks import* +from Kingdee.BOS.ServiceHelper import * +#ʼڴ¼ñȫֲ +def Initialize(): + this.ReportProperty.ReportType=ReportType.REPORTTYPE_NORMAL; + this.IsCreateTempTableByPlugin=True; + #Ƿַ֧,ںGetSummaryColumnInfoӻֶ, + #ҪBOSй˿ĻҳǩûϢ,ɲο:˱ + this.ReportProperty.IsGroupSummary=True; + #IsUIDesignerColumns=False,ʾͨ,GetReportHeadersйͷ + #ҪBOS˿ʾά,ֶαʶʱֶαһ + #˱ͷϸ˵ο:˱й + this.ReportProperty.IsUIDesignerColumns=False; + +#ʱ,ʽ˱ȡsqlƴӲȡ˱ȡŵʱ +#(this.IsCreateTempTableByPlugin=True)BuilderReportSqlAndTempTableʱ +#3ӿڣ˱ȡ߼sqlָBuilderSelectFieldSQLBuilderTempTableOrderBySQLBuilderFormWhereSQL +#rptfilter:˱Դȡ +#tableName:ϵͳԶ˱ʱ߱Ψһԣձҳչʾݰ󶨴ʱյıҪдʱ +def BuilderReportSqlAndTempTable(rptfilter,tableName): + #baseDataTemp=filter.BaseDataTempTable;#ʱ;ݷΧȨޣñѸݷΧ˳ʱ + #ѭȡлݷΧݣƴӵSQLʵȨ޹ + #for b in baseDataTemp: + # baseType=b.BaseDataFormId;#FormId + # PKFldName=b.PKFieldName;#ʱлֶ,,FORGID + # baseTempTab=b.TempTable;#ݷΧʱ + #filterStr=filter.FilterParameter.FilterString;#˿ҳǩ˱ʽ + #˿ݹҳǩʵݰȡԶĹֵֶ + #DynamicObject,ǰ潲ʵݰʽȡֵðʵԱʶ + custFilter = rptfilter.FilterParameter.CustomFilter; + if(custFilter==None): + return; + orgObj=custFilter["F_BPW_OrgId"];#ȡ֯ + whereOrgs=""; + if(orgObj != None): + orgId=("{0}").format(orgObj["Id"]);#֯ID + whereOrgs=(" and a.FPURCHASEORGID in ({0}) ").format(orgId);#ѡ֯ƴ֯ + materials=custFilter["F_BPW_Materials"];#϶ѡ + matList=List[str](); + if(materials != None): + for m in materials: + materialNum="'"+str(m["F_BPW_Materials"]["Number"])+"'";#ȡ˿ѡĶϱ + matList.Add(materialNum); + whereMat=(" and m.FNumber in ({0})").format(str.Join(",",matList)) if(matList.Count>0) else "";#ƴ϶ѡ + beginDate=str(custFilter["F_BPW_BeginDate"]);#ȡʼ + EndDate=str(custFilter["F_BPW_EndDate"]);#ȡ + beginDate=str(DateTime.Parse(("{0}").format(beginDate)).AddDays(-1));#ʼڵǰһ + itemDate=beginDate; + fldsSql=List[str]();#̬ͷSQL,൱SelectIJֶǶ̬ƴӵģԴʵֶ̬ + #ӿʼѭ1죬һֱڣ˽Ҫ¼Ŀʼڱ<,ڹ˽עʵ + while(itemDate != EndDate): + myDate=DateTime.Parse(("{0}").format(itemDate)); + fldKey=("F{0}_{1}_{2}").format(myDate.Year,myDate.Month,myDate.Day);#ÿڹΨһ + ss=("{0}=SUM(Case when a.FDATE='{1}' then b.FQty else 0 end)").format(fldKey,myDate);#ÿ충ϼSQL + fldsSql.Add(ss);#SQLӵ̬SQLб + nextDate=myDate.AddDays(1); + itemDate=str(nextDate);#+1 + myDate=DateTime.Parse(("{0}").format(itemDate));#ѡĽֹڣѭһˣﲹһ + fldKey=("F{0}_{1}_{2}").format(myDate.Year,myDate.Month,myDate.Day); + ss=("{0}=SUM(Case when a.FDATE='{1}' then b.FQty else 0 end)").format(fldKey,myDate); + fldsSql.Add(ss);#SQLӵ̬SQLб + #raise Exception(str.Join(',',fldsSql));#ʱôд룬Ķ̬SQLԲ + #װд뱨ʱSQL + #ע!!!: ʱһҪFIDENTITYID Ҫ1ʼҲظ ϺţȻǰ̨ʾհ!!!! + sql=("""/*dialect*/?select row_Number() Over(order by a.orgName,a.MaterialNum) FIDENTITYID, a.* +into {0} +from +(select orgL.FNAME orgName,m.FNUMBER MaterialNum,mL.FNAME materialName,mL.FSPECIFICATION SpecNum,unitL.FNAME unit, +{1} +from t_PUR_POOrder a +inner join T_ORG_ORGANIZATIONS org on org.FORGID=a.FPURCHASEORGID +inner join T_ORG_ORGANIZATIONS_L orgL on orgL.FORGID=org.FORGID and orgL.FLOCALEID=2052 +inner join t_PUR_POOrderEntry b on a.FID=b.FID +inner join T_BD_MATERIAL m on m.FMATERIALID=b.FMATERIALID +inner join T_BD_MATERIAL_L mL on mL.FMATERIALID=m.FMATERIALID and mL.FLOCALEID=2052 +inner Join T_BD_UNIT_L unitL on unitL.FUNITID=b.FUNITID and unitL.FLOCALEID=2052 +where a.FDATE>='{3}' and a.FDATE<='{4}' {2} {5} +group by orgL.FNAME,m.FNUMBER,mL.FNAME,mL.FSPECIFICATION,unitL.FNAME +) a + """).format(tableName,str.Join(',',fldsSql),whereOrgs,beginDate,EndDate,whereMat); + #raise Exception(sql);#ͨ˷Sqlе֤ + DBUtils.Execute(this.Context,sql);#ִSQLдʱ + +#˱ͷ +def GetReportHeaders(Filter): + header=ReportHeader(); + localEid=this.Context.UserLocale.LCID;#ȡǰԻ,Ϊ2052 + header.AddChild("orgName",LocaleValue("ɹ֯",localEid));#ֶ,ͷ,ֶʱеֶֶӦ൱ÿһͷӦʱĸֶ + header.AddChild("MaterialNum",LocaleValue("ϱ",localEid)); + header.AddChild("materialName",LocaleValue("",localEid)); + header.AddChild("SpecNum",LocaleValue("ͺ",localEid)); + header.AddChild("unit",LocaleValue("ɹλ",localEid)); + + #ݹѡ䣬̬ͷ,湹SQLֶε߼ + custFilter = Filter.FilterParameter.CustomFilter; + beginDate=str(custFilter["F_BPW_BeginDate"]);#ȡʼ + EndDate=str(custFilter["F_BPW_EndDate"]);#ȡ + itemDate=beginDate; + fldsSql=List[str](); + while(itemDate != EndDate): + myDate=DateTime.Parse(("{0}").format(itemDate)); + fldKey=("F{0}_{1}_{2}").format(myDate.Year,myDate.Month,myDate.Day);#ֶҪǰ湹SQLֶζӦ + header.AddChild(fldKey,LocaleValue(str(("{0}-{1}-{2}").format(myDate.Year,myDate.Month,myDate.Day)),localEid),SqlStorageType.SqlDecimal); + nextDate=myDate.AddDays(1); + itemDate=str(nextDate); + myDate=DateTime.Parse(("{0}").format(itemDate)); + fldKey=("F{0}_{1}_{2}").format(myDate.Year,myDate.Month,myDate.Day);#ֶҪǰ湹SQLֶζӦ + header.AddChild(fldKey,LocaleValue(str(("{0}-{1}-{2}").format(myDate.Year,myDate.Month,myDate.Day)),localEid),SqlStorageType.SqlDecimal); +#еʹ԰ͷ˳ʾ + colIndex=0; + for child in header.GetChilds(): + if(child.GetChildCount()==0): + child.ColIndex=colIndex; + colIndex=colIndex+1; + else: + child.ColIndex = colIndex; + colIndex=colIndex+1; + for childHeader in child.GetChilds(): + childHeader.ColIndex=colIndex; + colIndex=colIndex+1; + return header; + +#ñͷֵֶ +#Ҫǰѹ˿õֵֶʾͷ +def GetReportTitles(Filter): + reportTitles=ReportTitles(); + custFilter=Filter.FilterParameter.CustomFilter;#ȡ˿ݰ + orgObj=custFilter["F_BPW_OrgId"];#ȡ֯ + beginDate=str(custFilter["F_BPW_BeginDate"]);#ȡʼ + EndDate=str(custFilter["F_BPW_EndDate"]);#ȡ + if(orgObj != None): + reportTitles.AddTitle("F_BPW_OrgId", orgObj["Name"]); + reportTitles.AddTitle("F_BPW_BeginDate", beginDate); + reportTitles.AddTitle("F_BPW_EndDate", EndDate); + return reportTitles; + +#ñײϼ +def GetSummaryColumnInfo(rptfilter): + result=List[SummaryField](); + #ֶǶ̬ģҲҪ̬Ӻϼ,ֶǰ汣һ + custFilter = rptfilter.FilterParameter.CustomFilter; + beginDate=str(custFilter["F_BPW_BeginDate"]);#ȡʼ + EndDate=str(custFilter["F_BPW_EndDate"]);#ȡ + itemDate=beginDate; + fldsSql=List[str](); + while(itemDate != EndDate): + myDate=DateTime.Parse(("{0}").format(itemDate)); + fldKey=("F{0}_{1}_{2}").format(myDate.Year,myDate.Month,myDate.Day);#ֶҪǰ湹SQLֶζӦ + result.Add(SummaryField(fldKey,BOSEnums.Enu_SummaryType.SUM)); + nextDate=myDate.AddDays(1); + itemDate=str(nextDate); + myDate=DateTime.Parse(("{0}").format(itemDate)); + fldKey=("F{0}_{1}_{2}").format(myDate.Year,myDate.Month,myDate.Day); + result.Add(SummaryField(fldKey,BOSEnums.Enu_SummaryType.SUM)); + return result; + +#رմͨڴ˴̲ʱ +def CloseReport(): + this.DropTempTable(); diff --git a/HW.PRD_MO/AfterSaveOperationServicePlugIn.cs b/HW.PRD_MO/AfterSaveOperationServicePlugIn.cs new file mode 100644 index 0000000..c371541 --- /dev/null +++ b/HW.PRD_MO/AfterSaveOperationServicePlugIn.cs @@ -0,0 +1,66 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using Kingdee.BOS.App.Data; +using System.Linq; +using System.Text; +using Kingdee.BOS.Orm.DataEntity; +using Newtonsoft.Json; + +namespace HW.PRD_MO +{ + [Description("【服务插件_ex】保存后更新生产用料单信息"), HotUpdate] + public class AfterSaveOperationServicePlugIn : AbstractOperationServicePlugIn + { + public override void OnPreparePropertys(PreparePropertysEventArgs e) + { + base.OnPreparePropertys(e); + //e.FieldKeys.Add("FWorkTimeType"); + + } + + public override void EndOperationTransaction(EndOperationTransactionArgs e) + { + base.EndOperationTransaction(e); + // 保存8提交9审核1反审核26 + if (this.FormOperation.OperationId == 8) + { + var dataEntitys = e.DataEntitys.ToList(); + //foreach (var data in dataEntitys) + //{ + // var jsonStr = JsonConvert.SerializeObject(data, Formatting.Indented); + + // var id = data["Id"]; + // var fformId = data["FFormId"]; + // var itemList = data["TreeEntity"] as DynamicObjectCollection; + + // StringBuilder sb = new StringBuilder(); + // itemList.ToList().ForEach(item => + // { + // var itemId = item["Id"]; + // var materialId = item["MaterialId_Id"].Long2Int(); + // var seq = item["Seq"].Long2Int(); + // var itemBom = item["BomId"] as DynamicObject; + // var itemBomId = item["BomId_Id"].Long2Int(); + // if (itemBomId == 0 || itemBom != null) + // { + // var mjdm = itemBom["F_PAEZ_Base"]; + // var sql = @"update "; + + // sb.AppendLine(sql); + // } + // }); + + // if (!sb.IsNullOrEmpty()) + // DBUtils.Execute(this.Context, "/*dialect*/" + sb.ToString()); + //} + var idList = dataEntitys.Select(x => x["Id"]); + var sql = $"IN ({string.Join(",", idList)})"; + DBUtils.Execute(this.Context, "/*dialect*/" + sql); + } + } + } +} diff --git a/HW.PRD_MO/HW.PRD_MO.csproj b/HW.PRD_MO/HW.PRD_MO.csproj new file mode 100644 index 0000000..92a6571 --- /dev/null +++ b/HW.PRD_MO/HW.PRD_MO.csproj @@ -0,0 +1,66 @@ + + + + + Debug + AnyCPU + {6B01804E-3777-4AFF-A841-A4114BED02B8} + Library + Properties + HW.PRD_MO + HW.PRD_MO + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Contracts.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Newtonsoft.Json.dll + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HW.PRD_MO/Properties/AssemblyInfo.cs b/HW.PRD_MO/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..611338e --- /dev/null +++ b/HW.PRD_MO/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("HW.PRD_MO")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("HW.PRD_MO")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("6b01804e-3777-4aff-a841-a4114bed02b8")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/HW.ProductionMateralsPlugIn/HW.ProductionMateralsPlugIn.csproj b/HW.ProductionMateralsPlugIn/HW.ProductionMateralsPlugIn.csproj new file mode 100644 index 0000000..e1b83db --- /dev/null +++ b/HW.ProductionMateralsPlugIn/HW.ProductionMateralsPlugIn.csproj @@ -0,0 +1,69 @@ + + + + + Debug + AnyCPU + {A65B2F53-286E-4C0F-91DA-601F257314C1} + Library + Properties + HW.ProductionMateralsPlugIn + HW.ProductionMateralsPlugIn + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Model.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Newtonsoft.Json.dll + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HW.ProductionMateralsPlugIn/Properties/AssemblyInfo.cs b/HW.ProductionMateralsPlugIn/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..13fdbc4 --- /dev/null +++ b/HW.ProductionMateralsPlugIn/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("HW.ProductionMateralsPlugIn")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("HW.ProductionMateralsPlugIn")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("a65b2f53-286e-4c0f-91da-601f257314c1")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/HW.ProductionMateralsPlugIn/TableOperationPlugInEx.cs b/HW.ProductionMateralsPlugIn/TableOperationPlugInEx.cs new file mode 100644 index 0000000..7982973 --- /dev/null +++ b/HW.ProductionMateralsPlugIn/TableOperationPlugInEx.cs @@ -0,0 +1,33 @@ +using Kingdee.BOS.Core.Bill; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Core.Report.PlugIn; +using Kingdee.BOS.Core.Report.PlugIn.Args; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HW.ProductionMateralsPlugIn +{ + + public class TableOperationPlugInEx : AbstractSysReportPlugIn + { + public override void CellDbClick(CellEventArgs e) + { + e.Cancel = true; + var fldKey = e.Header.FieldName; + + } + + public void ShowForm(string _fromId, string _pkVal) + { + var showParam = new BillShowParameter(); + showParam.FormId = _fromId; + showParam.Status = OperationStatus.VIEW; + showParam.OpenStyle.ShowType = ShowType.Floating; + showParam.PKey = _pkVal; + this.View.ShowForm(showParam); + } + } +} diff --git a/HW.PythonPlugIn/HW.PythonPlugIn.pyproj b/HW.PythonPlugIn/HW.PythonPlugIn.pyproj new file mode 100644 index 0000000..e9a60b5 --- /dev/null +++ b/HW.PythonPlugIn/HW.PythonPlugIn.pyproj @@ -0,0 +1,49 @@ + + + Debug + 2.0 + 61f8ab34-1280-4dbe-9826-778330c2b2b6 + . + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin + . + . + HW.PythonPlugIn + HW.PythonPlugIn + + + true + false + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/ProductionMaterialsReport.py b/HW.PythonPlugIn/ProductionMaterialsReport/ProductionMaterialsReport.py new file mode 100644 index 0000000..068e542 --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/ProductionMaterialsReport.py @@ -0,0 +1,323 @@ +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") +clr.AddReference("ExtensionMethods") +# clr.AddReference("K3CExttensionMethods") +from Kingdee.BOS import* +from Kingdee.BOS.Contracts import* +from Kingdee.BOS.Contracts.Report import* +from Kingdee.BOS.Core import * +from Kingdee.BOS.Core.Metadata import * +from Kingdee.BOS.Core.Report import* +from Kingdee.BOS.Core.SqlBuilder import* +from Kingdee.BOS.Core.Enums import * +from Kingdee.BOS.App.Data import* +from Kingdee.BOS.Orm.DataEntity import* +from System import * +from System.ComponentModel import* +from System.Collections.Generic import* +from System.Text import* +from System.Threading.Tasks import* +from Kingdee.BOS.ServiceHelper import * +from ExtensionMethods import BooleanExtension as boolObjEx +from ExtensionMethods import DateTimeExtension as dateObjEx +from ExtensionMethods import ObjectExtension as objEx +from ExtensionMethods import StringExtension as strObjEx +# from K3CExttensionMethods import ListHeaderExtension as lhObjEx + +#初始化,在此事件中设置报表的属性全局参数 +def Initialize(): + this.ReportProperty.ReportType= ReportType.REPORTTYPE_NORMAL; + this.IsCreateTempTableByPlugin=True; + #是否支持分组汇总,在后面GetSummaryColumnInfo方法中添加汇总字段, + #要在BOS中过滤框的汇总页签配置汇总信息,可参考:简单账表分组汇总设置 + this.ReportProperty.IsGroupSummary=True; + #IsUIDesignerColumns=False,表示报表的列通过插件控制,后续在GetReportHeaders中构建列头 + #需要在BOS过滤框的显示隐藏列中维护,字段标识与临时表字段保持一致 + #账表列头构建更多详细说明参考:账表列构建 + this.ReportProperty.IsUIDesignerColumns=False; + this.ReportProperty.PrimaryKeyFieldName = "FID"; + +#创建临时报表,正式进入账表取数sql拼接并取数,把账表取数结果放到创建的临时表中 +#如果参数(this.IsCreateTempTableByPlugin=True),即调用BuilderReportSqlAndTempTable构建临时表 +#否则调用以下3个接口,完成账表取数逻辑的sql指令即:BuilderSelectFieldSQL、BuilderTempTableOrderBySQL、BuilderFormWhereSQL +#rptfilter:账表参数,可以从这里获取过滤条件等 +#tableName:系统自动创建的账表临时表名,具备唯一性,最终报表页面展示的数据绑定此临时表,所以最终的报表结果数据要写入此临时表中 +def BuilderReportSqlAndTempTable(rptfilter,tableName): + #baseDataTemp=filter.BaseDataTempTable;#基础资料临时表;若设置了数据范围权限,该表会把根据数据范围过滤出来的内码存入临时表; + #循环获取所有基础资料数据范围的数据,可用来拼接到报表SQL里面实现数据权限过滤 + #for b in baseDataTemp: + # baseType=b.BaseDataFormId;#基础资料FormId + # PKFldName=b.PKFieldName;#临时表中基础资料主键字段名,例如,FORGID + # baseTempTab=b.TempTable;#基础资料数据范围临时表名 + #filterStr=filter.FilterParameter.FilterString;#过滤框条件页签过滤表达式 + #过滤框快捷过滤页签的实体数据包,从这里面获取自定义的过滤字段值 + #DynamicObject类型,用前面讲的实体数据包操作方式取值,用绑定实体属性标识 + custFilter = rptfilter.FilterParameter.CustomFilter; + if(custFilter == None): + return; + whereSql = ""; + # 产品id + _proMaterialId = custFilter["ProMaterialId"]; + if(_proMaterialId != None): + whereSql = whereSql + " AND t0e.FMATERIALID = " + str(_proMaterialId["Id"]); + + # 物料id + _materialId = custFilter["MaterialId"]; + if(_materialId != None): + whereSql = whereSql + " AND t1e.FMATERIALID = " + str(_materialId["Id"]); + + # 生产任务单 + _billNo = objEx.ToSafeString(custFilter["BILLNO"]); + if(_billNo != ""): + whereSql = whereSql + " AND t0.FBILLNO LIKE '%{0}%'".format(_billNo); + + # 生产投料单 + _PPBomBillNo = objEx.ToSafeString(custFilter["PPBOMBILLNO"]); + if(_PPBomBillNo != ""): + whereSql = whereSql + " AND t1.FBILLNO LIKE '%{0}%'".format(_PPBomBillNo); + + # 销售订单 + _saleOrderNo = objEx.ToSafeString(custFilter["SALEORDERNO"]); + if(_saleOrderNo != ""): + whereSql = whereSql + " AND t0e.FSALEORDERNO LIKE '%{0}%'".format(_saleOrderNo); + + _lcId = this.Context.UserLocale.LCID; + #raise Exception(str.Join(',',fldsSql));#调试时,可用此行代码,看看构建的动态列SQL对不对 + #组装最终写入报表临时表的SQL + #注意!!!: 最终临时表一定要有FIDENTITYID ,要从1开始,且不重复 ,不断号,不然前台显示空白!!!! + sql=("""/*dialect*/  +DECLARE @LCID int +SET @LCID = {1} + +SELECT + ROW_NUMBER() OVER(ORDER BY t0.FDATE DESC,t0.FID DESC,t0e.FSEQ ASC) AS FIDENTITYID--1.行号 + ,t0.FID + ,t0e.FSEQ + ,t0e.FENTRYID + ,t0.FDATE --2.单据日期 + ,t1.FBILLNO AS 'FPPBOMBILLNO'--3.生产投料单号 + ,t1.FID AS 'FPPBOMID' + ,t0e.FSALEORDERNO --4.销售订单号 + ,t0.FBILLNO--7.生产任务单号 + ,t0e.FPLANSTARTDATE--38.计划开工日期 + ,t0e.FPLANFINISHDATE--39.计划完工日期 + ,t0e.FQTY--12.产品生产数量 + ,t0e.FYIELDRATE + ,t0e.FROUTINGID + ,t0e.FMATERIALID AS 'ProMaterialId' + ,t0e.FUNITID AS 'PrdUnitId' + ,t1e.FENTRYID AS 'PPBOMENTRYID' + ,t1e.FMATERIALID + ,(t1e.FNUMERATOR / t1e.FDENOMINATOR) AS 'FUnitNeedQty' --18.物料单位用量 + ,t1e.FNEEDQTY --22.物料总需求 + ,t1e.FUNITID + ,t1e.FBOMENTRYID + ,t1e.FSTDQTY --标准用量 --29.标准数量 + ,t1e.FMUSTQTY --应发数量 --30.应发数量 + ,t1.FWORKSHOPID + ,t0.FCUSTOMERID --客户id + ,(CASE t0e.FPRODUCTTYPE WHEN 1 THEN '主产品' WHEN 2 THEN '联产品' WHEN 3 THEN '副产品' ELSE '' END) AS 'PRODUCTTYPE'--43.生产类型 + ,(CASE t0e_a.FSTATUS WHEN 6 THEN '已结案'ELSE '' END) AS 'StatusIs6'--45.生产任务单结案否 + ,(CASE t1.FDOCUMENTSTATUS WHEN 'A' THEN '创建' WHEN 'B' THEN '审核中' WHEN 'C' THEN '已审核' WHEN 'D' THEN '重新审核' WHEN 'Z' THEN '暂存' ELSE '' END) AS 'PPBOMStatus'--46.生产投料单状态 + INTO #TmpTable0 +FROM T_PRD_MO t0 + INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + INNER JOIN T_PRD_PPBOM t1 on t1.FMOENTRYID = t0e.FENTRYID AND t1.FMOID = t0e.FID + INNER JOIN T_PRD_PPBOMENTRY t1e on t1e.FID = t1.FID +WHERE 1 = 1 {2} +SELECT + tt.* + ,t0e_q.FBASEWIPQTY --23.当前在制品数量 + ,t0e_q.FPICKEDQTY --27.已领数量 + ,t0e_q.FNOPICKEDQTY --28.未领数量 + ,t0e_l.FMEMO --31.备注 + ,t0e_q.FPICKEDQTY * (100 - tt.FYIELDRATE) AS 'FLossQty'--32.损耗数量 + ,t0e_q.FSCRAPQTY --33.报废数量 + ,t0e_q.FREPICKEDQTY --37.补料数量 + ,t0e_q.FINVENTORYQTY + ,t0e_c.FSTOCKID + ,t0e_c.FSTOCKLOCID + INTO #TmpTable1 +FROM #TmpTable0 tt + LEFT JOIN T_PRD_PPBOMENTRY_Q t0e_q ON t0e_q.FENTRYID = tt.PPBOMENTRYID --生产用料清单数量拆分表 + LEFT JOIN T_PRD_PPBOMENTRY_C t0e_c ON t0e_c.FENTRYID = tt.PPBOMENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_L t0e_l on t0e_l.FENTRYID = tt.PPBOMENTRYID AND t0e_l.FLOCALEID = @LCID + +SELECT tt.* + ,t1.FMNEMONICCODE AS 'ProMnemonicCode'--6.助记码 + ,t1.FNUMBER AS 'ProNumber'--8.产品编码 + ,t1_l.FNAME AS 'ProName'--9.产品名称 + ,t1_l.FSPECIFICATION AS 'ProSpecification'--10.产品规格型号 + ,t2_l.FNAME AS 'ProUnitName'--11.产品单位 + ,t3.FNUMBER AS 'MaterialNumber'--8.物料编码 + ,t3_l.FNAME AS 'MaterialName'--9.物料名称 + ,t3_l.FSPECIFICATION AS 'MaterialSpecification'--10.物料规格型号 + ,t4_l.FNAME AS 'MaterialUnitName'--11.物料单位 + ,(CASE t3.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'Materialsrc' --15.物料来源 + ,t6_l.FNAME AS 'WORKSHOPNAME' --44.生产车间 + ,t3.FMASTERID + ,t3.FUSEORGID + ,t7_l.FMEMO AS 'BOMMEMO' --42.BOM备注项 + ,t5_l.FNAME AS 'FSTOCKNAME' + ,t8.FNUMBER AS SaleUnitNumber --5.购货单位代码 + INTO #TmpTable2 +FROM #TmpTable1 tt + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = tt.ProMaterialId + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = tt.ProMaterialId AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = tt.PrdUnitId AND t2_l.FLOCALEID = @LCID + LEFT JOIN T_BD_MATERIAL t3 ON t3.FMATERIALID = tt.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t3_l ON t3_l.FMATERIALID = tt.FMATERIALID AND t3_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t4_l ON t4_l.FUNITID = tt.FUNITID AND t4_l.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L t5_l ON t5_l.FSTOCKID = tt.FSTOCKID AND t5_l.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L t6_l on t6_l.FDEPTID = tt.FWORKSHOPID AND t6_l.FLOCALEID = @LCID + LEFT JOIN T_ENG_BOMCHILD_L t7_l ON t7_l.FENTRYID = tt.FBOMENTRYID AND t7_l.FLOCALEID = @LCID + LEFT JOIN T_BD_CUSTOMER t8 on t8.FCUSTID = tt.FCUSTOMERID +SELECT tt.* + ,t1.FBASEQTY + ,t2_l.FNAME AS 'ROUTENAME' + ,t3e_A.FBASEINVQTY + ,t3e.FBASELACKQTY AS 'FBASELACKQTY'--24.欠料 + ,t3e_A.FBASEONORDERQTY AS 'FBASEONORDERQTY' --25.物料在途数 + ,t3e_A.FPURCHASEQTY --采购在途数量 + ,t3e_A.FREQUISITIONQTY --采购申请在途数量 + ,6 AS 'LOWEST6' + ,t3e_A.FREQUISITIONQTY - t3e_A.FPURCHASEQTY AS 'PR_C2PO_QTY' + ,0 AS 'ToBeInspectQTY' + ,0 AS 'PlanThrowInQty' + ,'' AS 'PlanThrowInDate' + ,'' AS 'CubicleName' + ,'' AS 'OTHERMEMO' + INTO {0} +FROM #TmpTable2 tt + LEFT JOIN ( + SELECT + t0.FMATERIALID + ,t0.FSTOCKORGID + ,sum(t0.FBASEQTY) AS FBASEQTY + FROM + T_STK_INVENTORY t0 + GROUP BY + t0.FMATERIALID + ,t0.FSTOCKORGID + ) t1 on t1.FMATERIALID = tt.FMASTERID AND t1.FSTOCKORGID = tt.FUSEORGID + LEFT JOIN T_ENG_ROUTE_L t2_L on t2_L.FID = tt.FROUTINGID AND t2_L.FLOCALEID = @LCID + LEFT JOIN T_PRD_PMPPBOMENTRY t3e on t3e.FPPBOMENTRYID = tt.PPBOMENTRYID AND t3e.FMATERIALIDSUB = tt.FMATERIALID --AND t3e.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_PRD_PMPPBOMENTRY_A t3e_A ON t3e_A.FENTRYID = t3e.FENTRYID + +DROP TABLE #TmpTable0 +DROP TABLE #TmpTable1 +DROP TABLE #TmpTable2 + """).format(tableName,_lcId,whereSql); + # raise Exception(sql);#可以通过此方法弹出Sql语句进行调试验证 + DBUtils.Execute(this.Context,sql);#执行SQL,将报表数据写入临时表 + +#构建账表列头 +def GetReportHeaders(rptfilter): + + header = ReportHeader(); + localEid = this.Context.UserLocale.LCID;#获取当前语言环境代码,中文为2052 + # 索引 + global _colIndex + _colIndex = 0; + def Incr1(val = 1): + global _colIndex + _resNum = _colIndex + _colIndex += val + return _resNum + datas = [ + {"fieldName" :"FDATE", "showName" :"单据日期","Mergeable" : True,"dataType":SqlStorageType.SqlDatetime } + ,{"fieldName" :"FPPBOMBILLNO", "showName" :"生产投料单号","Mergeable" : True,"IsHyperlink":True } + ,{"fieldName" :"FSALEORDERNO", "showName" :"销售订单号","Mergeable" : True } + ,{"fieldName" :"SaleUnitNumber", "showName" :"购货单位代码","Mergeable" : True } + ,{"fieldName" :"ProMnemoniccode", "showName" :"助记码","Mergeable" : True } + ,{"fieldName" :"FBILLNO", "showName" :"生产任务单号","Mergeable" : True } + ,{"fieldName" :"ProNumber", "showName" :"产品代码","Mergeable" : True } + ,{"fieldName" :"ProName", "showName" :"产品名称","Mergeable" : True } + ,{"fieldName" :"ProSpecification", "showName" :"产品规格型号","Mergeable" : True } + ,{"fieldName" :"ProUnitName", "showName" :"产品单位","Mergeable" : True } + ,{"fieldName" :"FQTY", "showName" :"产品生产数量","Mergeable" : True,"dataType":SqlStorageType.SqlDecimal } + ,{"fieldName" :"MaterialNumber", "showName" :"物料代码" } + ,{"fieldName" :"MaterialName", "showName" :"物料名称" } + ,{"fieldName" :"Materialsrc", "showName" :"物料来源" } + ,{"fieldName" :"MaterialSpecification", "showName" :"物料规格型号" } + ,{"fieldName" :"ROUTENAME", "showName" :"物料技术标准" } + ,{"fieldName" :"FUnitNeedQty", "showName" :"物料单位用量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"MaterialUnitName", "showName" :"物料单位" } + ,{"fieldName" :"FBASEINVQTY", "showName" :"物料库存量","dataType":SqlStorageType.SqlDecimal } + ,{"fieldName" :"ToBeInspectQTY", "showName" :"物料待检数","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FNEEDQTY", "showName" :"物料总需求","dataType":SqlStorageType.SqlDecimal } + ,{"fieldName" :"FBASEWIPQTY", "showName" :"当前在制品数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FBASELACKQTY", "showName" :"欠料","dataType":SqlStorageType.SqlDecimal } + ,{"fieldName" :"FBASEONORDERQTY", "showName" :"物料在途数","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"PlanThrowInQty", "showName" :"计划投料数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FPICKEDQTY", "showName" :"已领数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FNOPICKEDQTY", "showName" :"未领数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FSTDQTY", "showName" :"标准数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FMUSTQTY", "showName" :"应发数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FMEMO", "showName" :"备注"} + ,{"fieldName" :"FLossQty", "showName" :"损耗数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FSCRAPQTY", "showName" :"报废数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"PlanThrowInDate", "showName" :"计划发料日期","dataType":SqlStorageType.SqlDatetime } + ,{"fieldName" :"FSTOCKNAME", "showName" :"仓库" } + ,{"fieldName" :"FSTOCKLOCNAME", "showName" :"仓位" } + ,{"fieldName" :"FREPICKEDQTY", "showName" :"补料数量","dataType":SqlStorageType.SqlDecimal} + ,{"fieldName" :"FPLANSTARTDATE", "showName" :"计划开工日期","dataType":SqlStorageType.SqlDatetime } + ,{"fieldName" :"FPLANFINISHDATE", "showName" :"计划完工日期","dataType":SqlStorageType.SqlDatetime } + ,{"fieldName" :"CubicleName", "showName" :"工位" } + ,{"fieldName" :"OTHERMEMO", "showName" :"其他备注项" } + ,{"fieldName" :"BOMMEMO", "showName" :"BOM备注项" } + ,{"fieldName" :"PRODUCTTYPE", "showName" :"生产类型" } + ,{"fieldName" :"WORKSHOPNAME", "showName" :"生产车间" } + ,{"fieldName" :"StatusIs6", "showName" :"生产任务单结案否" } + ,{"fieldName" :"PPBOMStatus", "showName" :"生产投料单状态" } + ,{"fieldName" :"PR_C2PO_QTY", "showName" :"PR已审未转PO数量","dataType":SqlStorageType.SqlDecimal} + ]; + + for item in datas: + head = header.AddChild(item["fieldName"], LocaleValue(item["showName"], localEid), Incr1()) + if "dataType" in item: + head.ColType = item["dataType"] + if "Mergeable" in item: + head.Mergeable = item["Mergeable"] + if "IsLeaf" in item: + head.IsHyperlink = item["IsHyperlink"] + + return header; + +#设置报表表头字段值 +#这里主要是把过滤框设置的字段值,显示到报表表头 +def GetReportTitles(rptfilter): + reportTitles = ReportTitles(); + + custFilter = rptfilter.FilterParameter.CustomFilter; + if(custFilter == None): + return; + _proMaterialId = custFilter["ProMaterialId"]; + _materialId = custFilter["MaterialId"]; + + _billNo = objEx.ToSafeString(custFilter["BILLNO"]); + _PPBomBillNo = objEx.ToSafeString(custFilter["PPBOMBILLNO"]); + _saleOrderNo = objEx.ToSafeString(custFilter["SALEORDERNO"]); + if(_proMaterialId != None): + reportTitles.AddTitle("FTitleProMaterialId", _proMaterialId["Name"]); + if(_materialId != None): + reportTitles.AddTitle("FTitleMaterialId", _materialId["Name"]); + if(_billNo != ""): + reportTitles.AddTitle("FTitleBILLNO", _billNo); + if(_PPBomBillNo != ""): + reportTitles.AddTitle("FTitlePPBOMBILLNO", _PPBomBillNo); + if(_saleOrderNo != ""): + reportTitles.AddTitle("FTitleSALEORDERNO", _saleOrderNo); + + return reportTitles; + +#报表关闭触发,通常在此处清理报表过程产生的临时表 +def CloseReport(): + this.DropTempTable(); \ No newline at end of file diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/TablePlugIn.py b/HW.PythonPlugIn/ProductionMaterialsReport/TablePlugIn.py new file mode 100644 index 0000000..bcf66aa --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/TablePlugIn.py @@ -0,0 +1,67 @@ +import clr +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.ServiceHelper") +from Kingdee.BOS import * +from Kingdee.BOS.Core import * +from Kingdee.BOS.Core.Bill import * +from Kingdee.BOS.Core.Report import * +from System import * +from System.Data import * +from System.Net import * +from System.Text import * +from Kingdee.BOS.App.Data import * +from Kingdee.BOS.Core.List.PlugIn import * +from Kingdee.BOS.Core.List.PlugIn.Args import * + +def FormatCellValue(args): + # ڸʽ + if args.Header.ColType == SqlStorageType.SqlDatetime: + args.FormateValue = ("{0}").format(DateTime.Parse(str(args.FormateValue)).ToString("yyyy-MM-dd")) + +def CellDbClick(e): + e.Cancel = True + fldKey = e.Header.FieldName; + # 嵥 + if fldKey == "FPPBOMBILLNO": + reportModel = this.Model + tab = reportModel.DataSource + row = e.CellRowIndex + _moId = value=("{0}").format(tab.Rows[row-1]["FPPBOMID"]); + if _moId != None and str(_moId) != "" and str(_moId) != "0": + ShowForm("PRD_PPBOM", _moId) + # + if fldKey == "FBILLNO": + reportModel = this.Model + tab = reportModel.DataSource + row = e.CellRowIndex + _moId = value=("{0}").format(tab.Rows[row-1]["FID"]); + if _moId != None and str(_moId) != "" and str(_moId) != "0": + ShowForm("PRD_MO", _moId) + # + if fldKey == "MaterialName": + reportModel = this.Model + tab = reportModel.DataSource + row = e.CellRowIndex + _moId = value=("{0}").format(tab.Rows[row-1]["FMATERIALID"]); + if _moId != None and str(_moId) != "" and str(_moId) != "0": + ShowForm("BD_MATERIAL", _moId) + #Ʒ + if fldKey == "ProName": + reportModel = this.Model + tab = reportModel.DataSource + row = e.CellRowIndex + _moId = value=("{0}").format(tab.Rows[row-1]["ProMaterialId"]); + if _moId != None and str(_moId) != "" and str(_moId) != "0": + ShowForm("BD_MATERIAL", _moId) + +def ShowForm(_fromId, _pkVal, _operationStatus = OperationStatus.VIEW ,_openStyleShowType = ShowType.Floating): + showParam = BillShowParameter(); + showParam.FormId = _fromId; + showParam.OpenStyle.ShowType = _openStyleShowType; + showParam.Status = _operationStatus; + showParam.PKey = _pkVal; + this.View.ShowForm(showParam) \ No newline at end of file diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/sql/20240206联合查询.sql b/HW.PythonPlugIn/ProductionMaterialsReport/sql/20240206联合查询.sql new file mode 100644 index 0000000..138c71b --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/sql/20240206联合查询.sql @@ -0,0 +1,127 @@ +--declare @proMaterialId int +--,@materialId int +--,@FBILLNO varchar(80) +--,@FPPBOMBILLNO varchar(80) +--,@FSALEORDERNO varchar(80) +--,@LCID int +--SET @proMaterialId = '' +--SET @materialId = '' +--SET @FBILLNO = '' +--SET @FPPBOMBILLNO = '' +--SET @FSALEORDERNO = '' +DECLARE @LCID int +SET @LCID = 2052 + +SELECT + ROW_NUMBER() OVER(ORDER BY t0.FID,t0e.FENTRYID) AS FIDENTITYID--1.к + ,t0.FID + ,t0e.FSEQ + ,t0e.FENTRYID + ,t0.FDATE --2. + ,t1.FBILLNO AS 'FPPBOMBILLNO'--3.Ͷϵ + ,t0e.FSALEORDERNO --4.۶ + --5.λ + ,t0.FBILLNO--7.񵥺 + ,t0e.FPLANSTARTDATE--38.ƻ + ,t0e.FPLANFINISHDATE--39.ƻ깤 + ,t0e.FQTY--12.Ʒ + ,t0e.FYIELDRATE + ,t0e.FROUTINGID + ,t0e.FMATERIALID AS 'ProMaterialId' + ,t0e.FUNITID AS 'PrdUnitId' + ,t1e.FENTRYID AS 'PPBOMENTRYID' + ,t1e.FMATERIALID + ,(t1e.FNUMERATOR / t1e.FDENOMINATOR) AS 'FUnitNeedQty' --18.ϵλ + ,t1e.FNEEDQTY --22. + ,t1e.FUNITID + ,t1e.FBOMENTRYID + ,t1e.FSTDQTY --׼ --29.׼ + ,t1e.FMUSTQTY --Ӧ --30.Ӧ + ,t1.FWORKSHOPID + ,(CASE t0e.FPRODUCTTYPE WHEN 1 THEN 'Ʒ' WHEN 2 THEN 'Ʒ' WHEN 3 THEN 'Ʒ' ELSE '' END) AS 'PRODUCTTYPE'--43. + ,(CASE t0e_a.FSTATUS WHEN 6 THEN 'ѽ᰸'ELSE '' END) AS 'StatusIs6'--45.񵥽᰸ + ,(CASE t1.FDOCUMENTSTATUS WHEN 'A' THEN '' WHEN 'B' THEN '' WHEN 'C' THEN '' WHEN 'D' THEN '' WHEN 'Z' THEN 'ݴ' ELSE '' END) AS 'PPBOMStatus'--46.Ͷϵ״̬ + INTO #TmpTable0 +FROM T_PRD_MO t0 + INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + INNER JOIN T_PRD_PPBOM t1 on t1.FMOENTRYID = t0e.FENTRYID AND t1.FMOID = t0e.FID + INNER JOIN T_PRD_PPBOMENTRY t1e on t1e.FID = t1.FID +WHERE 1 = 1 + --AND t0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE t0.FBILLNO END) + --AND t0e.FMATERIALID = (CASE WHEN @proMaterialId <> 0 THEN @proMaterialId ELSE t0e.FMATERIALID END) + --AND t0e.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE t0e.FSALEORDERNO END) + --AND t1.FBILLNO = (CASE WHEN @FPPBOMBILLNO != '' THEN @FPPBOMBILLNO ELSE t1.FBILLNO END) + --AND t1e.FMATERIALID = (CASE WHEN @materialId <> 0 THEN @materialId ELSE t1e.FMATERIALID END) + +SELECT + tt.* + ,t0e_q.FBASEWIPQTY --23.ǰƷ + ,t0e_q.FPICKEDQTY --27. + ,t0e_q.FNOPICKEDQTY --28.δ + ,t0e_l.FMEMO --31.ע + ,t0e_q.FPICKEDQTY * (100 - tt.FYIELDRATE) AS 'FLossQty'--32. + ,t0e_q.FSCRAPQTY --33. + ,t0e_q.FREPICKEDQTY --37. + ,t0e_c.FSTOCKID + ,t0e_c.FSTOCKLOCID + INTO #TmpTable1 +FROM #TmpTable0 tt + LEFT JOIN T_PRD_PPBOMENTRY_Q t0e_q ON t0e_q.FENTRYID = tt.PPBOMENTRYID --嵥ֱ + LEFT JOIN T_PRD_PPBOMENTRY_C t0e_c ON t0e_c.FENTRYID = tt.PPBOMENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_L t0e_l on t0e_l.FENTRYID = tt.PPBOMENTRYID AND t0e_l.FLOCALEID = @LCID + +SELECT tt.* + ,t1.FMNEMONICCODE AS 'ProMnemonicCode'--6. + ,t1.FNUMBER AS 'ProNumber'--8.Ʒ + ,t1_l.FNAME AS 'ProName'--9.Ʒ + ,t1_l.FSPECIFICATION AS 'ProSpecification'--10.Ʒͺ + ,t2_l.FNAME AS 'ProUnitName'--11.Ʒλ + ,t3.FNUMBER AS 'MaterialNumber'--8.ϱ + ,t3_l.FNAME AS 'MaterialName'--9. + ,t3_l.FSPECIFICATION AS 'MaterialSpecification'--10.Ϲͺ + ,t4_l.FNAME AS 'MaterialUnitName'--11.ϵλ + ,(CASE t3.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'Materialsrc' --15.Դ + ,t6_l.FNAME AS 'WORKSHOPNAME' --44. + ,t3.FMASTERID + ,t3.FUSEORGID + ,t7_l.FMEMO AS 'BOMMEMO' --42.BOMע + ,t5_l.FNAME AS 'FSTOCKNAME' + INTO FSTOCKLOCID +FROM #TmpTable1 tt + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = tt.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = tt.FMATERIALID AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = tt.FUNITID AND t2_l.FLOCALEID = @LCID + LEFT JOIN T_BD_MATERIAL t3 ON t3.FMATERIALID = tt.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t3_l ON t3_l.FMATERIALID = tt.FMATERIALID AND t3_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t4_l ON t4_l.FUNITID = tt.FUNITID AND t4_l.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L t5_l ON t5_l.FSTOCKID = tt.FSTOCKID AND t5_l.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L t6_l on t6_l.FDEPTID = tt.FWORKSHOPID AND t6_l.FLOCALEID = @LCID + LEFT JOIN T_ENG_BOMCHILD_L t7_l ON t7_l.FENTRYID = tt.FBOMENTRYID AND t7_l.FLOCALEID = @LCID + +SELECT tt.* + ,t1.FBASEQTY + ,t2_l.FNAME AS 'ROUTENAME' + ,t3e_A.FBASEINVQTY + ,t3e.FBASELACKQTY AS 'FBASELACKQTY'--24.Ƿ + ,t3e_A.FBASEONORDERQTY AS 'FBASEONORDERQTY' --25.; + ,6 AS 'LOWEST6' +FROM #TmpTable2 tt + LEFT JOIN ( + SELECT + t0.FMATERIALID + ,t0.FSTOCKORGID + ,sum(t0.FBASEQTY) AS FBASEQTY + FROM + T_STK_INVENTORY t0 + GROUP BY + t0.FMATERIALID + ,t0.FSTOCKORGID + ) t1 on t1.FMATERIALID = tt.FMASTERID AND t1.FSTOCKORGID = tt.FUSEORGID + LEFT JOIN T_ENG_ROUTE_L t2_L on t2_L.FID = tt.FROUTINGID AND t2_L.FLOCALEID = @LCID + LEFT JOIN T_PRD_PMPPBOMENTRY t3e on t3e.FPPBOMENTRYID = tt.PPBOMENTRYID AND t3e.FMATERIALIDSUB = tt.FMATERIALID --AND t3e.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_PRD_PMPPBOMENTRY_A t3e_A ON t3e_A.FENTRYID = t3e.FENTRYID + +DROP TABLE #TmpTable0 +DROP TABLE #TmpTable1 +DROP TABLE #TmpTable2 \ No newline at end of file diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/sql/bom层级库存状态.sql b/HW.PythonPlugIn/ProductionMaterialsReport/sql/bom层级库存状态.sql new file mode 100644 index 0000000..30e4be3 --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/sql/bom层级库存状态.sql @@ -0,0 +1,3253 @@ +USE [AIS20220916152454] +GO +/****** Object: StoredProcedure [dbo].[Pro_BOMStockStatusBillEXP] Script Date: 2024/2/27 13:47:24 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + + +--״̬ TBH25702K01 + ALTER procedure [dbo].[Pro_BOMStockStatusBillEXP] ( + @FSNumber varchar (50) , + @FENumber varchar (50) , + @FSStock varchar (max), + @FSDate varchar (30), + @FEDate varchar (30), + @FName varchar (255) + ) + +as + +set nocount on + +declare @FCloseBALDate varchar (30) +declare @FClosedate varchar (30) + +--ѯʼһڵĩ +If NOT Exists(SELECT FORGID, MAX(FCLOSEDATE) fclosedate FROM T_STK_CLOSEPROFILE WHERE FORGID IN (1) AND FCATEGORY = 'STK' AND (FCLOSEDATE < @FSDate) + GROUP BY FORGID) +BEGIN + SET @FClosedate='2020-01-01' + SET @FCloseBALDate='2020-01-01' + --print @FClosedate +END +ELSE +BEGIN + --SET @FClosedate='2019-07-01' + SELECT @FClosedate= CONVERT(varchar (30), DATEADD(D, 1,MAX(FCLOSEDATE)),23) FROM + T_STK_CLOSEPROFILE WHERE ((FORGID IN (1) AND FCATEGORY = 'STK') AND (FCLOSEDATE < @FSDate)) GROUP BY FORGID + SET @FCloseBALDate=CONVERT(varchar (30), DATEADD(D, -1,@FClosedate),23) + --print @FClosedat +END + + declare @FSWL varchar (50) + declare @FEWL varchar (50) + + + set @FSWL='' + set @FEWL='' + + if @FSNumber<>'' and @FENumber<>'' + begin + SET @FSWL= @FSNumber + SET @FEWL= @FENumber + end + if @FSNumber<>'' and @FENumber='' + begin + SET @FSWL= @FSNumber + SELECT @FEWL=MAX(FNUMBER) +FROM T_BD_MATERIAL + end + if @FSNumber='' and @FENumber<>'' + begin + SET @FEWL= @FENumber + SELECT @FSWL=MIN(FNUMBER) FROM T_BD_MATERIAL + end + if @FSNumber='' and @FENumber='' + begin + SELECT @FSWL=MIN(FNUMBER) FROM T_BD_MATERIAL + SELECT @FEWL=MAX(FNUMBER) FROM T_BD_MATERIAL + end + + --ʱѡȡֿ + + if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tmpStockID')) + begin + drop table #tmpStockID + print '' + end + Create Table #tmpStockID ( + FID INT IDENTITY(1,1), + FStockID INT , + ) + DECLARE @Strsql varchar(max) + set @Strsql= 'insert into #tmpStockID select distinct FSTOCKID from T_BD_STOCK where 1=1 ' +@FSStock + EXEC(@Strsql) + +--״̬ + + if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Stock_Status_temp')) + begin + drop table #Stock_Status_temp + print '' + end + + Create Table #Stock_Status_temp ( + INT IDENTITY(1,1), + INT , + ϴ varchar(100) null , + varchar(255) null , + ͺ varchar(255) null , + ɱ varchar(100) null , + --λ varchar(30) null , + ڽ DECIMAL (18, 2) Null , + ڲɹ DECIMAL (18, 2) Null , + ں DECIMAL (18, 2) Null , + ĩ DECIMAL (18, 2) Null , + ; DECIMAL (18, 2) Null , + DECIMAL (18, 2) Null , + DECIMAL (18, 2) Null , + δ DECIMAL (18, 2) Null , + DECIMAL (18, 2) Null , + ۳ DECIMAL (18, 2) Null , + ֿⲦ DECIMAL (18, 2) Null , + ֿⲦ DECIMAL (18, 2) Null , + 깺δת DECIMAL (18, 2) Null, + ܶ DECIMAL (18, 2) Null , + ռ DECIMAL (18, 2) Null , + ÿ DECIMAL (18, 2) Null , + ֿ INT , + ֿ varchar(100) null , + ֿ varchar(255) null , + װ INT , + װʽ varchar(255) null + ) + + if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TMP')) + begin + drop table #TMP + print '' + end + +CREATE TABLE #TMP ( +FID INT IDENTITY(1,1), +FSTOCKORGID INT NOT NULL DEFAULT 0, +FBILLENTRYID INT NOT NULL DEFAULT 0, +FORDERBY INT NOT NULL DEFAULT 0, +FSTOCKIO CHAR (1) NULL, +FMATERIALID INT NOT NULL DEFAULT 0, +FAUXPROPID INT NOT NULL DEFAULT 0, +FDATE DATETIME NULL, +FSTOCKID INT NOT NULL DEFAULT 0, +FSTOCKLOCID INT NOT NULL DEFAULT 0, +FSTOCKSTATUSID INT NOT NULL DEFAULT 0, +FBILLNAME NVARCHAR (100) NULL, +FBILLID INT NOT NULL DEFAULT 0, +FBILLSEQID INT NULL, +FBILLNO NVARCHAR (100) NULL, +FBASEQCQTY DECIMAL (23, 10) NOT NULL DEFAULT 0, +FBASEINQTY DECIMAL (23, 10) NOT NULL DEFAULT 0, +FBASEOUTQTY DECIMAL (23, 10) NOT NULL DEFAULT 0 +) + + +--BOM㼶 + + if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#YC_T_MRP')) + begin + drop table #YC_T_MRP + end + + +CREATE TABLE #YC_T_MRP( + FID INT IDENTITY(1,1), + FBOMNumber NVARCHAR(255), + FMATERIALID INT, + ϱ NVARCHAR(255), + NVARCHAR(255), + Ʒ DECIMAL(28,10) DEFAULT (0), + DECIMAL(28,10),--BOM + ĸ DECIMAL(28,10),--BOMĸ + FQty DECIMAL(28,10),-- + FLevle INT , + FERPCLSID INT, + FOrderNum NVARCHAR(255), + FBOMID INT, + BOM㼶 NVARCHAR(200) NULL, + FSEQ1 INT, + FSEQ2 INT, + FSEQ3 INT, + FSEQ4 INT, + FSEQ5 INT, + FSEQ6 INT, + FParentNumber NVARCHAR(255) +) + + if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#BOMTmp')) + begin + drop table #BOMTmp + end + + +/*ȡ״̬BOMʱ*/ +SELECT ID=IDENTITY(INT,1,1),T0.FID,T0.FNUMBER,T0.FMATERIALID +INTO #BOMTmp +FROM T_ENG_BOM T0 +INNER JOIN T_BD_MATERIAL TM ON t0.FMATERIALID=TM.FMATERIALID --ϱ +WHERE (t0.FDOCUMENTSTATUS = 'C') and (t0.FFORBIDSTATUS='A') +AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + ORDER BY FMATERIALID,FNUMBER + +/*ʱУͬһϴֻһ°汾BOM*/ + delete FROM #BOMTmp WHERE id not in (SELECT max(id) FROM #BOMTmp group by FMATERIALID) + + +--ѯһƷϢ +INSERT INTO #YC_T_MRP(FBOMNumber,FMATERIALID,ϱ,,Ʒ,,ĸ,FQty,FLevle,FERPCLSID,FOrderNum,FBOMID,FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6,FParentNumber) +SELECT t0.FNUMBER,T0.FMATERIALID,t1.FNUMBER 'ϱ',t3.FNAME '',t0.FYIELDRATE 'Ʒ', +1 '', 1 'ĸ', 1 'FQty','0' 'FLevle', +T2.FERPCLSID 'FERPCLSID',t1.FNUMBER 'ϱ',t0.FID 'FBOMID', +0 'FSEQ1',0 'FSEQ2',0 'FSEQ3',0 'FSEQ4',0 'FSEQ5',0 'FSEQ6','' 'FParentNumber' +FROM T_ENG_BOM t0 +INNER JOIN T_BD_MATERIAL t1 ON t0.FMATERIALID=t1.FMATERIALID --ϱ +LEFT OUTER JOIN t_BD_MaterialBase t2 ON t1.FMATERIALID = t2.FMATERIALID --ϱ +LEFT OUTER JOIN T_BD_MATERIAL_L t3 ON (t1.FMATERIALID = t3.FMATERIALID AND t3.FLocaleId = 2052)--ϱ +INNER JOIN #BOMTmp t6 on t0.FMATERIALID=t6.FMATERIALID AND t0.FNUMBER=t6.FNUMBER +WHERE 1=1 AND (t0.FDOCUMENTSTATUS = 'C') +ORDER BY T0.FNUMBER + +--ݵһƷѯһƷIJϢ +INSERT INTO #YC_T_MRP(FBOMNumber,FMATERIALID,ϱ,,Ʒ,,ĸ,FQty,FLevle,FERPCLSID,FOrderNum,FBOMID, +FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6,FParentNumber) +SELECT t10.FNUMBER,t7.FMATERIALID,t7.FNUMBER 'ϱ',T9.FNAME '',t10.FYIELDRATE 'Ʒ', +t6.FNUMERATOR '',t6.FDENOMINATOR 'ĸ',ROUND(t6.FNUMERATOR/t6.FDENOMINATOR,10) 'FQty', +'1' 'FLevle',t8.FERPCLSID 'FERPCLSID',T5.FOrderNum,0 'FBOMID', +T5.FSEQ1 'FSEQ1',t6.FSEQ 'FSEQ2',0 'FSEQ3',0 'FSEQ4',0 'FSEQ5',0 'FSEQ6' +,t5.ϱ 'FParentNumber' +FROM #YC_T_MRP t5 +LEFT OUTER JOIN T_ENG_BOMCHILD t6 on t5.FBOMID=t6.FID--BOM¼ +INNER JOIN T_BD_MATERIAL t7 on t6.FMATERIALID=t7.FMATERIALID --ϱ +LEFT OUTER JOIN t_BD_MaterialBase t8 ON t8.FMATERIALID = t7.FMATERIALID --ϱ +LEFT OUTER JOIN T_BD_MATERIAL_L t9 ON (t6.FMATERIALID = t9.FMATERIALID AND t9.FLocaleId = 2052)--ϱ +LEFT JOIN T_ENG_BOM t10 on t10.FID=t6.FID--BOM +WHERE (t7.FFORBIDSTATUS = 'A') +AND T5.FLevle=0 AND T5.FERPCLSID>=2 +AND t10.FDOCUMENTSTATUS = 'C' + + + +/*ȡڶ״̬BOMʱ*/ + +SELECT ID=IDENTITY(INT,1,1),T0.FID,T0.FNUMBER,T0.FMATERIALID +INTO #BOMTmp1 FROM #YC_T_MRP t1 +INNER JOIN T_ENG_BOM t0 on t1.FMATERIALID=t0.FMATERIALID--BOMͷ +WHERE 1=1 and (t0.FDOCUMENTSTATUS = 'C') and (t0.FFORBIDSTATUS='A') AND T1.FLevle=1 AND T1.FERPCLSID>=2 + + + + /*ʱУͬһϴֻһ°汾BOM*/ + delete FROM #BOMTmp1 WHERE id not in (SELECT max(id) FROM #BOMTmp1 group by FMATERIALID) + + +--ݵڶǶƻIJƷѯڶƷIJϢ +INSERT INTO #YC_T_MRP(FBOMNumber,FMATERIALID,ϱ,,Ʒ,,ĸ,FQty,FLevle,FERPCLSID,FOrderNum,FBOMID, +FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6,FParentNumber) +SELECT t5.FNUMBER,t7.FMATERIALID,t7.FNUMBER 'ϱ',T9.FNAME '',t5.FYIELDRATE 'Ʒ', +t6.FNUMERATOR '',t6.FDENOMINATOR 'ĸ',ROUND(t6.FNUMERATOR/t6.FDENOMINATOR,10) 'FQty', +'2' 'FLevle',t8.FERPCLSID 'FERPCLSID',T1.FOrderNum,0 'FBOMID', +t1.FSEQ1 'FSEQ1',t1.FSEQ2 'FSEQ2',t6.FSEQ 'FSEQ3',0 'FSEQ4',0 'FSEQ5',0 'FSEQ6' +,t1.ϱ 'FParentNumber' +FROM #YC_T_MRP t1 +INNER JOIN T_ENG_BOM t5 on t1.FMATERIALID=t5.FMATERIALID--BOMͷ +LEFT OUTER JOIN T_ENG_BOMCHILD t6 on t5.FID=t6.FID--BOM¼ +INNER JOIN T_BD_MATERIAL t7 on t6.FMATERIALID=t7.FMATERIALID --ϱ +LEFT OUTER JOIN t_BD_MaterialBase t8 ON t8.FMATERIALID = t7.FMATERIALID --ϱ +LEFT OUTER JOIN T_BD_MATERIAL_L t9 ON (t6.FMATERIALID = t9.FMATERIALID AND t9.FLocaleId = 2052)--ϱ +INNER JOIN #BOMTmp1 t10 on t5.FMATERIALID=t10.FMATERIALID AND T5.FNUMBER=T10.FNUMBER +WHERE 1=1 and (t7.FFORBIDSTATUS = 'A') AND T1.FLevle=1 AND T1.FERPCLSID>=2 AND t5.FDOCUMENTSTATUS = 'C' + + + + +/*ȡ״̬BOMʱ*/ + +SELECT ID=IDENTITY(INT,1,1),T0.FID,T0.FNUMBER,T0.FMATERIALID +INTO #BOMTmp2 FROM #YC_T_MRP t1 +INNER JOIN T_ENG_BOM t0 on t1.FMATERIALID=t0.FMATERIALID--BOMͷ +WHERE 1=1 and (t0.FDOCUMENTSTATUS = 'C') and (t0.FFORBIDSTATUS='A') AND T1.FLevle=2 AND T1.FERPCLSID>=2 + + + + /*ʱУͬһϴֻһ°汾BOM*/ + delete FROM #BOMTmp2 WHERE id not in (SELECT max(id) FROM #BOMTmp2 group by FMATERIALID) + + +--ݵǶƻIJƷѯƷIJϢ +INSERT INTO #YC_T_MRP(FBOMNumber,FMATERIALID,ϱ,,Ʒ,,ĸ,FQty,FLevle,FERPCLSID,FOrderNum,FBOMID, +FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6,FParentNumber) +SELECT t5.FNUMBER,t7.FMATERIALID,t7.FNUMBER 'ϱ',T9.FNAME '',t5.FYIELDRATE 'Ʒ', +t6.FNUMERATOR '',t6.FDENOMINATOR 'ĸ',ROUND(t6.FNUMERATOR/t6.FDENOMINATOR,10) 'FQty', +'3' 'FLevle',t8.FERPCLSID 'FERPCLSID',T1.FOrderNum,0 'FBOMID', +t1.FSEQ1 'FSEQ1',t1.FSEQ2 'FSEQ2',t1.FSEQ3 'FSEQ3',t6.FSEQ 'FSEQ4',0 'FSEQ5',0 'FSEQ6' +,t1.ϱ 'FParentNumber' +FROM #YC_T_MRP t1 +INNER JOIN T_ENG_BOM t5 on t1.FMATERIALID=t5.FMATERIALID--BOMͷ +LEFT OUTER JOIN T_ENG_BOMCHILD t6 on t5.FID=t6.FID--BOM¼ +INNER JOIN T_BD_MATERIAL t7 on t6.FMATERIALID=t7.FMATERIALID --ϱ +LEFT OUTER JOIN t_BD_MaterialBase t8 ON t8.FMATERIALID = t7.FMATERIALID --ϱ +LEFT OUTER JOIN T_BD_MATERIAL_L t9 ON (t6.FMATERIALID = t9.FMATERIALID AND t9.FLocaleId = 2052)--ϱ +INNER JOIN #BOMTmp2 t10 on t5.FMATERIALID=t10.FMATERIALID AND T5.FNUMBER=T10.FNUMBER +WHERE (t7.FFORBIDSTATUS = 'A') AND T1.FLevle=2 AND T1.FERPCLSID>=2 +AND t5.FDOCUMENTSTATUS = 'C' + + + + +/*ȡļ״̬BOMʱ*/ + +SELECT ID=IDENTITY(INT,1,1),T0.FID,T0.FNUMBER,T0.FMATERIALID +INTO #BOMTmp3 FROM #YC_T_MRP t1 +INNER JOIN T_ENG_BOM t0 on t1.FMATERIALID=t0.FMATERIALID--BOMͷ +WHERE 1=1 and (t0.FDOCUMENTSTATUS = 'C') and (t0.FFORBIDSTATUS='A') AND T1.FLevle=3 AND T1.FERPCLSID>=2 + + + + /*ʱУͬһϴֻһ°汾BOM*/ + delete FROM #BOMTmp3 WHERE id not in (SELECT max(id) FROM #BOMTmp3 group by FMATERIALID) + + +--ݵļǶƻIJƷѯļƷIJϢ +INSERT INTO #YC_T_MRP(FBOMNumber,FMATERIALID,ϱ,,Ʒ,,ĸ,FQty,FLevle,FERPCLSID,FOrderNum,FBOMID, +FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6,FParentNumber) +SELECT t5.FNUMBER,t7.FMATERIALID,t7.FNUMBER 'ϱ',T9.FNAME '',t5.FYIELDRATE 'Ʒ', +t6.FNUMERATOR '',t6.FDENOMINATOR 'ĸ',ROUND(t6.FNUMERATOR/t6.FDENOMINATOR,10) 'FQty', +'4' 'FLevle',t8.FERPCLSID 'FERPCLSID',T1.FOrderNum,0 'FBOMID', +t1.FSEQ1 'FSEQ1',t1.FSEQ2 'FSEQ2',t1.FSEQ3 'FSEQ3',t1.FSEQ4 'FSEQ4',T6.FSEQ 'FSEQ5',0 'FSEQ6' +,t1.ϱ 'FParentNumber' +FROM #YC_T_MRP t1 +INNER JOIN T_ENG_BOM t5 on t1.FMATERIALID=t5.FMATERIALID--BOMͷ +LEFT OUTER JOIN T_ENG_BOMCHILD t6 on t5.FID=t6.FID--BOM¼ +INNER JOIN T_BD_MATERIAL t7 on t6.FMATERIALID=t7.FMATERIALID --ϱ +LEFT OUTER JOIN t_BD_MaterialBase t8 ON t8.FMATERIALID = t7.FMATERIALID --ϱ +LEFT OUTER JOIN T_BD_MATERIAL_L t9 ON (t6.FMATERIALID = t9.FMATERIALID AND t9.FLocaleId = 2052)--ϱ +INNER JOIN #BOMTmp3 t10 on t5.FMATERIALID=t10.FMATERIALID AND T5.FNUMBER=T10.FNUMBER +WHERE (t7.FFORBIDSTATUS = 'A') AND T1.FLevle=3 AND T1.FERPCLSID>=2 +AND t5.FDOCUMENTSTATUS = 'C' + + + + +/*ȡļ״̬BOMʱ*/ + +SELECT ID=IDENTITY(INT,1,1),T0.FID,T0.FNUMBER,T0.FMATERIALID +INTO #BOMTmp4 FROM #YC_T_MRP t1 +INNER JOIN T_ENG_BOM t0 on t1.FMATERIALID=t0.FMATERIALID--BOMͷ +WHERE 1=1 and (t0.FDOCUMENTSTATUS = 'C') and (t0.FFORBIDSTATUS='A') AND T1.FLevle=4 AND T1.FERPCLSID>=2 + + + + /*ʱУͬһϴֻһ°汾BOM*/ + delete FROM #BOMTmp4 WHERE id not in (SELECT max(id) FROM #BOMTmp4 group by FMATERIALID) + + +--ݵ弶ǶƻIJƷѯ弶ƷIJϢ +INSERT INTO #YC_T_MRP(FBOMNumber,FMATERIALID,ϱ,,Ʒ,,ĸ,FQty,FLevle,FERPCLSID,FOrderNum,FBOMID, +FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6,FParentNumber) +SELECT t5.FNUMBER,t7.FMATERIALID,t7.FNUMBER 'ϱ',T9.FNAME '',t5.FYIELDRATE 'Ʒ', +t6.FNUMERATOR '',t6.FDENOMINATOR 'ĸ',ROUND(t6.FNUMERATOR/t6.FDENOMINATOR,10) 'FQty', +'5' 'FLevle',t8.FERPCLSID 'FERPCLSID',T1.FOrderNum,0 'FBOMID', +t1.FSEQ1 'FSEQ1',t1.FSEQ2 'FSEQ2',t1.FSEQ3 'FSEQ3',t1.FSEQ4 'FSEQ4', t1.FSEQ5'FSEQ5',T6.FSEQ 'FSEQ6' +,t1.ϱ 'FParentNumber' +FROM #YC_T_MRP t1 +INNER JOIN T_ENG_BOM t5 on t1.FMATERIALID=t5.FMATERIALID--BOMͷ +LEFT OUTER JOIN T_ENG_BOMCHILD t6 on t5.FID=t6.FID--BOM¼ +INNER JOIN T_BD_MATERIAL t7 on t6.FMATERIALID=t7.FMATERIALID --ϱ +LEFT OUTER JOIN t_BD_MaterialBase t8 ON t8.FMATERIALID = t7.FMATERIALID --ϱ +LEFT OUTER JOIN T_BD_MATERIAL_L t9 ON (t6.FMATERIALID = t9.FMATERIALID AND t9.FLocaleId = 2052)--ϱ +INNER JOIN #BOMTmp4 t10 on t5.FMATERIALID=t10.FMATERIALID AND T5.FNUMBER=T10.FNUMBER +WHERE (t7.FFORBIDSTATUS = 'A') AND T1.FLevle=4 AND T1.FERPCLSID>=2 +AND t5.FDOCUMENTSTATUS = 'C' + +UPDATE #YC_T_MRP SET BOM㼶 =REPLICATE('.', FLevle) + + convert(varchar(4),FLevle) + +--select * from #YC_T_MRP + + +--ⵥ +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby,'I' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FSTOCKID fstockid, +ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, TSE.FBASEREALQTY fbaseinqty, 0 fbaseoutqty +FROM T_PRD_INSTOCK TS +INNER JOIN T_PRD_INSTOCKENTRY TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_PRD_INSTOCKENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +--((TS.FDATE >= '2019-07-01 00:00:00') AND (TS.FDATE <= '2019-11-12 23:59:59')) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND TS.FENTRUSTINSTOCKID = 0) + +--and ts.FBILLNO ='MM1907010113' + +--ʼ + +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid,ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid,TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', SUM(TSE.FBASEREALQTY) fbaseqcqty +FROM T_PRD_INSTOCK TS INNER JOIN T_PRD_INSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND TS.FENTRUSTINSTOCKID = 0) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), +ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE,TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ⵥ +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid , TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE. +FSTOCKSTATUSID fstockstatusid, 'ⵥ' fbillname, +TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, TSE.FBASEUNITQTY fbaseinqty, 0 fbaseoutqty +--t_STK_InStock +FROM T_STK_INSTOCK TS INNER JOIN T_STK_INSTOCKENTRY TSE ON TSE.FID = TS.FID + +INNER JOIN T_STK_INSTOCKENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_STK_INSTOCKFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +--((TS.FDATE >= '2019-07-01 00:00:00') AND (TS.FDATE <= '2019-11-12 23:59:59')) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND TSF.FISGENFORIOS = '0') +--ʼ + +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID,FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ʼ', SUM(TSE.FBASEUNITQTY) fbaseqcqty +FROM T_STK_INSTOCK TS INNER JOIN T_STK_INSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_INSTOCKFIN TSF ON TSE.FID = TSF.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (( +((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND TSF.FISGENFORIOS = '0') +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE. +FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +--ⵥ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, +FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY,FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio,TSE.FMATERIALID fmaterialid,ISNULL(TSE.FRECEIVEAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FRECEIVESTOCKID fstockid, ISNULL(TSE.FRECEIVESTOCKLOCID, 0) fstocklocid, TSE.FRECEIVESTOCKSTATUS fstockstatusid, 'ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno,0 fbaseqcqty, 0 fbaseinqty, TSE.FBASEUNITQTY fbaseoutqty +FROM T_STK_INSTOCK TS INNER JOIN T_STK_INSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_INSTOCKENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_STK_INSTOCKFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +--((TS.FDATE >= '2019-07-01 00:00:00')AND (TS.FDATE <= '2019-11-12 23:59:59')) +AND (TSE.FRECEIVESTOCKID > 0)) AND (TSE.FRECEIVESTOCKSTATUS > 0)) AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) AND TSF.FISGENFORIOS = '0') + AND TSE.FRECEIVESTOCKFLAG = '1') + +--ʼ + +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, +TSE.FMATERIALID fmaterialid, ISNULL(TSE.FRECEIVEAUXPROPID, 0) fauxpropid, +TSE.FRECEIVESTOCKID fstockid, ISNULL(TSE.FRECEIVESTOCKLOCID, 0) fstocklocid, +TSE.FRECEIVESTOCKSTATUS fstockstatusid, 'ʼ', (0 - SUM(TSE.FBASEUNITQTY)) fbaseqcqty + +FROM T_STK_INSTOCK TS INNER JOIN T_STK_INSTOCKENTRY TSE ON TSE.FID = TS.FID INNER JOIN T_STK_INSTOCKFIN TSF ON TSE.FID = TSF.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (TSE.FRECEIVESTOCKID > 0)) +AND (TSE.FRECEIVESTOCKSTATUS > 0)) AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) AND TSF.FISGENFORIOS = '0') AND TSE.FRECEIVESTOCKFLAG = '1') +GROUP BY TS.FSTOCKORGID, TSE.FRECEIVEOWNERTYPEID, TSE.FRECEIVEOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FRECEIVEAUXPROPID, 0), +ISNULL(TSE.FRECEIVELOT_TEXT, ' '), ISNULL(TSE.FRECEIVEMTONO, ' '), TSE.FRECEIVESTOCKID, ISNULL(TSE.FRECEIVESTOCKLOCID, 0), +TSE.FRECEIVESTOCKSTATUS, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ϵ + + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, +FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) +--ϵ +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, +0 fbaseqcqty, 0 fbaseinqty, TSED.FBASESTOCKACTUALQTY fbaseoutqty +FROM T_PRD_PICKMTRL TS INNER JOIN T_PRD_PICKMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_PRD_PICKMTRLDATA_A TSED ON TSED.FENTRYID = TSE.FENTRYID +LEFT OUTER JOIN T_PRD_PICKMTRLDATA_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND + TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + +--ʼ + +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, +TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ',SUM(0 - TSED.FBASESTOCKACTUALQTY) fbaseqcqty + +FROM T_PRD_PICKMTRL TS INNER JOIN T_PRD_PICKMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_PRD_PICKMTRLDATA_A TSED ON TSED.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ( +((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A')AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSED.FOWNERTYPEID, TSED.FOWNERID, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), + ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSED.FKEEPERTYPEID, + TSED.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0), TS.FDATE + +--۳ⵥ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio,TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, '۳ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, +0 fbaseqcqty, 0 fbaseinqty, TSE.FBASEUNITQTY fbaseoutqty +FROM T_SAL_OUTSTOCK TS INNER JOIN T_SAL_OUTSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_SAL_OUTSTOCKENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_SAL_OUTSTOCKFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_MATERIALBASE TMB ON TSE.FMATERIALID = TMB.FMATERIALID +INNER JOIN T_SAL_OUTSTOCKENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND (TSEF.FRowType = 'Son' OR TSEF.FRowType = 'Standard')) +AND TSF.FISGENFORIOS = '0') AND (TMB.FERPCLSID <> '6')) +--AND TS.FBILLNO='SA1907050103' + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, + ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, + TSE.FSTOCKSTATUSID fstockstatusid, + 'ʼ', SUM(0 - TSE.FBASEUNITQTY) fbaseqcqty + FROM T_SAL_OUTSTOCK TS INNER JOIN T_SAL_OUTSTOCKENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_SAL_OUTSTOCKENTRY_F TSEF ON TSE.FENTRYID = TSEF.FENTRYID + INNER JOIN T_SAL_OUTSTOCKFIN TSF ON TSE.FID = TSF.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_MATERIALBASE TMB ON TSE.FMATERIALID = TMB.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((( + ((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') + AND TS.FCANCELSTATUS = 'A')) AND (TSEF.FRowType = 'Son' OR TSEF.FRowType = 'Standard')) AND TSF.FISGENFORIOS = '0') AND (TMB.FERPCLSID <> '6')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), + ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, + TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ϵ +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, 0 fbaseinqty, TSEQ.FBASESTOCKACTUALQTY fbaseoutqty +FROM T_PRD_FEEDMTRL TS +INNER JOIN T_PRD_FEEDMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_PRD_FEEDMTRLDATA_Q TSEQ ON (TSE.FID = TSEQ.FID AND TSE.FENTRYID = TSEQ.FENTRYID) +LEFT OUTER JOIN T_PRD_FEEDMTRLDATA_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +--and ts.FBILLNO in ('M31910140010','M31907010006') + + +--ʼ + +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, + TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ' fbillname,SUM(0 - TSEQ.FBASESTOCKACTUALQTY) fbaseqcqty + FROM T_PRD_FEEDMTRL TS INNER JOIN T_PRD_FEEDMTRLDATA TSE ON TSE.FID = TS.FID + INNER JOIN T_PRD_FEEDMTRLDATA_Q TSEQ ON (TSE.FID = TSEQ.FID AND TSE.FENTRYID = TSEQ.FENTRYID) + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) + AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), + TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ϵ +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, 0 fbaseinqty, (0 - TSEA.FBASESTOCKQTY) fbaseoutqty +FROM T_PRD_RETURNMTRL TS +INNER JOIN T_PRD_RETURNMTRLENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_PRD_RETURNMTRLENTRY_A TSEA ON TSE.FENTRYID = TSEA.FENTRYID +LEFT OUTER JOIN T_PRD_RETURNMTRLENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) +--and ts.FBILLNO='M21907200004' + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid,ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid,TSE.FSTOCKSTATUSID fstockstatusid,'ʼ', SUM(TSEA.FBASESTOCKQTY) fbaseqcqty + FROM T_PRD_RETURNMTRL TS INNER JOIN T_PRD_RETURNMTRLENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_PRD_RETURNMTRLENTRY_A TSEA ON TSE.FENTRYID = TSEA.FENTRYID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID,0), + ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, + TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ϵ +INSERT INTO #TMP (FSTOCKORGID,FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, +0 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, +0 fbaseqcqty, (0 - TSE.FBASEUNITQTY) fbaseinqty, 0 fbaseoutqty +FROM T_PUR_MRB TS INNER JOIN T_PUR_MRBENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_PUR_MRBENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_PUR_MRBFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_MATERIALBASE TMB ON TM.FMATERIALID = TMB.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND (TSE.FSTOCKID > 0)) +AND TSF.FISGENFORIOS = '0') AND (TSE.FSTOCKFLAG = '1' OR ((TS.FMRTYPE = 'B' AND TMB.FISINVENTORY = '1') AND (TSE.FStockStatusId <> TSE.FReceiveStockStatusId)))) + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', SUM(0 - TSE.FBASEUNITQTY) fbaseqcqty +FROM T_PUR_MRB TS INNER JOIN T_PUR_MRBENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_PUR_MRBFIN TSF ON TSE.FID = TSF.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_MATERIALBASE TMB ON TM.FMATERIALID = TMB.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) + AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND (TSE.FSTOCKID > 0)) + AND TSF.FISGENFORIOS = '0') AND (TSE.FSTOCKFLAG = '1' OR ((TS.FMRTYPE= 'B' AND TMB.FISINVENTORY = '1') + AND (TSE.FStockStatusId <> TSE.FReceiveStockStatusId)))) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), + ISNULL(TSE.FLOT_TEXT, ''), ISNULL(TSE.FMTONO,''), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, + TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ϵ ±־ FSTOCKFLAG 0:δ 1:Ѹ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, TSE.FBASEUNITQTY fbaseinqty, 0 fbaseoutqty +FROM T_PUR_RECEIVE TS INNER JOIN T_PUR_RECEIVEENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_PUR_RECEIVEENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_PUR_RECEIVEFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_MATERIALBASE TMB ON TMB.FMaterialId = TSE.FMaterialId + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND TMB.FISINVENTORY = '1') +AND (TSE.FSTOCKID > 0)) AND TSE.FSTOCKFLAG = '1') + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', SUM(TSE.FBASEUNITQTY) fbaseqcqty + +FROM T_PUR_RECEIVE TS +INNER JOIN T_PUR_RECEIVEENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) AND (TSE.FSTOCKID > 0)) AND TSE.FSTOCKFLAG = '1') +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), + ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, + TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +--˻ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +--˻ +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby,'O' fstockio, +TSE.FMATERIALID fmaterialid,ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, '˻' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, 0 fbaseinqty, (0 - TSE.FBASEUNITQTY) fbaseoutqty +FROM T_SAL_RETURNSTOCK TS INNER JOIN T_SAL_RETURNSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_SAL_RETURNSTOCKENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_SAL_RETURNSTOCKFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_MATERIALBASE TMB ON TSE.FMATERIALID = TMB.FMATERIALID INNER JOIN T_SAL_RETURNSTOCKENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +AND (TSEF.FRowType = 'Son' OR TSEF.FRowType = 'Standard')) AND TSF.FISGENFORIOS = '0') AND (TMB.FERPCLSID <> '6')) + +--AND TS.FBILLNO ='SB1908230003' + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, + TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', SUM(TSE.FBASEUNITQTY) fbaseqcqty + FROM T_SAL_RETURNSTOCK TS INNER JOIN T_SAL_RETURNSTOCKENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_SAL_RETURNSTOCKENTRY_F TSEF ON TSE.FENTRYID = TSEF.FENTRYID + INNER JOIN T_SAL_RETURNSTOCKFIN TSF ON TSE.FID = TSF.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_MATERIALBASE TMB ON TSE.FMATERIALID = TMB.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE ((((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') + AND TS.FCANCELSTATUS = 'A')) AND (TSEF.FRowType = 'Son' OR TSEF.FRowType = 'Standard')) AND TSF.FISGENFORIOS = '0') AND (TMB.FERPCLSID <> '6')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, +TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + + +--ⵥ +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty,TSE.FBASEREALQTY fbaseinqty,0 fbaseoutqty +FROM T_SP_INSTOCK TS INNER JOIN T_SP_INSTOCKENTRY TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_SP_INSTOCKENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', SUM(TSE.FBASEREALQTY) fbaseqcqty +FROM T_SP_INSTOCK TS INNER JOIN T_SP_INSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, +TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ϵ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid,ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, 0 fbaseinqty, TSE.FBASEACTUALQTY fbaseoutqty + +FROM T_SP_PICKMTRL TS INNER JOIN T_SP_PICKMTRLDATA TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_SP_PICKMTRLDATA_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) +SELECT TS.FSTOCKORGID fstockorgid,TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ʼ',(0 - SUM(TSE.FBASEACTUALQTY)) fbaseqcqty +FROM T_SP_PICKMTRL TS INNER JOIN T_SP_PICKMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, +ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + +--ϵ + +INSERT INTO #TMP (FSTOCKORGID,FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, + 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ + fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, 0 fbaseinqty, (0 - TSE.FBASEQTY) fbaseoutqty + +FROM T_SP_RETURNMTRL TS INNER JOIN T_SP_RETURNMTRLENTRY TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_SP_RETURNMTRLENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ʼ', SUM(TSE.FBASEQTY) fbaseqcqty +FROM T_SP_RETURNMTRL TS INNER JOIN T_SP_RETURNMTRLENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), + TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + +--װж + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, CASE WHEN UPPER(TS.FAFFAIRTYPE) = 'ASSEMBLY' THEN 'I' ELSE 'O' END fstockio, +TSE.FMATERIALID fmaterialid,ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, +TSE.FSTOCKSTATUSID fstockstatusid, 'װж' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, +CASE WHEN UPPER(TS.FAFFAIRTYPE) = 'ASSEMBLY' THEN TSE.FBASEQTY ELSE 0 END fbaseinqty, CASE WHEN UPPER(TS.FAFFAIRTYPE) = 'DASSEMBLY' THEN TSE.FBASEQTY ELSE 0 END fbaseoutqty +FROM T_STK_ASSEMBLY TS INNER JOIN T_STK_ASSEMBLYPRODUCT TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_STK_ASSEMBLYPRODUCT_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE +(((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', + SUM(CASE WHEN UPPER(TS.FAFFAIRTYPE) = 'ASSEMBLY' THEN TSE.FBASEQTY ELSE (0 - TSE.FBASEQTY) END) fbaseqcqty + + FROM T_STK_ASSEMBLY TS INNER JOIN T_STK_ASSEMBLYPRODUCT TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, + TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--װж + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FDETAILID fbillentryid, 0 forderby, CASE WHEN UPPER(TS.FAFFAIRTYPE) = 'DASSEMBLY' THEN 'I' ELSE 'O' END fstockio, +TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate,TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, +TSE.FSTOCKSTATUSID fstockstatusid, 'װж' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, + +CASE WHEN UPPER(TS.FAFFAIRTYPE) = 'ASSEMBLY' THEN 0 ELSE TSE.FBASEQTY END fbaseinqty, CASE WHEN UPPER(TS.FAFFAIRTYPE) = 'DASSEMBLY' THEN 0 ELSE TSE.FBASEQTY END fbaseoutqty +FROM T_STK_ASSEMBLY TS INNER JOIN T_STK_ASSEMBLYPRODUCT TSEH ON TSEH.FID = TS.FID +INNER JOIN T_STK_ASSEMBLYSUBITEM TSE ON TSE.FENTRYID = TSEH.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +LEFT OUTER JOIN T_STK_ASSEMBLYPRODUCT_R TSR ON TSR.FENTRYID = TSE.FENTRYID + +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + SELECT TS.FSTOCKORGID fstockorgid,TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, + ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, + TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', SUM(CASE WHEN UPPER(TS.FAFFAIRTYPE) = 'DASSEMBLY' THEN TSE.FBASEQTY ELSE (0 - TSE.FBASEQTY) END) fbaseqcqty + FROM T_STK_ASSEMBLY TS INNER JOIN T_STK_ASSEMBLYPRODUCT TSEH ON TSEH.FID = TS.FID + INNER JOIN T_STK_ASSEMBLYSUBITEM TSE ON TSE.FENTRYID = TSEH.FENTRYID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), + ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, + TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0), TS.FDATE + + + +--ŵ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'A' THEN 'O' ELSE 'I' END fstockio, +TSE.FMATERIALID fmaterialid,ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, +TSE.FSTOCKSTATUSID fstockstatusid, 'ŵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, +CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'B' THEN TSE.FBASEQTY ELSE 0 END fbaseinqty, CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'A' THEN TSE.FBASEQTY ELSE 0 END fbaseoutqty +FROM T_STK_LOTADJUST TS INNER JOIN T_STK_LOTADJUSTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +--((TS.FDATE >= '2019-07-01 00:00:00') AND (TS.FDATE <= '2019-11-12 23:59:59')) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, + 'ʼ', SUM(CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'B' THEN TSE.FBASEQTY ELSE (0 - TSE.FBASEQTY) END) fbaseqcqty + +FROM T_STK_LOTADJUST TS INNER JOIN T_STK_LOTADJUSTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), + ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, + ISNULL(TSE.FBOMID, 0) + + + +--ⵥ + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio,TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, +0 fbaseqcqty,CASE WHEN TS.FSTOCKDIRECT = 'GENERAL' THEN TSE.FBASEQTY ELSE (0 - TSE.FBASEQTY) END fbaseinqty, 0 fbaseoutqty + +FROM T_STK_MISCELLANEOUS TS INNER JOIN T_STK_MISCELLANEOUSENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_MISCELLANEOUSENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +--((TS.FDATE >= '2019-07-01 00:00:00') AND (TS.FDATE<= '2019-11-12 23:59:59')) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ + +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', + SUM(CASE WHEN TS.FSTOCKDIRECT = 'GENERAL' THEN TSE.FBASEQTY ELSE (0 - TSE.FBASEQTY) END) fbaseqcqty + FROM T_STK_MISCELLANEOUS TS INNER JOIN T_STK_MISCELLANEOUSENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, +ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +--ⵥ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, +0 fbaseqcqty, 0 fbaseinqty,CASE WHEN TS.FSTOCKDIRECT = 'GENERAL' THEN TSE.FBASEQTY ELSE (0 - TSE.FBASEQTY) END fbaseoutqty +FROM T_STK_MISDELIVERY TS +INNER JOIN T_STK_MISDELIVERYENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_MISDELIVERYENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + --ʼ +INSERT INTO #TMP (FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + +SELECT TS.FSTOCKORGID fstockorgid,TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', + SUM(CASE WHEN TS.FSTOCKDIRECT = 'GENERAL' THEN (0 - TSE.FBASEQTY) ELSE TSE.FBASEQTY END) fbaseqcqty + FROM T_STK_MISDELIVERY TS INNER JOIN T_STK_MISDELIVERYENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), + TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--мӹⵥ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio,TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'мӹⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, FBASEQTY fbaseinqty,0 fbaseoutqty +FROM T_STK_OEMINSTOCK TS +INNER JOIN T_STK_OEMINSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_OEMINSTOCKENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +--((TS.FDATE >= '2019-07-01 00:00:00') AND (TS.FDATE <= '2019-11-12 23:59:59')) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ʼ', SUM(FBASEQTY) fbaseqcqty +FROM T_STK_OEMINSTOCK TS INNER JOIN T_STK_OEMINSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, +TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--мӹϵ + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid,TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio,TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'мӹϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno,0 fbaseqcqty,(0 - FBASEQTY) fbaseinqty, 0 fbaseoutqty + +FROM T_STK_OEMINSTOCKRTN TS +INNER JOIN T_STK_OEMINSTOCKRTNENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_OEMINSTOCKRTNENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND FRETURNTYPE = 'StockReMat') + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'', (0 - SUM(FBASEQTY)) fbaseqcqty + FROM T_STK_OEMINSTOCKRTN TS INNER JOIN T_STK_OEMINSTOCKRTNENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE ((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + AND FRETURNTYPE = 'StockReMat') + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, + ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), + TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + +--̬ת + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'A' THEN 'O' ELSE 'I' END fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'̬ת' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, +CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'B' THEN TSE.FBASEQTY ELSE 0 END fbaseinqty,CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'A' THEN TSE.FBASEQTY ELSE 0 END fbaseoutqty +FROM T_STK_STATUSCONVERT TS +INNER JOIN T_STK_STATUSCONVERTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', +SUM(CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'B' THEN TSE.FBASEQTY ELSE (0 - TSE.FBASEQTY) END) fbaseqcqty +FROM T_STK_STATUSCONVERT TS INNER JOIN T_STK_STATUSCONVERTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, +TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--״̬ת + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, +CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'A' THEN 'O' ELSE 'I' END fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'״̬ת' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, +CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'B' THEN TSE.FBASEQTY ELSE 0 END fbaseinqty, +CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'A' THEN TSE.FBASEQTY ELSE 0 END fbaseoutqty +FROM T_STK_STOCKCONVERT TS INNER JOIN T_STK_STOCKCONVERTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_STOCKCONVERTENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ʼ', +SUM(CASE WHEN UPPER(TSE.FCONVERTTYPE) = 'B' THEN TSE.FBASEQTY ELSE (0 - TSE.FBASEQTY) END) fbaseqcqty +FROM T_STK_STOCKCONVERT TS INNER JOIN T_STK_STOCKCONVERTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID,0), +TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +--ӯ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + + +SELECT TS.FSTOCKORGID fstockorgid,TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid,ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ӯ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, TSE.FBASEGAINQTY fbaseinqty,0 fbaseoutqty +FROM T_STK_STKCOUNTGAIN TS +INNER JOIN T_STK_STKCOUNTGAINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND ((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A')) + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ʼ', SUM(TSE.FBASEGAINQTY) fbaseqcqty +FROM T_STK_STKCOUNTGAIN TS INNER JOIN T_STK_STKCOUNTGAINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND ((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO,' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, +TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +--̿ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'̿' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, +0 fbaseqcqty, 0 fbaseinqty,TSE.FBASELOSSQTY fbaseoutqty +FROM T_STK_STKCOUNTLOSS TS INNER JOIN T_STK_STKCOUNTLOSSENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND ((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A')) + + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, + 'ʼ', SUM(0 - TSE.FBASELOSSQTY) fbaseqcqty + FROM T_STK_STKCOUNTLOSS TS INNER JOIN T_STK_STKCOUNTLOSSENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND ((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, + ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ֱӵ + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 'I' ELSE 'O' END fstockio, +TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate ,TSE.FDESTSTOCKID fstockid, ISNULL(TSE.FDESTSTOCKLOCID, 0) fstocklocid, +TSE.FDESTSTOCKSTATUSID fstockstatusid, 'ֱӵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno,0 fbaseqcqty, +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END fbaseinqty,CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'RETURN' THEN (0 - TSE.FBASEQTY) ELSE 0 END fbaseoutqty + +FROM T_STK_STKTRANSFERIN TS INNER JOIN T_STK_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_STKTRANSFERINENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FDESTSTOCKID = TBS.FSTOCKID + + +WHERE (((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) AND TS +.FOBJECTTYPEID = 'STK_TransferDirect') + + + +--ʼ + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, +ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TSE.FDESTSTOCKID fstockid, +ISNULL(TSE.FDESTSTOCKLOCID, 0) fstocklocid, TSE.FDESTSTOCKSTATUSID fstockstatusid,'ʼ', +SUM(CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END - +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 0 ELSE (0 - TSE.FBASEQTY) END) fbaseqcqty +FROM T_STK_STKTRANSFERIN TS INNER JOIN T_STK_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FDESTSTOCKID = TBS.FSTOCKID +WHERE (((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +AND (TS.FISGENFORIOS <> '1')) AND TS.FOBJECTTYPEID = 'STK_TransferDirect') +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FDESTSTOCKID, ISNULL(TSE.FDESTSTOCKLOCID, 0), +TSE.FDESTSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, TSE.FBOMID, TS.FDATE + + + +--ֱӵ + + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, +FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKOUTORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 'O' ELSE 'I' END fstockio, +TSE.FSRCMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSRCSTOCKID fstockid, ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, TSE.FSRCSTOCKSTATUSID fstockstatusid, +'ֱӵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno,0 fbaseqcqty, +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 0 ELSE (0 - TSE.FBASEQTY) END fbaseinqty, +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END fbaseoutqty +FROM T_STK_STKTRANSFERIN TS INNER JOIN T_STK_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_STKTRANSFERINENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FSRCMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID +WHERE (((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKOUTORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) AND TS.FOBJECTTYPEID = 'STK_TransferDirect') + + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKOUTORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, +TSE.FSRCMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSRCSTOCKID fstockid, ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, TSE.FSRCSTOCKSTATUSID fstockstatusid, 'ʼ', + +SUM(CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 0 ELSE (0 - TSE.FBASEQTY) END - +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END) fbaseqcqty + + +FROM T_STK_STKTRANSFERIN TS INNER JOIN T_STK_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FSRCMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID +WHERE (((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKOUTORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +AND (TS.FISGENFORIOS <> '1')) AND TS.FOBJECTTYPEID = 'STK_TransferDirect') +GROUP BY TS.FSTOCKOUTORGID, TSE.FOWNERTYPEOUTID, TSE.FOWNEROUTID, TSE.FSRCMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSRCSTOCKID, ISNULL(TSE.FSRCSTOCKLOCID, 0), TSE.FSRCSTOCKSTATUSID, +TSE.FKEEPERTYPEOUTID, TSE.FKEEPEROUTID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, TSE.FSRCBOMID, TS.FDATE + + +--ֲʽ뵥 + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 'I' ELSE 'O' END fstockio, +TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate,TSE.FDESTSTOCKID fstockid, ISNULL(TSE.FDESTSTOCKLOCID, 0) fstocklocid, +TSE.FDESTSTOCKSTATUSID fstockstatusid, 'ֲʽ뵥' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, +0 fbaseqcqty, CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GEN +ERAL' THEN TSE.FBASEQTY ELSE 0 END fbaseinqty, +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'RETURN' THEN (0 - TSE.FBASEQTY) ELSE 0 END fbaseoutqty + +FROM T_STK_STKTRANSFERIN TS INNER JOIN T_STK_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_STKTRANSFERINENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FDESTSTOCKID = TBS.FSTOCKID +WHERE (((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) AND TS.FOBJECTTYPEID = 'STK_TRANSFERIN') + + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FDESTSTOCKID fstockid, ISNULL(TSE.FDESTSTOCKLOCID, 0) fstocklocid, TSE.FDESTSTOCKSTATUSID fstockstatusid,'ʼ', + SUM(TSE.FBASEQTY) fbaseqcqty + FROM T_STK_STKTRANSFERIN TS INNER JOIN T_STK_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FDESTSTOCKID = TBS.FSTOCKID + WHERE (((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + AND (TS.FISGENFORIOS <> '1')) AND TS.FOBJECTTYPEID = 'STK_TRANSFERIN') + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FDESTLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FDESTSTOCKID, ISNULL(TSE.FDESTSTOCKLOCID, 0), TSE.FDESTSTOCKSTATUSID, + TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, TSE.FBOMID, TS.FDATE + +--ֲʽ뵥 + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKOUTORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio, TSE.FSRCMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSRCSTOCKID fstockid, ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, TSE.FSRCSTOCKSTATUSID fstockstatusid, 'ֲʽ뵥' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty,((0 - TSE.FBASEQTY) - TSET.FBASEPATHLOSSQTY) fbaseinqty, 0 fbaseoutqty +FROM T_STK_STKTRANSFERIN TS INNER JOIN T_STK_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_STKTRANSFERINENTRY_T TSET ON TSE.FENTRYID = TSET.FENTRYID +INNER JOIN T_STK_STKTRANSFERINENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FSRCMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID +WHERE ((((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKOUTORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) +AND TS.FVESTONWAY = 'A') AND TS.FOBJECTTYPEID = 'STK_TRANSFERIN') + + + + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + SELECT TS.FSTOCKOUTORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FSRCMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSRCSTOCKID fstockid, ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, TSE.FSRCSTOCKSTATUSID fstockstatusid, '', SUM((0 - TSE.FBASEQTY) - TSET.FBASEPATHLOSSQTY) fbaseqcqty + FROM T_STK_STKTRANSFERIN TS INNER JOIN T_STK_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_STK_STKTRANSFERINENTRY_T TSET ON TSE.FENTRYID = TSET.FENTRYID + INNER JOIN T_BD_MATERIAL TM ON TSE.FSRCMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID + WHERE ((((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) + AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKOUTORGID IN (1) + AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) + AND TS.FVESTONWAY = 'A') AND TS.FOBJECTTYPEID = 'STK_TRANSFERIN') + GROUP BY TS.FSTOCKOUTORGID, TSE.FOWNERTYPEOUTID, TSE.FOWNEROUTID, TSE.FSRCMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FSRCMTONO, ' '), + TSE.FSRCSTOCKID, ISNULL(TSE.FSRCSTOCKLOCID, 0), TSE.FSRCSTOCKSTATUSID, TSE.FKEEPERTYPEOUTID, TSE.FKEEPEROUTID, TSE.FSRCPRODUCEDATE, TSE.FSRCEXPIRYDATE, TSE.FSRCBOMID, TS.FDATE + +--ֲʽ + + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 'O' ELSE 'I' END fstockio, +TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FSRCSTOCKID fstockid, ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, +TSE.FSRCSTOCKSTATUSID fstockstatusid, 'ֲʽ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'RETURN' THEN (0 - TSE.FBASEQTY) ELSE 0 END fbaseinqty, +CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END fbaseoutqty + +FROM T_STK_STKTRANSFEROUT TS INNER JOIN T_STK_STKTRANSFEROUTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_STKTRANSFEROUTENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID +WHERE ((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) + + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSRCSTOCKID fstockid, ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, TSE.FSRCSTOCKSTATUSID fstockstatusid, + 'ʼ', SUM(0 - TSE.FBASEQTY) fbaseqcqty + FROM T_STK_STKTRANSFEROUTENTRY TSE INNER JOIN T_STK_STKTRANSFEROUT TS ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON +TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID + WHERE ((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), + ISNULL(TSE.FMTONO, ' '), TSE.FSRCSTOCKID, ISNULL(TSE.FSRCSTOCKLOCID, 0), TSE.FSRCSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, + TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, TSE.FBOMID, TS.FDATE + +--ֲʽ + + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSRCSTOCKID fstockid,ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, TSE.FDESTSTOCKSTATUSID fstockstatusid, +'ֲʽ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno,0 fbaseqcqty,TSE.FBASEQTY fbaseinqty, 0 fbaseoutqty +FROM T_STK_STKTRANSFEROUT TS INNER JOIN T_STK_STKTRANSFEROUTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_STKTRANSFEROUTENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID +WHERE (((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) AND TS.FVESTONWAY = 'A') + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSRCSTOCKID fstockid, ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, TSE.FDESTSTOCKSTATUSID fstockstatusid, + 'ʼ', SUM(TSE.FBASEQTY) fbaseqcqty + FROM T_STK_STKTRANSFEROUT TS INNER JOIN T_STK_STKTRANSFEROUTENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID + WHERE (((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + AND (TS.FISGENFORIOS <> '1')) AND TS.FVESTONWAY = 'A') + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSRCSTOCKID, ISNULL(TSE.FSRCSTOCKLOCID, 0), + TSE.FDESTSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, TSE.FBOMID, TS.FDATE + + +--ֲʽ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKINORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio,TSE.FDESTMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FDESTSTOCKID fstockid, +ISNULL(TSE.FDESTSTOCKLOCID, 0) fstocklocid, TSE.FDESTSTOCKSTATUSID fstockstatusid, +'ֲʽ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty,TSE.FBASEQTY fbaseinqty, 0 fbaseoutqty +FROM T_STK_STKTRANSFEROUT TS INNER JOIN T_STK_STKTRANSFEROUTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_STK_STKTRANSFEROUTENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FDESTMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FDESTSTOCKID = TBS.FSTOCKID + +WHERE (((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKINORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +AND (TS.FISGENFORIOS <> '1')) AND TS.FVESTONWAY = 'B') + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKINORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FDESTMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FDESTSTOCKID fstockid, ISNULL(TSE.FDESTSTOCKLOCID, 0) fstocklocid, TSE.FDESTSTOCKSTATUSID fstockstatusid, +'ʼ', SUM(TSE.FBASEQTY) fbaseqcqty +FROM T_STK_STKTRANSFEROUT TS INNER JOIN T_STK_STKTRANSFEROUTENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FDESTMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FDESTSTOCKID = TBS.FSTOCKID +WHERE (((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKINORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) AND (TS.FISGENFORIOS <> '1')) AND TS.FVESTONWAY = 'B') +GROUP BY TS.FSTOCKINORGID, TSE.FOWNERTYPEINID, TSE.FOWNERINID, TSE.FDESTMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FDESTLOT_TEXT, ' '), ISNULL(TSE.FDESTMTONO, ' '), TSE.FDESTSTOCKID, +ISNULL(TSE.FDESTSTOCKLOCID, 0), TSE.FDESTSTOCKSTATUSID, TSE.FKEEPERTYPEINID, TSE.FKEEPERINID, TSE.FDESTPRODUCEDATE, TSE.FDESTEXPIRYDATE, ISNULL(TSE.FDESTBOMID, 0), TS.FDATE + + + +--Ʋֿ + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 'I' ELSE 'O' END fstockio, +TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FDESTSTOCKID fstockid, ISNULL(TSE.FDESTSTOCKLOCID, 0) fstocklocid, +TSE.FDESTSTOCKSTATUSID fstockstatusid, 'Ʋֿ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, + 0 fbaseqcqty,CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END fbaseinqty, + CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'RETURN' THEN (0 - TSE.FBASEQTY) ELSE 0 END fbaseoutqty +FROM T_REM_STKTRANSFERIN TS INNER JOIN T_REM_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_REM_STKTRANSFERINENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FDESTSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FDESTSTOCKID fstockid, ISNULL(TSE.FDESTSTOCKLOCID, 0) fstocklocid, TSE.FDESTSTOCKSTATUSID fstockstatusid,'ʼ', + SUM(CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END - CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 0 ELSE (0 - TSE.FBASEQTY) END) fbaseqcqty + + FROM T_REM_STKTRANSFERIN TS INNER JOIN T_REM_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FDESTSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FDESTLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), + TSE.FDESTSTOCKID, ISNULL(TSE.FDESTSTOCKLOCID, 0), TSE.FDESTSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, TSE.FBOMID, TS.FDATE + + + + --Ʋֿ + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKOUTORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 'O' ELSE 'I' END fstockio, +TSE.FSRCMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FSRCSTOCKID fstockid,ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, + TSE.FSRCSTOCKSTATUSID fstockstatusid, + 'Ʋֿ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, + CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 0 ELSE (0 - TSE.FBASEQTY) END fbaseinqty, + CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END fbaseoutqty + FROM T_REM_STKTRANSFERIN TS + INNER JOIN T_REM_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_REM_STKTRANSFERINENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID + INNER JOIN T_BD_MATERIAL TM ON TSE.FSRCMATERIALID = TM.FMATERIALID + + INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKOUTORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKOUTORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FSRCMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSRCSTOCKID fstockid, ISNULL(TSE.FSRCSTOCKLOCID, 0) fstocklocid, TSE.FSRCSTOCKSTATUSID fstockstatusid, 'ʼ', + SUM(CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN 0 ELSE (0 - TSE.FBASEQTY) END - CASE WHEN UPPER(TS.FTRANSFERDIRECT) = 'GENERAL' THEN TSE.FBASEQTY ELSE 0 END) fbaseqcqty + FROM T_REM_STKTRANSFERIN TS INNER JOIN T_REM_STKTRANSFERINENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FSRCMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSRCSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKOUTORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) + AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKOUTORGID, TSE.FOWNERTYPEOUTID, TSE.FOWNEROUTID, TSE.FSRCMATERIALID, ISNULL(TSE.FAUXPROPID, 0), +ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSRCSTOCKID, ISNULL(TSE.FSRCSTOCKLOCID, 0), TSE.FSRCSTOCKSTATUSID, TSE.FKEEPERTYPEOUTID, TSE.FKEEPEROUTID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, TSE.FSRCBOMID, TS.FDATE + + +--ίⲹϵ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ίⲹϵ' fbillname, TS.FID fbillid, +TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, 0 fbaseinqty, TSEQ.FBASESTOCKACTUALQTY fbaseoutqty +FROM T_SUB_FEEDMTRL TS INNER JOIN T_SUB_FEEDMTRLENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_SUB_FEEDMTRLENTRY_Q TSEQ ON (TSE.FID = TSEQ.FID AND TSE.FENTRYID = TSEQ.FENTRYID) +LEFT OUTER JOIN T_SUB_FEEDMTRLENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + AND TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, + +'ʼ', SUM(0 - TSEQ.FBASESTOCKACTUALQTY) fbaseqcqty + FROM T_SUB_FEEDMTRL TS INNER JOIN T_SUB_FEEDMTRLENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_SUB_FEEDMTRLENTRY_Q TSEQ ON (TSE.FID = TSEQ.FID AND TSE.FENTRYID = TSEQ.FENTRYID) + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, + TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +--ίϵ + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ίϵ' fbillname, TS.FID fbillid, +TSE.FSEQ fbillseqid, TS.FBILLNO fbillno,0 fbaseqcqty, 0 fbaseinqty, TSE.FBASESTOCKACTUALQTY fbaseoutqty +FROM T_SUB_PICKMTRL TS INNER JOIN T_SUB_PICKMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_SUB_PICKMTRLDATA_A TSEQ ON (TSE.FID = TSEQ.FID AND TSE.FENTRYID = TSEQ.FENTRYID) +LEFT OUTER JOIN T_SUB_PICKMTRLDATA_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +AND TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ʼ', SUM(0 - TSE.FBASESTOCKACTUALQTY) fbaseqcqty + FROM T_SUB_PICKMTRL TS INNER JOIN T_SUB_PICKMTRLDATA TSE ON TSE.FID = TS.FID + INNER JOIN T_SUB_PICKMTRLDATA_A TSEQ ON (TSE.FID = TSEQ.FID AND TSE.FENTRYID = TSEQ.FENTRYID) + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) + AND TM.FFORBIDSTATUS = 'A')AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSEQ.FOWNERTYPEID, TSEQ.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), + TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSEQ.FKEEPERTYPEID, TSEQ.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--ίϵ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ίϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, +0 fbaseinqty, (0 - TSE.FBASESTOCKQTY) fbaseoutqty +FROM T_SUB_RETURNMTRL TS INNER JOIN T_SUB_RETURNMTRLENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_SUB_RETURNMTRLENTRY_A TSEA ON TSE.FENTRYID = TSEA.FENTRYID +LEFT OUTER JOIN T_SUB_RETURNMTRLENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', SUM(TSE.FBASESTOCKQTY) fbaseqcqty +FROM T_SUB_RETURNMTRL TS INNER JOIN T_SUB_RETURNMTRLENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_SUB_RETURNMTRLENTRY_A TSEA ON TSE.FENTRYID = TSEA.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, +TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSEA.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), +TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + +--߲Ʒⵥ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid,TSE.FENTRYID fbillentryid, 0 forderby, + 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, '߲Ʒⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, TSE.FBASEREALQTY fbaseinqty,0 fbaseoutqty +FROM T_REM_INSTOCK TS INNER JOIN T_REM_INSTOCKENTRY TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_REM_INSTOCKENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + +--ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, + TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, + 'ʼ', SUM(TSE.FBASEREALQTY) fbaseqcqty + FROM T_REM_INSTOCK TS INNER JOIN T_REM_INSTOCKENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID + WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) + AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), + TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +---߲Ʒ˿ⵥ + + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, + FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TS.FDATE fdate,TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'߲Ʒ˿ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, +0 fbaseqcqty, (0 - TSE.FBASEREALQTY) fbaseinqty, 0 fbaseoutqty +FROM T_REM_OUTSTOCK TS INNER JOIN T_REM_OUTSTOCKENTRY TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_REM_OUTSTOCKENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ʼ', SUM(TSE.FBASEREALQTY) fbaseqcqty +FROM T_REM_OUTSTOCK TS INNER JOIN T_REM_OUTSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, +ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +--ϵ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, +'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS +.FBILLNO fbillno, 0 fbaseqcqty, 0 fbaseinqty, TSED.FBASESTOCKACTUALQTY fbaseoutqty + +FROM T_REM_PICKMTRL TS INNER JOIN T_REM_PICKMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_REM_PICKMTRLDATA_A TSED ON TSED.FENTRYID = TSE.FENTRYID +LEFT OUTER JOIN T_REM_PICKMTRLDATA_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) + --AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid,TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ʼ', SUM(0 - TSED.FBASESTOCKACTUALQTY) fbaseqcqty +FROM T_REM_PICKMTRL TS INNER JOIN T_REM_PICKMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_REM_PICKMTRLDATA_A TSED ON TSED.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) +AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSED.FOWNERTYPEID, TSED.FOWNERID, TSE.FMATERIALID, +ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSED.FKEEPERTYPEID, TSED.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0), TS.FDATE + + +--ϵ +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid,'ϵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, 0 fbaseinqty, (0 - TSEA.FBASESTOCKQTY) fbaseoutqty + +FROM T_REM_RETURNMTRL TS INNER JOIN T_REM_RETURNMTRLENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_REM_RETURNMTRLENTRY_A TSEA ON TSE.FENTRYID = TSEA.FENTRYID +LEFT OUTER JOIN T_REM_RETURNMTRLENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) + and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, 'ʼ', SUM(TSEA.FBASESTOCKQTY) fbaseqcqty +FROM T_REM_RETURNMTRL TS INNER JOIN T_REM_RETURNMTRLENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_REM_RETURNMTRLENTRY_A TSEA ON TSE.FENTRYID = TSEA.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), +TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +--ίⳬĵ +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'O' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ίⳬĵ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty,0 fbaseinqty, TSE.FBASEUNITQTY fbaseoutqty + +FROM T_SUB_EXCONSUME TS INNER JOIN T_SUB_EXCONSUMEENTRY TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_SUB_EXCONSUMEENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ʼ', SUM(0 - TSE.FBASEUNITQTY) fbaseqcqty +FROM T_SUB_EXCONSUME TS INNER JOIN T_SUB_EXCONSUMEENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOwnerTypeId, TSE.FOwnerId, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), +ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID,0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + +--˿ⵥ + + INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio,TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'˿ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, TS.FBILLNO fbillno, 0 fbaseqcqty, (0 - TSE.FBASEREALQTY) fbaseinqty,0 fbaseoutqty +FROM +T_PRD_RESTOCK TS INNER JOIN T_PRD_RESTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_PRD_RESTOCKENTRY_A TSEA ON TSE.FEntryID = TSEA.FEntryID +LEFT OUTER JOIN T_PRD_RESTOCKENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') +AND TS.FCANCELSTATUS = 'A')) AND TS.FEntrustRetStockId = 0) + + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ʼ', SUM(0 - TSE.FBASEREALQTY) fbaseqcqty +FROM T_PRD_RESTOCK TS INNER JOIN T_PRD_RESTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE ((((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) +AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS= 'A')) AND TS.FEntrustRetStockId = 0) + GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), + TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + +--˿ⵥ + +INSERT INTO #TMP (FSTOCKORGID, FBILLENTRYID, FORDERBY,FSTOCKIO, FMATERIALID, FAUXPROPID, FDATE, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID, FBILLNAME, FBILLID, FBILLSEQID, FBILLNO, FBASEQCQTY, FBASEINQTY, FBASEOUTQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TSE.FENTRYID fbillentryid, 0 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, + +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, '˿ⵥ' fbillname, TS.FID fbillid, TSE.FSEQ fbillseqid, +TS.FBILLNO fbillno, 0 fbaseqcqty, (0 - TSE.FBASEOUTQTY) fbaseinqty, 0 fbaseoutqty + +FROM T_SP_OUTSTOCK TS INNER JOIN T_SP_OUTSTOCKENTRY TSE ON TSE.FID = TS.FID +LEFT OUTER JOIN T_SP_OUTSTOCKENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_SP_OUTSTOCKENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) + + + + --ʼ +INSERT INTO #TMP ( FSTOCKORGID,FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TS.FSTOCKORGID fstockorgid, TS.FDATE fdate, -200 forderby, 'I' fstockio, TSE.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TSE.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'ʼ', SUM(0 - TSE.FBASEOUTQTY) fbaseqcqty + FROM T_SP_OUTSTOCK TS INNER JOIN T_SP_OUTSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON TSE.FSTOCKID = TBS.FSTOCKID +WHERE (((TS.FDATE >= @FClosedate) AND (TS.FDATE < @FSDate)) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A')) +GROUP BY TS.FSTOCKORGID, TSE.FOWNERTYPEID, TSE.FOWNERID, TS.FDATE, TSE.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TSE.FLOT_TEXT, ' '), ISNULL(TSE.FMTONO, ' '), TSE.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, +TSE.FKEEPERTYPEID, TSE.FKEEPERID, TSE.FPRODUCEDATE, TSE.FEXPIRYDATE, ISNULL(TSE.FBOMID, 0) + + + +INSERT INTO #TMP ( FSTOCKORGID, FDATE, FORDERBY, FSTOCKIO, FMATERIALID, FAUXPROPID, FSTOCKID, FSTOCKLOCID, FSTOCKSTATUSID,FBILLNAME, FBASEQCQTY) + +SELECT TSE.FSTOCKORGID fstockorgid, TSE.FBALDATE fdate, -200 forderby, + 'I' fstockio, TM.FMATERIALID fmaterialid, ISNULL(TSE.FAUXPROPID, 0) fauxpropid, +TBS.FSTOCKID fstockid, ISNULL(TSE.FSTOCKLOCID, 0) fstocklocid, TSE.FSTOCKSTATUSID fstockstatusid, +'', SUM(TSE.FBASEENDQTY) fbaseqcqty +FROM T_STK_INVBAL TSE +INNER JOIN T_BD_MATERIAL TM ON (TM.FMASTERID = TSE.FMATERIALID AND TM.FUSEORGID = TSE.FSTOCKORGID) +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.FSTOCKID AND TBS.FUSEORGID = TSE.FSTOCKORGID) +LEFT OUTER JOIN T_ENG_BOM TB ON (TB.FMASTERID = TSE.FBOMID AND TB.FUSEORGID = TSE.FSTOCKORGID) +LEFT OUTER JOIN V_ITEMCLASS_OWNER VO ON ((VO.FMASTERID = TSE.FOWNERID AND VO.FFORMID = TSE.FOWNERTYPEID) AND (VO.FUSEORGID = TSE.FSTOCKORGID OR VO.FUSEORGID = 0 +OR EXISTS (SELECT 1 FROM T_META_BASEDATATYPE BT WHERE (BT.FBASEDATATYPEID = VO.FFORMID AND BT.FSTRATEGYTYPE = 1)))) +LEFT OUTER JOIN V_ITEMCLASS_OWNER_L VO_L ON (VO.FITEMID = VO_L.FITEMID AND VO_L.FLOCALEID = 2052) +LEFT OUTER JOIN V_ITEMCLASS_KEEPER VK ON ((VK.FMASTERID = TSE.FKEEPERID AND VK.FFORMID = TSE.FKEEPERTYPEID) AND (VK.FUSEORGID = TSE.FSTOCKORGID OR VK.FUSEORGID = 0 +OR EXISTS (SELECT 1 FROM T_META_BASEDATATYPE BT WHERE (BT.FBASEDATATYPEID = VK.FFORMID AND BT.FSTRATEGYTYPE = 1)))) +LEFT OUTER JOIN V_ITEMCLASS_KEEPER_L VK_L ON (VK.FITEMID = VK_L.FITEMID AND VK_L.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_LOTMASTER TBLM ON (ISNULL(TSE.FLOT, 0) = TBLM.FMASTERID AND TBLM.FUSEORGID IN (1)) + +WHERE ((TSE.FSTOCKORGID IN (1) AND (FBALTYPE in(0, 1) AND (FSTOCKORGID = 1 AND TSE.FBALDATE =@FCloseBALDate ))) +--AND (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) +AND (TM.FNUMBER in(select distinct ϱ from #YC_T_MRP )) +and TBS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + AND TM.FFORBIDSTATUS = 'A') + + +GROUP BY TSE.FSTOCKORGID, TSE.FOWNERTYPEID, VO.FITEMID, TSE.FBALDATE, TM.FMATERIALID, ISNULL(TSE.FAUXPROPID, 0), ISNULL(TBLM.FNUMBER, ' '), ISNULL(TSE.FMTONO, ' '), +TBS.FSTOCKID, ISNULL(TSE.FSTOCKLOCID, 0), TSE.FSTOCKSTATUSID, TSE.FKEEPERTYPEID, VK.FITEMID, TSE.FLOT, TMS.FISBATCHMANAGE, TMS.FISKFPERIOD, +TMS.FISEXPPARTOFLOT, TBLM.FPRODUCEDATE, TSE.FPRODUCEDATE, TBLM.FEXPIRYDATE, TSE.FEXPIRYDATE, ISNULL(TB.FID, 0) + + +--ϲг + +select FSTOCKORGID, FMATERIALID, FAUXPROPID, FSTOCKID,sum( FBASEQCQTY)FBASEQCQTY, sum(FBASEINQTY)FBASEINQTY, sum(FBASEOUTQTY) FBASEOUTQTY +into #tmp1 +from #TMP +--where FDATE <='2019-08-30' +group by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +order by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID + + + +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 װ +from #tmp1 TSE +INNER JOIN T_BD_MATERIAL TM ON (TM.FMATERIALID = TSE.FMATERIALID AND TM.FUSEORGID = TSE.FSTOCKORGID) +inner join T_BD_MATERIAL_L TML on TM.FMATERIALID =TML.FMATERIALID and TML.FLOCALEID =2052 +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.FSTOCKID AND TBS.FUSEORGID = TSE.FSTOCKORGID) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TSE.FSTOCKID AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + + + +--ڽ +--select FSTOCKORGID, FMATERIALID, FAUXPROPID, FSTOCKID,sum( FBASEQCQTY)FBASEQCQTY, sum(FBASEINQTY)FBASEINQTY, sum(FBASEOUTQTY) FBASEOUTQTY +--into #tmp2 + +--from #TMP +----where FDATE <=@FSDate +--group by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +--order by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID + +--select * +UPDATE t1 set t1.ڽ=t2.FBASEQCQTY + from #Stock_Status_temp t1 +inner join #tmp1 t2 on t1.=t2.FMATERIALID and t1.ֿ=t2.FSTOCKID and t1.װ=T2.FAUXPROPID + + +--ĩ + + +--select FSTOCKORGID, FMATERIALID, FAUXPROPID, FSTOCKID,sum( FBASEQCQTY)FBASEQCQTY, sum(FBASEINQTY)FBASEINQTY, sum(FBASEOUTQTY) FBASEOUTQTY +--into #tmp3 +--from #TMP + +----where FDATE <=@FEDate +--group by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +--order by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID + + +--ĩ +UPDATE t1 set t1.ĩ=t2.FBASEQCQTY+t2.FBASEINQTY-t2.FBASEOUTQTY + from #Stock_Status_temp t1 +inner join + #tmp1 t2 on t1.=t2.FMATERIALID and t1.ֿ=t2.FSTOCKID and t1.װ=T2.FAUXPROPID + + +--ڲɹ +select FSTOCKORGID, FMATERIALID, FAUXPROPID, FSTOCKID,sum( FBASEQCQTY)FBASEQCQTY, sum(FBASEINQTY)FBASEINQTY, sum(FBASEOUTQTY) FBASEOUTQTY +into #tmp4 from #TMP TS where FORDERBY<>'-200' and fstockio='I' and ( FBILLNAME not like'%%' and FBILLNAME<>'̬ת') +and ((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--TS.FDATE >='2019-08-30'and TS.FDATE <='2019-11-12' +group by FSTOCKORGID, FMATERIALID, +FAUXPROPID, FSTOCKID +order by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +--ڲɹ + +UPDATE t1 set t1.ڲɹ=t2.FBASEINQTY + from #Stock_Status_temp t1 +inner join #tmp4 t2 on t1.=t2.FMATERIALID and t1.ֿ=t2.FSTOCKID and t1.װ=T2.FAUXPROPID + +--ں +select FSTOCKORGID, FMATERIALID, FAUXPROPID, FSTOCKID,sum( FBASEQCQTY)FBASEQCQTY, sum(FBASEINQTY)FBASEINQTY, sum(FBASEOUTQTY) FBASEOUTQTY +into #tmp5 from #TMP TS where fstockio='O' and ( FBILLNAME not like'%%' and FBILLNAME<>'̬ת') +and ((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--TS.FDATE >='2019-08-30'and TS.FDATE <='2019-11-12' +group by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +order by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +--ں + +UPDATE t1 set t1.ں=t2.FBASEOUTQTY + from #Stock_Status_temp t1 +inner join #tmp5 t2 on t1.=t2.FMATERIALID and t1.ֿ=t2.FSTOCKID and t1.װ=T2.FAUXPROPID + + +--ֿⲦֿⲦ + +select FSTOCKORGID, FMATERIALID, FAUXPROPID, FSTOCKID,sum( FBASEQCQTY)FBASEQCQTY, sum(FBASEINQTY)FBASEINQTY, sum(FBASEOUTQTY) FBASEOUTQTY +into #tmp6 from #TMP TS where FORDERBY<>'-200' and ( FBILLNAME like'%%' ) +and ((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--TS.FDATE >='2019-08-30'and TS.FDATE <='2019-11-12' +group by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +order by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID + +--ֿⲦ--ֿⲦ + +UPDATE t1 set t1.ֿⲦ=t2.FBASEINQTY,t1.ֿⲦ=t2.FBASEOUTQTY + from #Stock_Status_temp t1 +inner join #tmp6 t2 on t1.=t2.FMATERIALID and t1.ֿ=t2.FSTOCKID and t1.װ=T2.FAUXPROPID + + +-- +select FSTOCKORGID, FMATERIALID, FAUXPROPID, FSTOCKID,sum( FBASEQCQTY)FBASEQCQTY, sum(FBASEINQTY)FBASEINQTY, sum(FBASEOUTQTY) FBASEOUTQTY +into #tmp7 from #TMP TS where ( FBILLNAME in('ϵ','ίϵ' )) +and ((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--TS.FDATE >='2019-08-30'and TS.FDATE <='2019-11-12' +group by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +order by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID + +-- +UPDATE t1 set t1.=t2.FBASEOUTQTY + from #Stock_Status_temp t1 +inner join #tmp7 t2 on t1.=t2.FMATERIALID and t1.ֿ=t2.FSTOCKID and t1.װ=T2.FAUXPROPID + + +--۳ + +select FSTOCKORGID, FMATERIALID, FAUXPROPID, FSTOCKID,sum( FBASEQCQTY)FBASEQCQTY, sum(FBASEINQTY)FBASEINQTY, sum(FBASEOUTQTY) FBASEOUTQTY +into #tmp8 from #TMP TS where ( FBILLNAME ='۳ⵥ' ) +and ((TS.FDATE >= @FSDate) AND (TS.FDATE <= @FEDate)) +--TS.FDATE >='2019-08-30'and TS.FDATE <='2019-11-12' +group by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID +order by FSTOCKORGID, FMATERIALID,FAUXPROPID, FSTOCKID + +--۳ +UPDATE t1 set t1.۳=t2.FBASEOUTQTY + from #Stock_Status_temp t1 +inner join #tmp8 t2 on t1.=t2.FMATERIALID and t1.ֿ=t2.FSTOCKID and t1.װ=T2.FAUXPROPID + + + + +--ܶ +--۶ܶ +--******************************************* + +--ѯ +--(C.FBASEREMAINOUTQTY+C.FBaseReturnQty)ۼ˿+ʣδ +select (A.FBILLNO) as ۵,(A.FID) ,(B.FENTRYID) ۷¼ ,(B.FSEQ) , +B.FMATERIALID AS ,B.FBASEUNITQTY ,(C.FBASEREMAINOUTQTY+C.FBaseReturnQty) as δ,FBaseReturnQty, +isnull(B.FSTOCKID,0) ֿ,B.FAUXPROPID ,A.FCLOSESTATUS ,FCLOSEDATE, A.FDATE , B.FMRPCLOSESTATUS ҵر +into #tmpSal +from T_SAL_ORDER A +inner join T_SAL_ORDERENTRY B on A.FID =B.FID +left join T_SAL_ORDERENTRY_R C ON C.FID=B.FID AND C.FENTRYID =B.FENTRYID +left join T_SAL_ORDERENTRY_E D on D.FID=B.FID AND D.FENTRYID =B.FENTRYID + +WHERE 1=1 AND A.FCANCELSTATUS='A' AND A.FDOCUMENTSTATUS='C' --AND B.FMRPTERMINATESTATUS='A' +AND (B.FTERMINATEDATE >@FEDate OR isnull(B.FTERMINATEDATE,'') ='') +AND (FCLOSEDATE>@FEDate OR ISNULL(FCLOSEDATE,'')='')--رڿʼ֮ǰݲ +AND A.FDATE <=@FEDate --AND A.FBILLNO='SO1909200018' +ORDER BY A.FDATE ,A.FID,B.FENTRYID,B.FMATERIALID + + + +--δ +--select * +update t1 set t1.δ=δ+t2.fbaseoutqty +from #tmpSal t1 +inner join ( +SELECT TSR.FSOORDERNO,TSR.FSOENTRYID,TSE.FMATERIALID,sum(TSE.FBASEUNITQTY) fbaseoutqty +FROM T_SAL_OUTSTOCK TS INNER JOIN T_SAL_OUTSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_SAL_OUTSTOCKENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_SAL_OUTSTOCKFIN TSF ON TSE.FID = TSF.FID +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_MATERIALBASE TMB ON TSE.FMATERIALID = TMB.FMATERIALID +INNER JOIN T_SAL_OUTSTOCKENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID + +WHERE TS.FDATE>@FEDate and +( TS.FCANCELSTATUS = 'A' AND TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +group by TSR.FSOORDERNO,TSR.FSOENTRYID,TSE.FMATERIALID ) t2 on t2.FSOORDERNO =t1.۵ and t2.FSOENTRYID=t1.۷¼ and t1.=t2.FMATERIALID + +--۳˻ +--˻ +--select * +update t1 set t1.δ=δ+t2.fbaseoutqty +from #tmpSal t1 +inner join ( +SELECT TSE.FORDERNO,TSE.FSOENTRYID ,TSE.FMATERIALID,sum((TSE.FBASEUNITQTY)) fbaseoutqty +FROM T_SAL_RETURNSTOCK TS INNER JOIN T_SAL_RETURNSTOCKENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_SAL_RETURNSTOCKENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_SAL_RETURNSTOCKFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID +INNER JOIN T_BD_MATERIALBASE TMB ON TSE.FMATERIALID = TMB.FMATERIALID INNER JOIN T_SAL_RETURNSTOCKENTRY_R TSR ON TSR.FENTRYID = TSE.FENTRYID + +WHERE TS.FDATE>@FEDate +and ( TS.FCANCELSTATUS = 'A' AND TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +group by TSE.FORDERNO,TSE.FSOENTRYID ,TSE.FMATERIALID +) t2 on t2.FORDERNO =t1.۵ and t2.FSOENTRYID=t1.۷¼ and t1.=t2.FMATERIALID + + + +select ,, δ,FAUXPROPID,case when B.ֿ<>0 then B.ֿ else isnull(tms.FSTOCKID,0) end ֿ +into #tmpSal1 from #tmpSal B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +left join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) +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 #tmpSal3 from #tmpSal1 B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +--left join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) +--LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = 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 ) + +order by + + + +select ,sum(), sum(δ)δ ,FAUXPROPID, ֿ +into #tmpSal2 from #tmpSal3 +group by ֿ,,FAUXPROPID +order by ֿ,,FAUXPROPID + +--۶ܶ +UPDATE t1 set t1.ܶ=t2.δ +from #Stock_Status_temp t1 +inner join #tmpSal2 t2 on t1.=t2. and t1.ֿ=t2.ֿ and t1.װ=T2.FAUXPROPID + + +--ݾ + +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 װ,(δ) +from #tmpSal2 TSE +INNER JOIN T_BD_MATERIAL TM ON (TM.FMATERIALID = TSE. ) + +inner join T_BD_MATERIAL_L TML on TM.FMATERIALID =TML.FMATERIALID and TML.FLOCALEID =2052 +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TSE.ֿ AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + +--select * from #tmpSal2 TSE +where not exists(select * from #Stock_Status_temp t2 where TSE.=t2. and TSE.ֿ=t2.ֿ and t2.װ=TSE.FAUXPROPID) + +--******************************************* + + + +--; +--************************************************ + +--ɹ +select ddd.FPurchaseOrgID fstockorgid, ddd.FBILLNO ɹ ,ddd.FID AS ɹ , B.FENTRYID ɹ¼,b.FMATERIALID , +ISNULL(b.FAUXPROPID, 0) fauxpropid, ddd.FDATE fdate, TMS.FSTOCKID ֿ, FBASEUNITQTY ɹ , +FREMAINSTOCKINQTY ʣ,FBASESTOCKINQTY ,ddd.FCLOSEDATE +into #tmppoorder +FROM t_pur_poorderentry b +INNER JOIN t_pur_poorder ddd ON (ddd.FID = b.FID AND FbusinessType NOT IN ('ZCCG', 'FYCG')) +INNER JOIN t_pur_poorderentry_r r ON b.fentryid = r.fentryid +INNER JOIN t_pur_poorderentry_d td ON b.fentryid = td.fentryid +INNER JOIN T_BD_MATERIALSTOCK TMS ON b.FMATERIALID = TMS.FMATERIALID +WHERE (ddd.FPurchaseOrgID IN (1) AND (((ddd.FPurchaseOrgID IN (1)) +AND (ddd.FDATE <=@FEDate)) AND ddd.fdocumentStatus = 'C')) +AND (b.FTERMINATEDATE >@FEDate OR isnull(b.FTERMINATEDATE,'') ='') +AND (ddd.FCLOSEDATE>@FEDate or isnull(ddd.FCLOSEDATE,'')='') + +--ⵥ +--select * + +update t1 set t1.ʣ=ʣ+t2.fbaseinqty +from #tmppoorder t1 +inner join ( + SELECT TSE.FMATERIALID , tse.FPOORDERENTRYID,tse.FPOORDERNO ,SUM(TSE.FBASEUNITQTY) fbaseinqty + FROM T_STK_INSTOCK TS INNER JOIN T_STK_INSTOCKENTRY TSE ON TSE.FID = TS.FID + + INNER JOIN T_STK_INSTOCKENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) + INNER JOIN T_STK_INSTOCKENTRY_LK TSEL ON ( TSE.FENTRYID = TSEL.FENTRYID) + INNER JOIN T_STK_INSTOCKFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + WHERE 1=1 AND TS.FDATE > @FEDate + and (TS.FSTOCKORGID IN (1) ) AND TM.FFORBIDSTATUS = 'A' AND TS.FCANCELSTATUS = 'A' AND TS.FDOCUMENTSTATUS IN ('C') + group by TSE.FPOORDERNO,TSE.FPOORDERENTRYID ,TSE.FMATERIALID +)t2 on t2.FPOORDERNO =t1.ɹ and t2.FPOORDERENTRYID=t1.ɹ¼ and t1.=t2.FMATERIALID + + +--ϵ + --select * +update t1 set t1.ʣ=ʣ-t2.fbaseinqty +from #tmppoorder t1 +INNER JOIN( + SELECT tse.FPOORDERENTRYID,tse.FORDERNO ,TSE.FMATERIALID fmaterialid, sum( TSE.FBASEUNITQTY) fbaseinqty + + FROM T_PUR_MRB TS INNER JOIN T_PUR_MRBENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_PUR_MRBENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) + INNER JOIN T_PUR_MRBFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_MATERIALBASE TMB ON TM.FMATERIALID = TMB.FMATERIALID + WHERE 1=1 and (TS.FDATE >@FEDate) + AND TS.FDOCUMENTSTATUS IN ('C') AND TM.FFORBIDSTATUS = 'A' AND TS.FCANCELSTATUS = 'A' AND (TSE.FSTOCKID > 0) + AND TSF.FISGENFORIOS = '0'AND (TSE.FSTOCKFLAG = '1' OR (TS.FMRTYPE = 'B' AND TMB.FISINVENTORY = '1') ) + group by tse.FPOORDERENTRYID,tse.FORDERNO ,TSE.FMATERIALID +)t2 on t2.FORDERNO =t1.ɹ and t2.FPOORDERENTRYID=t1.ɹ¼ and t1.=t2.FMATERIALID + + +--º; + +select ,ɹ, ʣ,FAUXPROPID,case when B.ֿ<>0 then B.ֿ else isnull(tms.FSTOCKID,0) end ֿ +into #tmppoorder1 from #tmppoorder B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +left + join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B.ֿ AND TSL.FLOCALEID = 2052) +--WHERE (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) and TSK.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +order by + + + + +select ,ɹ, ʣ,FAUXPROPID, ֿ +into #tmppoorder3 from #tmppoorder1 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 ) + +order by + + + + +select ,sum(ɹ)ɹ, sum(ʣ)ʣ ,FAUXPROPID, ֿ +into #tmppoorder2 from #tmppoorder3 +group by ֿ,,FAUXPROPID +order by ֿ,,FAUXPROPID + + +--; +UPDATE t1 set t1.;=t2.ʣ +from #Stock_Status_temp t1 +inner join #tmppoorder2 t2 on t1.=t2. and t1.ֿ=t2.ֿ and t1.װ=T2.FAUXPROPID + +--ݾ + +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 װ,(ʣ) +from #tmppoorder2 TSE +INNER JOIN T_BD_MATERIAL TM ON (TM.FMATERIALID = TSE. ) +inner join T_BD_MATERIAL_L TML on TM.FMATERIALID =TML.FMATERIALID and TML.FLOCALEID =2052 +INNER + JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TSE.ֿ AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + +--select * from #tmpSal2 TSE +where ʣ<>0 AND + not exists(select * from #Stock_Status_temp t2 where TSE.=t2. and TSE.ֿ=t2.ֿ and t2.װ=TSE.FAUXPROPID) + + + + + +--************************************************ + +-- +--************************************************* +--ѯֹ֮ǰ +select (MO.FBILLNO) ,ME.FPRODUCTTYPE , +(MO.FID) ,(ME.FENTRYID) ¼,MA.FCONVEYDATE,ME.FMATERIALID , +isnull(ME.FSTOCKID,0) ֿ,ME.FAUXPROPID ,MO.FDATE,ME.FSEQ,(ME.FQTY) , +--MQ.FBASENOSTOCKINQTY δ +(CASE WHEN (MQ.FBASENOSTOCKINQTY)>0 THEN (MQ.FBASENOSTOCKINQTY) else 0 end) as δ,MQ.FBASERESTKQTY ˿ + +into #tmpMO +from T_PRD_MO MO +inner join T_PRD_MOENTRY ME ON MO.FID =ME.FID +left JOIN T_PRD_MOENTRY_A MA ON MA.FID =ME.FID AND ME.FENTRYID =MA.FENTRYID +left JOIN T_PRD_MOENTRY_Q MQ ON MQ.FID =ME.FID AND ME.FENTRYID =MQ.FENTRYID +WHERE 1=1 AND MO.FCANCELSTATUS='A' AND MO.FDOCUMENTSTATUS='C' AND ME.FPRODUCTTYPE =1 +--AND MO.FBILLNO IN('MO1909090271' ,'MO1905070262') +AND MO.FDATE <=@FEDate AND ISNULL(MA.FCONVEYDATE,'')<>'' +AND (FCLOSEDATE>@FEDate OR ISNULL(FCLOSEDATE,'')='') + + +--ֹ֮ɵⵥ +--select * +update t1 set t1.δ=δ+t2.fbaseInqty +from #tmpMO t1 +inner join( + SELECT TSE.FMATERIALID , TSE.FMOBILLNO,TSE.FMOID,TSE.FMOENTRYID,TSE.FMOENTRYSEQ,sum(TSE.FBASEREALQTY) fbaseInqty + FROM T_PRD_INSTOCK TS INNER JOIN T_PRD_INSTOCKENTRY TSE ON TSE.FID = TS.FID + LEFT OUTER JOIN T_PRD_INSTOCKENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + WHERE 1=1 + AND TS.FDATE > @FEDate AND (TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) + AND TM.FFORBIDSTATUS = 'A' AND TS.FCANCELSTATUS = 'A' + --AND TS.FBILLNO='MM1909090128' + group by TSE.FMOBILLNO,TSE.FMOID,TSE.FMOENTRYID,TSE.FMOENTRYSEQ,TSE.FMATERIALID + --order by TSE.FMOBILLNO,TSE.FMOID,TSE.FMOENTRYID,TSE.FMOENTRYSEQ,TSE.FMATERIALID +) t2 on t1.=t2.FMOID and t1.¼=t2.FMOENTRYID and t1.=t2.FMATERIALID + +--ֹ֮ɵ˿ⵥ +--select * +update t1 set t1.δ=δ-t2.fbaseOutqty +from #tmpMO t1 +inner join( + SELECT TSE.FMATERIALID fmaterialid, TSE.FMOBILLNO,TSE.FMOID,TSE.FMOENTRYID,TSE.FMOENTRYSEQ,SUM(TSE.FBASEREALQTY) fbaseOutqty + FROM T_PRD_RESTOCK TS INNER JOIN T_PRD_RESTOCKENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_PRD_RESTOCKENTRY_A TSEA ON TSE.FEntryID = TSEA.FEntryID + LEFT OUTER JOIN T_PRD_RESTOCKENTRY_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + where 1=1 + AND TS.FDATE > @FEDate + AND (TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) AND TM.FFORBIDSTATUS = 'A' + AND TS.FCANCELSTATUS = 'A' AND TS.FEntrustRetStockId = 0 + group by TSE.FMOBILLNO,TSE.FMOID,TSE.FMOENTRYID,TSE.FMOENTRYSEQ,TSE.FMATERIALID +) t2 on t1.=t2.FMOID and t1.¼=t2.FMOENTRYID and t1.=t2.FMATERIALID + + +--º + +select ,, δ,FAUXPROPID,case when B.ֿ<>0 then B.ֿ else isnull(tms.FSTOCKID,0) end ֿ +into #tmpMO1 from #tmpMO B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +left join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B.ֿ AND TSL.FLOCALEID = 2052) +--WHERE (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) and TSK.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +order by + + + +select ,, δ,FAUXPROPID, ֿ +into #tmpMO3 from #tmpMO1 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 ) + +order by + + + +select ,sum(), sum(δ)δ ,FAUXPROPID, ֿ +into #tmpMO2 from #tmpMO3 +group by ֿ,,FAUXPROPID +order by ֿ,,FAUXPROPID + +-- +UPDATE t1 set t1.=t2.δ +from #Stock_Status_temp t1 +inner join #tmpMO2 t2 on t1.=t2. and t1.ֿ=t2.ֿ and t1.װ=T2.FAUXPROPID + +--ݾ + +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 װ,(δ) +from #tmpMO2 TSE +INNER JOIN T_BD_MATERIAL TM ON (TM.FMATERIALID = TSE. ) +inner join T_BD_MATERIAL_L TML on TM.FMATERIALID =TML.FMATERIALID and TML.FLOCALEID =2052 +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TSE.ֿ AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + +--select * from #tmpSal2 TSE +where not exists(select * from #Stock_Status_temp t2 where TSE.=t2. and TSE.ֿ=t2.ֿ and t2.װ=TSE.FAUXPROPID) + +--***************end********************************** + + +-- +--******************start******************************* + +----ѯֹ֮ǰϵ + +SELECT TS.FSTOCKORGID fstockorgid, TS.FBILLNO ϵ ,TS.FID AS , TSE.FENTRYID Ϸ¼,TSE.FMATERIALID , + ISNULL(TSE.FAUXPROPID, 0) fauxpropid, TS.FDATE fdate, TSE.FSTOCKID ֿ, FBASEUNITQTY , +CASE WHEN (FBASEUNITQTY-(TSES.FINSTOCKBASEQTY + TSES.FRETURNBASEQTY))>0 THEN (FBASEUNITQTY-(TSES.FINSTOCKBASEQTY + TSES.FRETURNBASEQTY)) ELSE 0 END δ, +(FBASEUNITQTY-FINSTOCKBASEQTY +FRETURNBASEQTY) +INTO #TMPRECEIVE +FROM T_PUR_RECEIVE TS +INNER JOIN T_PUR_RECEIVEENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_PUR_RECEIVEENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_PUR_RECEIVEENTRY_S TSES ON (TSE.FID = TSES.FID AND TSE.FENTRYID = TSES.FENTRYID) +INNER JOIN T_PUR_RECEIVEENTRY_R TSER ON (TSE.FID = TSER.FID AND TSE.FENTRYID = TSER.FENTRYID) +INNER JOIN T_PUR_RECEIVEFIN TSF ON TSE.FID = TSF.FID +WHERE 1=1 and (TS.FDATE <= @FEDate) +--and ts.FBILLNO='T61908290024-' and FRETURNBASEQTY<>0 +AND( FEXECUTEDATE>@FEDate OR ISNULL(FEXECUTEDATE,'')='')--ִ +and (TS.FSTOCKORGID IN (1)) +AND (TSE.FSTOCKID > 0)AND TSE.FSTOCKFLAG = '0' + +-- AND TS.FDOCUMENTSTATUS IN ('C') +------ѯֹ֮ǰⵥ + +--select * +update t1 set t1.δ=δ+t2.fbaseInqty +from #TMPRECEIVE t1 +INNER JOIN ( + SELECT TSE.FMATERIALID , TSE.FSRCBILLNO,TSEL .FSBILLID ,TSEL.FSID ,SUM(TSE.FBASEUNITQTY) fbaseinqty + FROM T_STK_INSTOCK TS INNER JOIN T_STK_INSTOCKENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_STK_INSTOCKENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) + INNER JOIN T_STK_INSTOCKENTRY_LK TSEL ON ( TSE.FENTRYID = TSEL.FENTRYID) + INNER JOIN T_STK_INSTOCKFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + WHERE 1=1 AND TS.FDATE >@FEDate + and (TS.FSTOCKORGID IN (1) ) AND TM.FFORBIDSTATUS = 'A' AND TS.FCANCELSTATUS = 'A' + group by TSE.FSRCBILLNO,TSEL .FSBILLID ,TSEL.FSID,TSE.FMATERIALID + --order by TSE.FMOBILLNO,TSE.FMOID,TSE.FMOENTRYID,TSE.FMOENTRYSEQ,TSE.FMATERIALID +) t2 on t1.=t2.FSBILLID and t1.Ϸ¼=t2.FSID and t1.=t2.FMATERIALID + +-- +--ѯֹ֮ϵ +--select * +update t1 set t1.δ=δ+t2.fbaseInqty +from #TMPRECEIVE t1 +INNER JOIN ( + SELECT TSE.FMATERIALID , TSE.FSRCBILLNO,TSEL .FSBILLID ,TSEL.FSID ,SUM(TSE.FBASEUNITQTY) fbaseinqty + FROM T_PUR_MRB TS INNER JOIN T_PUR_MRBENTRY TSE ON TSE.FID = TS.FID + INNER JOIN T_PUR_MRBENTRY_F TSEF ON (TSE.FID = TSEF.FID AND TSE.FENTRYID = TSEF.FENTRYID) + INNER JOIN T_PUR_MRBENTRY_LK TSEL ON ( TSE.FENTRYID = TSEL.FENTRYID) + INNER JOIN T_PUR_MRBFIN TSF ON TSE.FID = TSF.FID INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + INNER JOIN T_BD_MATERIALBASE TMB ON TM.FMATERIALID = TMB.FMATERIALID + WHERE 1=1 AND TS.FDATE >@FEDate + and (TS.FSTOCKORGID IN (1) ) AND TM.FFORBIDSTATUS = 'A' AND TS.FCANCELSTATUS = 'A' + group by TSE.FSRCBILLNO,TSEL .FSBILLID ,TSEL.FSID,TSE.FMATERIALID + +) t2 on t1.=t2.FSBILLID and t1.Ϸ¼=t2.FSID and t1.=t2.FMATERIALID + + + +--º + +select ,, δ,FAUXPROPID,case when B.ֿ<>0 then B.ֿ else isnull(tms.FSTOCKID,0) end ֿ +into #TMPRECEIVE1 from #TMPRECEIVE B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +left join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B.ֿ AND TSL.FLOCALEID = 2052) +--WHERE (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) and TSK.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +order by + + + + +select ,, δ,FAUXPROPID, ֿ +into #TMPRECEIVE3 + from #TMPRECEIVE1 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 ) +order by + + +select ,sum(), sum(δ)δ ,FAUXPROPID, ֿ +into #TMPRECEIVE2 from #TMPRECEIVE3 +group by ֿ,,FAUXPROPID +order by ֿ,,FAUXPROPID + + +-- +UPDATE t1 set t1.=t2.δ +from #Stock_Status_temp t1 +inner join #TMPRECEIVE2 t2 on t1.=t2. and t1.ֿ=t2.ֿ and t1.װ=T2.FAUXPROPID + +--ݾ + +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 װ,(δ) +from #TMPRECEIVE2 TSE +INNER JOIN T_BD_MATERIAL TM ON (TM.FMATERIALID = TSE. ) +inner join T_BD_MATERIAL_L TML on TM.FMATERIALID =TML.FMATERIALID and TML.FLOCALEID =2052 +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TSE.ֿ AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + +--select * from #tmpSal2 TSE +where δ<>0 AND + not exists(select * from #Stock_Status_temp t2 where TSE.=t2. and TSE.ֿ=t2.ֿ and t2.װ=TSE.FAUXPROPID) + + +--****************end********************************* + +--*********************δ***************************************** + +--δ() +--***********************δ()***************************** +--ѯֹ֮ǰ +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 +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֮깤Ϊ׼깤 +--AND (MA.FCLOSEDATE>@FEDate OR ISNULL(MA.FCLOSEDATE,'')='')--2020-04-27֮ǰǽ᰸ + +--and PP.FBILLNO ='PP1910150215' + + --ѯֹ֮еϵ + --select δ,t2.fbaseOutqty, * +update t1 set t1.δ=δ+t2.fbaseOutqty +from #tmpPPBOM t1 +INNER JOIN ( +SELECT tse.FMOID,tse.FMOBILLNO,tse.FMOENTRYID,tse.FPPBOMENTRYID,tse.FPPBOMBILLNO, +TSE.FMATERIALID,sum(TSED.FBASESTOCKACTUALQTY) fbaseOutqty +FROM T_PRD_PICKMTRL TS INNER JOIN T_PRD_PICKMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_PRD_PICKMTRLDATA_A TSED ON TSED.FENTRYID = TSE.FENTRYID +LEFT OUTER JOIN T_PRD_PICKMTRLDATA_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + +WHERE (TS.FDATE> @FEDate) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A') +group by tse.FMOID,tse.FMOBILLNO,tse.FMOENTRYID,tse.FPPBOMENTRYID,tse.FPPBOMBILLNO,TSE.FMATERIALID +) t2 on t1.=t2.FMOBILLNO and t1.¼=t2.FMOENTRYID +and t1.ϵ=t2.FPPBOMBILLNO and t1.ϵ¼=t2.FPPBOMENTRYID and t1.=t2.FMATERIALID + + + +--ºδ +--select * from #tmpPPBOM + +select ,Ӧ, δ,FAUXPROPID,case when B.ֿ<>0 then B.ֿ else isnull(tms.FSTOCKID,0) end ֿ +into #tmpPPBOM1 from #tmpPPBOM B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +left join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B.ֿ AND TSL.FLOCALEID = 2052) +--WHERE (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) and TSK.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +order by + + + +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.ֿ ) +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 ) +order by + + + +select ,sum(Ӧ)Ӧ, sum(δ)δ ,FAUXPROPID, ֿ +into #tmpPPBOM2 from #tmpPPBOM3 +group by ֿ,,FAUXPROPID +order by ֿ,,FAUXPROPID + +--δ() +UPDATE t1 set t1.δ=t2.δ +from #Stock_Status_temp t1 +inner join #tmpPPBOM2 +t2 on t1.=t2. and t1.ֿ=t2.ֿ and t1.װ=T2.FAUXPROPID + +--ݾ + +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 װ,(δ) +from #tmpPPBOM2 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 +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID= TSE.ֿ AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + +--select * from #tmpSal2 TSE +where δ>0 AND + not exists(select * from #Stock_Status_temp t2 where TSE.=t2. and TSE.ֿ=t2.ֿ and t2.װ=TSE.FAUXPROPID) + +--*************************δ()***************************************** + + + +--δ(ί) +--*************************δ(ί)*************************** +--ѯֹ֮ǰίⵥ +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 #tmpSubBOM +from T_SUB_REQORDER MO +inner join T_SUB_REQORDERENTRY 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_SUB_PPBOM PP on PP.FSUBREQID =MO.FID AND ME.FENTRYID =PP.FSUBREQENTRYID +inner join T_SUB_PPBOMENTRY PE on PP.FID =PE.FID +left join T_SUB_PPBOMENTRY_Q PQ on PP.FID =PQ.FID AND PE.FENTRYID =PQ.FENTRYID +left join T_SUB_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(ME.FCONVEYDATE,'')<>'') +AND (ME.FCLOSEDATE>@FEDate OR ISNULL(ME.FCLOSEDATE,'')='') + + + + + --ѯֹ֮еϵ + --select δ,t2.fbaseOutqty, * +update t1 set t1.δ=δ+t2.fbaseOutqty +from #tmpSubBOM t1 +INNER JOIN ( +SELECT tse.FSUBREQID,tse.FSUBREQBILLNO,tse.FSUBREQENTRYID,tse.FPPBOMENTRYID,tse.FPPBOMBILLNO, +TSE.FMATERIALID,sum(TSE.FBASESTOCKACTUALQTY) fbaseOutqty +FROM T_SUB_PICKMTRL TS INNER JOIN T_SUB_PICKMTRLDATA TSE ON TSE.FID = TS.FID +INNER JOIN T_SUB_PICKMTRLDATA_A TSED ON TSED.FENTRYID = TSE.FENTRYID +LEFT OUTER JOIN T_SUB_PICKMTRLDATA_L TSL ON (TSE.FENTRYID = TSL.FENTRYID AND FLOCALEID = 2052) +INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + +WHERE (TS.FDATE> @FEDate) +AND (((TS.FSTOCKORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) +AND TM.FFORBIDSTATUS = 'A') AND TS.FCANCELSTATUS = 'A') +group by tse.FSUBREQID,tse.FSUBREQBILLNO,tse.FSUBREQENTRYID,tse.FPPBOMENTRYID,tse.FPPBOMBILLNO,TSE.FMATERIALID +) t2 on t1.ίⵥ=t2.FSUBREQBILLNO and t1.ίⵥ¼=t2.FSUBREQENTRYID +and t1.ϵ=t2.FPPBOMBILLNO and t1.ϵ¼=t2.FPPBOMENTRYID and t1.=t2.FMATERIALID + + + +--ºδ +--select * from #tmpPPBOM + +select ,Ӧ, δ,FAUXPROPID,case when B.ֿ<>0 then B.ֿ else isnull(tms.FSTOCKID,0) end ֿ + into #tmpSubBOM1 from #tmpSubBOM B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +left join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B.ֿ AND TSL.FLOCALEID = 2052) +--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 ) +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 ) +order by + + + +select ,sum(Ӧ)Ӧ, sum(δ)δ ,FAUXPROPID, ֿ +into #tmpSubBOM2 from #tmpSubBOM3 +group by ֿ,,FAUXPROPID +order by ֿ,,FAUXPROPID + + +--δ(ί) +UPDATE t1 set t1.δ=isnull(t1.δ,0)+isnull(t2.δ,0) +from #Stock_Status_temp t1 +inner join #tmpSubBOM2 +t2 on t1.=t2. and t1.ֿ=t2.ֿ and t1.װ=T2.FAUXPROPID + + +--ݾ + +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 װ,(δ) +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 +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID= TSE.ֿ AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + +--select * from #tmpSal2 TSE +where δ>0 AND + not exists(select * from #Stock_Status_temp t2 where TSE.=t2. and TSE.ֿ=t2.ֿ and t2.װ=TSE.FAUXPROPID) + + + + +--*********************δ(ί)*end******************************* + +-- --ֹѯδ +-- UPDATE t1 set t1.δ=isnull(t1.δ,0)+isnull(t1.ܶ,0) +--from #Stock_Status_temp t1 +--where isnull(t1.ܶ,0)<>0 + +--**********************end******************************* + + + + +--깺δת +--*******************strat***************************** + +--ѯֹ֮ǰвɹ + + SELECT TS.FAPPLICATIONORGID fstockorgid, TS.FBILLNO 뵥 ,TS.FID AS ,TSE.FENTRYID ¼,TSE.FMATERIALID , + ISNULL(TSE.FAUXPROPID, 0) FAUXPROPID, TS.FAPPLICATIONDATE fdate, TMS.FSTOCKID ֿ, + FBASEUNITQTY ,TSEF.FREMAINQTY as δת + INTO #TMPREQ +FROM T_PUR_REQUISITION TS +INNER JOIN T_PUR_REQENTRY TSE ON TSE.FID = TS.FID +INNER JOIN T_PUR_REQENTRY_R TSEF ON (TSE.FID = TSEF.FID +AND TSE.FENTRYID = TSEF.FENTRYID) +INNER JOIN T_PUR_REQENTRY_S TSES ON (TSE.FID = TSES.FID AND TSE.FENTRYID = TSES.FENTRYID) +LEFT JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID=TM.FMATERIALID +LEFT JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +WHERE 1=1 +--AND ts.FBILLNO ='SQ1910100001'AND FORDERBASEQTY<>FBASEUNITQTY AND TS.FCLOSESTATUS<>'B' + AND (TS.FAPPLICATIONDATE <=@FEDate) + AND (TS.FCLOSEDATE>@FEDate or isnull(TS.FCLOSEDATE,'')='') + AND (TS.FAPPLICATIONORGID IN (1) AND TS.FDOCUMENTSTATUS IN ('C')) + + + + --ѯֹ֮вɹ + --select * +update t1 set t1.δת=δת+t2.fbaseOrdqty +from #TMPREQ t1 +INNER JOIN ( + SELECT t1r.FSRCBILLNO,t1k.FSBILLID,t1k.FSID ,t1.FMATERIALID,sum(t1.FBASEUNITQTY) fbaseOrdqty + FROM T_PUR_POORDER t0 + INNER JOIN T_PUR_POORDERENTRY t1 on (t0.FID = t1.FID) + INNER JOIN T_PUR_POORDERENTRY_R t1R ON(t1R.FID = t1.FID AND t1.FENTRYID = t1R.FENTRYID) + INNER JOIN T_PUR_POORDERENTRY_LK t1k ON(t1.FENTRYID = t1k.FENTRYID) + INNER JOIN T_BD_MATERIAL TM ON t1.FMATERIALID = TM.FMATERIALID + WHERE t0.FDATE>@FEDate and + ( t0.FCANCELSTATUS = 'A' AND TM.FFORBIDSTATUS = 'A') + group by t1r.FSRCBILLNO,t1k.FSBILLID,t1k.FSID ,t1.FMATERIALID + +) t2 on t1.=t2.FSBILLID and t1.¼=t2.FSID and t1.=t2.FMATERIALID + + +--º + + +select ,, δת,FAUXPROPID,case when B.ֿ<>0 then B.ֿ else isnull(tms.FSTOCKID,0) end ֿ +into #TMPREQ1 from #TMPREQ B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +left join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B.ֿ AND TSL.FLOCALEID = 2052) +--WHERE (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) and TSK.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +order by + + +select ,, δת,FAUXPROPID, ֿ +into #TMPREQ3 from #TMPREQ1 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 ) +order by + + +select ,sum(), sum(δת)δת ,FAUXPROPID, ֿ +into #TMPREQ2 from #TMPREQ3 +group by ֿ,,FAUXPROPID +order by ֿ,,FAUXPROPID + +--깺δת +UPDATE t1 set t1.깺δת=t2.δת +from #Stock_Status_temp t1 +inner join #TMPREQ2 t2 on t1.=t2. and t1.ֿ=t2.ֿ and t1.װ=T2.FAUXPROPID + +--ݾ + +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 װ,(δת) +from #TMPREQ2 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 +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TSE.ֿ AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + +--select * from #tmpSal2 TSE +where δת<>0 AND + not exists(select * from #Stock_Status_temp t2 where TSE.=t2. and TSE.ֿ=t2.ֿ and t2.װ=TSE.FAUXPROPID) + + +--***************************************************** + +--ռ + +--******************************************************** + select TSE.FMATERIALID ,(TSE.FBASEQTY)FBASEQTY, + case when TSE.FSTOCKID<>0 then TSE.FSTOCKID else isnull(tms.FSTOCKID,0)end FSTOCKID,TSE.FAUXPROPID + into #TMPLINK from T_PLN_RESERVELINK TS + INNER JOIN T_PLN_RESERVELINKENTRY TSE ON TS.FID=TSE.FID + INNER JOIN T_BD_MATERIAL TM ON TSE.FMATERIALID = TM.FMATERIALID + LEFT JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID + LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = TSE.FSTOCKID ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TSE.FSTOCKID AND TSL.FLOCALEID = 2052) + where TSE.FBASEQTY<>0 + --and (TM.FNUMBER >=@FSWL AND TM.FNUMBER <=@FEWL) and TSK.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) +--group by TSE.FSTOCKID,TSE.FMATERIALID,FAUXPROPID +order by FSTOCKID,TSE.FMATERIALID,FAUXPROPID + + +select ,sum(FBASEQTY)FBASEQTY,FAUXPROPID, B.FSTOCKID ֿ +into #TMPLINK1 from #TMPLINK B +left JOIN T_BD_MATERIAL TM ON (B. = TM.FMATERIALID ) +--left join T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +LEFT JOIN T_BD_STOCK TSK ON ( TSK.FMASTERID = B.FSTOCKID ) +--LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = B.FSTOCKID AND TSL.FLOCALEID = 2052) +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 ) +group by b.FSTOCKID,,FAUXPROPID +order by b.FSTOCKID,,FAUXPROPID + + + + + +--ռ +UPDATE t1 set t1.ռ=t2.FBASEQTY +from #Stock_Status_temp t1 +inner join #TMPLINK1 t2 on t1.=t2. and t1.ֿ=t2.ֿ + and t1.װ=T2.FAUXPROPID + +--ݾռ + +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 װ,(FBASEQTY) +from #TMPLINK1 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 +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +INNER JOIN T_BD_STOCK TBS ON (TBS.FMASTERID = TSE.ֿ ) +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TSE.ֿ AND TSL.FLOCALEID = 2052) +LEFT OUTER JOIN T_BD_FLEXSITEMDETAILV t3 on TSE.FAUXPROPID=t3.FID +LEFT OUTER JOIN T_BAS_ASSISTANTDATAENTRY_L t4 on t3.FF100001=t4.FENTRYID +LEFT OUTER JOIN T_BD_AUXPTYVALUEENTITY t5 on t3.FF100001=t5.FAUXPTYID and t3.FID =t5.FAUXPTYVALUEID + +--select * from #tmpSal2 TSE +where FBASEQTY<>0 AND + not exists(select * from #Stock_Status_temp t2 where +TSE.=t2. and TSE.ֿ=t2.ֿ and t2.װ=TSE.FAUXPROPID) + + + + + +--*********************ռEND*********************************** + + +--ÿ +--******************************************************* + +UPDATE t1 set t1.ÿ=isnull(ĩ,0)+isnull(t1.,0)+isnull(;,0)-isnull(δ,0)-isnull(ܶ,0) +from #Stock_Status_temp t1 + +--*********************ÿEND********************************** + + --BOM +select =IDENTITY(INT,1,1), ϴ , , ͺ , ɱ , ڽ , + ڲɹ , ں , ĩ , ; , , , +δ , ,۳ ,ֿⲦ ,ֿⲦ,깺δת , +ܶ ,ռ ,ÿ , ֿ ,ֿ , װʽ , Ʒ into #Stock_Bom +from ( + select ϴ , t2. , ͺ , ɱ , ڽ , + ڲɹ , ں , ĩ , ; , , , +δ , ,۳ ,ֿⲦ ,ֿⲦ,깺δת , +ܶ ,ռ ,ÿ , ֿ ,ֿ , װʽ , t1.FOrderNum Ʒ +,FOrderNum,FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6 +from #YC_T_MRP t1 +INNER join #Stock_Status_temp t2 on t1.ϱ=t2.ϴ +union all +select t1.ϱ ϴ , t2.FNAME , t2.FSPECIFICATION ͺ , isnull(TM.FOLDNUMBER,'') ɱ , +0 ڽ , 0 ڲɹ , 0 ں , 0 ĩ ,0 ; ,0 , 0 , +0 δ , 0 ,0 ۳ ,0 ֿⲦ ,0 ֿⲦ,0 깺δת , 0 ܶ , +0 ռ ,0 ÿ , ts.FNUMBER as ֿ ,tsl.FNAME as ֿ , ''װʽ, t1.FOrderNum Ʒ +,FOrderNum,FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6 +from #YC_T_MRP t1 +INNER JOIN T_BD_MATERIAL TM ON (TM.FMATERIALID = t1.FMATERIALID ) +INNER JOIN T_BD_MATERIAL_L t2 ON (t2.FMATERIALID = t1.FMATERIALID ) +INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID +inner join T_BD_STOCK ts on tms.FSTOCKID=ts.FSTOCKID +LEFT OUTER JOIN T_BD_STOCK_L TSL ON (TSL.FSTOCKID = TS.FSTOCKID AND TSL.FLOCALEID = 2052) +where ϱ not in (select distinct ϴ from #Stock_Status_temp t2) +and TMS.FSTOCKID IN ( SELECT distinct FStockID FROM #tmpStockID ) + + )t + order by FOrderNum,FSEQ1,FSEQ2,FSEQ3,FSEQ4,FSEQ5,FSEQ6 + +select * from #Stock_Bom where like '%'+@FName+'%' + +drop table #TMP +drop table #TMP1 +DROP TABLE #TMPLINK +DROP TABLE #TMPLINK1 +drop table #TMP4 +drop table #TMP5 +drop table #TMP6 +drop table #TMP7 +drop table #TMP8 +drop table #tmpSal +drop table #tmpSal1 +drop table #tmpSal2 +drop table #tmpSal3 +drop table #tmpMO +drop table #tmpMO1 +drop table #tmpMO2 +drop table #tmpMO3 + +drop table #TMPREQ +drop table #TMPREQ1 +drop table #TMPREQ2 +drop table #TMPREQ3 +DROP TABLE #TMPRECEIVE +DROP TABLE #TMPRECEIVE1 +DROP TABLE #TMPRECEIVE2 +DROP TABLE #TMPRECEIVE3 +drop table #tmppoorder +drop table #tmppoorder1 +drop table #tmppoorder2 +drop table #tmppoorder3 +drop table #tmpPPBOM +drop table #tmpPPBOM1 +drop table #tmpPPBOM2 +drop table #tmpPPBOM3 +drop table #tmpSUBBOM +drop table #tmpSUBBOM1 +drop table #tmpSUBBOM2 +drop table #tmpSUBBOM3 +drop table #Stock_Status_temp + +set nocount off diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/sql/创建临时表.sql b/HW.PythonPlugIn/ProductionMaterialsReport/sql/创建临时表.sql new file mode 100644 index 0000000..13bd909 --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/sql/创建临时表.sql @@ -0,0 +1,88 @@ +/* + Navicat Premium Data Transfer + + Source Server : sql server + Source Server Type : SQL Server + Source Server Version : 15002080 + Source Host : .:1433 + Source Catalog : AIS20231110222743 + Source Schema : dbo + + Target Server Type : SQL Server + Target Server Version : 15002080 + File Encoding : 65001 + + Date: 06/02/2024 11:40:17 +*/ + + +-- ---------------------------- +-- Table structure for TMP123123123123123 +-- ---------------------------- +IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[TMP123123123123123]') AND type IN ('U')) + DROP TABLE [dbo].[TMP123123123123123] +GO + +CREATE TABLE [dbo].[TMP123123123123123] ( + [FIDENTITYID] bigint NOT NULL, + [FID] int NOT NULL, + [FSEQ] int NULL, + [FENTRYID] int NOT NULL, + [FDATE] datetime NULL, + [FPLANSTARTDATE] datetime NULL, + [FPLANFINISHDATE] datetime NULL, + [FSALEORDERNO] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [FBILLNO] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [FQTY] decimal(23,10) NOT NULL, + [FYIELDRATE] decimal(19,6) NOT NULL, + [FROUTINGID] int NULL, + [PRODUCTTYPE] varchar(6) COLLATE Chinese_PRC_CI_AS NOT NULL, + [ProMaterialId] int NULL, + [PrdUnitId] int NULL, + [FPPBOMBILLNO] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [FBOMENTRYID] int NULL, + [ProMnemoniccode] nvarchar(20) COLLATE Chinese_PRC_CI_AS NULL, + [ProNumber] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [ProName] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL, + [ProSpecification] nvarchar(510) COLLATE Chinese_PRC_CI_AS NULL, + [ProUnitName] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [FMATERIALID] int NULL, + [FUnitNeedQty] decimal(38,15) NULL, + [FNEEDQTY] decimal(23,10) NOT NULL, + [FUNITID] int NOT NULL, + [FBASEWIPQTY] decimal(23,10) NULL, + [FPICKEDQTY] decimal(23,10) NULL, + [FNOPICKEDQTY] decimal(23,10) NULL, + [FSTDQTY] decimal(23,10) NOT NULL, + [FMUSTQTY] decimal(23,10) NOT NULL, + [FMEMO] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL, + [FLossQty] decimal(38,10) NULL, + [FSCRAPQTY] decimal(23,10) NULL, + [FREPICKEDQTY] decimal(23,10) NULL, + [FWORKSHOPID] int NULL, + [FSTOCKID] int NULL, + [FSTOCKLOCID] int NULL, + [PPBOMStatus] varchar(8) COLLATE Chinese_PRC_CI_AS NOT NULL, + [MaterialNumber] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [MaterialName] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL, + [MaterialSpecification] nvarchar(510) COLLATE Chinese_PRC_CI_AS NULL, + [MaterialUnitName] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [Materialsrc] varchar(3) COLLATE Chinese_PRC_CI_AS NOT NULL, + [WORKSHOPNAME] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL, + [FMASTERID] int NULL, + [FUSEORGID] int NULL, + [BOMMEMO] nvarchar(255) COLLATE Chinese_PRC_CI_AS NULL, + [FSTOCKNAME] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [FBASEQTY] decimal(38,10) NULL, + [ROUTENAME] nvarchar(80) COLLATE Chinese_PRC_CI_AS NULL, + [FBASEINVQTY] decimal(23,10) NULL, + [FBASELACKQTY] decimal(23,10) NULL, + [FBASEONORDERQTY] decimal(23,10) NULL, + [StatusIs6] varchar(6) COLLATE Chinese_PRC_CI_AS NOT NULL, + [LOWEST6] int NOT NULL +) +GO + +ALTER TABLE [dbo].[TMP123123123123123] SET (LOCK_ESCALATION = TABLE) +GO + diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/sql/新BOM层级库存状态.sql b/HW.PythonPlugIn/ProductionMaterialsReport/sql/新BOM层级库存状态.sql new file mode 100644 index 0000000..5236da8 --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/sql/新BOM层级库存状态.sql @@ -0,0 +1,32 @@ +declare + @moBillNo varchar(100) + ,@salesBillNo varchar(100) + ,@startMaterialId int + ,@endMaterialId int +SET @moBillNo ='' +SET @salesBillNo ='' +SET @moBillNo = 0 +SET @moBillNo = 0 + +declare @FCloseBALDate varchar (30) +declare @FClosedate varchar (30) + +--ѯʼһڵĩ +If NOT Exists( + SELECT FORGID, MAX(FCLOSEDATE) fclosedate + FROM T_STK_CLOSEPROFILE + WHERE FORGID IN (1) AND FCATEGORY = 'STK' AND (FCLOSEDATE < @FSDate) + GROUP BY FORGID) +BEGIN + SET @FClosedate='2020-01-01' + SET @FCloseBALDate='2020-01-01' + --print @FClosedate +END +ELSE +BEGIN + --SET @FClosedate='2019-07-01' + SELECT @FClosedate= CONVERT(varchar (30), DATEADD(D, 1,MAX(FCLOSEDATE)),23) FROM + T_STK_CLOSEPROFILE WHERE ((FORGID IN (1) AND FCATEGORY = 'STK') AND (FCLOSEDATE < @FSDate)) GROUP BY FORGID + SET @FCloseBALDate=CONVERT(varchar (30), DATEADD(D, -1,@FClosedate),23) + --print @FClosedat +END diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/sql/生产投料查询表_20240206.sql b/HW.PythonPlugIn/ProductionMaterialsReport/sql/生产投料查询表_20240206.sql new file mode 100644 index 0000000..bb41244 --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/sql/生产投料查询表_20240206.sql @@ -0,0 +1,179 @@ + --IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].TMP123123123123123') AND type IN ('U')) + -- DROP TABLE [dbo].TMP123123123123123 + --GO + + declare @tableName varchar(80) + ,@seqFid varchar(80) + ,@proMaterialId int + ,@materialId int + ,@FBILLNO varchar(80) + ,@FPPBOMBILLNO varchar(80) + ,@FSALEORDERNO varchar(80) + ,@LCID int + + SET @tableName = 'TMP123123123123123' + SET @seqFid = 'ROW_NUMBER() OVER(ORDER BY t0.FID) AS FIDENTITYID' + SET @proMaterialId = '' + SET @materialId = '' + SET @FBILLNO = '' + SET @FPPBOMBILLNO = '' + SET @FSALEORDERNO = '' + SET @LCID = 2052 +/***********************生产订单关联信息start****************************/ + SELECT + --ROW_NUMBER() OVER(ORDER BY t0.FID) AS FIDENTITYID--1.行号 + t0.FID + ,t0e.FSEQ + ,t0e.FENTRYID + ,t0.FDATE --2.单据日期 + ,t0e.FPLANSTARTDATE--38.计划开工日期 + ,t0e.FPLANFINISHDATE--39.计划完工日期 + ,t0e.FSALEORDERNO --4.销售订单号 + ,t0.FBILLNO--7.生产任务单号 + ,t0e.FQTY--12.产品生产数量 + --,t0e.FSTOCKID--35.仓库 + --,t0e.FSTOCKLOCID--36.仓位 + ,t0e.FYIELDRATE + ,t0e.FROUTINGID + ,(CASE t0e.FPRODUCTTYPE WHEN 1 THEN '主产品' WHEN 2 THEN '主产品' WHEN 3 THEN '主产品' ELSE '' END) AS 'PRODUCTTYPE'--43.生产类型 + ,t0e.FMATERIALID AS 'ProMaterialId' + ,t0e.FUNITID AS 'PrdUnitId' + --,(CASE t1.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'ProMaterialsrc' --15.物料来源 + INTO #TMPMO_BASE_INFO + FROM + T_PRD_MO t0 + INNER JOIN T_PRD_MOENTRY t0e on t0e.FID = t0.FID + WHERE + t0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE t0.FBILLNO END) + AND t0e.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE t0e.FSALEORDERNO END) + AND t0e.FMATERIALID = (CASE WHEN @proMaterialId <> 0 THEN @proMaterialId ELSE t0e.FMATERIALID END) + + CREATE INDEX #TMPMO_BASE_INFO_INDEX_FENTRYID ON #TMPMO_BASE_INFO(FENTRYID); + + SELECT tt.* + ,(CASE t0e_a.FSTATUS WHEN 6 THEN '已结案'ELSE '' END) AS 'StatusIs6'--45.生产任务单结案否 + ,t1.FMNEMONICCODE AS 'ProMnemoniccode'--6.助记码 + ,t1.FNUMBER AS 'ProNumber'--8.产品编码 + ,t1_l.FNAME AS 'ProName'--9.产品名称 + ,t1_l.FSPECIFICATION AS 'ProSpecification'--10.产品规格型号 + ,t2_l.FNAME AS 'ProUnitName'--11.产品单位 + INTO #TmpTable0 + FROM #TMPMO_BASE_INFO tt + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = tt.FENTRYID + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = tt.ProMaterialId + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = tt.ProMaterialId AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = tt.PrdUnitId AND t2_l.FLOCALEID = @LCID + + DROP TABLE #TMPMO_BASE_INFO + + CREATE INDEX #TmpTable0_FENTRYID_INDEX ON #TmpTable0(FENTRYID); +/***********************生产订单关联信息end****************************/ + +/***********************生产用料清单关联信息start****************************/ + SELECT + tt.* + ,t0.FBILLNO AS 'FPPBOMBILLNO'--3.生产投料单号 + ,t0e.FMATERIALID + ,t0e.FENTRYID AS 'PPBOMENTRYID' + ,(t0e.FNUMERATOR / t0e.FDENOMINATOR) AS 'FUnitNeedQty' --18.物料单位用量 + ,t0e.FNEEDQTY --22.物料总需求 + ,t0e.FUNITID + ,t0e.FBOMENTRYID + ,t0e.FSTDQTY --标准用量 --29.标准数量 + ,t0e.FMUSTQTY --应发数量 --30.应发数量 + ,t0.FWORKSHOPID + ,(CASE t0.FDOCUMENTSTATUS WHEN 'A' THEN '创建' WHEN 'B' THEN '审核中' WHEN 'C' THEN '已审核' WHEN 'D' THEN '重新审核' WHEN 'Z' THEN '暂存' ELSE '' END) AS 'PPBOMStatus'--46.生产投料单状态 + INTO #TMPPPBOM_BASE_INFO + FROM + T_PRD_PPBOM t0 --生产用料清单 + INNER JOIN T_PRD_PPBOMENTRY t0e ON t0.FID = t0e.FID + INNER JOIN #TmpTable0 tt on t0.FMOENTRYID = tt.FENTRYID + WHERE + T0.FBILLNO = (CASE WHEN @FPPBOMBILLNO != '' THEN @FPPBOMBILLNO ELSE T0.FBILLNO END) + AND t0e.FMATERIALID = (CASE WHEN @materialId <> 0 THEN @materialId ELSE t0e.FMATERIALID END) + + CREATE INDEX #TMPPPBOM_BASE_INFO_PPBOMENTRYID_INDEX ON #TMPPPBOM_BASE_INFO(PPBOMENTRYID); + + SELECT tt.* + ,t0e_q.FBASEWIPQTY --23.当前在制品数量 + ,t0e_q.FPICKEDQTY --27.已领数量 + ,t0e_q.FNOPICKEDQTY --28.未领数量 + ,t0e_l.FMEMO --31.备注 + ,t0e_q.FPICKEDQTY * (100 - tt.FYIELDRATE) AS 'FLossQty'--32.损耗数量 + ,t0e_q.FSCRAPQTY --33.报废数量 + ,t0e_q.FREPICKEDQTY --37.补料数量 + ,t0e_c.FSTOCKID + ,t0e_c.FSTOCKLOCID + INTO #TmpTable1 + FROM #TMPPPBOM_BASE_INFO tt + LEFT JOIN T_PRD_PPBOMENTRY_Q t0e_q ON t0e_q.FENTRYID = tt.PPBOMENTRYID --生产用料清单数量拆分表 + LEFT JOIN T_PRD_PPBOMENTRY_C t0e_c ON t0e_c.FENTRYID = tt.PPBOMENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_L t0e_l on t0e_l.FENTRYID = tt.PPBOMENTRYID AND t0e_l.FLOCALEID = @LCID + + DROP TABLE #TMPPPBOM_BASE_INFO + + SELECT + tt.* + ,t1.FNUMBER AS 'MaterialNumber'--8.物料编码 + ,t1_l.FNAME AS 'MaterialName'--9.物料名称 + ,t1_l.FSPECIFICATION AS 'MaterialSpecification'--10.物料规格型号 + ,t2_l.FNAME AS 'MaterialUnitName'--11.物料单位 + ,(CASE t1.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'Materialsrc' --15.物料来源 + ,t4_l.FNAME AS 'WORKSHOPNAME' --44.生产车间 + ,t1.FMASTERID + ,t1.FUSEORGID + ,t5_l.FMEMO AS 'BOMMEMO' --42.BOM备注项 + ,t3_l.FNAME AS 'FSTOCKNAME' + into #TmpTable2 + FROM + #TmpTable1 tt + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = tt.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = tt.FMATERIALID AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = tt.FUNITID AND t2_l.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L t3_l ON t3_l.FSTOCKID = tt.FSTOCKID AND t3_l.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L t4_l on t4_l.FDEPTID = tt.FWORKSHOPID AND t4_l.FLOCALEID = @LCID + LEFT JOIN T_ENG_BOMCHILD_L t5_l ON t5_l.FENTRYID = tt.FBOMENTRYID AND t5_L.FLOCALEID = @LCID + +/***********************生产用料清单关联信息end****************************/ + SELECT + t0.* + ,t1.FBASEQTY + ,t2_l.FNAME AS 'ROUTENAME' + ,t3e_A.FBASEINVQTY + ,t3e.FBASELACKQTY AS 'FBASELACKQTY'--24.欠料 + ,t3e_A.FBASEONORDERQTY AS 'FBASEONORDERQTY' --25.物料在途数 + ,6 AS 'LOWEST6' + --INTO #TmpTable3 + FROM + #TmpTable2 t0 + LEFT JOIN ( + SELECT + t0.FMATERIALID + ,t0.FSTOCKORGID + ,sum(t0.FBASEQTY) AS FBASEQTY + FROM + T_STK_INVENTORY t0 + GROUP BY + t0.FMATERIALID + ,t0.FSTOCKORGID + ) t1 on t1.FMATERIALID = t0.FMASTERID AND t1.FSTOCKORGID = t0.FUSEORGID + LEFT JOIN T_ENG_ROUTE_L t2_L on t2_L.FID = t0.FROUTINGID AND t2_L.FLOCALEID = @LCID + LEFT JOIN T_PRD_PMPPBOMENTRY t3e on t3e.FMOID = t0.FID AND t3e.FMOENTRYID = t0.FENTRYID AND t3e.FMOENTRYSEQ = t0.FSEQ AND t3e.FMATERIALIDSUB = t0.FMATERIALID --AND t3e.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_PRD_PMPPBOMENTRY_A t3e_A ON t3e_A.FENTRYID = t3e.FENTRYID + + + --exec(N' + --SELECT + -- t0.* + -- ,' + @seqFid+ ' + -- INTO ' + @tableName + ' + --FROM + -- #TmpTable3 t0 + --') + + drop table #TmpTable0 + drop table #TmpTable1 + drop table #TmpTable2 + --drop table #TmpTable3 + + --exec(N'SELECT * FROM '+ @tableName) \ No newline at end of file diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/测试赋值基础资料.py b/HW.PythonPlugIn/ProductionMaterialsReport/测试赋值基础资料.py new file mode 100644 index 0000000..3ece817 --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/测试赋值基础资料.py @@ -0,0 +1,48 @@ +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 System import * +from Kingdee.BOS.App.Data import* +from Kingdee.BOS.Core.DynamicForm import* +from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import* +from Kingdee.BOS.Core.List.PlugIn import* +from Kingdee.BOS.Orm.DataEntity import* +from Kingdee.BOS.Util import* +from Kingdee.BOS import* + +def AfterCreateNewData(e): + if e.Field.Key == "FBomId" & e.NewValue != None: + raise Exception(str(e.NewValue)) + +def BarItemClick(e): + if e.BarItemKey == "tbUpdMJCPDZDZID": + MJIDObj = this.View.Model.GetValue("F_PAEZ_BASE") + MATERIALID = this.View.Model.GetValue("FMATERIALID") + mjId = MJIDObj["id"] + cpId = MATERIALID["id"] + sql ="""/*dialect*/ +select + cast(b.FBZCL as real) as FBZCL + ,a.F_PAEZ_TEXT + ,a.F_PAEZ_TEXT1 + ,b.Fjtbz + ,b.Fmjsmzq + ,b.Fmjqs + ,a.FMJID + ,b.FCPID + ,b.FEntryId +from hw_mjcpdzb a + inner join hw_mjcpdzbs b on a.FID = b.FID +where a.FMJID = {0} and b.FCPID={1} +""".format(mjId,cpId) + # raise Exception(sql) + dbList = DBUtils.ExecuteDynamicObject(this.Context,sql); + if dbList.Count > 0: + data = dbList[0] + this.View.Model.SetValue("FMJDZDZID",data["FEntryId"]) \ No newline at end of file diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/类1.py b/HW.PythonPlugIn/ProductionMaterialsReport/类1.py new file mode 100644 index 0000000..a8458f1 --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/类1.py @@ -0,0 +1,36 @@ +import clr +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.ServiceHelper") +clr.AddReference("HW.ProductionMateralsPlugIn") + +from Kingdee.BOS import * +from Kingdee.BOS.Core import * +from Kingdee.BOS.Core.Bill import * +from Kingdee.BOS.Core.Report import * +from System import * +from System.Data import * +from System.Net import * +from System.Text import * +from Kingdee.BOS.App.Data import * +from Kingdee.BOS.Core.List.PlugIn import * +from Kingdee.BOS.Core.List.PlugIn.Args import * +from HW.ProductionMateralsPlugIn import * + +def CellDbClick(e): + e.Cancel = True + fldKey = e.Header.FieldName; + # 嵥 + if fldKey == "FBILLNO": + reportModel = this.Model + tab = reportModel.DataSource + row = e.CellRowIndex + _moId = value=("{0}").format(tab.Rows[row-1]["FID"]); + if _moId != None and str(_moId) != "" and str(_moId) != "0": + _ShowForm("PRD_PPBOM", _moId) + +def _ShowForm(_fromId, _pkVal, _operationStatus = OperationStatus.VIEW ,_openStyleShowType = ShowType.Floating): + TableOperationPlugInEx.ShowForm(_fromId,_pkVal) \ No newline at end of file diff --git a/HW.PythonPlugIn/ProductionMaterialsReport/类2.py b/HW.PythonPlugIn/ProductionMaterialsReport/类2.py new file mode 100644 index 0000000..863b2da --- /dev/null +++ b/HW.PythonPlugIn/ProductionMaterialsReport/类2.py @@ -0,0 +1,206 @@ +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") +clr.AddReference("ExtensionMethods") +# clr.AddReference("K3CExttensionMethods") +from Kingdee.BOS import* +from Kingdee.BOS.Contracts import* +from Kingdee.BOS.Contracts.Report import* +from Kingdee.BOS.Core import * +from Kingdee.BOS.Core.Metadata import * +from Kingdee.BOS.Core.Report import* +from Kingdee.BOS.Core.SqlBuilder import* +from Kingdee.BOS.Core.Enums import * +from Kingdee.BOS.App.Data import* +from Kingdee.BOS.Orm.DataEntity import* +from System import * +from System.ComponentModel import* +from System.Collections.Generic import* +from System.Text import* +from System.Threading.Tasks import* +from Kingdee.BOS.ServiceHelper import * +from ExtensionMethods import BooleanExtension as boolObjEx +from ExtensionMethods import DateTimeExtension as dateObjEx +from ExtensionMethods import ObjectExtension as objEx +from ExtensionMethods import StringExtension as strObjEx +# from K3CExttensionMethods import ListHeaderExtension as lhObjEx + +#初始化,在此事件中设置报表的属性全局参数 +def Initialize(): + this.ReportProperty.ReportType= ReportType.REPORTTYPE_NORMAL; + this.IsCreateTempTableByPlugin=True; + #是否支持分组汇总,在后面GetSummaryColumnInfo方法中添加汇总字段, + #要在BOS中过滤框的汇总页签配置汇总信息,可参考:简单账表分组汇总设置 + this.ReportProperty.IsGroupSummary=True; + #IsUIDesignerColumns=False,表示报表的列通过插件控制,后续在GetReportHeaders中构建列头 + #需要在BOS过滤框的显示隐藏列中维护,字段标识与临时表字段保持一致 + #账表列头构建更多详细说明参考:账表列构建 + this.ReportProperty.IsUIDesignerColumns=False; + this.ReportProperty.PrimaryKeyFieldName = "FID"; + +#创建临时报表,正式进入账表取数sql拼接并取数,把账表取数结果放到创建的临时表中 +#如果参数(this.IsCreateTempTableByPlugin=True),即调用BuilderReportSqlAndTempTable构建临时表 +#否则调用以下3个接口,完成账表取数逻辑的sql指令即:BuilderSelectFieldSQL、BuilderTempTableOrderBySQL、BuilderFormWhereSQL +#rptfilter:账表参数,可以从这里获取过滤条件等 +#tableName:系统自动创建的账表临时表名,具备唯一性,最终报表页面展示的数据绑定此临时表,所以最终的报表结果数据要写入此临时表中 +def BuilderReportSqlAndTempTable(rptfilter,tableName): + #baseDataTemp=filter.BaseDataTempTable;#基础资料临时表;若设置了数据范围权限,该表会把根据数据范围过滤出来的内码存入临时表; + #循环获取所有基础资料数据范围的数据,可用来拼接到报表SQL里面实现数据权限过滤 + #for b in baseDataTemp: + # baseType=b.BaseDataFormId;#基础资料FormId + # PKFldName=b.PKFieldName;#临时表中基础资料主键字段名,例如,FORGID + # baseTempTab=b.TempTable;#基础资料数据范围临时表名 + #filterStr=filter.FilterParameter.FilterString;#过滤框条件页签过滤表达式 + #过滤框快捷过滤页签的实体数据包,从这里面获取自定义的过滤字段值 + #DynamicObject类型,用前面讲的实体数据包操作方式取值,用绑定实体属性标识 + custFilter = rptfilter.FilterParameter.CustomFilter; + if(custFilter == None): + return; + whereSql = ""; + + _lcId = this.Context.UserLocale.LCID; + + #raise Exception(str.Join(',',fldsSql));#调试时,可用此行代码,看看构建的动态列SQL对不对 + #组装最终写入报表临时表的SQL + #注意!!!: 最终临时表一定要有FIDENTITYID ,要从1开始,且不重复 ,不断号,不然前台显示空白!!!! + sql=("""/*dialect*/  +DECLARE @LCID int +SET @LCID = {1} + +SELECT + ROW_NUMBER() OVER(ORDER BY t0.FDATE DESC,t0.FID DESC,t0e.FSEQ ASC) AS FIDENTITYID--1.行号 + ,t0.FID + ,t0e.FSEQ + ,t0e.FENTRYID + ,t0.FDATE --2.单据日期 + ,t1.FBILLNO AS 'FPPBOMBILLNO'--3.生产投料单号 + ,t1.FID AS 'FPPBOMID' + ,t0e.FSALEORDERNO --4.销售订单号 + ,t0.FBILLNO--7.生产任务单号 + ,t0e.FPLANSTARTDATE--38.计划开工日期 + ,t0e.FPLANFINISHDATE--39.计划完工日期 + ,t0e.FQTY--12.产品生产数量 + ,t0e.FYIELDRATE + ,t0e.FROUTINGID + ,t0e.FMATERIALID AS 'ProMaterialId' + ,t0e.FUNITID AS 'PrdUnitId' + ,t1e.FENTRYID AS 'PPBOMENTRYID' + ,t1e.FMATERIALID + ,(t1e.FNUMERATOR / t1e.FDENOMINATOR) AS 'FUnitNeedQty' --18.物料单位用量 + ,t1e.FNEEDQTY --22.物料总需求 + ,t1e.FUNITID + ,t1e.FBOMENTRYID + ,t1e.FSTDQTY --标准用量 --29.标准数量 + ,t1e.FMUSTQTY --应发数量 --30.应发数量 + ,t1.FWORKSHOPID + ,(CASE t0e.FPRODUCTTYPE WHEN 1 THEN '主产品' WHEN 2 THEN '联产品' WHEN 3 THEN '副产品' ELSE '' END) AS 'PRODUCTTYPE'--43.生产类型 + ,(CASE t0e_a.FSTATUS WHEN 6 THEN '已结案'ELSE '' END) AS 'StatusIs6'--45.生产任务单结案否 + ,(CASE t1.FDOCUMENTSTATUS WHEN 'A' THEN '创建' WHEN 'B' THEN '审核中' WHEN 'C' THEN '已审核' WHEN 'D' THEN '重新审核' WHEN 'Z' THEN '暂存' ELSE '' END) AS 'PPBOMStatus'--46.生产投料单状态 + INTO #TmpTable0 +FROM T_PRD_MO t0 + INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + INNER JOIN T_PRD_PPBOM t1 on t1.FMOENTRYID = t0e.FENTRYID AND t1.FMOID = t0e.FID + INNER JOIN T_PRD_PPBOMENTRY t1e on t1e.FID = t1.FID +WHERE 1 = 1 {2} +SELECT + tt.* + ,t0e_q.FBASEWIPQTY --23.当前在制品数量 + ,t0e_q.FPICKEDQTY --27.已领数量 + ,t0e_q.FNOPICKEDQTY --28.未领数量 + ,t0e_l.FMEMO --31.备注 + ,t0e_q.FPICKEDQTY * (100 - tt.FYIELDRATE) AS 'FLossQty'--32.损耗数量 + ,t0e_q.FSCRAPQTY --33.报废数量 + ,t0e_q.FREPICKEDQTY --37.补料数量 + ,t0e_q.FINVENTORYQTY + ,t0e_c.FSTOCKID + ,t0e_c.FSTOCKLOCID + INTO #TmpTable1 +FROM #TmpTable0 tt + LEFT JOIN T_PRD_PPBOMENTRY_Q t0e_q ON t0e_q.FENTRYID = tt.PPBOMENTRYID --生产用料清单数量拆分表 + LEFT JOIN T_PRD_PPBOMENTRY_C t0e_c ON t0e_c.FENTRYID = tt.PPBOMENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_L t0e_l on t0e_l.FENTRYID = tt.PPBOMENTRYID AND t0e_l.FLOCALEID = @LCID + +SELECT tt.* + ,t1.FMNEMONICCODE AS 'ProMnemonicCode'--6.助记码 + ,t1.FNUMBER AS 'ProNumber'--8.产品编码 + ,t1_l.FNAME AS 'ProName'--9.产品名称 + ,t1_l.FSPECIFICATION AS 'ProSpecification'--10.产品规格型号 + ,t2_l.FNAME AS 'ProUnitName'--11.产品单位 + ,t3.FNUMBER AS 'MaterialNumber'--8.物料编码 + ,t3_l.FNAME AS 'MaterialName'--9.物料名称 + ,t3_l.FSPECIFICATION AS 'MaterialSpecification'--10.物料规格型号 + ,t4_l.FNAME AS 'MaterialUnitName'--11.物料单位 + ,(CASE t3.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'Materialsrc' --15.物料来源 + ,t6_l.FNAME AS 'WORKSHOPNAME' --44.生产车间 + ,t3.FMASTERID + ,t3.FUSEORGID + ,t7_l.FMEMO AS 'BOMMEMO' --42.BOM备注项 + ,t5_l.FNAME AS 'FSTOCKNAME' + INTO #TmpTable2 +FROM #TmpTable1 tt + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = tt.ProMaterialId + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = tt.ProMaterialId AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = tt.PrdUnitId AND t2_l.FLOCALEID = @LCID + LEFT JOIN T_BD_MATERIAL t3 ON t3.FMATERIALID = tt.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t3_l ON t3_l.FMATERIALID = tt.FMATERIALID AND t3_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t4_l ON t4_l.FUNITID = tt.FUNITID AND t4_l.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L t5_l ON t5_l.FSTOCKID = tt.FSTOCKID AND t5_l.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L t6_l on t6_l.FDEPTID = tt.FWORKSHOPID AND t6_l.FLOCALEID = @LCID + LEFT JOIN T_ENG_BOMCHILD_L t7_l ON t7_l.FENTRYID = tt.FBOMENTRYID AND t7_l.FLOCALEID = @LCID +SELECT tt.* + ,t1.FBASEQTY + ,t2_l.FNAME AS 'ROUTENAME' + ,t3e_A.FBASEINVQTY + ,t3e.FBASELACKQTY AS 'FBASELACKQTY'--24.欠料 + ,t3e_A.FBASEONORDERQTY AS 'FBASEONORDERQTY' --25.物料在途数 + ,t3e_A.FPURCHASEQTY --采购在途数量 + ,t3e_A.FREQUISITIONQTY --采购申请在途数量 + ,6 AS 'LOWEST6' + ,t3e_A.FREQUISITIONQTY - t3e_A.FPURCHASEQTY AS 'PR_C2PO_QTY' + ,0 AS 'ToBeInspectQTY' + ,0 AS 'PlanThrowInQty' + ,'' AS 'PlanThrowInDate' + ,'' AS 'CubicleName' + ,'' AS 'OTHERMEMO' + INTO {0} +FROM #TmpTable2 tt + LEFT JOIN ( + SELECT + t0.FMATERIALID + ,t0.FSTOCKORGID + ,sum(t0.FBASEQTY) AS FBASEQTY + FROM + T_STK_INVENTORY t0 + GROUP BY + t0.FMATERIALID + ,t0.FSTOCKORGID + ) t1 on t1.FMATERIALID = tt.FMASTERID AND t1.FSTOCKORGID = tt.FUSEORGID + LEFT JOIN T_ENG_ROUTE_L t2_L on t2_L.FID = tt.FROUTINGID AND t2_L.FLOCALEID = @LCID + LEFT JOIN T_PRD_PMPPBOMENTRY t3e on t3e.FPPBOMENTRYID = tt.PPBOMENTRYID AND t3e.FMATERIALIDSUB = tt.FMATERIALID --AND t3e.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_PRD_PMPPBOMENTRY_A t3e_A ON t3e_A.FENTRYID = t3e.FENTRYID + +DROP TABLE #TmpTable0 +DROP TABLE #TmpTable1 +DROP TABLE #TmpTable2 + """).format(tableName,_lcId,whereSql); + # raise Exception(sql);#可以通过此方法弹出Sql语句进行调试验证 + DBUtils.Execute(this.Context,sql);#执行SQL,将报表数据写入临时表 + +#构建账表列头 +def GetReportHeaders(rptfilter): + header = ReportHeader(); + localEid = this.Context.UserLocale.LCID;#获取当前语言环境代码,中文为2052 + + header.AddChild("FBILLNO", LocaleValue("生产任务单号", localEid), 0) + + return header; + +#报表关闭触发,通常在此处清理报表过程产生的临时表 +def CloseReport(): + this.DropTempTable(); \ No newline at end of file diff --git a/HandleUtils/Base64Helper.cs b/HandleUtils/Base64Helper.cs new file mode 100644 index 0000000..2f64325 --- /dev/null +++ b/HandleUtils/Base64Helper.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HandleUtils +{ + public class Base64Helper + { + /// + /// Base64加密,采用utf8编码方式加密 + /// + /// 待加密的明文 + /// 加密后的字符串 + public static string Base64Encode(string source) + { + return Base64Encode(Encoding.UTF8, source); + } + + /// + /// Base64加密 + /// + /// 加密采用的编码方式 + /// 待加密的明文 + /// + public static string Base64Encode(Encoding encodeType, string source) + { + string encode = string.Empty; + byte[] bytes = encodeType.GetBytes(source); + try + { + encode = Convert.ToBase64String(bytes); + } + catch + { + encode = source; + } + return encode; + } + + /// + /// Base64解密,采用utf8编码方式解密 + /// + /// 待解密的密文 + /// 解密后的字符串 + public static string Base64Decode(string result) + { + return Base64Decode(Encoding.UTF8, result); + } + + /// + /// Base64解密 + /// + /// 解密采用的编码方式,注意和加密时采用的方式一致 + /// 待解密的密文 + /// 解密后的字符串 + public static string Base64Decode(Encoding encodeType, string result) + { + string decode = string.Empty; + byte[] bytes = Convert.FromBase64String(result); + try + { + decode = encodeType.GetString(bytes); + } + catch + { + decode = result; + } + return decode; + } + } +} diff --git a/HandleUtils/EncryptHelper.cs b/HandleUtils/EncryptHelper.cs new file mode 100644 index 0000000..9cebe32 --- /dev/null +++ b/HandleUtils/EncryptHelper.cs @@ -0,0 +1,149 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HandleUtils +{ + public static class EncryptHelper + { + public static string UrlEncode(string value) + { + if (value == null) + { + return null; + } + + byte[] bytes = Encoding.UTF8.GetBytes(value); + return Encoding.UTF8.GetString(UrlEncode(bytes, 0, bytes.Length, alwaysCreateNewReturnValue: false)); + } + + private static byte[] UrlEncode(byte[] bytes, int offset, int count, bool alwaysCreateNewReturnValue) + { + byte[] array = UrlEncode(bytes, offset, count); + if (!alwaysCreateNewReturnValue || array == null || array != bytes) + { + return array; + } + + return (byte[])array.Clone(); + } + + private static byte[] UrlEncode(byte[] bytes, int offset, int count) + { + if (!ValidateUrlEncodingParameters(bytes, offset, count)) + { + return null; + } + + int num = 0; + int num2 = 0; + for (int i = 0; i < count; i++) + { + char c = (char)bytes[offset + i]; + if (c == ' ') + { + num++; + } + else if (!IsUrlSafeChar(c)) + { + num2++; + } + } + + if (num == 0 && num2 == 0) + { + if (offset == 0 && bytes.Length == count) + { + return bytes; + } + + byte[] array = new byte[count]; + Buffer.BlockCopy(bytes, offset, array, 0, count); + return array; + } + + byte[] array2 = new byte[count + num2 * 2]; + int num3 = 0; + for (int j = 0; j < count; j++) + { + byte b = bytes[offset + j]; + char c2 = (char)b; + if (IsUrlSafeChar(c2)) + { + array2[num3++] = b; + continue; + } + + if (c2 == ' ') + { + array2[num3++] = 43; + continue; + } + + array2[num3++] = 37; + array2[num3++] = (byte)IntToHex((b >> 4) & 0xF); + array2[num3++] = (byte)IntToHex(b & 0xF); + } + + return array2; + } + + private static char IntToHex(int n) + { + if (n <= 9) + { + return (char)(n + 48); + } + + return (char)(n - 10 + 65); + } + + private static bool ValidateUrlEncodingParameters(byte[] bytes, int offset, int count) + { + if (bytes == null && count == 0) + { + return false; + } + + if (bytes == null) + { + throw new ArgumentNullException("bytes"); + } + + if (offset < 0 || offset > bytes.Length) + { + throw new ArgumentOutOfRangeException("offset"); + } + + if (count < 0 || offset + count > bytes.Length) + { + throw new ArgumentOutOfRangeException("count"); + } + + return true; + } + + private static bool IsUrlSafeChar(char ch) + { + if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9')) + { + return true; + } + + switch (ch) + { + case '!': + case '(': + case ')': + case '*': + case '-': + case '.': + case '_': + return true; + default: + return false; + } + } + } +} diff --git a/HandleUtils/HandleUtils.csproj b/HandleUtils/HandleUtils.csproj new file mode 100644 index 0000000..966143b --- /dev/null +++ b/HandleUtils/HandleUtils.csproj @@ -0,0 +1,49 @@ + + + + + Debug + AnyCPU + {A386E924-0477-49BF-A3DD-82390EDF75C7} + Library + Properties + HandleUtils + HandleUtils + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HandleUtils/Properties/AssemblyInfo.cs b/HandleUtils/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1a4ecb6 --- /dev/null +++ b/HandleUtils/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("HandleUtils")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("HandleUtils")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("a386e924-0477-49bf-a3dd-82390edf75c7")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/HandleUtils/WebHelper.cs b/HandleUtils/WebHelper.cs new file mode 100644 index 0000000..9b4605c --- /dev/null +++ b/HandleUtils/WebHelper.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Security; +using System.Net; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace HandleUtils +{ + public static class WebHelper + { + /// + /// post请求 + /// + /// 请求地址 + /// 请求数据 + /// 证书 + /// + public static string DoPost(string url, string postData, X509Certificate2 certificate2) + { + try + { + string result = string.Empty; + + HttpWebRequest request = null; + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + request = WebRequest.Create(url) as HttpWebRequest; + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); + request.ProtocolVersion = HttpVersion.Version11; + // 这里设置了协议类型。 + ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;// SecurityProtocolType.Tls1.2; + request.KeepAlive = false; + ServicePointManager.CheckCertificateRevocationList = true; + ServicePointManager.DefaultConnectionLimit = 100; + ServicePointManager.Expect100Continue = false; + } + else + { + request = (HttpWebRequest)WebRequest.Create(url); + } + + //string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; + + ////证书 + //var keystorefile = baseDirectory + @"\bin\ISSUE\testISSUE.pfx"; + //var key = "123456"; + //var cer = new X509Certificate2(keystorefile, key); + + if (certificate2 != null) + request.ClientCertificates.Add(certificate2); + + request.Method = "POST"; //使用get方式发送数据 + request.ContentType = "application/json;charset=utf-8"; + + byte[] data = Encoding.UTF8.GetBytes(postData); + Stream newStream = request.GetRequestStream(); + newStream.Write(data, 0, data.Length); + newStream.Close(); + + HttpWebResponse response = (HttpWebResponse)request.GetResponse(); + Stream stream = response.GetResponseStream(); + + using (StreamReader sr = new StreamReader(stream)) + { + result = sr.ReadToEnd(); + } + return result; + } + + catch (Exception ex) + { + throw ex; + } + + } + + /// + /// post请求 + /// + /// + /// + /// + public static string DoPost(string url, string postData) + { + return DoPost(url, postData, null); + } + + private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) + { + if (errors == SslPolicyErrors.None) + return true; //总是接受 + + return false; + } + } +} diff --git a/K3CExttensionMethods/ListHeaderExtension.cs b/K3CExttensionMethods/ListHeaderExtension.cs index 1feca21..171004c 100644 --- a/K3CExttensionMethods/ListHeaderExtension.cs +++ b/K3CExttensionMethods/ListHeaderExtension.cs @@ -3,20 +3,17 @@ using Kingdee.BOS.Orm.DataEntity; using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Text; namespace K3CExttensionMethods { public static class ListHeaderExtension { - public static ListHeader SetHeader(this ListHeader thiObj, Func func) + public static ListHeader SetHeader(this ListHeader thiObj, Action _action) { - return func(thiObj); - } + _action(thiObj); - public static ListHeader SetWidth(this ListHeader thiObj,int width) - { - thiObj.Width = width; return thiObj; } } diff --git a/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs b/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs index 0accc70..65d8b66 100644 --- a/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs +++ b/MonthlyProductionSchedule/AutoRecordsInventoryPlugIn.cs @@ -46,7 +46,7 @@ namespace MonthlyProductionSchedule //var delNum = DBServiceHelper.Execute(ctx, $"/*dialect*/{delSql}"); //Logger.Info(schedule.Name, $"删除物料即时库存数据成功!(本次删除{delNum}条)"); - var intoSql = $@" PROC_SAVE_MATERIAL_INVENTORY {ctx.UserLocale.LCID} ,{newDate.Year} ,{newDate.Month} ,{newDate.Day} "; + var intoSql = $@" EXEC PROC_SAVE_MATERIAL_INVENTORY {ctx.UserLocale.LCID} ,{newDate.Year} ,{newDate.Month} ,{newDate.Day} "; var intoNum = DBServiceHelper.Execute(ctx, $"/*dialect*/{intoSql}"); Logger.Info(schedule.Name, $"记录物料即时库存成功!(本次记录{intoNum}条)"); } diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/2.存储过程_生产计划_查询保存数据.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/2.存储过程_生产计划_查询保存数据.sql index e55d255..40f9501 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/2.存储过程_生产计划_查询保存数据.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/2.存储过程_生产计划_查询保存数据.sql @@ -14,12 +14,41 @@ BEGIN SET @HASID = 0; SELECT - * + t0.FID + ,t0.FMATERIALID + ,t0.FNUMBER + ,t0.FNAME + ,t0.FSPECIFICATION + ,t0.SHELFLIFE + ,t0.StandardLot + ,CEILING(t0.SAFESTOCK) SAFESTOCK + ,t0.FSTOREUNITID + ,t0.FSTOREUNITNAME + ,CEILING(t0.SAFESTOCKCOUNT) SAFESTOCKCOUNT + ,t0.FPACKUNITCONVT + ,CEILING(t0.FLOTYIELD) FLOTYIELD + ,CEILING(t0.FPACKUNITCONVERRATIO) FPACKUNITCONVERRATIO + ,t0.FPACKUNITID + ,t0.FPACKUNITNAME + ,CEILING(t0.M01) M01 + ,CEILING(t0.S01) S01 + ,CEILING(t0.S02) S02 + ,CEILING(t0.S03) S03 + ,CEILING(t0.InProductionQty) InProductionQty + ,CEILING(t0.InStockQty) InStockQty + ,CEILING(t0.TotalStockQty) TotalStockQty + ,CEILING(t0.OrderLotQty) OrderLotQty + ,CEILING(t0.FirmLotQty) FirmLotQty + ,CEILING(t0.FFirmQty) FFirmQty + ,t0.FRECORDDAY + ,t0.FRECORDMONTH + ,t0.FRECORDYEAR + ,t0.countM INTO #TMPMPS FROM - T_PLAN_PLANPLMRPT A + T_PLAN_PLANPLMRPT t0 WHERE - A.FRECORDDAY = @DAY AND A.FRECORDMONTH = @MONTH AND A.FRECORDYEAR = @YEAR + t0.FRECORDDAY = @DAY AND t0.FRECORDMONTH = @MONTH AND t0.FRECORDYEAR = @YEAR SELECT @HASID = COUNT(1) FROM #TMPMPS @@ -28,7 +57,7 @@ BEGIN SET @sql = ' select t0.* - ,2 AS FDECIMALS + ,0 AS FDECIMALS ,'+@SEQFLD+' into '+ @TableName +' From #TMPMPS t0 ' diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql index 4fae59b..ee9b3ee 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/5.存储过程_生产计划表_insert.sql @@ -45,13 +45,15 @@ BEGIN ) AS INT)) + '' ELSE '' END END) AS 'SHELFLIFE' - ,CONCAT(t2.FLotSize,t5_L.FNAME, '/') AS StandardLot + --,CONCAT(t2.FLotSize,t5_L.FNAME, '/') AS StandardLot + ,CONCAT(CAST(CEILING(t4.FLOTYIELD) AS VARCHAR),t5_L.FNAME, '/') AS StandardLot ,dbo.ToDecimal2(t2S.FSAFESTOCK) AS SAFESTOCK --ȫ ,ISNULL(t2S.FSTOREUNITID ,0) AS FSTOREUNITID--浥λ ,t5_L.FNAME AS FSTOREUNITNAME ,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT - ,CONCAT(CONVERT(VARCHAR,dbo.ToDecimal2(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT - ,ISNULL(t4.FLOTYIELD,0) AS FLOTYIELD-- 'ÿ' + ,CONCAT(CONVERT(VARCHAR,CEILING(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT + ,ISNULL(CAST(t2.FLotSize AS INT),0) AS FLOTYIELD-- 'ÿ' + --,ISNULL(t4.FLOTYIELD,0) AS FLOTYIELD-- 'ÿ' ,ISNULL(t4.FPACKUNITCONVERRATIO,0) AS FPACKUNITCONVERRATIO -- 'װ' ,ISNULL(t4.FPACKUNITID,0) AS FPACKUNITID-- 'λ' ,t6_L.FNAME AS FPACKUNITNAME @@ -59,10 +61,13 @@ BEGIN ,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01 ,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02 ,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03 - ,dbo.PackageValConver(ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- - ,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- - ,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ - ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ + --,dbo.PackageValConver(ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- + ,dbo.PackageValConver(ISNULL(t3.FSNRPTSELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- + --,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- + ,dbo.PackageValConver(ISNULL(t3.㱨δ,0) + ISNULL(t4.FSTOCKQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InStockQty -- + --,dbo.PackageValConver((ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ + ,dbo.PackageValConver((ISNULL(t3.FSNRPTSELQTY,0) + ISNULL(t3.㱨δ,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ + ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FLOTYIELD) AS OrderLotQty --ƻ --,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ ,ISNULL(t0.FLotQty,0) AS FirmLotQty ,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ @@ -75,18 +80,19 @@ BEGIN t0E.FMATERIALID ,sum(t1.FFirmQty) AS FFirmQty ,sum(t1.FOrderQty) AS FOrderQty - ,sum(t1.FFINISHQTY) AS FFINISHQTY - ,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + --,sum(t2.FFINISHQTY) AS FFINISHQTY + --,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY ,sum(t1.FLotQty) As FLotQty - ,sum(M01) AS M01 - ,sum(S01) AS S01 - ,sum(S02) AS S02 - ,sum(S03) AS S03 + ,sum(t0E.FQTY) AS M01 + ,sum(t0E.S01) AS S01 + ,sum(t0E.S02) AS S02 + ,sum(t0E.S03) AS S03 ,count(1) AS countM FROM T_PLN_FORECAST t0 LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID LEFT JOIN ( + --ƻ SELECT t1.FMATERIALID ,t1_B.FSALEORDERENTRYID @@ -94,44 +100,12 @@ BEGIN ,t1_B.FSALEORDERID ,sum(t1.FFirmQty) AS FFirmQty ,sum(t1.FOrderQty) AS FOrderQty - ,sum(t2.FFINISHQTY) AS FFINISHQTY - ,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + --,sum(t2.FFINISHQTY) AS FFINISHQTY + --,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY ,sum(t1.FLotQty) As FLotQty FROM T_PLN_PLANORDER t1 LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID - LEFT JOIN ( - SELECT - t0E.FMATERIALID - ,t0E_LK.FSID - ,SUM(t1.FFINISHQTY) AS FFINISHQTY -- - ,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --ϸƷѡ - FROM - T_PRD_MO t0 - LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID - LEFT JOIN T_PRD_MOENTRY_LK t0E_LK ON t0E_LK.FENTRYID = t0E.FENTRYID AND t0E_LK.FSTABLENAME = 'T_PLN_PLANORDER' - LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID - LEFT JOIN ( - SELECT - t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 - ,t0E.FMOENTRYID - ,t0E.FFINISHQTY - ,t0E_A.FSTOCKINQUASELQTY - FROM - T_PRD_MORPT t0 - LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID - LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID - WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' - ) t1 ON t1.FMOENTRYID = t0E.FENTRYID - WHERE - t0E.FSRCBILLTYPE ='PLN_PLANORDER' - AND t0E_A.FREQSRC = 2 - AND t0E_A.FSTATUS <> 6 - AND t0E.FSALEORDERENTRYID <> 0 - GROUP BY - t0E.FMATERIALID - ,t0E_LK.FSID - ) t2 ON t2.FSID = t1.FID AND t2.FMATERIALID = t1.FMATERIALID WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2 GROUP BY t1.FMATERIALID @@ -147,6 +121,42 @@ BEGIN LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID) LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT + t0E.FMATERIALID + ,SUM(ISNULL(t0e.FQTY,0) - ISNULL(t0E_A.FREPQUASELQTY,0)) AS 'FSNRPTSELQTY' --ڲ + ,SUM(ISNULL(t0E_A.FREPQUASELQTY,0)) AS FREPQUASELQTY + ,SUM(ISNULL(t0E_A.FREPQUASELAUXQTY,0)) AS FREPQUASELAUXQTY + ,SUM(t0e.FQTY) FQTY-- + ,SUM(t1.FFINISHQTY) AS 'FFINISHQTY' -- + ,SUM(t1.FSTOCKINQUASELQTY) AS 'FSTOCKINQUASELQTY' --ϸƷѡ + ,(SUM(t1.FFINISHQTY - t1.FSTOCKINQUASELQTY)) AS '㱨δ'--㱨δ + FROM + T_PRD_MO t0 + LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN T_PRD_MOSNDETAIL t0s on t0s.FENTRYID = t0e.FENTRYID + LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID + LEFT JOIN ( + SELECT + t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 + ,t0E.FMOENTRYID + ,SUM(t0E.FFINISHQTY) 'FFINISHQTY' + ,SUM(t0E_A.FSTOCKINQUASELQTY) 'FSTOCKINQUASELQTY' + FROM + T_PRD_MORPT t0 + LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID + LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' + GROUP BY + t0.FBILLTYPE + ,t0E.FMOENTRYID + ) t1 ON t1.FMOENTRYID = t0E.FENTRYID + WHERE 1=1 + AND t0.FDOCUMENTSTATUS = 'C' + AND (t0E_A.FSTATUS = 3 OR t0E_A.FSTATUS = 4 OR t0E_A.FSTATUS = 5) + GROUP BY + t0E.FMATERIALID + ) t3 on t3.FMATERIALID = t0.FMATERIALID LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY) LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID) LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID) diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/6.存储过程_物料即时库存表_insert.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/6.存储过程_物料即时库存表_insert.sql index 72322c9..2bdcb64 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/6.存储过程_物料即时库存表_insert.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/6.存储过程_物料即时库存表_insert.sql @@ -17,7 +17,7 @@ BEGIN ,T0.FMATERIALID ,T0.FNUMBER ,ISNULL(T1.STOCKQTY,0) AS FSTOCKQTY - ,T0P.FLOTYIELD -- 'ÿ' + ,T0P.FLOTYIELD -- '׼' ,T0P.FPACKUNITCONVERRATIO -- 'װ' ,T0P.FPACKUNITID -- 'λ' ,T0.FUSEORGID diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-生产计划-包装规格换算.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-生产计划-包装规格换算.sql index d33aa77..f20f0fe 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-生产计划-包装规格换算.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/完成/自定义函数-生产计划-包装规格换算.sql @@ -7,5 +7,7 @@ select @result = (CASE isnull(@coefficient,0) WHEN 0 THEN isnull(@cnvNumber,0) ELSE (ISNULL(@cnvNumber,0)/@coefficient) END) -RETURN ROUND(@result,2) -END \ No newline at end of file +--RETURN ROUND(@result,2) +RETURN CEILING(@result) +END + diff --git a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql index 3471090..1bde766 100644 --- a/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql +++ b/MonthlyProductionSchedule/SQLServer/生产计划表2.0/查询_生产计划数据.sql @@ -1,10 +1,15 @@ DECLARE @STARTDATE DATE,@ENDDATE DATE,@LCID INT,@YEAR INT,@MONTH INT,@DAY INT - SET @STARTDATE ='2023-12-01' - SET @ENDDATE ='2023-12-31' SET @LCID = 2052 - SET @YEAR = 2023 - SET @MONTH = 12 - SET @DAY = 30 + SET @STARTDATE ='2024-01-01' + SET @ENDDATE ='2024-01-31' + SET @YEAR = 2024 + SET @MONTH = 1 + SET @DAY = 20 + --SET @STARTDATE ='2023-12-01' + --SET @ENDDATE ='2023-12-31' + --SET @YEAR = 2023 + --SET @MONTH = 12 + --SET @DAY = 20 --ȡʱƻIJֵ DECLARE @FSCHEDULETYPEID varchar(80) @@ -17,8 +22,7 @@ SELECT @DAY = (CASE WHEN LTRIM(RTRIM(T0.FPARAMETERS)) = '' THEN @DAY ELSE CAST(T0.FPARAMETERS AS INT) END) FROM T_BAS_SCHEDULEINFO T0 WHERE T0.FSCHEDULETYPEID = @FSCHEDULETYPEID SELECT - ROW_NUMBER() OVER(ORDER BY t0.FMATERIALID) AS FIDENTITYID - ,t0.FMATERIALID + t0.FMATERIALID ,t2.FNUMBER ,t2_L.FNAME ,t2_L.FSPECIFICATION @@ -37,45 +41,54 @@ ) AS INT)) + '' ELSE '' END END) AS 'SHELFLIFE' - ,CONCAT(t2.FLotSize,t5_L.FNAME, '/') AS StandardLot + --,CONCAT(t2.FLotSize,t5_L.FNAME, '/') AS StandardLot + ,CONCAT(CAST(CEILING(t4.FLOTYIELD) AS VARCHAR),t5_L.FNAME, '/') AS StandardLot ,dbo.ToDecimal2(t2S.FSAFESTOCK) AS SAFESTOCK --ȫ - ,t2S.FSTOREUNITID --浥λ + ,ISNULL(t2S.FSTOREUNITID ,0) AS FSTOREUNITID--浥λ ,t5_L.FNAME AS FSTOREUNITNAME ,(dbo.PackageValConver(t2S.FSAFESTOCK, t4.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT - ,CONCAT(CONVERT(VARCHAR,dbo.ToDecimal2(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT - ,t4.FLOTYIELD -- 'ÿ' - ,t4.FPACKUNITCONVERRATIO -- 'װ' - ,t4.FPACKUNITID -- 'λ' + ,CONCAT(CONVERT(VARCHAR,CEILING(t4.FPACKUNITCONVERRATIO)),t5_L.FNAME ,'/' ,t6_L.FNAME) AS FPACKUNITCONVT + ,ISNULL(CAST(t2.FLotSize AS INT),0) AS FLOTYIELD-- 'ÿ' + --,ISNULL(t4.FLOTYIELD,0) AS FLOTYIELD-- 'ÿ' + ,ISNULL(t4.FPACKUNITCONVERRATIO,0) AS FPACKUNITCONVERRATIO -- 'װ' + ,ISNULL(t4.FPACKUNITID,0) AS FPACKUNITID-- 'λ' ,t6_L.FNAME AS FPACKUNITNAME ,dbo.PackageValConver(t0.M01,t4.FPACKUNITCONVERRATIO) as M01 ,dbo.PackageValConver(t0.S01,t4.FPACKUNITCONVERRATIO) as S01 ,dbo.PackageValConver(t0.S02,t4.FPACKUNITCONVERRATIO) as S02 ,dbo.PackageValConver(t0.S03,t4.FPACKUNITCONVERRATIO) as S03 - ,dbo.PackageValConver(ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- - ,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- - ,dbo.PackageValConver((ISNULL(t0.FFINISHQTY,0) - ISNULL(t0.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ - ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FPACKUNITCONVERRATIO) AS OrderLotQty --ƻ - ,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ - --,t0.FLotQty AS FirmLotQty + --,dbo.PackageValConver(ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- + ,dbo.PackageValConver(ISNULL(t3.FSNRPTSELQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InProductionQty -- + --,dbo.PackageValConver(ISNULL(t4.FSTOCKQTY,0),t4.FPACKUNITCONVERRATIO) AS InStockQty -- + ,dbo.PackageValConver(ISNULL(t3.㱨δ,0) + ISNULL(t4.FSTOCKQTY,0) ,t4.FPACKUNITCONVERRATIO) AS InStockQty -- + --,dbo.PackageValConver((ISNULL(t3.FFINISHQTY,0) - ISNULL(t3.FSTOCKINQUASELQTY,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ + ,dbo.PackageValConver((ISNULL(t3.FSNRPTSELQTY,0) + ISNULL(t3.㱨δ,0) + ISNULL(t4.FSTOCKQTY,0)),t4.FPACKUNITCONVERRATIO) AS TotalStockQty --ϼ + ,dbo.PackageValConver(ISNULL(t0.FOrderQty,0),t4.FLOTYIELD) AS OrderLotQty --ƻ + --,dbo.PackageValConver(ISNULL(t0.FFirmQty,0), t4.FPACKUNITCONVERRATIO) AS FirmLotQty --ȷ + ,ISNULL(t0.FLotQty,0) AS FirmLotQty ,dbo.ToDecimal2(ISNULL(t0.FFirmQty,0)) FFirmQty --ȷ + ,@DAY AS FRECORDDAY + ,@MONTH AS FRECORDMONTH + ,@YEAR AS FRECORDYEAR ,t0.countM FROM (SELECT t0E.FMATERIALID ,sum(t1.FFirmQty) AS FFirmQty ,sum(t1.FOrderQty) AS FOrderQty - ,sum(t1.FFINISHQTY) AS FFINISHQTY - ,sum(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY - --,sum(t1.FLotQty) As FLotQty - ,sum(M01) AS M01 - ,sum(S01) AS S01 - ,sum(S02) AS S02 - ,sum(S03) AS S03 + --,sum(t2.FFINISHQTY) AS FFINISHQTY + --,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(t1.FLotQty) As FLotQty + ,sum(t0E.FQTY) AS M01 + ,sum(t0E.S01) AS S01 + ,sum(t0E.S02) AS S02 + ,sum(t0E.S03) AS S03 ,count(1) AS countM FROM T_PLN_FORECAST t0 - INNER JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID LEFT JOIN ( + --ƻ SELECT t1.FMATERIALID ,t1_B.FSALEORDERENTRYID @@ -83,51 +96,19 @@ ,t1_B.FSALEORDERID ,sum(t1.FFirmQty) AS FFirmQty ,sum(t1.FOrderQty) AS FOrderQty - ,sum(t2.FFINISHQTY) AS FFINISHQTY - ,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY - --,sum(t1.FLotQty) As FLotQty + --,sum(t2.FFINISHQTY) AS FFINISHQTY + --,sum(t2.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY + ,sum(t1.FLotQty) As FLotQty FROM T_PLN_PLANORDER t1 LEFT JOIN T_PLN_PLANORDER_B t1_B ON t1.FID = t1_B.FID - LEFT JOIN ( - SELECT - t0E.FMATERIALID - ,t0E_LK.FSID - ,SUM(t1.FFINISHQTY) AS FFINISHQTY -- - ,SUM(t1.FSTOCKINQUASELQTY) AS FSTOCKINQUASELQTY --ϸƷѡ - FROM - T_PRD_MO t0 - LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID - LEFT JOIN T_PRD_MOENTRY_LK t0E_LK ON t0E_LK.FENTRYID = t0E.FENTRYID AND t0E_LK.FSTABLENAME = 'T_PLN_PLANORDER' - LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID - LEFT JOIN ( - SELECT - t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 - ,t0E.FMOENTRYID - ,t0E.FFINISHQTY - ,t0E_A.FSTOCKINQUASELQTY - FROM - T_PRD_MORPT t0 - LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID - LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID - WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' - ) t1 ON t1.FMOENTRYID = t0E.FENTRYID - WHERE - t0E.FSRCBILLTYPE ='PLN_PLANORDER' - AND t0E_A.FREQSRC = 2 - AND t0E_A.FSTATUS <> 6 - AND t0E.FSALEORDERENTRYID <> 0 - GROUP BY - t0E.FMATERIALID - ,t0E_LK.FSID - ) t2 ON t2.FSID = t1.FID AND t2.FMATERIALID = t1.FMATERIALID WHERE t1.FDATASOURCE = 1 AND t1_B.FDEMANDTYPE = 2 GROUP BY t1.FMATERIALID ,t1_B.FSALEORDERENTRYID ,t1_B.FSALEORDERENTRYSEQ ,t1_B.FSALEORDERID - ) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0E.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ) + ) t1 ON (t1.FMATERIALID = t0E.FMATERIALID AND t1.FSALEORDERID = t0.FID AND t0E.FENTRYID = t1.FSALEORDERENTRYID AND t1.FSALEORDERENTRYSEQ = t0E.FSEQ) WHERE t0.FDATE BETWEEN @STARTDATE AND @ENDDATE GROUP BY @@ -136,6 +117,42 @@ LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0.FMATERIALID LEFT JOIN T_BD_MATERIAL_L t2_L ON (t2_L.FMATERIALID = t0.FMATERIALID AND t2_L.FLOCALEID = @LCID) LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT + t0E.FMATERIALID + ,SUM(ISNULL(t0e.FQTY,0) - ISNULL(t0E_A.FREPQUASELQTY,0)) AS 'FSNRPTSELQTY' --ڲ + ,SUM(ISNULL(t0E_A.FREPQUASELQTY,0)) AS FREPQUASELQTY + ,SUM(ISNULL(t0E_A.FREPQUASELAUXQTY,0)) AS FREPQUASELAUXQTY + ,SUM(t0e.FQTY) FQTY-- + ,SUM(t1.FFINISHQTY) AS 'FFINISHQTY' -- + ,SUM(t1.FSTOCKINQUASELQTY) AS 'FSTOCKINQUASELQTY' --ϸƷѡ + ,(SUM(t1.FFINISHQTY - t1.FSTOCKINQUASELQTY)) AS '㱨δ'--㱨δ + FROM + T_PRD_MO t0 + LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID + LEFT JOIN T_PRD_MOSNDETAIL t0s on t0s.FENTRYID = t0e.FENTRYID + LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID + LEFT JOIN ( + SELECT + t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 㱨 e52b554423704173b7306554708a8b05 㱨 + ,t0E.FMOENTRYID + ,SUM(t0E.FFINISHQTY) 'FFINISHQTY' + ,SUM(t0E_A.FSTOCKINQUASELQTY) 'FSTOCKINQUASELQTY' + FROM + T_PRD_MORPT t0 + LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID + LEFT JOIN T_PRD_MORPTENTRY_A t0E_A ON t0E_A.FID = t0.FID AND t0E_A.FENTRYID = t0E.FENTRYID + WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' + GROUP BY + t0.FBILLTYPE + ,t0E.FMOENTRYID + ) t1 ON t1.FMOENTRYID = t0E.FENTRYID + WHERE 1=1 + AND t0.FDOCUMENTSTATUS = 'C' + AND (t0E_A.FSTATUS = 3 OR t0E_A.FSTATUS = 4 OR t0E_A.FSTATUS = 5) + GROUP BY + t0E.FMATERIALID + ) t3 on t3.FMATERIALID = t0.FMATERIALID LEFT JOIN T_MATERIAL_INVENTORY_MONTH_RECORD t4 ON (t4.FMATERIALID = t0.FMATERIALID AND t4.RECORDYEAR = @YEAR AND t4.RECORDMONTH = @MONTH and t4.RECORDDAY = @DAY) LEFT JOIN T_BD_UNIT_L t5_L ON (t5_l.FUNITID = t2S.FSTOREUNITID AND t5_L.FLOCALEID = @LCID) - LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID) + LEFT JOIN T_BD_UNIT_L t6_L ON (t6_l.FUNITID = t4.FPACKUNITID AND t6_L.FLOCALEID = @LCID) \ No newline at end of file diff --git a/MonthlyProductionSchedule/UpdatePlanOrderCustInfoPolicyEx .cs b/MonthlyProductionSchedule/UpdatePlanOrderCustInfoPolicyEx .cs index cb7e210..d64014f 100644 --- a/MonthlyProductionSchedule/UpdatePlanOrderCustInfoPolicyEx .cs +++ b/MonthlyProductionSchedule/UpdatePlanOrderCustInfoPolicyEx .cs @@ -53,7 +53,11 @@ namespace Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc var LotYield = Convert.ToDecimal(demandGroupRow.PlanOrderItem["LotYield"]); if (LotYield != 0) + { demandGroupRow.PlanOrderItem["LotQty"] = Convert.ToDecimal(demandGroupRow.PlanOrderItem["BaseFirmQty"]) / LotYield; + demandGroupRow.PlanOrderItem["BaseSugLotQty"] = Convert.ToDecimal(demandGroupRow.PlanOrderItem["BaseSugQty"]) / LotYield; + demandGroupRow.PlanOrderItem["SugLotQty"] = Convert.ToDecimal(demandGroupRow.PlanOrderItem["BaseSugQty"]) / LotYield; + } } diff --git a/ProductionMaterialsReport/HW.ProductionMaterialsReport.csproj b/ProductionMaterialsReport/HW.ProductionMaterialsReport.csproj index b15f603..3ce6e40 100644 --- a/ProductionMaterialsReport/HW.ProductionMaterialsReport.csproj +++ b/ProductionMaterialsReport/HW.ProductionMaterialsReport.csproj @@ -53,6 +53,9 @@ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.Contracts.dll + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.SCM.App.Sal.Report.dll + @@ -65,6 +68,7 @@ + @@ -76,5 +80,15 @@ + + + {50532462-8f7f-455c-b4b3-732ed764e2fa} + ExtensionMethods + + + {825DD90B-2A8D-4884-9940-6DA56EF6623F} + K3CExttensionMethods + + \ No newline at end of file diff --git a/ProductionMaterialsReport/ProductionMaterialsReportEx.cs b/ProductionMaterialsReport/ProductionMaterialsReportEx.cs index 8029987..caeca0d 100644 --- a/ProductionMaterialsReport/ProductionMaterialsReportEx.cs +++ b/ProductionMaterialsReport/ProductionMaterialsReportEx.cs @@ -1,9 +1,14 @@ -using Kingdee.BOS; +using ExtensionMethods; +using K3CExttensionMethods; +using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Contracts.Report; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Core.List.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Report; using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Resource; using Kingdee.BOS.Util; using System; using System.Collections.Generic; @@ -45,6 +50,8 @@ namespace ProductionMaterialsReport 2015/8/31 18:04:30 : GetListData */ + private List billNames = new List(); + public override void Initialize() { base.Initialize(); @@ -55,10 +62,6 @@ namespace ProductionMaterialsReport //是否由插件创建表名 this.IsCreateTempTableByPlugin = true; // - this.ReportProperty.IsUIDesignerColumns = false; - // - this.ReportProperty.IsGroupSummary = true; - // this.ReportProperty.SimpleAllCols = false; // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示 this.ReportProperty.PrimaryKeyFieldName = "FID"; @@ -66,22 +69,33 @@ namespace ProductionMaterialsReport this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true; // 报表主键字段名:默认为FIDENTITYID,可以修改 - //this.ReportProperty.IdentityFieldName = "FIDENTITYID"; + this.ReportProperty.IdentityFieldName = "FIDENTITYID"; // 设置精度控制 var list = new List { - new DecimalControlField("FDECIMALS", "FLOTYIELD"), + new DecimalControlField("LOWEST6","FQTY"), + new DecimalControlField("LOWEST6","FUnitNeedQty"), + new DecimalControlField("LOWEST6","FBASEQTY"), + new DecimalControlField("LOWEST6","FNEEDQTY"), + new DecimalControlField("LOWEST6","FBASEWIPQTY"), + new DecimalControlField("LOWEST6","FBASELACKQTY"), + new DecimalControlField("LOWEST6","FBASEONORDERQTY"), + new DecimalControlField("LOWEST6","FPICKEDQTY"), + new DecimalControlField("LOWEST6","FNOPICKEDQTY"), + new DecimalControlField("LOWEST6","FSTDQTY"), + new DecimalControlField("LOWEST6","FMUSTQTY"), + new DecimalControlField("LOWEST6","FLossQty"), + new DecimalControlField("LOWEST6","FSCRAPQTY"), + new DecimalControlField("LOWEST6","FREPICKEDQTY"), }; - this.ReportProperty.DecimalControlFieldList = list; + base.ReportProperty.IsGroupSummary = true; + base.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSTOCKID", "FSTOCKNAME"); + base.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("ProMaterialId", "ProNumber"); + //列头是否是通过BOSIDE设计 + //base.ReportProperty.IsUIDesignerColumns = true; - this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FSTOCKID", "仓库"); - } - - public override string GetTableName() - { - return base.GetTableName(); } /// @@ -93,140 +107,15 @@ namespace ProductionMaterialsReport { base.BuilderReportSqlAndTempTable(filter, tableName); string seqFld = string.Format(base.KSQL_SEQ, " t0.FID "); - var sql = $@" - DECLARE @FBILLNO varchar(80) - ,@MainNumber varchar(80) - ,@MainName varchar(80) - ,@FMOBILLNO varchar(80) - ,@FNumber varchar(80) - ,@FName varchar(80) - ,@FSALEORDERNO varchar(80) - ,@LCID int - set @FBILLNO = '' - set @MainNumber = '' - set @MainName = '' - set @FMOBILLNO = '' - set @FNumber = '' - set @FName = '' - set @FSALEORDERNO = '' - set @LCID = 2052 - --set @FBILLNO ='' - --set @MainNumber='' - --set @MainName='' - --set @FMOBILLNO='' - --set @FNumber='' - --set @FName='' - --set @FSALEORDERNO='' - --set @LCID=2052 + var proMaterialId = filter.FilterParameter.CustomFilter["ProMaterialId"].Long2Int(); + var materialId = filter.FilterParameter.CustomFilter["MaterialId"].Long2Int(); - SELECT - top 1000 - ROW_NUMBER() OVER(ORDER BY T0.FMATERIALID) AS '行号' --1.行号 - ,T0.FID - --,T0.FFORMID - ,t7.FDATE AS '单据日期' --2.单据日期 - ,T0.FBILLNO AS '生产投料单号'--3.生产投料单号 - --,T0.FMOID --生产订单内码 - ----,T0.FMOENTRYID --生产订单子表内码 - --,t0.FSALEORDERID - --,t0.FSALEORDERENTRYID - ,T0.FSALEORDERNO AS '销售订单号' --4.销售订单号 - --,T0.FMATERIALID --产品ID - --5.购货单位代码 - ,T1.FMNEMONICCODE AS '助记码'--6.助记码 - ,T0.FMOBILLNO AS '生产任务单号'--7.生产任务单号 - ,T1.FNUMBER --AS '产品编码'--8.产品编码 - ,T1_L.FNAME AS '产品名称'--9.产品名称 - ,T1_L.FSPECIFICATION AS '产品规格型号'--10.产品规格型号 - ,T3_L.FNAME AS '产品单位'--11.产品单位 - ,T0.FQTY AS '产品生产数量'--12.产品生产数量 - ,T2.FNUMBER AS '物料代码'--13.物料代码 - ,T2_L.FNAME AS '物料名称'--14.物料名称 - ,(CASE T2.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS '物料来源' --15.物料来源 - ,T2_L.FSPECIFICATION AS '物料规格型号'--16.物料规格型号 - ,t10_L.FNAME AS '物料技术标准'--17.物料技术标准 - ,(T0E.FNUMERATOR / T0E.FDENOMINATOR) AS '物料单位用量' --18.物料单位用量 - --,T0E.FUNITID AS ENTRYUNITID - ,T4_L.FNAME AS '物料单位' --19.物料单位 - ,t9.FBASEQTY AS '物料库存量'--20.物料库存量 - ,T11E_A.FBASEINVQTY - --21.物料待检数 - ,T0E.FNEEDQTY AS '物料总需求'--22.物料总需求 - ,T0E_Q.FBASEWIPQTY AS '当前在制品数量'--23.当前在制品数量 - --,(case when t9.FBASEQTY > T0E.FNEEDQTY then 0 else T0E.FNEEDQTY - t9.FBASEQTY end) AS '欠料'--24.欠料 - ,T11E.FBASELACKQTY AS '欠料'--24.欠料 - ,T11E_A.FBASEONORDERQTY AS '物料在途数' --25.物料在途数 - ,T11E_A.FENTRYID - --26.计划投料数量 - ,T0E_Q.FPICKEDQTY AS '已领数量'--27.已领数量 - ,T0E_Q.FNOPICKEDQTY AS '未领数量'--28.未领数量 - ,T0E.FSTDQTY AS '标准数量'--标准用量 --29.标准数量 - ,T0E.FMUSTQTY AS '应发数量'--应发数量 --30.应发数量 - ,t0E_L.FMEMO AS '备注'--31.备注 - ,T0E_Q.FPICKEDQTY * (100 - t7E.FYIELDRATE) AS '损耗数量'--32.损耗数量 - ,T0E_Q.FSCRAPQTY AS '报废数量' --33.报废数量 - --34.计划发料日期 - ,T0E_C.FSTOCKID - ,T5_L.FNAME --AS '仓库'--35.仓库 - ,T0E_C.FSTOCKLOCID --36.仓位 - ,T0E_Q.FREPICKEDQTY AS '补料数量'--37.补料数量 - ,t7E.FPLANSTARTDATE AS '计划开工日期'--38.计划开工日期 - ,t7E.FPLANFINISHDATE AS '计划完工日期'--39.计划完工日期 - --40.工位 - --,7E.FMEMO AS '其他备注项' --41.其他备注项 - ,t8_L.FMEMO AS 'BOM备注项'--42.BOM备注项 - --,t8.FNUMERATOR - ,(CASE T7e.FPRODUCTTYPE WHEN 1 THEN '主产品' WHEN 2 THEN '主产品' WHEN 3 THEN '主产品' ELSE '' END) AS '生产类型'--43.生产类型 - --,T0.FWORKSHOPID - ,T6_L.FNAME AS '生产车间'--44.生产车间 - ,(CASE T7E_A.FSTATUS WHEN 6 THEN '已结案'ELSE '' END) AS '生产任务单结案否'--45.生产任务单结案否 - ,(CASE t0.FDOCUMENTSTATUS WHEN 'A' THEN '创建' WHEN 'B' THEN '审核中' WHEN 'C' THEN '已审核' WHEN 'D' THEN '重新审核' WHEN 'Z' THEN '暂存' ELSE '' END) AS '生产投料单状态'--46.生产投料单状态 - --47.PR已审未转PO数量 - ,6 AS FDECIMALS - ,{seqFld} - into {tableName} - FROM - T_PRD_MO t7 --生产订单 - LEFT JOIN T_PRD_MOENTRY t7E on t7E.FID = t7.FID - LEFT JOIN T_PRD_MOENTRY_A t7E_A on t7E_A.FENTRYID = t7E.FENTRYID - LEFT JOIN T_PRD_PPBOM T0 on T0.FMOID = t7.FID --生产用料清单 - LEFT JOIN T_PRD_PPBOMENTRY T0E ON T0.FID = T0E.FID AND t0.FMOENTRYSEQ = t7e.FSEQ--生产用料清单子表 - LEFT JOIN T_PRD_PPBOMENTRY_Q T0E_Q ON T0E_Q.FENTRYID = T0E.FENTRYID --生产用料清单数量拆分表 - LEFT JOIN T_PRD_PPBOMENTRY_C T0E_C ON T0E_C.FENTRYID = T0E.FENTRYID - LEFT JOIN T_PRD_PPBOMENTRY_L t0E_L on t0E_L.FENTRYID = T0E.FENTRYID AND t0E_L.FLOCALEID = @LCID - LEFT JOIN T_BD_MATERIAL T1 ON T1.FMATERIALID = T0.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L T1_L ON T1_L.FMATERIALID = T0.FMATERIALID AND T1_L.FLOCALEID = @LCID - LEFT JOIN T_BD_MATERIAL T2 ON T2.FMATERIALID = T0E.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L T2_L ON T2_L.FMATERIALID = T0E.FMATERIALID AND T2_L.FLOCALEID = @LCID - LEFT JOIN T_BD_UNIT_L T3_L ON T3_L.FUNITID = T0.FUNITID AND T3_L.FLOCALEID = @LCID - LEFT JOIN T_BD_UNIT_L T4_L ON T4_L.FUNITID = T0E.FUNITID AND T4_L.FLOCALEID = @LCID - LEFT JOIN T_BD_STOCK_L T5_L ON T5_L.FSTOCKID = T0E_C.FSTOCKID AND T5_L.FLOCALEID =@LCID - LEFT JOIN T_BD_DEPARTMENT_L T6_L ON T6_L.FDEPTID = T0.FWORKSHOPID AND T6_L.FLOCALEID = @LCID - LEFT JOIN T_ENG_BOMCHILD_L t8_L ON t8_L.FENTRYID = T0E.FBOMENTRYID AND t8_L.FLOCALEID = @LCID - LEFT JOIN ( - SELECT - t0.FMATERIALID - ,t0.FSTOCKORGID - ,sum(t0.FBASEQTY) AS FBASEQTY - FROM - T_STK_INVENTORY t0 - GROUP BY - t0.FMATERIALID - ,t0.FSTOCKORGID - ) t9 on t9.FMATERIALID = T2.FMASTERID AND t9.FSTOCKORGID = t2.FUSEORGID - LEFT JOIN T_ENG_ROUTE_L t10_L on t10_L.FID = t7E.FROUTINGID AND t10_L.FLOCALEID = @LCID - LEFT JOIN T_PRD_PMPPBOMENTRY T11E on T11E.FMOID = t7e.FID AND T11E.FMOENTRYID = t7e.FENTRYID AND T11E.FMOENTRYSEQ = t7E.FSEQ AND T11E.FMATERIALIDSUB = T0E.FMATERIALID AND T11E.FMATERIALID = t0.FMATERIALID - LEFT JOIN T_PRD_PMPPBOMENTRY_A T11E_A ON T11E_A.FENTRYID = T11E.FENTRYID - WHERE - T0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE T0.FBILLNO END) - AND T0.FMOBILLNO = (CASE WHEN @FMOBILLNO != '' THEN @FMOBILLNO ELSE T0.FMOBILLNO END) - AND T0.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE T0.FSALEORDERNO END) - AND T1.FNUMBER = (CASE WHEN @MAINNUMBER != '' THEN @MAINNUMBER ELSE T1.FNUMBER END) - AND T1_L.FNAME = (CASE WHEN @MAINNAME != '' THEN @MAINNAME ELSE T1_L.FNAME END) - AND T2.FNUMBER = (CASE WHEN @FNUMBER != '' THEN @FNUMBER ELSE T2.FNUMBER END) - AND T2_L.FNAME = (CASE WHEN @FNAME != '' THEN @FNAME ELSE T2_L.FNAME END) -"; + var BILLNO = filter.FilterParameter.CustomFilter["BILLNO"].ToSafeTurnString(); + var PPBOMBILLNO = filter.FilterParameter.CustomFilter["PPBOMBILLNO"].ToSafeTurnString(); + var SALEORDERNO = filter.FilterParameter.CustomFilter["SALEORDERNO"].ToSafeTurnString(); + + var sql = $@" PROC_PPBOM_RPT '{tableName}', '{seqFld}' ,{proMaterialId} ,{materialId},'{BILLNO}','{PPBOMBILLNO}','{SALEORDERNO}' ,{this.Context.UserLocale.LCID} "; var res = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{sql}"); } @@ -235,128 +124,82 @@ namespace ProductionMaterialsReport { var header = base.GetReportHeaders(filter); int _colIndex = 0; - header.AddChild("FNUMBER", new LocaleValue("产品编码"), _colIndex++); - header.AddChild("FSTOCKID", new LocaleValue("仓库"), _colIndex++); + //var head1 = header.AddChild("FNUMBER", new LocaleValue("产品编码"), _colIndex++); + //head1.Mergeable = true; + //header.AddChild("FIDENTITYID", new LocaleValue("行号"), _colIndex++); + header.AddRange(new List + { + new ListHeader("FDATE", new LocaleValue("单据日期")) + }); + header.AddChild("FDATE", new LocaleValue("单据日期"), _colIndex++).SetHeader(x => { x.Mergeable = true;x.ColType = SqlStorageType.SqlDecimal;}); + header.AddChild("FPPBOMBILLNO", new LocaleValue("生产投料单号"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("FSALEORDERNO", new LocaleValue("销售订单号"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("SaleUnitId", new LocaleValue("购货单位代码"), _colIndex++); + header.AddChild("ProMnemoniccode", new LocaleValue("助记码"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("FBILLNO", new LocaleValue("生产任务单号"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("ProMaterialId", new LocaleValue("产品代码"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("ProName", new LocaleValue("产品名称"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("ProSpecification", new LocaleValue("产品规格型号"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("ProUnitName", new LocaleValue("产品单位"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("FQTY", new LocaleValue("产品生产数量"), _colIndex++).SetHeader(x => { x.Mergeable = true; }); + header.AddChild("MaterialNumber", new LocaleValue("物料代码"), _colIndex++); + header.AddChild("MaterialName", new LocaleValue("物料名称"), _colIndex++); + header.AddChild("Materialsrc", new LocaleValue("物料来源"), _colIndex++); + header.AddChild("MaterialSpecification", new LocaleValue("物料规格型号"), _colIndex++); + header.AddChild("ROUTENAME", new LocaleValue("物料技术标准"), _colIndex++); + header.AddChild("FUnitNeedQty", new LocaleValue("物料单位用量"), _colIndex++); + header.AddChild("MaterialUnitName", new LocaleValue("物料单位"), _colIndex++); + header.AddChild("FBASEQTY", new LocaleValue("物料库存量"), _colIndex++); + header.AddChild("ToBeInspectQTY", new LocaleValue("物料待检数"), _colIndex++); + header.AddChild("FNEEDQTY", new LocaleValue("物料总需求"), _colIndex++); + header.AddChild("FBASEWIPQTY", new LocaleValue("当前在制品数量"), _colIndex++); + header.AddChild("FBASELACKQTY", new LocaleValue("欠料"), _colIndex++); + header.AddChild("FBASEONORDERQTY", new LocaleValue("物料在途数"), _colIndex++); + header.AddChild("PlanThrowInQty", new LocaleValue("计划投料数量"), _colIndex++); + header.AddChild("FPICKEDQTY", new LocaleValue("已领数量"), _colIndex++); + header.AddChild("FNOPICKEDQTY", new LocaleValue("未领数量"), _colIndex++); + header.AddChild("FSTDQTY", new LocaleValue("标准数量"), _colIndex++); + header.AddChild("FMUSTQTY", new LocaleValue("应发数量"), _colIndex++); + header.AddChild("FMEMO", new LocaleValue("备注"), _colIndex++); + header.AddChild("FLossQty", new LocaleValue("损耗数量"), _colIndex++); + header.AddChild("FSCRAPQTY", new LocaleValue("报废数量"), _colIndex++); + header.AddChild("PlanThrowInDate", new LocaleValue("计划发料日期"), _colIndex++); + header.AddChild("FSTOCKNAME", new LocaleValue("仓库"), _colIndex++); header.AddChild("FSTOCKLOCID", new LocaleValue("仓位"), _colIndex++); - return header; - } + header.AddChild("FREPICKEDQTY", new LocaleValue("补料数量"), _colIndex++); + header.AddChild("FPLANSTARTDATE", new LocaleValue("计划开工日期"), _colIndex++); + header.AddChild("FPLANFINISHDATE", new LocaleValue("计划完工日期"), _colIndex++); + header.AddChild("CubicleName", new LocaleValue("工位"), _colIndex++); + header.AddChild("OTHERMEMO", new LocaleValue("其他备注项"), _colIndex++); + header.AddChild("BOMMEMO", new LocaleValue("BOM备注项"), _colIndex++); + header.AddChild("PRODUCTTYPE", new LocaleValue("生产类型"), _colIndex++); + header.AddChild("WORKSHOPNAME", new LocaleValue("生产车间"), _colIndex++); + header.AddChild("StatusIs6", new LocaleValue("生产任务单结案否"), _colIndex++); + header.AddChild("PPBOMStatus", new LocaleValue("生产投料单状态"), _colIndex++); + header.AddChild("PR_C2PO_QTY", new LocaleValue("PR已审未转PO数量"), _colIndex++); - protected override void ExecuteBatch(List listSql) - { - base.ExecuteBatch(listSql); + return header; } public override ReportTitles GetReportTitles(IRptParams filter) { - var result = base.GetReportTitles(filter); - //DynamicObject dyFilter = filter.FilterParameter.CustomFilter; - //if (dyFilter != null) - //{ - // if (result == null) - // { - // result = new ReportTitles(); - // } - // //数据保存状态 - // string saveDataStauts = dyFilter["DataBDStatu"].Long2Int() > 0 ? "1" : "0"; - // result.AddTitle("FDataBDStatu", saveDataStauts); - // result.AddTitle("FDataHoldYear", dyFilter["DataHoldYear"].ToString()); - // result.AddTitle("FDataHoldMonth", dyFilter["DataHoldMonth"].ToString()); - //} - return result; - } + var titles = base.GetReportTitles(filter); + DynamicObject dyFilter = filter.FilterParameter.CustomFilter; + if (dyFilter != null) + { + if (titles == null) + { + titles = new ReportTitles(); + } - protected override string AnalyzeDspCloumn(IRptParams filter, string tablename) - { - string result = base.AnalyzeDspCloumn(filter, tablename); - return result; - } - protected override void AfterCreateTempTable(string tablename) - { - base.AfterCreateTempTable(tablename); - } + var materialId = dyFilter["ProMaterialId_Id"].ToString(); + if (!materialId.IsNullOrEmpty()) + titles.AddTitle("FTitleProMaterialId", materialId); - /// - /// 设置报表合计列 - /// - /// - /// - public override List GetSummaryColumnInfo(IRptParams filter) - { - var result = base.GetSummaryColumnInfo(filter); - return result; - } - protected override string GetSummaryColumsSQL(List summaryFields) - { - var result = base.GetSummaryColumsSQL(summaryFields); - return result; - } - protected override System.Data.DataTable GetListData(string sSQL) - { - var result = base.GetListData(sSQL); - return result; - } - protected override System.Data.DataTable GetReportData(IRptParams filter) - { - var result = base.GetReportData(filter); - return result; - } - protected override System.Data.DataTable GetReportData(string tablename, IRptParams filter) - { - var result = base.GetReportData(tablename, filter); - return result; - } - public override int GetRowsCount(IRptParams filter) - { - var result = base.GetRowsCount(filter); - return result; - } - protected override string BuilderFromWhereSQL(IRptParams filter) - { - string result = base.BuilderFromWhereSQL(filter); - return result; - } - protected override string BuilderSelectFieldSQL(IRptParams filter) - { - string result = base.BuilderSelectFieldSQL(filter); - return result; - } - protected override string BuilderTempTableOrderBySQL(IRptParams filter) - { - string result = base.BuilderTempTableOrderBySQL(filter); - return result; - } - public override void CloseReport() - { - base.CloseReport(); - } - protected override string CreateGroupSummaryData(IRptParams filter, string tablename) - { - string result = base.CreateGroupSummaryData(filter, tablename); - return result; - } - protected override void CreateTempTable(string sSQL) - { - base.CreateTempTable(sSQL); - } - public override void DropTempTable() - { - base.DropTempTable(); - } - public override System.Data.DataTable GetList(IRptParams filter) - { - var result = base.GetList(filter); - return result; - } - public override List GetOrgIdList(IRptParams filter) - { - var result = base.GetOrgIdList(filter); - return result; - } - public override List GetTreeNodes(IRptParams filter) - { - var result = base.GetTreeNodes(filter); - return result; - } + } + + return titles; + } } } diff --git a/ProductionMaterialsReport/SqlServer/仓位值1.sql b/ProductionMaterialsReport/SqlServer/仓位值1.sql new file mode 100644 index 0000000..2befea2 --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/仓位值1.sql @@ -0,0 +1,37 @@ +SELECT * FROM T_BD_STOCK +SELECT * FROM T_BD_STOCKFLEXITEM +SELECT * FROM T_BD_STOCKFLEXDETAIL +SELECT * FROM T_BAS_FLEXVALUES +SELECT * FROM T_BAS_FLEXVALUESENTRY +SELECT * FROM T_BAS_FLEXVALUESENTRY_L +SELECT * FROM T_BD_FLEXVALUESCOM +SELECT * FROM T_BAS_FLEXVALUESDETAIL + +SELECT + t1.FNUMBER + ,t1_l.FNAME + ,t0.FMATERIALID + ,t0.FSTOCKID + ,t0.FSTOCKLOCID + ,stuff((select CAST(t2.FF100001 AS varchar) +'.'+ CAST(t2.FF100002 AS varchar) FROM T_BAS_FLEXVALUESDETAIL t2 WHERE t2.FID = t0.FSTOCKLOCID for xml path('')),1,1,'') +FROM T_STK_INVENTORY t0 + LEFT JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t1_l on t1_l.FMATERIALID = t0.FMATERIALID AND t1_l.FLOCALEID = 2052 + --LEFT JOIN T_BAS_FLEXVALUESDETAIL t2 on t2.FID = t0.FSTOCKLOCID +WHERE + t0.FSTOCKLOCID > 0 + +DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX); +SELECT @columns = COALESCE(@columns + ',', '') + CONCAT('t0.',t0.FFLEXNUMBER) +FROM T_BAS_FLEXVALUES t0 +WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FFORBIDSTATUS = 'A' + +SET @sql = N' +SELECT + t0.FID + ,CONCAT(' + @columns + ' +''.'', '''') +FROM T_BAS_FLEXVALUESDETAIL t0 + +'; + +EXEC sp_executesql @sql; \ No newline at end of file diff --git a/ProductionMaterialsReport/SqlServer/仓位值2.sql b/ProductionMaterialsReport/SqlServer/仓位值2.sql new file mode 100644 index 0000000..9cadc9b --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/仓位值2.sql @@ -0,0 +1,26 @@ +DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX),@LOCALEID char(10); +SET @LOCALEID = '2052' +SELECT @columns = COALESCE(@columns + ',', '') + CONCAT('',t0.FFLEXNUMBER) +FROM T_BAS_FLEXVALUES t0 +WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FFORBIDSTATUS = 'A' + +SET @SQL = N' +SELECT + t0.FID + ,t0.aColumn + ,t0.aValue + ,t1e_l.FNAME + ,ROW_NUMBER() OVER (PARTITION BY t0.FID ORDER BY t1.FNUMBER) AS RowId +FROM + (SELECT FID,'+@columns+' + FROM T_BAS_FLEXVALUESDETAIL) AS P +UNPIVOT + (aValue FOR aColumn IN + ('+@columns+') + )AS t0 + INNER JOIN T_BAS_FLEXVALUES t1 on t1.FFLEXNUMBER = t0.aColumn + INNER JOIN T_BAS_FLEXVALUESENTRY_L t1e_l on t0.aValue = t1e_l.FENTRYID AND t1e_l.FLOCALEID = '+@LOCALEID+' +;'; +EXEC(@SQL); + +--SELECT * FROM T_BAS_FLEXVALUES diff --git a/ProductionMaterialsReport/SqlServer/存储过程-生产用料清单.sql b/ProductionMaterialsReport/SqlServer/存储过程-生产用料清单.sql index 0336454..8ac22b6 100644 --- a/ProductionMaterialsReport/SqlServer/存储过程-生产用料清单.sql +++ b/ProductionMaterialsReport/SqlServer/存储过程-生产用料清单.sql @@ -3,94 +3,152 @@ IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_PPBOM_RPT') GO CREATE PROCEDURE PROC_PPBOM_RPT - @FBILLNO varchar(80) - ,@MainNumber varchar(80) - ,@MainName varchar(80) - ,@FMOBILLNO varchar(80) - ,@FNumber varchar(80) - ,@FName varchar(80) + @tableName varchar(80) + ,@seqFid varchar(80) + ,@proMaterialId int + ,@materialId int + ,@FBILLNO varchar(80) + ,@FPPBOMBILLNO varchar(80) ,@FSALEORDERNO varchar(80) ,@LCID int AS BEGIN +SELECT + --ROW_NUMBER() OVER(ORDER BY t0.FID) AS FIDENTITYID--1.к + t0.FID + ,t0e.FSEQ + ,t0e.FENTRYID + ,t0.FDATE --2. + ,t0e.FPLANSTARTDATE--38.ƻ + ,t0e.FPLANFINISHDATE--39.ƻ깤 + ,t0e.FSALEORDERNO --4.۶ + ,t0.FBILLNO--7.񵥺 + ,t0e.FQTY--12.Ʒ + --,t0e.FSTOCKID--35.ֿ + --,t0e.FSTOCKLOCID--36.λ + ,t0e.FYIELDRATE + ,t0e.FROUTINGID + ,(CASE t0e_a.FSTATUS WHEN 6 THEN 'ѽ᰸'ELSE '' END) AS 'StatusIs6'--45.񵥽᰸ + ,(CASE t0e.FPRODUCTTYPE WHEN 1 THEN 'Ʒ' WHEN 2 THEN 'Ʒ' WHEN 3 THEN 'Ʒ' ELSE '' END) AS 'PRODUCTTYPE'--43. + ,t0e.FMATERIALID AS 'ProMaterialId' + ,t1.FMNEMONICCODE AS 'ProMnemoniccode'--6. + ,t1.FNUMBER AS 'ProNumber'--8.Ʒ + ,t1_l.FNAME AS 'ProName'--9.Ʒ + ,t1_l.FSPECIFICATION AS 'ProSpecification'--10.Ʒͺ + ,t2_l.FUNITID AS 'PrdUnitId' + ,t2_l.FNAME AS 'ProUnitName'--11.Ʒλ + --,(CASE t1.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'ProMaterialsrc' --15.Դ + INTO #TmpTable0 + FROM + T_PRD_MO t0 + INNER JOIN T_PRD_MOENTRY t0e on t0e.FID = t0.FID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = t0e.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = t0e.FMATERIALID AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = t0e.FUNITID AND t2_l.FLOCALEID = @LCID + WHERE + t0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE t0.FBILLNO END) + AND t0e.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE t0e.FSALEORDERNO END) + AND t0e.FMATERIALID = (CASE WHEN @proMaterialId <> 0 THEN @proMaterialId ELSE t0e.FMATERIALID END) + --AND T1.FNUMBER = (CASE WHEN @MAINNUMBER != '' THEN @MAINNUMBER ELSE T1.FNUMBER END) + --AND T1_L.FNAME = (CASE WHEN @MAINNAME != '' THEN @MAINNAME ELSE T1_L.FNAME END) + SELECT - ROW_NUMBER() OVER(ORDER BY T0.FMATERIALID) AS 'к' --1.к - --,T0.FID - --,T0.FFORMID - --2. - ,T0.FBILLNO AS 'Ͷϵ'--3.Ͷϵ - --,T0.FMOID -- - --,T0.FMOENTRYID --ӱ - ,T0.FSALEORDERNO AS '۶' --4.۶ - --,T0.FMATERIALID --ƷID - --5.λ - ,T1.FMNEMONICCODE AS ''--6. - ,T0.FMOBILLNO AS '񵥺'--7.񵥺 - ,T1.FNUMBER AS 'Ʒ'--8.Ʒ - ,T1_L.FNAME AS 'Ʒ'--9.Ʒ - ,T1_L.FSPECIFICATION AS 'Ʒͺ'--10.Ʒͺ - --,T0.FBOMID - --,T0.FUNITID - ,T3_L.FNAME AS 'Ʒλ'--11.Ʒλ - ,T0.FQTY AS 'Ʒ'--12.Ʒ - ,T0E.FMATERIALID AS ENTRYMATERIALID --ID - ,T2.FNUMBER AS 'ϴ'--13.ϴ - ,T2_L.FNAME AS ''--14. - ,(CASE T2.FMATERIALSRC WHEN 'T0' THEN 'PLM' WHEN 'T1' THEN 'ERP' ELSE '' END) AS 'Դ' --15.Դ - ,T2_L.FSPECIFICATION AS 'Ϲͺ'--16.Ϲͺ - --17.ϼ׼ - ,(T0E.FNUMERATOR / T0E.FDENOMINATOR) AS 'ϵλ' --18.ϵλ - --,T0E.FUNITID AS ENTRYUNITID - ,T4_L.FNAME AS 'ϵλ' --19.ϵλ - --20.Ͽ - --21.ϴ - ,T0E.FNEEDQTY AS ''--22. - --,T0E.FWIPQTY --23.ǰƷ - --24.Ƿ - --25.; - --26.ƻͶ - ,T0E_Q.FPICKEDQTY AS ''--27. - ,T0E_Q.FNOPICKEDQTY AS 'δ'--28.δ - ,T0E.FSTDQTY AS '׼'--׼ --29.׼ - ,T0E.FMUSTQTY AS 'Ӧ'--Ӧ --30.Ӧ - --,T0E.FMEMO AS 'ע'--31.ע - --32. - ,T0E_Q.FSCRAPQTY AS '' --33. - --34.ƻ - --,T0E_C.FSTOCKID - ,T5_L.FNAME AS 'ֿ'--35.ֿ - ,T0E_C.FSTOCKLOCID --36.λ - ,T0E_Q.FREPICKEDQTY AS ''--37. - --,T0E.F_ORA_JHKGSJ AS 'ƻ'--38.ƻ - --,T0E.F_ORA_JHWGSJ AS 'ƻ깤'--39.ƻ깤 - --40.λ - --41.ע - --42.BOMע - --43. - ,T0.FWORKSHOPID - ,T6_L.FNAME AS ''--44. - --45.񵥽᰸ - --46.Ͷϵ״̬ - --47.PRδתPO - FROM - T_PRD_PPBOM T0 --嵥 - LEFT JOIN T_PRD_PPBOMENTRY T0E ON T0.FID = T0E.FID --嵥ӱ - LEFT JOIN T_PRD_PPBOMENTRY_Q T0E_Q ON T0E_Q.FENTRYID = T0E.FENTRYID --嵥ֱ - LEFT JOIN T_PRD_PPBOMENTRY_C T0E_C ON T0E_C.FENTRYID = T0E.FENTRYID - LEFT JOIN T_BD_MATERIAL T1 ON T1.FMATERIALID = T0.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L T1_L ON T1_L.FMATERIALID = T0.FMATERIALID AND T1_L.FLOCALEID = @LCID - LEFT JOIN T_BD_MATERIAL T2 ON T2.FMATERIALID = T0E.FMATERIALID - LEFT JOIN T_BD_MATERIAL_L T2_L ON T2_L.FMATERIALID = T0E.FMATERIALID AND T2_L.FLOCALEID = @LCID - LEFT JOIN T_BD_UNIT_L T3_L ON T3_L.FUNITID = T0.FUNITID AND T3_L.FLOCALEID = @LCID - LEFT JOIN T_BD_UNIT_L T4_L ON T4_L.FUNITID = T0E.FUNITID AND T4_L.FLOCALEID = @LCID - LEFT JOIN T_BD_STOCK_L T5_L ON T5_L.FSTOCKID = T0E_C.FSTOCKID AND T5_L.FLOCALEID =@LCID - LEFT JOIN T_BD_DEPARTMENT_L T6_L ON T6_L.FDEPTID = T0.FWORKSHOPID AND T6_L.FLOCALEID = @LCID - WHERE - t0.FBILLNO = (case when @FBILLNO != '' then @FBILLNO else t0.FBILLNO end) - and t0.FMOBILLNO = (case when @FMOBILLNO != '' then @FMOBILLNO else t0.FMOBILLNO end) - and t0.FSALEORDERNO = (case when @FSALEORDERNO != '' then @FSALEORDERNO else t0.FSALEORDERNO end) - and t1.FNUMBER = (case when @MainNumber != '' then @MainNumber else t1.FNUMBER end) - and T1_L.FNAME = (case when @MainName != '' then @MainName else T1_L.FNAME end) - and T2.FNUMBER = (case when @FNumber != '' then @FNumber else T2.FNUMBER end) - and t2_L.FNAME = (case when @FName != '' then @FName else t2_L.FNAME end) + t1.* + ,t0.FBILLNO AS 'FPPBOMBILLNO'--3.Ͷϵ + ,t0e.FMATERIALID + ,(t0e.FNUMERATOR / t0e.FDENOMINATOR) AS 'FUnitNeedQty' --18.ϵλ + ,t0e.FNEEDQTY --22. + ,t0e.FUNITID + ,t0e.FBOMENTRYID + ,t0e_q.FBASEWIPQTY --23.ǰƷ + ,t0e_q.FPICKEDQTY --27. + ,t0e_q.FNOPICKEDQTY --28.δ + ,t0e.FSTDQTY --׼ --29.׼ + ,t0e.FMUSTQTY --Ӧ --30.Ӧ + ,t0e_l.FMEMO --31.ע + ,t0e_q.FPICKEDQTY * (100 - t1.FYIELDRATE) AS 'FLossQty'--32. + ,t0e_q.FSCRAPQTY --33. + ,t0e_q.FREPICKEDQTY --37. + ,t0.FWORKSHOPID + ,t0e_c.FSTOCKID + ,t0e_c.FSTOCKLOCID + ,(CASE t0.FDOCUMENTSTATUS WHEN 'A' THEN '' WHEN 'B' THEN '' WHEN 'C' THEN '' WHEN 'D' THEN '' WHEN 'Z' THEN 'ݴ' ELSE '' END) AS 'PPBOMStatus'--46.Ͷϵ״̬ + INTO #TmpTable1 + FROM + #TmpTable0 t1 + LEFT JOIN T_PRD_PPBOM t0 on t1.FID = t0.FMOID AND t0.FMOENTRYSEQ = t1.FSEQ AND t0.FMOENTRYSEQ = t1.FSEQ --嵥 + INNER JOIN T_PRD_PPBOMENTRY t0e ON t0.FID = t0e.FID + LEFT JOIN T_PRD_PPBOMENTRY_Q t0e_q ON t0e_q.FENTRYID = t0e.FENTRYID --嵥ֱ + LEFT JOIN T_PRD_PPBOMENTRY_C t0e_c ON t0e_c.FENTRYID = t0e.FENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_L t0e_l on t0e_l.FENTRYID = t0e.FENTRYID AND t0e_l.FLOCALEID = @LCID + WHERE + T0.FBILLNO = (CASE WHEN @FPPBOMBILLNO != '' THEN @FPPBOMBILLNO ELSE T0.FBILLNO END) + AND t0e.FMATERIALID = (CASE WHEN @materialId <> 0 THEN @materialId ELSE t0e.FMATERIALID END) + + SELECT + t0.* + ,t1.FNUMBER AS 'MaterialNumber'--8.ϱ + ,t1_l.FNAME AS 'MaterialName'--9. + ,t1_l.FSPECIFICATION AS 'MaterialSpecification'--10.Ϲͺ + ,t2_l.FNAME AS 'MaterialUnitName'--11.ϵλ + ,(CASE t1.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'Materialsrc' --15.Դ + ,t4_l.FNAME AS 'WORKSHOPNAME' --44. + ,t1.FMASTERID + ,t1.FUSEORGID + ,t5_l.FMEMO AS 'BOMMEMO' --42.BOMע + ,t3_l.FNAME AS 'FSTOCKNAME' + into #TmpTable2 + FROM + #TmpTable1 t0 + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = t0.FMATERIALID AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = t0.FUNITID AND t2_l.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L t3_l ON t3_l.FSTOCKID = t0.FSTOCKID AND t3_l.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L t4_l on t4_l.FDEPTID = t0.FWORKSHOPID AND t4_l.FLOCALEID = @LCID + LEFT JOIN T_ENG_BOMCHILD_L t5_l ON t5_l.FENTRYID = t0.FBOMENTRYID AND t5_L.FLOCALEID = @LCID + --WHERE + --t1.FNUMBER = (CASE WHEN @FNUMBER != '' THEN @FNUMBER ELSE t1.FNUMBER END) + --AND t1_L.FNAME = (CASE WHEN @FNAME != '' THEN @FNAME ELSE t1_L.FNAME END) + + SELECT + t0.* + ,t1.FBASEQTY + ,t2_l.FNAME AS 'ROUTENAME' + ,t3e_A.FBASEINVQTY + ,t3e.FBASELACKQTY AS 'FBASELACKQTY'--24.Ƿ + ,t3e_A.FBASEONORDERQTY AS 'FBASEONORDERQTY' --25.; + ,6 AS 'LOWEST6' + INTO #TmpTable3 + FROM + #TmpTable2 t0 + LEFT JOIN ( + SELECT + t0.FMATERIALID + ,t0.FSTOCKORGID + ,sum(t0.FBASEQTY) AS FBASEQTY + FROM + T_STK_INVENTORY t0 + GROUP BY + t0.FMATERIALID + ,t0.FSTOCKORGID + ) t1 on t1.FMATERIALID = t0.FMASTERID AND t1.FSTOCKORGID = t0.FUSEORGID + LEFT JOIN T_ENG_ROUTE_L t2_L on t2_L.FID = t0.FROUTINGID AND t2_L.FLOCALEID = @LCID + LEFT JOIN T_PRD_PMPPBOMENTRY t3e on t3e.FMOID = t0.FID AND t3e.FMOENTRYID = t0.FENTRYID AND t3e.FMOENTRYSEQ = t0.FSEQ AND t3e.FMATERIALIDSUB = t0.FMATERIALID --AND t3e.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_PRD_PMPPBOMENTRY_A t3e_A ON t3e_A.FENTRYID = t3e.FENTRYID + + + exec(N' + SELECT + t0.* + ,' + @seqFid+ ' + INTO ' + @tableName + ' + FROM + #TmpTable3 t0 + ') + + drop table #TmpTable0 + drop table #TmpTable1 + drop table #TmpTable2 + drop table #TmpTable3 END diff --git a/ProductionMaterialsReport/SqlServer/生产用料清单查询.sql b/ProductionMaterialsReport/SqlServer/生产用料清单查询.sql new file mode 100644 index 0000000..1e71622 --- /dev/null +++ b/ProductionMaterialsReport/SqlServer/生产用料清单查询.sql @@ -0,0 +1,192 @@ + IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].TMP123123123123123') AND type IN ('U')) + DROP TABLE [dbo].TMP123123123123123 + GO + + declare @tableName varchar(80) + ,@seqFid varchar(80) + ,@proMaterialId int + ,@materialId int + ,@FBILLNO varchar(80) + ,@FPPBOMBILLNO varchar(80) + ,@FSALEORDERNO varchar(80) + ,@LCID int + + SET @tableName = 'TMP123123123123123' + SET @seqFid = 'ROW_NUMBER() OVER(ORDER BY t0.FID) AS FIDENTITYID' + SET @proMaterialId = '' + SET @materialId = '' + SET @FBILLNO = '' + SET @FPPBOMBILLNO = '' + SET @FSALEORDERNO = '' + SET @LCID = 2052 + SELECT + --ROW_NUMBER() OVER(ORDER BY t0.FID) AS FIDENTITYID--1.к + t0.FID + ,t0e.FSEQ + ,t0e.FENTRYID + ,t0.FDATE --2. + ,t0e.FPLANSTARTDATE--38.ƻ + ,t0e.FPLANFINISHDATE--39.ƻ깤 + ,t0e.FSALEORDERNO --4.۶ + ,t0.FBILLNO--7.񵥺 + ,t0e.FQTY--12.Ʒ + --,t0e.FSTOCKID--35.ֿ + --,t0e.FSTOCKLOCID--36.λ + ,t0e.FYIELDRATE + ,t0e.FROUTINGID + ,(CASE t0e_a.FSTATUS WHEN 6 THEN 'ѽ᰸'ELSE '' END) AS 'StatusIs6'--45.񵥽᰸ + ,(CASE t0e.FPRODUCTTYPE WHEN 1 THEN 'Ʒ' WHEN 2 THEN 'Ʒ' WHEN 3 THEN 'Ʒ' ELSE '' END) AS 'PRODUCTTYPE'--43. + ,t0e.FMATERIALID AS 'ProMaterialId' + ,t1.FMNEMONICCODE AS 'ProMnemoniccode'--6. + ,t1.FNUMBER AS 'ProNumber'--8.Ʒ + ,t1_l.FNAME AS 'ProName'--9.Ʒ + ,t1_l.FSPECIFICATION AS 'ProSpecification'--10.Ʒͺ + ,t2_l.FUNITID AS 'PrdUnitId' + ,t2_l.FNAME AS 'ProUnitName'--11.Ʒλ + --,(CASE t1.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'ProMaterialsrc' --15.Դ + INTO #TmpTable0 + FROM + T_PRD_MO t0 + INNER JOIN T_PRD_MOENTRY t0e on t0e.FID = t0.FID + INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = t0e.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = t0e.FMATERIALID AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = t0e.FUNITID AND t2_l.FLOCALEID = @LCID + LEFT JOIN ( + SELECT + t0e.FMOENTRYID + ,t0e.FMOENTRYSEQ + ,t0e.FMATERIALID + ,SUM(t0e_A.FBASESELINSPECTQTY) AS 'FBASESELINSPECTQTY'--ѡ + ,SUM(t0e_A.FBASEINSPECTQTY) AS 'FBASEINSPECTQTY' -- + ,SUM(t0e.FBASEFINISHQTY) AS 'FBASEFINISHQTY'-- + FROM T_PRD_MORPT t0 + INNER JOIN T_PRD_MORPTENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MORPTENTRY_A t0e_A on t0e_A.FENTRYID = t0e.FENTRYID + GROUP BY + t0e.FMOENTRYID + ,t0e.FMOENTRYSEQ + ,t0e.FMATERIALID + ) t3 on t3.FMATERIALID = t0e.FMATERIALID AND t3.FMOENTRYID = t0e.FENTRYID AND t3.FMOENTRYSEQ = t0e.FSEQ + WHERE + t0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE t0.FBILLNO END) + AND t0e.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE t0e.FSALEORDERNO END) + AND t0e.FMATERIALID = (CASE WHEN @proMaterialId <> 0 THEN @proMaterialId ELSE t0e.FMATERIALID END) + --AND T1.FNUMBER = (CASE WHEN @MAINNUMBER != '' THEN @MAINNUMBER ELSE T1.FNUMBER END) + --AND T1_L.FNAME = (CASE WHEN @MAINNAME != '' THEN @MAINNAME ELSE T1_L.FNAME END) + + SELECT + t0e.FMOENTRYID + ,t0e.FMOENTRYSEQ + ,t0e.FMATERIALID + ,SUM(t0e_A.FBASESELINSPECTQTY) AS 'FBASESELINSPECTQTY'--ѡ + ,SUM(t0e_A.FBASEINSPECTQTY) AS 'FBASEINSPECTQTY' -- + ,SUM(t0e.FBASEFINISHQTY) AS 'FBASEFINISHQTY'-- + FROM T_PRD_MORPT t0 + INNER JOIN T_PRD_MORPTENTRY t0e on t0.FID = t0e.FID + INNER JOIN T_PRD_MORPTENTRY_A t0e_A on t0e_A.FENTRYID = t0e.FENTRYID + GROUP BY + t0e.FMOENTRYID + ,t0e.FMOENTRYSEQ + ,t0e.FMATERIALID + + SELECT + t1.* + ,t0.FBILLNO AS 'FPPBOMBILLNO'--3.Ͷϵ + ,t0e.FMATERIALID + ,(t0e.FNUMERATOR / t0e.FDENOMINATOR) AS 'FUnitNeedQty' --18.ϵλ + ,t0e.FNEEDQTY --22. + ,t0e.FUNITID + ,t0e.FBOMENTRYID + ,t0e_q.FBASEWIPQTY --23.ǰƷ + ,t0e_q.FPICKEDQTY --27. + ,t0e_q.FNOPICKEDQTY --28.δ + ,t0e.FSTDQTY --׼ --29.׼ + ,t0e.FMUSTQTY --Ӧ --30.Ӧ + ,t0e_l.FMEMO --31.ע + ,t0e_q.FPICKEDQTY * (100 - t1.FYIELDRATE) AS 'FLossQty'--32. + ,t0e_q.FSCRAPQTY --33. + ,t0e_q.FREPICKEDQTY --37. + ,t0.FWORKSHOPID + ,t0e_c.FSTOCKID + ,t0e_c.FSTOCKLOCID + ,(CASE t0.FDOCUMENTSTATUS WHEN 'A' THEN '' WHEN 'B' THEN '' WHEN 'C' THEN '' WHEN 'D' THEN '' WHEN 'Z' THEN 'ݴ' ELSE '' END) AS 'PPBOMStatus'--46.Ͷϵ״̬ + INTO #TmpTable1 + FROM + #TmpTable0 t1 + LEFT JOIN T_PRD_PPBOM t0 on t1.FID = t0.FMOID AND t0.FMOENTRYSEQ = t1.FSEQ AND t0.FMOENTRYSEQ = t1.FSEQ --嵥 + INNER JOIN T_PRD_PPBOMENTRY t0e ON t0.FID = t0e.FID + LEFT JOIN T_PRD_PPBOMENTRY_Q t0e_q ON t0e_q.FENTRYID = t0e.FENTRYID --嵥ֱ + LEFT JOIN T_PRD_PPBOMENTRY_C t0e_c ON t0e_c.FENTRYID = t0e.FENTRYID + LEFT JOIN T_PRD_PPBOMENTRY_L t0e_l on t0e_l.FENTRYID = t0e.FENTRYID AND t0e_l.FLOCALEID = @LCID + WHERE + T0.FBILLNO = (CASE WHEN @FPPBOMBILLNO != '' THEN @FPPBOMBILLNO ELSE T0.FBILLNO END) + AND t0e.FMATERIALID = (CASE WHEN @materialId <> 0 THEN @materialId ELSE t0e.FMATERIALID END) + + SELECT + t0.* + ,t1.FNUMBER AS 'MaterialNumber'--8.ϱ + ,t1_l.FNAME AS 'MaterialName'--9. + ,t1_l.FSPECIFICATION AS 'MaterialSpecification'--10.Ϲͺ + ,t2_l.FNAME AS 'MaterialUnitName'--11.ϵλ + ,(CASE t1.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'Materialsrc' --15.Դ + ,t4_l.FNAME AS 'WORKSHOPNAME' --44. + ,t1.FMASTERID + ,t1.FUSEORGID + ,t5_l.FMEMO AS 'BOMMEMO' --42.BOMע + ,t3_l.FNAME AS 'FSTOCKNAME' + into #TmpTable2 + FROM + #TmpTable1 t0 + LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = t0.FMATERIALID AND t1_l.FLOCALEID = @LCID + LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = t0.FUNITID AND t2_l.FLOCALEID = @LCID + LEFT JOIN T_BD_STOCK_L t3_l ON t3_l.FSTOCKID = t0.FSTOCKID AND t3_l.FLOCALEID =@LCID + LEFT JOIN T_BD_DEPARTMENT_L t4_l on t4_l.FDEPTID = t0.FWORKSHOPID AND t4_l.FLOCALEID = @LCID + LEFT JOIN T_ENG_BOMCHILD_L t5_l ON t5_l.FENTRYID = t0.FBOMENTRYID AND t5_L.FLOCALEID = @LCID + --WHERE + --t1.FNUMBER = (CASE WHEN @FNUMBER != '' THEN @FNUMBER ELSE t1.FNUMBER END) + --AND t1_L.FNAME = (CASE WHEN @FNAME != '' THEN @FNAME ELSE t1_L.FNAME END) + + SELECT + t0.* + ,t1.FBASEQTY + ,t2_l.FNAME AS 'ROUTENAME' + ,t3e_A.FBASEINVQTY + ,t3e.FBASELACKQTY AS 'FBASELACKQTY'--24.Ƿ + ,t3e_A.FBASEONORDERQTY AS 'FBASEONORDERQTY' --25.; + ,6 AS 'LOWEST6' + INTO #TmpTable3 + FROM + #TmpTable2 t0 + LEFT JOIN ( + SELECT + t0.FMATERIALID + ,t0.FSTOCKORGID + ,sum(t0.FBASEQTY) AS FBASEQTY + FROM + T_STK_INVENTORY t0 + GROUP BY + t0.FMATERIALID + ,t0.FSTOCKORGID + ) t1 on t1.FMATERIALID = t0.FMASTERID AND t1.FSTOCKORGID = t0.FUSEORGID + LEFT JOIN T_ENG_ROUTE_L t2_L on t2_L.FID = t0.FROUTINGID AND t2_L.FLOCALEID = @LCID + LEFT JOIN T_PRD_PMPPBOMENTRY t3e on t3e.FMOID = t0.FID AND t3e.FMOENTRYID = t0.FENTRYID AND t3e.FMOENTRYSEQ = t0.FSEQ AND t3e.FMATERIALIDSUB = t0.FMATERIALID --AND t3e.FMATERIALID = t0.FMATERIALID + LEFT JOIN T_PRD_PMPPBOMENTRY_A t3e_A ON t3e_A.FENTRYID = t3e.FENTRYID + + + exec(N' + SELECT + t0.* + ,' + @seqFid+ ' + INTO ' + @tableName + ' + FROM + #TmpTable3 t0 + ') + + drop table #TmpTable0 + drop table #TmpTable1 + drop table #TmpTable2 + drop table #TmpTable3 + + exec(N'SELECT * FROM '+ @tableName) \ No newline at end of file diff --git a/ProductionMaterialsReport/TablePlugIn.cs b/ProductionMaterialsReport/TablePlugIn.cs new file mode 100644 index 0000000..06a4bae --- /dev/null +++ b/ProductionMaterialsReport/TablePlugIn.cs @@ -0,0 +1,27 @@ +using Kingdee.BOS; +using Kingdee.BOS.Core.Bill; +using Kingdee.BOS.Core.Report.PlugIn; +using Kingdee.BOS.Core.Report.PlugIn.Args; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HW.ProductionMaterialsReport +{ + public class TablePlugIn : AbstractSysReportPlugIn + { + public override void FormatCellValue(FormatCellValueArgs args) + { + var billParam = new BillShowParameter(); + + } + + public override void CellDbClick(CellEventArgs args) + { + base.CellDbClick(args); + + + } + } +} diff --git a/SQLQuery1.sql b/SQLQuery1.sql new file mode 100644 index 0000000..3ad826f --- /dev/null +++ b/SQLQuery1.sql @@ -0,0 +1,168 @@ +SELECT + t0.FID --id + ,t0.FBILLNO + ,t2.FID 'FORECAST_ID' + ,t2e.FENTRYID 'FORECASTENTRY_ID' + ,t2.FBILLNO 'F_FORECASTNUMBER' + ,t2e.FSEQ 'F_LINENUMBER' + ,t2e.FCUSTID 'F_CUSTOMERNAME' + ,t2e.FMATERIALID 'F_MATERIALCODE' --Ԥⵥid + ,t2e.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t2e.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + INTO #TEMP_PLANORDER_ID_LIST +FROM T_PLN_PLANORDER t0 + INNER JOIN T_PLN_RESERVELINKENTRY t1e ON t1e.FINTSUPPLYID = t0.FID + INNER JOIN T_PLN_RESERVELINK t1 ON t1.FID = t1e.FID + INNER JOIN T_PLN_FORECASTENTRY t2e ON t2e.FENTRYID = t1.FSRCENTRYID + INNER JOIN T_PLN_FORECAST t2 on t2.fid = t2e.FID +WHERE 1=1 + --AND t0.F_FORECASTNUMBER = '' + --AND t0_b.FDEMANDTYPE = 2 + AND CONVERT(nvarchar(100),t0.FCREATEDATE,23) = '2024-01-18' +--GROUP BY +-- t0.FID + +CREATE INDEX #TEMP_PLANORDER_ID_LIST_INDEX_FID ON #TEMP_PLANORDER_ID_LIST(FID); +SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,t0.F_LINENUMBER + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + ,t0.F_REMARK + ,t3.TOTAL + INTO #TEMP_PLANORDER_RESERVELINK + +FROM #TEMP_PLANORDER_ID_LIST t0 + INNER JOIN (SELECT FID,COUNT(1) TOTAL FROM #TEMP_PLANORDER_ID_LIST GROUP BY FID ) t3 on t3.FID = t0.FID --AND t3.total = 1 +WHERE 1=1 + --AND t0.F_FORECASTNUMBER = '' +ALTER TABLE #TEMP_PLANORDER_RESERVELINK ADD F_DESCRIPTION varchar(255); + +CREATE INDEX #TEMP_PLANORDER_RESERVELINK_INDEX ON #TEMP_PLANORDER_RESERVELINK(FID); + +UPDATE t0 +SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + ,t0.F_LINENUMBER = tt.F_LINENUMBER + ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + ,t0.F_REMARK = ISNULL(t1e_l.FDESCRIPTION,'') +FROM T_PLN_PLANORDER t0 + INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0.FID = tt.FID AND tt.TOTAL = 1 + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = tt.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052 + +UPDATE t0 +SET t0_l.F_DESCRIPTION = t1_l.FDESCRIPTION +FROM T_PLN_PLANORDER_L t0_l + INNER JOIN #TEMP_PLANORDER_RESERVELINK tt on t0.FID = tt.FID AND tt.TOTAL = 1 + INNER JOIN T_PLN_FORECAST_L t1_l on tt.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052 + + +SELECT + t0.FID --id + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.FORECASTENTRY_ID + ,t0.F_FORECASTNUMBER + ,DENSE_RANK() over(partition BY t0.FID order by t0.FORECAST_ID) 'FORECASTNUMBER_SEQ' + ,t0.F_LINENUMBER + ,ROW_NUMBER() over(partition BY t0.FID,t0.FORECAST_ID order by t0.F_LINENUMBER) 'LINENUMBER_SEQ' + ,t0.F_CUSTOMERNAME + ,t0.F_MATERIALCODE --Ԥⵥid + ,t0.F_SOURCE_ORDER_LINE_NUMBER --۶к + ,t0.F_SOURCE_ORDER_NUMBER --۶# + --,t0.F_REMARK + --,ISNULL(t1_l.FDESCRIPTION,'') AS F_DESCRIPTION + ,t1_l.FDESCRIPTION F_DESCRIPTION + --,ISNULL(t1e_l.FDESCRIPTION,'') AS F_REMARK --屸ע + ,t1e_l.FDESCRIPTION F_REMARK + ,t0.TOTAL + ,DENSE_RANK() over(partition BY t0.FID order by t0.F_MATERIALCODE) 'DENSE_RANK_NUM' +INTO #TEMP_PLANORDER_RESERVELINK2 +FROM + #TEMP_PLANORDER_RESERVELINK t0 + LEFT JOIN T_PLN_FORECAST_L t1_l on t0.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052 + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = t0.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052 +WHERE 1 = 1 + AND TOTAL > 1 +ORDER BY FID + +CREATE INDEX #TEMP_PLANORDER_RESERVELINK2_INDEX ON #TEMP_PLANORDER_RESERVELINK2(FID); + +UPDATE t0 SET t0.F_MATERIALCODE = 0,t0.F_CUSTOMERNAME = 0 +FROM #TEMP_PLANORDER_RESERVELINK2 t0,(SELECT FID FROM #TEMP_PLANORDER_RESERVELINK2 WHERE DENSE_RANK_NUM = 2) t1 WHERE t0.FID = t1.FID + +SELECT + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ','+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID AND tt.F_MATERIALCODE = t0.F_MATERIALCODE for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select ';'+ tt.F_REMARK from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID AND tt.F_MATERIALCODE = t0.F_MATERIALCODE for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ','+ CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID and tt.FORECAST_ID = t0.FORECAST_ID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP +FROM #TEMP_PLANORDER_RESERVELINK2 t0 +GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.FORECAST_ID + ,t0.F_FORECASTNUMBER + ,t0.F_DESCRIPTION + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME +CREATE INDEX #TEMP_INDEX ON #TEMP(FID); + +SELECT + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_LINENUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_LINENUMBER' + ,ISNULL(stuff((select ';'+ CONVERT(nvarchar(100), tt.F_FORECASTNUMBER) from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_FORECASTNUMBER' + ,ISNULL(stuff((select ';'+ tt.F_REMARK from #TEMP tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_REMARK' + ,ISNULL(stuff((select ';'+ tt.F_DESCRIPTION from #TEMP tt where tt.FID = t0.FID for xml path('')),1,1,''),'') 'F_DESCRIPTION' + ,ISNULL(stuff((select distinct ';'+CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_NUMBER' + ,ISNULL(stuff((select distinct ';'+CONVERT(nvarchar(100), tt.F_SOURCE_ORDER_LINE_NUMBER) from #TEMP_PLANORDER_RESERVELINK2 tt where tt.FID=t0.FID for xml path('')),1,1,''),'') 'F_SOURCE_ORDER_LINE_NUMBER' + INTO #TEMP2 +FROM #TEMP t0 +--WHERE t0.fbillno ='MRP01679279' +GROUP BY + t0.FID + ,t0.FBILLNO + ,t0.F_MATERIALCODE + ,t0.F_CUSTOMERNAME +CREATE INDEX #TEMP2_INDEX ON #TEMP2(FID); + +UPDATE t0 +SET t0.F_FORECASTNUMBER = tt.F_FORECASTNUMBER + ,t0.F_LINENUMBER = tt.F_LINENUMBER + ,t0.F_CUSTOMERNAME = tt.F_CUSTOMERNAME + ,t0.F_MATERIALCODE = tt.F_MATERIALCODE + ,t0.F_REMARK = ISNULL(t1e_l.FDESCRIPTION,'') +FROM T_PLN_PLANORDER t0 + INNER JOIN #TEMP2 tt on t0.FID = tt.FID --AND tt.TOTAL = 1 + LEFT JOIN T_PLN_FORECASTENTRY_L t1e_l on t1e_l.FENTRYID = tt.FORECASTENTRY_ID AND t1e_l.FLOCALEID = 2052 + +UPDATE t0 +SET t0_l.F_DESCRIPTION = t1_l.FDESCRIPTION +FROM T_PLN_PLANORDER_L t0_l + INNER JOIN #TEMP2 tt on t0.FID = tt.FID --AND tt.TOTAL = 1 + INNER JOIN T_PLN_FORECAST_L t1_l on tt.FORECAST_ID = t1_l.FID AND t1_l.FLOCALEID = 2052 + + +SELECT * FROM #TEMP2 +DROP TABLE #TEMP +DROP TABLE #TEMP2 +DROP TABLE #TEMP_PLANORDER_ID_LIST +DROP TABLE #TEMP_PLANORDER_RESERVELINK +DROP TABLE #TEMP_PLANORDER_RESERVELINK2 \ No newline at end of file diff --git a/SQLQuery2.sql b/SQLQuery2.sql new file mode 100644 index 0000000..e9cdde7 --- /dev/null +++ b/SQLQuery2.sql @@ -0,0 +1 @@ +WO2401150001,WO2401150010,WO2401150018,WO2401150019,WO2401150017,WO2401150011,WO2401150012,WO2401150015,WO2401150016,WO2401150013,WO2401150014,WO2401150020,WO2401150003,WO2401150002,WO2401150005,WO2401150004,WO2401150006,WO2401150009,WO2401150008,WO2401150007 \ No newline at end of file diff --git a/Trinomab.PUR_RPT_POOrderTrace/app.config b/Trinomab.PUR_RPT_POOrderTrace/app.config new file mode 100644 index 0000000..fef81b6 --- /dev/null +++ b/Trinomab.PUR_RPT_POOrderTrace/app.config @@ -0,0 +1,56 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Trinomab.PUR_RPT_POOrderTrace/packages.config b/Trinomab.PUR_RPT_POOrderTrace/packages.config new file mode 100644 index 0000000..f63921e --- /dev/null +++ b/Trinomab.PUR_RPT_POOrderTrace/packages.config @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/UnitTestProject.Python/UnitTestProject.Python.py b/UnitTestProject.Python/UnitTestProject.Python.py new file mode 100644 index 0000000..d58f52e --- /dev/null +++ b/UnitTestProject.Python/UnitTestProject.Python.py @@ -0,0 +1,2 @@ +va = "0.0056" +print(type(va)) \ No newline at end of file diff --git a/UnitTestProject.Python/UnitTestProject.Python.pyproj b/UnitTestProject.Python/UnitTestProject.Python.pyproj new file mode 100644 index 0000000..6db1bb8 --- /dev/null +++ b/UnitTestProject.Python/UnitTestProject.Python.pyproj @@ -0,0 +1,35 @@ + + + Debug + 2.0 + 0466ea98-51d5-43e8-b19f-ca2f1fd6be01 + . + UnitTestProject.Python.py + + + . + . + UnitTestProject.Python + UnitTestProject.Python + + + true + false + + + true + false + + + + + + + + + + + + \ No newline at end of file diff --git a/UnitTestProject1/UnitTest1.cs b/UnitTestProject1/UnitTest1.cs index 70456ec..7188ee9 100644 --- a/UnitTestProject1/UnitTest1.cs +++ b/UnitTestProject1/UnitTest1.cs @@ -1,4 +1,6 @@ using ExtensionMethods; +using Kingdee.BOS; +using Kingdee.BOS.Core.Report; using Microsoft.VisualStudio.TestTools.UnitTesting; using Newtonsoft.Json; using SAL_OUTSTOCK.Utils; @@ -9,6 +11,12 @@ using System.Net; using System.Net.Sockets; using System.Security.Cryptography; using System.Text; +using K3CExttensionMethods; +using System.Linq.Expressions; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Util; +using Newtonsoft.Json.Linq; +using HandleUtils; namespace UnitTestProject1 { @@ -19,7 +27,7 @@ namespace UnitTestProject1 { public TestEntity(int _id, string _name) { - id = _id; + id = _id; name = _name; } public int id; @@ -29,29 +37,43 @@ namespace UnitTestProject1 [TestMethod] public void TestMethod2() { - var list = new List(); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(1,"ttetett")); - list.Add(new TestEntity(2,"ttetett")); - list.Add(new TestEntity(2,"ttetett")); - list.Add(new TestEntity(2,"ttetett")); - list.Add(new TestEntity(2,"ttetett")); - list.Add(new TestEntity(2,"ttetett")); - list.Add(new TestEntity(2,"ttetett")); - list.Add(new TestEntity(2,"ttetett")); - var ttt = list.GroupBy(x => x.id); + var json = "{\"a\":\"0\"}"; + var jToken = JsonConvert.DeserializeObject(json); - var count = ttt.Count(); + var a = jToken["a"].ToString(); + string formattedValue2 = $"CD{DateTime.Now.ToString("yyMMddHHmmss")}"; + int i = 0; + string itemNo = $"CD{DateTime.Now:yyMMddHHmmss}" + i++.ToString("D2"); + string yearAbbreviation = DateTime.Now.Year.ToString().Substring(2, 2); // 获取年份的缩写,比如2023年的缩写为23 + string formattedValue = $"CD{yearAbbreviation}{DateTime.Now.ToString("MMddHHmmss")}"; + //var list = new List(); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(1, "ttetett")); + //list.Add(new TestEntity(2, "ttetett")); + //list.Add(new TestEntity(2, "ttetett")); + //list.Add(new TestEntity(2, "ttetett")); + //list.Add(new TestEntity(2, "ttetett")); + //list.Add(new TestEntity(2, "ttetett")); + //list.Add(new TestEntity(2, "ttetett")); + //list.Add(new TestEntity(2, "ttetett")); + + //var ttt = list.GroupBy(x => x.id); + + //var count = ttt.Count(); + + var tt = " "; + var b = formattedValue2.Equals(formattedValue); + //var i = tt.ToDecimal(); return; } @@ -184,6 +206,112 @@ namespace UnitTestProject1 } return sign.ToString(); } + + + [TestMethod] + public void TestMethod3() + { + ReportHeader header = new ReportHeader(); + var _colIndex = 0; + var h1 = header.AddChild("PRODUCTTYPE", new LocaleValue("生产类型"), _colIndex++); + + + // Add the following directive to the file: + // using System.Linq.Expressions; + + // Creating a parameter for the expression tree. + ParameterExpression param = Expression.Parameter(typeof(int)); + + // Creating an expression for the method call and specifying its parameter. + MethodCallExpression methodCall = Expression.Call( + typeof(Console).GetMethod("WriteLine", new Type[] { typeof(int) }), + param + ); + + // The following statement first creates an expression tree, + // then compiles it, and then runs it. + Expression.Lambda>( + methodCall, + new ParameterExpression[] { param } + ).Compile()(10); + + // This code example produces the following output: + // + // 10 + + //创建表达式参数(指定参数或变量的类型) + var param2 = Expression.Parameter(typeof(ListHeader)); + + //构建表达式体(类型包含指定的属性) + var body = Expression.Property(param2, "Mergeable = true"); + + //根据参数和表达式体构造一个Lambda表达式 + var fieldExp = Expression.Lambda>(Expression.Convert(body, typeof(object)), param2); + + + h1.SetHeader(fieldExp.Compile()); + return; + } + + + private void TTTT() + { + var list = new List + { + new DecimalControlField("FUnitNeedQty", "LOWEST6"), + new DecimalControlField("FQTY", "LOWEST6"), + new DecimalControlField("FUnitNeedQty", "LOWEST6"), + new DecimalControlField("FBASEQTY", "LOWEST6"), + new DecimalControlField("FNEEDQTY", "LOWEST6"), + new DecimalControlField("FBASEWIPQTY", "LOWEST6"), + new DecimalControlField("FBASELACKQTY", "LOWEST6"), + new DecimalControlField("FBASEONORDERQTY", "LOWEST6"), + new DecimalControlField("FPICKEDQTY", "LOWEST6"), + new DecimalControlField("FNOPICKEDQTY", "LOWEST6"), + new DecimalControlField("FSTDQTY", "LOWEST6"), + new DecimalControlField("FMUSTQTY", "LOWEST6"), + new DecimalControlField("FLossQty", "LOWEST6"), + new DecimalControlField("FSCRAPQTY", "LOWEST6"), + new DecimalControlField("FREPICKEDQTY", "LOWEST6"), + }; + } + + [TestMethod] + public void TestMeThod4() + { + var appId = "271430_Rf9BQYjJ2NgUWV8JWZxLz+8t2rWa0KOK"; + var dbId = "654e408a013340"; + var userName = "demo"; + var secret = "0ef6a61fa3d349029f8a433609bf824c"; + + var timeStamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + var signedData = SHA1Util.GetSignature(new string[] { dbId, userName, appId, secret, timeStamp }); + var json2 = @"{""dbid"":""654e408a013340"",""username"":""demo"",""appid"":""271430_Rf9BQYjJ2NgUWV8JWZxLz+8t2rWa0KOK"",""signeddata"":""{0}"",""timestamp"":""1709285538"",""lcid"":""2052"",""origintype"":""SimPas"",""entryrole"":"""",""formid"":"""",""formtype"":"""",""pkid"":"""",""otherargs"":""|{'permitcount':'0'}"",""openmode"":null,""loginthen"":""""}"; + var json = $@"{{""dbid"":""{dbId}"",""username"":""{userName}"",""appid"":""{appId}"",""signeddata"":""{signedData}"",""timestamp"":""{timeStamp}"",""lcid"":""2052"",""origintype"":""SimPas"",""entryrole"": """",""formid"":""PUR_PurchaseOrder"",""formtype"":"""",""pkid"":""100001"",""otherargs"":""|{{'permitcount':'0'}}"",""openmode"":null,""loginthen"":""""}}"; + var jToken = JsonConvert.DeserializeObject(json); + //json = string.Format(json2, signedData); + var base64Str = Base64Helper.Base64Encode(json); + var url = "http://localhost/K3Cloud/html5/index.aspx?ud="; + url = url + base64Str; + return; + } + + //public string GetSignature(string[] arr) + //{ + // //1. 将数组进行排序 + // //2. 将数组拼接成一个字符串进行sha1加密 + // arr = arr.OrderBy(z => z).ToArray(); + // var arrString = string.Join("", arr); + // var sha1 = SHA1.Create(); + // var sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString)); + // StringBuilder enText = new StringBuilder(); + // foreach (var b in sha1Arr) + // { + // enText.AppendFormat("{0:x2}", b); + + // } + // return enText.ToString(); + //} } diff --git a/UnitTestProject1/UnitTestProject1.csproj b/UnitTestProject1/UnitTestProject1.csproj index 59ad12e..c48bd27 100644 --- a/UnitTestProject1/UnitTestProject1.csproj +++ b/UnitTestProject1/UnitTestProject1.csproj @@ -39,6 +39,12 @@ 4 + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + ..\packages\MSTest.TestFramework.2.2.10\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll @@ -69,6 +75,14 @@ {50532462-8f7f-455c-b4b3-732ed764e2fa} ExtensionMethods + + {A386E924-0477-49BF-A3DD-82390EDF75C7} + HandleUtils + + + {825dd90b-2a8d-4884-9940-6da56ef6623f} + K3CExttensionMethods + diff --git a/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs b/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs index af30db4..942b344 100644 --- a/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs +++ b/UseGetFmaterialData/BeforeSaveEventBillPlugIn.cs @@ -26,7 +26,7 @@ namespace UseGetFmaterialData public override void BeforeSave(BeforeSaveEventArgs e) { base.BeforeSave(e); - this.View.ShowMessage("插件触发了保存前事件:BeforeSave"); + //this.View.ShowMessage("插件触发了保存前事件:BeforeSave"); if (OrgIdCheck()) { Entity details = null; diff --git a/UseGetFmaterialData/DataChangedEventFormPlugIn.cs b/UseGetFmaterialData/DataChangedEventFormPlugIn.cs index 2ee4245..32f87eb 100644 --- a/UseGetFmaterialData/DataChangedEventFormPlugIn.cs +++ b/UseGetFmaterialData/DataChangedEventFormPlugIn.cs @@ -22,7 +22,6 @@ namespace UseGetFmaterialData //对应控件数值改变时触发 public override void DataChanged(DataChangedEventArgs e) { - base.DataChanged(e); //表头日期 diff --git a/VerifyTest/Ext_HomePagePlugin.cs b/VerifyTest/Ext_HomePagePlugin.cs new file mode 100644 index 0000000..b028f15 --- /dev/null +++ b/VerifyTest/Ext_HomePagePlugin.cs @@ -0,0 +1,108 @@ +using Kingdee.BOS.Core; +using Kingdee.BOS.Core.Bill; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Web; +using Kingdee.BOS.Authentication; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Business.PlugIn.MainConsole.HomePageHtml; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.DataEntity; + + +namespace Kingdee.BOS.Test.PlugIn.Basic +{ + [HotUpdate, Description("主控台test")] + public class Ext_HomePagePlugin : AbstractDynamicFormPlugIn + { + + public override void BarItemClick(Core.DynamicForm.PlugIn.Args.BarItemClickEventArgs e) + { + base.BarItemClick(e); + DBUtils.Execute(this.Context,""); + } + + + public override void DataChanged(DataChangedEventArgs e) + { + + } + + public override void AfterBindData(EventArgs e) + { + + + base.AfterBindData(e); + //隔离参数键值 + var isoKey = this.Context.SessionId + "_AutoLoginArgs"; + //获取客制化参数 + var cargs = HttpContext.Current.Application.Get(isoKey) as string; + //清理Session + var args = this.View.OpenParameter.GetCustomParameter(FormConst.StartAppArgs) as StartAppHomePageArgs; + var args2= this.View.OpenSpecFormsByStartArgs(); + var args3 = this.View.GetStartAppHomePageArgs(); // 返回对象 StartAppHomePageArgs ,其中CustomArgs为自定义数据。 + + HttpContext.Current.Application.Remove(isoKey); + + if (!string.IsNullOrWhiteSpace(cargs) && cargs.IndexOf('|') > 0) + { + var tmp = cargs.Split('|'); + string pageId = Guid.NewGuid().ToString(); + + // 显示单据, 使用 BillShowParameter + + var showParam = new BillShowParameter() + { + FormId = tmp[0], + PageId = pageId, + Status = OperationStatus.EDIT + }; + + showParam.OpenStyle.ShowType = ShowType.MainNewTabPage; + showParam.OpenStyle.ShowType = ShowType.MainNewTabPage; + showParam.OpenStyle.TagetKey = "FMAINTAB"; + + // 传入需要单据内码 + showParam.PKey = tmp[1]; + this.View.ShowForm(showParam); + + //// 显示单据列表, 使用 ListShowParameter + + //var showListParam = new ListShowParameter() + //{ + // FormId = tmp[0], + // PageId = Guid.NewGuid().ToString() + //}; + + //showListParam.OpenStyle.ShowType = ShowType.MainNewTabPage; + //showListParam.OpenStyle.ShowType = ShowType.MainNewTabPage; + //showListParam.OpenStyle.TagetKey = "FMAINTAB"; + + //this.View.ShowForm(showListParam); + } + + //// 显示动态表单, 使用 DynamicFormShowParameter + + //var showDyParam = new DynamicFormShowParameter() + //{ + // FormId = "PUR_USERORDERPARAM", + // PageId = Guid.NewGuid().ToString() + //}; + + //showDyParam.OpenStyle.ShowType = ShowType.MainNewTabPage; + //showDyParam.OpenStyle.ShowType = ShowType.MainNewTabPage; + //showDyParam.OpenStyle.TagetKey = "FMAINTAB"; + + //this.View.ShowForm(showDyParam); + + } + } +} \ No newline at end of file diff --git a/VerifyTest/MacVerify.cs b/VerifyTest/MacVerify.cs new file mode 100644 index 0000000..5195a04 --- /dev/null +++ b/VerifyTest/MacVerify.cs @@ -0,0 +1,163 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Collections.Concurrent; +using Kingdee.BOS.Authentication; +using Kingdee.BOS.JSON; +using Kingdee.BOS.ServiceFacade.KDServiceFx; +using Kingdee.BOS.ServiceFacade.ServicesStub; +using Kingdee.BOS.Resource; +using System.Web; +namespace Kingdee.BOS.ServiceFacade.StartApp +{ + public class MacVerify : StartAppVerifyServiceBase + { + /// + /// 客制化参数映射到用户信息,或域签名串映射到用户信息存储池,也可以是数据库 + /// + static ConcurrentDictionary customArgsMapUser = new ConcurrentDictionary(); + static MacVerify() + { + customArgsMapUser["testautologinwithdemo"] = "demo|123qwe!@#|金蝶蓝海实业集团"; + } + /// + /// 随机测试标识,仅用于模拟各种启动校验结果的返回判定 + /// + static int randomFlag = 0; + /// + /// 实现登录服务处理接口,在程序启动界面加入参数 "ud=TestAutoLoginWithDemo" 即可实现自动用Demo用户登录CPDEMOV5数据中心 + /// 例如: + /// WEB的Silverlight: http://xxxx/k3cloud/silverlight/index.aspx?ud=TestAutoLoginWithDemo + /// WEB的HTML5:http://xxxx/k3cloud/html5/index.aspx?ud=TestAutoLoginWithDemo + /// + public override StartAppResult Verify(KDServiceContext context, string ipmac) + { + var ret = this.Verify(ipmac); + if (ret.ResultType == StartAppResultType.Success) + { + var data = JSONObject.Parse(ipmac); + VerifyLogin(context, ret, data); + } + return ret; + } + /// + /// 实现登录校验的例子的私有函数 + /// + private void VerifyLogin(KDServiceContext context, StartAppResult ret, JSONObject data) + { + //实现自动登录功能 + var customArgs = data.GetValue("customArgs", "");//ud用户定义参数将会传递到服务端插件的customArgs中 + var isAutoLogin = !string.IsNullOrWhiteSpace(customArgs); + if (isAutoLogin && context != null) + { + try + { + //不一定非得从data中传进来这些信息, + //也可以通过Mac映射到数据库中的某个记录,从中读取登录信息, + //包括用户名、密码和数据库id,已经对应的语种id + //这里只是Demo而已 + var userInfoStr = ""; + var key = customArgs.ToLowerInvariant(); + customArgsMapUser.TryGetValue(key, out userInfoStr); + if (string.IsNullOrWhiteSpace(userInfoStr)) + userInfoStr = ""; + var userInfo = userInfoStr.Split('|'); + var un = userInfo.Length > 2 ? userInfo[0] : ""; + var pw = userInfo.Length > 2 ? userInfo[1] : ""; + var dbname = userInfo.Length > 2 ? userInfo[2] : ""; + var pluginLoginInfo = new PluginLoginInfo() + { + //AcctID = "xxxxxx", //AcctID如果传递,将不再通过AcctName查找AcctID了。 + //LoginType = PluginLoginType.Common, //默认为用户名密码的通用登录方式。 //PluginLoginInfo.AuthenticateType = Kingdee.BOS.Authentication.AuthenticationType.DynamicPwdAuthentication, // 动态密码验证方式 + AcctName = dbname, + Username = un, + Password = pw, + ClientInfo = GetClientInfo(context, data) //基类静态工具方法 + }; + //调用基类静态工具方法实现登录验证,并返回ret.UserToken,给客户端实现自动登录 + DoLoginCore(context, ret, pluginLoginInfo); + //登录后的参数传入,具体使用参考【自动打开单据】 + if (!string.IsNullOrWhiteSpace(ret.SessionId)) + { + var isoKey = ret.SessionId + "_AutoLoginArgs"; + //登陆成功后,加入自定义参数 + HttpContext.Current.Application.Set(isoKey, "PUR_PurchaseOrder|100001"); + } + } + catch (Exception ex) + { + ret.ResultType = StartAppResultType.Failure; + ret.FailureCallBackType = StartAppResultCallBackType.Message; + ret.Message = ex.Message + "\r\n" + ex.StackTrace; + } + } + } + + /// + /// 实现基类访问校验接口,如果没有该业务需求,可以不实现,使用基类的接口即可。 + /// + public override StartAppResult Verify(string ipmac) + { + randomFlag++; + StartAppResult ret = null; + var data = JSONObject.Parse(ipmac); + var flag = randomFlag % 5; + flag = 5; + switch (flag) + { + case 4: + // 提示后退出并重定向到指定页面 + ret = GetResult(StartAppResultCallBackType.ExitMsg_Redirect, ipmac); + break; + case 3: + // 退出并重定向到指定页面(不做任何提示) + ret = GetResult(StartAppResultCallBackType.Exit_Redirect, ipmac); + break; + case 2: + // 退出并提示 + ret = GetResult(StartAppResultCallBackType.ExitMsg, ipmac); + break; + case 1: + // 提示信息(不退出程序) + ret = GetResult(StartAppResultCallBackType.Message, ipmac); + break; + default: + ret = new StartAppResult() + { + ResultType = StartAppResultType.Success + }; + randomFlag = 0; + break; + } + return ret; + } + /// + /// 构造返回结果 + /// + /// 返回回调类型 + /// + private static StartAppResult GetResult(StartAppResultCallBackType fcbType, string attMsg) + { + var ret = new StartAppResult() + { + FailureCallBackType = fcbType, + // 成功Sucess:正常登录 + ResultType = StartAppResultType.Failure, + + // 外部网址:RedirectUrl = "http://www.kingdee.com" + // 空白页:RedirectUrl = "about:blank" + // 失败后重定向URL,可以是相对路径也可以是绝对路径,相对路径已K3Cloud为基地址,例如:http://xxxx/k3cloud/ + RedirectUrl = "help/clienthelp.htm", + ExitType = StartAppResultExitType.Shutdown, + + Title = "温馨提示" + "0022883030028663", + Message = "网站正在维护中 ... ..." + "0022883030028642" + + "\r\n" + attMsg + }; + return ret; + } + } +} + diff --git a/VerifyTest/Properties/AssemblyInfo.cs b/VerifyTest/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8620bf0 --- /dev/null +++ b/VerifyTest/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("VerifyTest")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("VerifyTest")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("89c1a54b-6fb2-4dbe-a36e-f21650623538")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/VerifyTest/VerifyTest.csproj b/VerifyTest/VerifyTest.csproj new file mode 100644 index 0000000..7699acd --- /dev/null +++ b/VerifyTest/VerifyTest.csproj @@ -0,0 +1,69 @@ + + + + + Debug + AnyCPU + {89C1A54B-6FB2-4DBE-A36E-F21650623538} + Library + Properties + VerifyTest + VerifyTest + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Business.PlugIn.dll + + + False + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.Core.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceFacade.KDServiceFx.dll + + + ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceFacade.ServicesStub.dll + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/代码格式修正.sql b/代码格式修正.sql new file mode 100644 index 0000000..8c979ea --- /dev/null +++ b/代码格式修正.sql @@ -0,0 +1,1645 @@ +USE [AIS20180209140748] go +/****** Object: StoredProcedure [dbo].[SeorderBomExpAND] Script Date: 2024/1/24 15:09:53 ******/ +SET ansi_nulls ON go SET quoted_identifier ON go +--SELECT * FROM seorder WHERE FBillNo='test201706201' +--SELECT * FROM SEOrderEntry WHERE FInterID=19907 +--UPDATE SEOrder SET FHeadSelfS0153='N' WHERE FInterID=19422 +--[SeorderBomExpAND] 'KLSO-20/0032/1-D7','mornINgstar',0,16393 +--USE AIS20180209140748 +-- ============================================= +-- Author: +-- Create date: 2019-10-18 +-- Description: +-- ============================================= +ALTER PROCEDURE [dbo].[SeorderBomExpAND] ( @BillNo AS VARCHAR(100), +--۶ +@UseName AS VARCHAR(50), +--û +@FInterID INT = 0, +--۶ +@UserID INT = 16393 --ûID +) AS begin SET nocount ON SET ansi_warnings off DECLARE @FID INT +--declare @BillNo as varchar(100) +--declare @FInterID INT=0 +--set @BillNo='LSO-0782/18/2-D9-1' +IF @FInterID = 0 + SELECT top 1 @FID = finterid + FROM seorder + WHERE fbillno = @BillNo AND fcancellation = 0 +ELSE + SET @FID = @FInterID --DECLARE @FID INT +--SET @FID=19917 +DELETE FROM mrp WHERE fid = @FID +DELETE FROM mrpentry WHERE fid = @FID +DELETE FROM mrpentry1 WHERE fid = @FID +DELETE FROM mrpentry2 WHERE fid = @FID +DELETE FROM mrpentry3 WHERE fid = @FID +DELETE FROM mrpentry4 WHERE fid = @FID +CREATE TABLE #mutidata( + findex INT identity(1,1) + ,fbominterid INT DEFAULT(0) + --BOM + ,fitemid INT NULL -- + ,fneedqty DECIMAL(28,14) DEFAULT(0) NULL,fbomlevel INT NULL + --BOM㼶 0ΪƷ 1ΪƷһ㣬) + ,fparentid INT DEFAULT(0) NULL,frate DECIMAL(28,14) DEFAULT(0) NULL, + flevelstring VARCHAR(200) NULL,fbom INT,frootbomid INT DEFAULT(0), + forderinterid INT -- + ,forderentryid INT --к + ,f1 DECIMAL(28,14) DEFAULT(0) NULL -- --ֱϼԵǰϵ + ,f2 DECIMAL(28,14) DEFAULT(0) NULL --ֱϼϵ + ,f3 nvarchar(255) --ϳ + ,fnumber nvarchar(255) --ϳǰ3λ + ,fentryselfz0142 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0142 䶯%һ£ + ,fentryselfz0143 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0143 䶯%һ + ,fentryselfz0144 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0144 䶯%ϣ + ,fentryselfz0145 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0145 ճϻ5K¹̶ֵ + ,fentryselfz0151 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0151 ̶ֵ + ,fentryselfz0152 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0152 5000¶ + ,fentryselfz0153 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0153 䶯%10ϣ + ,forderdate datetime --۶ + ,funitid INT --BOMõļλ + ,ferpclsid INT DEFAULT(0) -- + ,ʱ DECIMAL(28,14) DEFAULT(0) --ʱ + ,[(δ) ] DECIMAL(28,14) DEFAULT(0) + ,δ۶ DECIMAL(28,14) DEFAULT(0) + ,Ͷϵ DECIMAL(28,14) DEFAULT(0) + , DECIMAL(28,14) DEFAULT(0) + , DECIMAL(28,14) DEFAULT(0) + , datetime + , datetime + ,깤 datetime + ,Ҫ󵽻 datetime +); +CREATE TABLE #mutidata2( + findex INT identity(1,1) + ,fitemid INT NULL -- + ,fneedqty DECIMAL(28,14) DEFAULT(0) NULL + ,frate DECIMAL(28,14) DEFAULT(0)NULL + ,fbom INT,frootbomid INT DEFAULT(0),forderinterid INT -- + ,forderentryid INT --к + ,f1 DECIMAL(28,14) DEFAULT(0) NULL -- --ֱϼԵǰϵ + ,f2 DECIMAL(28,14) DEFAULT(0) NULL --ֱϼϵ + ,f3 nvarchar(255) --ϳ + ,fnumber nvarchar(255) --ϳǰ3λ + ,fentryselfz0142 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0142 䶯%һ£ + ,fentryselfz0143 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0143 䶯%һ + ,fentryselfz0144 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0144 䶯%ϣ + ,fentryselfz0145 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0145 ճϻ5K¹̶ֵ + ,fentryselfz0151 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0151 ̶ֵ + ,fentryselfz0152 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0152 5000¶ + ,fentryselfz0153 DECIMAL(28,14) DEFAULT(0) + --FEntrySelfZ0153 䶯%10ϣ + ,forderdate datetime --۶ + ,funitid INT --BOMõļλ + ,ferpclsid INT DEFAULT(0) -- + , datetime + , datetime + ,깤 datetime + ,Ҫ󵽻 datetime +) +CREATE UNIQUE clustered INDEX idx_findex ON #mutidata(findex); +CREATE nonclustered INDEX idx_fitemid ON #mutidata(fitemid); +CREATE nonclustered INDEX idx_flevelstring ON #mutidata(fbomlevel); +CREATE nonclustered INDEX idx_f3 ON #mutidata(f3); +CREATE nonclustered INDEX idx_fnumber ON #mutidata(fnumber); +CREATE UNIQUE clustered INDEX idx_findex ON #mutidata2(findex); +CREATE nonclustered INDEX idx_fitemid ON #mutidata2(fitemid); +CREATE nonclustered INDEX idx_fnumber ON #mutidata2(fnumber); +/*°Ʒļʱ*/ +SELECT a.fitemid, + Sum(fqty) fqty +INTO #icinventory +FROM icinventory a WITH ( nolock ) + LEFT JOIN t_stock b WITH (nolock ) ON a.fstockid = b.fitemid + LEFT JOIN t_icitem c WITH (nolock ) ON a.fitemid = c.fitemid +WHERE + b.fproperty = 10 + AND c.fnumber NOT LIKE '05.%' +GROUP BY a.fitemid +HAVING Sum(fqty) <> 0 +/*°ƷԤ,ֻ˵IJƷⵥ*/ + +SELECT + v1.fitemid + ,Sum(v1.fauxqty - v1.fauxstockqty) AS fqty --ƻ- + INTO #yjrk +FROM + icmo v1 WITH(nolock) + INNER JOIN t_icitem t9 WITH(nolock) ON v1.fitemid = t9.fitemid +WHERE 1 = 1 + AND t9.fitemid <> 0 + AND v1.fauxqty - v1.fauxstockqty > 0 + AND ( + v1.ftrantype = 85 + AND v1.ftype <> 11060 + AND (v1.fstatus IN (1,2,5) --ȷ,´״̬ + AND t9.ferpclsid IN (2,3) + AND v1.fcancellation = 0)) + AND (t9.fnumber LIKE '03.%' OR t9.fnumber LIKE '04.%') +GROUP BY + v1.fitemid + +/*ͶϵͶδ,05.ͷϲҪǿϢ*/ +SELECT + c.fitemid + ,sum( + isnull(c.fauxqtymust * m.fcoefficient,0)+ isnull( + c.fauxqtysupply * m.fcoefficient, + 0 + )- isnull( + c.fauxstockqty * m.fcoefficient,0 + ) + ) AS 'FQty' INTO #yjck--Ӧ- +FROM + icmo a WITH(nolock) + INNER JOIN ppbom b WITH(nolock) ON a.finterid = b.ficmointerid + INNER JOIN ppbomentry c WITH(nolock) ON b.finterid = c.finterid + INNER JOIN t_measureunit m WITH(nolock) ON c.funitid = m.fmeasureunitid + INNER JOIN t_icitem n WITH(nolock) ON n.fitemid = c.fitemid +WHERE + 1 = 1 + AND a.fstatus IN(1,2,5) + AND ( + isnull(c.fauxqtymust,0)+ isnull(c.fauxqtysupply,0)- isnull(c.fauxstockqty,0) + )> 0 + AND n.fnumber NOT LIKE '05.%' +GROUP BY + c.fitemid + +/*δرյ۶δת񵥵ijƷͰƷ*/ +SELECT + fbase fitemid + ,sum(CONVERT(FLOAT,ftext9)) fqty + INTO #seorder +FROM + mrpentry2 t1 WITH(nolock) + INNER JOIN seorder v1 WITH(nolock) ON t1.finteger2 = v1.finterid +WHERE 1 = 1 + AND (v1.fchangemark = 0 + AND (isnull(v1.fclasstypeid,0)<> 1007100) + AND (v1.fcancellation = 0 AND v1.fstatus > 2) + ) + AND CONVERT(FLOAT,ftext9)> 0 + AND t1.fcheckbox3 = 0 + AND fbase > 0 +GROUP BY + fbase + +/**************************************************************1 START ***************************************************************/ +INSERT INTO #mutidata ( + fbominterid + ,fitemid + ,fneedqty + ,fbomlevel + ,fparentid + ,frate + ,flevelstring + ,fbom + ,frootbomid + ,forderinterid + ,forderentryid + ,forderdate + ,funitid + , + , + ,깤 +) +SELECT + a.finterid 'FBomInterid' + ,se.fitemid 'FItemID' + ,se.fqty *(m.fcoefficient / n.fcoefficient) 'FNeedQty' + ,0 'FBomLevel' + ,0 'FParentID' + ,0 'FRate' + ,0 'FLevelStrIng' + ,a.fitemid 'FBom' + ,a.finterid 'FRootBOMID' + ,se.finterid 'FOrderInterID' + ,se.fentryid 'FOrderEntryID' + ,se.fdate '' + ,a.funitid 'FUnitID' + ,se.fentryselfs0177 '' + ,dateadd(day,2,se.fentryselfs0177) '' + ,dateadd(day,-7,se.fdate) '깤' +FROM + seorder s WITH(nolock) + INNER JOIN seorderentry se WITH(nolock) ON s.finterid = se.finterid + LEFT JOIN icbom a WITH(nolock) ON a.fitemid = se.fitemid + INNER JOIN t_measureunit m WITH(nolock) ON se.funitid = m.fmeasureunitid + INNER JOIN t_measureunit n WITH(nolock) ON a.funitid = n.fmeasureunitid +WHERE + s.fcancellation = 0 + AND isnull(s.fcheckerid,0)> 0 + AND s.fbillno = '' --'20180418test'-- + AND a.fusestatus = 1072 --ʹ״̬BOM + + /*ȡƷϴǰ4λ룬ϵֶ*/ +UPDATE + a +SET + fnumber = CASE WHEN b.fnumber LIKE '04.%' THEN substring (b.fnumber,1,4) ELSE substring (b.fnumber,1,3) end + ,f3 = b.fnumber + ,a.ferpclsid = b.ferpclsid +FROM + #mutidata a WITH(nolock) + INNER JOIN t_icitem b WITH(nolock) ON a.fitemid = b.fitemid + +/**************************************************************1 END***************************************************************/ +/**************************************************************2 START ***************************************************************/ +INSERT INTO #mutidata2 ( +fitemid +,fneedqty +,frate +,fbom +,frootbomid +,forderinterid +,forderentryid +,f1 +,f2 +,b.fentryselfz0142 +,b.fentryselfz0143 +,b.fentryselfz0144 +,b.fentryselfz0145 +,b.fentryselfz0151 +,b.fentryselfz0152 +,b.fentryselfz0153 +,forderdate +,funitid +, --,,깤,Ҫ󵽻 +) +SELECT + b.fitemid 'FItemID' + ,0 'FNeedQty' + ,0 'FRate' + ,a.fbom 'FBom' + ,frootbomid 'FRootBOMID' + ,forderinterid 'FOrderInterID' + ,forderentryid 'FOrderEntryID' + ,b.fauxqty 'F1' + ,a.fneedqty 'F2' + ,b.fentryselfz0142 + ,b.fentryselfz0143 + ,b.fentryselfz0144 + ,b.fentryselfz0145 + ,b.fentryselfz0151 + ,b.fentryselfz0152 + ,b.fentryselfz0153 + ,a.forderdate 'FOrderDate' + ,b.funitid 'FUnitID' + ,a. '' +FROM + #mutidata a + INNER JOIN icbomchild b WITH(nolock) ON a.fbominterid = b.finterid +WHERE + a.fbomlevel = 0 +ORDER BY + b.fitemid, + forderentryid + +--IJƷΪ⹺ӿ +--**************************2020-08-04 add wfm**********************************************-- +INSERT INTO #mutidata2 ( +fitemid +,fneedqty +,frate +,fbom +,frootbomid +,forderinterid +,forderentryid +,f1 +,f2 +,b.fentryselfz0142 +,b.fentryselfz0143 +,b.fentryselfz0144 +,b.fentryselfz0145 +,b.fentryselfz0151 +,b.fentryselfz0152 +,b.fentryselfz0153 +,forderdate +,funitid +, --,,깤,Ҫ󵽻 +) +SELECT + a.fitemid 'FItemID', + se.fqty 'FNeedQty', + 0 'FRate', + 0 'FBom', + 0 'FRootBOMID', + se.finterid 'FOrderInterID', + se.fentryid 'FOrderEntryID', + 1 'F1', + se.fqty 'F2', + 0 fentryselfz0142, + 0 fentryselfz0143, + 0 fentryselfz0144, + 0 fentryselfz0145, + 0 fentryselfz0151, + 0 fentryselfz0152, + 0 fentryselfz0153, + s.fdate 'FOrderDate', + n.fmeasureunitid 'FUnitID', + se.fentryselfs0177 '' +FROM + seorder s WITH(nolock) + INNER JOIN seorderentry se WITH(nolock) ON s.finterid = se.finterid + INNER JOIN t_icitem a WITH(nolock) ON a.fitemid = se.fitemid + INNER JOIN t_measureunit m WITH(nolock) ON se.funitid = m.fmeasureunitid + INNER JOIN t_measureunit n WITH(nolock) ON a.funitid = n.fmeasureunitid +WHERE + s.fcancellation = 0 + AND isnull(s.fcheckerid,0)> 0 + AND s.fbillno = @BillNo --''KLSO-20/0032/1-D7''-- + AND a.ferpclsid = 1 --⹺ + +--******************************end******************************************-- +/*ȡϴǰ3λ(04.ͷͽȡ4λ)룬ϵֶ*/ +UPDATE + a +SET + fnumber = CASE WHEN b.fnumber LIKE '04.%' THEN substring (b.fnumber,1,4) ELSE substring (b.fnumber,1,3) end, + f3 = b.fnumber, + a.ferpclsid = b.ferpclsid +FROM + #mutidata2 a INNER JOIN t_icitem b WITH(nolock) ON a.fitemid = b.fitemid + +--ڳƷIJҪ󵽻=Ʒ-3 +UPDATE #mutidata2 SET Ҫ󵽻=dateadd(day,-3,) WHERE ferpclsid=1 + +--׸(03.04.R)Ʒ=-5깤=-2 +--UPDATE #Mutidata2 SET =DATEADD(DAY,-5,),깤=DATEADD(DAY,-2,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') +--2019-10-15 ֮ǰ趨׸ǰƷڰæijɿڣ-7깤ڣ-3ݲҪ +UPDATE #mutidata2 SET =dateadd(day,-7,),깤= dateadd(day,-3,) WHERE ferpclsid<>1 AND fnumber IN ('03.','04.R') +--ˮ(05.)Ʒ=-7깤=-4 +UPDATE #mutidata2 SET =dateadd(day,-7,),깤= dateadd(day,-4,) WHERE ferpclsid<>1 AND fnumber ='05.' +/*ڶݵһijƷж*/ +UPDATE + a +SET + frate = ( + CASE WHEN f2 <= 10000 + AND f2 > 5000 THEN f2 * f1 * isnull (a.fentryselfz0142,0)/ 100.00 + isnull(a.fentryselfz0145,0)+ isnull(a.fentryselfz0151,0) WHEN f2 <= 5000 THEN f2 * f1 * isnull(a.fentryselfz0142,0)/ 100.00 + isnull(a.fentryselfz0145,0)+ isnull(a.fentryselfz0151,0)+ isnull(a.fentryselfz0152,0) WHEN f2 >= 100000 THEN f2 * f1 * isnull(a.fentryselfz0153,0)/ 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) WHEN f2 > 10000 + AND f2 <= 50000 THEN isnull(a.fentryselfz0143,0)* f2 * f1 / 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) WHEN f2 > 50000 + AND f2 < 100000 THEN isnull(a.fentryselfz0144,0)* f2 * f1 / 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) ELSE 0 end + ) +FROM + #mutidata2 a WHERE 1=1 + +/*ڶ=һ*ڶ+һӦ*/ +--******2020-08-04 ADD FBom<>0*********************** +UPDATE #mutidata2 SET fneedqty=f2*f1+frate WHERE 1=1 AND fbom<>0 +/*ͬƷԭϽл*/ +INSERT INTO #mutidata ( fitemid,fneedqty,fbomlevel,frate,flevelstring,fbom, +frootbomid, +forderinterid, +forderentryid, +f1, +f2, +b.fentryselfz0142, +b.fentryselfz0143, +b.fentryselfz0144, +b.fentryselfz0145, +b.fentryselfz0151, +b.fentryselfz0152, +b.fentryselfz0153, +forderdate, +funitid, +ferpclsid, +fnumber, +f3, +, +, +깤, +Ҫ󵽻 +) +SELECT + fitemid, + sum(fneedqty) 'FNeedQty', + 1 'FBomLevel', + sum(frate) 'FRate', + '.1' 'FLevelStrIng', + max(fbom) 'FBom', + max(frootbomid) 'FRootBOMID', + max(forderinterid) 'FOrderInterID', + min(forderentryid) 'FOrderEntryID', + max(f1) 'F1', + max(f2) 'F2', + max(fentryselfz0142) 'FEntrySelfZ0142', + max(fentryselfz0143) 'FEntrySelfZ0143', + max(fentryselfz0144) 'FEntrySelfZ0144', + max(fentryselfz0145) 'FEntrySelfZ0145', + max(fentryselfz0151) 'FEntrySelfZ0151', + max(fentryselfz0152) 'FEntrySelfZ0152', + max(fentryselfz0153) 'FEntrySelfZ0153', + min(forderdate) 'FOrderDate', + funitid 'FUnitID', + ferpclsid 'FErpClsID', + max(fnumber) 'FNumber', + max(f3) 'F3', + min() '', + min() '', + min(깤) '깤', + min(Ҫ󵽻) 'Ҫ󵽻' +FROM + #mutidata2 +WHERE + ( + f3 NOT LIKE '02.86%' + AND f3 NOT LIKE '02.87%' + AND f3 NOT LIKE '05.%' + ) +GROUP BY + fitemid, + funitid, + ferpclsid, + fnumber +UNION ALL +SELECT + fitemid, + sum(fneedqty) 'FNeedQty', + 1 'FBomLevel', + sum(frate) 'FRate', + '.1' 'FLevelStrIng', + max(fbom) 'FBom', + max(frootbomid) 'FRootBOMID', + max(forderinterid) 'FOrderInterID', + min(forderentryid) 'FOrderEntryID', + max(f1) 'F1', + max(f2) 'F2', + max(fentryselfz0142), + max(fentryselfz0143), + max(fentryselfz0144), + max(fentryselfz0145), + max(fentryselfz0151), + max(fentryselfz0152), + max(fentryselfz0153) 'FEntrySelfZ0153', + min(forderdate) 'FOrderDate', + funitid 'FUnitID', + ferpclsid 'FErpClsID', + max(fnumber) 'FNumber', + max(f3) 'F3', + min() '', + min() '', + min(깤) '깤', + min(Ҫ󵽻) 'Ҫ󵽻' +FROM + #mutidata2 +WHERE + f3 LIKE '02.86%' + OR f3 LIKE '02.87%' + OR f3 LIKE '05.%' +GROUP BY + fitemid, + funitid, + ferpclsid, + fnumber, + forderinterid, + forderentryid + +/*°Ʒļʱ*/ +UPDATE a SET a.ʱ = b.fqty FROM #mutidata a INNER JOIN #icinventory b ON a.fitemid=b.fitemid WHERE a.fbomlevel=1 --AND FErpClsID=2 +/*°ƷԤ*/ +UPDATE a SET a.[(δ) ] = b.fqty FROM #mutidata a INNER JOIN #yjrk b ON a.fitemid=b.fitemid WHERE a.fbomlevel=1 --AND FErpClsID=2 +/*ͶϵͶδ*/ +UPDATE a SET a.Ͷϵ = b.fqty FROM #mutidata a INNER JOIN #yjck b ON a.fitemid=b.fitemid WHERE a.fbomlevel=1 --AND FErpClsID=2 +/**************************************************************2 END***************************************************************/ +/**************************************************************3 START ***************************************************************/ +DELETE FROM #mutidata2 +INSERT INTO #mutidata2 ( fitemid,fneedqty,frate,fbom, +frootbomid, +forderinterid, +forderentryid, +f1, +f2, +b.fentryselfz0142, +b.fentryselfz0143, +b.fentryselfz0144, +b.fentryselfz0145, +b.fentryselfz0151, +b.fentryselfz0152, +b.fentryselfz0153, +forderdate, +funitid, +, +, +깤, +Ҫ󵽻 +) +SELECT + b.fitemid, + 0 'FNeedQty', + 0 'FRate', + a.fbom 'FBom', + frootbomid, + forderinterid, + forderentryid, + b.fauxqty 'F1', + CASE WHEN isnull(a.fneedqty,0)+ isnull(a.Ͷϵ,0)- isnull(a.ʱ,0)- isnull( + a.[(δ) ], + 0 + )> 0 THEN isnull(a.fneedqty,0)+ isnull(a.Ͷϵ,0)- isnull(a.ʱ,0)- isnull( + a.[(δ) ], + 0 + ) ELSE 0 end 'F2', + b.fentryselfz0142, + b.fentryselfz0143, + b.fentryselfz0144, + b.fentryselfz0145, + b.fentryselfz0151, + b.fentryselfz0152, + b.fentryselfz0153, + a.forderdate, + b.funitid, + '', + , + 깤, + Ҫ󵽻 +FROM + #mutidata a INNER JOIN icbom t WITH(nolock) ON a.fitemid = t.fitemid INNER + JOIN icbomchild b WITH(nolock) ON t.finterid = b.finterid +WHERE + t.fusestatus = 1072 + AND a.fbomlevel = 1 + +--SELECT * FROM #Mutidata2 where FErpClsID<>1 +/*ȡϴǰ3λ(04.ͷͽȡ4λ)룬ϵֶ*/ +UPDATE a SET fnumber = CASE WHEN b.fnumber LIKE '04.%' THEN substring(b.fnumber,1,4) ELSE substring (b.fnumber,1,3) end,f3 = b.fnumber,a.ferpclsid = b.ferpclsid FROM #mutidata2 a INNER JOIN t_icitem b WITH(nolock) ON a.fitemid=b.fitemid WHERE 1=1 +--ڰƷIJҪ󵽻=ƷĿ-3 +UPDATE #mutidata2 SET Ҫ󵽻=dateadd(day,-3,) WHERE ferpclsid=1 +UPDATE #mutidata2 SET =NULL,깤=NULL WHERE ferpclsid=1 +--׸(03.04.R)Ʒ=-5깤=-2 +--UPDATE #Mutidata2 SET =DATEADD(DAY,-5,),깤=DATEADD(DAY,-2,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') +--2019-10-15 ֮ǰ趨׸ǰƷڰæijɿڣ-7깤ڣ-3ݲҪ +UPDATE #mutidata2 SET =dateadd(day,-7,),깤=dateadd(day,-3,) WHERE ferpclsid<>1 AND fnumber IN ('03.','04.R') +--ˮ(05.)Ʒ=-7깤=-4 +UPDATE #mutidata2 SET =dateadd(day,-7,),깤=dateadd(day,-4,) WHERE ferpclsid<>1 AND fnumber ='05.' +UPDATE #mutidata2 SET Ҫ󵽻=NULL WHERE ferpclsid<>1 +--SELECT * FROM #Mutidata2 +/*ݵڶijƷж*/ +UPDATE + a +SET + frate = ( + CASE WHEN f2 <= 10000 + AND f2 > 5000 THEN f2 * f1 * isnull (a.fentryselfz0142,0)/ 100.00 + isnull(a.fentryselfz0145,0)+ isnull(a.fentryselfz0151,0) WHEN f2 <= 5000 THEN f2 * f1 * isnull(a.fentryselfz0142,0)/ 100.00 + isnull(a.fentryselfz0145,0)+ isnull(a.fentryselfz0151,0)+ isnull(a.fentryselfz0152,0) WHEN f2 >= 100000 THEN f2 * f1 * isnull(a.fentryselfz0153,0)/ 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) WHEN f2 > 10000 + AND f2 <= 50000 THEN isnull(a.fentryselfz0143,0)* f2 * f1 / 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) WHEN f2 > 50000 + AND f2 < 100000 THEN isnull(a.fentryselfz0144,0)* f2 * f1 / 100.00 + isnull(a.fentryselfz0151,0) +( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) ELSE 0 end + ) +FROM + #mutidata2 a WHERE 1=1 + +/*=ڶ*+ڶӦ*/ +UPDATE a SET fneedqty = f2 * f1 + frate FROM #mutidata2 a WHERE 1=1 +/*ͬƷԭϽл*/ +INSERT INTO #mutidata ( fitemid,fneedqty,fbomlevel,frate,flevelstring,fbom, +frootbomid, +forderinterid, +forderentryid, +f1, +f2, +b.fentryselfz0142, +b.fentryselfz0143, +b.fentryselfz0144, +b.fentryselfz0145, +b.fentryselfz0151, +b.fentryselfz0152, +b.fentryselfz0153, +forderdate, +funitid, +ferpclsid, +fnumber, +f3, +, +, +깤, +Ҫ󵽻 +) +SELECT + fitemid 'FItemID', + sum(fneedqty) 'FNeedQty', + 2 'FBomLevel', + sum(frate) 'FRate', + '.2' 'FLevelStrIng', + max(fbom) 'FBom', + max(frootbomid) 'FRootBOMID', + max(forderinterid) 'FOrderInterID', + min(forderentryid) 'FOrderEntryID', + max(f1) 'F1', + max(f2) 'F2', + max(fentryselfz0142), + max(fentryselfz0143), + max(fentryselfz0144), + max(fentryselfz0145), + max(fentryselfz0151), + max(fentryselfz0152), + max(fentryselfz0153) 'FEntrySelfZ0153', + min(forderdate), + funitid 'FUnitID', + ferpclsid 'FErpClsID', + fnumber 'FNumber', + max(f3) 'F3', + min(), + min() , + min(깤) 깤, + min(Ҫ󵽻) Ҫ󵽻 +FROM + #mutidata2 WHERE f3 NOT LIKE '02.86%' AND f3 NOT LIKE '02.87%' AND f3 NOT LIKE + '05.%' +GROUP BY + fitemid, + funitid, + ferpclsid, + fnumber +UNION ALL +SELECT + fitemid, + sum(fneedqty) fneedqty, + 2 'FBomLevel', + sum(frate) frate, + '.2' flevelstring, + max(fbom) fbom, + max(frootbomid) frootbomid, + max(forderinterid) forderinterid, + min(forderentryid) forderentryid, + max(f1) f1, + max(f2) f2, + max(fentryselfz0142), + max(fentryselfz0143), + max(fentryselfz0144), + max(fentryselfz0145), + max(fentryselfz0151), + max(fentryselfz0152), + max(fentryselfz0153) 'FEntrySelfZ0153', + min(forderdate), + max(funitid), + max(ferpclsid), + max(fnumber), + max(f3), + min(), + min() , + min(깤) 깤, + min(Ҫ󵽻) Ҫ󵽻 +FROM + #mutidata2 WHERE f3 LIKE + '02.86%' + OR f3 LIKE '02.87%' + OR f3 LIKE '05.%' +GROUP BY + fitemid, + ferpclsid, + forderinterid, + forderentryid + +/*°Ʒļʱ*/ +UPDATE a SET a.ʱ = b.fqty FROM #mutidata a INNER JOIN #icinventory b ON a.fitemid=b.fitemid WHERE a.fbomlevel=2 --AND FErpClsID=2 +/*°ƷԤ*/ +UPDATE a SET a.[(δ) ] = b.fqty FROM #mutidata a INNER JOIN #yjrk b ON a.fitemid=b.fitemid WHERE a.fbomlevel=2 --AND FErpClsID=2 +/*ͶϵͶδ*/ +UPDATE a SET a.Ͷϵ = b.fqty FROM #mutidata a INNER JOIN #yjck b ON a.fitemid=b.fitemid WHERE a.fbomlevel=2 --AND FErpClsID=2 +/**************************************************************3 END***************************************************************/ +/**************************************************************4 START ***************************************************************/ +DELETE FROM #mutidata2 +INSERT INTO #mutidata2 ( fitemid,fneedqty,frate,fbom, +frootbomid, +forderinterid, +forderentryid, +f1, +f2, +b.fentryselfz0142, +b.fentryselfz0143, +b.fentryselfz0144, +b.fentryselfz0145, +b.fentryselfz0151, +b.fentryselfz0152, +fentryselfz0153, +forderdate, +funitid, +, +, +깤, +Ҫ󵽻 +) +SELECT + b.fitemid, + 0 fneedqty, + 0 frate, + a.fbom fbom, + frootbomid, + forderinterid, + forderentryid, + b.fauxqty f1, + CASE WHEN isnull(a.fneedqty,0)+ isnull(a.Ͷϵ,0)- isnull(a.ʱ,0)- isnull( + a.[(δ) ], + 0 + )> 0 THEN isnull(a.fneedqty,0)+ isnull(a.Ͷϵ,0)- isnull(a.ʱ,0)- isnull( + a.[(δ) ], + 0 + ) ELSE 0 end f2, + b.fentryselfz0142, + b.fentryselfz0143, + b.fentryselfz0144, + b.fentryselfz0145, + b.fentryselfz0151, + b.fentryselfz0152, + b.fentryselfz0153, + a.forderdate, + b.funitid, + '', + , + 깤, + Ҫ󵽻 +FROM + #mutidata a INNER JOIN icbom t WITH(nolock) ON a.fitemid = t.fitemid INNER + JOIN icbomchild b WITH(nolock) ON t.finterid = b.finterid +WHERE + t.fusestatus = 1072 + AND a.fbomlevel = 2 + +/*ȡϴǰ3λ(04.ͷͽȡ4λ)룬ϵֶ*/ +UPDATE + a +SET + fnumber = CASE WHEN b.fnumber LIKE '04.%' THEN substring(b.fnumber,1,4) ELSE substring(b.fnumber,1,3) end, + f3 = b.fnumber, + a.ferpclsid = b.ferpclsid +FROM + #mutidata2 a INNER JOIN t_icitem b WITH(nolock) ON a.fitemid=b.fitemid + +--ڰƷIJҪ󵽻=ƷĿ-3 +UPDATE + #mutidata2 SET Ҫ󵽻=dateadd(day,-3,) WHERE + ferpclsid = 1 +UPDATE + #mutidata2 SET =NULL,깤=NULL WHERE + ferpclsid = 1 + +--׸(03.04.R)Ʒ=-5깤=-2 +--UPDATE #Mutidata2 SET =DATEADD(DAY,-5,),깤=DATEADD(DAY,-2,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') +--2019-10-15 ֮ǰ趨׸ǰƷڰæijɿڣ-7깤ڣ-3ݲҪ +UPDATE + #mutidata2 SET =dateadd(day,-7,),깤= + dateadd(day,-3,) +WHERE + ferpclsid <> 1 + AND fnumber IN ('03.','04.R') + +--ˮ(05.)Ʒ=-7깤=-4 +UPDATE + #mutidata2 SET =dateadd(day,-7,),깤= + dateadd(day,-4,) +WHERE + ferpclsid <> 1 + AND fnumber = '05.' + +UPDATE + #mutidata2 SET Ҫ󵽻=NULL WHERE ferpclsid<>1 + +/*IJݵijƷж*/ +UPDATE + a +SET + frate = ( + CASE WHEN f2 <= 10000 + AND f2 > 5000 THEN f2 * f1 * isnull (a.fentryselfz0142,0)/ 100.00 + isnull(a.fentryselfz0145,0)+ isnull(a.fentryselfz0151,0) WHEN f2 <= 5000 THEN f2 * f1 * isnull(a.fentryselfz0142,0)/ 100.00 + isnull(a.fentryselfz0145,0)+ isnull(a.fentryselfz0151,0)+ isnull(a.fentryselfz0152,0) WHEN f2 >= 100000 THEN f2 * f1 * isnull(a.fentryselfz0153,0)/ 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) WHEN f2 > 10000 + AND f2 <= 50000 THEN isnull(a.fentryselfz0143,0)* f2 * f1 / 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) WHEN f2 > 50000 + AND f2 < 100000 THEN isnull(a.fentryselfz0144,0)* f2 * f1 / 100.00 + isnull(a.fentryselfz0151,0) +( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) ELSE 0 end + ) +FROM + #mutidata2 a + --WHERE a.FBomLevel=3 +/*ͬƷԭϽл*/ +INSERT INTO #mutidata ( fitemid,fneedqty,fbomlevel,frate,flevelstring,fbom, +frootbomid, +forderinterid, +forderentryid, +f1, +f2, +b.fentryselfz0142, +b.fentryselfz0143, +b.fentryselfz0144, +b.fentryselfz0145, +b.fentryselfz0151, +b.fentryselfz0152, +b.fentryselfz0153, +forderdate, +funitid, +ferpclsid, +fnumber, +f3, +, +, +깤, +Ҫ󵽻 +) +SELECT + fitemid, + sum(fneedqty) fneedqty, + 3 'FBomLevel', + sum(frate) frate, + '.3' flevelstring, + max(fbom) fbom, + max(frootbomid) frootbomid, + max(forderinterid) forderinterid, + min(forderentryid) forderentryid, + max(f1) f1, + max(f2) f2, + max(fentryselfz0142), + max(fentryselfz0143), + max(fentryselfz0144), + max(fentryselfz0145), + max(fentryselfz0151), + max(fentryselfz0152), + max(fentryselfz0153), + min(forderdate), + max(funitid), + max(ferpclsid), + max(fnumber), + max(f3), + min(), + min() , + min(깤) 깤, + min(Ҫ󵽻) Ҫ󵽻 +FROM + #mutidata2 WHERE f3 NOT LIKE '02.86%' AND f3 NOT LIKE + '02.87%' + AND f3 NOT LIKE '05.%' +GROUP BY + fitemid, + ferpclsid +UNION ALL +SELECT + fitemid, + sum(fneedqty) fneedqty, + 3 'FBomLevel', + sum(frate) frate, + '.3' flevelstring, + max(fbom) fbom, + max(frootbomid) frootbomid, + max(forderinterid) forderinterid, + min(forderentryid) forderentryid, + max(f1) f1, + max(f2) f2, + max(fentryselfz0142), + max(fentryselfz0143), + max(fentryselfz0144), + max(fentryselfz0145), + max(fentryselfz0151), + max(fentryselfz0152), + max(fentryselfz0153), + min(forderdate), + max(funitid), + max(ferpclsid), + max(fnumber), + max(f3), + min(), + min() , + min(깤) 깤, + min(Ҫ󵽻) Ҫ󵽻 +FROM + #mutidata2 WHERE + f3 LIKE '02.86%' + OR f3 LIKE '02.87%' + OR f3 LIKE '05.%' +GROUP BY + fitemid, + ferpclsid, + forderinterid, + forderentryid + +/*IJ=*IJ+Ӧ*/ +UPDATE a SET fneedqty = f2 * f1 + frate FROM #mutidata a WHERE fbomlevel=3 +/*°Ʒļʱ*/ +UPDATE + a +SET + a.ʱ = b.fqty +FROM + #mutidata a INNER JOIN #icinventory b + ON a.fitemid = b.fitemid +WHERE + a.fbomlevel = 3 + --AND FErpClsID=2 +/*°ƷԤ*/ +UPDATE + a +SET + a.[(δ) ] = b.fqty +FROM + #mutidata a INNER JOIN + #yjrk b ON a.fitemid=b.fitemid WHERE a.fbomlevel=3 + --AND FErpClsID=2 +/*ͶϵͶδ*/ +UPDATE + a +SET + a.Ͷϵ = b.fqty +FROM + #mutidata a INNER JOIN #yjck b + ON a.fitemid = b.fitemid +WHERE + a.fbomlevel = 3 + --AND FErpClsID=2 +/**************************************************************4 END***************************************************************/ +/**************************************************************5 START ***************************************************************/ +INSERT INTO #mutidata ( fitemid,fneedqty,fbomlevel,frate,flevelstring,fbom, +frootbomid, +forderinterid, +forderentryid, +f1, +f2, +b.fentryselfz0142, +b.fentryselfz0143, +b.fentryselfz0144, +b.fentryselfz0145, +b.fentryselfz0151, +b.fentryselfz0152, +b.fentryselfz0153, +forderdate, +funitid, +, +, +깤, +Ҫ󵽻 +) +SELECT + b.fitemid, + 0 fneedqty, + 4 'FBomLevel', + 0 frate, + '..4' flevelstring, + a.fbom fbom, + frootbomid, + forderinterid, + forderentryid, + b.fauxqty f1, + CASE WHEN isnull(a.fneedqty,0)+ isnull(a.Ͷϵ,0)- isnull(a.ʱ,0)- isnull( + a.[(δ) ], + 0 + )> 0 THEN isnull(a.fneedqty,0) + isnull(a.Ͷϵ,0)- isnull(a.ʱ,0)- isnull( + a.[(δ) ], + 0 + ) ELSE 0 end f2, + b.fentryselfz0142, + b.fentryselfz0143, + b.fentryselfz0144, + b.fentryselfz0145, + b.fentryselfz0151, + b.fentryselfz0152, + b.fentryselfz0153, + a.forderdate, + b.funitid, + , + , + 깤, + Ҫ󵽻 +FROM + #mutidata a + INNER JOIN icbom t WITH(nolock) ON a.fitemid = t.fitemid + INNER JOIN icbomchild b WITH(nolock) ON t.finterid = b.finterid +WHERE + t.fusestatus = 1072 + AND a.fbomlevel = 3 + +/*ȡϴǰ3λ룬ϵֶ*/ +UPDATE + a +SET + fnumber = CASE WHEN b.fnumber LIKE '04.%' THEN substring(b.fnumber,1,4) ELSE substring(b.fnumber,1,3) end, + f3 = b.fnumber, + a.ferpclsid = b.ferpclsid +FROM + #mutidata a INNER JOIN t_icitem b WITH(nolock) ON a.fitemid=b.fitemid +WHERE + a.fbomlevel = 4 + +/*IJݵijƷж*/ +UPDATE + a +SET + frate = ( + CASE WHEN f2 <= 10000 + AND f2 > 5000 THEN f2 * f1 * isnull (a.fentryselfz0142,0)/ 100.00 + isnull(a.fentryselfz0145,0)+ isnull(a.fentryselfz0151,0) WHEN f2 <= 5000 THEN f2 * f1 * isnull(a.fentryselfz0142,0)/ 100.00 + isnull(a.fentryselfz0145,0)+ isnull(a.fentryselfz0151,0)+ isnull(a.fentryselfz0152,0) WHEN f2 >= 100000 THEN f2 * f1 * isnull(a.fentryselfz0153,0)/ 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) WHEN f2 > 10000 + AND f2 <= 50000 THEN isnull(a.fentryselfz0143,0)* f2 * f1 / 100.00 + isnull(a.fentryselfz0151,0)+( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) WHEN f2 > 50000 + AND f2 < 100000 THEN isnull(a.fentryselfz0144,0)* f2 * f1 / 100.00 + isnull(a.fentryselfz0151,0) +( + CASE WHEN a.fnumber = '05.' THEN isnull(a.fentryselfz0145,0) ELSE 0 end + ) ELSE 0 end + ) +FROM + #mutidata a WHERE a.fbomlevel=4 + +/*IJ=*IJ+Ӧ*/ +UPDATE a SET fneedqty = f2 * f1 + frate FROM #mutidata a WHERE fbomlevel=4 +/*°Ʒļʱ*/ +UPDATE + a +SET + a.ʱ = b.fqty +FROM + #mutidata a INNER JOIN #icinventory b + ON a.fitemid = b.fitemid +WHERE + a.fbomlevel = 4 + --AND FErpClsID=2 +/*°ƷԤ*/ +UPDATE + a +SET + a.[(δ) ] = b.fqty +FROM + #mutidata a INNER JOIN + #yjrk b ON a.fitemid=b.fitemid WHERE a.fbomlevel=4 + --AND FErpClsID=2 +/*ͶϵͶδ*/ +UPDATE + a +SET + a.Ͷϵ = b.fqty +FROM + #mutidata a INNER JOIN #yjck b + ON a.fitemid = b.fitemid +WHERE + a.fbomlevel = 3 +--AND FErpClsID=2 +/**************************************************************5 END***************************************************************/ +UPDATE + a +SET + a.δ۶ = b.fqty +FROM + #mutidata a INNER + JOIN #seorder b ON a.fitemid=b.fitemid WHERE 1=1 + +CREATE TABLE [dbo].[ #MrpEntry1]( [FIndex] [INT] identity(1,1),[FID] [INT] NOT NULL,[FQty11] [DECIMAL](23,10) DEFAULT (0), +-- +[FDate2] [DATETIME] NULL, +[FDate3] [DATETIME] NULL, +[FitemID1] [INT], +--ƷID +[FitemID2] [INT], +--ϳ +[FNumber3] nvarchar(50), +[FItemID3] [INT], +--϶̴ +[FUnitID] [INT], +[FQty1] [DECIMAL](23,10) DEFAULT (0), +--ë +[FQty2] [DECIMAL](23,10) DEFAULT (0), +--ʱ +[FQty3] [DECIMAL](23,10) DEFAULT (0), +--ɹ뵥 +[FQty4] [DECIMAL](23,10) DEFAULT (0), +--ɹ +[FQty5] [DECIMAL](23,10) DEFAULT (0), +--쵥 +[FQty6] [DECIMAL](23,10) DEFAULT (0), +--; +[FQty7] [DECIMAL](23,10) DEFAULT (0), +-- +[FQty8] [DECIMAL](23,10) DEFAULT (0), +--Ƿ +[FQty9] [DECIMAL](23,10) DEFAULT (0), +--δת +[FQty10] [DECIMAL](23,10) DEFAULT (0), +--깺 +[FQty12] [DECIMAL](23,10) DEFAULT (0), +--ѷ +[FOrderInterID] INT, +[FOrderEntryID] INT, +[FNumber2] nvarchar(50), +[FOrderDate] datetime +) CREATE TABLE [dbo].[ #MrpEntry2]( [FID] [INT] NOT NULL,[FIndex] +[INT] identity(1,1), +[FItemID] [INT], +[FUnitID] [INT], +[FQty] [DECIMAL](23,10) DEFAULT (0), +-- +[FDate] datetime, +-- +[FDate1] datetime, +--깤 +[FCustOrderNo] VARCHAR(20), +--ͻ +[FOrderInterID] INT, +[FOrderEntryID] INT +) + + +/*ͷ*/ +INSERT INTO [dbo].[Mrp]( + [FID],[FClassTypeID],[FBillNo], + [FText4],fuser,ftime2 +) +SELECT + @FID, + 200000002, + @BillNo, + @BillNo, + @UserID, + getdate() + +/*****************START *************************/ +INSERT INTO [dbo].[MrpEntry2] ( + [FID], + [FIndex], + [FBase], + [FBase1], + finteger2, + finteger3, + fdate4, + fdate5, + ftext8, + ftext9, + fdecimal --ʱ + , + fdecimal1 --(δ) + , + fdecimal2 --δ۶ + , + fdecimal3 --Ͷϵ + ) +SELECT + a.forderinterid, + row_number() over( + ORDER BY + forderinterid, + forderentryid, + fbomlevel + ) AS findex, + a.fitemid, + a.funitid, + forderinterid, + forderentryid, + a., + a.깤, + a.fneedqty, + CONVERT( + DECIMAL(18,4), + ( + CASE WHEN isnull(a.fneedqty,0)+ isnull(a.Ͷϵ,0)- isnull(a.ʱ,0)- isnull( + a.[(δ) ], + 0 + )< 0 THEN 0 ELSE isnull(a.fneedqty,0)+ isnull(a.Ͷϵ,0)- isnull(a.ʱ,0)- isnull( + a.[(δ) ], + 0 + ) end + ) + ), + a.ʱ --ʱ + , + a.[(δ) ], + a.δ۶, + a.Ͷϵ +FROM + #mutidata a WHERE a.ferpclsid IN(2,3) ORDER BY a.forderinterid, + forderentryid, + fbomlevel + +/**************************************************END **************************************************/ +/**************************************************START ⹺,ֽͻԭ**************************************************/ +INSERT INTO #mrpentry1(fid,fitemid1,fqty11,fitemid2,fitemid3,fnumber3, +funitid, +fqty1, +fdate2, +fdate3, +forderinterid, +forderentryid, +[FNumber2], +fqty2 +) +SELECT + a.forderinterid fid, + ( + CASE WHEN a.fbom <> 0 THEN a.fbom ELSE a.fitemid end + ) fitemid1, + a.fneedqty, + a.fitemid fitemid2, + a.fitemid fitemid3, + b.fnumber, + b.funitid, + a.fneedqty * e.fcoefficient fqty1, + a.Ҫ󵽻, + --dateadd(day,-3,C.FOrderDate),--(CASE WHEN b.fnumber like '02.86.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.87.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.71.%' THEN dateadd(day,-25,C.FOrderDate) ELSE C.FOrderDate END) FDate2,--=ȷϷ-15 + a.Ҫ󵽻, + --dateadd(day,-3,C.FOrderDate),--(CASE WHEN b.fnumber like '02.86.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.87.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.71.%' THEN dateadd(day,-25,C.FOrderDate) ELSE C.FOrderDate END) FDate3,--ϵ + a.forderinterid, + a.forderentryid, + substring(b.fnumber,1,5) fnumber2, + a.ʱ +FROM + ( + SELECT + t.forderinterid, + t.fitemid, + sum(t.fneedqty) fneedqty, + min(t.forderentryid) forderentryid, + funitid, + avg(t.ʱ) ʱ, + ferpclsid, + min(Ҫ󵽻) 'Ҫ󵽻', + max(fbom) 'FBom' + FROM + #mutidata t + WHERE + 1 = 1 + AND ( + t.f3 NOT LIKE '02.86%' + AND t.f3 NOT LIKE '02.87%' + ) + GROUP BY + t.forderinterid, + t.fitemid, + funitid, + ferpclsid, + fbom + ) a + LEFT JOIN t_icitem b ON a.fitemid = b.fitemid --LEFT JOIN #Mutidata c ON c.FOrderInterID=a.FOrderInterID AND c.FOrderEntryID=a.FOrderEntryID AND a.FItemID=c.FItemID --AND c.FLevelStrIng='0' + LEFT JOIN t_measureunit e ON e.fmeasureunitid = a.funitid +WHERE + 1 = 1 + AND b.ferpclsid = 1 +ORDER BY + a.fitemid + +--------------------------------------------------------02.8602.86ϲ------------------------------------------------------------------ +INSERT INTO #mrpentry1(fid,fitemid1,fqty11,fitemid2,fitemid3,fnumber3, +funitid, +fqty1, +fdate2, +fdate3, +forderinterid, +forderentryid, +[FNumber2], +fqty2 +) +SELECT + a.forderinterid fid, + a.fbom fitemid1, + a.fneedqty, + a.fitemid fitemid2, + a.fitemid fitemid3, + b.fnumber, + b.funitid, + a.fneedqty * e.fcoefficient fqty1, + a.Ҫ󵽻, + --dateadd(day,-20,C.FOrderDate) FDate2,--=ȷϷ-15 + a.Ҫ󵽻, + --dateadd(day,-20,C.FOrderDate) FDate3,--ϵ + a.forderinterid, + a.forderentryid, + substring(b.fnumber,1,5) fnumber2, + a.ʱ +FROM + #mutidata a LEFT JOIN t_icitem b ON a.fitemid = b.fitemid LEFT JOIN + t_measureunit e ON e.fmeasureunitid = a.funitid +WHERE + 1 = 1 + AND b.ferpclsid = 1 + AND ( + a.f3 LIKE '02.86%' + OR a.f3 LIKE '02.87%' + ) +ORDER BY + a.fitemid + /*ɹ뵥*/ +SELECT + v1.fitemid, + isnull( + sum(v1.fqty), + 0 + )- isnull( + sum(v2.fqty), + 0 + ) fqty INTO #porequest FROM porequest v LEFT JOIN porequestentry v1 ON v.finterid = + v1.finterid + LEFT JOIN poorderentry v2 ON v2.fsourceinterid = v1.finterid + AND v2.fsourceentryid = v1.fentryid +WHERE + v.fcancellation = 0 + AND v.fstatus < 3 + AND v1.fmrpclosed = 0 +GROUP BY + v1.fitemid + +UPDATE a SET fqty3 = b.fqty FROM #mrpentry1 a LEFT JOIN #porequest b ON a.fitemid2=b.fitemid +/*ɹ*/ +SELECT + fitemid, + sum(fqty - fauxreceiptqty) fqty INTO #poorder FROM poorder v + LEFT JOIN poorderentry v1 ON v.finterid = v1.finterid +WHERE + v.fcancellation = 0 + AND v.fstatus < 3 +GROUP BY + fitemid +HAVING + sum(fqty - fauxreceiptqty) > 0 +UPDATE + a +SET + fqty4 = b.fqty +FROM + #mrpentry1 a LEFT JOIN #poorder b ON + a.fitemid2 = b.fitemid + +/*֪ͨ/쵥*/ +SELECT + fitemid, + sum( + (fqty - fauxconcommitqty) + ) fqty INTO #poinstock FROM + poinstock v + LEFT JOIN poinstockentry v1 ON v.finterid = v1.finterid +WHERE + v.fcancellation = 0 + AND v.fstatus < 3 + AND v.ftrantype = 72 +GROUP BY + fitemid +HAVING + sum(fqty - fauxconcommitqty) > 0 +UPDATE + a +SET + fqty5 = b.fqty, + fqty6 = isnull(fqty3,0)+ isnull(fqty4,0)+ isnull(b.fqty,0) +FROM + #mrpentry1 a LEFT JOIN #poinstock b ON + a.fitemid2 = b.fitemid + +/*;*/ +--UPDATE a SET FQty6=ISNULL(FQty3,0)+ISNULL(FQty4,0)+ISNULL(FQty5,0) FROM #MrpEntry1 a +/*ѷ,δ᰸δ*/ +UPDATE + a +SET + fqty12 = isnull(b.fqty,0) +FROM + #mrpentry1 a LEFT JOIN #yjck b ON + a.fitemid2 = b.fitemid +UPDATE + a +SET + a.fnumber3 = 'P' +FROM + #mrpentry1 a WHERE a.findex IN ( +SELECT + min(findex) +FROM + #mrpentry1 GROUP BY fitemid2) UPDATE t SET t.fqty8 = + t2.ۼ +FROM + #mrpentry1 t LEFT JOIN ( SELECT ( SELECT sum( isnull(fqty1,0) + isnull( + CASE WHEN fnumber3 = 'P' THEN fqty12 ELSE 0 end, + 0 +) +) +FROM + #mrpentry1 t1 WHERE + t1.fitemid2 = t.fitemid2 + AND t1.findex <= t.findex +) ۼ, +t.fitemid2, +t.findex +FROM + #mrpentry1 t ) t2 ON t.fitemid2 = t2.fitemid2 AND t.findex = t2.findex +UPDATE + t +SET + t.fqty8 = isnull(fqty2,0)+ isnull(fqty6,0)- isnull(fqty8,0), + t.fqty10 = CASE WHEN isnull(fqty2,0)+ isnull(fqty6,0)- isnull(fqty8,0) < 0 THEN -( + isnull(fqty2,0)+ isnull(fqty6,0)- isnull(fqty8,0) + ) ELSE 0 end, + t.fqty7 = isnull(fqty1,0)+ isnull(fqty2,0)+ isnull(fqty6,0)- isnull(fqty8,0)+ isnull( + CASE WHEN fnumber3 = 'P' THEN fqty12 ELSE 0 end, + 0 + ) +FROM + #mrpentry1 t + +INSERT INTO [dbo].[MrpEntry1] ( + [FID], + [FIndex], + [FDate2], + [FDate3], + ftext49, + ftext50, + ftext51, + [FitemID2], + [FUnitID], + finteger4, + finteger5, + ftext10 -- + , + ftext11 --ëT + , + ftext12 --ʱT + , + ftext13 --ɹ뵥T + , + ftext14 --ɹT + , + ftext15 --쵥T + , + ftext16 --;T + , + ftext17 --ѷT + , + ftext18 --T + , + ftext19 --ǷT + --,ftext20--δתT + , + ftext21 --깺 + ) +SELECT + forderinterid, + row_number() over( + ORDER BY + findex + ) findex, + fdate2, + fdate3, + c.fnumber, + c.fname, + c.fmodel, + fitemid2, + a.funitid, + forderinterid, + forderentryid, + CONVERT( + DECIMAL(18,4), + isnull(fqty11,0) + ) -- + , + CONVERT( + DECIMAL(18,4), + isnull(fqty1,0) + ) --ë + , + CONVERT( + DECIMAL(18,4), + isnull(fqty2,0) + ) --ʱ + , + CONVERT( + DECIMAL(18,4), + isnull(fqty3,0) + ) --ɹ뵥 + , + CONVERT( + DECIMAL(18,4), + isnull(fqty4,0) + ) --ɹ + , + CONVERT( + DECIMAL(18,4), + isnull(fqty5,0) + ) --쵥 + , + CONVERT( + DECIMAL(18,4), + isnull(fqty6,0) + ) --; + , + CONVERT( + DECIMAL(18,4), + isnull(fqty12,0) + ) --ѷ + , + CONVERT( + DECIMAL(18,4), + isnull(fqty7,0) + ) -- + , + CONVERT( + DECIMAL(18,4), + isnull(fqty8,0) + ) --Ƿ + --,CONVERT(DECIMAL(18,4),ISNULL(FQty9,0))--δת + , + CASE WHEN isnull(a.fqty8,0) < 0 THEN CONVERT( + DECIMAL(18,4), + - isnull(a.fqty8,0) + ) ELSE 0 end -- 깺 +FROM + #mrpentry1 a INNER JOIN t_icitem b ON a.fitemid2 = b.fitemid INNER JOIN + t_icitem c ON a.fitemid1 = c.fitemid +WHERE + a.fnumber2 NOT IN ( + '02.86','02.87','01.A.','01.B.', + '01.C.','01.D.','01.E.','01.H.' + ) + +/**************************************************END ⹺**************************************************/ +/**************************************************START ֽ**************************************************/ +INSERT INTO [dbo].[MrpEntry3] ( [FID],[FIndex],[FBase5] --Ʒ +,[FText23] -- +,[FBase6] --̴ֽ +,[FText24] --ë +,[FText25] --ʱ +,[FText26] --ɹ +,[FText27] --ɹ +,[FText28] --쵥 +,[FText29] --; +,[FText30] --ѷ +,[FText31] --Ƿ +,[FText32] -- +,[FText33] --ɹ +,[FDate6] --ֽ +,[FDate7] --鵽 +,[FCheckBox4] --ȷת +,[FCheckBox5] --תʶ +,[FText34] --ɹ뵥 +,[FText35] --ע +,[FINteger6] -- +,[FINteger7] --к +,[FDate8] --ת +,[FUser3] ) --ת +SELECT forderinterid,row_number() over( ORDER BY findex ) findex,fitemid1, +isnull(fqty11,0),fitemid2,CONVERT( DECIMAL(18,4),isnull([FQty1],0) ) +--ë +,CONVERT( DECIMAL(18,4),isnull([FQty2],0) ) --ʱ +,CONVERT( DECIMAL(18,4),isnull([FQty3],0) ) --ɹ뵥 +,CONVERT( DECIMAL(18,4),isnull([FQty4],0) ) --ɹ +,CONVERT( DECIMAL(18,4),isnull([FQty5],0) ) --쵥 +,CONVERT( DECIMAL(18,4),isnull([FQty6],0) ) --; +,CONVERT( DECIMAL(18,4),isnull([FQty12],0) ) --ѷ +,CONVERT( DECIMAL(18,4),isnull([FQty8],0) ) --Ƿ +,CONVERT( DECIMAL(18,4),isnull([FQty7],0) ) -- +,CONVERT( DECIMAL(18,4),isnull([FQty10],0) ) --깺 +,fdate2,fdate3,0,0,'','',forderinterid,forderentryid,getdate(),0 FROM +#mrpentry1 a WHERE 1 = 1 AND ( fnumber2 LIKE '02.86%' OR fnumber2 LIKE '02.87%' +) +/**************************************************END ֽ**************************************************/ +/**************************************************START ԭ**************************************************/ +INSERT INTO [dbo].[MrpEntry4] ( [FID],[FIndex],[FBase7],[FText36],[FBase8], +[FText37] --ë +,[FText38] --ʱ +,[FText39] --ɹ뵥 +,[FText40] --ɹ +,[FText41] --쵥 +,[FText42] --; +,[FText43] --ѷ +,[FText44] --Ƿ +,[FText45] -- +,[FText46] --깺 +,[FDate9],[FDate10],[FCheckBox6],[FCheckBox7],[FText47],[FText48], +[FINteger8],[FINteger9],[FDate11],[FUser4] ) SELECT forderinterid,row_number +() over(ORDER BY findex) findex,fitemid1,isnull(fqty11,0),fitemid2,CONVERT( +DECIMAL(18,4),isnull([FQty1],0) ) --ë +,CONVERT( DECIMAL(18,4),isnull([FQty2],0) ) --ʱ +,CONVERT( DECIMAL(18,4),isnull([FQty3],0) ) --ɹ뵥 +,CONVERT( DECIMAL(18,4),isnull([FQty4],0) ) --ɹ +,CONVERT( DECIMAL(18,4),isnull([FQty5],0) ) --쵥 +,CONVERT( DECIMAL(18,4),isnull([FQty6],0) ) --; +,CONVERT( DECIMAL(18,4),isnull([FQty12],0) ) --ѷ +,CONVERT( DECIMAL(18,4),isnull([FQty8],0) ) --Ƿ +,CONVERT( DECIMAL(18,4),isnull([FQty7],0) ) -- +,CONVERT( DECIMAL(18,4),isnull([FQty10],0) ) --깺 +,fdate2 --GETDATE(), +,fdate3 --GETDATE() +,0,0,'','',forderinterid,forderentryid,getdate(),0 FROM #mrpentry1 a +WHERE 1 = 1 AND a.fnumber2 IN ( '01.A.','01.B.','01.C.','01.D.','01.E.', +'01.H.' ) +/**************************************************END ԭ**************************************************/ +UPDATE seorder SET fheadselfs0153 = 'Y' WHERE finterid = @FID +--FHeadSelfS0153 ־ +SELECT @FID,@BillNo DROP TABLE #mrpentry1 DROP TABLE #mrpentry2 DROP TABLE +#mutidata DROP TABLE #mutidata2 DROP TABLE #icinventory DROP TABLE #yjck DROP +TABLE #yjrk DROP TABLE #seorder DROP TABLE #poinstock DROP TABLE #porequest DROP +TABLE #poorder end \ No newline at end of file diff --git a/多组织即时库存查询.sql b/多组织即时库存查询.sql new file mode 100644 index 0000000..f86a967 --- /dev/null +++ b/多组织即时库存查询.sql @@ -0,0 +1,27 @@ +SELECT + t0.FMASTERID + ,t0.FMATERIALID + ,t0.FNUMBER + ,ISNULL(t1.STOCKQTY,0) AS FSTOCKQTY + ,t0.FUSEORGID + ,t2_l.FNAME +FROM + T_BD_MATERIAL t0 + LEFT JOIN T_BD_MATERIALPRODUCE t0p ON t0p.FMATERIALID = t0.FMATERIALID + LEFT JOIN ( + SELECT + t1.FMATERIALID + ,t1.FSTOCKORGID + ,SUM(T1.FBASEQTY) AS STOCKQTY + FROM + T_STK_INVENTORY t1 + GROUP BY + t1.FMATERIALID + ,t1.FSTOCKORGID + ) t1 ON t0.FMASTERID = t1.FMATERIALID --id + AND t0.FUSEORGID = t1.FSTOCKORGID --ʹ֯ + LEFT JOIN T_ORG_ORGANIZATIONS_L t2_l on t2_l.FORGID = t0.FUSEORGID AND t2_l.FLOCALEID = 2052 +WHERE 1=1 + AND t0.FDOCUMENTSTATUS = 'C' + AND t0.FNUMBER = '1.01.003' --ϱ +ORDER BY t0.FMATERIALID \ No newline at end of file diff --git a/水务_其他出库单_退货_四舍五入.sql b/水务_其他出库单_退货_四舍五入.sql new file mode 100644 index 0000000..84e8b53 --- /dev/null +++ b/水务_其他出库单_退货_四舍五入.sql @@ -0,0 +1,48 @@ +SELECT + t0.FID + ,t0.fbillno + ,t0e.FENTRYID + ,t0e.FReferPrice + ,t0e.FReferAmount + ,t0e.fqty + ,charindex('.',t0e.FReferPrice) as 'pIndex' + ,len(t0e.FReferPrice) as 'pLen' + ,charindex('.',t0e.FReferAmount) as 'aIndex' + ,len(t0e.FReferAmount) as 'aLen' + into #temp +FROM + T_STK_MISDELIVERY t0 + INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.fid = t0e.fid +WHERE + t0.FSTOCKDIRECT = 'RETURN' + AND t0e.FReferPrice !='' + AND t0e.FReferAmount !='' + --AND t0.fbillno = 'QTCK074239' + +SELECT + t0.FENTRYID + ,t0.FBILLNO + ,t0.FReferPrice + ,t0.FReferAmount + ,t0.fqty + ,cast(cast(t0.FReferPrice as decimal(23,2)) AS varchar) as newRPrice + ,cast(cast(t0.FReferAmount as decimal(23,2)) AS varchar) as newRAmount + INTO #temp1 +FROM + #temp t0 +WHERE + ((t0.pindex > 0 AND (t0.plen - t0.pindex) >2) or (t0.aIndex > 0 AND (t0.alen - t0.aIndex) >2) ) + --AND fentryid = 675561 + +--SELECT +-- t0.FENTRYID +-- ,t0.FReferPrice +-- ,t0.FReferAmount +-- ,t1.newRPrice +-- ,t1.newRAmount +UPDATE t0 set t0.FReferPrice = t1.newRPrice,t0.FReferAmount=t1.newRAmount +FROM + T_STK_MISDELIVERYENTRY t0 + INNER JOIN #temp1 t1 on t0.FENTRYID = t1.FENTRYID +drop table #temp +drop table #temp1 \ No newline at end of file diff --git a/珍妮采.sql b/珍妮采.sql new file mode 100644 index 0000000..cfaac22 --- /dev/null +++ b/珍妮采.sql @@ -0,0 +1,2560 @@ +USE [AIS20180209140748] +GO +/****** Object: StoredProcedure [dbo].[SeorderBomExpAND] Script Date: 2024/1/24 15:09:53 ******/ +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +--SELECT * FROM seorder WHERE FBillNo='test201706201' + +--SELECT * FROM SEOrderEntry WHERE FInterID=19907 + +--UPDATE SEOrder SET FHeadSelfS0153='N' WHERE FInterID=19422 + +--[SeorderBomExpAND] 'KLSO-20/0032/1-D7','mornINgstar',0,16393 + +--USE AIS20180209140748 + +-- ============================================= + +-- Author: + +-- Create date: 2019-10-18 + +-- Description: + +-- ============================================= + +ALTER PROCEDURE [dbo].[SeorderBomExpAND] + + + + + + + +( + + + + @BillNo as varchar(100),--۶ + + + + @UseName as varchar(50),--û + + + + @FInterID INT=0, --۶ + + + + @UserID INT=16393--ûID + + + +) + + + +AS + + + +BEGIN + + + + + + + +SET NOCOUNT ON + + + +SET ANSI_WARNINGS OFF + + + + + + + + DECLARE @FID INT + + + + + + + + --declare @BillNo as varchar(100) + + + + --declare @FInterID INT=0 + + + + --set @BillNo='LSO-0782/18/2-D9-1' + + + + + + + + IF @FInterID=0 + + + + SELECT TOP 1 @FID=FInterID FROM SEOrder WHERE fbillno =@BillNo AND FCancellatiON=0 + + + + ELSE + + + + SET @FID=@FInterID + + + + + + + +--DECLARE @FID INT + + + +--SET @FID=19917 + + + + + + + +DELETE FROM Mrp WHERE FID =@FID + + + +DELETE FROM MrpEntry WHERE FID =@FID + + + +DELETE FROM MrpEntry1 WHERE FID =@FID + + + +DELETE FROM MrpEntry2 WHERE FID =@FID + + + +DELETE FROM MrpEntry3 WHERE FID =@FID + + + +DELETE FROM MrpEntry4 WHERE FID =@FID + + + + + + + +Create Table #Mutidata( + + + + FIndex INT IDENTITY(1,1) + + + +,FBomInterid INT DEFAULT(0) --BOM + + + +,FItemID INT null -- + + + +,FNeedQty DECIMAL(28,14) DEFAULT(0) NULL + + + +,FBomLevel INT null --BOM㼶 0ΪƷ 1ΪƷһ㣬) + + + +,FParentID INT DEFAULT(0)null + + + +,FRate DECIMAL(28,14) DEFAULT(0) NULL + + + +,FLevelStrIng varchar(200) null + + + +,FBom INT + + + +,FRootBOMID INT DEFAULT(0) + + + +,FOrderInterID INT -- + + + +,FOrderEntryID INT --к + + + +,F1 DECIMAL(28,14) DEFAULT(0) NULL -- --ֱϼԵǰϵ + + + +,F2 DECIMAL(28,14) DEFAULT(0) NULL --ֱϼϵ + + + +,F3 NVARCHAR(255) --ϳ + + + +,FNumber NVARCHAR(255) --ϳǰ3λ + + + +,FEntrySelfZ0142 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0142 䶯%һ£ + + + +,FEntrySelfZ0143 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0143 䶯%һ + + + +,FEntrySelfZ0144 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0144 䶯%ϣ + + + +,FEntrySelfZ0145 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0145 ճϻ5K¹̶ֵ + + + +,FEntrySelfZ0151 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0151 ̶ֵ + + + +,FEntrySelfZ0152 DECIMAL(28,14) DEFAULT(0)--FEntrySelfZ0152 5000¶ + + + +,FEntrySelfZ0153 DECIMAL(28,14) DEFAULT(0)--FEntrySelfZ0153 䶯%10ϣ + + + +,FOrderDate DATETIME --۶ + + + +,FUnitID INT --BOMõļλ + + + +,FErpClsID INT DEFAULT(0) -- + + + +,ʱ DECIMAL(28,14) DEFAULT(0)--ʱ + + + +,[(δ)] DECIMAL(28,14) DEFAULT(0) + + + +,δ۶ DECIMAL(28,14) DEFAULT(0) + + + +,Ͷϵ DECIMAL(28,14) DEFAULT(0) + + + +, DECIMAL(28,14) DEFAULT(0) + + + +, DECIMAL(28,14) DEFAULT(0) + + + +, DATETIME + + + +, DATETIME + + + +,깤 DATETIME + + + +,Ҫ󵽻 DATETIME + + + +) + + + + + + + +Create Table #Mutidata2( + + + + FIndex INT IDENTITY(1,1) + + + +,FItemID INT null -- + + + +,FNeedQty DECIMAL(28,14) DEFAULT(0) NULL + + + +,FRate DECIMAL(28,14) DEFAULT(0) NULL + + + +,FBom INT + + + +,FRootBOMID INT DEFAULT(0) + + + +,FOrderInterID INT -- + + + +,FOrderEntryID INT --к + + + +,F1 DECIMAL(28,14) DEFAULT(0) NULL -- --ֱϼԵǰϵ + + + +,F2 DECIMAL(28,14) DEFAULT(0) NULL --ֱϼϵ + + + +,F3 NVARCHAR(255) --ϳ + + + +,FNumber NVARCHAR(255) --ϳǰ3λ + + + +,FEntrySelfZ0142 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0142 䶯%һ£ + + + +,FEntrySelfZ0143 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0143 䶯%һ + + + +,FEntrySelfZ0144 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0144 䶯%ϣ + + + +,FEntrySelfZ0145 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0145 ճϻ5K¹̶ֵ + + + +,FEntrySelfZ0151 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0151 ̶ֵ + + + +,FEntrySelfZ0152 DECIMAL(28,14) DEFAULT(0)--FEntrySelfZ0152 5000¶ + + + +,FEntrySelfZ0153 DECIMAL(28,14) DEFAULT(0)--FEntrySelfZ0153 䶯%10ϣ + + + +,FOrderDate DATETIME --۶ + + + +,FUnitID INT --BOMõļλ + + + +,FErpClsID INT DEFAULT(0) -- + + + +, DATETIME + + + +, DATETIME + + + +,깤 DATETIME + + + +,Ҫ󵽻 DATETIME + + + +) + + + + + + + +CREATE UNIQUE CLUSTERED INDEX idx_FIndex ON #Mutidata(FIndex) + + + +CREATE NONCLUSTERED INDEX idx_FItemID ON #Mutidata(FItemID) + + + +CREATE NONCLUSTERED INDEX idx_FLevelStrIng ON #Mutidata(FBomLevel) + + + +CREATE NONCLUSTERED INDEX idx_F3 ON #Mutidata(F3) + + + +CREATE NONCLUSTERED INDEX idx_FNumber ON #Mutidata(FNumber) + + + +CREATE UNIQUE CLUSTERED INDEX idx_FIndex ON #Mutidata2(FIndex) + + + +CREATE NONCLUSTERED INDEX idx_FItemID ON #Mutidata2(FItemID) + + + +CREATE NONCLUSTERED INDEX idx_FNumber ON #Mutidata2(FNumber) + + + + + + + + /*°Ʒļʱ*/ + + + + SELECT a.FItemID ,SUM(FQty)FQty + + + + Into #ICINventory + + + + FROM ICINventory a WITH(NOLOCK) + + + + LEFT JOIN t_Stock b WITH(NOLOCK) ON a.FStockID=b.FItemID + + + + LEFT JOIN t_icitem c WITH(NOLOCK) ON a.FItemID=c.FItemID + + + + WHERE b.FProperty=10 + + + + AND C.FNumber NOT LIKE '05.%' + + + + GROUP BY a.FItemID HAVING SUM(FQty)<>0 + + + + + + + + /*°ƷԤ,ֻ˵IJƷⵥ*/ + + + + SELECT v1.FItemID ,SUM(v1.Fauxqty-v1.FAuxStockQty) as FQty --ƻ- + + + + Into #YJRK + + + + FROM ICMO v1 WITH(NOLOCK) INNER JOIN t_icitem t9 WITH(NOLOCK) ON v1.FItemID = t9.FItemID + + + + WHERE 1=1 AND t9.FItemID<>0 + + + + AND v1.Fauxqty-v1.FAuxStockQty>0 + + + + AND (v1.FTranType = 85 AND v1.FType <> 11060 AND (v1.FStatus IN (1,2,5) --ȷ,´״̬ + + + + AND t9.FErpClsID IN (2,3) AND v1.FCancellatiON = 0)) + + + + AND (t9.FNumber like '03.%' or t9.FNumber like '04.%') + + + + GROUP BY v1.FItemID + + + + + + + + /*ͶϵͶδ,05.ͷϲҪǿϢ*/ + + + + SELECT c.FItemID,SUM(ISNULL(c.FAuxQtyMust*m.FCoefficient,0)+ISNULL(c.FAuxQtySupply*m.FCoefficient,0)-ISNULL(c.FAuxStockQty*m.FCoefficient,0)) as 'FQty' + + + + Into #YJCK--Ӧ- + + + + FROM ICMO a WITH(NOLOCK) + + + + INNER JOIN PPBOM b WITH(NOLOCK) ON a.FInterID=b.FICMOINterID + + + + INNER JOIN PPBOMEntry c WITH(NOLOCK) ON b.FInterID=c.FInterID + + + + INNER JOIN t_MeasureUnit m WITH(NOLOCK) ON c.FUnitID=m.FMeasureUnitID + + + + INNER JOIN t_ICItem n WITH(NOLOCK) ON n.FItemID=c.FItemID + + + + WHERE 1=1 AND a.FStatus IN(1,2,5) AND (ISNULL(c.FAuxQtyMust,0)+ISNULL(c.FAuxQtySupply,0)-ISNULL(c.FAuxStockQty,0))>0 + + + + AND n.FNumber NOT LIKE '05.%' + + + + GROUP BY c.FItemID + + + + + + + + /*δرյ۶δת񵥵ijƷͰƷ*/ + + + + select FBase FItemID,SUM(CONVERT(FLoat,FText9)) FQty + + + + Into #Seorder + + + + from MrpEntry2 t1 WITH(NOLOCK) + + + + INNER JOIN SEOrder v1 WITH(NOLOCK) ON t1.FInteger2=v1.FInterID + + + + where 1=1 AND (v1.FChangeMark=0 AND (Isnull(v1.FClassTypeID,0)<>1007100) AND (v1.FCancellatiON = 0 AND v1.FStatus > 2)) + + + + AND CONVERT(FLoat,FText9)>0 + + + + AND t1.FCheckBox3=0 AND FBASE>0 GROUP BY FBase + +/**************************************************************1 START ***************************************************************/ + + INSERT Into #Mutidata + + + + ( + + + + FBomInterid,FItemID,FNeedQty,FBomLevel,FParentID + + + + ,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID + + + + ,FOrderEntryID,FOrderDate,FUnitID,,,깤 + + + + ) + + + + SELECT a.FInterID 'FBomInterid',se.FItemID 'FItemID',se.FQty*(m.FCoefficient/n.FCoefficient) 'FNeedQty',0 'FBomLevel', 0 'FParentID',0 'FRate' + + + + ,0 'FLevelStrIng',a.FItemID 'FBom',a.FInterID 'FRootBOMID',se.FInterID 'FOrderInterID',se.FEntryID 'FOrderEntryID', + + + + se.FDate '',a.FUnitID 'FUnitID',se.FEntrySelfS0177 '',DATEADD(DAY,2,se.FEntrySelfS0177) '',DATEADD(DAY,-7,se.FDate) '깤' + + + + FROM SEOrder s WITH(NOLOCK) + + + + INNER JOIN SEOrderEntry se WITH(NOLOCK) ON s.FInterID=se.FInterID + + + + LEFT JOIN ICBOM a WITH(NOLOCK) ON a.FItemID=se.FItemID + + + + INNER JOIN t_MeasureUnit m WITH(NOLOCK) ON se.FUnitID=m.FMeasureUnitID + + + + INNER JOIN t_MeasureUnit n WITH(NOLOCK) ON a.FUnitID=n.FMeasureUnitID + + + + WHERE s.FCancellatiON=0 AND ISNULL(s.FCheckerID,0)>0 + + + + AND s.FBillNo='' --'20180418test'-- + + + + AND a.FUseStatus=1072 --ʹ״̬BOM + + + + + + + + /*ȡƷϴǰ4λ룬ϵֶ*/ + + + + UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING (b.FNumber,1,4) ELSE SUBSTRING (b.FNumber,1,3) END, + + + + F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata a WITH(NOLOCK) INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID + + + + + + + + /**************************************************************1 END***************************************************************/ + + + + + + + + /**************************************************************2 START ***************************************************************/ + + + + INSERT Into #Mutidata2 + + + + ( + + + + FItemID,FNeedQty,FRate,FBom,FRootBOMID,FOrderInterID,FOrderEntryID,F1,F2 + + + + ,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153 + + + + ,FOrderDate,FUnitID,--,,깤,Ҫ󵽻 + + + + ) + + + + SELECT b.FItemID 'FItemID',0 'FNeedQty' + + + + ,0 'FRate',a.FBom 'FBom',FRootBOMID 'FRootBOMID',FOrderInterID 'FOrderInterID' + + + + ,FOrderEntryID 'FOrderEntryID',b.FAuxQty 'F1',a.FNeedQty 'F2',b.FEntrySelfZ0142,b.FEntrySelfZ0143 + + + + ,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,a.FOrderDate 'FOrderDate',b.FUnitID 'FUnitID',a. '' + + + + FROM #Mutidata a + + + + INNER JOIN ICBOMChild b WITH(NOLOCK) ON a.FBomInterid=b.FInterID + + + + WHERE A.FBomLevel=0 ORDER BY b.FItemID,FOrderEntryID + + + + + + + --IJƷΪ⹺ӿ + --**************************2020-08-04 add wfm**********************************************-- + + INSERT Into #Mutidata2 + + ( + FItemID,FNeedQty,FRate,FBom,FRootBOMID,FOrderInterID,FOrderEntryID,F1,F2, + b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153, + FOrderDate,FUnitID,--,,깤,Ҫ󵽻 + ) + SELECT a.FItemID 'FItemID',se.FQty 'FNeedQty' + ,0 'FRate',0 'FBom',0 'FRootBOMID',se.FInterID 'FOrderInterID' + ,se.FEntryID 'FOrderEntryID',1 'F1',se.FQty 'F2',0 FEntrySelfZ0142,0 FEntrySelfZ0143 + ,0 FEntrySelfZ0144, 0 FEntrySelfZ0145,0 FEntrySelfZ0151, 0 FEntrySelfZ0152,0 FEntrySelfZ0153,s.FDate 'FOrderDate',n.FMeasureUnitID 'FUnitID',se.FEntrySelfS0177 '' + + FROM SEOrder s WITH(NOLOCK) + INNER JOIN SEOrderEntry se WITH(NOLOCK) ON s.FInterID=se.FInterID + INNER JOIN t_ICItem a WITH(NOLOCK) ON a.FItemID=se.FItemID + INNER JOIN t_MeasureUnit m WITH(NOLOCK) ON se.FUnitID=m.FMeasureUnitID + INNER JOIN t_MeasureUnit n WITH(NOLOCK) ON a.FUnitID=n.FMeasureUnitID + WHERE s.FCancellatiON=0 AND ISNULL(s.FCheckerID,0)>0 + AND s.FBillNo=@BillNo --''KLSO-20/0032/1-D7''-- + AND a.FErpClsID =1 --⹺ + + --******************************end******************************************-- + + + + + + + + + + + + + /*ȡϴǰ3λ(04.ͷͽȡ4λ)룬ϵֶ*/ + + + + UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING (b.FNumber,1,4) ELSE SUBSTRING (b.FNumber,1,3) END , + + + + F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata2 a + + + + INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID + + + + + + + + --ڳƷIJҪ󵽻=Ʒ-3 + + + + UPDATE #Mutidata2 SET Ҫ󵽻=DATEADD(DAY,-3,) WHERE FErpClsID=1 + + + + --׸(03.04.R)Ʒ=-5깤=-2 + + + + --UPDATE #Mutidata2 SET =DATEADD(DAY,-5,),깤=DATEADD(DAY,-2,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') + + --2019-10-15 ֮ǰ趨׸ǰƷڰæijɿڣ-7깤ڣ-3ݲҪ + + UPDATE #Mutidata2 SET =DATEADD(DAY,-7,),깤=DATEADD(DAY,-3,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') + + + + --ˮ(05.)Ʒ=-7깤=-4 + + + + UPDATE #Mutidata2 SET =DATEADD(DAY,-7,),깤=DATEADD(DAY,-4,) WHERE FErpClsID<>1 AND FNumber ='05.' + + + + + + + + /*ڶݵһijƷж*/ + + + + UPDATE a SET FRate= + + + + (CASE + + + + WHEN F2 <=10000 AND F2>5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0) + + + + WHEN F2<=5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)+ISNULL(a.FEntrySelfZ0152,0) + + + + WHEN F2>=100000 THEN F2*F1*ISNULL(a.FEntrySelfZ0153,0)/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) + + + + WHEN F2>10000 AND F2<=50000 THEN ISNULL(a.FEntrySelfZ0143,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN A.FNumber = '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) + + + + WHEN F2 >50000 and F2<100000 THEN ISNULL(a.FEntrySelfZ0144,0)*F2*F1/100.00 +ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN A.FNumber ='05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) ELSE 0 END ) + + + + FROM #Mutidata2 a WHERE 1=1 + + + + /*ڶ=һ*ڶ+һӦ*/ + + --******2020-08-04 ADD FBom<>0*********************** + + UPDATE #Mutidata2 SET FNeedQty=F2*F1+FRate WHERE 1=1 and FBom<>0 + + + /*ͬƷԭϽл*/ + + + + INSERT Into #Mutidata + + + ( + + FItemID,FNeedQty,FBomLevel + ,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID + ,FOrderEntryID,F1,F2,b.FEntrySelfZ0142,b.FEntrySelfZ0143 + ,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,FOrderDate + ,FUnitID,FErpClsID,FNumber,F3,,,깤,Ҫ󵽻 + + + + ) + + + +SELECT FItemID,SUM(FNeedQty) 'FNeedQty',1 'FBomLevel' + + + + ,SUM(FRate) 'FRate','.1' 'FLevelStrIng',MAX(FBom) 'FBom',MAX(FRootBOMID) 'FRootBOMID',MAX(FOrderInterID) 'FOrderInterID' + + + + ,MIN(FOrderEntryID) 'FOrderEntryID',MAX(F1) 'F1',MAX(F2) 'F2',MAX(FEntrySelfZ0142) 'FEntrySelfZ0142',MAX(FEntrySelfZ0143) 'FEntrySelfZ0143' + + + + ,MAX(FEntrySelfZ0144) 'FEntrySelfZ0144',MAX(FEntrySelfZ0145) 'FEntrySelfZ0145',MAX(FEntrySelfZ0151) 'FEntrySelfZ0151',MAX(FEntrySelfZ0152) 'FEntrySelfZ0152',MAX(FEntrySelfZ0153) 'FEntrySelfZ0153', + + + + MIN(FOrderDate) 'FOrderDate' + + + + ,FUnitID 'FUnitID',FErpClsID 'FErpClsID',MAX(FNumber) 'FNumber',MAX(F3) 'F3',MIN() '' + + + + ,MIN() '',MIN(깤) '깤',MIN(Ҫ󵽻) 'Ҫ󵽻' + + + + FROM #Mutidata2 WHERE (F3 NOT LIKE '02.86%' AND F3 NOT LIKE '02.87%' AND F3 NOT LIKE '05.%') GROUP BY FItemID,FUnitID,FErpClsID,FNumber + + + + UNION ALL + + + + SELECT FItemID,SUM(FNeedQty)'FNeedQty',1 'FBomLevel' + + + + ,SUM(FRate) 'FRate','.1' 'FLevelStrIng',MAX(FBom) 'FBom',MAX(FRootBOMID) 'FRootBOMID',MAX(FOrderInterID) 'FOrderInterID' + + + + ,MIN(FOrderEntryID)'FOrderEntryID',MAX(F1) 'F1',MAX(F2) 'F2',MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143) + + + + ,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152),MAX(FEntrySelfZ0153) 'FEntrySelfZ0153',MIN(FOrderDate)'FOrderDate' + + + + ,FUnitID 'FUnitID',FErpClsID 'FErpClsID',MAX(FNumber) 'FNumber',MAX(F3) 'F3',MIN() '' + + + + ,MIN() '',MIN(깤) '깤',MIN(Ҫ󵽻) 'Ҫ󵽻' + + + + FROM #Mutidata2 WHERE F3 LIKE '02.86%' OR F3 LIKE '02.87%' OR F3 LIKE '05.%' GROUP BY FItemID,FUnitID,FErpClsID,FNumber,FOrderInterID,FOrderEntryID + + + + /*°Ʒļʱ*/ + + + + UPDATE a SET A.ʱ=b.FQty + + + + FROM #Mutidata a INNER JOIN #ICINventory b ON a.FItemID=b.FItemID WHERE a.FBomLevel=1 --AND FErpClsID=2 + + + + /*°ƷԤ*/ + + + + UPDATE a SET A.[(δ)]=b.FQty FROM #Mutidata a INNER JOIN #YJRK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=1 --AND FErpClsID=2 + + + + /*ͶϵͶδ*/ + + + + UPDATE a SET A.Ͷϵ=b.FQty FROM #Mutidata a INNER JOIN #YJCK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=1 --AND FErpClsID=2 + + + + + + + +/**************************************************************2 END***************************************************************/ + + + + + + + +/**************************************************************3 START ***************************************************************/ + + + + DELETE FROM #Mutidata2 + + + + INSERT Into #Mutidata2 + + + + ( + + + + FItemID,FNeedQty,FRate,FBom,FRootBOMID,FOrderInterID ,FOrderEntryID,F1,F2 + + + + ,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153 + + + + ,FOrderDate,FUnitID,,,깤,Ҫ󵽻 + + + + ) + + + + SELECT b.FItemID,0 'FNeedQty',0 'FRate',a.FBom 'FBom', FRootBOMID,FOrderInterID,FOrderEntryID,b.FAuxQty 'F1' + + + + ,CASE WHEN ISNULL(a.FNeedQty,0)+ISNULL(a.Ͷϵ,0)-ISNULL(a.ʱ,0)-ISNULL(a.[(δ)],0)>0 THEN + + + + ISNULL(a.FNeedQty,0)+ISNULL(a.Ͷϵ,0)-ISNULL(a.ʱ,0)-ISNULL(a.[(δ)],0) ELSE 0 END 'F2' + + + + ,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153 + + + + ,A.FOrderDate,b.FUnitID, '',,깤,Ҫ󵽻 + + + + FROM #Mutidata a + + + + INNER JOIN ICBOM t WITH(NOLOCK) ON a.FItemID=t.FItemID + + + + INNER JOIN ICBOMChild b WITH(NOLOCK) ON t.FInterID=b.FInterID + + + + WHERE t.FUseStatus=1072 AND A.FBomLevel=1 + + + +--SELECT * FROM #Mutidata2 where FErpClsID<>1 + + + + /*ȡϴǰ3λ(04.ͷͽȡ4λ)룬ϵֶ*/ + + + + UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING (b.FNumber,1,4) ELSE SUBSTRING (b.FNumber,1,3) END, + + + + F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata2 a INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID WHERE 1=1 + + + + --ڰƷIJҪ󵽻=ƷĿ-3 + + + + UPDATE #Mutidata2 SET Ҫ󵽻=DATEADD(DAY,-3,) WHERE FErpClsID=1 + + + + UPDATE #Mutidata2 SET =NULL , 깤=NULL WHERE FErpClsID=1 + + + + --׸(03.04.R)Ʒ=-5깤=-2 + + + + --UPDATE #Mutidata2 SET =DATEADD(DAY,-5,),깤=DATEADD(DAY,-2,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') + + --2019-10-15 ֮ǰ趨׸ǰƷڰæijɿڣ-7깤ڣ-3ݲҪ + + UPDATE #Mutidata2 SET =DATEADD(DAY,-7,),깤=DATEADD(DAY,-3,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') + + + + + + --ˮ(05.)Ʒ=-7깤=-4 + + + + UPDATE #Mutidata2 SET =DATEADD(DAY,-7,),깤=DATEADD(DAY,-4,) WHERE FErpClsID<>1 AND FNumber ='05.' + + + + UPDATE #Mutidata2 SET Ҫ󵽻=NULL WHERE FErpClsID<>1 + + + + --SELECT * FROM #Mutidata2 + + + + /*ݵڶijƷж*/ + + + + UPDATE a SET FRate= + + + + (CASE + + + + WHEN F2 <=10000 AND F2>5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0) + + + + WHEN F2<=5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)+ISNULL(a.FEntrySelfZ0152,0) + + + + WHEN F2>=100000 THEN F2*F1*ISNULL(a.FEntrySelfZ0153,0)/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) + + + + WHEN F2>10000 AND F2<=50000 THEN ISNULL(a.FEntrySelfZ0143,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) + + + + WHEN F2>50000 and F2<100000 THEN ISNULL(a.FEntrySelfZ0144,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0) +(CASE WHEN a.FNumber = '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) ELSE 0 END) + + + + FROM #Mutidata2 a WHERE 1=1 + + + + + + + + /*=ڶ*+ڶӦ*/ + + + + UPDATE a SET FNeedQty=F2*F1+FRate FROM #Mutidata2 a WHERE 1=1 + + + + + + + + /*ͬƷԭϽл*/ + + + + INSERT Into #Mutidata + + + + ( + + + + FItemID,FNeedQty,FBomLevel + + + + ,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID + + + + ,FOrderEntryID,F1,F2,b.FEntrySelfZ0142,b.FEntrySelfZ0143 + + + + ,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,FOrderDate + + + + ,FUnitID,FErpClsID,FNumber,F3,,,깤,Ҫ󵽻 + + + + ) + + + + SELECT FItemID 'FItemID',SUM(FNeedQty) 'FNeedQty',2 'FBomLevel' + + + + ,SUM(FRate) 'FRate','.2' 'FLevelStrIng',MAX(FBom) 'FBom',MAX(FRootBOMID) 'FRootBOMID',MAX(FOrderInterID) 'FOrderInterID' + + + + ,MIN(FOrderEntryID) 'FOrderEntryID',MAX(F1) 'F1',MAX(F2) 'F2',MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143) + + + + ,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152),MAX(FEntrySelfZ0153) 'FEntrySelfZ0153',MIN(FOrderDate) + + + + ,FUnitID 'FUnitID',FErpClsID 'FErpClsID',FNumber 'FNumber',MAX(F3) 'F3',MIN(),MIN() ,MIN(깤) 깤,MIN(Ҫ󵽻) Ҫ󵽻 + + + + FROM #Mutidata2 WHERE F3 NOT LIKE '02.86%' AND F3 NOT LIKE '02.87%' AND F3 NOT LIKE '05.%' GROUP BY FItemID,FUnitID,FErpClsID,FNumber + + + + UNION ALL + + + + SELECT FItemID,SUM(FNeedQty)FNeedQty,2 'FBomLevel' + + + + ,SUM(FRate)FRate,'.2' FLevelStrIng,MAX(FBom)FBom,MAX(FRootBOMID)FRootBOMID,MAX(FOrderInterID) FOrderInterID + + + + ,MIN(FOrderEntryID)FOrderEntryID,MAX(F1)F1,MAX(F2)F2,MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143) + + + + ,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152),MAX(FEntrySelfZ0153) 'FEntrySelfZ0153',MIN(FOrderDate) + + + + ,MAX(FUnitID),MAX(FErpClsID),MAX(FNumber),MAX(F3),MIN(),MIN() ,MIN(깤) 깤,MIN(Ҫ󵽻) Ҫ󵽻 + + + + FROM #Mutidata2 WHERE F3 LIKE '02.86%' OR F3 LIKE '02.87%' OR F3 LIKE '05.%' GROUP BY FItemID,FErpClsID,FOrderInterID,FOrderEntryID + + + + + + + + /*°Ʒļʱ*/ + + + + UPDATE a SET A.ʱ=b.FQty FROM #Mutidata a INNER JOIN #ICINventory b ON a.FItemID=b.FItemID WHERE a.FBomLevel=2 --AND FErpClsID=2 + + + + /*°ƷԤ*/ + + + + UPDATE a SET A.[(δ)]=b.FQty FROM #Mutidata a INNER JOIN #YJRK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=2 --AND FErpClsID=2 + + + + /*ͶϵͶδ*/ + + + + UPDATE a SET A.Ͷϵ=b.FQty FROM #Mutidata a INNER JOIN #YJCK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=2 --AND FErpClsID=2 + + + + /**************************************************************3 END***************************************************************/ + + + + + + + + /**************************************************************4 START ***************************************************************/ + + + + DELETE FROM #Mutidata2 + + + + INSERT Into #Mutidata2 + + + + ( + + + + FItemID,FNeedQty,FRate,FBom,FRootBOMID,FOrderInterID ,FOrderEntryID,F1,F2 + + + + ,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,FEntrySelfZ0153 + + + + ,FOrderDate,FUnitID,,,깤,Ҫ󵽻 + + + + ) + + + + SELECT b.FItemID,0 FNeedQty + + + + ,0 FRate + + + + ,a.FBom FBom, FRootBOMID,FOrderInterID,FOrderEntryID,b.FAuxQty F1 + + + + ,CASE WHEN ISNULL(a.FNeedQty,0)+ISNULL(a.Ͷϵ,0)-ISNULL(a.ʱ,0)-ISNULL(a.[(δ)],0)>0 THEN ISNULL(a.FNeedQty,0)+ISNULL(a.Ͷϵ,0)-ISNULL(a.ʱ,0)-ISNULL(a.[(δ)],0) ELSE 0 END F2 + + + + ,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153 + + + + ,A.FOrderDate,b.FUnitID, '',,깤,Ҫ󵽻 + + + + FROM #Mutidata a + + + + INNER JOIN ICBOM t WITH(NOLOCK) ON a.FItemID=t.FItemID + + + + INNER JOIN ICBOMChild b WITH(NOLOCK) ON t.FInterID=b.FInterID + + + + WHERE t.FUseStatus=1072 AND A.FBomLevel=2 + + + + + + + + /*ȡϴǰ3λ(04.ͷͽȡ4λ)룬ϵֶ*/ + + + + UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING(b.FNumber,1,4) ELSE SUBSTRING(b.FNumber,1,3) END, + + + + F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata2 a INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID + + + + + + + + --ڰƷIJҪ󵽻=ƷĿ-3 + + + + UPDATE #Mutidata2 SET Ҫ󵽻=DATEADD(DAY,-3,) WHERE FErpClsID=1 + + + + UPDATE #Mutidata2 SET =NULL , 깤=NULL WHERE FErpClsID=1 + + + + --׸(03.04.R)Ʒ=-5깤=-2 + + + + --UPDATE #Mutidata2 SET =DATEADD(DAY,-5,),깤=DATEADD(DAY,-2,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') + + --2019-10-15 ֮ǰ趨׸ǰƷڰæijɿڣ-7깤ڣ-3ݲҪ + + UPDATE #Mutidata2 SET =DATEADD(DAY,-7,),깤=DATEADD(DAY,-3,) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R') + + + + + + --ˮ(05.)Ʒ=-7깤=-4 + + + + UPDATE #Mutidata2 SET =DATEADD(DAY,-7,),깤=DATEADD(DAY,-4,) WHERE FErpClsID<>1 AND FNumber ='05.' + + + + UPDATE #Mutidata2 SET Ҫ󵽻=NULL WHERE FErpClsID<>1 + + + + + + + +/*IJݵijƷж*/ + + + + + + + +UPDATE a SET FRate= + + + +(CASE WHEN F2 <=10000 AND F2>5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0) + + + +WHEN F2<=5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)+ISNULL(a.FEntrySelfZ0152,0) + + + + WHEN F2>=100000 THEN F2*F1*ISNULL(a.FEntrySelfZ0153,0)/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) + + + +WHEN F2>10000 AND F2<=50000 THEN ISNULL(a.FEntrySelfZ0143,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) + + + +WHEN F2 >50000 and F2<100000 THEN ISNULL(a.FEntrySelfZ0144,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0) +(CASE WHEN a.FNumber = '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) ELSE 0 END) + + + +FROM #Mutidata2 a --WHERE a.FBomLevel=3 + + + + + + + + /*ͬƷԭϽл*/ + + + + INSERT Into #Mutidata + + + + ( + + + + FItemID,FNeedQty,FBomLevel + + + + ,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID + + + + ,FOrderEntryID,F1,F2,b.FEntrySelfZ0142,b.FEntrySelfZ0143 + + + + ,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,FOrderDate + + + + ,FUnitID,FErpClsID,FNumber,F3,,,깤,Ҫ󵽻 + + + + ) + + + + SELECT FItemID,SUM(FNeedQty)FNeedQty,3 'FBomLevel' + + + + ,SUM(FRate)FRate,'.3' FLevelStrIng,MAX(FBom)FBom,MAX(FRootBOMID)FRootBOMID,MAX(FOrderInterID) FOrderInterID + + + + ,MIN(FOrderEntryID)FOrderEntryID,MAX(F1)F1,MAX(F2)F2,MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143) + + + + ,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152),MAX(FEntrySelfZ0153),MIN(FOrderDate) + + + + ,MAX(FUnitID),MAX(FErpClsID),MAX(FNumber),MAX(F3),MIN(),MIN() ,MIN(깤) 깤,MIN(Ҫ󵽻) Ҫ󵽻 + + + + FROM #Mutidata2 WHERE F3 NOT LIKE '02.86%' AND F3 NOT LIKE '02.87%' AND F3 NOT LIKE '05.%' GROUP BY FItemID,FErpClsID + + + + UNION ALL + + + + SELECT FItemID,SUM(FNeedQty)FNeedQty,3 'FBomLevel' + + + + ,SUM(FRate)FRate,'.3' FLevelStrIng,MAX(FBom)FBom,MAX(FRootBOMID)FRootBOMID,MAX(FOrderInterID) FOrderInterID + + + + ,MIN(FOrderEntryID)FOrderEntryID,MAX(F1)F1,MAX(F2)F2,MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143) + + + + ,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152), MAX(FEntrySelfZ0153),MIN(FOrderDate) + + + + ,MAX(FUnitID),MAX(FErpClsID),MAX(FNumber),MAX(F3),MIN(),MIN() ,MIN(깤) 깤,MIN(Ҫ󵽻) Ҫ󵽻 + + + + FROM #Mutidata2 WHERE F3 LIKE '02.86%' OR F3 LIKE '02.87%' OR F3 LIKE '05.%' GROUP BY FItemID,FErpClsID,FOrderInterID,FOrderEntryID + + + + + + + + /*IJ=*IJ+Ӧ*/ + + + + UPDATE a SET FNeedQty=F2*F1+FRate FROM #Mutidata a WHERE FBomLevel=3 + + + + /*°Ʒļʱ*/ + + + + UPDATE a SET A.ʱ=b.FQty FROM #Mutidata a INNER JOIN #ICINventory b ON a.FItemID=b.FItemID WHERE a.FBomLevel=3 --AND FErpClsID=2 + + + + /*°ƷԤ*/ + + + + UPDATE a SET A.[(δ)]=b.FQty FROM #Mutidata a INNER JOIN #YJRK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=3 --AND FErpClsID=2 + + + + /*ͶϵͶδ*/ + + + + UPDATE a SET A.Ͷϵ=b.FQty FROM #Mutidata a INNER JOIN #YJCK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=3 --AND FErpClsID=2 + + + + /**************************************************************4 END***************************************************************/ + + + + + + + + /**************************************************************5 START ***************************************************************/ + + + + INSERT Into #Mutidata + + + + ( + + + + FItemID,FNeedQty,FBomLevel + + + + ,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID + + + + ,FOrderEntryID,F1,F2,b.FEntrySelfZ0142,b.FEntrySelfZ0143 + + + + ,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,FOrderDate + + + + ,FUnitID ,,,깤,Ҫ󵽻 + + + + ) + + + + SELECT b.FItemID,0 FNeedQty,4 'FBomLevel',0 FRate + + + + ,'..4' FLevelStrIng,a.FBom FBom, FRootBOMID,FOrderInterID,FOrderEntryID,b.FAuxQty F1 + + + + ,CASE WHEN ISNULL(a.FNeedQty,0)+ISNULL(a.Ͷϵ,0)-ISNULL(a.ʱ,0)-ISNULL(a.[(δ)],0)>0 THEN ISNULL(a.FNeedQty,0)+ISNULL(a.Ͷϵ,0)-ISNULL(a.ʱ,0)-ISNULL(a.[(δ)],0) ELSE 0 END F2 + + + + ,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153 + + + + ,A.FOrderDate,b.FUnitID ,,,깤,Ҫ󵽻 + + + + FROM #Mutidata a + + + + INNER JOIN ICBOM t WITH(NOLOCK) ON a.FItemID=t.FItemID + + + + INNER JOIN ICBOMChild b WITH(NOLOCK) ON t.FInterID=b.FInterID + + + + WHERE t.FUseStatus=1072 AND A.FBomLevel=3 + + + + + + + + /*ȡϴǰ3λ룬ϵֶ*/ + + + + UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING(b.FNumber,1,4) ELSE SUBSTRING(b.FNumber,1,3) END, + + + + F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata a INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID WHERE a.FBomLevel=4 + + + + + + + +/*IJݵijƷж*/ + + + +UPDATE a SET FRate= + + + +(CASE WHEN F2 <=10000 AND F2>5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0) + + + +WHEN F2<=5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)+ISNULL(a.FEntrySelfZ0152,0) + + + + WHEN F2>=100000 THEN F2*F1*ISNULL(a.FEntrySelfZ0153,0)/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) + + + +WHEN F2>10000 AND F2<=50000 THEN ISNULL(a.FEntrySelfZ0143,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) + + + +WHEN F2 >50000 and F2<100000 THEN ISNULL(a.FEntrySelfZ0144,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0) +(CASE WHEN a.FNumber = '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) ELSE 0 END) + + + +FROM #Mutidata a WHERE a.FBomLevel=4 + + + + + + + +/*IJ=*IJ+Ӧ*/ + + + + UPDATE a SET FNeedQty=F2*F1+FRate FROM #Mutidata a WHERE FBomLevel=4 + + + + + + + + /*°Ʒļʱ*/ + + + + UPDATE a SET A.ʱ=b.FQty FROM #Mutidata a INNER JOIN #ICINventory b ON a.FItemID=b.FItemID WHERE a.FBomLevel=4 --AND FErpClsID=2 + + + + /*°ƷԤ*/ + + + + UPDATE a SET A.[(δ)]=b.FQty FROM #Mutidata a INNER JOIN #YJRK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=4 --AND FErpClsID=2 + + + + /*ͶϵͶδ*/ + + + + UPDATE a SET A.Ͷϵ=b.FQty FROM #Mutidata a INNER JOIN #YJCK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=3--AND FErpClsID=2 + + + + + + + + /**************************************************************5 END***************************************************************/ + + + + + + + +UPDATE a SET A.δ۶=b.FQty FROM #Mutidata a INNER JOIN #Seorder b ON a.FItemID=b.FItemID WHERE 1=1 + + + + + + + +CREATE TABLE [dbo].[#MrpEntry1]( + + + + [FIndex] [INT] identity(1,1), + + + + [FID] [INT] NOT NULL, + + + + [FQty11] [DECIMAL](23, 10) DEFAULT (0),-- + + + + [FDate2] [DATETIME] NULL, + + + + [FDate3] [DATETIME] NULL, + + + + [FitemID1] [INT] , --ƷID + + + + [FitemID2] [INT] , --ϳ + + + + [FNumber3] nvarchar(50), + + + + [FItemID3] [INT], --϶̴ + + + + [FUnitID] [INT] , + + + + [FQty1] [DECIMAL](23, 10) DEFAULT (0),--ë + + + + [FQty2] [DECIMAL](23, 10) DEFAULT (0),--ʱ + + + + [FQty3] [DECIMAL](23, 10) DEFAULT (0),--ɹ뵥 + + + + [FQty4] [DECIMAL](23, 10) DEFAULT (0),--ɹ + + + + [FQty5] [DECIMAL](23, 10) DEFAULT (0),--쵥 + + + + [FQty6] [DECIMAL](23, 10) DEFAULT (0),--; + + + + [FQty7] [DECIMAL](23, 10) DEFAULT (0),-- + + + + [FQty8] [DECIMAL](23, 10) DEFAULT (0),--Ƿ + + + + [FQty9] [DECIMAL](23, 10) DEFAULT (0),--δת + + + + [FQty10] [DECIMAL](23, 10) DEFAULT (0),--깺 + + + + [FQty12] [DECIMAL](23, 10) DEFAULT (0),--ѷ + + + + [FOrderInterID] INT , + + + + [FOrderEntryID] INT, + + + + [FNumber2] nvarchar(50), + + + + [FOrderDate] DATETIME + + + +) + + + + + + + +CREATE TABLE [dbo].[#MrpEntry2]( + + + + [FID] [INT] NOT NULL, + + + + [FIndex] [INT] identity(1,1), + + + + [FItemID] [INT] , + + + + [FUnitID] [INT] , + + + + [FQty] [DECIMAL](23, 10) DEFAULT (0),-- + + + + [FDate] DATETIME, -- + + + + [FDate1] DATETIME, --깤 + + + + [FCustOrderNo] varchar(20), --ͻ + + + + [FOrderInterID] INT , + + + + [FOrderEntryID] INT + + + +) + + + + + + + + /*ͷ*/ + + + + INSERT Into [dbo].[Mrp]([FID],[FClassTypeID],[FBillNo],[FText4],FUser,FTime2) SELECT @FID,200000002,@BillNo,@BillNo,@UserID,GETDATE() + + + + + + + +/*****************START *************************/ + + + + + + + +INSERT Into [dbo].[MrpEntry2] + + + + ( [FID] + + + + ,[FIndex] + + + + ,[FBase] + + + + ,[FBase1] + + + + ,FInteger2 + + + + ,FINteger3 + + + + ,FDate4 + + + + ,FDate5 + + + + ,ftext8 + + + + ,ftext9 + + + + ,FDecimal --ʱ + + + + ,FDecimal1--(δ) + + + + ,FDecimal2--δ۶ + + + + ,FDecimal3--Ͷϵ + + + + ) + + + + SELECT + + + + a.FOrderInterID + + + + ,ROW_NUMBER() OVER(ORDER BY FOrderInterID,FOrderEntryID,FBomLevel ) as FIndex + + + + ,a.FItemID + + + + ,A.FUnitID + + + + ,FOrderInterID + + + + ,FOrderEntryID + + + + ,a. + + + + ,a.깤 + + + + ,a.FNeedQty + + + + ,CONVERT(DECIMAL(18,4),(CASE WHEN ISNULL(a.FNeedQty,0)+ISNULL(a.Ͷϵ,0)-ISNULL(a.ʱ,0)-ISNULL(a.[(δ)],0)<0 THEN 0 + + + + ELSE ISNULL(a.FNeedQty,0)+ISNULL(a.Ͷϵ,0)-ISNULL(a.ʱ,0)-ISNULL(a.[(δ)],0) END)) + + + + ,a.ʱ --ʱ + + + + ,a.[(δ)] + + + + ,a.δ۶ + + + + ,a.Ͷϵ + + + +FROM #Mutidata a WHERE a.FErpClsID IN(2,3) ORDER BY a.FOrderInterID, FOrderEntryID,FBomLevel + + + +/**************************************************END **************************************************/ + + + + + + + +/**************************************************START ⹺,ֽͻԭ**************************************************/ + + + +INSERT Into #MrpEntry1(FID,FitemID1,FQty11,FitemID2,FitemID3,FNumber3,FUnitID,FQty1,FDate2,FDate3,FOrderInterID,FOrderEntryID,[FNumber2],FQty2) + +SELECT a.FOrderInterID FID,(case when A.FBom<>0 then a.FBom else a.FItemID end) FitemID1,a.FNeedQty,a.FItemID FitemID2,a.FItemID FitemID3,b.FNumber,b.FUnitID,a.FNeedQty*e.FCoefficient FQty1, + + +a.Ҫ󵽻, +--dateadd(day,-3,C.FOrderDate),--(CASE WHEN b.fnumber like '02.86.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.87.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.71.%' THEN dateadd(day,-25,C.FOrderDate) ELSE C.FOrderDate END) FDate2,--=ȷϷ-15 + + +a.Ҫ󵽻,--dateadd(day,-3,C.FOrderDate),--(CASE WHEN b.fnumber like '02.86.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.87.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.71.%' THEN dateadd(day,-25,C.FOrderDate) ELSE C.FOrderDate END) FDate3,--ϵ + +a.FOrderInterID,a.FOrderEntryID,SUBSTRING(b.FNumber,1,5) FNumber2,A.ʱ + + +FROM + +(SELECT t.FOrderInterID,t.FItemID,SUM(t.FNeedQty)FNeedQty,MIN(t.FOrderEntryID) FOrderEntryID ,FUnitID, + +AVG(t.ʱ)ʱ,FErpClsID ,MIN(Ҫ󵽻) 'Ҫ󵽻',MAX(FBom) 'FBom' + + + +FROM #Mutidata t + +WHERE 1=1 AND (t.F3 NOT LIKE '02.86%' AND t.F3 NOT LIKE '02.87%') GROUP BY t.FOrderInterID,t.FItemID,FUnitID,FErpClsID,FBom) a +LEFT JOIN t_icitem b ON a.FItemID =b.FItemID + +--LEFT JOIN #Mutidata c ON c.FOrderInterID=a.FOrderInterID AND c.FOrderEntryID=a.FOrderEntryID AND a.FItemID=c.FItemID --AND c.FLevelStrIng='0' + + + +LEFT JOIN t_MeasureUnit e ON e.FMeasureUnitID=a.FUnitID + + + +WHERE 1=1 AND b.FErpClsID =1 + + + +ORDER BY a.FItemID + + + +--------------------------------------------------------02.8602.86ϲ------------------------------------------------------------------ + + + +INSERT Into #MrpEntry1(FID,FitemID1,FQty11,FitemID2,FitemID3,FNumber3,FUnitID,FQty1,FDate2,FDate3,FOrderInterID,FOrderEntryID,[FNumber2],FQty2) + + + +SELECT a.FOrderInterID FID,A.FBom FitemID1,A.FNeedQty,a.FItemID FitemID2,a.FItemID FitemID3,b.FNumber,b.FUnitID,a.FNeedQty*e.FCoefficient FQty1, + + + +A.Ҫ󵽻,--dateadd(day,-20,C.FOrderDate) FDate2,--=ȷϷ-15 + + + +A.Ҫ󵽻,--dateadd(day,-20,C.FOrderDate) FDate3,--ϵ + + + +a.FOrderInterID,a.FOrderEntryID,SUBSTRING(b.FNumber,1,5) FNumber2,A.ʱ + + + +FROM #Mutidata A + + + +LEFT JOIN t_icitem b ON a.FItemID =b.FItemID + + + +LEFT JOIN t_MeasureUnit e ON e.FMeasureUnitID=a.FUnitID + + + +WHERE 1=1 AND b.FErpClsID =1 AND (A.F3 LIKE '02.86%' OR A.F3 LIKE '02.87%') + + + +ORDER BY a.FItemID + + + + + + + +/*ɹ뵥*/ + + + +SELECT + + + +v1.FItemID,ISNULL(SUM(v1.FQty),0)-ISNULL(SUM(v2.FQty),0) FQty + + + +Into #PORequest + + + +FROM PORequest v + + + +LEFT JOIN PORequestEntry v1 ON v.FInterID=v1.FInterID + + + +LEFT JOIN POOrderEntry v2 ON v2.FSourceINterId=v1.FInterID AND v2.FSourceEntryID=v1.FEntryID + + + +WHERE v.FCancellatiON = 0 AND v.Fstatus < 3 AND V1.FMrpClosed=0 + + + +GROUP BY v1.FItemID + + + + + + + +UPDATE a SET + FQty3=b.FQty +FROM #MrpEntry1 a + LEFT JOIN #PORequest b ON a.FitemID2=b.FItemID + +/*ɹ*/ + +SELECT FItemID + ,SUM(FQty-FAuxReceiptQty)FQty + Into #POOrder +FROM POOrder v + LEFT JOIN POOrderEntry v1 ON v.FInterID = v1.FInterID +WHERE v.FCancellatiON = 0 + AND v.Fstatus < 3 +GROUP BY FItemID +HAVING SUM(FQty-FAuxReceiptQty) > 0 + + +UPDATE a SET + FQty4 = b.FQty +FROM #MrpEntry1 a LEFT JOIN #POOrder b ON a.FitemID2=b.FItemID + +/*֪ͨ/쵥*/ + + + +SELECT FItemID + ,SUM((FQty-FAuxCONCommitQty))FQty + INTO #POINStock +FROM POINStock v + LEFT JOIN POINStockEntry v1 ON v.FInterID = v1.FInterID +WHERE v.FCancellatiON = 0 + AND v.Fstatus < 3 + AND v.FTranType = 72 +GROUP BY FItemID +HAVING SUM(FQty-FAuxCONCommitQty) > 0 + +UPDATE a SET + FQty5=b.FQty + ,FQty6=ISNULL(FQty3,0)+ISNULL(FQty4,0)+ISNULL(b.FQty,0) +FROM #MrpEntry1 a LEFT JOIN #POINStock b ON a.FitemID2=b.FItemID + +/*;*/ + + + +--UPDATE a SET FQty6=ISNULL(FQty3,0)+ISNULL(FQty4,0)+ISNULL(FQty5,0) FROM #MrpEntry1 a + + + /*ѷ,δ᰸δ*/ + +UPDATE a SET FQty12=ISNULL(b.FQty,0) FROM #MrpEntry1 a LEFT JOIN #YJCK b ON a.FitemID2=b.FItemID + +UPDATE a SET a.FNumber3='P' FROM #MrpEntry1 a WHERE a.FIndex IN (SELECT MIN(FIndex) FROM #MrpEntry1 GROUP BY FitemID2) + +UPDATE t SET t.FQty8 = t2.ۼ +FROM #MrpEntry1 t + LEFT JOIN ( + SELECT ( + SELECT + SUM(ISNULL(FQty1,0) + ISNULL(CASE WHEN FNumber3 = 'P' THEN FQty12 ELSE 0 END,0)) + FROM #MrpEntry1 t1 + WHERE t1.FItemid2 = t.FItemid2 + AND t1.FIndex <= t.FIndex) ۼ + ,t.FItemid2 + ,t.FIndex + FROM #MrpEntry1 t + ) t2 ON t.FItemid2 = t2.FItemid2 AND t.FIndex = t2.FIndex + +UPDATE t SET t.FQty8 = ISNULL(FQty2, 0)+ISNULL(FQty6, 0)-ISNULL(FQty8, 0) + ,t.FQty10 = CASE WHEN ISNULL(FQty2, 0)+ISNULL(FQty6, 0)-ISNULL(FQty8, 0) < 0 THEN -(ISNULL(FQty2, 0)+ISNULL(FQty6, 0)-ISNULL(FQty8, 0)) ELSE 0 END + ,t.FQty7 = ISNULL(FQty1, 0)+ISNULL(FQty2, 0)+ISNULL(FQty6, 0)-ISNULL(FQty8, 0)+ISNULL(CASE WHEN FNumber3 = 'P' THEN FQty12 ELSE 0 END, 0) +FROM #MrpEntry1 t + + +INSERT INTO [dbo].[MrpEntry1] ( + [FID] + ,[FIndex] + ,[FDate2] + ,[FDate3] + ,FText49 + ,FText50 + ,FText51 + ,[FitemID2] + ,[FUnitID] + ,FINteger4 + ,FINteger5 + ,FText10 -- + ,ftext11 --ëT + ,ftext12 --ʱT + ,ftext13 --ɹ뵥T + ,ftext14 --ɹT + ,ftext15 --쵥T + ,ftext16 --;T + ,ftext17 --ѷT + ,ftext18 --T + ,ftext19 --ǷT + --,ftext20--δתT + ,ftext21 --깺 + ) +SELECT FOrderInterID + ,ROW_NUMBER() OVER(ORDER BY FIndex )FIndex + ,FDate2 + ,FDate3 + ,c.FNumber + ,c.FName + ,c.FModel + ,FitemID2 + ,a.FUnitID + ,FOrderInterID + ,FOrderEntryID + ,CONVERT(DECIMAL(18,4),ISNULL(fqty11,0)) -- + ,CONVERT(DECIMAL(18,4),ISNULL(FQty1,0)) --ë + ,CONVERT(DECIMAL(18,4),ISNULL(FQty2,0)) --ʱ + ,CONVERT(DECIMAL(18,4),ISNULL(FQty3,0)) --ɹ뵥 + ,CONVERT(DECIMAL(18,4),ISNULL(FQty4,0)) --ɹ + ,CONVERT(DECIMAL(18,4),ISNULL(FQty5,0)) --쵥 + ,CONVERT(DECIMAL(18,4),ISNULL(FQty6,0)) --; + ,CONVERT(DECIMAL(18,4),ISNULL(FQty12,0)) --ѷ + ,CONVERT(DECIMAL(18,4),ISNULL(FQty7,0)) -- + ,CONVERT(DECIMAL(18,4),ISNULL(FQty8,0)) --Ƿ + --, CONVERT(DECIMAL(18, 4), ISNULL(FQty9, 0))--δת + ,CASE WHEN ISNULL(a.FQty8,0) < 0 THEN CONVERT(DECIMAL(18,4),-ISNULL(a.FQty8,0)) ELSE 0 END -- 깺 +FROM #MrpEntry1 a + INNER JOIN t_icitem b ON a.FitemID2 = b.FItemID + INNER JOIN t_icitem c ON a.FitemID1 = c.FItemID +WHERE + a.FNumber2 NOT IN ('02.86', '02.87', '01.A.' , '01.B.' , '01.C.' , '01.D.' , '01.E.', '01.H.') + + + + + + + +/**************************************************END ⹺**************************************************/ + + + + + + + +/**************************************************START ֽ**************************************************/ + +INSERT INTO [dbo].[MrpEntry3] ( + [FID] + ,[FIndex] + ,[FBase5] --Ʒ + ,[FText23] -- + ,[FBase6] --̴ֽ + ,[FText24] --ë + ,[FText25] --ʱ + ,[FText26] --ɹ + ,[FText27] --ɹ + ,[FText28] --쵥 + ,[FText29] --; + ,[FText30] --ѷ + ,[FText31] --Ƿ + ,[FText32] -- + ,[FText33] --ɹ + ,[FDate6] --ֽ + ,[FDate7] --鵽 + ,[FCheckBox4] --ȷת + ,[FCheckBox5] --תʶ + ,[FText34] --ɹ뵥 + ,[FText35] --ע + ,[FINteger6] -- + ,[FINteger7] --к + ,[FDate8] --ת + ,[FUser3]) --ת +SELECT FOrderInterID + ,ROW_NUMBER() OVER(ORDER BY FIndex )FIndex + ,FitemID1 + ,ISNULL(FQty11,0) + ,FitemID2 + ,CONVERT(DECIMAL(18,4),ISNULL([FQty1],0)) --ë + ,CONVERT(DECIMAL(18,4),ISNULL([FQty2],0)) --ʱ + ,CONVERT(DECIMAL(18,4),ISNULL([FQty3],0)) --ɹ뵥 + ,CONVERT(DECIMAL(18,4),ISNULL([FQty4],0)) --ɹ + ,CONVERT(DECIMAL(18,4),ISNULL([FQty5],0)) --쵥 + ,CONVERT(DECIMAL(18,4),ISNULL([FQty6],0)) --; + ,CONVERT(DECIMAL(18,4),ISNULL([FQty12],0)) --ѷ + ,CONVERT(DECIMAL(18,4),ISNULL([FQty8],0)) --Ƿ + ,CONVERT(DECIMAL(18,4),ISNULL([FQty7],0)) -- + ,CONVERT(DECIMAL(18,4),ISNULL([FQty10],0)) --깺 + ,FDate2 + ,FDate3 + ,0 + ,0 + ,'' + ,'' + ,FOrderInterID + ,FOrderEntryID + ,GETDATE() + ,0 +FROM #MrpEntry1 a +WHERE 1 = 1 + AND (FNumber2 LIKE '02.86%' OR FNumber2 LIKE '02.87%') + +/**************************************************END ֽ**************************************************/ + + +/**************************************************START ԭ**************************************************/ + +INSERT Into [dbo].[MrpEntry4] + ([FID],[FIndex],[FBase7],[FText36],[FBase8] + ,[FText37] --ë + ,[FText38] --ʱ + ,[FText39]--ɹ뵥 + ,[FText40]--ɹ + ,[FText41]--쵥 + ,[FText42]--; + ,[FText43] --ѷ + ,[FText44]--Ƿ + ,[FText45]-- + ,[FText46]--깺 + ,[FDate9],[FDate10],[FCheckBox6],[FCheckBox7],[FText47],[FText48],[FINteger8],[FINteger9],[FDate11],[FUser4]) +SELECT FOrderInterID + ,ROW_NUMBER() OVER(ORDER BY FIndex ) FIndex + ,FitemID1 + ,ISNULL(FQty11,0) ,FitemID2 + ,CONVERT(DECIMAL(18,4),ISNULL([FQty1],0)) --ë + ,CONVERT(DECIMAL(18,4),ISNULL([FQty2],0)) --ʱ + ,CONVERT(DECIMAL(18,4),ISNULL([FQty3],0))--ɹ뵥 + ,CONVERT(DECIMAL(18,4),ISNULL([FQty4],0))--ɹ + ,CONVERT(DECIMAL(18,4),ISNULL([FQty5],0))--쵥 + ,CONVERT(DECIMAL(18,4),ISNULL([FQty6],0))--; + ,CONVERT(DECIMAL(18,4),ISNULL([FQty12],0)) --ѷ + ,CONVERT(DECIMAL(18,4),ISNULL([FQty8],0))--Ƿ + ,CONVERT(DECIMAL(18,4),ISNULL([FQty7],0))-- + ,CONVERT(DECIMAL(18,4),ISNULL([FQty10],0))--깺 + ,FDate2--GETDATE(), + ,FDate3--GETDATE() + ,0,0,'','',FOrderInterID,FOrderEntryID,GETDATE(),0 +FROM #MrpEntry1 A +WHERE 1=1 + AND A.FNUMBER2 IN ('01.A.' ,'01.B.' ,'01.C.' ,'01.D.' ,'01.E.','01.H.') + +/**************************************************END ԭ**************************************************/ + + UPDATE SEOrder SET FHeadSelfS0153='Y' WHERE FInterID=@FID --FHeadSelfS0153 ־ + + SELECT @FID,@BillNo + + DROP TABLE #MrpEntry1 + DROP TABLE #MrpEntry2 + DROP TABLE #Mutidata + DROP TABLE #Mutidata2 + DROP TABLE #ICINventory + DROP TABLE #YJCK + DROP TABLE #YJRK + DROP TABLE #Seorder + DROP TABLE #POINStock + DROP TABLE #PORequest + DROP TABLE #POOrder +END \ No newline at end of file