diff --git a/DDWFHMX.cs b/DDWFHMX.cs index 2ddb5e8..79336a3 100644 --- a/DDWFHMX.cs +++ b/DDWFHMX.cs @@ -65,10 +65,11 @@ namespace GZ_LTHReportForms.ReporyDDWFH header.AddChild("客户", new LocaleValue("客户"), SqlStorageType.Sqlnvarchar); header.AddChild("项目名", new LocaleValue("项目名"), SqlStorageType.Sqlnvarchar); header.AddChild("物料编码", new LocaleValue("物料编码"), SqlStorageType.Sqlnvarchar); - header.AddChild("物料名称", new LocaleValue("物料编码"), SqlStorageType.Sqlnvarchar); + header.AddChild("物料名称", new LocaleValue("物料名称"), SqlStorageType.Sqlnvarchar); header.AddChild("规格型号", new LocaleValue("规格型号"), SqlStorageType.Sqlnvarchar); header.AddChild("数量", new LocaleValue("数量"), SqlStorageType.SqlDecimal); header.AddChild("含税单价", new LocaleValue("含税单价"), SqlStorageType.SqlDecimal); + header.AddChild("价税合计", new LocaleValue("价税合计"), SqlStorageType.SqlDecimal); header.AddChild("已发货数量", new LocaleValue("已发货数量"), SqlStorageType.SqlDecimal); header.AddChild("已发货金额", new LocaleValue("已发货金额"), SqlStorageType.SqlDecimal); header.AddChild("未发货数量", new LocaleValue("未发货数量"), SqlStorageType.SqlDecimal); @@ -107,6 +108,7 @@ namespace GZ_LTHReportForms.ReporyDDWFH * INTO {3} FROM GZ_DDWFHMX_TH + WHERE [未发货数量] <> 0 AND [未发货数量] > 0 ORDER BY [日期] ", FstartDate, FEndDate, FSaleOrgId, tableName); DBUtils.Execute(this.Context, sql); @@ -115,8 +117,9 @@ namespace GZ_LTHReportForms.ReporyDDWFH public override List GetSummaryColumnInfo(IRptParams filter) { var result = base.GetSummaryColumnInfo(filter); - result.Add(new SummaryField("数量", BOSEnums.Enu_SummaryType.SUM)); - result.Add(new SummaryField("含税单价", BOSEnums.Enu_SummaryType.SUM)); + //result.Add(new SummaryField("数量", BOSEnums.Enu_SummaryType.SUM)); + //result.Add(new SummaryField("含税单价", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("价税合计", BOSEnums.Enu_SummaryType.SUM)); result.Add(new SummaryField("已发货数量", BOSEnums.Enu_SummaryType.SUM)); result.Add(new SummaryField("已发货金额", BOSEnums.Enu_SummaryType.SUM)); result.Add(new SummaryField("未发货数量", BOSEnums.Enu_SummaryType.SUM)); diff --git a/GZ_LTHReportForms.csproj b/GZ_LTHReportForms.csproj index 4389381..8bfa4c7 100644 --- a/GZ_LTHReportForms.csproj +++ b/GZ_LTHReportForms.csproj @@ -46,6 +46,18 @@ ..\..\GZ_LTHYJZZHTH\bin\Debug\Kingdee.BOS.DataEntity.dll + + ..\..\派诺报表-裴豪\派诺报表\代码\Piolot_RepotForm\Pilot.Report.Exploitation\bin\Debug\NPOI.dll + + + ..\..\派诺报表-裴豪\派诺报表\代码\Piolot_RepotForm\Pilot.Report.Exploitation\bin\Debug\NPOI.OOXML.dll + + + ..\..\派诺报表-裴豪\派诺报表\代码\Piolot_RepotForm\Pilot.Report.Exploitation\bin\Debug\NPOI.OpenXml4Net.dll + + + ..\..\派诺报表-裴豪\派诺报表\代码\Piolot_RepotForm\Pilot.Report.Exploitation\bin\Debug\NPOI.OpenXmlFormats.dll + @@ -65,6 +77,15 @@ + + + + + + + + + diff --git a/YSKDZGongNeng_JY/LiteVersionPlugIn.cs b/YSKDZGongNeng_JY/LiteVersionPlugIn.cs new file mode 100644 index 0000000..8ea8c6b --- /dev/null +++ b/YSKDZGongNeng_JY/LiteVersionPlugIn.cs @@ -0,0 +1,467 @@ +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Report; +using Kingdee.BOS.Core.Report.PlugIn; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using NPOI.HSSF.Util; +using NPOI.SS.Formula.Functions; +using NPOI.SS.UserModel; +using NPOI.SS.Util; +using NPOI.XSSF.UserModel; +using System; +using System.ComponentModel; +using System.Data; +using System.IO; +using System.Linq; +using System.Security.Cryptography; + +namespace Pilot.Report.Exploitation.AccountsReceivable +{ + /// + /// 【表单插件】简易版-按钮触发 + /// + [Description("【表单插件】简易版-按钮触发-导出EXCEL"), HotUpdate] + public class LiteVersionPlugIn : AbstractSysReportPlugIn + { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + // 判断 应收对账单【简易版】按钮 + if (e.BarItemKey == "Test_Button_1") + { + string FPath = "应收账款对账单【简易版】.xlsx"; + + // 在临时文件目录,生成一个完整的文件名: C:\Program Files\Kingdee\K3Cloud\WebSite\...\JD.xls + string filePath = PathUtils.GetPhysicalPath(KeyConst.TEMPFILEPATH, Path.GetFileName(FPath)); + // 生成一个供用户下载文件的url地址: http:\\localhost\K3Cloud\...\JD.xls + string fileUrl = PathUtils.GetServerPath(KeyConst.TEMPFILEPATH, Path.GetFileName(FPath)); + //打开文件下载界面 + DynamicFormShowParameter showParameter = new DynamicFormShowParameter(); + showParameter.FormId = "BOS_FileDownload"; + showParameter.OpenStyle.ShowType = ShowType.Modal; + showParameter.CustomComplexParams.Add("url", fileUrl); + //显示 + this.View.ShowForm(showParameter); + + var reportModel = this.SysReportModel; + + //单据头 + var rptTitles = reportModel.ReportTitles; + string fClient = rptTitles.FirstOrDefault(a => a.TitleKey == "FClient").TitleValue.ToString(); + string fDate = rptTitles.FirstOrDefault(a => a.TitleKey == "FDate").TitleValue.ToString(); + string fProject = rptTitles.FirstOrDefault(a => a.TitleKey == "FProject").TitleValue.ToString(); + string FState = rptTitles.FirstOrDefault(a => a.TitleKey == "FState").TitleValue.ToString(); + //单据体 + var list = reportModel.DataSource.Rows; + + string sqlTest = string.Format(@"/*dialect*/Select FAmount,FDate From MBBA_t_Cust100006 Where Month(FDATE) = Month(DATEADD(MONTH, -1, '{0}'))", fDate); + + var sqlTestList = DBUtils.ExecuteDynamicObject(Context, sqlTest); + + int Num = 0; + decimal fAmount = 0; + string fDate2 = ""; + if (sqlTestList.Count() > 0) + { + Num = 1; + fAmount = Math.Round(Convert.ToDecimal(sqlTestList[0]["FAmount"]),2); + fDate2 = sqlTestList[0]["FDate"].ToString().Split(' ')[0]; + } + + Main(filePath, fClient, fDate, fProject, list, Num, fAmount, fDate2, Context); + } + } + + /// + /// 赋值EXCEL + /// + static void Main(string outputFilePath, string fClient, string fDate, string fProject, DataRowCollection list, int Num, decimal fAmount,string fDate2, Kingdee.BOS.Context Context) + { + #region Excel代码 + + string filePath = @"D:\KingdeeModel\对账单模板.xlsx"; + FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read); + IWorkbook workbook = new XSSFWorkbook(file); + file.Close(); + + //获取工作簿中的第一个工作表(索引为0) + ISheet sheet = workbook.GetSheetAt(0); + + #endregion + + #region 单元格样式 + + // 创建一个单元格样式------------------------------- + ICellStyle cellStyle = workbook.CreateCellStyle(); + + // 设置边框样式 + cellStyle.BorderTop = BorderStyle.Thin; + cellStyle.BorderBottom = BorderStyle.Thin; + cellStyle.BorderLeft = BorderStyle.Thin; + cellStyle.BorderRight = BorderStyle.Thin; + // 设置水平居中对齐 + cellStyle.Alignment = HorizontalAlignment.Center; + // 设置垂直居中对齐 + cellStyle.VerticalAlignment = VerticalAlignment.Center; + + // 创建一个单元格样式--------------------------------- + ICellStyle cellStyle2 = workbook.CreateCellStyle(); + + // 设置边框样式 + cellStyle2.BorderTop = BorderStyle.Thin; + cellStyle2.BorderBottom = BorderStyle.Thin; + cellStyle2.BorderLeft = BorderStyle.Thin; + cellStyle2.BorderRight = BorderStyle.Thin; + + // 创建单元格样式--------------------------------------- + ICellStyle style = workbook.CreateCellStyle(); + + // 设置边框样式 + style.BorderTop = BorderStyle.Thin; + style.BorderBottom = BorderStyle.Thin; + style.BorderLeft = BorderStyle.Thin; + style.BorderRight = BorderStyle.Thin; + + // 创建字体并设置为加粗 + IFont font = workbook.CreateFont(); + font.IsBold = true; // 设置字体加粗 + + // 将字体应用到单元格样式 + style.SetFont(font); + + // 创建单元格样式--------------------------------------- + ICellStyle style2 = workbook.CreateCellStyle(); + + // 创建字体并设置为加粗 + IFont font2 = workbook.CreateFont(); + font2.IsBold = true; // 设置字体加粗 + + // 将字体应用到单元格样式 + style2.SetFont(font2); + + // 创建一个单元格样式------------------------------- + ICellStyle style3 = workbook.CreateCellStyle(); + + // 设置边框样式 + style3.BorderTop = BorderStyle.Thin; + style3.BorderBottom = BorderStyle.Thin; + style3.BorderLeft = BorderStyle.Thin; + style3.BorderRight = BorderStyle.Thin; + // 设置水平居中对齐 + style3.Alignment = HorizontalAlignment.Center; + // 设置垂直居中对齐 + style3.VerticalAlignment = VerticalAlignment.Center; + // 创建字体并设置为加粗 + IFont font3 = workbook.CreateFont(); + font3.IsBold = true; // 设置字体加粗 + // 将字体应用到单元格样式 + style3.SetFont(font3); + + #endregion + + #region 获取金额汇总数据 + + decimal YFHpriceSum = 0; + decimal YFPpriceSum = 0; + decimal priceSum = 0; + + for (var i = 0; i < list.Count; i++) + { + if (list[i]["Number"].ToString() == "合计") + { + YFHpriceSum = Math.Round(Convert.ToDecimal(list[i]["ShippedDebt"]), 2); + YFPpriceSum = Math.Round(Convert.ToDecimal(list[i]["InvoicedDebt"]), 2); + priceSum = Math.Round(Convert.ToDecimal(list[i]["ShippedDebt"]) + Convert.ToDecimal(list[i]["InvoicedDebt"]), 2); + } + } + + #endregion + + #region 四行一列修改/六行二列修改/十一行一列修改/十二行一列修改 + + IRow row = sheet.GetRow(3); + IRow row2 = sheet.GetRow(5); + IRow row22 = sheet.GetRow(6); + IRow ro = sheet.GetRow(11); + ICell cell = row.GetCell(0); + ICell cell2 = row2.GetCell(1); + ICell cell22 = row22.GetCell(8); + ICell cel3 = ro.GetCell(0); + IRow row3 = sheet.GetRow(10); + ICell cell3 = row3.GetCell(0); + //将新创建或获取的单元格的值修改 + cell22.SetCellValue(""); + var YFHpriceSumZW = ToChineseNumber(YFHpriceSum, Context); + cell3.SetCellValue("贵公司截至 " + fDate + " 共欠我公司货款金额为:" + YFHpriceSum + "元【等于已发货欠款总额】(大写:" + YFHpriceSumZW + ")"); + //将新创建或获取的单元格的值修改 + cell.SetCellValue("尊敬的 " + fClient + " 客户您好,我公司已根据合同/订单的要求向贵公司交付相关产品并请验收确认,鉴于我公司对贵公司已通知发货部分的交付义务已完成,"); + cell2.SetCellValue(fClient); + var fAmountZW = ToChineseNumber(fAmount, Context); + if (Num > 0) + { + cel3.SetCellValue("其中上期(截止" + fDate2 + "共欠我公司货款金额为:" + fAmount + "元(大写:" + fAmountZW + ")"); + } + else + { + cel3.SetCellValue(""); + } + #endregion + + #region 明细赋值 + + // 将字体应用到单元格样式 + style2.SetFont(font2); + int n = 14; + + for (var i = 0; i < list.Count; i++) + { + string date = string.IsNullOrWhiteSpace(list[i]["DATE"].ToString()) ? "" : list[i]["DATE"].ToString().Split(' ')[0]; + decimal OrderAmount = Math.Round(Convert.ToDecimal(list[i]["OrderAmount"]), 2); + decimal ShipmentsAmount = Math.Round(Convert.ToDecimal(list[i]["ShipmentsAmount"]), 2); + decimal FBillAllAmount = Math.Round(Convert.ToDecimal(list[i]["FBillAllAmount"]), 2); + decimal OrdeFALLAMOUNTFORrAmount = Math.Round(Convert.ToDecimal(list[i]["FALLAMOUNTFOR"]), 2); + decimal PaymentAmount = Math.Round(Convert.ToDecimal(list[i]["PaymentAmount"]), 2); + decimal ShippedDebt = Math.Round(Convert.ToDecimal(list[i]["ShippedDebt"]), 2); + decimal InvoicedDebt = Math.Round(Convert.ToDecimal(list[i]["InvoicedDebt"]), 2); + + IRow rowi = sheet.CreateRow(13 + i); + ICell c1 = rowi.CreateCell(0); c1.SetCellValue(list[i]["Number"].ToString()); c1.CellStyle = cellStyle; + ICell c2 = rowi.CreateCell(1); c2.SetCellValue(""+date+""); c2.CellStyle = cellStyle2; + ICell c3 = rowi.CreateCell(2); c3.SetCellValue(list[i]["CONTRACTNUMBER"].ToString()); c3.CellStyle = cellStyle2; + ICell c4 = rowi.CreateCell(3); c4.SetCellValue(list[i]["ProjectName"].ToString()); c4.CellStyle = cellStyle2; + ICell c5 = rowi.CreateCell(4); c5.SetCellValue(""+ OrderAmount + ""); c5.CellStyle = cellStyle; + ICell c6 = rowi.CreateCell(5); c6.SetCellValue("" + ShipmentsAmount + ""); c6.CellStyle = cellStyle; + ICell c7 = rowi.CreateCell(6); c7.SetCellValue("" + FBillAllAmount + ""); c7.CellStyle = cellStyle; + ICell c8 = rowi.CreateCell(7); c8.SetCellValue("" + OrdeFALLAMOUNTFORrAmount + ""); c8.CellStyle = cellStyle; + ICell c9 = rowi.CreateCell(8); c9.SetCellValue("" + PaymentAmount + ""); c9.CellStyle = cellStyle; + ICell c10 = rowi.CreateCell(9); c10.SetCellValue("" + ShippedDebt + ""); c10.CellStyle = cellStyle; + ICell c11 = rowi.CreateCell(10); c11.SetCellValue("" + InvoicedDebt + ""); c11.CellStyle = cellStyle; + ICell c12 = rowi.CreateCell(11); c12.SetCellValue(list[i]["IsEnded"].ToString()); c12.CellStyle = cellStyle; + ICell c13 = rowi.CreateCell(12); c13.SetCellValue(list[i]["Remark"].ToString()); c13.CellStyle = cellStyle2; + n++; + if(list[i]["Number"].ToString() == "合计") + { + c1.CellStyle = style3; + c2.CellStyle = style3; + c3.CellStyle = style3; + c4.CellStyle = style3; + c5.CellStyle = style3; + c6.CellStyle = style3; + c7.CellStyle = style3; + c8.CellStyle = style3; + c9.CellStyle = style3; + c10.CellStyle = style3; + c11.CellStyle = style3; + c12.CellStyle = style3; + c13.CellStyle = style3; + } + } + + #endregion + + #region 赋值汇总数据行 + + //获取工作簿中的第一个工作表(索引为1) + ISheet sheet2 = workbook.GetSheetAt(1); + IRow rr1 = sheet2.GetRow(15); + IRow rr2 = sheet2.GetRow(16); + IRow rr3 = sheet2.GetRow(17); + ICell cc1 = rr1.GetCell(6); + ICell cc2 = rr2.GetCell(6); + ICell cc3 = rr3.GetCell(6); + cc1.SetCellValue("" + YFHpriceSum + ""); + cc2.SetCellValue("" + YFPpriceSum + ""); + cc3.SetCellValue("" + priceSum + ""); + + #endregion + + #region 明细行后模板赋值 + + IRow R1 = sheet2.GetRow(15); + IRow R2 = sheet2.GetRow(16); + IRow R3 = sheet2.GetRow(17); + IRow R4 = sheet2.GetRow(18); + IRow R5 = sheet2.GetRow(19); + IRow R6 = sheet2.GetRow(20); + IRow R7 = sheet2.GetRow(21); + + IRow r1 = sheet.CreateRow(n); + IRow r2 = sheet.CreateRow(n + 1); + IRow r3 = sheet.CreateRow(n + 2); + IRow r4 = sheet.CreateRow(n + 3); + IRow r5 = sheet.CreateRow(n + 4); + IRow r6 = sheet.CreateRow(n + 5); + IRow r7 = sheet.CreateRow(n + 6); + + //第一行 + for (int i = 0; i < R1.LastCellNum; i++) + { + var test1 = ""; + if (R1.GetCell(i) != null) + { + test1 = R1.GetCell(i).ToString(); + } + ICell CR1 = r1.CreateCell(i); + CR1.SetCellValue(test1); + if (i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9) + { + CR1.CellStyle = style; + } + else + { + CR1.CellStyle = style2; + } + } + + //第二行 + for (int i = 0; i < R2.LastCellNum; i++) + { + var test1 = ""; + if (R2.GetCell(i) != null) + { + test1 = R2.GetCell(i).ToString(); + } + ICell CR1 = r2.CreateCell(i); + CR1.SetCellValue(test1); + if (i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9) + { + CR1.CellStyle = style; + } + else + { + CR1.CellStyle = style2; + } + } + + //第三行 + for (int i = 0; i < R3.LastCellNum; i++) + { + var test1 = ""; + if (R3.GetCell(i) != null) + { + test1 = R3.GetCell(i).ToString(); + } + ICell CR1 = r3.CreateCell(i); + CR1.SetCellValue(test1); + if (i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9) + { + CR1.CellStyle = style; + } + else + { + CR1.CellStyle = style2; + } + } + + //第四行 + for (int i = 0; i < R4.LastCellNum; i++) + { + var test1 = ""; + if (R4.GetCell(i) != null) + { + test1 = R4.GetCell(i).ToString(); + } + ICell CR1 = r4.CreateCell(i); + CR1.SetCellValue(test1); + CR1.CellStyle = style2; + } + + //第五行 + for (int i = 0; i < R5.LastCellNum; i++) + { + var test1 = ""; + if (R5.GetCell(i) != null) + { + test1 = R5.GetCell(i).ToString(); + } + ICell CR1 = r5.CreateCell(i); + CR1.SetCellValue(test1); + if (i >= 4) + { + CR1.CellStyle = style2; + } + } + + //第六行 + for (int i = 0; i < R6.LastCellNum; i++) + { + var test1 = ""; + if (R6.GetCell(i) != null) + { + test1 = R6.GetCell(i).ToString(); + } + ICell CR1 = r6.CreateCell(i); + CR1.SetCellValue(test1); + if (i >= 4) + { + CR1.CellStyle = style2; + } + } + + //第七行 + for (int i = 0; i < R7.LastCellNum; i++) + { + var test1 = ""; + if (R7.GetCell(i) != null) + { + test1 = R7.GetCell(i).ToString(); + } + ICell CR1 = r7.CreateCell(i); + CR1.SetCellValue(test1); + if (i >= 4) + { + CR1.CellStyle = style2; + } + } + + //合并单元格 + for (int i = 0; i < 7; i++) + { + // 合并单元格的起始行、结束行、起始列和结束列 + int firstRow = n + i; // 比如第一行 + int lastRow = n + i; // 合并到第三行(0-based index) + int firstCol = 4; // 比如第一列 + int firstCol2 = 7; // 比如第一列 + int firstCol3 = 0; // 比如第一列 + int lastCol = 5; // 合并到第三列(0-based index) + int lastCol2 = 9; // 合并到第三列(0-based index) + int lastCol3 = 3; // 合并到第三列(0-based index) + // 创建CellRangeAddress对象 + CellRangeAddress cellRangeAddress = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol); + CellRangeAddress cellRangeAddress2 = new CellRangeAddress(firstRow, lastRow, firstCol2, lastCol2); + CellRangeAddress cellRangeAddress3 = new CellRangeAddress(firstRow, lastRow, firstCol3, lastCol3); + // 合并单元格 + sheet.AddMergedRegion(cellRangeAddress); + sheet.AddMergedRegion(cellRangeAddress2); + sheet.AddMergedRegion(cellRangeAddress3); + } + + #endregion + + #region Excel代码2 + + string folderPath = Path.GetDirectoryName(outputFilePath); + if (!Directory.Exists(folderPath)) + { + Directory.CreateDirectory(folderPath); + } + FileStream exportFile = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write); + workbook.Write(exportFile); + exportFile.Close(); + + #endregion + + } + + public static string ToChineseNumber(decimal number, Kingdee.BOS.Context Context) + { + //Select top 1 dbo.ConvertAmountToChineseWords(12345.14) as 'PriceText' From T_SAL_ORDER + string sql = string.Format(@"/*dialect*/Select top 1 dbo.ConvertAmountToChineseWords({0}) as 'PriceText' From T_SAL_ORDER", number); + var list = DBUtils.ExecuteDynamicObject(Context, sql); + return list[0]["PriceText"].ToString(); + } + } +} diff --git a/YSKDZGongNeng_JY/ProgramNumber.cs b/YSKDZGongNeng_JY/ProgramNumber.cs new file mode 100644 index 0000000..a23d76d --- /dev/null +++ b/YSKDZGongNeng_JY/ProgramNumber.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Pilot.Report.Exploitation.AccountsReceivable +{ + public class ProgramNumber + { + public static void Main() + { + decimal number = 1234567.89m; + string chineseNumber = ToChineseNumber(number); + Console.WriteLine($"数字 {number} 的中文大写数字是:{chineseNumber}"); + } + + public static string ToChineseNumber(decimal number) + { + // 定义数字和单位 + string[] digits = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; + string[] units = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿" }; + + // 将数字转换为整数和小数部分 + string numberStr = number.ToString("N2").Replace(",", ""); // 去掉千分位分隔符 + string[] parts = numberStr.Split('.'); + string integerPart = parts[0]; + string decimalPart = parts.Length > 1 ? parts[1] : "00"; + + // 处理整数部分 + string result = ""; + for (int i = 0; i < integerPart.Length; i++) + { + int digit = int.Parse(integerPart[integerPart.Length - i - 1].ToString()); + int unitIndex = integerPart.Length - i - 1; + + if (digit != 0) + { + result = digits[digit] + units[unitIndex] + result; + } + else + { + result = "零" + result; + } + } + + // 处理小数部分 + if (decimalPart != "00") + { + result += "点"; + foreach (char c in decimalPart) + { + result += digits[int.Parse(c.ToString())]; + } + } + + // 去掉多余的零 + result = result.Replace("零零", "零").Replace("零万", "万").Replace("零亿", "亿"); + if (result.StartsWith("零")) + { + result = result.Substring(1); + } + if (result.EndsWith("零")) + { + result = result.Substring(0, result.Length - 1); + } + + return result; + } + } +} diff --git a/YSKDZGongNeng_JY/YourDataPlugIn.cs b/YSKDZGongNeng_JY/YourDataPlugIn.cs new file mode 100644 index 0000000..37e1516 --- /dev/null +++ b/YSKDZGongNeng_JY/YourDataPlugIn.cs @@ -0,0 +1,115 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.Report.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.App.Data; + +namespace Pilot.Report.Exploitation.AccountsReceivable +{ + /// + /// 【表单插件】简易版-确认按钮 + /// + [Description("【表单插件】简易版-确认按钮-添加数据库"), HotUpdate] + public class YourDataPlugIn: AbstractSysReportPlugIn + { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + // 判断 应收对账单【简易版】确认生成单据按钮 + if (e.BarItemKey == "Test_Button_2") + { + + #region 应收账款对账单数据添加 + + var reportModel = this.SysReportModel; + + //单据头 + var rptTitles = reportModel.ReportTitles; + string fClient = rptTitles.FirstOrDefault(a => a.TitleKey == "FClient").TitleValue.ToString(); + string fDate = rptTitles.FirstOrDefault(a => a.TitleKey == "FDate").TitleValue.ToString(); + int creatorId = Convert.ToInt32(this.Context.UserId); + DateTime fDate2 = DateTime.Now; + //单据体 + var list = reportModel.DataSource.Rows; + + string sqlKH = string.Format(@"/*dialect*/Select FCUSTID From T_BD_CUSTOMER_L Where FNAME = '{0}'", fClient); + + var sqlKHList = DBUtils.ExecuteDynamicObject(Context, sqlKH); + + int fClientId = Convert.ToInt32(sqlKHList[0]["FCUSTID"]); + + string sqlTest = string.Format(@"/*dialect*/Select * From MBBA_t_Cust100006 Where FClient = '{0}' AND Month(FDATE) = Month('{1}')", fClientId, fDate); + + var sqlTestList = DBUtils.ExecuteDynamicObject(Context, sqlTest); + + if (sqlTestList.Count() == 0) + { + decimal YFHpriceSum = 0; + + for (var i = 0; i < list.Count; i++) + { + if (list[i]["Number"].ToString() == "合计") + { + YFHpriceSum = Math.Round(Convert.ToDecimal(list[i]["ShippedDebt"]), 2); + } + } + + string sqlSelect = string.Format(@"/*dialect*/Select top 1 FId,FBillNo From MBBA_t_Cust100006 Order By FID DESC"); + + var sqlSelectList = DBUtils.ExecuteDynamicObject(Context, sqlSelect); + + int FId = 1; + string FBillNo = "YSDZ0001"; + string FBillNoSplit = ""; + + if (sqlSelectList.Count > 0) + { + FId = sqlSelectList[0]["FId"].Long2Int(); + FId = FId + 1; + FBillNoSplit = sqlSelectList[0]["FBillNo"].ToString(); + int n = Convert.ToInt32(FBillNoSplit.Split('Z')[1]); + if (n < 1000) + { + FBillNo = "YSDZ" + "0" + (n + 1); + } + else if (n < 100) + { + FBillNo = "YSDZ" + "00" + (n + 1); + } + else if (n < 10) + { + FBillNo = "YSDZ" + "000" + (n + 1); + } + } + + string sql = string.Format(@"Insert into MBBA_t_Cust100006 Values('{5}','{6}','A','{3}','{4}','',null,'{0}','{1}','{2}')", + fClientId, fDate, YFHpriceSum, creatorId, fDate2, FId, FBillNo); + + int num = DBUtils.Execute(Context, sql); + + if (num > 0) + { + this.View.ShowMessage("应收账款对账单生成完毕,已存储数据库!"); + } + else + { + this.View.ShowErrMessage("数据添加失败!"); + } + } + else + { + this.View.ShowErrMessage("数据添加失败,已存在相同客户相同期间的对账单!"); + } + + #endregion + + } + } + } +} diff --git a/YSZKDZBaoBiao/AccountsReceivableFiter.cs b/YSZKDZBaoBiao/AccountsReceivableFiter.cs new file mode 100644 index 0000000..db54c91 --- /dev/null +++ b/YSZKDZBaoBiao/AccountsReceivableFiter.cs @@ -0,0 +1,27 @@ +using Kingdee.BOS.App.Data; +using Kingdee.BOS; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; +using Kingdee.BOS.Core.Metadata.FieldElement; +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.Threading.Tasks; + +namespace Pilot.Report.Exploitation.AccountsReceivableStatements +{ + [Description("【过滤表单插件】应收收款对账报表【默认全部订单】"), HotUpdate] + public class AccountsReceivableFiter: AbstractDynamicFormPlugIn + { + public override void AfterBindData(EventArgs e) + { + base.AfterBindData(e); + + this.View.Model.SetValue("F_ALL_GROUP", 1); + } + } +} diff --git a/YSZKDZBaoBiao/AccountsReceivablePlugIn.cs b/YSZKDZBaoBiao/AccountsReceivablePlugIn.cs new file mode 100644 index 0000000..fd3d63f --- /dev/null +++ b/YSZKDZBaoBiao/AccountsReceivablePlugIn.cs @@ -0,0 +1,36 @@ +using Kingdee.BOS.Core.Report.PlugIn; +using Kingdee.BOS.Core.Report.PlugIn.Args; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Pilot.Report.Exploitation.AccountsReceivableStatements +{ + [Description("【报表表单插件】应收账款对账报表【简易版】插件"), HotUpdate] + public class AccountsReceivablePlugIn: AbstractSysReportPlugIn + { + public override void FormatCellValue(FormatCellValueArgs args) + { + // 格式化日期 + base.FormatCellValue(args); + if (args.Header.ColType == Kingdee.BOS.SqlStorageType.SqlDatetime) + { + DateTime value = Convert.ToDateTime(args.FormateValue); + string afterValue = value.ToString("yyyy-MM-dd"); + args.FormateValue = afterValue; + } + // 格式化金额 汇率不格式化 + if (args.Header.ColType == Kingdee.BOS.SqlStorageType.SqlDecimal) + { + decimal value = decimal.Parse(args.FormateValue); + // 千分位 + string afterValue = value.ToString("N"); + args.FormateValue = afterValue; + } + } + } +} diff --git a/YSZKDZBaoBiao/AccountsReceivableReport.cs b/YSZKDZBaoBiao/AccountsReceivableReport.cs new file mode 100644 index 0000000..1929231 --- /dev/null +++ b/YSZKDZBaoBiao/AccountsReceivableReport.cs @@ -0,0 +1,344 @@ +using Kingdee.BOS.App.Data; +using Kingdee.BOS; +using Kingdee.BOS.Contracts.Report; +using Kingdee.BOS.Core.Report; +using Kingdee.BOS.Orm.DataEntity; +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.Enums; + +namespace Pilot.Report.Exploitation.AccountsReceivableStatements +{ + /// + /// 应收账款对账报表【简易版】 + /// + [Description("【服务插件】应收账款对账报表【简易版】取数"), HotUpdate] + public class AccountsReceivableReport: SysReportBaseService + { + /// + /// 初始化 + /// + public override void Initialize() + { + base.Initialize(); + this.ReportProperty.ReportName = new LocaleValue("应收账款对账单【简易版】", base.Context.UserLocale.LCID); + this.ReportProperty.IsUIDesignerColumns = false; + // 简单账表类型:普通、树形、分页 + this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; + this.IsCreateTempTableByPlugin = true; + // + this.IsCreateTempTableByPlugin = true; + // + this.ReportProperty.IsGroupSummary = true; + // + this.ReportProperty.SimpleAllCols = false; + // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示 + this.ReportProperty.PrimaryKeyFieldName = "FID"; + // + this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true; + + // 设置精度控制 + var list = new List + { + new DecimalControlField("FDECIMALS", "OrigInvoiceAmount"), + new DecimalControlField("FDECIMALS", "ExchangeRate"), + new DecimalControlField("FDECIMALS", "InvoiceAmountTHB"), + new DecimalControlField("FDECIMALS", "MonthEndExRate"), + new DecimalControlField("FDECIMALS", "RevaluationAountInTHB"), + new DecimalControlField("FDECIMALS", "UnrealizedGainLoss"), + }; + this.ReportProperty.DecimalControlFieldList = list; + } + + /// + /// 报表列表头 + /// + /// + /// + public override ReportHeader GetReportHeaders(IRptParams filter) + { + base.GetReportHeaders(filter); + + ReportHeader header = new ReportHeader(); + + header.AddChild("Number", new LocaleValue("序号"), SqlStorageType.Sqlvarchar); + header.AddChild("DATE", new LocaleValue("签订日期"), SqlStorageType.SqlDatetime); + header.AddChild("CONTRACTNUMBER", new LocaleValue("订单号"), SqlStorageType.Sqlvarchar); + header.AddChild("ProjectName", new LocaleValue("项目名称"), SqlStorageType.Sqlvarchar); + header.AddChild("OrderAmount", new LocaleValue("订单金额"), SqlStorageType.SqlDecimal); + header.AddChild("ShipmentsAmount", new LocaleValue("发货金额"), SqlStorageType.SqlDecimal); + header.AddChild("FBillAllAmount", new LocaleValue("退货金额"), SqlStorageType.SqlDecimal); + header.AddChild("PPBillingDate", new LocaleValue("普票开票时间"), SqlStorageType.Sqlvarchar); + header.AddChild("PPFALLAmountFor", new LocaleValue("普票开票金额"), SqlStorageType.SqlDecimal); + header.AddChild("ZPBillingDate", new LocaleValue("专票开票时间"), SqlStorageType.Sqlvarchar); + header.AddChild("ZPFALLAmountFor", new LocaleValue("专票开票金额"), SqlStorageType.SqlDecimal); + header.AddChild("FALLAMOUNTFOR", new LocaleValue("开票金额"), SqlStorageType.SqlDecimal); + header.AddChild("PaymentAmount", new LocaleValue("回款金额"), SqlStorageType.SqlDecimal); + header.AddChild("ShippedDebt", new LocaleValue("已出货欠款"), SqlStorageType.SqlDecimal); + header.AddChild("InvoicedDebt", new LocaleValue("已开票欠款"), SqlStorageType.SqlDecimal); + header.AddChild("OwedTickets", new LocaleValue("欠票"), SqlStorageType.Sqlvarchar); + header.AddChild("IsEnded", new LocaleValue("是否已完结"), SqlStorageType.Sqlvarchar); + header.AddChild("Remark", new LocaleValue("备注"), SqlStorageType.Sqlvarchar); + + foreach (var item in header.GetChilds()) + { + item.Width = 160; + } + return header; + } + + /// + /// 显示报表数据 + /// + /// + /// + public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) + { + DynamicObject customFilter = filter.FilterParameter.CustomFilter; + + // 客户 + string fClient = customFilter["FClient_Id"]?.ToString(); + // 工程项目名称 + var fProjectList = (customFilter["FProject"] as DynamicObjectCollection)?.Select(n => (n["FProject"] as DynamicObject)["ID"].ToString()).ToList(); + // 截止对账日期 + var fDate = customFilter["FDate"]?.ToString(); + + //开始对账日期 + var FSDate = customFilter["FSDate"]?.ToString(); + + // 订单状态 + var fGROUP = customFilter["F_ALL_GROUP"]?.ToString(); + + //纸质合同号 + var ZZHTH = customFilter["F_ZZHTH"].ToString(); + + //销售员 + var XSYFID = (customFilter["F_XSY"] as DynamicObject)["Id"].ToString(); + + var fProject = fProjectList == null ? "" : (string.Join(",", fProjectList)); + + base.BuilderReportSqlAndTempTable(filter, tableName); + + string sql = string.Format(@"/*dialect*/ + Select * INTO #TABLEXYX From + (Select A.FID From View_Table_Temp2 A JOIN View_Table_Temp3 B + on A.FCONTRACTNUMBER=B.FCONTRACTNUMBER AND A.FCREATEDATE = B.FCREATEDATE + UNION ALL + Select * From View_Table_Temp1) W + Select + CAST(ROW_NUMBER() OVER (ORDER BY A.FDate DESC) as nvarchar(MAX)) AS 'Number', + A.FDate as 'DATE', --签订日期 + A.F_CONTRACTNUMBER as 'CONTRACTNUMBER', --订单号 + ISNULL(H.FNAME,'') as 'ProjectName', --项目名称 + ISNULL(AA.FBillAllAmount_LC,0) as 'OrderAmount', --订单金额 + ISNULL(H2.FALLAMOUNT,0) as 'ShipmentsAmount', --发货金额 + ISNULL(H3.FBillAllAmount,0) as 'FBillAllAmount', --退货金额 + ISNULL(H4.FALLAMOUNTFOR,0) as 'FALLAMOUNTFOR', --开票金额 + ISNULL(A.F_AMOUNT,0) as 'PaymentAmount', --回款金额 + ISNULL(H2.FALLAMOUNT,0)-ISNULL(H3.FBillAllAmount,0) -ISNULL(H6.FWRITTENOFFAMOUNTFOR,0) as 'ShippedDebt', --已出货欠款 + ISNULL(H4.FALLAMOUNTFOR,0) -ISNULL(H6.FWRITTENOFFAMOUNTFOR,0) as 'InvoicedDebt', --已开票欠款 + ISNULL((ISNULL(H2.FALLAMOUNT,0)-ISNULL(H3.FBillAllAmount,0) -0)-(ISNULL(H4.FALLAMOUNTFOR,0) -0),0) as 'OwedTickets', --欠票 + CASE WHEN (ISNULL(AA.FBillAllAmount,0)-ISNULL(H3.FBillAllAmount,0)) = ISNULL(H2.FALLAMOUNT,0) + AND (ISNULL(AA.FBillAllAmount,0)-ISNULL(H3.FBillAllAmount,0)) = ISNULL(H4.FALLAMOUNTFOR,0) + AND (ISNULL(AA.FBillAllAmount,0)-ISNULL(H3.FBillAllAmount,0)) = ISNULL(H5.FREALRECAMOUNTFOR,0) + THEN '已完结' + ELSE '未完结' + END as 'IsEnded', --是否已完结 + A.FNOTE as 'Remark' --备注 + INTO #TEMPTABLE1 --临时表 + From + T_SAL_ORDER A + JOIN + T_SAL_ORDERFIN AA + on A.FID = AA.FID + LEFT JOIN + (Select q2.FNAME,q1.* From + T_BAS_PREBDONE q1 + JOIN + T_BAS_PREBDONE_L q2 + on q1.FID = q2.FID + Where q2.FLocaleID = 2052 + AND q1.FDocumentStatus = 'C' + AND q1.FForbidStatus = 'A') H --工程项目表(预置基础资料1) + on H.FID = A.F_projectname + LEFT JOIN + (SELECT W2.FSBILLID,SUM(W1.FALLAMOUNT) as 'FALLAMOUNT' FROM + (Select q2.FAllAmount,q2.FENTRYID From T_SAL_DELIVERYNOTICE q1 + JOIN T_SAL_DELIVERYNOTICEENTRY_F q2 + on q1.FID = q2.FID Where q1.FDocumentStatus = 'C' + AND q1.FCancelStatus = 'A') W1 + JOIN T_SAL_DELIVERYNOTICEENTRY_LK W2 on W1.FENTRYID = W2.FENTRYID + Where W2.FSTABLENAME = 'T_SAL_ORDERENTRY' GROUP BY W2.FSBILLID) H2 --发货通知单 + on A.FID = H2.FSBILLID + LEFT JOIN + (SELECT A1.FSBILLID,SUM(A2.FRetNoticeQty*A3.FTaxPrice) as 'FBillAllAmount' FROM + (SELECT W2.FSBILLID,W1.FENTRYID FROM + (Select q1.* From + T_SAL_ORDERENTRY q1 + JOIN + T_SAL_ORDER q2 + on q1.FID = q2.FID + Where q2.FBusinessType = 'RETURNSO' + AND q2.FDocumentStatus = 'C') W1 + JOIN T_SAL_ORDERENTRY_LK W2 on W1.FENTRYID = W2.FENTRYID) A1 + JOIN T_SAL_ORDERENTRY_R A2 on A1.FENTRYID = A2.FENTRYID JOIN + T_SAL_ORDERENTRY_F A3 on A2.FENTRYID = A3.FENTRYID GROUP BY A1.FSBILLID) H3 --销售订单(退货) + on A.FID = H3.FSBILLID + LEFT JOIN + (SELECT W2.FSBILLID,SUM(W1.FALLAMOUNTFOR) as 'FALLAMOUNTFOR' FROM + (Select B.FALLAMOUNTFOR,B.FENTRYID From T_AR_RECEIVABLE A + JOIN T_AR_RECEIVABLEENTRY B on A.FID = B.FID Where A.FDocumentStatus = 'C' + AND B.FORDERNUMBER !='' AND A.F_GeneralInvoice != 'Y') W1 + JOIN T_AR_RECEIVABLEENTRY_LK W2 on W1.FENTRYID = W2.FENTRYID + Where W2.FSTABLENAME = 'T_SAL_ORDERENTRY' GROUP BY W2.FSBILLID) H4 --应收单表 + on A.FID = H4.FSBILLID + LEFT JOIN + (Select q2.FSALEORDERNO,SUM(q1.FREALRECAMOUNTFOR) as 'FREALRECAMOUNTFOR' From T_AR_RECEIVEBILL q1 + JOIN T_AR_RECEIVEBILLENTRY q2 on q1.FID = q2.FID Where q1.FDOCUMENTSTATUS = 'C' + AND q1.FCancelStatus = 'A' AND q2.FSALEORDERNO != '' GROUP BY q2.FSALEORDERNO) H5 --收款单表 + on A.FBILLNO = H5.FSALEORDERNO + LEFT JOIN + (Select a1.FID,a1.F_CONTRACTNUMBER,SUM(a2.FWRITTENOFFAMOUNTFOR) as 'FWRITTENOFFAMOUNTFOR' From T_AR_RECEIVEBILL a1 JOIN T_AR_RECEIVEBILLENTRY a2 on a1.FID = a2.FID + WHere a1.F_CONTRACTNUMBER!='' GROUP BY a1.FID,a1.F_CONTRACTNUMBER) H6 + on H6.F_CONTRACTNUMBER = A.F_CONTRACTNUMBER + Where A.FDocumentStatus = 'C' AND A.FBusinessType = 'NORMAL' AND A.FID in (Select * From #TABLEXYX)"); + + if (!string.IsNullOrEmpty(fClient) && fClient != "0") + { + sql += string.Format(@" AND A.FCustId in ({0})", fClient); + } + if (!string.IsNullOrEmpty(fProject)) + { + sql += string.Format(@" AND A.F_projectname in ({0})", fProject); + } + if (!string.IsNullOrEmpty(fDate)) + { + sql += string.Format(@" AND A.FAPPROVEDATE <= EOMONTH('{0}')", fDate); + } + if (!string.IsNullOrEmpty(FSDate)) + { + sql += string.Format(@" AND A.FAPPROVEDATE >= EOMONTH('{0}')", FSDate); + } + if (!string.IsNullOrEmpty(ZZHTH)) + { + sql += string.Format(@"AND A.F_contractnumber = '{0}'", ZZHTH); + } + if (!string.IsNullOrEmpty(XSYFID)) + { + sql += string.Format(@"AND A.FSalerId = '{0}'",XSYFID); + } + sql += string.Format(@";"); + + sql += string.Format(@"/*dialect*/ + Select * INTO #TEMPTABLE2 From #TEMPTABLE1 + Where 1=1"); + + if (!string.IsNullOrEmpty(fGROUP) && fGROUP == "2") + { + sql += string.Format(@" AND IsEnded = '否'"); + } + + sql += string.Format(@";"); + + sql += string.Format(@"/*dialect*/ + Select * INTO #TEMPTABLE3 From + #TEMPTABLE1"); + + sql += string.Format(@"/*dialect*/ + --清空表数据 + TRUNCATE TABLE YingShouZhanKuanJY + + INSERT INTO YingShouZhanKuanJY(Number,[Date],ContractNumber,ProjectName,OrderAmount,ShipmentsAmount, + FBillAllAmount,FALLAmountFor,PaymentAmount,ShippedDebt,InvoicedDebt,OwedTickets,IsEnded,Remark) + SELECT * + FROM #TEMPTABLE3"); + + sql += string.Format(@"/*dialect*/ + EXEC UpdateYSDZBJY_GZTH"); + + sql += string.Format(@"/*dialect*/ + Select + *, + ROW_NUMBER() OVER (ORDER BY Date DESC) AS FID, + ROW_NUMBER() OVER (ORDER BY Date DESC) AS FIDENTITYID + INTO {0} + From + YingShouZhanKuanJY + ORDER BY [ContractNumber] + ", tableName); + + DBUtils.Execute(this.Context, sql); + } + + /// + /// 获取前端组件转换过滤条件 + /// + /// + /// + public override ReportTitles GetReportTitles(IRptParams filter) + { + ReportTitles reportTitles = new ReportTitles(); + DynamicObject customFilter = filter.FilterParameter.CustomFilter; + + if (customFilter != null) + { + // 客户 + var fClientList = (customFilter["FClient"] as DynamicObject)?["Name"]?.ToString(); + // 工程项目名称 + var fProjectList = (customFilter["FProject"] as DynamicObjectCollection)?.Select(n => (n["FProject"] as DynamicObject)["Name"].ToString()).ToList(); + // 截止对账日期 + var fDate = customFilter["FDate"]?.ToString(); + //开始对账日期 + var FSDate = customFilter["FSDate"]?.ToString(); + // 订单状态 + var fGROUP = customFilter["F_ALL_GROUP"]?.ToString(); + //纸质合同号 + var ZZHTH = customFilter["F_ZZHTH"]?.ToString(); + //销售员 + var XSYFID = (customFilter["F_XSY"] as DynamicObject)["Id"].ToString(); + + string fState = ""; + if (fGROUP == "1") + { + fState = "全部订单"; + } + if (fGROUP == "2") + { + fState = "未完结订单"; + } + + //这里是报表页面的标识 + reportTitles.AddTitle("FState", fGROUP == null ? "" : fState); + reportTitles.AddTitle("FClient", fClientList == null ? "" : fClientList); + reportTitles.AddTitle("FDate", fDate == null ? "" : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd")); + reportTitles.AddTitle("FSDate", fDate == null ? "" : Convert.ToDateTime(FSDate).ToString("yyyy-MM-dd")); + reportTitles.AddTitle("FProject", fProjectList == null ? "" : string.Join(",", fProjectList)); + reportTitles.AddTitle("F_ZZHTH", ZZHTH == null ? "" : ZZHTH); + reportTitles.AddTitle("F_XSY", XSYFID == null ? "" : XSYFID); + } + return reportTitles; + } + + //设计报表合计列 + public override List GetSummaryColumnInfo(IRptParams filter) + { + + var result = base.GetSummaryColumnInfo(filter); + result.Add(new SummaryField("OrderAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("ShipmentsAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("FBillAllAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("PPFALLAmountFor", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("ZPFALLAmountFor", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("FALLAMOUNTFOR", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("PaymentAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("ShippedDebt", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("InvoicedDebt", BOSEnums.Enu_SummaryType.SUM)); + return result; + } + } +} diff --git a/YSZKDZBaoBiao/AccountsReceivableReport2.cs b/YSZKDZBaoBiao/AccountsReceivableReport2.cs new file mode 100644 index 0000000..170b9f0 --- /dev/null +++ b/YSZKDZBaoBiao/AccountsReceivableReport2.cs @@ -0,0 +1,396 @@ +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Contracts.Report; +using Kingdee.BOS.Core.Report; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using Kingdee.BOS; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Data; +using Kingdee.BOS.Core.Enums; + +namespace Pilot.Report.Exploitation.AccountsReceivableStatements +{ + /// + /// 应收账款对账报表【明细版】 + /// + [Description("[服务插件] 应收账款对账报表【明细版】取数"), HotUpdate] + public class AccountsReceivableReport2 : SysReportBaseService + { + /// + /// 初始化 + /// + public override void Initialize() + { + base.Initialize(); + this.ReportProperty.ReportName = new LocaleValue("应收账款对账单【明细版】", base.Context.UserLocale.LCID); + this.ReportProperty.IsUIDesignerColumns = false; + // 简单账表类型:普通、树形、分页 + this.ReportProperty.ReportType = ReportType.REPORTTYPE_NORMAL; + this.IsCreateTempTableByPlugin = true; + // + this.IsCreateTempTableByPlugin = true; + // + this.ReportProperty.IsGroupSummary = true; + // + this.ReportProperty.SimpleAllCols = false; + // 单据主键:两行FID相同,则为同一单的两条分录,单据编号可以不重复显示 + this.ReportProperty.PrimaryKeyFieldName = "FID"; + // + this.ReportProperty.IsDefaultOnlyDspSumAndDetailData = true; + + // 设置精度控制 + var list = new List + { + new DecimalControlField("FDECIMALS", "OrigInvoiceAmount"), + new DecimalControlField("FDECIMALS", "ExchangeRate"), + new DecimalControlField("FDECIMALS", "InvoiceAmountTHB"), + new DecimalControlField("FDECIMALS", "MonthEndExRate"), + new DecimalControlField("FDECIMALS", "RevaluationAountInTHB"), + new DecimalControlField("FDECIMALS", "UnrealizedGainLoss"), + }; + this.ReportProperty.DecimalControlFieldList = list; + } + + /// + /// 报表列表头 + /// + /// + /// + public override ReportHeader GetReportHeaders(IRptParams filter) + { + base.GetReportHeaders(filter); + + ReportHeader header = new ReportHeader(); + + header.AddChild("DATE", new LocaleValue("签订日期"), SqlStorageType.SqlDatetime); + header.AddChild("CONTRACTNUMBER", new LocaleValue("订单号"), SqlStorageType.Sqlvarchar); + header.AddChild("ProjectName", new LocaleValue("项目名称"), SqlStorageType.Sqlvarchar); + header.AddChild("SizeModel", new LocaleValue("规格型号"), SqlStorageType.Sqlvarchar); + header.AddChild("FQty", new LocaleValue("数量/台"), SqlStorageType.SqlInt); + header.AddChild("FTaxPrice", new LocaleValue("单价"), SqlStorageType.SqlDecimal); + header.AddChild("FAllAmount", new LocaleValue("价税合计"), SqlStorageType.SqlDecimal); + header.AddChild("OrderAmount", new LocaleValue("订单金额"), SqlStorageType.SqlDecimal); + header.AddChild("ShipmentsDate", new LocaleValue("发货日期"), SqlStorageType.Sqlvarchar); + header.AddChild("ShipmentsNum", new LocaleValue("发货数量"), SqlStorageType.SqlInt); + header.AddChild("ShipmentsAmount", new LocaleValue("发货金额"), SqlStorageType.SqlDecimal); + header.AddChild("ReturnDate", new LocaleValue("退货日期"), SqlStorageType.Sqlvarchar); + header.AddChild("ReturnNum", new LocaleValue("退货数量"), SqlStorageType.SqlInt); + header.AddChild("ReturnAmount", new LocaleValue("退货金额"), SqlStorageType.SqlDecimal); + header.AddChild("PPBillingDate", new LocaleValue("普票开票日期"), SqlStorageType.Sqlvarchar); + header.AddChild("PPBillingAmount", new LocaleValue("普票开票金额"), SqlStorageType.SqlDecimal); + header.AddChild("ZPBillingDate", new LocaleValue("专票开票日期"), SqlStorageType.Sqlvarchar); + header.AddChild("ZPBillingAmount", new LocaleValue("专票开票金额"), SqlStorageType.Sqlvarchar); + header.AddChild("BillingAmount", new LocaleValue("开票金额"), SqlStorageType.SqlDecimal); + header.AddChild("PaymentDate", new LocaleValue("回款日期"), SqlStorageType.Sqlvarchar); + header.AddChild("PaymentAmount", new LocaleValue("回款金额"), SqlStorageType.SqlDecimal); + header.AddChild("ShippedDebt", new LocaleValue("已出货欠款"), SqlStorageType.SqlDecimal); + header.AddChild("InvoicedDebt", new LocaleValue("已开票欠款"), SqlStorageType.SqlDecimal); + header.AddChild("OwedTickets", new LocaleValue("欠票"), SqlStorageType.SqlDecimal); + header.AddChild("IsEnded", new LocaleValue("是否已完结"), SqlStorageType.Sqlvarchar); + header.AddChild("Remark", new LocaleValue("备注"), SqlStorageType.Sqlvarchar); + + foreach (var item in header.GetChilds()) + { + item.Width = 160; + } + return header; + } + + /// + /// 显示报表数据 + /// + /// + /// + public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName) + { + DynamicObject customFilter = filter.FilterParameter.CustomFilter; + + // 客户 + string fClient = customFilter["FClient_Id"]?.ToString(); + // 工程项目名称 + var fProjectList = (customFilter["FProject"] as DynamicObjectCollection)?.Select(n => (n["FProject"] as DynamicObject)["ID"].ToString()).ToList(); + // 截止对账日期 + var fDate = customFilter["FDate"]?.ToString(); + // 订单状态 + var fGROUP = customFilter["F_ALL_GROUP"]?.ToString(); + //开始对账日期 + var FSDate = customFilter["FSDate"]?.ToString(); + + //纸质合同号 + var ZZHTH = customFilter["F_ZZHTH"].ToString(); + + //销售员 + var XSYFID = (customFilter["F_XSY"] as DynamicObject)["Id"].ToString(); + + var fProject = fProjectList == null ? "" : (string.Join(",", fProjectList)); + + base.BuilderReportSqlAndTempTable(filter, tableName); + + string sql = string.Format(@"/*dialect*/ + Select * INTO #TABLEXYX From + (Select A.FID From View_Table_Temp2 A JOIN View_Table_Temp3 B + on A.FCONTRACTNUMBER=B.FCONTRACTNUMBER AND A.FCREATEDATE = B.FCREATEDATE + UNION ALL + Select * From View_Table_Temp1) W + Select + A.FDATE, + CAST(ROW_NUMBER() OVER (ORDER BY A.FDate DESC) as nvarchar(MAX)) AS Number, + CASE WHEN B.FSEQ != 1 THEN null + ELSE A.FDate END as 'DATE', --签订日期 + CASE WHEN B.FSEQ != 1 THEN '' + ELSE A.F_CONTRACTNUMBER END as 'CONTRACTNUMBER', --订单号 + CASE WHEN B.FSEQ != 1 THEN '' + ELSE ISNULL(H.FNAME,'') END as 'ProjectName', --项目名称 + ISNULL(G.FSpecification,'') as 'SizeModel', --规格型号 + B.FQty, --数量/台 + B2.FTaxPrice, --单价 + B2.FAllAmount_LC, --价税合计 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(A2.FBILLALLAMOUNT,0) END as 'OrderAmount', --订单金额 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H2.FDate,'') END as 'ShipmentsDate', --发货日期 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H2.FPRICEBASEQTY,0) END as 'ShipmentsNum', --发货数量 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H2.FALLAMOUNT,0) END as 'ShipmentsAmount', --发货金额 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H3.FDate,'') END as 'ReturnDate', --退货日期 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H3.FRETNOTICEQTY,0) END as 'ReturnNum', --退货数量 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H3.FBillAllAmount,0) END as 'ReturnAmount',--退货金额 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H4.FDate,'') END as 'BillingDate', --开票日期 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H4.FALLAMOUNTFOR,0) END as 'BillingAmount', --开票金额 + CASE WHEN B.FSEQ != 1 THEN null + ELSE (Select STRING_AGG((CONVERT(nvarchar,aa1.FDATE,23)),',') as 'FDate' + From T_AR_RECEIVEBILL aa1 JOIN T_SEC_USER aa2 on aa1.FCREATORID = aa2.FUSERID + Where FBILLNO in (Select FBILLNO3 From T_AutoWrireRecordEntry a1 JOIN T_AutoWrireRecordEntry2 a2 + on a1.FID = a2.FID Where FBILLNO2 = A.FBILLNO)) + END as 'PaymentDate', --回款日期 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(A.F_AMOUNT,0) END as 'PaymentAmount', --回款金额 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H2.FALLAMOUNT,0)-ISNULL(H3.FBillAllAmount,0) -ISNULL(E.FWRITTENOFFAMOUNTFOR,0) END as 'ShippedDebt', --已出货欠款 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL(H4.FALLAMOUNTFOR,0) -ISNULL(E.FWRITTENOFFAMOUNTFOR,0) END as 'InvoicedDebt', --已开票欠款 + CASE WHEN B.FSEQ != 1 THEN null + ELSE ISNULL((ISNULL(H2.FALLAMOUNT,0)-ISNULL(H3.FBillAllAmount,0) -0)-(ISNULL(H4.FALLAMOUNTFOR,0) -0),0) + END as 'OwedTickets', --欠票 + CASE WHEN B.FSEQ != 1 THEN '' + WHEN (ISNULL(AA.FBillAllAmount,0)-ISNULL(H3.FBillAllAmount,0)) = ISNULL(H2.FALLAMOUNT,0) --订单金额-退货金额 = 发货金额 + AND (ISNULL(AA.FBillAllAmount,0)-ISNULL(H3.FBillAllAmount,0)) = ISNULL(H4.FALLAMOUNTFOR,0) --订单金额-退货金额 = 开票金额 + AND (ISNULL(AA.FBillAllAmount,0)-ISNULL(H3.FBillAllAmount,0)) = ISNULL(H5.FREALRECAMOUNTFOR,0) --订单金额-退货金额 = 收款金额 + THEN '已完结' + ELSE '未完结' + END as 'IsEnded', --是否已完结 + CASE WHEN B.FSEQ != 1 THEN '' + ELSE A.FNOTE END as 'Remark' --备注 + INTO #TEMPTABLE1 --临时表 + From + T_SAL_ORDER A + JOIN + T_SAL_ORDERFIN AA + on A.FID = AA.FID + JOIN + T_SAL_ORDERFIN A2 + on A.FID = A2.FID + JOIN + T_SAL_ORDERENTRY B + on A.FID = B.FID + JOIN + T_SAL_ORDERENTRY_F B2 + on B.FENTRYID = B2.FENTRYID + LEFT JOIN + (Select q2.FNAME,q1.* From + T_BAS_PREBDONE q1 + JOIN + T_BAS_PREBDONE_L q2 + on q1.FID = q2.FID + Where q2.FLocaleID = 2052 + AND q1.FDocumentStatus = 'C' + AND q1.FForbidStatus = 'A') H --工程项目表(预置基础资料1) + on H.FID = A.F_projectname + LEFT JOIN + (SELECT W2.FSBILLID,SUM(W1.FALLAMOUNT) as 'FALLAMOUNT',SUM(W1.FPRICEBASEQTY) as 'FPRICEBASEQTY', + STRING_AGG(CONVERT(nvarchar,W1.FDATE, 23), ',') as 'FDate' FROM + (Select q2.FAllAmount,q2.FENTRYID,q2.FPriceBaseQty,q1.FDate From T_SAL_DELIVERYNOTICE q1 + JOIN T_SAL_DELIVERYNOTICEENTRY_F q2 + on q1.FID = q2.FID Where q1.FDocumentStatus = 'C' + AND q1.FCancelStatus = 'A') W1 + JOIN T_SAL_DELIVERYNOTICEENTRY_LK W2 on W1.FENTRYID = W2.FENTRYID + Where W2.FSTABLENAME = 'T_SAL_ORDERENTRY' GROUP BY W2.FSBILLID) H2 --发货通知单表 + on A.FID = H2.FSBILLID + LEFT JOIN + (SELECT W2.FSBILLID,STRING_AGG(CONVERT(nvarchar,W1.FDATE, 23), ',') as 'FDate',SUM(W1.FPriceUnitQty) as 'FRETNOTICEQTY',SUM(W1.FALLAMOUNT) as 'FBillAllAmount' FROM + (Select q1.FDATE,q3.FSID,q2.FAllAmount,q2.FPriceUnitQty From T_SAL_RETURNNOTICE q1 JOIN T_SAL_RETURNNOTICEENTRY_F q2 + on q1.FID = q2.FID JOIN T_SAL_RETURNNOTICEENTRY_LK q3 on q2.FENTRYID = q3.FENTRYID + Where q1.FDocumentStatus = 'C' AND q1.FCancelStatus = 'A' AND q3.FSTABLENAME = 'T_SAL_ORDERENTRY') W1 + JOIN T_SAL_ORDERENTRY_LK W2 on W1.FSID = W2.FENTRYID GROUP BY W2.FSBILLID) H3 --退货订单表 + on A.FID = H3.FSBILLID + LEFT JOIN + (SELECT W2.FSBILLID,SUM(W1.FALLAMOUNTFOR) as 'FALLAMOUNTFOR',STRING_AGG(CONVERT(nvarchar,W1.FDATE,23),',') as 'FDate' FROM + (Select B.FALLAMOUNTFOR,B.FENTRYID,B.FOPENAMOUNTFOR,A.FDATE From T_AR_RECEIVABLE A + JOIN T_AR_RECEIVABLEENTRY B on A.FID = B.FID Where A.FDocumentStatus = 'C' + AND B.FORDERNUMBER !='' AND A.F_GeneralInvoice != 'Y') W1 + JOIN T_AR_RECEIVABLEENTRY_LK W2 on W1.FENTRYID = W2.FENTRYID + Where W2.FSTABLENAME = 'T_SAL_ORDERENTRY' GROUP BY W2.FSBILLID) H4 --应收单表 + on A.FID = H4.FSBILLID + LEFT JOIN + (Select q2.FSALEORDERNO,SUM(q1.FREALRECAMOUNTFOR) as 'FREALRECAMOUNTFOR' From T_AR_RECEIVEBILL q1 + JOIN T_AR_RECEIVEBILLENTRY q2 on q1.FID = q2.FID Where q1.FDOCUMENTSTATUS = 'C' + AND q1.FCancelStatus = 'A' AND q2.FSALEORDERNO != '' GROUP BY q2.FSALEORDERNO) H5 --收款单表 + on A.FBILLNO = H5.FSALEORDERNO + LEFT JOIN + (Select B.FNAME,B.FSPECIFICATION,A.* From + T_BD_MATERIAL A + JOIN + T_BD_MATERIAL_L B + on A.FMATERIALID = B.FMATERIALID + Where B.FLOCALEID = 2052 + AND A.FDocumentStatus = 'C' AND A.FForbidStatus = 'A') G --物料表 + on G.FMATERIALID = B.FMaterialId + LEFT JOIN + (Select a1.FID,a1.F_CONTRACTNUMBER,STRING_AGG(CONVERT(nvarchar,a1.FDATE, 23), ',') as 'FDate',SUM(a2.FWRITTENOFFAMOUNTFOR) as 'FWRITTENOFFAMOUNTFOR' + From T_AR_RECEIVEBILL a1 JOIN T_AR_RECEIVEBILLENTRY a2 on a1.FID = a2.FID + WHere a1.F_CONTRACTNUMBER!='' GROUP BY a1.FID,a1.F_CONTRACTNUMBER) E on E.F_CONTRACTNUMBER = A.F_CONTRACTNUMBER + Where A.FDocumentStatus = 'C' AND A.FBusinessType = 'NORMAL' AND A.FID in (Select * From #TABLEXYX)"); + + if (!string.IsNullOrEmpty(fClient) && fClient != "0") + { + sql += string.Format(@" AND A.FCustId in ({0})", fClient); + } + if (!string.IsNullOrEmpty(fProject)) + { + sql += string.Format(@" AND A.F_projectname in ({0})", fProject); + } + if (!string.IsNullOrEmpty(fDate)) + { + sql += string.Format(@" AND A.FAPPROVEDATE <= EOMONTH('{0}')", fDate); + } + if (!string.IsNullOrEmpty(FSDate)) + { + sql += string.Format(@" AND A.FAPPROVEDATE >= EOMONTH('{0}')", FSDate); + } + if (!string.IsNullOrEmpty(ZZHTH)) + { + sql += string.Format(@"AND A.F_contractnumber = '{0}'", ZZHTH); + } + if (!string.IsNullOrEmpty(XSYFID)) + { + sql += string.Format(@"AND A.FSalerId = '{0}'", XSYFID); + } + + sql += string.Format(@";"); + + sql += string.Format(@"/*dialect*/ + Select * INTO #TEMPTABLE2 From #TEMPTABLE1 + Where 1=1"); + + if (!string.IsNullOrEmpty(fGROUP) && fGROUP == "2") + { + sql += string.Format(@" AND IsEnded = '否'"); + } + + sql += string.Format(@";"); + + sql += string.Format(@" + TRUNCATE TABLE YingShouZhanKuanMX + + INSERT INTO YingShouZhanKuanMX([DATE],CONTRACTNUMBER,ProjectName,SizeModel,FQty,FTaxPrice,FAllAmount,OrderAmount,ShipmentsDate,ShipmentsNum, + ShipmentsAmount,ReturnDate,ReturnNum,ReturnAmount,PaymentDate,PaymentAmount,OwedTickets,IsEnded,Remark) + SELECT [DATE],CONTRACTNUMBER,ProjectName,SizeModel,FQty,FTaxPrice,FAllAmount_LC,OrderAmount,ShipmentsDate,ShipmentsNum, + ShipmentsAmount,ReturnDate,ReturnNum,ReturnAmount,PaymentDate,PaymentAmount,OwedTickets,IsEnded,Remark + From #TEMPTABLE2 + + EXEC UpdateYSDZBMX_GZTH + "); + + sql += string.Format(@"/*dialect*/ + Select + *, + ROW_NUMBER() OVER (ORDER BY [DATE] DESC) AS FID, + ROW_NUMBER() OVER (ORDER BY [DATE] DESC) AS FIDENTITYID + INTO {0} + From + YingShouZhanKuanMX + ORDERY BY CONTRACTNUMBER + ", tableName); + + DBUtils.Execute(this.Context, sql); + } + + /// + /// 获取前端组件转换过滤条件 + /// + /// + /// + public override ReportTitles GetReportTitles(IRptParams filter) + { + ReportTitles reportTitles = new ReportTitles(); + DynamicObject customFilter = filter.FilterParameter.CustomFilter; + + if (customFilter != null) + { + // 客户 + var fClientList = (customFilter["FClient"] as DynamicObject)?["Name"]?.ToString(); + // 工程项目名称 + var fProjectList = (customFilter["FProject"] as DynamicObjectCollection)?.Select(n => (n["FProject"] as DynamicObject)["Name"].ToString()).ToList(); + // 截止对账日期 + var fDate = customFilter["FDate"]?.ToString(); + //开始对账日期 + var FSDate = customFilter["FSDate"]?.ToString(); + // 订单状态 + var fGROUP = customFilter["F_ALL_GROUP"]?.ToString(); + //纸质合同号 + var ZZHTH = customFilter["F_ZZHTH"]?.ToString(); + //销售员 + var XSYFID = (customFilter["F_XSY"] as DynamicObject)["Id"].ToString(); + + string fState = ""; + if (fGROUP == "1") + { + fState = "全部订单"; + } + if (fGROUP == "2") + { + fState = "未完结订单"; + } + + //这里是报表页面的标识 + reportTitles.AddTitle("FState", fGROUP == null ? "" : fState); + reportTitles.AddTitle("FClient", fClientList == null ? "" : fClientList); + reportTitles.AddTitle("FDate", fDate == null ? "" : Convert.ToDateTime(fDate).ToString("yyyy-MM-dd")); + reportTitles.AddTitle("FSDate", fDate == null ? "" : Convert.ToDateTime(FSDate).ToString("yyyy-MM-dd")); + reportTitles.AddTitle("FProject", fProjectList == null ? "" : string.Join(",", fProjectList)); + reportTitles.AddTitle("F_ZZHTH", ZZHTH == null ? "" : ZZHTH); + reportTitles.AddTitle("F_XSY", XSYFID == null ? "" : XSYFID); + } + return reportTitles; + } + //设计报表合计列 + public override List GetSummaryColumnInfo(IRptParams filter) + { + + var result = base.GetSummaryColumnInfo(filter); + result.Add(new SummaryField("FQty", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("FAllAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("OrderAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("ShipmentsNum", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("ShipmentsAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("ReturnNum", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("ReturnAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("PPBillingAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("ZPBillingAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("BillingAmount", BOSEnums.Enu_SummaryType.SUM)); + result.Add(new SummaryField("PaymentAmount", BOSEnums.Enu_SummaryType.SUM)); + return result; + } + } +} diff --git a/YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs b/YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs new file mode 100644 index 0000000..2fda297 --- /dev/null +++ b/YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs @@ -0,0 +1,562 @@ +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core; +using Kingdee.BOS.Core.CommonFilter.ConditionVariableAnalysis; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.Metadata.FormElement; +using Kingdee.BOS.Core.Report; +using Kingdee.BOS.Core.Report.PlugIn; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.Util; +using NPOI.HSSF.Util; +using NPOI.SS.Formula.Functions; +using NPOI.SS.UserModel; +using NPOI.SS.Util; +using NPOI.XSSF.UserModel; +using System; +using System.ComponentModel; +using System.Data; +using System.IO; +using System.Linq; +using System.Security.Cryptography; + +namespace Pilot.Report.Exploitation.AccountsReceivable +{ + /// + /// 【表单插件】明细版-按钮触发 + /// + [Description("【表单插件】明细版-按钮触发-导出EXCEL"), HotUpdate] + public class LiteVersionPlugIn2 : AbstractSysReportPlugIn + { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + // 判断 应收对账单【明细版】按钮 + if (e.BarItemKey == "Test_Button_1") + { + string FPath = "应收账款对账单【明细版】.xlsx"; + + // 在临时文件目录,生成一个完整的文件名: C:\Program Files\Kingdee\K3Cloud\WebSite\...\JD.xls + string filePath = PathUtils.GetPhysicalPath(KeyConst.TEMPFILEPATH, Path.GetFileName(FPath)); + // 生成一个供用户下载文件的url地址: http:\\localhost\K3Cloud\...\JD.xls + string fileUrl = PathUtils.GetServerPath(KeyConst.TEMPFILEPATH, Path.GetFileName(FPath)); + //打开文件下载界面 + DynamicFormShowParameter showParameter = new DynamicFormShowParameter(); + showParameter.FormId = "BOS_FileDownload"; + showParameter.OpenStyle.ShowType = ShowType.Modal; + showParameter.CustomComplexParams.Add("url", fileUrl); + //显示 + this.View.ShowForm(showParameter); + + var reportModel = this.SysReportModel; + + //单据头 + var rptTitles = reportModel.ReportTitles; + string fClient = rptTitles.FirstOrDefault(a => a.TitleKey == "FClient").TitleValue.ToString(); + string fDate = rptTitles.FirstOrDefault(a => a.TitleKey == "FDate").TitleValue.ToString(); + string fProject = rptTitles.FirstOrDefault(a => a.TitleKey == "FProject").TitleValue.ToString(); + string FState = rptTitles.FirstOrDefault(a => a.TitleKey == "FState").TitleValue.ToString(); + //单据体 + var list = reportModel.DataSource.Rows; + + string sqlTest = string.Format(@"/*dialect*/Select FAmount,FDate From MBBA_t_Cust100006 Where Month(FDATE) = Month(DATEADD(MONTH, -1, '{0}'))", fDate); + + var sqlTestList = DBUtils.ExecuteDynamicObject(Context, sqlTest); + + int Num = 0; + decimal fAmount = 0; + string fDate2 = ""; + if (sqlTestList.Count() > 0) + { + Num = 1; + fAmount = Math.Round(Convert.ToDecimal(sqlTestList[0]["FAmount"]),2); + fDate2 = sqlTestList[0]["FDate"].ToString().Split(' ')[0]; + } + + Main(filePath, fClient, fDate, fProject, list, Num, fAmount, fDate2, Context); + } + } + + /// + /// 赋值EXCEL + /// + static void Main(string outputFilePath, string fClient, string fDate, string fProject, DataRowCollection list, int Num, decimal fAmount,string fDate2,Kingdee.BOS.Context Context) + { + #region Excel代码 + + string filePath = @"D:\KingdeeModel\对账单模板2.xlsx"; + FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read); + IWorkbook workbook = new XSSFWorkbook(file); + file.Close(); + + //获取工作簿中的第一个工作表(索引为0) + ISheet sheet = workbook.GetSheetAt(0); + + #endregion + + #region 单元格样式 + + // 创建一个单元格样式------------------------------- + ICellStyle cellStyle = workbook.CreateCellStyle(); + + // 设置边框样式 + cellStyle.BorderTop = BorderStyle.Thin; + cellStyle.BorderBottom = BorderStyle.Thin; + cellStyle.BorderLeft = BorderStyle.Thin; + cellStyle.BorderRight = BorderStyle.Thin; + // 设置水平居中对齐 + cellStyle.Alignment = HorizontalAlignment.Center; + // 设置垂直居中对齐 + cellStyle.VerticalAlignment = VerticalAlignment.Center; + + // 创建一个单元格样式--------------------------------- + ICellStyle cellStyle2 = workbook.CreateCellStyle(); + + // 设置边框样式 + cellStyle2.BorderTop = BorderStyle.Thin; + cellStyle2.BorderBottom = BorderStyle.Thin; + cellStyle2.BorderLeft = BorderStyle.Thin; + cellStyle2.BorderRight = BorderStyle.Thin; + + // 创建单元格样式--------------------------------------- + ICellStyle style = workbook.CreateCellStyle(); + + // 设置边框样式 + style.BorderTop = BorderStyle.Thin; + style.BorderBottom = BorderStyle.Thin; + style.BorderLeft = BorderStyle.Thin; + style.BorderRight = BorderStyle.Thin; + + // 创建字体并设置为加粗 + IFont font = workbook.CreateFont(); + font.IsBold = true; // 设置字体加粗 + + // 将字体应用到单元格样式 + style.SetFont(font); + + // 创建单元格样式--------------------------------------- + ICellStyle style2 = workbook.CreateCellStyle(); + + // 创建字体并设置为加粗 + IFont font2 = workbook.CreateFont(); + font2.IsBold = true; // 设置字体加粗 + + // 将字体应用到单元格样式 + style2.SetFont(font2); + + // 创建一个单元格样式------------------------------- + ICellStyle style3 = workbook.CreateCellStyle(); + + // 设置边框样式 + style3.BorderTop = BorderStyle.Thin; + style3.BorderBottom = BorderStyle.Thin; + style3.BorderLeft = BorderStyle.Thin; + style3.BorderRight = BorderStyle.Thin; + // 设置水平居中对齐 + style3.Alignment = HorizontalAlignment.Center; + // 设置垂直居中对齐 + style3.VerticalAlignment = VerticalAlignment.Center; + // 创建字体并设置为加粗 + IFont font3 = workbook.CreateFont(); + font3.IsBold = true; // 设置字体加粗 + // 将字体应用到单元格样式 + style3.SetFont(font3); + + #endregion + + #region 获取金额汇总数据 + + decimal YFHpriceSum = 0; + decimal YFPpriceSum = 0; + decimal priceSum = 0; + + for (var i = 0; i < list.Count; i++) + { + if (list[i]["Number"].ToString() == "合计") + { + YFHpriceSum = Math.Round(Convert.ToDecimal(list[i]["ShippedDebt"]), 2); + YFPpriceSum = Math.Round(Convert.ToDecimal(list[i]["InvoicedDebt"]), 2); + priceSum = Math.Round(Convert.ToDecimal(list[i]["ShippedDebt"]) + Convert.ToDecimal(list[i]["InvoicedDebt"]), 2); + } + } + + #endregion + + #region 四行一列修改/六行二列修改/十一行一列修改/十二行一列修改 + + IRow row = sheet.GetRow(3); + IRow row2 = sheet.GetRow(5); + IRow row22 = sheet.GetRow(6); + IRow ro = sheet.GetRow(11); + ICell cell = row.GetCell(0); + ICell cell2 = row2.GetCell(1); + ICell cell22 = row22.GetCell(8); + ICell cel3 = ro.GetCell(0); + IRow row3 = sheet.GetRow(10); + ICell cell3 = row3.GetCell(0); + //将新创建或获取的单元格的值修改 + cell22.SetCellValue(""); + var YFHpriceSumZW = ToChineseNumber(YFHpriceSum, Context); + cell3.SetCellValue("贵公司截至 " + fDate + " 共欠我公司货款金额为:" + YFHpriceSum + "元【等于已发货欠款总额】(大写:"+ YFHpriceSumZW + ")"); + //将新创建或获取的单元格的值修改 + cell.SetCellValue("尊敬的 " + fClient + " 客户您好,我公司已根据合同/订单的要求向贵公司交付相关产品并请验收确认,鉴于我公司对贵公司已通知发货部分的交付义务已完成,"); + cell2.SetCellValue(fClient); + var fAmountZW = ToChineseNumber(fAmount, Context); + if (Num > 0) + { + cel3.SetCellValue("其中上期(截止" + fDate2 + "共欠我公司货款金额为:" + fAmount + "元(大写:"+ fAmountZW + ")"); + } + else + { + cel3.SetCellValue(""); + } + #endregion + + #region 明细赋值 + + // 将字体应用到单元格样式 + style2.SetFont(font2); + int n = 14; + + for (var i = 0; i < list.Count; i++) + { + string date = string.IsNullOrWhiteSpace(list[i]["DATE"].ToString()) ? "" : list[i]["DATE"].ToString().Split(' ')[0]; + string ShipmentsDate = string.IsNullOrWhiteSpace(list[i]["ShipmentsDate"].ToString()) ? "" : list[i]["ShipmentsDate"].ToString().Split(' ')[0]; + string PaymentDate = string.IsNullOrWhiteSpace(list[i]["PaymentDate"].ToString()) ? "" : list[i]["PaymentDate"].ToString().Split(' ')[0]; + string BillingDate = string.IsNullOrWhiteSpace(list[i]["BillingDate"].ToString()) ? "" : list[i]["BillingDate"].ToString().Split(' ')[0]; + string ReturnDate = string.IsNullOrWhiteSpace(list[i]["ReturnDate"].ToString()) ? "" : list[i]["ReturnDate"].ToString().Split(' ')[0]; + + IRow rowi = sheet.CreateRow(13 + i); + ICell c1 = rowi.CreateCell(0); c1.SetCellValue(list[i]["Number"].ToString()); c1.CellStyle = cellStyle; + ICell c2 = rowi.CreateCell(1); c2.SetCellValue(""+date+""); c2.CellStyle = cellStyle2; + ICell c3 = rowi.CreateCell(2); c3.SetCellValue(list[i]["CONTRACTNUMBER"].ToString()); c3.CellStyle = cellStyle2; + ICell c4 = rowi.CreateCell(3); c4.SetCellValue(list[i]["ProjectName"].ToString()); c4.CellStyle = cellStyle2; + ICell c5 = rowi.CreateCell(4); c5.SetCellValue(list[i]["SizeModel"].ToString()); c5.CellStyle = cellStyle2; + + ICell c6 = rowi.CreateCell(5); c6.SetCellValue(""); c6.CellStyle = cellStyle; //数量 + if(!string.IsNullOrWhiteSpace(list[i]["FQty"].ToString())) + { + int FQty = Convert.ToInt32(list[i]["FQty"]); + c6.SetCellValue("" + FQty + ""); c6.CellStyle = cellStyle; //数量 + } + + ICell c7 = rowi.CreateCell(6); c7.SetCellValue(""); c7.CellStyle = cellStyle; + if(!string.IsNullOrWhiteSpace(list[i]["FTaxPrice"].ToString())) + { + decimal FTaxPrice = Math.Round(Convert.ToDecimal(list[i]["FTaxPrice"]), 2); + c7.SetCellValue("" + FTaxPrice + ""); c7.CellStyle = cellStyle; + } + + ICell c8 = rowi.CreateCell(7); c8.SetCellValue(""); c8.CellStyle = cellStyle; + if(!string.IsNullOrWhiteSpace(list[i]["FAllAmount"].ToString())) + { + decimal FAllAmount = Math.Round(Convert.ToDecimal(list[i]["FAllAmount"]), 2); + c8.SetCellValue("" + FAllAmount + ""); c8.CellStyle = cellStyle; + } + + ICell c9 = rowi.CreateCell(8); c9.SetCellValue(""); c9.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["OrderAmount"].ToString())) + { + decimal OrderAmount = Math.Round(Convert.ToDecimal(list[i]["OrderAmount"]), 2); + c9.SetCellValue("" + OrderAmount + ""); c9.CellStyle = cellStyle; + + } + + ICell c11 = rowi.CreateCell(10); c11.SetCellValue(""); c11.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["ShipmentsNum"].ToString())) + { + int ShipmentsNum = Convert.ToInt32(list[i]["ShipmentsNum"]); + c11.SetCellValue("" + ShipmentsNum + ""); c11.CellStyle = cellStyle; + } + + ICell c12 = rowi.CreateCell(11); c12.SetCellValue(""); c12.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["ShipmentsAmount"].ToString())) + { + decimal ShipmentsAmount = Math.Round(Convert.ToDecimal(list[i]["ShipmentsAmount"]), 2); + c12.SetCellValue("" + ShipmentsAmount + ""); c12.CellStyle = cellStyle; + } + + ICell c14 = rowi.CreateCell(13); c14.SetCellValue(""); c14.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["ReturnNum"].ToString())) + { + int ReturnNum = Convert.ToInt32(list[i]["ReturnNum"]); + c14.SetCellValue("" + ReturnNum + ""); c14.CellStyle = cellStyle; + } + + ICell c15 = rowi.CreateCell(14); c15.SetCellValue(""); c15.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["ReturnAmount"].ToString())) + { + decimal ReturnAmount = Math.Round(Convert.ToDecimal(list[i]["ReturnAmount"]), 2); + c15.SetCellValue("" + ReturnAmount + ""); c15.CellStyle = cellStyle; + } + + ICell c19 = rowi.CreateCell(18); c19.SetCellValue(""); c19.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["PaymentAmount"].ToString())) + { + + decimal PaymentAmount = Math.Round(Convert.ToDecimal(list[i]["PaymentAmount"]), 2); + c19.SetCellValue("" + PaymentAmount + ""); c19.CellStyle = cellStyle; + } + + ICell c20 = rowi.CreateCell(19); c20.SetCellValue(""); c20.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["ShippedDebt"].ToString())) + { + decimal ShippedDebt = Math.Round(Convert.ToDecimal(list[i]["ShippedDebt"]), 2); + c20.SetCellValue("" + ShippedDebt + ""); c20.CellStyle = cellStyle; + } + + ICell c21 = rowi.CreateCell(20); c21.SetCellValue(""); c21.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["InvoicedDebt"].ToString())) + { + decimal InvoicedDebt = Math.Round(Convert.ToDecimal(list[i]["InvoicedDebt"]), 2); + c21.SetCellValue("" + InvoicedDebt + ""); c21.CellStyle = cellStyle; + } + + ICell c17 = rowi.CreateCell(16); c17.SetCellValue(""); c17.CellStyle = cellStyle; + if (!string.IsNullOrWhiteSpace(list[i]["BillingAmount"].ToString())) + { + + decimal BillingAmount = Math.Round(Convert.ToDecimal(list[i]["BillingAmount"]), 2); + c17.SetCellValue("" + BillingAmount + ""); c17.CellStyle = cellStyle; + } + + ICell c10 = rowi.CreateCell(9); c10.SetCellValue(ShipmentsDate); c10.CellStyle = cellStyle2;//发货日期 + ICell c13 = rowi.CreateCell(12); c13.SetCellValue(ReturnDate); c13.CellStyle = cellStyle2;//退货日期 + ICell c16 = rowi.CreateCell(15); c16.SetCellValue(BillingDate); c16.CellStyle = cellStyle2; //开票日期 + ICell c18 = rowi.CreateCell(17); c18.SetCellValue(PaymentDate); c18.CellStyle = cellStyle2;//回款日期 + ICell c22 = rowi.CreateCell(21); c22.SetCellValue(list[i]["IsEnded"].ToString()); c22.CellStyle = cellStyle2; + ICell c23 = rowi.CreateCell(22); c23.SetCellValue(list[i]["Remark"].ToString()); c23.CellStyle = cellStyle2; + n++; + if(list[i]["Number"].ToString() == "合计") + { + c1.CellStyle = style3; + c2.CellStyle = style3; + c3.CellStyle = style3; + c4.CellStyle = style3; + c5.CellStyle = style3; + c6.CellStyle = style3; + c7.CellStyle = style3; + c8.CellStyle = style3; + c9.CellStyle = style3; + c10.CellStyle = style3; + c11.CellStyle = style3; + c12.CellStyle = style3; + c13.CellStyle = style3; + c14.CellStyle = style3; + c15.CellStyle = style3; + c16.CellStyle = style3; + c17.CellStyle = style3; + c18.CellStyle = style3; + c19.CellStyle = style3; + c20.CellStyle = style3; + c21.CellStyle = style3; + c22.CellStyle = style3; + c23.CellStyle = style3; + } + } + + #endregion + + #region 赋值汇总数据行 + + //获取工作簿中的第一个工作表(索引为1) + ISheet sheet2 = workbook.GetSheetAt(1); + IRow rr1 = sheet2.GetRow(15); + IRow rr2 = sheet2.GetRow(16); + IRow rr3 = sheet2.GetRow(17); + ICell cc1 = rr1.GetCell(6); + ICell cc2 = rr2.GetCell(6); + ICell cc3 = rr3.GetCell(6); + cc1.SetCellValue("" + YFHpriceSum + ""); + cc2.SetCellValue("" + YFPpriceSum + ""); + cc3.SetCellValue("" + priceSum + ""); + + #endregion + + #region 明细行后模板赋值 + + IRow R1 = sheet2.GetRow(15); + IRow R2 = sheet2.GetRow(16); + IRow R3 = sheet2.GetRow(17); + IRow R4 = sheet2.GetRow(18); + IRow R5 = sheet2.GetRow(19); + IRow R6 = sheet2.GetRow(20); + IRow R7 = sheet2.GetRow(21); + + IRow r1 = sheet.CreateRow(n); + IRow r2 = sheet.CreateRow(n + 1); + IRow r3 = sheet.CreateRow(n + 2); + IRow r4 = sheet.CreateRow(n + 3); + IRow r5 = sheet.CreateRow(n + 4); + IRow r6 = sheet.CreateRow(n + 5); + IRow r7 = sheet.CreateRow(n + 6); + + //第一行 + for (int i = 0; i < R1.LastCellNum; i++) + { + var test1 = ""; + if (R1.GetCell(i) != null) + { + test1 = R1.GetCell(i).ToString(); + } + ICell CR1 = r1.CreateCell(i); + CR1.SetCellValue(test1); + if (i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9) + { + CR1.CellStyle = style; + } + else + { + CR1.CellStyle = style2; + } + } + + //第二行 + for (int i = 0; i < R2.LastCellNum; i++) + { + var test1 = ""; + if (R2.GetCell(i) != null) + { + test1 = R2.GetCell(i).ToString(); + } + ICell CR1 = r2.CreateCell(i); + CR1.SetCellValue(test1); + if (i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9) + { + CR1.CellStyle = style; + } + else + { + CR1.CellStyle = style2; + } + } + + //第三行 + for (int i = 0; i < R3.LastCellNum; i++) + { + var test1 = ""; + if (R3.GetCell(i) != null) + { + test1 = R3.GetCell(i).ToString(); + } + ICell CR1 = r3.CreateCell(i); + CR1.SetCellValue(test1); + if (i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9) + { + CR1.CellStyle = style; + } + else + { + CR1.CellStyle = style2; + } + } + + //第四行 + for (int i = 0; i < R4.LastCellNum; i++) + { + var test1 = ""; + if (R4.GetCell(i) != null) + { + test1 = R4.GetCell(i).ToString(); + } + ICell CR1 = r4.CreateCell(i); + CR1.SetCellValue(test1); + CR1.CellStyle = style2; + } + + //第五行 + for (int i = 0; i < R5.LastCellNum; i++) + { + var test1 = ""; + if (R5.GetCell(i) != null) + { + test1 = R5.GetCell(i).ToString(); + } + ICell CR1 = r5.CreateCell(i); + CR1.SetCellValue(test1); + if (i >= 4) + { + CR1.CellStyle = style2; + } + } + + //第六行 + for (int i = 0; i < R6.LastCellNum; i++) + { + var test1 = ""; + if (R6.GetCell(i) != null) + { + test1 = R6.GetCell(i).ToString(); + } + ICell CR1 = r6.CreateCell(i); + CR1.SetCellValue(test1); + if (i >= 4) + { + CR1.CellStyle = style2; + } + } + + //第七行 + for (int i = 0; i < R7.LastCellNum; i++) + { + var test1 = ""; + if (R7.GetCell(i) != null) + { + test1 = R7.GetCell(i).ToString(); + } + ICell CR1 = r7.CreateCell(i); + CR1.SetCellValue(test1); + if (i >= 4) + { + CR1.CellStyle = style2; + } + } + + //合并单元格 + for (int i = 0; i < 7; i++) + { + // 合并单元格的起始行、结束行、起始列和结束列 + int firstRow = n + i; // 比如第一行 + int lastRow = n + i; // 合并到第三行(0-based index) + int firstCol = 4; // 比如第一列 + int firstCol2 = 7; // 比如第一列 + int firstCol3 = 0; // 比如第一列 + int lastCol = 5; // 合并到第三列(0-based index) + int lastCol2 = 9; // 合并到第三列(0-based index) + int lastCol3 = 3; // 合并到第三列(0-based index) + // 创建CellRangeAddress对象 + CellRangeAddress cellRangeAddress = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol); + CellRangeAddress cellRangeAddress2 = new CellRangeAddress(firstRow, lastRow, firstCol2, lastCol2); + CellRangeAddress cellRangeAddress3 = new CellRangeAddress(firstRow, lastRow, firstCol3, lastCol3); + // 合并单元格 + sheet.AddMergedRegion(cellRangeAddress); + sheet.AddMergedRegion(cellRangeAddress2); + sheet.AddMergedRegion(cellRangeAddress3); + } + + #endregion + + #region Excel代码2 + + string folderPath = Path.GetDirectoryName(outputFilePath); + if (!Directory.Exists(folderPath)) + { + Directory.CreateDirectory(folderPath); + } + FileStream exportFile = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write); + workbook.Write(exportFile); + exportFile.Close(); + + #endregion + + } + + public static string ToChineseNumber(decimal number, Kingdee.BOS.Context Context) + { + //Select top 1 dbo.ConvertAmountToChineseWords(12345.14) as 'PriceText' From T_SAL_ORDER + string sql = string.Format(@"/*dialect*/Select top 1 dbo.ConvertAmountToChineseWords({0}) as 'PriceText' From T_SAL_ORDER", number); + var list = DBUtils.ExecuteDynamicObject(Context, sql); + return list[0]["PriceText"].ToString(); + } + } +} diff --git a/YSZKDZGongNeng_MX/YourDataPlugIn2.cs b/YSZKDZGongNeng_MX/YourDataPlugIn2.cs new file mode 100644 index 0000000..1a9cbbb --- /dev/null +++ b/YSZKDZGongNeng_MX/YourDataPlugIn2.cs @@ -0,0 +1,115 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm; +using Kingdee.BOS.Core.Report.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.App.Data; + +namespace Pilot.Report.Exploitation.AccountsReceivable +{ + /// + /// 【表单插件】明细版-确认按钮 + /// + [Description("【表单插件】明细版-确认按钮-添加数据库"), HotUpdate] + public class YourDataPlugIn2: AbstractSysReportPlugIn + { + public override void BarItemClick(BarItemClickEventArgs e) + { + base.BarItemClick(e); + // 判断 应收对账单【明细版】确认生成单据按钮 + if (e.BarItemKey == "Test_Button_2") + { + + #region 应收账款对账单数据添加 + + var reportModel = this.SysReportModel; + + //单据头 + var rptTitles = reportModel.ReportTitles; + string fClient = rptTitles.FirstOrDefault(a => a.TitleKey == "FClient").TitleValue.ToString(); + string fDate = rptTitles.FirstOrDefault(a => a.TitleKey == "FDate").TitleValue.ToString(); + int creatorId = Convert.ToInt32(this.Context.UserId); + DateTime fDate2 = DateTime.Now; + //单据体 + var list = reportModel.DataSource.Rows; + + string sqlKH = string.Format(@"/*dialect*/Select FCUSTID From T_BD_CUSTOMER_L Where FNAME = '{0}'", fClient); + + var sqlKHList = DBUtils.ExecuteDynamicObject(Context, sqlKH); + + int fClientId = Convert.ToInt32(sqlKHList[0]["FCUSTID"]); + + string sqlTest = string.Format(@"/*dialect*/Select * From MBBA_t_Cust100006 Where FClient = '{0}' AND Month(FDATE) = Month('{1}')", fClientId, fDate); + + var sqlTestList = DBUtils.ExecuteDynamicObject(Context, sqlTest); + + if (sqlTestList.Count() == 0) + { + decimal YFHpriceSum = 0; + + for (var i = 0; i < list.Count; i++) + { + if (list[i]["Number"].ToString() == "合计") + { + YFHpriceSum = Math.Round(Convert.ToDecimal(list[i]["ShippedDebt"]), 2); + } + } + + string sqlSelect = string.Format(@"/*dialect*/Select top 1 FId,FBillNo From MBBA_t_Cust100006 Order By FID DESC"); + + var sqlSelectList = DBUtils.ExecuteDynamicObject(Context, sqlSelect); + + int FId = 1; + string FBillNo = "YSDZ0001"; + string FBillNoSplit = ""; + + if (sqlSelectList.Count > 0) + { + FId = sqlSelectList[0]["FId"].Long2Int(); + FId = FId + 1; + FBillNoSplit = sqlSelectList[0]["FBillNo"].ToString(); + int n = Convert.ToInt32(FBillNoSplit.Split('Z')[1]); + if (n < 1000) + { + FBillNo = "YSDZ" + "0" + (n + 1); + } + else if (n < 100) + { + FBillNo = "YSDZ" + "00" + (n + 1); + } + else if (n < 10) + { + FBillNo = "YSDZ" + "000" + (n + 1); + } + } + + string sql = string.Format(@"Insert into MBBA_t_Cust100006 Values('{5}','{6}','A','{3}','{4}','',null,'{0}','{1}','{2}')", + fClientId, fDate, YFHpriceSum, creatorId, fDate2, FId, FBillNo); + + int num = DBUtils.Execute(Context, sql); + + if (num > 0) + { + this.View.ShowMessage("应收账款对账单生成完毕,已存储数据库!"); + } + else + { + this.View.ShowErrMessage("数据添加失败!"); + } + } + else + { + this.View.ShowErrMessage("数据添加失败,已存在相同客户相同期间的对账单!"); + } + + #endregion + + } + } + } +} diff --git a/bin/Debug/GZ_LTHReportForms.dll b/bin/Debug/GZ_LTHReportForms.dll index e139cc3..ea1aa6a 100644 Binary files a/bin/Debug/GZ_LTHReportForms.dll and b/bin/Debug/GZ_LTHReportForms.dll differ diff --git a/bin/Debug/GZ_LTHReportForms.pdb b/bin/Debug/GZ_LTHReportForms.pdb index 1429ae3..ac1117b 100644 Binary files a/bin/Debug/GZ_LTHReportForms.pdb and b/bin/Debug/GZ_LTHReportForms.pdb differ diff --git a/派诺报表SQL文件/应收对账表(明细创建).sql b/派诺报表SQL文件/应收对账表(明细创建).sql new file mode 100644 index 0000000..41bbb09 --- /dev/null +++ b/派诺报表SQL文件/应收对账表(明细创建).sql @@ -0,0 +1,41 @@ +CREATE PROCEDURE UpdateYSDZBMX_GZTH +AS +BEGIN +--ֵ˰Ʊѯ +SELECT B.CONTRACTNUMBER AS '',SUM(A.FAFTERTOTALTAX) AS '˰ϼƱλ',A.FDATE AS 'רƱ' +INTO #TEMP1 +FROM T_IV_SALESIC A +INNER JOIN YingShouZhanKuanMX B ON A.F_PaperNumber = B.CONTRACTNUMBER +WHERE A.FDOCUMENTSTATUS = 'C' +AND A.FBillTypeID = '50ea4e69b6144f69961d2e9b44820929' +GROUP BY B.CONTRACTNUMBER,A.FDATE + +--Ʊѯ +SELECT B.CONTRACTNUMBER AS '',SUM(A.FAFTERTOTALTAX) AS '˰ϼƱλ',A.FDATE AS 'Ʊ' +INTO #TEMP2 +FROM T_IV_SALESIC A +INNER JOIN YingShouZhanKuanMX B ON A.F_PaperNumber = B.CONTRACTNUMBER +WHERE A.FDOCUMENTSTATUS = 'C' +AND A.FBillTypeID = '1cab58bc33d24e27826be02249f4edac' +GROUP BY B.CONTRACTNUMBER,A.FDATE + +--ƱƱڣƱƱ +UPDATE A +SET A.PPBillingDate = B.[Ʊ],A.PPBillingAmount = A.PPBillingAmount + B.˰ϼƱλ +FROM YingShouZhanKuanMX A +INNER JOIN #TEMP2 B ON B.[] = A.CONTRACTNUMBER + +--רƱƱڣרƱƱ +update A +SET A.ZPBillingDate = B.[רƱ],A.ZPBillingAmount = A.ZPBillingAmount + B.˰ϼƱλ +FROM YingShouZhanKuanMX A +INNER JOIN #TEMP1 B ON B.[] = A.CONTRACTNUMBER +END; + +--¿ƱƱ+רƱ +update YingShouZhanKuanMX +SET BillingAmount = PPBillingAmount + ZPBillingAmount + + + + diff --git a/派诺报表SQL文件/应收对账表(明细创建SQL).sql b/派诺报表SQL文件/应收对账表(明细创建SQL).sql new file mode 100644 index 0000000..4d6a60e --- /dev/null +++ b/派诺报表SQL文件/应收对账表(明细创建SQL).sql @@ -0,0 +1,31 @@ +CREATE TABLE YingShouZhanKuanMX ( + [DATE] NVARCHAR(3000), -- ǩ + CONTRACTNUMBER NVARCHAR(3000), -- + ProjectName NVARCHAR(3000), -- Ŀ + SizeModel NVARCHAR(3000), -- ͺ + FQty DECIMAL(23, 10), -- /̨ + FTaxPrice DECIMAL(23, 10), -- + FAllAmount DECIMAL(23, 10), -- ˰ϼ + OrderAmount DECIMAL(23, 10), -- + ShipmentsDate NVARCHAR(3000), -- + ShipmentsNum DECIMAL(23, 10), -- + ShipmentsAmount DECIMAL(23, 10), -- + ReturnDate NVARCHAR(3000), -- ˻ + ReturnNum DECIMAL(23, 10), -- ˻ + ReturnAmount DECIMAL(23, 10), -- ˻ + ZPBillingDate NVARCHAR(3000), -- רƱƱ + ZPBillingAmount DECIMAL(23, 10), -- רƱƱ + PPBillingDate NVARCHAR(3000), --ƱƱ + PPBillingAmount DECIMAL(23, 10), -- ƱƱ + BillingAmount DECIMAL(23, 10), -- Ʊ + PaymentDate NVARCHAR(3000), -- ؿ + PaymentAmount DECIMAL(23, 10), -- ؿ + ShippedDebt DECIMAL(23, 10), -- ѳǷ + InvoicedDebt DECIMAL(23, 10), -- ѿƱǷ + OwedTickets DECIMAL(23, 10), -- ǷƱ + IsEnded NVARCHAR(3000), -- Ƿ + Remark NVARCHAR(3000) -- ע +); + + +DROP TABLE YingShouZhanKuanMX \ No newline at end of file diff --git a/派诺报表SQL文件/应收对账表(简易).sql b/派诺报表SQL文件/应收对账表(简易).sql new file mode 100644 index 0000000..219587f --- /dev/null +++ b/派诺报表SQL文件/应收对账表(简易).sql @@ -0,0 +1,42 @@ +ALTER PROCEDURE UpdateYSDZBJY_GZTH +AS +BEGIN +--ֵ˰Ʊѯ +SELECT B.CONTRACTNUMBER AS '',SUM(A.FAFTERTOTALTAX) AS '˰ϼƱλ',A.FDATE AS 'רƱ' +INTO #TEMP1 +FROM T_IV_SALESIC A +INNER JOIN YingShouZhanKuanJY B ON A.F_PaperNumber = B.CONTRACTNUMBER +WHERE A.FDOCUMENTSTATUS = 'C' +AND A.FBillTypeID = '50ea4e69b6144f69961d2e9b44820929' +GROUP BY B.CONTRACTNUMBER,A.FDATE + +--Ʊѯ +SELECT B.CONTRACTNUMBER AS '',SUM(A.FAFTERTOTALTAX) AS '˰ϼƱλ',A.FDATE AS 'Ʊ' +INTO #TEMP2 +FROM T_IV_SALESIC A +INNER JOIN YingShouZhanKuanJY B ON A.F_PaperNumber = B.CONTRACTNUMBER +WHERE A.FDOCUMENTSTATUS = 'C' +AND A.FBillTypeID = '1cab58bc33d24e27826be02249f4edac' +GROUP BY B.CONTRACTNUMBER,A.FDATE + +--ƱƱڣƱƱ +UPDATE A +SET A.PPBillingDate = B.[Ʊ],A.PPBillingAmount = A.PPBillingAmount + B.˰ϼƱλ +FROM YingShouZhanKuanJY A +INNER JOIN #TEMP2 B ON B.[] = A.CONTRACTNUMBER + +--רƱƱڣרƱƱ +update A +SET A.ZPBillingDate = B.[רƱ],A.ZPBillingAmount = A.ZPBillingAmount + B.˰ϼƱλ +FROM YingShouZhanKuanJY A +INNER JOIN #TEMP1 B ON B.[] = A.CONTRACTNUMBER +END; + +--¿ƱƱ+רƱ +update YingShouZhanKuanJY +SET FALLAmountFor = PPFALLAmountFor + ZPFALLAmountFor + + + + + diff --git a/派诺报表SQL文件/应收对账表(简易)更新数据.sql b/派诺报表SQL文件/应收对账表(简易)更新数据.sql new file mode 100644 index 0000000..a80e1d4 --- /dev/null +++ b/派诺报表SQL文件/应收对账表(简易)更新数据.sql @@ -0,0 +1,42 @@ +CREATE PROCEDURE UpdateYSDZBJY_GZTH +AS +BEGIN +--ֵ˰Ʊѯ +SELECT B.CONTRACTNUMBER AS '',SUM(A.FAFTERTOTALTAX) AS '˰ϼƱλ',A.FDATE AS 'רƱ' +INTO #TEMP1 +FROM T_IV_SALESIC A +INNER JOIN YingShouZhanKuanJY B ON A.F_PaperNumber = B.CONTRACTNUMBER +WHERE A.FDOCUMENTSTATUS = 'C' +AND A.FBillTypeID = '50ea4e69b6144f69961d2e9b44820929' +GROUP BY B.CONTRACTNUMBER,A.FDATE + +--Ʊѯ +SELECT B.CONTRACTNUMBER AS '',SUM(A.FAFTERTOTALTAX) AS '˰ϼƱλ',A.FDATE AS 'Ʊ' +INTO #TEMP2 +FROM T_IV_SALESIC A +INNER JOIN YingShouZhanKuanJY B ON A.F_PaperNumber = B.CONTRACTNUMBER +WHERE A.FDOCUMENTSTATUS = 'C' +AND A.FBillTypeID = '1cab58bc33d24e27826be02249f4edac' +GROUP BY B.CONTRACTNUMBER,A.FDATE + +--ƱƱڣƱƱ +UPDATE A +SET A.PPBillingDate = B.[Ʊ],A.PPFALLAmountFor = A.PPFALLAmountFor + B.˰ϼƱλ +FROM YingShouZhanKuanJY A +INNER JOIN #TEMP2 B ON B.[] = A.CONTRACTNUMBER + +--רƱƱڣרƱƱ +update A +SET A.ZPBillingDate = B.[רƱ],A.ZPFALLAmountFor = A.ZPFALLAmountFor + B.˰ϼƱλ +FROM YingShouZhanKuanJY A +INNER JOIN #TEMP1 B ON B.[] = A.CONTRACTNUMBER +END; + +--¿ƱƱ+רƱ +update YingShouZhanKuanJY +SET FALLAmountFor = PPFALLAmountFor + ZPFALLAmountFor + + + + + \ No newline at end of file diff --git a/派诺报表SQL文件/应收对账表(简易创建).sql b/派诺报表SQL文件/应收对账表(简易创建).sql new file mode 100644 index 0000000..cd831ec --- /dev/null +++ b/派诺报表SQL文件/应收对账表(简易创建).sql @@ -0,0 +1,22 @@ +CREATE TABLE YingShouZhanKuanJY( + Number nvarchar(MAX),-- + Date VARCHAR(2000), -- ǩ + ContractNumber VARCHAR(2000), -- + ProjectName VARCHAR(2000), -- Ŀ + OrderAmount DECIMAL(23, 10), -- + ShipmentsAmount DECIMAL(23, 10), -- + FBillAllAmount DECIMAL(23, 10), -- ˻ + PPBillingDate VARCHAR(2000), --ƱƱʱ + PPFALLAmountFor DECIMAL(23, 10), -- ƱƱ + ZPBillingDate VARCHAR(2000), --רƱƱʱ + ZPFALLAmountFor DECIMAL(23, 10), -- רƱƱ + FALLAmountFor DECIMAL(23, 10), -- Ʊ + PaymentAmount DECIMAL(23, 10), -- ؿ + ShippedDebt DECIMAL(23, 10), -- ѳǷ + InvoicedDebt DECIMAL(23, 10), -- ѿƱǷ + OwedTickets VARCHAR(2000), -- ǷƱ + IsEnded VARCHAR(2000), -- Ƿ + Remark VARCHAR(2000) -- ע +); + +DROP TABLE YingShouZhanKuanJY; \ No newline at end of file diff --git a/派诺报表SQL文件/订单未发货明细表创建表单sql.sql b/派诺报表SQL文件/订单未发货明细表创建表单sql.sql index 7600948..62668a6 100644 --- a/派诺报表SQL文件/订单未发货明细表创建表单sql.sql +++ b/派诺报表SQL文件/订单未发货明细表创建表单sql.sql @@ -13,6 +13,7 @@ CREATE TABLE GZ_DDWFHMX_TH ( ͺ VARCHAR(5000), DECIMAL(23, 10), ˰ DECIMAL(23, 10), + ˰ϼ DECIMAL(23, 10), ѷ DECIMAL(23, 10), ѷ DECIMAL(23, 10), δ DECIMAL(23, 10), @@ -21,4 +22,6 @@ CREATE TABLE GZ_DDWFHMX_TH ( VARCHAR(5000) ); ---DROP TABLE GZ_DDWFHMX_TH \ No newline at end of file +--DROP TABLE GZ_DDWFHMX_TH + +SELECT SUM([˰ϼ]) FROM GZ_DDWFHMX_TH \ No newline at end of file diff --git a/派诺报表SQL文件/订单未发货明细表插入数据SQL.sql b/派诺报表SQL文件/订单未发货明细表插入数据SQL.sql index 3876807..dbaa455 100644 --- a/派诺报表SQL文件/订单未发货明细表插入数据SQL.sql +++ b/派诺报表SQL文件/订单未发货明细表插入数据SQL.sql @@ -1,91 +1,86 @@ -ALTER PROCEDURE GZTH_DDWFHMXB - @FSDate nvarchar(1000), - @FEDate nvarchar(1000), - @FSaleOrgId nvarchar(1000) -AS -BEGIN - DECLARE @ConvertedDate DATE; - - SET @ConvertedDate = CONVERT(DATE, @FEDate, 120); - -- ϼһ - SET @ConvertedDate = DATEADD(DAY, 1, @ConvertedDate); - - TRUNCATE TABLE GZ_DDWFHMX_TH - - SELECT - A.FID AS FID, - AE.FENTRYID AS FENTRYID, - A.FApproveDate AS '', - B.FNAME AS 'Ƶ', - CASE WHEN ISNULL(E.FNAME,'') = '' THEN ACG. - ELSE ACE. END AS '', - CASE WHEN ISNULL(E.FNAME,'') = '' THEN G.FNAME - ELSE E.FNAME END AS 'ҵԱ', - A.F_contractnumber AS 'ͬ', - F.FNAME AS 'ͻ', - H.FNAME AS 'Ŀ', - WL.FNUMBER AS 'ϱ', - WL_L.FNAME AS '', - WL_L.FSpecification AS 'ͺ', - AE.FQTY AS '', - AE_F.FTaxPrice AS '˰', - HT_L.FDATAVALUE AS 'ͬ', - A.F_Deliveryconditions AS '' - INTO #TEMP1 - FROM T_SAL_ORDER A - INNER JOIN T_SEC_USER B ON A.FCreatorId = B.FUSERID --û - INNER JOIN V_BD_SALESMAN_L G ON G.FID = A.FSALERID -- Ա۶ - LEFT JOIN T_PerformanceSharing C ON C.FSOURCEBILLNO = A.FBILLNO AND C.FDOCUMENTSTATUS = 'C' --ҵ̯ - LEFT JOIN T_PerformanceSharingEntry D ON C.FID=D.FID --ҵ̯ϸ - LEFT JOIN V_BD_SALESMAN_L E ON E.fid= D.FSaleId --Ա,ҵ̯ - LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACE ON ACE.=E.FNAME --ҵ̯Ա - LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACG ON ACG.=G.FNAME --۶ҵԱ - INNER JOIN T_BD_CUSTOMER_L F ON F.FCUSTID = A.FCustId --ͻ - INNER JOIN T_BAS_PREBDONE_L H ON H.FID = A.F_projectname --ĿƱ - INNER JOIN T_SAL_ORDERENTRY AE ON AE.FID = A.FID --۶ϸ - INNER JOIN T_BD_MATERIAL WL ON WL.FMATERIALID = AE.FMaterialId --ϱ - INNER JOIN T_BD_MATERIAL_L WL_L ON WL_L.FMATERIALID = WL.FMATERIALID --_L - INNER JOIN T_SAL_ORDERENTRY_F AE_F ON AE_F.FENTRYID = AE.FENTRYID --۶ϸ- - INNER JOIN T_BAS_ASSISTANTDATAENTRY_L HT_L On A.F_Ordercategory = HT_L.FENTRYID --ͬ͸_L - WHERE A.FDocumentStatus = 'C' - AND (ISNULL(@FSaleOrgId,'') = '' OR A.FSaleOrgId = @FSaleOrgId) - AND (ISNULL(@FSDate,'') = '' OR A.FAPPROVEDATE >= @FSDate) - AND (ISNULL(@FEDate,'') = '' OR A.FAPPROVEDATE < @ConvertedDate) - - INSERT INTO GZ_DDWFHMX_TH([FId],[FENTRYID],[],[Ƶ],[],[ҵԱ],[ͬ],[ͻ],[Ŀ], - [ϱ],[],[ͺ],[],[˰],[ͬ],[]) - SELECT * FROM #TEMP1 - - - SELECT - E.FID AS FID, - D.FENTRYID AS FENTRYID, - SUM(B.FQTY) AS 'ѷ', - SUM(BF.FAllAmount_LC) AS 'ѷ' - INTO #TEMP2 - FROM T_SAL_DELIVERYNOTICE A - INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID - INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F BF ON BF.FENTRYID = B.FENTRYID - INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' - INNEr JOIN T_SAL_ORDERENTRY D ON C.FSID = D.FENTRYID - INNER JOIN T_SAL_ORDER E ON D.FID = E.FID - WHERE - A.FDOCUMENTSTATUS = 'C' - AND (ISNULL(@FSaleOrgId,'') = '' OR E.FSaleOrgId = @FSaleOrgId) - AND(ISNULL(@FSDate,'') = '' OR E.FAPPROVEDATE >= @FSDate) - AND (ISNULL(@FEDate,'') = '' OR E.FAPPROVEDATE <= @ConvertedDate) - GROUP BY E.FID,D.FENTRYID - - UPDATE A - SET A.[ѷ] = B.[ѷ],A.[ѷ] = B.[ѷ] - FROM GZ_DDWFHMX_TH A - INNER JOIN #TEMP2 B ON A.FId = B.FID AND A.FENTRYID = B.FENTRYID - - UPDATE A - SET A.[δ] = ISNULL(A.[],0) - ISNULL(A.[ѷ],0),A.[δ] = B.FALLAMOUNT_LC - ISNULL(A.[ѷ],0) - FROM GZ_DDWFHMX_TH A - INNER JOIN T_SAL_ORDERENTRY_F B ON A.FENTRYID = B.FENTRYID - - DROP TABLE #TEMP1,#TEMP2 -END; - +CREATE PROCEDURE GZTH_DDWFHMXB + @FSDate nvarchar(1000), + @FEDate nvarchar(1000), + @FSaleOrgId nvarchar(1000) +AS +BEGIN + DECLARE @ConvertedDate DATE; + + SET @ConvertedDate = CONVERT(DATE, @FEDate, 120); + -- ϼһ + SET @ConvertedDate = DATEADD(DAY, 1, @ConvertedDate); + + TRUNCATE TABLE GZ_DDWFHMX_TH + + SELECT + A.FID AS FID, + AE.FENTRYID AS FENTRYID, + A.FApproveDate AS '', + B.FNAME AS 'Ƶ', + ACG. AS '', + G.FNAME AS 'ҵԱ', + A.F_contractnumber AS 'ͬ', + F.FNAME AS 'ͻ', + H.FNAME AS 'Ŀ', + WL.FNUMBER AS 'ϱ', + WL_L.FNAME AS '', + WL_L.FSpecification AS 'ͺ', + AE.FQTY AS '', + AE_F.FTaxPrice AS '˰', + AE_F.FALLAMOUNT_LC AS '˰ϼ', + HT_L.FDATAVALUE AS 'ͬ', + A.F_Deliveryconditions AS '' + INTO #TEMP1 + FROM T_SAL_ORDER A + INNER JOIN T_SEC_USER B ON A.FCreatorId = B.FUSERID --û + INNER JOIN V_BD_SALESMAN_L G ON G.FID = A.FSALERID -- Ա۶ + LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACG ON ACG.=G.FNAME --۶ҵԱ + INNER JOIN T_BD_CUSTOMER_L F ON F.FCUSTID = A.FCustId --ͻ + INNER JOIN T_BAS_PREBDONE_L H ON H.FID = A.F_projectname --ĿƱ + INNER JOIN T_SAL_ORDERENTRY AE ON AE.FID = A.FID --۶ϸ + INNER JOIN T_BD_MATERIAL WL ON WL.FMATERIALID = AE.FMaterialId --ϱ + INNER JOIN T_BD_MATERIAL_L WL_L ON WL_L.FMATERIALID = WL.FMATERIALID --_L + INNER JOIN T_SAL_ORDERENTRY_F AE_F ON AE_F.FENTRYID = AE.FENTRYID --۶ϸ- + INNER JOIN T_BAS_ASSISTANTDATAENTRY_L HT_L On A.F_Ordercategory = HT_L.FENTRYID --ͬ͸_L + WHERE A.FDocumentStatus = 'C' + AND (ISNULL(@FSaleOrgId,'') = '' OR A.FSaleOrgId = @FSaleOrgId) + AND (ISNULL(@FSDate,'') = '' OR A.FAPPROVEDATE >= @FSDate) + AND (ISNULL(@FEDate,'') = '' OR A.FAPPROVEDATE < @ConvertedDate) + + INSERT INTO GZ_DDWFHMX_TH([FId],[FENTRYID],[],[Ƶ],[],[ҵԱ],[ͬ],[ͻ],[Ŀ], + [ϱ],[],[ͺ],[],[˰],[˰ϼ],[ͬ],[]) + SELECT * FROM #TEMP1 + + + SELECT + E.FID AS FID, + D.FENTRYID AS FENTRYID, + SUM(B.FQTY) AS 'ѷ', + SUM(BF.FAllAmount_LC) AS 'ѷ' + INTO #TEMP2 + FROM T_SAL_DELIVERYNOTICE A + INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F BF ON BF.FENTRYID = B.FENTRYID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNEr JOIN T_SAL_ORDERENTRY D ON C.FSID = D.FENTRYID + INNER JOIN T_SAL_ORDER E ON D.FID = E.FID + WHERE + A.FDOCUMENTSTATUS = 'C' + AND (ISNULL(@FSaleOrgId,'') = '' OR E.FSaleOrgId = @FSaleOrgId) + AND(ISNULL(@FSDate,'') = '' OR E.FAPPROVEDATE >= @FSDate) + AND (ISNULL(@FEDate,'') = '' OR E.FAPPROVEDATE <= @ConvertedDate) + GROUP BY E.FID,D.FENTRYID + + UPDATE A + SET A.[ѷ] = B.[ѷ],A.[ѷ] = B.[ѷ] + FROM GZ_DDWFHMX_TH A + INNER JOIN #TEMP2 B ON A.FId = B.FID AND A.FENTRYID = B.FENTRYID + + UPDATE A + SET A.[δ] = ISNULL(A.[],0) - ISNULL(A.[ѷ],0),A.[δ] = B.FALLAMOUNT_LC - ISNULL(A.[ѷ],0) + FROM GZ_DDWFHMX_TH A + INNER JOIN T_SAL_ORDERENTRY_F B ON A.FENTRYID = B.FENTRYID + + DROP TABLE #TEMP1,#TEMP2 +END; + \ No newline at end of file