diff --git a/.gitignore b/.gitignore index dc24ff3..0dabc63 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,49 @@ /Pilot_KD_Parino/obj/Debug/Pilot_KD_Parino.pdb /Pilot_KD_Parino/packages.config /.vs +/NoPackageMachine/bin/Debug/EZ.DB.dll +/NoPackageMachine/bin/Debug/K3Cloud.WebApi.Client.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.App.Core.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.App.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.ApprovalFlow.PlugIns.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.BusinessEntity.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.Contracts.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.Core.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.DataEntity.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.ServiceHelper.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.VerificationHelper.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.Web.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.WebApi.Client.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.WebApi.FormService.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.WebApi.ServicesStub.dll +/NoPackageMachine/bin/Debug/Kingdee.BOS.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.Core.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.FIN.App.Core.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.FIN.CB.App.Report.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.FIN.HS.App.Report.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.MFG.App.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.MFG.PLN.App.MrpModel.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.App.Core.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.App.Credit.Core.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.App.Sal.ServicePlugIn.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.App.Stock.Report.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.App.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.Business.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.Common.BusinessEntity.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.Contracts.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.Core.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.ServiceHelper.dll +/NoPackageMachine/bin/Debug/Kingdee.K3.SCM.Stock.Business.PlugIn.dll +/NoPackageMachine/bin/Debug/Newtonsoft.Json.dll +/NoPackageMachine/bin/Debug/NoPackageMachine.dll +/NoPackageMachine/bin/Debug/NoPackageMachine.pdb +/NoPackageMachine/bin/Debug/Oracle.DataAccess.dll +/NoPackageMachine/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs +/NoPackageMachine/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +/NoPackageMachine/obj/Debug/NoPackag.8916CF04.Up2Date +/NoPackageMachine/obj/Debug/NoPackageMachine.csproj.AssemblyReference.cache +/NoPackageMachine/obj/Debug/NoPackageMachine.csproj.CopyComplete +/NoPackageMachine/obj/Debug/NoPackageMachine.csproj.CoreCompileInputs.cache +/NoPackageMachine/obj/Debug/NoPackageMachine.csproj.FileListAbsolute.txt +/NoPackageMachine/obj/Debug/NoPackageMachine.dll +/NoPackageMachine/obj/Debug/NoPackageMachine.pdb diff --git a/Component/EZ.DB.dll b/Component/EZ.DB.dll new file mode 100644 index 0000000..66a1545 Binary files /dev/null and b/Component/EZ.DB.dll differ diff --git a/Component/K3Cloud.WebApi.Client.dll b/Component/K3Cloud.WebApi.Client.dll new file mode 100644 index 0000000..a3e00fb Binary files /dev/null and b/Component/K3Cloud.WebApi.Client.dll differ diff --git a/Component/Kingdee.BOS.App.Core.dll b/Component/Kingdee.BOS.App.Core.dll new file mode 100644 index 0000000..4100d59 Binary files /dev/null and b/Component/Kingdee.BOS.App.Core.dll differ diff --git a/Component/Kingdee.BOS.App.dll b/Component/Kingdee.BOS.App.dll new file mode 100644 index 0000000..68b0d6b Binary files /dev/null and b/Component/Kingdee.BOS.App.dll differ diff --git a/Component/Kingdee.BOS.ApprovalFlow.PlugIns.dll b/Component/Kingdee.BOS.ApprovalFlow.PlugIns.dll new file mode 100644 index 0000000..f060c10 Binary files /dev/null and b/Component/Kingdee.BOS.ApprovalFlow.PlugIns.dll differ diff --git a/Component/Kingdee.BOS.BusinessEntity.dll b/Component/Kingdee.BOS.BusinessEntity.dll new file mode 100644 index 0000000..8dffbf0 Binary files /dev/null and b/Component/Kingdee.BOS.BusinessEntity.dll differ diff --git a/Component/Kingdee.BOS.Contracts.dll b/Component/Kingdee.BOS.Contracts.dll new file mode 100644 index 0000000..94fbdd1 Binary files /dev/null and b/Component/Kingdee.BOS.Contracts.dll differ diff --git a/Component/Kingdee.BOS.Core.dll b/Component/Kingdee.BOS.Core.dll new file mode 100644 index 0000000..6afad14 Binary files /dev/null and b/Component/Kingdee.BOS.Core.dll differ diff --git a/Component/Kingdee.BOS.DataEntity.dll b/Component/Kingdee.BOS.DataEntity.dll new file mode 100644 index 0000000..f3b2391 Binary files /dev/null and b/Component/Kingdee.BOS.DataEntity.dll differ diff --git a/Component/Kingdee.BOS.ServiceHelper.dll b/Component/Kingdee.BOS.ServiceHelper.dll new file mode 100644 index 0000000..3259de7 Binary files /dev/null and b/Component/Kingdee.BOS.ServiceHelper.dll differ diff --git a/Component/Kingdee.BOS.VerificationHelper.dll b/Component/Kingdee.BOS.VerificationHelper.dll new file mode 100644 index 0000000..931e531 Binary files /dev/null and b/Component/Kingdee.BOS.VerificationHelper.dll differ diff --git a/Component/Kingdee.BOS.Web.dll b/Component/Kingdee.BOS.Web.dll new file mode 100644 index 0000000..f45bd87 Binary files /dev/null and b/Component/Kingdee.BOS.Web.dll differ diff --git a/Component/Kingdee.BOS.WebApi.Client.dll b/Component/Kingdee.BOS.WebApi.Client.dll new file mode 100644 index 0000000..df8916e Binary files /dev/null and b/Component/Kingdee.BOS.WebApi.Client.dll differ diff --git a/Component/Kingdee.BOS.WebApi.FormService.dll b/Component/Kingdee.BOS.WebApi.FormService.dll new file mode 100644 index 0000000..d2954e7 Binary files /dev/null and b/Component/Kingdee.BOS.WebApi.FormService.dll differ diff --git a/Component/Kingdee.BOS.WebApi.ServicesStub.dll b/Component/Kingdee.BOS.WebApi.ServicesStub.dll new file mode 100644 index 0000000..9148ee2 Binary files /dev/null and b/Component/Kingdee.BOS.WebApi.ServicesStub.dll differ diff --git a/Component/Kingdee.BOS.dll b/Component/Kingdee.BOS.dll new file mode 100644 index 0000000..763a979 Binary files /dev/null and b/Component/Kingdee.BOS.dll differ diff --git a/Component/Kingdee.K3.Core.dll b/Component/Kingdee.K3.Core.dll new file mode 100644 index 0000000..c2442b6 Binary files /dev/null and b/Component/Kingdee.K3.Core.dll differ diff --git a/Component/Kingdee.K3.FIN.App.Core.dll b/Component/Kingdee.K3.FIN.App.Core.dll new file mode 100644 index 0000000..873bf85 Binary files /dev/null and b/Component/Kingdee.K3.FIN.App.Core.dll differ diff --git a/Component/Kingdee.K3.FIN.CB.App.Report.dll b/Component/Kingdee.K3.FIN.CB.App.Report.dll new file mode 100644 index 0000000..2916d15 Binary files /dev/null and b/Component/Kingdee.K3.FIN.CB.App.Report.dll differ diff --git a/Component/Kingdee.K3.FIN.HS.App.Report.dll b/Component/Kingdee.K3.FIN.HS.App.Report.dll new file mode 100644 index 0000000..92c7862 Binary files /dev/null and b/Component/Kingdee.K3.FIN.HS.App.Report.dll differ diff --git a/Component/Kingdee.K3.MFG.App.dll b/Component/Kingdee.K3.MFG.App.dll new file mode 100644 index 0000000..46e7b5e Binary files /dev/null and b/Component/Kingdee.K3.MFG.App.dll differ diff --git a/Component/Kingdee.K3.MFG.PLN.App.MrpModel.dll b/Component/Kingdee.K3.MFG.PLN.App.MrpModel.dll new file mode 100644 index 0000000..38d8d7f Binary files /dev/null and b/Component/Kingdee.K3.MFG.PLN.App.MrpModel.dll differ diff --git a/Component/Kingdee.K3.SCM.App.Core.dll b/Component/Kingdee.K3.SCM.App.Core.dll new file mode 100644 index 0000000..4b15195 Binary files /dev/null and b/Component/Kingdee.K3.SCM.App.Core.dll differ diff --git a/Component/Kingdee.K3.SCM.App.Credit.Core.dll b/Component/Kingdee.K3.SCM.App.Credit.Core.dll new file mode 100644 index 0000000..22858ac Binary files /dev/null and b/Component/Kingdee.K3.SCM.App.Credit.Core.dll differ diff --git a/Component/Kingdee.K3.SCM.App.Sal.ServicePlugIn.dll b/Component/Kingdee.K3.SCM.App.Sal.ServicePlugIn.dll new file mode 100644 index 0000000..9c1b21e Binary files /dev/null and b/Component/Kingdee.K3.SCM.App.Sal.ServicePlugIn.dll differ diff --git a/Component/Kingdee.K3.SCM.App.Stock.Report.dll b/Component/Kingdee.K3.SCM.App.Stock.Report.dll new file mode 100644 index 0000000..d1145bf Binary files /dev/null and b/Component/Kingdee.K3.SCM.App.Stock.Report.dll differ diff --git a/Component/Kingdee.K3.SCM.App.dll b/Component/Kingdee.K3.SCM.App.dll new file mode 100644 index 0000000..63c7abf Binary files /dev/null and b/Component/Kingdee.K3.SCM.App.dll differ diff --git a/Component/Kingdee.K3.SCM.Business.dll b/Component/Kingdee.K3.SCM.Business.dll new file mode 100644 index 0000000..f8e48ff Binary files /dev/null and b/Component/Kingdee.K3.SCM.Business.dll differ diff --git a/Component/Kingdee.K3.SCM.Common.BusinessEntity.dll b/Component/Kingdee.K3.SCM.Common.BusinessEntity.dll new file mode 100644 index 0000000..9c7bf40 Binary files /dev/null and b/Component/Kingdee.K3.SCM.Common.BusinessEntity.dll differ diff --git a/Component/Kingdee.K3.SCM.Contracts.dll b/Component/Kingdee.K3.SCM.Contracts.dll new file mode 100644 index 0000000..b51bd80 Binary files /dev/null and b/Component/Kingdee.K3.SCM.Contracts.dll differ diff --git a/Component/Kingdee.K3.SCM.Core.dll b/Component/Kingdee.K3.SCM.Core.dll new file mode 100644 index 0000000..f86d15e Binary files /dev/null and b/Component/Kingdee.K3.SCM.Core.dll differ diff --git a/Component/Kingdee.K3.SCM.ServiceHelper.dll b/Component/Kingdee.K3.SCM.ServiceHelper.dll new file mode 100644 index 0000000..135731d Binary files /dev/null and b/Component/Kingdee.K3.SCM.ServiceHelper.dll differ diff --git a/Component/Kingdee.K3.SCM.Stock.Business.PlugIn.dll b/Component/Kingdee.K3.SCM.Stock.Business.PlugIn.dll new file mode 100644 index 0000000..f7d61ec Binary files /dev/null and b/Component/Kingdee.K3.SCM.Stock.Business.PlugIn.dll differ diff --git a/Component/Newtonsoft.Json.dll b/Component/Newtonsoft.Json.dll new file mode 100644 index 0000000..341d08f Binary files /dev/null and b/Component/Newtonsoft.Json.dll differ diff --git a/NoPackageMachine/GetSingleLuoJi.cs b/NoPackageMachine/GetSingleLuoJi.cs new file mode 100644 index 0000000..6e59d8a --- /dev/null +++ b/NoPackageMachine/GetSingleLuoJi.cs @@ -0,0 +1,77 @@ +using Kingdee.BOS.BusinessEntity.BusinessFlow; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.List.PlugIn; +using Kingdee.BOS.ServiceHelper; +using Kingdee.BOS.Util; +using Kingdee.K3.SCM.Common.BusinessEntity.Sales; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NoPackageMachine +{ + [Description("销售订单列表获取裸机信息#列表插件:审核后获取单据体中成品编码下的裸机信息"), HotUpdate] + public class GetSingleLuoJi : AbstractOperationServicePlugIn + { + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + base.BeforeExecuteOperationTransaction(e); + var formId = this.BusinessInfo.GetForm().Id; + // 获取销售订单信息 + foreach (var rows in e.SelectedRows) + { + var entry = rows.DataEntity; + var s = JsonConvert.SerializeObject(entry); + var order = JsonConvert.DeserializeObject(s); + foreach (var item in order.SaleOrderEntry) + { + string sql = string.Format("/*dialect*/select m0.FNUMBER PMaterialCode,m.FMATERIALID,m.FNUMBER MaterialCode,t.FSPECIFICATION FModel,sum(isnull(i.FBASEQTY,0)) AS Qty from T_ENG_BOM a left jOIN T_ORG_ORGANIZATIONS O ON O.FORGID = a.FUSEORGID " + + "left join T_ENG_BOMCHILD b on a.FID=b.FID " + + "left join T_BD_MATERIAL m0 on m0.FMATERIALID=a.FMATERIALID " + + "left join T_BD_MATERIAL m on m.FMATERIALID=b.FMATERIALID " + + "left join T_BD_MATERIAL_L t on t.FMATERIALID=m.FMATERIALID " + + "left join T_BD_MATERIALBASE s on s.FMATERIALID=m.FMATERIALID " + + "left join t_BD_MaterialStock ms on ms.fmaterialid=m.fmaterialid " + + "left join T_STK_INVENTORY i on i.FMATERIALID=m.FMASTERID and i.fstockorgid=m0.fuseorgid " + + "left JOIN T_BD_Stock invSIC ON invSIC.FSTOCKID = i.FSTOCKID " + + "left JOIN T_BD_Stock SIC ON SIC.FSTOCKID = ms.FSTOCKID " + + "where a.FDOCUMENTSTATUS='C' and a.FFORBIDSTATUS='A' and O.fnumber='PL' and m0.FMATERIALID='{0}' and (m.fnumber like 'N.%' or m.fnumber like 'M.%') group by m0.FNUMBER,m.FNUMBER,t.FSPECIFICATION,m.FMATERIALID", item.MaterialId_Id); + var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + if (data != null && data.Count > 0) + { + if (formId == "SAL_SaleOrder") + { + if (data.Count > 1) + { + sql = string.Format("/*dialect*/update t_sal_orderentry set F_ISLUOJI='是' where FENTRYID={0}", item.Id); + } + else + { + sql = string.Format("/*dialect*/update t_sal_orderentry set F_ISLUOJI='否',F_LUOJICODE='{0}',F_LUOJIDESC='{1}',F_LJBM='{2}' where FENTRYID={3}", data[0]["MaterialCode"].ToString(), data[0]["FModel"].ToString(), data[0]["FMATERIALID"].ToString(), item.Id); + } + } + else + { + if (data.Count > 1) + { + sql = string.Format("/*dialect*/update t_sal_xorderentry set F_ISLUOJI='是' where FENTRYID={0}", item.Id); + } + else + { + sql = string.Format("/*dialect*/update t_sal_xorderentry set F_ISLUOJI='否',F_LUOJICODE='{0}',F_LUOJIDESC='{1}',F_LJBM='{2}' where FENTRYID={3}", data[0]["MaterialCode"].ToString(), data[0]["FModel"].ToString(), data[0]["FMATERIALID"].ToString(), item.Id); + } + } + DBServiceHelper.Execute(this.Context, sql); + } + } + + } + + } + } +} \ No newline at end of file diff --git a/NoPackageMachine/GetSonMachines.cs b/NoPackageMachine/GetSonMachines.cs new file mode 100644 index 0000000..5138acc --- /dev/null +++ b/NoPackageMachine/GetSonMachines.cs @@ -0,0 +1,53 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Core.List.PlugIn; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Kingdee.BOS.Core.Metadata.EntityElement; +using Kingdee.BOS.Orm.DataEntity; + +namespace NoPackageMachine +{ + [Description("销售订单获取裸机信息#按钮列表插件:点击按钮显示裸机信息动态表单"), HotUpdate] + public class GetSonMachines: AbstractListPlugIn + { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + if (e.BarItemKey.EqualsIgnoreCase("LJBM_tbButton")) + { + + //获取选中行 + var listView = this.View as IListView; + var selectedRows = listView.SelectedRowsInfo; + if (selectedRows == null || selectedRows.Count == 0) + { + this.View.ShowMessage("列表中的销售订单没有被选中"); + return; + } + if (selectedRows.Count > 1) + { + this.View.ShowMessage("列表中的销售订单不能多选"); + return; + } + var materialID = selectedRows.Select(c => c.DataRow["FMaterialId_Id"]).ToList()[0].ToString(); + + //var Params = string.Join(",", number); + DynamicFormShowParameter parameter = new DynamicFormShowParameter(); + parameter.OpenStyle.ShowType = ShowType.Floating; + //选择需要打开的窗体FID + parameter.FormId = "VRYF_LJBM_FORM"; //YKQC_LJBM_FORM 测试环境 + parameter.MultiSelect = false; + //获取的FID以字符串发送到输出的窗体 + parameter.CustomComplexParams.Add("EntryPrimaryKeys", materialID); + this.View.ShowForm(parameter); + } + } + } +} diff --git a/NoPackageMachine/Model/SalOrderEntryModel.cs b/NoPackageMachine/Model/SalOrderEntryModel.cs new file mode 100644 index 0000000..f905a15 --- /dev/null +++ b/NoPackageMachine/Model/SalOrderEntryModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NoPackageMachine +{ + public class SalOrderEntryModel + { + public int FID { get; set; } + public int Id { get; set; } + public int MaterialId_Id { get; set; } + } +} diff --git a/NoPackageMachine/Model/SalOrderModel.cs b/NoPackageMachine/Model/SalOrderModel.cs new file mode 100644 index 0000000..9fab071 --- /dev/null +++ b/NoPackageMachine/Model/SalOrderModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NoPackageMachine +{ + public class SalOrderModel + { + public int Id { get; set; } + public string FBILLNO { get; set; } + public string F_CONTRACTNUMBER { get; set; } + public List SaleOrderEntry = new List(); + } +} diff --git a/NoPackageMachine/Model/SonMachine.cs b/NoPackageMachine/Model/SonMachine.cs new file mode 100644 index 0000000..9698c0e --- /dev/null +++ b/NoPackageMachine/Model/SonMachine.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NoPackageMachine +{ + public class SonMachine + { + public int RowNum { get; set; } + public string PMaterialCode { get; set; } + public string MaterialCode { get; set; } + public string FModel { get; set; } + public decimal Qty { get; set; } + } +} diff --git a/NoPackageMachine/NoPackageMachine.csproj b/NoPackageMachine/NoPackageMachine.csproj new file mode 100644 index 0000000..c30e69b --- /dev/null +++ b/NoPackageMachine/NoPackageMachine.csproj @@ -0,0 +1,156 @@ + + + + + Debug + AnyCPU + {9788649F-42E6-4687-A1BF-5064CF806553} + Library + Properties + NoPackageMachine + NoPackageMachine + v4.8 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\Component\EZ.DB.dll + + + ..\Component\K3Cloud.WebApi.Client.dll + + + ..\Component\Kingdee.BOS.dll + + + ..\Component\Kingdee.BOS.App.dll + + + ..\Component\Kingdee.BOS.App.Core.dll + + + ..\Component\Kingdee.BOS.ApprovalFlow.PlugIns.dll + + + ..\Component\Kingdee.BOS.BusinessEntity.dll + + + ..\Component\Kingdee.BOS.Contracts.dll + + + ..\Component\Kingdee.BOS.Core.dll + + + ..\Component\Kingdee.BOS.DataEntity.dll + + + ..\Component\Kingdee.BOS.ServiceHelper.dll + + + ..\Component\Kingdee.BOS.VerificationHelper.dll + + + ..\Component\Kingdee.BOS.Web.dll + + + ..\Component\Kingdee.BOS.WebApi.Client.dll + + + ..\Component\Kingdee.BOS.WebApi.FormService.dll + + + ..\Component\Kingdee.BOS.WebApi.ServicesStub.dll + + + ..\Component\Kingdee.K3.Core.dll + + + ..\Component\Kingdee.K3.FIN.App.Core.dll + + + ..\Component\Kingdee.K3.FIN.CB.App.Report.dll + + + ..\Component\Kingdee.K3.FIN.HS.App.Report.dll + + + ..\Component\Kingdee.K3.MFG.App.dll + + + ..\Component\Kingdee.K3.MFG.PLN.App.MrpModel.dll + + + ..\Component\Kingdee.K3.SCM.App.dll + + + ..\Component\Kingdee.K3.SCM.App.Core.dll + + + ..\Component\Kingdee.K3.SCM.App.Credit.Core.dll + + + ..\Component\Kingdee.K3.SCM.App.Sal.ServicePlugIn.dll + + + ..\Component\Kingdee.K3.SCM.App.Stock.Report.dll + + + ..\Component\Kingdee.K3.SCM.Business.dll + + + ..\Component\Kingdee.K3.SCM.Common.BusinessEntity.dll + + + ..\Component\Kingdee.K3.SCM.Contracts.dll + + + ..\Component\Kingdee.K3.SCM.Core.dll + + + ..\Component\Kingdee.K3.SCM.ServiceHelper.dll + + + ..\Component\Kingdee.K3.SCM.Stock.Business.PlugIn.dll + + + False + ..\packages\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NoPackageMachine/NoPackageMaterialForm.cs b/NoPackageMachine/NoPackageMaterialForm.cs new file mode 100644 index 0000000..ba2e876 --- /dev/null +++ b/NoPackageMachine/NoPackageMaterialForm.cs @@ -0,0 +1,58 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.List; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Linq; +using System.Text; +using Kingdee.BOS.ServiceHelper; +using System.Threading.Tasks; + +namespace NoPackageMachine +{ + [Description("动态窗口插件:获取产品的裸机编码和库存"), HotUpdate] + public class NoPackageMaterialForm: AbstractDynamicFormPlugIn + { + string ListFidS = null; + public override void OnLoad(EventArgs e) + { + base.OnLoad(e); + //接受传输的值 + ListFidS = Convert.ToString(this.View.OpenParameter.GetCustomParameter("EntryPrimaryKeys")); + string sql = string.Format("/*dialect*/select m0.FNUMBER PMaterialCode,m.FNUMBER MaterialCode,t.FSPECIFICATION FModel,sum(isnull(i.FBASEQTY,0)) AS Qty from T_ENG_BOM a left jOIN T_ORG_ORGANIZATIONS O ON O.FORGID = a.FUSEORGID " + + "left join T_ENG_BOMCHILD b on a.FID=b.FID " + + "left join T_BD_MATERIAL m0 on m0.FMATERIALID=a.FMATERIALID " + + "left join T_BD_MATERIAL m on m.FMATERIALID=b.FMATERIALID " + + "left join T_BD_MATERIAL_L t on t.FMATERIALID=m.FMATERIALID " + + "left join T_BD_MATERIALBASE s on s.FMATERIALID=m.FMATERIALID " + + "left join t_BD_MaterialStock ms on ms.fmaterialid=m.fmaterialid " + + "left join T_STK_INVENTORY i on i.FMATERIALID=m.FMASTERID and i.fstockorgid=m0.fuseorgid " + + "left JOIN T_BD_Stock invSIC ON invSIC.FSTOCKID = i.FSTOCKID " + + "left JOIN T_BD_Stock SIC ON SIC.FSTOCKID = ms.FSTOCKID " + + "where a.FDOCUMENTSTATUS='C' and a.FFORBIDSTATUS='A' and O.fnumber='PL' and m0.FMATERIALID='{0}' and (m.fnumber like 'N.%' or m.fnumber like 'M.%') group by m0.FNUMBER,m.FNUMBER,t.FSPECIFICATION", ListFidS); + List sonMachines = new List(); + //var result = DBServiceHelper.ExecuteScalar>(this.Context, sql, sonMachines); + var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + + int num = 0; + foreach (var one in data) + { + this.View.Model.SetValue("F_MaterialCode", one["MaterialCode"], num); + this.View.Model.SetValue("F_FModel", one["FModel"], num); + this.View.Model.SetValue("F_Qty", one["Qty"], num); + num++; + } + //foreach(SonMachine sonMachine in result) + //{ + // //this.View.Model.SetValue("PMaterialCode", sonMachine.PMaterialCode, num); + // this.View.Model.SetValue("F_MaterialCode", sonMachine.MaterialCode, num); + // this.View.Model.SetValue("F_FModel", sonMachine.FModel, num); + // this.View.Model.SetValue("F_Qty", sonMachine.Qty, num); + // num++; + //} + } + } +} diff --git a/NoPackageMachine/Properties/AssemblyInfo.cs b/NoPackageMachine/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..cf5faa4 --- /dev/null +++ b/NoPackageMachine/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("NoPackageMachine")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("NoPackageMachine")] +[assembly: AssemblyCopyright("Copyright © 2025")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("9788649f-42e6-4687-a1bf-5064cf806553")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Pilot_KD_Parino.sln b/Pilot_KD_Parino.sln index dc786f7..d8bab4f 100644 --- a/Pilot_KD_Parino.sln +++ b/Pilot_KD_Parino.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 17.11.35327.3 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilot_KD_Parino", "Pilot_KD_Parino\Pilot_KD_Parino.csproj", "{D8751053-74AF-4619-A5BE-939ADFF10991}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NoPackageMachine", "NoPackageMachine\NoPackageMachine.csproj", "{9788649F-42E6-4687-A1BF-5064CF806553}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {D8751053-74AF-4619-A5BE-939ADFF10991}.Debug|Any CPU.Build.0 = Debug|Any CPU {D8751053-74AF-4619-A5BE-939ADFF10991}.Release|Any CPU.ActiveCfg = Release|Any CPU {D8751053-74AF-4619-A5BE-939ADFF10991}.Release|Any CPU.Build.0 = Release|Any CPU + {9788649F-42E6-4687-A1BF-5064CF806553}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9788649F-42E6-4687-A1BF-5064CF806553}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9788649F-42E6-4687-A1BF-5064CF806553}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9788649F-42E6-4687-A1BF-5064CF806553}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Pilot_KD_Parino/Common/CommonHelper.cs b/Pilot_KD_Parino/Common/CommonHelper.cs index fb85201..3ddb1b0 100644 --- a/Pilot_KD_Parino/Common/CommonHelper.cs +++ b/Pilot_KD_Parino/Common/CommonHelper.cs @@ -143,14 +143,16 @@ namespace Pilot_KD_Parino.Common #region Row newRowfour = table.InsertRow(previousRowfour, 1); newRowfour.Cells[1].ReplaceText("{9}", Convert.ToString(Rows[0][11])); + int j = 0; foreach (var Row in Rows) { - Row newRowthree = table.InsertRow(previousRowthree, 1); + Row newRowthree = table.InsertRow(previousRowthree, 1+j); for (int i = 0; i < 9; i++) { newRowthree.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(Row[i])); } document.ReplaceText("{10}", Convert.ToString(Row[10])); + j++; } Row newRow = table.InsertRow(previousRow, 1); newRow.Cells[0].ReplaceText("{0}", string.Format("{0}、{1}", ConvertToChineseUppercase(Index), Convert.ToString(item))); diff --git a/Pilot_KD_Parino/Pilot_KD_Parino.csproj b/Pilot_KD_Parino/Pilot_KD_Parino.csproj index afc7168..fb4d82d 100644 --- a/Pilot_KD_Parino/Pilot_KD_Parino.csproj +++ b/Pilot_KD_Parino/Pilot_KD_Parino.csproj @@ -335,8 +335,10 @@ + - + + diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoJiLuSave.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoJiLuSave.cs new file mode 100644 index 0000000..12d027b --- /dev/null +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoJiLuSave.cs @@ -0,0 +1,88 @@ +using Kingdee.BOS; +using Kingdee.BOS.App.Core; +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.ServiceHelper; +using Kingdee.BOS.Util; +using Pilot_KD_Parino.Common; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Pilot_KD_Parino.QPHY_AutoWrireRecord +{ + [Description("发货通知单核销记录单保存前校验插件"), HotUpdate] + public class FaHuoHeXiaoJiLuSave : AbstractOperationServicePlugIn + { + public override void BeforeDoSaveExecute(BeforeDoSaveExecuteEventArgs e) + { + base.BeforeDoSaveExecute(e); + var dd = e.DataEntities[0]; + if (dd["DocumentStatus"].ToString() == "C") + { + return; + } + var sssd = JsonHelper.ToJson(dd); + Logger.Error("发货通知单核销记录单保", sssd, new Exception()); + var list1 = dd["FEntity"] as DynamicObjectCollection; + var list2 = dd["FEntity2"] as DynamicObjectCollection; + var amount1 = list1.Sum(t => decimal.Parse(t["FALLAMOUNT22"]?.ToString())); + var amount2 = list2.Sum(t => decimal.Parse(t["FALLAMOUNT33"]?.ToString())); + //throw new KDBusinessException("", $@"销售单明细本次核销合计金额{amount1},收款单明细本次核销合计金额{amount2},{amount1}不等于{amount2},不允许保存"); + + + + if (amount1 != amount2) + { + throw new KDBusinessException("", $@"发货通知单本次核销合计金额{amount1.ToString("F2")},收款单明细本次核销合计金额{amount2.ToString("F2")},{amount1.ToString("F2")}不等于{amount2.ToString("F2")},不允许保存"); + } + + + var billList = list1.Select(t => t["FBILLNO2"]).ToList(); + string bill = string.Join("','", billList); + string sql = $@"/*dialect*/SELECT bb.F_CONTRACTNUMBER,bb.F_AMOUNT,fin.FBillAllAmount,bb.F_expenses, a.FBILLNO + ,(fin.FBillAllAmount+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount + ,C.FBILLALLAMOUNT-A.F_AMOUNT as FaHuoFamount + FROM T_SAL_DELIVERYNOTICE a + INNER JOIN T_SAL_DELIVERYNOTICEFIN C ON C.FID =A.FID + INNER JOIN VRYF_t_Cust_Entry100024 b + ON a.FBILLNO=b.FBILLNO2 + INNER JOIN dbo.T_SAL_ORDER bb + ON a.F_PAPERCONTRACT=bb.F_CONTRACTNUMBER + INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID + WHERE a.FBILLNO in ('{bill}') "; + var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + var one1 = (from q in data + join b in list1 on q["FBILLNO"].ToString() equals b["FBILLNO2"].ToString() + where decimal.Parse(b["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["XiaoFamount"]?.ToString()) + || decimal.Parse(b["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["FaHuoFamount"]?.ToString()) + select q["FBILLNO"]).ToList(); + if (one1.Count > 0) + { + throw new KDBusinessException("", $@"发货通知单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 "); + } + + billList = list2.Select(t => t["FBILLNO3"]).ToList(); + bill = string.Join("','", billList); + sql = $@"/*dialect*/SELECT a.FBILLNO,(a.FRECAMOUNTFOR-a.F_AMOUNT) as F_AMOUNT FROM dbo.T_AR_RECEIVEBILL a + WHERE a.FBILLNO in ('{bill}') "; + data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + + one1 = (from q in data + join b in list2 on q["FBILLNO"].ToString() equals b["FBILLNO3"].ToString() + where decimal.Parse(b["FALLAMOUNT33"]?.ToString()) > decimal.Parse(q["F_AMOUNT"]?.ToString()) + select q["FBILLNO"]).ToList(); + if (one1.Count > 0) + { + throw new KDBusinessException("", $@"收款单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 "); + } + + } + + } +} diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoYanZheng.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoYanZheng.cs new file mode 100644 index 0000000..06f3bad --- /dev/null +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoYanZheng.cs @@ -0,0 +1,68 @@ +using Kingdee.BOS; +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.ServiceHelper; +using Kingdee.BOS.Util; +using Pilot_KD_Parino.Common; +using System; +using System.ComponentModel; +using System.Data; +using System.Linq; + +namespace Pilot_KD_Parino.QPHY_AutoWrireRecord +{ + [Description("发货通知提交和审核前校验插件"), HotUpdate] + public class FaHuoHeXiaoYanZheng : AbstractOperationServicePlugIn + { + DynamicObject sheet = null; + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + + base.BeforeExecuteOperationTransaction(e); + foreach (var rows in e.SelectedRows) + { + var Billobj = rows.DataEntity; + sheet = Billobj; + var sdsas = JsonHelper.ToJson(Billobj); + Logger.Error("发货通知单核销记录提交或者审核", sdsas, new Exception()); + //获取单据Id + string Id = sheet["Id"].ToString(); + string sql = $@"/*dialect*/SELECT bb.F_CONTRACTNUMBER,bb.F_AMOUNT,fin.FBillAllAmount,bb.F_expenses, a.FBILLNO + ,(fin.FBillAllAmount+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount + ,C.FBILLALLAMOUNT-A.F_AMOUNT as FaHuoFamount,b.FALLAMOUNT22 + FROM T_SAL_DELIVERYNOTICE a + INNER JOIN T_SAL_DELIVERYNOTICEFIN C ON C.FID =A.FID + INNER JOIN VRYF_t_Cust_Entry100024 b + ON a.FBILLNO=b.FBILLNO2 + INNER JOIN dbo.T_SAL_ORDER bb + ON a.F_PAPERCONTRACT=bb.F_CONTRACTNUMBER + INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID + WHERE b.fid={Id} "; + var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + var one1 = data.Where(q => decimal.Parse(q["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["XiaoFamount"]?.ToString()) + || decimal.Parse(q["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["FaHuoFamount"]?.ToString())) + .Select(q => q["FBILLNO"]).ToList(); + if (one1.Count > 0) + { + throw new KDBusinessException("", $@"发货通知单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 "); + } + + sql = $@"/*dialect*/SELECT a.FBILLNO,(a.FRECAMOUNTFOR-a.F_AMOUNT) as F_AMOUNT,b.FALLAMOUNT33 FROM dbo.T_AR_RECEIVEBILL a + INNER JOIN VRYF_t_Cust_Entry100025 b + ON a.FBILLNO=b.FBILLNO3 + WHERE b.FID={Id} "; + data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + one1 = data.Where(q => decimal.Parse(q["FALLAMOUNT33"]?.ToString()) > decimal.Parse(q["F_AMOUNT"]?.ToString())) + .Select(q => q["FBILLNO"]).ToList(); + if (one1.Count > 0) + { + throw new KDBusinessException("", $@"收款单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 "); + } + + } + } + + } +} diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLu.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLu.cs deleted file mode 100644 index 5aa1e4d..0000000 --- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLu.cs +++ /dev/null @@ -1,87 +0,0 @@ -using DevExpress.Data.PLinq.Helpers; -using Kingdee.BOS.App; -using Kingdee.BOS.App.Data; -using Kingdee.BOS.Contracts; -using Kingdee.BOS.Core.DynamicForm; -using Kingdee.BOS.Core.DynamicForm.PlugIn; -using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; -using Kingdee.BOS.Core.Metadata; -using Kingdee.BOS.Core.Metadata.FieldElement; -using Kingdee.BOS.Log; -using Kingdee.BOS.Orm.DataEntity; -using Kingdee.BOS.ServiceHelper; -using Kingdee.BOS.Util; -using Org.BouncyCastle.Asn1.X509; -using System; -using System.ComponentModel; -using System.Data; -using System.Linq; - -namespace Pilot_KD_Parino.QPHY_AutoWrireRecord -{ - [HotUpdate] - [Description("收款核销5_2025-04-07")] - public class HeXiaoJiLu : AbstractDynamicFormPlugIn - { - - #region DataChanged(单据体值更新事件) - /// - /// 单据体值更新事件 - /// - /// - public override void DataChanged(DataChangedEventArgs e) - { - return; - base.DataChanged(e); - - //this.View.ShowMessage(e.Field.Key.ToString()); - if (e.Field.Key.Equals("FCONTRACTNUMBER") ) - { - //this.View.ShowMessage("22"); - var entity = this.View.BusinessInfo.GetEntity("FEntity"); - if (entity == null) - return; - var tempRow = this.Model.GetEntityDataObject(entity, e.Row);//行数据包 - if (tempRow["F_VRYF_Base_qtr"] != null && tempRow["F_VRYF_Base_qtr"].ToString() != "") - { - return; - } - else - { - //var json = JsonUtil.Serialize(tempRow); - //Logger.Error("采购订单信息", json, new Exception()); - if (tempRow["F_MBBA_Text_qtr"] != null && tempRow["F_MBBA_Text_qtr"].ToString() != "") - { - string heTong = tempRow["F_MBBA_Text_qtr"].ToString(); - long orgId = this.Context.CurrentOrganizationInfo.ID; - string sql1 = string.Format($@"/*dialect*/SELECT TOP 1 a.*,b.Fname FROM dbo.T_SAL_ORDER a WITH(NOLOCK) - LEFT JOIN dbo.V_BD_SALESMAN_L b WITH(NOLOCK) ON a.FSalerId=b.fid WHERE a.F_contractnumber='{heTong}' and a.FSALEORGID='{orgId}'"); - this.View.ShowMessage(sql1); - Logger.Error("采购订单信息", sql1, new Exception()); - var sql1List = DBUtils.ExecuteDynamicObject(Context, sql1); - if (sql1List != null && sql1List.Count > 0) - { - var one = sql1List.FirstOrDefault(); - //FormMetadata destFormMetadata = ServiceHelper.GetService().Load(this.Context, "SAL_SaleOrder", one["FID"].ToString(), true) as FormMetadata; - //var sale = BusinessDataServiceHelper.LoadSingle(this.Context, one["FID"], (destFormMetadata.BusinessInfo.GetField("F_VRYF_Base_qtr") as BaseDataField).RefFormDynamicObjectType); - //DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection; - //var dsds = this.View.GetControl("F_VRYF_Base_qtr"); - //dsds.SetValue(one["FBILLNO"]); - - //var tempRow2 = FEntity[e.Row]; - //tempRow2["F_VRYF_Base_qtr"] = sale; - - //this.View.Model.SetValue("F_VRYF_Base_qtr", sale, e.Row); - this.View.Model.SetValue("F_VRYF_Base_qtr", one["FID"], e.Row); - //this.View.Model.SetValue("F_VRYF_Base_qtr", one["FBILLNO"], e.Row); - //this.View.Model.SetValue("F_VRYF_Base_qtr", one["FBILLNO"], e.Row); - //this.View.Model.SetValue("F_VRYF_Base_qtr", one["FBILLNO"], e.Row); - this.View.UpdateView("FEntity"); - } - } - } - } - } - #endregion - } -} diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuSave.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuSave.cs index 03d3c46..4859bef 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuSave.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuSave.cs @@ -23,6 +23,11 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord { base.BeforeDoSaveExecute(e); var dd = e.DataEntities[0]; + if (dd["DocumentStatus"].ToString() == "C") + { + return; + } + string Id = dd["Id"].ToString(); var sssd = JsonHelper.ToJson(dd); Logger.Error("核销记录单", sssd, new Exception()); var list1 = dd["FEntity"] as DynamicObjectCollection; @@ -41,13 +46,23 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord var billList = list1.Select(t => t["FBILLNO2"]).ToList(); string bill = string.Join("','",billList); - string sql = $@"/*dialect*/ SELECT a.FBILLNO,(b.FBillAllAmount- isnull(a.F_AMOUNT,0)) as F_AMOUNT FROM dbo.T_SAL_ORDER a - LEFT JOIN dbo.T_SAL_ORDERFIN b ON a.FID=b.FID - WHERE a.FBILLNO in ('{bill}') "; + // string sql = $@"/*dialect*/ SELECT a.FBILLNO,(SUM(c.FAllAmount)- isnull(a.F_AMOUNT,0)) as F_AMOUNT FROM dbo.T_SAL_ORDER a + //LEFT JOIN dbo.T_SAL_ORDERENTRY_F c ON a.FID=c.FID + //WHERE a.FBILLNO in ('{bill}') AND c.FAllAmount>0 + //GROUP BY a.FBILLNO,a.F_AMOUNT "; + + string sql = $@"/*dialect*/SELECT bb.F_CONTRACTNUMBER,bb.F_AMOUNT,fin.FBillAllAmount,bb.F_expenses, bb.FBILLNO + ,(bb.ZhengShuHeJi+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount + ,b.FALLAMOUNT22 + FROM T_AutoWrireRecordEntry b + INNER JOIN dbo.ZZV_SalOrder bb + ON b.FBILLNO2=bb.FBILLNO + INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID + WHERE bb.FBILLNO in ('{bill}')"; var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); var one1 = (from q in data join b in list1 on q["FBILLNO"].ToString() equals b["FBILLNO2"].ToString() - where decimal.Parse(b["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["F_AMOUNT"]?.ToString()) + where decimal.Parse(b["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["XiaoFamount"]?.ToString()) select q["FBILLNO"]).ToList(); if (one1.Count > 0) { diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuYanZheng.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuYanZheng.cs new file mode 100644 index 0000000..c8fc7c5 --- /dev/null +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuYanZheng.cs @@ -0,0 +1,72 @@ +using DevExpress.Data.PLinq.Helpers; +using Kingdee.BOS; +using Kingdee.BOS.App; +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Contracts; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Metadata; +using Kingdee.BOS.Core.Metadata.FieldElement; +using Kingdee.BOS.Log; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.ServiceHelper; +using Kingdee.BOS.Util; +using Org.BouncyCastle.Asn1.X509; +using Pilot_KD_Parino.Common; +using System; +using System.ComponentModel; +using System.Data; +using System.Linq; + +namespace Pilot_KD_Parino.QPHY_AutoWrireRecord +{ + [Description("销售核销单提交和审核前校验插件"), HotUpdate] + public class HeXiaoJiLuYanZheng : AbstractOperationServicePlugIn + { + DynamicObject sheet = null; + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + + base.BeforeExecuteOperationTransaction(e); + foreach (var rows in e.SelectedRows) + { + var Billobj = rows.DataEntity; + sheet = Billobj; + var sdsas = JsonHelper.ToJson(Billobj); + Logger.Error("销售销记录提交或者审核3", sdsas, new Exception()); + //获取单据Id + string Id = sheet["Id"].ToString(); + string sql = $@"/*dialect*/SELECT bb.F_CONTRACTNUMBER,bb.F_AMOUNT,fin.FBillAllAmount,bb.F_expenses, bb.FBILLNO + ,(bb.ZhengShuHeJi+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount + ,b.FALLAMOUNT22 + FROM T_AutoWrireRecordEntry b + INNER JOIN dbo.ZZV_SalOrder bb + ON b.FBILLNO2=bb.FBILLNO + INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID + WHERE b.fid={Id} "; + var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + var one1 = data.Where(q => decimal.Parse(q["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["XiaoFamount"]?.ToString())) + .Select(q => q["FBILLNO"]).ToList(); + if (one1.Count > 0) + { + throw new KDBusinessException("", $@"销售单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 "); + } + + sql = $@"/*dialect*/SELECT a.FBILLNO,(a.FRECAMOUNTFOR-a.F_AMOUNT) as F_AMOUNT,b.FALLAMOUNT33 FROM dbo.T_AR_RECEIVEBILL a + INNER JOIN T_AutoWrireRecordEntry2 b + ON a.FBILLNO=b.FBILLNO3 + WHERE b.FID={Id} "; + data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + one1 = data.Where(q => decimal.Parse(q["FALLAMOUNT33"]?.ToString()) > decimal.Parse(q["F_AMOUNT"]?.ToString())) + .Select(q => q["FBILLNO"]).ToList(); + if (one1.Count > 0) + { + throw new KDBusinessException("", $@"收款单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 "); + } + + } + } + + } +} diff --git a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs index 812a694..78f8591 100644 --- a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs +++ b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs @@ -69,7 +69,7 @@ namespace Pilot_KD_Parino.SQL C.FBILLALLAMOUNT_LC AS 'FALLAMOUNT' , C.FBILLALLAMOUNT as 'FALLAMOUNTY', ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT', - C.FBILLALLAMOUNT+a.F_EXPENSES-A.F_AMOUNT as 'FDAMOUNT2', + a.ZhengShuHeJi+a.F_EXPENSES-A.F_AMOUNT as 'FDAMOUNT2', C.FSETTLECURRID as 'FCurr', case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' , '销售订单' as 'FTYPE', @@ -113,7 +113,7 @@ GROUP BY F_PaperNumber, FSALEORGID ,a.F_EXPENSES ,(SELECT ll.FNAME FROM dbo.T_BD_CURRENCY_L ll WITH(NOLOCK) where ll.FCURRENCYID=c.FSettleCurrId ) AS [FBiBie] , c.FExchangeRate FHuiLv - FROM T_SAL_ORDER A + FROM ZZV_SalOrder A INNER JOIN T_SAL_ORDERFIN C ON C.FID =A.FID WHERE C.FBILLALLAMOUNT_LC >0 @@ -150,6 +150,12 @@ GROUP BY F_PaperNumber, FSALEORGID C.FBILLALLAMOUNT as 'FALLAMOUNTY', ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT', C.FBILLALLAMOUNT-A.F_AMOUNT as 'FDAMOUNT2', + (SELECT TOP 1 + (fin.FBillAllAmount+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount + FROM dbo.T_SAL_ORDER bb + INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID + WHERE a.F_PAPERCONTRACT=bb.F_CONTRACTNUMBER AND a.FSALEORGID=bb.FSALEORGID ) AS FDAMOUNT2222, + C.FSETTLECURRID as 'FCurr', case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' , '发货通知单' as 'FTYPE', @@ -182,7 +188,9 @@ GROUP BY F_PaperNumber, FSALEORGID AND A.FDOCUMENTSTATUS = 'C' AND ISNULL(A.F_Papercontract,'')!='' AND (A.F_AMOUNT < C.FBILLALLAMOUNT or A.F_AMOUNT IS NULL) {where} - ) A ORDER BY A.FCUSTID,a.FID desc "); + ) A + WHERE a.FDAMOUNT2 <= a.FDAMOUNT2222 + ORDER BY A.FCUSTID,a.FID desc "); return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); } diff --git a/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs b/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs index ca3ad5a..deba9ca 100644 --- a/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs +++ b/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs @@ -113,16 +113,15 @@ namespace Pilot_KD_Parino.Sal_Order IOperationResult result = new OperationResult(); //获取单据转换规则 ConvertRuleElement ruleElement; - + + var ruleElementList = ServiceHelper.GetService().GetConvertRules(this.Context, source, target).ToList(); if (target == "PUR_PurchaseOrder") { - var ruleMetaData = ConvertServiceHelper.GetConvertRule(this.Context, "d124a6be-5f97-4d1f-b5fd-e20e53e0ed2a"); - ruleElement = ruleMetaData.Rule; + ruleElement = ruleElementList.Where(t => t.OriginKey == "d124a6be-5f97-4d1f-b5fd-e20e53e0ed2a").FirstOrDefault(); } else if (target == "SAL_SaleOrder") { - var ruleMetaData = ConvertServiceHelper.GetConvertRule(this.Context, "8ee74811-5784-40a8-80c4-a94cd43eed70"); - ruleElement = ruleMetaData.Rule; + ruleElement = ruleElementList.Where(t => t.OriginKey == "8ee74811-5784-40a8-80c4-a94cd43eed70").FirstOrDefault(); } else ruleElement = ServiceHelper.GetService().GetConvertRules(this.Context, source, target).FirstOrDefault(); diff --git a/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs b/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs index 36f903e..9d31b2c 100644 --- a/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs +++ b/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs @@ -582,8 +582,30 @@ namespace Pilot_KD_Parino.Sal_Order { IOperationResult result = new OperationResult(); //获取单据转换规则 - ConvertRuleElement ruleElement = ServiceHelper.GetService().GetConvertRules(this.Context, source, target).FirstOrDefault(); - + ConvertRuleElement ruleElement; + var ruleElementList = ServiceHelper.GetService().GetConvertRules(this.Context, source, target).ToList(); + if (source == "PUR_PurchaseOrder" && target== "PUR_ReceiveBill") + { + ruleElement = ruleElementList.Where(t => t.OriginKey == "cc8862d6-9368-4f7d-bc83-38ce217b6ba1").FirstOrDefault(); + + } + else if (source == "PUR_ReceiveBill" && target == "STK_InStock") + { + ruleElement = ruleElementList.Where(t => t.OriginKey == "e51ffa3e-3a6f-4084-8868-9370f5977bcc").FirstOrDefault(); + + } + else if (source == "SAL_SaleOrder" && target == "SAL_DELIVERYNOTICE") + { + ruleElement = ruleElementList.Where(t => t.OriginKey == "9090ab67-7255-4a33-a457-a70fa2d90536").FirstOrDefault(); + + } + else if (source == "SAL_DELIVERYNOTICE" && target == "SAL_OUTSTOCK") + { + ruleElement = ruleElementList.Where(t => t.OriginKey == "59bef03a-5c03-426b-8cc3-7631d11a951b").FirstOrDefault(); + + } + else + ruleElement = ServiceHelper.GetService().GetConvertRules(this.Context, source, target).FirstOrDefault(); //如下代码 直接通过查询数据库获取单据转换源单数据 ListSelectedRowCollection rows = new ListSelectedRowCollection(); int i = 0; diff --git a/Pilot_KD_Parino/Sal_Order/SalDeliveryNoticeAudit.cs b/Pilot_KD_Parino/Sal_Order/SalDeliveryNoticeAudit.cs index ccaf4e0..1c25b4c 100644 --- a/Pilot_KD_Parino/Sal_Order/SalDeliveryNoticeAudit.cs +++ b/Pilot_KD_Parino/Sal_Order/SalDeliveryNoticeAudit.cs @@ -80,6 +80,7 @@ namespace Pilot_KD_Parino.Sal_Order getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM T_PUR_ReqEntry_LK WHERE FSBILLID = {tempFid} and FSTABLENAME='T_SAL_ORDERENTRY' "; dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql); + if (dt == null || dt.Count == 0 || dt.Count>1) { //throw new KDBusinessException("", "没有找到跨组织的采购申请单:" + getSourceSql); @@ -87,6 +88,12 @@ namespace Pilot_KD_Parino.Sal_Order } else { + var FSBILLIDList = dt.Select(t => t["FSBILLID"].ToString()).Distinct().ToList(); + if (FSBILLIDList.Count > 1) + { + return; + } + //采购订单 tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString(); @@ -98,13 +105,18 @@ namespace Pilot_KD_Parino.Sal_Order getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM t_PUR_POOrderEntry_LK WHERE FSBILLID = {tempFid} and FSTABLENAME='T_PUR_ReqEntry' "; dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql); - if (dt == null || dt.Count == 0 || dt.Count > 1) + if (dt == null || dt.Count == 0) { //throw new KDBusinessException("", "没有找到跨组织的采购订单:" + getSourceSql); return; } else { + var FSBILLIDList2 = dt.Select(t => t["FSBILLID"].ToString()).Distinct().ToList(); + if (FSBILLIDList2.Count > 1) + { + return; + } //兴诺的销售订单 tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString(); @@ -153,10 +165,16 @@ namespace Pilot_KD_Parino.Sal_Order try { IOperationResult result = new OperationResult(); - //获取单据转换规则 - ConvertRuleElement ruleElement = ServiceHelper.GetService().GetConvertRules(this.Context, source, target).FirstOrDefault(); + //获取单据转换规则 + ConvertRuleElement ruleElement; + var ruleElementList = ServiceHelper.GetService().GetConvertRules(this.Context, source, target).ToList(); + var akdos = JsonHelper.ToJson(ruleElementList); + Logger.Error("获取单据转换规则", akdos, new Exception()); - //如下代码 直接通过查询数据库获取单据转换源单数据 + ruleElement = ruleElementList.Where(t => t.OriginKey == "9090ab67-7255-4a33-a457-a70fa2d90536").FirstOrDefault(); + //var ruleMetaData = ConvertServiceHelper.GetConvertRule(this.Context, "9090ab67-7255-4a33-a457-a70fa2d90536"); + //ruleElement = ruleMetaData.Rule; + //如下代码 直接通过查询数据库获取单据转换源单数据 9090ab67-7255-4a33-a457-a70fa2d90536 ListSelectedRowCollection rows = new ListSelectedRowCollection(); int i = 0; ListSelectedRow row = new ListSelectedRow(tempFid, string.Empty, i++, source); diff --git a/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs b/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs new file mode 100644 index 0000000..971d519 --- /dev/null +++ b/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs @@ -0,0 +1,82 @@ +using Kingdee.BOS; +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.ServiceHelper; +using Kingdee.BOS.Util; +using Pilot_KD_Parino.Common; +using System; +using System.ComponentModel; +using System.Data; +using System.Linq; + +namespace Pilot_KD_Parino.Sal_Order +{ + [Description("销售订单提交时刷结算价相关字段"), HotUpdate] + public class SaleOrderJieSuanJia : AbstractOperationServicePlugIn + { + + DynamicObject sheet = null; + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + + base.BeforeExecuteOperationTransaction(e); + foreach (var rows in e.SelectedRows) + { + var Billobj = rows.DataEntity; + sheet = Billobj; + var sdsas = JsonHelper.ToJson(Billobj); + Logger.Error("销售订单对象", sdsas, new Exception()); + //获取单据Id + string Id = sheet["Id"].ToString(); + string sql = $@"/*dialect*/UPDATE T_SAL_ORDERENTRY SET F_SettlementP=b.F_JSJ,F_SettlementAmount=FQty*b.F_JSJ + FROM (SELECT b.FENTRYID, c.FMaterialId,c.F_JSJ ,fin.FExchangeRate ,F_SettlementP FROM dbo.T_SAL_ORDER a + LEFT JOIN dbo.T_SAL_ORDERENTRY b ON a.fid=b.FID + LEFT JOIN T_BD_MATERIAL c ON b.FMaterialId=c.FMATERIALID + LEFT JOIN dbo.T_SAL_ORDERFIN fin ON a.fid=fin.FID + WHERE b.FID={Id}) b + WHERE T_SAL_ORDERENTRY.FENTRYID=b.FENTRYID; + +exec [UPDATESpecialContracts] {Id} "; + DBServiceHelper.Execute(this.Context, sql); + + // UPDATE T_SAL_ORDER SET F_VRYF_Amount_yrr = b.F_SettlementAmount, F_differenceAmount = fin.FBillAllAmount_LC - b.F_SettlementAmount + //FROM(SELECT b.FID, sum(F_SettlementAmount) F_SettlementAmount from dbo.T_SAL_ORDERENTRY b + //WHERE b.FID ={ Id} + // GROUP BY b.FID ) b + // LEFT JOIN dbo.T_SAL_ORDERFIN fin ON b.fid = fin.FID + //WHERE T_SAL_ORDER.FID = b.FID; + + + + sql = $@"/*dialect*/SELECT FMaterialId FROM dbo.T_SAL_ORDERENTRY + WHERE FID= {Id} AND F_SettlementP IS null"; + var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql, null, null, CommandType.Text, null); + if (data != null && data.Count > 0 ) + { + var FMaterialIdList = data.Select(t => t["FMaterialId"].ToString()).ToList(); + var SaleOrderEntryList = sheet["SaleOrderEntry"] as DynamicObjectCollection; + string mese = ""; + foreach (var item in SaleOrderEntryList) + { + if (FMaterialIdList.Contains(item["MaterialId_Id"].ToString())) + { + var name = item["MaterialId"] as DynamicObject; + mese += $@"第{item["Seq"].ToString()}分录的物料编码 {name["Number"].ToString()} 的结算价不能为空; + "; + } + } + + if (mese != "") + { + throw new KDBusinessException("", mese); + } + } + } + } + + + } +} + diff --git a/更新核销金额.sql b/更新核销金额.sql index 86568be..e8065f2 100644 --- a/更新核销金额.sql +++ b/更新核销金额.sql @@ -18,17 +18,21 @@ WHERE fid=@fid UPDATE T_AutoWrireRecordEntry2 SET FALLAMOUNT3=FALLAMOUNT33,FCONTRACTNUMBER2=(SELECT STRING_AGG(FCONTRACTNUMBER,',') FROM T_AutoWrireRecordEntry WHERE fid= T_AutoWrireRecordEntry2.FID) WHERE fid=@fid -DECLARE @custID1 INT=0,@cusId2 INT=0 +DECLARE @custID1 INT=0,@cusId2 INT=0,@custIDcount INT =0; SELECT @custID1=a.FCustId FROM dbo.T_SAL_ORDER a LEFT JOIN T_AutoWrireRecordEntry b ON a.FBILLNO=b.FBILLNO2 WHERE b.fid=@fid +SELECT @custIDcount=COUNT(DISTINCT a.FCustId ) FROM dbo.T_SAL_ORDER a +LEFT JOIN T_AutoWrireRecordEntry b ON a.FBILLNO=b.FBILLNO2 +WHERE b.fid=@fid + SELECT @cusId2=a.FCONTACTUNIT FROM dbo.T_AR_RECEIVEBILL a LEFT JOIN T_AutoWrireRecordEntry2 b ON a.FBILLNO=b.FBILLNO3 WHERE b.fid=@fid -IF(@custID1 !=@cusId2 ) +IF(@custID1 >0 AND @cusId2 >0 and @custID1 !=@cusId2 OR @custIDcount >1) begin UPDATE T_AutoWrireRecord SET F_KUAKEHU='' WHERE FID=@fid update T_AutoWrireRecord SET F_YeWuDate=FCreateDate @@ -36,11 +40,12 @@ begin end ELSE begin - UPDATE T_AutoWrireRecord SET F_KUAKEHU='' WHERE FID=@fid + UPDATE T_AutoWrireRecord SET F_KUAKEHU='' WHERE FID=@fid UPDATE T_AutoWrireRecord SET F_YeWuDate=b.FDATE3 FROM T_AutoWrireRecordEntry2 b WHERE T_AutoWrireRecord.FID=@fid AND F_YeWuDate IS NULL AND b.FID=T_AutoWrireRecord.FID +END UPDATE C SET F_Amount =c.F_Amount+ISNULL( d.,0) FROM T_AutoWrireRecord A @@ -54,7 +59,7 @@ begin GROUP BY B.FBILLNO2 ) d ON d.FBILLNO2 =b.FBILLNO2 WHERE a.FID =@FID ; - end + --޸Ӧյۼƺ UPDATE C SET F_Amount =c.F_Amount+ISNULL( d.,0)