From 3076efb62042344a7300e3a09bf868b627f9b78c Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Thu, 24 Apr 2025 14:01:46 +0800 Subject: [PATCH] 1 --- Pilot_KD_Parino/Common/CombinaClass.cs | 10 + Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs | 170 +++++++-- Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs | 487 +----------------------- 组织间单据自动生成流程图.vsdx | Bin 48689 -> 49299 bytes 4 files changed, 163 insertions(+), 504 deletions(-) diff --git a/Pilot_KD_Parino/Common/CombinaClass.cs b/Pilot_KD_Parino/Common/CombinaClass.cs index ba3f35d..49199dc 100644 --- a/Pilot_KD_Parino/Common/CombinaClass.cs +++ b/Pilot_KD_Parino/Common/CombinaClass.cs @@ -200,5 +200,15 @@ namespace Pilot_KD_Parino.Common /// 累计开票金额 /// public decimal FInvoiceAmount { get; set; } + + /// + /// 最近30天发货通知单金额 + /// + public double FaHuoAmount30Days { get; set; } + + /// + /// 最近30天开票金额 + /// + public double FInvoiceAmount30Days { get; set; } } } diff --git a/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs b/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs index 0cc0af6..4522799 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs @@ -466,6 +466,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire Dictionary shouKuanDetail = new Dictionary(); //先挑1张收款单对应一张销售订单 + //1、收款单的待核销金额与订单的待核销金额 var oneToOneTemp = (from q in SaleBILLLIS2Sal join u in ReceiveBILLLIST on new { q.FClient, q.FDAMOUNT } equals new { u.FClient, u.FDAMOUNT } select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO }).ToList(); @@ -546,6 +547,94 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire }); } + //2、收款单的待核销金额与订单的待最近30天发货通知单金额(除了医院客户) + var SaleBILLLIS2Sa222 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList(); + ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList(); + + var oneToOneTemp2 = (from q in SaleBILLLIS2Sa222 + join u in ReceiveBILLLIST on new { q.FClient, FDAMOUNT= q.FaHuoAmount30Days } equals new { u.FClient, u.FDAMOUNT } + select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO }).ToList(); + //var dasdsas = oneToOneTemp.Where(h => h.FBIllNO == "PL-XSDD20250400471").FirstOrDefault(); + var saleList22 = oneToOneTemp2.Select(t => t.FBIllNO).Distinct().ToList(); + var ReceiveList22 = oneToOneTemp2.Select(t => t.UFbillNo).Distinct().ToList(); + if (saleList22.Count > ReceiveList22.Count) + { + List deleteFBIllNOList = new List(); + ReceiveList22.ForEach(t => + { + + var temp111 = oneToOneTemp2.FirstOrDefault(h => h.UFbillNo == t && !deleteFBIllNOList.Contains(h.FBIllNO)); + if (temp111 == null) + return; + var temp11 = temp111.FBIllNO; + deleteFBIllNOList.Add(temp11); + var item = SaleBILLLISNew.Where(h => h.FBIllNO == temp11).OrderBy(h => h.FDate).FirstOrDefault(); + //更新销售订单数据 + item.FSKBIllNO = t; + item.FISHX = "已核销配对"; + item.BenCi = temp111.FDAMOUNT; + item.FDAMOUNT = item.FDAMOUNT - item.BenCi; + + shouKuanDetail.Add(t + "," + item.FBIllNO, item.BenCi); + //item.FYAMOUNT = item.FYAMOUNT + item.BenCi; + //item.= + List fString = new List(); + fString.Add(item.FCONTRACTNUMBER); + string fCONTRACTNUMBER = string.Join(",", fString); + //更新收款单数据 + var receiveItemTemp = ReceiveBILLLIST.FirstOrDefault(h => h.FBIllNO == t); + if (receiveItemTemp != null) + { + receiveItemTemp.FCONTRACTNUMBER = fCONTRACTNUMBER; + receiveItemTemp.FISHX = "已核销配对"; + receiveItemTemp.BenCi = temp111.FDAMOUNT; + receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi; + //receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi; + } + + }); + } + else + { + List deleteFBIllNOList = new List(); + saleList22.ForEach(t => + { + var temp111 = oneToOneTemp2.Where(h => h.FBIllNO == t && !deleteFBIllNOList.Contains(h.UFbillNo)).OrderBy(h => h.UFbillNo).FirstOrDefault(); + if (temp111 == null) + return; + var temp11 = temp111.UFbillNo; + deleteFBIllNOList.Add(temp11); + var item = SaleBILLLISNew.FirstOrDefault(h => h.FBIllNO == t); + //更新销售订单数据 + item.FSKBIllNO = t; + item.FISHX = "已核销配对"; + item.BenCi = temp111.FDAMOUNT; + item.FDAMOUNT = item.FDAMOUNT - item.BenCi; + //item.FYAMOUNT = item.FYAMOUNT + item.BenCi; + List fString = new List(); + fString.Add(item.FCONTRACTNUMBER); + string fCONTRACTNUMBER = string.Join(",", fString); + //更新收款单数据 + var receiveItemTemp = ReceiveBILLLIST.FirstOrDefault(h => h.FBIllNO == temp11); + if (receiveItemTemp != null) + { + receiveItemTemp.FCONTRACTNUMBER = fCONTRACTNUMBER; + receiveItemTemp.FISHX = "已核销配对"; + receiveItemTemp.BenCi = temp111.FDAMOUNT; + receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi; + //receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi; + receiveItemTemp.FWeiYi = "是"; + + shouKuanDetail.Add(receiveItemTemp.FBIllNO + "," + item.FBIllNO, item.BenCi); + } + + }); + } + + + //3、收款单的待核销金额与订单的待最近30天开票金额(只有医院客户) + + //先挑1张收款单对应多张张销售订单 var SaleBILLLIS2Sa2 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList(); ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList(); @@ -702,16 +791,11 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire #endregion ////删除数据 //this.View.Model.DeleteEntryData("FEntity"); - - - - #endregion //获取已配对的数据 List SaleBILLLISNew2 = SaleBILLLISNew.Where(a => a.FSKBIllNO != "" && a.FSKBIllNO != null).ToList(); - INDEXNumber = 1; - + INDEXNumber = 1; //绑定收款单数据 foreach (var item in ReceiveBILLLIST2) @@ -774,20 +858,28 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire } this.View.UpdateView("FEntity2"); - TreeEntryGrid entryGrid = this.View.GetControl("FEntity2") as TreeEntryGrid; - DynamicObjectCollection entryGrid2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection; - if (entryGrid != null) - { - var list = entryGrid2.Where(t => t["FCONTRACTNUMBER2"] != null && t["FCONTRACTNUMBER2"].ToString() != "" && t["F_RowNew"].ToString() == "1").ToList(); - foreach (var item in list) - { - entryGrid.ExpandedRow(int.Parse(item["SEQ"].ToString()) - 1); - } - //for (int i = 0; i < entryGrid2.Count; i++) - //{ - // entryGrid.ExpandedRow(i); - //} - } + //处理树形表单的样式 + //TreeEntryGrid entryGrid = this.View.GetControl("FEntity2") as TreeEntryGrid; + //DynamicObjectCollection entryGrid2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection; + //if (entryGrid != null) + //{ + // var entityKey = "FEntity2"; + // var grid = this.View.GetControl(entityKey); + // var list = entryGrid2.Where(t => t["FCONTRACTNUMBER2"] != null && t["FCONTRACTNUMBER2"].ToString() != "" && t["F_RowNew"].ToString() == "1").ToList(); + // foreach (var item in list) + // { + // //entryGrid.ExpandedRow(int.Parse(item["SEQ"].ToString()) - 1); + + + // var backColor = "#ead1dc"; + + // // 常规操作是直接使用grid.SetRowBackcolor函数,如果不生效,可以尝试用自定义封装的GridSetRowBackcolor函数 + + + // GridSetRowBackcolor(this.View, entityKey, backColor, int.Parse(item["SEQ"].ToString()) - 1); + // //grid.SetRowBackcolor(backColor, int.Parse(item["SEQ"].ToString()) - 1); + // } + //} var FEndTime = DateTime.Now; TimeSpan timeSpan = FEndTime - FStartTime; @@ -1385,6 +1477,8 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire F_Ordercategory2 = Convert.ToString(item["F_Ordercategory2"]), F_Ordercategory = Convert.ToString(item["F_Ordercategory"]), FInvoiceAmount = Convert.ToDecimal(item["FInvoiceAmount"]), + FaHuoAmount30Days = Convert.ToDouble(item["FaHuoAmount30Days"]), + FInvoiceAmount30Days = Convert.ToDouble(item["FInvoiceAmount30Days"]), }).ToList(); @@ -1399,7 +1493,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire FClient = Convert.ToInt32(item["FCONTACTUNIT"]), FCreated = Convert.ToInt32(item["FCREATORID"]), FRemark = Convert.ToString(item["FREMARK"]), - FSalesman = Convert.ToInt32(item["FSALEERID"]), + FSalesman = Convert.ToInt32(item["FSALEERID"]), F_RowNew = 1, BenCi = 0, }).ToList(); @@ -1491,38 +1585,38 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire - ///// + /// - ///// 设置表格背景色 + /// 设置表格背景色 - ///// + /// - ///// 当前动态表单的View层接口 + /// 当前动态表单的View层接口 - ///// 单据体的标识 + /// 单据体的标识 - ///// 颜色代码 + /// 颜色代码 - ///// 要设置颜色的数据行的行索引 + /// 要设置颜色的数据行的行索引 - //private static void GridSetRowBackcolor(IDynamicFormView view, string entityKey, string color, int rowIndex) + private static void GridSetRowBackcolor(IDynamicFormView view, string entityKey, string color, int rowIndex) - //{ + { - // var value = new JSONObject(); + var value = new JSONObject(); - // value[rowIndex.ToString()] = color; + value[rowIndex.ToString()] = color; - // var jo = new JSONObject(); + var jo = new JSONObject(); - // jo["backcolor"] = value; + jo["backcolor"] = value; - // var grid = view.GetControl(entityKey); + var grid = view.GetControl(entityKey); - // var formState = view.GetService(); + var formState = view.GetService(); - // formState.AftInvokeControlMethod(grid.ControlAppearance, "UpdateFieldStates", jo); + formState.AftInvokeControlMethod(grid.ControlAppearance, "UpdateFieldStates", jo); - //} + } } } diff --git a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs index b14cbc5..8255ff6 100644 --- a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs +++ b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs @@ -12,101 +12,7 @@ namespace Pilot_KD_Parino.SQL { public class SqlManage_yuyubo { - /// - /// 更新销售订单核销金额 - /// - /// - public static void UpdateSalOrderAmount(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC UpdateSalOrderAmount {0} ", FID); - //执行SQL - DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - /// - /// 反审核,更新销售订单核销金额 - /// - /// - public static void FUpdateSalOrderAmount(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC FUpdateSalOrderAmount {0} ", FID); - //执行SQL - DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - /// - /// 获取销售订单数据(创建 otherItem 对象) - /// - /// - public static DynamicObjectCollection GetSaleOrderData4(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC GetSaleOrderData4 {0} ", FID); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - - - - /// - /// 获取核销收款单信息 - /// - /// - public static DynamicObjectCollection GetAutoWrireRecordId(Context ctx, string FBILLNO) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - SELECT FID FROM T_AutoWrireRecordEntry WHERE FBILLNO2 = '{0}' - UNION ALL - SELECT FID FROM T_AutoWrireRecordEntry2 WHERE FBILLNO3 = '{0}' - ", FBILLNO); - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - - /// - /// 获取核销收款单信息 - /// - /// - public static DynamicObjectCollection GetWriteReceiveDate(Context ctx, string FORGID, string FCUSTID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC GetWriteReceiveDate '{0}','{1}' ", FORGID, FCUSTID); - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - /// - /// 获取核销收款单信息 - /// - /// - public static DynamicObjectCollection GetWriteReceiveDate2(Context ctx, string FORGID, string FCUSTID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - SELECT - A.FCONTACTUNIT, - A.FREMARK, - A.FBILLNO AS 'FBILLNO', - DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE', - A.FRECAMOUNT AS 'FALLAMOUNT', - A.FRECAMOUNTFOR as 'FALLAMOUNTY', - A.FCURRENCYID as 'FCurr' - FROM T_AR_RECEIVEBILL A - LEFT JOIN T_AutoWrireRecordEntry2 B ON B.FBILLNO3 = A.FBILLNO - WHERE B.FBILLNO3 IS NULL - AND A.FCONTACTUNIT in ({1}) - AND A.FDOCUMENTSTATUS = 'C' - AND A.FSALEORGID = {0}", FORGID, FCUSTID); - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - + /// /// 获取核销收款单信息 /// @@ -137,81 +43,7 @@ namespace Pilot_KD_Parino.SQL return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); } - /// - /// 获取核销销售订单信息 - /// - /// - public static DynamicObjectCollection GetWriteOrderDate(Context ctx, string FORGID, string FCUSTID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC GetWriteOrderDate '{0}','{1}' ", FORGID, FCUSTID); - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - /// - /// 获取核销销售订单信息 - /// - /// - public static DynamicObjectCollection GetWriteOrderDate2(Context ctx, string FORGID, string FCUSTID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - SELECT * FROM - ( - SELECT - A.F_CONTRACTNUMBER, - A.FCUSTID, - A.F_PROJECTNAME, - A.FCREATORID, - A.FBILLNO AS 'FBILLNO', - DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE', - C.FBILLALLAMOUNT_LC AS 'FALLAMOUNT' , - C.FBILLALLAMOUNT as 'FALLAMOUNTY', - C.FSETTLECURRID as 'FCurr', - case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' , - '销售订单' as 'FTYPE' - FROM T_SAL_ORDER A - INNER JOIN T_SAL_ORDERFIN C ON C.FID =A.FID - LEFT JOIN T_AutoWrireRecordEntry B ON B.FBILLNO2 = A.FBILLNO - LEFT JOIN V_ASSISTANTDATA D ON D.FENTRYID = A.F_Ordercategory - WHERE B.FBILLNO2 IS NULL - AND C.FBILLALLAMOUNT_LC <>0 - AND A.FCUSTID in ({1}) - AND A.FSALEORGID = {0} - --AND DATEDIFF(MONTH, A.FDATE, GETDATE())<3 - AND A.FDOCUMENTSTATUS = 'C' - AND d.FNUMBER = 'P' - UNION ALL - SELECT - A.F_PAPERCONTRACT, - A.FCUSTOMERID, - A.F_PROJECTNAME, - A.FCREATORID, - A.FBILLNO AS 'FBILLNO', - DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE', - F.FALLAMOUNT AS 'FALLAMOUNT' , - A.FALLAMOUNTFOR AS 'FALLAMOUNTY' , - A.FCURRENCYID AS 'FCurr' , - case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' , - '应收单' as 'FTYPE' - FROM t_AR_receivable A - INNER JOIN T_AR_RECEIVABLEENTRY C ON C.FID =A.FID - INNER JOIN T_AR_RECEIVABLEFIN F ON F.FID = A.FID - INNER JOIN T_SAL_ORDER E ON E.FBILLNO = C.FORDERNUMBER - LEFT JOIN T_AutoWrireRecordEntry B ON B.FBILLNO2 = A.FBILLNO - LEFT JOIN V_ASSISTANTDATA D ON D.FENTRYID = e.F_Ordercategory - WHERE B.FBILLNO2 IS NULL - AND F.FALLAMOUNT <>0 - AND A.FCUSTOMERID in ({1}) - AND A.FSALEORGID = {0} - --AND DATEDIFF(MONTH, A.FDATE, GETDATE())<3 - AND A.FDOCUMENTSTATUS = 'C' - AND d.FNUMBER <> 'P' - ) A ORDER BY A.FTYPE,a.FDATE ", FORGID, FCUSTID); - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - + /// /// 获取核销销售订单信息 /// @@ -251,310 +83,33 @@ INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumbe --WHERE F_PaperNumber='P202502070004' ) AD WHERE AD.F_PaperNumber = A.F_contractnumber AND ad.FSALEORGID=a.FSALEORGID GROUP BY F_PaperNumber, FSALEORGID - ) as FInvoiceAmount + ) as FInvoiceAmount, + +(select SUM(bb.F_TotalAmoun) from dbo.T_SAL_DELIVERYNOTICE bb WITH(NOLOCK) WHERE bb.FSaleOrgId=a.FSALEORGID AND bb.F_Papercontract=a.F_contractnumber + AND 30 >= DATEDIFF(DAY,bb.FDATE,GETDATE()) AND bb.FDocumentStatus='C' ) as FaHuoAmount30Days, + ( + SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM ( + SELECT F_PaperNumber, t0.FSALEORGID, + CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAX + WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAX END AS F_GeneralInvoice + +FROM T_IV_SALESIC t0 WITH(NOLOCK) +INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumber AND t0.FSETTLEORGID=aa1.FSALEORGID + WHERE 30 >= DATEDIFF(DAY,t0.FDATE,GETDATE()) +) AD WHERE AD.F_PaperNumber = A.F_contractnumber AND ad.FSALEORGID=a.FSALEORGID +GROUP BY F_PaperNumber, FSALEORGID + ) as FInvoiceAmount30Days FROM T_SAL_ORDER A INNER JOIN T_SAL_ORDERFIN C ON C.FID =A.FID WHERE - C.FBILLALLAMOUNT_LC <>0 + C.FBILLALLAMOUNT_LC >0 AND A.FDOCUMENTSTATUS = 'C' AND ISNULL(A.F_CONTRACTNUMBER,'')!='' AND (A.F_AMOUNT < C.FBILLALLAMOUNT_LC - or A.F_AMOUNT IS NULL) AND A.FBusinessType='NORMAL' {where} - ) A ORDER BY A.FCUSTID,a.FID desc "); + or A.F_AMOUNT IS NULL) {where} + ) A ORDER BY A.FCUSTID,a.FID desc "); return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); } - /// - /// 获取BMP流程信息 - /// - /// - public static void UpdateData(Context ctx, string FID, String sfsj) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - UPDATE T_SAL_ORDER SET FNOTE = FNOTE + '{0}' WHERE FID = '{1}' ", sfsj, FID); - DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - - - - /// - /// 获取BMP流程信息 - /// - /// - public static DynamicObjectCollection GetBmpData(Context ctx, string F_contractnumber) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - select * from erptobpm.pilotdb.dbo.v_erp_CustMadeAgain where ContactNo = '{0}' ", F_contractnumber); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; - } - - - /// - /// 更新特价 - /// - /// - public static DynamicObjectCollection UPDATESpecialContracts(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - exec UPDATESpecialContracts '{0}' ", FID); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; - } - - - /// - /// 更新销售订单SN信息 - /// - /// - public static void UpdateBMPSN(Context ctx, string FID, string SN) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - Update T_SAL_ORDER SET F_FailorBPM = '{1}' WHERE FID ={0} ", FID, SN); - //执行SQL - DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - - - - /// - /// 获取销售订单数据(创建BPM流程发起) - /// - /// - public static DynamicObjectCollection GetSaleOrderData3(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC GetSaleOrderData3 {0} ", FID); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - - - - /// - /// 获取销售订单数据(创建BPM流程发起) - /// - /// - public static DynamicObjectCollection GetSaleOrderData2(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC GetSaleOrderData2 {0} ", FID); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - - /// - /// 获取销售订单数据(创建BPM流程发起) - /// - /// - public static DynamicObjectCollection GetSaleOrderData(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC GetSaleOrderData {0} ", FID); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - - } - - - /// - /// 判断该组织是否存在工程项目 - /// - /// - public static void UpdateItemData(Context ctx, string FID, string FlexNumber) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC UpdateItemData {0},{1}", FlexNumber, FID); - //执行SQL - var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - - } - - - - - /// - /// 判断该组织是否存在工程项目 - /// - /// - public static DynamicObjectCollection CheckItem(Context ctx, string FlexNumber, string FORGID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC CheckItem '{0}','{1}'", FlexNumber, FORGID); - //执行SQL - var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - return result; - } - - - - /// - /// 获取纸质合同号 - /// - /// - public static string GetFlexNumber(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC GetFlexNumber {0}", FID); - //执行SQL - var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - if (result.Count > 0) - { - return Convert.ToString(result[0]["F_contractnumber"]); - } - else - { - return ""; - } - } - - - - - - - - - - - - /// - /// 获取文件名 - /// - /// - public static string GetFolderName(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - EXEC GetFolderName {0}", FID); - //执行SQL - var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - if (result.Count > 0) - { - return Convert.ToString(result[0]["FolderName"]); - } - else - { - return ""; - } - } - - /// - /// 更新销售订单创建文件夹状态 - /// - /// - public static void UpdateSaleOrderisdoccreate(Context ctx, string FID, string Path) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - Update T_SAL_ORDER SET Fisdoccreate = 1,Fdocpath = '{1}' WHERE FID ={0} ", FID, Path); - //执行SQL - DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); - } - - - /// - /// 获取内容 - /// - /// - public static DataSet GetTempModelData(Context ctx, string FID, string FType) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - exec GetTempModelData '{0}','{1}' ", FID, FType); - //执行SQL - return DBServiceHelper.ExecuteDataSet(ctx, sql); - } - - - /// - /// 获取模板地址 - /// - /// - public static DynamicObjectCollection GetTempModelPath(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - SELECT FTempPath FROM T_TempModelPath WHERE FKeyId = '{0}' ", FID); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; - } - - - - /// - /// 更新销售订单的是否分摊 - /// - /// - public static DynamicObjectCollection UpdateFlexNumber(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - exec UpdateFlexNumber '{0}' ", FID); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; - } - - - - - - - /// - /// 更新销售订单的是否分摊 - /// - /// - public static DynamicObjectCollection UpdateSaleOrderFisShared(Context ctx) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ - UPDATE A SET FIsShare = case when b.FID is null then '否' else '是' end FROM T_SAL_ORDER A - LEFT JOIN T_PerformanceSharing B ON A.FBILLNO = B.FSOURCEBILLNO"); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; - } - - /// - /// 更新销售订单的物流单号 - /// - /// - public static DynamicObjectCollection UpdateSaleOrderLogisticsNumber(Context ctx, string FID) - { - //定义SQL,调用物料视图 - string sql = string.Format(" EXEC UpdateSaleOrderLogisticsNumber {0}", FID); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; - } - - - /// - /// 获取采购订单最大的入库日期 - /// - /// - public static DynamicObjectCollection GetInStockDate(Context ctx) - { - //定义SQL,调用物料视图 - string sql = string.Format(@"/*dialect*/ select CONCAT( FPOORDERENTRYID,'-', A.FMATERIALID) as 'FKey',MAX(CONVERT(NVARCHAR(10), B.FDATE,23)) AS 'FDate' - from T_STK_INSTOCKENTRY A - INNER JOIN T_STK_INSTOCK B ON A.FID = B.FID - WHERE FPOORDERENTRYID <> 0 - GROUP BY CONCAT(FPOORDERENTRYID, '-', A.FMATERIALID)"); - //执行SQL - return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection; - } } } diff --git a/组织间单据自动生成流程图.vsdx b/组织间单据自动生成流程图.vsdx index 5aadb9d4f9fe2b1f4c0cde7e86d674ef3b1cb857..cc180c546fbb21cfe28cfbc1edd25ab95f744d42 100644 GIT binary patch delta 20011 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 delta 19423 zcmV)NK)1h>fdjGp0F`8Nx;#|A|`nuwVfAv5Q4Ag3<_W?(0kHLZ8Y$8jN>Lq;m+5E<7amH>+Apg z`bPZR6If5fAVF!{aGT{pA8i49z@w(oZh5ZTYP4I9hYSdKdHcfG8%D#iU8{jkxvt|@ zR;Mul*RDtgQ@#;;(SspLlHK17p7{2!*X=`+e`q(Qf8UWgkI{^;JC5OX+OFf-oo3s! z8XaB37_P5%b6?_HAd8qw5!*9bZrf_uZl`HAoz5|lX*^$#qo@G>AZ0AWw%fLCIgO^{ zSZ)i$IJC19dLf0*K1oXOEvc;xVGNCyWwqKZ*RnnIw6@giP9VD6XtR<7y~-N~Y6@<4 zM)3|_Qr4F?l3> zng#ixWx?PT4S$$Go?wAj0Fj@QXbE9|uBqNhxdG%=@9p_4I(bHK=p42k<9K!HD#7n? zWs_i!9K~HGn9(W5U#mNfs+Ao@U92Emf~w5xSe~b}^btpQLbdKs5Gtb+-`eft(d}@x z^5Zx;9O58{DHd!szSNA!PMV6f0;6mWPcom4h6?#6iXh~tF@2h42%_vXY)G?zk0_d* z@@DL%(@rTFAvY1@`%468H2)H@OUgM-KUT&B&l#D23_Qi`;jR}W_6~QumPRD7f~kaxg5*YT-_T%w}O3%-#flQYVfghphv8X!_)1G z+0*g7W^3jWJHfiTn-Kn z4hZ1W2XOYCPgm-RGfu1RHoUx$o{@xv{C_ z?YvO){pMj&Y?o@zirt=BaZ9a6yHW9HN{tnyGiGKw%FJy$oQG3NXnHQFQyXA{TuPh`M+Qw?zZ>)qlX)2Q!g2!ire_s-Jx36|@ ze#eV}UxdU`tFhAb^FsI1wP54H?)Epqw@-iHd>CB0{GZ2P24COb*}k*4xwU)y(eBoz z;L+FJhv#;$e@>O|e)em3;~Lcr;or`F2Kq}4Z-3cc2irk6s=HMW8$@hgwEa@8utww1 zA6WEcvuyiR_@w9ldDX$~`%6a4>2fxcPD$V%e3MdIQIQ~&l{CYWCAE}t^Dx1?)Mbpx9K~X_|$@ZbEJ*#e4p{K!udAD44;PrqYeGN{m zHGhe%bF)i!)mg4Nj-NQU7dzp6>c_FUS;MK<6G!s`F8n9A?AL_E z2YEpe5-0P*;-Vn(67!B*t@$HGmTTqCu}Y=w_@{`BG?Pwi>9mvq&txPeml>wFSLj1h zD3zX(bKr$cPE~bDRnze93^iuCWY?Xr9)C&J<(wqtw45TP)tmxDWuT1NvO6%AUbYy# zA=uYp;~B@WdSeNRb=`tjb5FbevS&A`y=*4-{E>5bEM{9Yrk8u^#C0!t7dT6W2Aw21OFD}NCB zcGGFS=i;dX-bv1*%QeV*&spmuA&Do5Ey(-sQTN7= zVGO2}UpOc&c z4OB(Qf`4S-8;&9LKE8n*2$QRd7QztoAnJN?1A_P;RDdv1L!Jf+SD{L@Xrc}lSkmY} zGDWdtia1H^Oiw{*NrV`rihm$+u&d9ygDFGkm8+XC%e}u6H4j?PUBp>j3XVXk(I+`Q zMbiglu^;y_uM8`lO-17n>IKNCj! zfsrG@o()V6SioMd1O2i34;CiYjRz(PG%VrjC{!fP?2CiCzJHYQ;_qU$1;&Xq$n|WT zI|@u@$ZymkU{a02q`BtVz{e)w$EpX60RA;U3RVUex4LJ~?LGTv_wt?HN6&ac4qu*t zyfG!N2NgdF@6FW8IlkDrtyBOzR;xwyV4 z!~Z(uhc*x)dNU)FgDxfrXzk>=@)0s=ldRF<3$H^l^^O+&IM9zsVUj`de0h|4-E zi@NAkDq=;R$8l8$I1MTAGo>O|ktyqC<9Mk6@eDcz`BjT*6d?{3>G-7- zK_!4{s1iVzHj_Uu7&9((H~+=wa}eu)O5tgeiXj-`@%Gs@mU3!QS2D#^+A10;#W3WQ zrszQ773HjI8IqYZij#^jEf;rxJK6o>YVg&ABxLMt|CHQ&dNsK4Xp_z_G65Kq0WduQ z8IwOS8h^iwT{Z|Ixt@&;83inrQNU7E?dB!@=Dv`)&~TZ3?sJ7P~*gw$b;o z5;&{)`>oG|^Bcjv>pQ=G0mm4r@>jfxtSBZ%pah2QgFtgAEh$A=fzyqel2VEaN@)lX zD9RR#rdhD8oN7!E=;YiYkI3i=$H}=xVes5yJb%`c>`0G~8Q#6J^YjwlSMF|Y1~>n) z9}=DHD^HLp&|_7glQ0TDZO68@qGKI9p>pS*D!KqH_3$8nq)xquO-f^YjFO!)W(p{$v* zEP$m7dTq>c;Fj>}r!ScwL#{yIX5oLg6WHk$tBN{et0Tk+`f$j(%;(FjB zjU^$XooN|KM4)>h4S(|#x0Q-T_nx{a8}%Qxvnw=#o z+cM}buOv&xYfIKzw$>N48*5t#$Tys>UttAAf+)MqzmF{rM=?^X!MI7m`K63@Cg+knTanRf7 z4xzDIYwK6H^3uMub+x-vv8_=rT5fQ z=j^aM7%m>&yvUy{bw*#lF#7$gi}${Gd;F^pIt$C!u0mmX37v(L-K}8{+Ui50hkF|v z3#XPkr`I=EItx!jnZDzuaqNX&68L@^M4d(Q*7^LcguWEU_^lJ&YrVnA-jxfzL4W?T zOMYD6?49eaUtSyX-yGL-Lob$pNoN5%bb7h7aBQjbXrq^{nqEA% zzOixW2bY;VpikcpFS7sei)VYQOyI2Rhu6A;?kY$G#Brwo+`^M9OC1-9232^ecM1M* zIg9Ycf&Gg`aR>G<_nsdf*uQ$UD1T+~z`Zv=9RKyR@n62W|LL94OMe=@c^l^4B7bc$ z9}qmEemSD22mRIF7EA^Gzs&j^6y=T z{Fog%L5exiUoGde>x7x_`G1jYQ%xuMhkS~=jw`=m{fI$kx^CgU$U6=?Fk%gLy(kG& zH-J?MDyiuB>4RtXoIbU@=j>XqH*~yjf&E~E%e1$%67DrUJ|8|ox|LUDUVkuoW?B^+ zAl|3IiDEyKBFtq#JLA*NctvOE%F#OdEEwIDV<-C;$%sHFEI#+YRq^==-KYgA{(~83Yt*6( z*@cU+K=m04jXXFQ^qq?5z^3=W<97z7A_=B=hEA~d52`q&yp5YRb; zid2m<0g9-E0dk;nTU7xQcP zH_1RZ8LOd-&hxV<$h3 zgAUWAKz})cg%kVo@z1Z1fAe1zW-&%!uSD6P5St-R>coMUrdbjPNdhyL=p1SOfT)a8 ztXt8HB5NfL<1mWjjN7On#0ZgYnIk`Q!H^azJ2b8;x}-usr~Qf=JW#*-I#hLN11g(> z;JcKj7cQ8Z&`1l3wL-TdV~bz%1u2Y-crAAHk(Y|D?tQVW6zSivL-eNeWbII(Qe?&lyUG+@RT8@#i<;gQ~@?lT+1v+F-( zY_yQ?lbehTzp&A(Qb5!g-fZ*<~`lrc&2EY zLx1QGFC)mJFd8*Fv;|EZYSXr++_S5L?r?Rj=!{A}bJzttbAX76A0@t*q#+ES5q^t7 zu6?i1lH=}lS9QP9-xpg^1?8P z;w%a?!zW}?7(0ovkQl03xrtVYhWmhEJh9J*twm)kr1s}NGvr$P=Dl0reDuEekAE+3 za@P#_Wq|#_#K_&-uiyXi-$%E9H@fjZoE72kltjwt&+mh{+#oKT%gE9aH@r0 z$m~y1U?q4`z<7DE!E@8h2yk)&qkmYgCNWOIUl492ND&tI(|oN=Q8wmA=vIJ@J!LF1 zN{t9_5q+$Bi=YCSrxS6mQeAVAlH9Yx;s8PuTSdAdI#lvA!m@?D^qppvM{e``y6 z*l{M=cIQk0IvrbozIX9(|00K*WK#ynwA?W^cv*y4`6oiRhQ;!Uk|=W1nSc3Z#6mWb z7?pLSZ7Cu;^s)@P4>28eUE&5vs(u9gTf-n>gGKx7NCpglYD*B~C8VV(SCAI5rxsL( z?wDaC-ogsSPNI0q^-Vl7Lnxde1#DnK57-O=Q-=dfvi$whel*1c?5nk7>aXp7E#GhUADAE5TKRES_qGgV&$aP z-7EEXop+%$LTcm}2Q5+_txK*oKC*ES(71TPcDF9neu!BQxDmKgvnLLl4>aqgqDRUZ zX;&~~tsMJWQ;==o8qruedJ9<)tuWNaQq2m_zOh{N!7NRP)|1J7`+udb;z4=2-@fcy zKF3kVcr`Qg?t8F3G#U}SUoLTqmpMfUXrcGepjFxqLhq|9yMZR&<<9%jOaFWK&L3@k z^B(Bc!bwra_B!IB65g9XHx4XDF>+uNCyz-H)9!%`<`kU&jtT1J0T<0dyAcG zBGeH-!kE&a(EJzUsDEOHNsemj1ObWLM#`{psEx=8W4>6ruNdOu^s_bQtA%{ZkM)Qz z2=izO(Hg!5Rsu>e;+p{QB@pO>0!^m|Wi^0L1y2(0SO$Gazz06YGSb@(6Sd^lu&fgB zslg0b>HuFgVw0_@{odPIh>y>D2yuw~2)wzRV}DU*Jw|+T*3TO7X)Qsh zKx~1<7E9KRUP5?JE6bp<5MiJfi{76-+>><50AL zH-Ob@Z$o@g#V(4!Glsp@zy&lO!s1{XLP9|Tm(SuyU_*fWmce}xMq%PRrnDiM6Xy|( zMc~DQv>~cKmVX+wtqp zxNqE_h~1;-!l|s(1IU&78AOKQy-baTe@Ky@s+Kb>57Ci2WyCuoLP{~I-DZ7=nlzP) zT19KpLl<4gW+jT6>ISlAa9W2r*wke!Gu0zF$yfQjnF_>0d4-L#_N z6*^h;vw48pMtaU_dWe>acu9!)Lf*I(Ky727Cq&!HG%jJ389tHIy(*d&V<8)-F;I(a+w0q89Cg7BvDxqvHjDVHUvgjgo!O<=l{vBXu$ts9X`a!aTDup5~7v z-T>FI@AET6JnV&WX!1L2Dh*PIgz|JNoN6(a(ijK|&GA?mVtKI1t?LHHCY}@dZh3$y zVh3JiHx$H`yHEJq);Ct@Ga3i!MdnaT<$t*vYnfNZ=Xv7LKv95$vW+vT42Y(pU#^qF zD3q)uN1jR@3GI+CGL6vZ=lzQ89Qw|L>BX7Up>9@*Lx-MN&KWhbb&_=DWNe!yTbJw% zwvJCd56%mUv*-Cqc#P^WOtp;GsVWuiB}+d`ZQYZAmU^tAt0HI=F-!P+9gvw+B7g1{ zpKzMKD=U#PrUvH;=tYf1D4sz=jQp%9S{+nxW(7C5(j493mVb+z$i9(tjDH9@QXk zshhS2591W^yjn5@F)JH$c;Ky$eUjd0MqWEfeE;iTjDPhTJ`Rvu%_@rwq_QbTRb*dw z#6vYgn>{yDN|=3>!)uj;8P3R(b68~C{qTl&*M)2Qg`*hQ9+3r6JSx*5vIoZT#DugQ zPpeeS>Ua{Gq~&<-_Oldk{(lUTAAa+~&3hkw+>ni#9q=}e6t=r^q$bI(tPUI|3KcR_ zZr*`4MsDB?^77!%tf^cu1Z8^W-Irb2k16RX4$LdhYgk-mY}lFkDi&8Mw9MtKJXb3# zSzOO1!!l)SW#(i0yfQnY(jAsEqOv=*NZYDZMMJEL9a#$ktH_gVM}OA(JA|wiXx%0w zF^x2-4P_Vb2tL8;;_(cvEKcH-$(|8$DKn)KfFS#2!E8zI>faT%5!V*MW)(J zs#5jN1mFwgI2HH;VN`t29I?vHP21s;3%+m?2*C-{fURRa)y*7y@r$l3!vzFjfRIwA zlcZ>og;W89L`mo+48GK|48ycjz*p0W6C?N{=7!{7P(@j2^2twv9=Lz~50FgY-a8+R zZ@g7UOtXW;Mt@voLfW_(K3E8?cpn1muWFO_LL@i7|Ds*b+=< zp4l;zJW067YlSpG0#e&rFmAKtCf}J8TyqVfK%krrXBKW9z@Al(C60n znM}}`R5b(p3<9gLua@M1YAiB(OI2`l;zQis3dG0woxhEL z{tGLw6WqyR9ylYi@=`F4h_T}F-z^}OzU9GG2fof1?hfEv<3|9ZD0+-wZtLxy4n2V& zeROXp%YUr}RmkL&(tlx@8>61fn6B&+8?j7#?7A~?u@)a7*=h+4+9uvG@GqpztxHz* z!vq9HHNhZTQ+E`g8bEDRf}$AK)Q^G$ZniSb`Z+-{89||n7Fn{k07$I9x?$SQ1chcK zYGnBk84B3LwE#enb_rdK6_Kao1h;dGd>jTefl<)paWd#A4IDR$@a^kx8$+(oOElGZXi_?sYdtm?2eC6w zse}g}X0mGLu?Lh-B!{bU+45<`yDy z@_(!C%WUbX0vRPJu>@Z;fJi`uO~nxfl>s>06Cw#8rX(p0YZ+rCxgt^^OMN(W&zGU1 zD&P~W0d{T#jo_BGTSjt60uGaI>Eh8PubF+5tkFxz$Da1hPt)6d}^cRiHmA78%4op!~2W^nAJ8EApQG6JnB4vy%w z0h$6W2X}WL903RG=wim)`(M-(V}dk%neBN#KW$cpH16y;FkY*o5V}HW zR-a;N(L(T<;?{*2hpu(fF#(%s+l%`|X(l7tc8f6OMDFQ*b`gU?TafaMhib8WL_;kK z7E4=*)M9RmPYxCHfr_JHC>3#FJSJLA%QK2sG@(VSnOnhDy{S{!mxYJaCQIU3@p zap6W+IG{2ICKQlXB~{pT zQR3{5_Q5T~Nl9=ep|RZ*R)5f)Y|tE4?!&eg^_F*4x-h44yef;Pxb}96vP)JGPVC_; zli(OV8z5P7YwoXP6_qv@S36HpvZ@>=alB5+Du#X)E4e*c#bVYcDdby*D+1<`XS0hu z(?pB-0f9n<3X!BPdI_lqZhH5W4X*kKTJb$b<;RplSf17KW z@IuHOSJ_6Mg%CQUBBbJxL`YRZPG*D@(FkDD(MlUTM@T#?`GNf!EWZ2IFM&lIz57!D z#278z|MX*iCt>Nay?^VY26rvfjz+L+hE2f!LdF6~8?}N>Mpq4nP2`@aNcFHjJlG_z z%!&AwSjKiw37Y^XM1RQtsNjzoq9zT2v@Tnsrie0n+^|l8ZMHRPszyB$9oB`bh2hRZ zO=8l|?}>torF<9eT+GO>kaC2rF3Z+LivW>o=_R~DFCo;Vm1RIdI|VgOa-L4J5lBp` zEFWID8rwl?-W>5z_2#hWMw^QnVo6oNt<5Nd14#*7iJr(VQGeY+Zb#n=US0MX-04_t%dH>(*)!`qdZDRjBY zvZk6KDxoGkPW`q1hGwCeIBMb%_)0f1XoAAUPO&y1E)O{4L^Px@!2ZO7wUYp(HMGgg z=31kPxM^Lsgnvy5q}h#gmj>K;2$X~Z_9UFJ3^c2PO&USgx@1*T5H%ttFd6KTt*QNf zr{#bu?v%BKO=#LnQ;*g-R)j5My2Ju3o1&RUW98_rNpXg;T+}J}S`|s}@R4hq-7D*>3#1Gu<|4>O?oS3ViP@Z$Zie?5NV z<9m0$&VPR~4z3vw298f$X0>>b4Kh-s!s9OypyzlP6S0IDkH*&+k;4GVgYh-SBfOK{X8vqc1YuYkD*a8&$g07vjk3viTB9tx8Wfv%{&6 z27euiQ|A0)))*K>-G*RxOk1nXkyx>lB>AO*MO_N&khc91qoV{aIZWgV=6tBcT@piB zA{zLB>$h!!jw=0rvS)SZDB5A@NX+cI{0Vb(G*5G}a0)_Td;KfD;ow?lfgOl&;fAB) zMzN-=$poOb11{K)#n46gxTR01R6l(P04*18Rq9~-=eIGikmQ;3FkPYH}tM?Ho}=$LH-j4~%o5r1*S zG2$))MwP(E5*VdbwA1zsL!Sd9Py~=(G{|NjP*o_65_2M3rg9xkw2{p)?OxhQ0Y=Oa z)X35fenEi4)Tt{Vg_j15iboO{!2_cOH3OpzE?yH!qW~ch=NYk_NC0zSw14$#0oE4} zFksZiot9OMj~U^FaIK{mm4|f=$A5nXb6$>C;E0P;fR~5MO#o6=W*Cs*XJ6!ygK^MI z`IR*U+UL>xQ~+t4ifPOXw$FEnSBqsdlFd=5FN}mB1R{>XDUtV_MXJL-q4GljIc0hX zHJ}iEMU!`h6*tK#&(*x_d0ku$hmh1BUpfP@RW@-Zl>v5G$>|ixdZ9SYD}Sp32bMhM zzvYw{{wdE57yj{H`83@!_~&O`m8y3p@Y2B`O_fWm+RL{c;TEi-0AHj8>fNxBz&sSJ zUsu@voEk80J&2PI>WI=X3*#V7d_QDaS#%Z`z930HU?1)#sh`H78$uRXuvx}$_{uJ( zvg0M05BINlSrB`^S5*(z27eC-YiV*d-~&yP0VwKRdj( z(Oc@U*q`-{4f!uNn~HxW#%t}ZGFGun8$q0e5!_*!`XMBFM?);(9pJJQ|B%!V5V?WdL3OeVd1BEYyA2*bwoy5dvU$DIXt@Ay|B@{ zXl~T8gD1`&)fzV8r~m#8$SR+@Pj?6F-Qjwliy}91D2%y9Ix08+%O?U7<(cD$_PBfD zKb~$^_2HwcbSH|~7oF;}A<(DLsXh~)>G|2U{&U9Xo87CX=eanJ47!))kA(;4OmCyg ziDQ_(Xyy_d3V)?wGm7nS0gdqdv@At8#sp6DQu0T2ZPBeQS$LME;H|HXToj8;cH=zh z(II}8>2PkTU%2_nx`#ep<|e zm;t{=;I@|05UE58wMgQ!ACJm;ikrs)gLCLYJKEZo$5Kse?BJpn3}%7dufLX0gz$b)KD4U&l@u77kjT z^bva{6n{UGRNwnjCyTHji8wRtyj)iOIrfnv* zU{4t2qm$u|P=}NQt;&yShkS7f5PfdA-I?!SVt+_&K+O8gt5T_3vUQiCTR9)Wal-dk zjxC>g^7!$iXZD<3>-C0k$KrIJFc4COCyjxybG`M;YeUY5IIgF1k4*HZm-A6prXc(H zaDSse$iMw|bRoNNkxvKZMHtwFgF!*mz}6kGkn#riYjNGN4;Bz|3MZbiOyUWHm1B`8 zmVday9?SD;2GJr2%U1+bL#i;*OVS%=HB8bQW+>J$5gwX5%+MU@CE?H5{1y&1or2Ts z4oM4HE6d7Sbc)Wh7R_{(eNp%~o)h5i?N`Tdd{Srb6Fnz@cvOZju?NJ1A|L_oMhOYP zN=4v=C<8>vHmk${>ruiP7? z=yEcah9xec8$d1;=^ujD$!$Z4wH{u=OuAh+A63Ixt^MgX5FNggA!9B^oUvOXfk%6~ z4VEcEL~1)_sPhgz-BuZdEqhjn#gfY00lGSR^jHe49KU3gT`rzvq05I;S+N*P$$yzG zvlx2{4iKQ&ZXm(ht$}y_;(k{GOcZwPe0TR<> zwag-jJAp!!({19BL_umCNi7QUA}5v9KmZYVsH3IjoaHrkyBrg7Kg7u9!ofuK8jF!K zVjT~{xg!XCOh9R}pl(bIDEhNz+pp?rj45M)k4ga=$ni9UM-Xee|8bZIk-5|#9e z(u?Up5y&_qs0i1j5IssLcS-cn=PJ>ILb=sN1?yIJYbKRR0t*84kpv6>53M5!D0Af% z%$4$7jZKF-xIR?71Kd$nca$PmEUQvCUlTA_{**D?(DEI`Tmi(-SB{?rVSfVI#ENTq zlqEA6+Mv6CN_AI`?@6Bf2cb^C-oc2mTwAmf=pOfu>m zO9?33NDZ4(Xn8nEd2TqI#QA?UG<3*)4aQb$IOr$7T9eXgQ`(s)8L0vB{>nUH`J zSu?3)23B)ge-B7uM_5f^9x^{FleouOMp#7@Hw;JKtZuESEEa21$bWQExV-9WSH0?} zHF^|t5lD>P26(H>o29E8XjP>{z~FW;s6E`Tyi+xmNPmEy(wQB=RJXguBe~s$2S$5f zB>e&42Oj1VjoaNh=`Tk`i`!_k!39-Wnc*%ee$*4WuwRTrYTg&aB}y5KrW5+p=t;Uqy0b$v6wi%eF@P?+ho{r1|W7+ile!5n2p@r8s zon0{8PB8fm-ge7$+QJ)}o@<0Q8YaK&%d+WH7GB?U=7nk}^*ox$uIWMRxgIbuY*{#S z5Vx9*wD1PGfC*?0axmgCwQU8-EIyEvKoH*mG`GJ-5oPl6q>* zDw^}8n!IbG8XmQ%o9`AHt)e$p)p($5rPyk_gBBU-POkDqcdDdDu}*D0>e~*^!FsyTn+2V@+1V z%kK!V(|XL77lq%JO)hN-5>bq2_AFLKreyyyXBJ!rvcw4lh`Yu%}BD*dTEnaJC+oLQp1L}K` zPpLNh35rGP3(qA{7JiqU-~iXD-YbL-_4t#7$kU;1L9 zU4V~TJl(wvC-gRlka243z>^Ut7qfz7M<)a+ap?_{&5J32o41Dn1`J zUE4{KCYLygHL#KGB<;W7HD9G`wWmGoCB)}`_@3i)WATfugi!V||$?2naOXZk{SgnoDv7@*S9I zq5;Kj=!XH0yr2tQ(hZO`^0d{Wf}@YSbFYv;?x0S8p$YatG{H5{rLwtpNwySO=C_{c zmeFIDlfqnW2hhO)GvG+&JwRhS3P(W@`cdeOV1(!Bj|BO)@8Q7pL5v`PfzvqKiQ~6@ z0k53m*cqJa$U?Gp>Na@&zedd{XOfa%ea!%A>h^3+`{<%M)e+#vX>J~2DHzv%&MQ1# z6nmO~QLRC7l}=*k#W~J6srsll8NrN0q>i6IYRZj!Rq6*#!T_pMPWiT=%1Pt-6DQz7 zL-L%Hhk~w+9&e!W4SC3_f@#ouDOBp(aQ7cr>@*Mm!c6`1H?Nw(Y&k1B1GHuuhuED& z(WHYLD?R(Lb`tK-t&_YU>w*De>%(I-{)9m8%`sbB>n`QULkh0!(v-`%F;H8GrLW+HrVq=>j z@FHxKGkzN+80bymU?YZG__lD^^+sLZ|0LS|#rLnXf2W!EH_cktsq{Ah009600{~Ey zskaRdN)B5UKM?=`tW5v_766kWzZie)Tv>DzSDIF4eVH>e5B)HYdC56_W^#CF=3x#G zos-i^=OmqoZaQJQ(Dj0Kfhl~I|Y%T~E-q$O zP9zdM<@x#fteU9jY2w_hnrMsDT*6ukpRGV6796(?IaQSnG3)7ZLqmTqe9&C4TBVmY z^GcsukrkpqAke3j@szQvR;#)0ae|GuYUS-bWu3fja6r%L5W#GuP|wrEx%9Awr%7ph zb+TJLO^u?{<#KVFOIQOwvU9*kNEQ9Ar+i1xIU!Yly0>Z%YO;hTo~Ma(VS%Tq>r)x4cJMUy z;?i_{maxW-pA)Q>0!v4g0byl zR(uBPKZE{+u8}CuM<=jr`Q|W(4`nIlvkW~v2de8TNdgfs~zX|~Xj2s;JYt!_zCzN$!w=M=kS{7iJ5Wtj0q zC>f!|iO@JuCF6g`pj4|W^9^E=L3}!96?ukC;mN*)!ygH07TlUh)Q?vDk))9t;c3$S zTF+q31lx^q=tLYEm>p7EFn)NNraqNtpfVBaj4(;)psVPxSxc*LHFHfAg<9UMKDCWsgGHZxz{<>KNmOzQZ-#PqkCUV6+dFse zWPR6UzLj#l>C)dy#B#286WZdM##!;{=|ln-F_VbTCgxG*r>AF7{~hq*%wqPyQ;h9$ z%9Obslgx@rn3m_V95CMEy75Sb2f=4?ZYEd%dG&u|x<*@Dt+no)qWpa@2b8fop`uk} zEf-RC=SYpBNT?_(RFn%PMXZjZywKCJhi8Y|#r*k5Vd0EF2tJ&VZx!%7`>k%jQk{C_ z+1c2y6tNS9Qe?NPv1?GCwx?vjRjm@Awu^?xY{Ll>3Qqr=&r9vS1_aFb_KeqqqM-_)~LEACI zuM-I9mJ)`6%H4&EMDl*KTOfFT%@3ayu6nZa9z5|P zto&f@i_ZxT<_QIYyn}gyB?uKx{A=Q~qWFJLoxJ_!pZ(`MFR#ge;kl3BT=U}>);uQ= z?0f#F41FIQ^xxR8DXaYams>X!?)sn%+nv8I+xmg7syNesgzs7K{^w<{tlM36i_SqRjYdqgI;5e-s_D_THNDS&169F|Wm_$*Or2ns9Z~i@CeDX5Xtf5C06M z`RMCJK+PkCD1{Fj{~6NhZHjuk7?GcRdmG{#+2do?`_}^y9EEcS4^$;qLvA_#i{XYp z#>P$L!UO#`jI9?qd^k_M|Jngd{a$~M>>`JcOHyLIeZem;WcDe1lsiw}waoEJ*}{F&-1 z=K3y@!9BXbjs-u@Gf~a8Z^nupoS7pB;hW3BW{UG2>#?lY1R0ci>lwqn*F9;SPq{f*7KB@Rmt*-WfuIYfGc9*WH z+|pET>nYC~|KU!&C*W>AsSCkpfr(vH0 zg!`f+LC1(+d%@b78RHL#d1 zp8PbApLC4kemc3x&z(VG6(17MS6?g`xL$-DK{{vzABRc=7bCOay~a~s(JlhNCIba} z!z;rUV|wftHeI7Oo(_N6%}l6)(IGOQscbPBcs7xzGa2-mn(1x}>_b5#zpZI4QJ?!Q zr4~`GS5brha94`)L;MS`Svuu3kV1D~$;F=oZo27RTzNFq?H3>+ZT(MYX9j3z z*XU4Ku&fIkD|Q!@9@PD@02pX;_A${-vLDm%b?(vy!{u%bj5)WUDLDJ~1`9Qf+7mH_ z@SDJehrK!TLW(ED+?U&~vTTp%Dh<8fj zg!+whN9=7E?nQSB3}UE;F6S=eFOM54p^h&M-i2TUA227(y9$SBuYZ+eM@SzT;AWkM zxBRkre|hwcH$#-ZXyLSPpR1zre)o%KOx`KM%V>KfVqdfgVtJ?aQA(~BmE?K?DnAs) z6nhIPM#)WYpX;H4mtC7lF-y1VDDQIGDv~XUmp@+RGa>b02E>)Vi5GBJeVCjsbag8p zEH81rcZJzc_`pbn(+hC1ui9ffwhOnNnC6xH1eKTL0v4lgRpwH8hD6|Q{(ly zc7FQ`3Ypn85`cL?(vlOJ7GThClB!ef7De_yVtyf5mPvXrwnXlIE&6RC-(?Iw=R-Q+ zBZ&4PNJZJ|jjHqPX!>c^H`~i=eX~%g4YTD{9bw^nxV4}kt^H^B50=q33s2Uwwx$MO z#}@^?vv0e;{K?+EUS=Ty86|4Rrg-)DEDOIO6c6ng(3}+UPP+9NX4w+{Fhe#XX}6CO z{L3*>b3jt{*lWj|UK~po_U#KoAfT@L-dkLJ1s(!&K4KU?E|kA1S#s$`~U zYfltq8aJH%>hFelp>P(WRDjM9I$`C4Say!nX0wx9dvQ=mMPEAMuQ3p@y_`;CC=Vq% zc-WBZ1HBObA~&fSau}~O13*(kB%7csafi#&H}5WzE`(OR+MW?ogB(vI`33N0iwqP4 z(Nv*Bh+|y5oJ^aKo|HulTcl{I^F#5%y)EC5xa0}B=We^H)>VE%LB1w=7Xh~!_tFG{ zE-LyySDID1iZPo{#LZDl%rJ$#zoe5or0B^u^yHd!h{5be7yk(Tx~7cgjy#vwcE{il zbQOeK*w>+nRm(&2JJ=g6qTj~Sy00i^F6LHVQ}L zl+gKfN}&0b9h!}16?DvWkC)fG$M zr#_m*3iEEatDiqlg;M8imQe_j5ahLy7pjS}Ywd_lVHX92?#cIq=0huMU%JEi%L9gq zu=Qr=g8N#pwc&GG3z=!`8?s?Sd|?YX7}M-+EFJ$jw4p5PBI+~o3YV@_cUQMTkJek) zxU=u$${u(WrzEdlt7U$oa@{aa$I~{ASs%^7vW|(V;77MBf7)a|wt&!0uiM3}nz0em z9CGbSvWo+VVO9;B9qykTT6Mhh*o6H`EQb1DM#kBUWD`-@?=KpfK4?ZINu(2T$?&(k z5``JjaOeHCUYZr^OVm%jb-J%WMD$6o71nP|+|De|*=k3b$jb6`(4I9K^DW71GpT+d zl>dV4UGw|c|1ruc7HWH(HXace9&AA1gexAEMHvv3uP>W#Shl#h(xf13u3|55M27!< zyU<5Sti01XbTl;>0?7DtE*v)FmgncaWc3Ky3maKktP!&EsglBP@1XWMtFSbPrBv(I zvwVoEfwkOyttkh@b>BJji=Ak6Yohw#aHdVfl~`@TVxf9Ou`qqrJ)_4bHlej7)uo9q;G2)G zRBoUswc-|@mA-;`Y~zR;u7x?9!cn&{x2&akm#^yKg(>wX11`yb46#s#C#3NK(q$uAVL$PtT-wP1bA8#HE<&Wi0|k5QdPSsTk`zP z)aivj8N)2lk1AahyUwzNOP8=~ku+J~4I{I>XQt07m3Ix#+37ZKD5|EHozmw~6h3#1!=+IJ9^44r|HMI{J&69e34{7)GBg z*Q4eof{#6#tH%xSUnw&d`Zff|8`Ea92nMw8K`HjVH^wb93?`b21y@DYtJSH(0Bf@i zlenzqpb%CMN2v?0i9ALdRO_0iZ@i4G>64OdODS4>Br#`Oe#o(4U=P2MN6+3%Rdcmu zT$wKI;_lD%(2IT?4G!u%F^p-d?eX@}xYekUAM+~8rRmIBq^8KMuB)OW7yd8tZ8W54ozd|;4P1FB zDmbUGfMe5g0H@B_YWDG|KoT837GJFwH78KunD{YpNQ+8DT&@>SpSgJ^uXqeZ*glqw zAhDJW+Lu)I+mAVTh=|FQ+SciRCa!V)w&bN=T--Y7S}cAvh)Vy8pwG2JSkm&r^1p3u zM@l!~0>IpFeHd8cnYDhPT5zbb32c<9x0~DncNozd*X}T_6PnCW=QB!s_(^9+IOOLI ziq{j|e!hkcQ$h12Y52bIq>=|X|D9dSWfwS_IQrq0<9pPHtkUC4^yV?$`aHqyy@hDB z-wonRo4Xz-9n+Sx8H%e`v}s3%%)=giuj6rB>OA@>TX$5MI!BKwO}?_?ZRU3NoF_3d z+x%;#(Ea)j=?1MeV~N$kzn2H$r&px(F^HNbn&B!#Sxu!c7!qpqeaBR{kGW`GLH4r~)ycu$AzFoHm? zNDzqogo69WxWxbsUrxZU?j6HFnruL#-WXhS?=+KKFAWxUKXq9=&ip|GHtJzuckh!B z4{(tv0glE1_E;Xk^TZtpKHb=eKLb>pl>I|Chk-$$+A|=~3C;H}qlyA%h(f&oO91{W z52|=}LI++u=~4ivlcl==C}FEK6jhx^c P<-q+$5!&U-KhXaHGTmt$