1
This commit is contained in:
parent
c9a8a895d3
commit
470016f428
@ -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<SummaryField> 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));
|
||||
|
@ -46,6 +46,18 @@
|
||||
<Reference Include="Kingdee.BOS.DataEntity">
|
||||
<HintPath>..\..\GZ_LTHYJZZHTH\bin\Debug\Kingdee.BOS.DataEntity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NPOI">
|
||||
<HintPath>..\..\派诺报表-裴豪\派诺报表\代码\Piolot_RepotForm\Pilot.Report.Exploitation\bin\Debug\NPOI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NPOI.OOXML">
|
||||
<HintPath>..\..\派诺报表-裴豪\派诺报表\代码\Piolot_RepotForm\Pilot.Report.Exploitation\bin\Debug\NPOI.OOXML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NPOI.OpenXml4Net">
|
||||
<HintPath>..\..\派诺报表-裴豪\派诺报表\代码\Piolot_RepotForm\Pilot.Report.Exploitation\bin\Debug\NPOI.OpenXml4Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NPOI.OpenXmlFormats">
|
||||
<HintPath>..\..\派诺报表-裴豪\派诺报表\代码\Piolot_RepotForm\Pilot.Report.Exploitation\bin\Debug\NPOI.OpenXmlFormats.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@ -65,6 +77,15 @@
|
||||
<Compile Include="YingShouBaoBiao\YingShouQDNF.cs" />
|
||||
<Compile Include="YingShouBaoBiao\YingShouSBU.cs" />
|
||||
<Compile Include="YingShouBaoBiao\YingShouQKBiao.cs" />
|
||||
<Compile Include="YSKDZGongNeng_JY\LiteVersionPlugIn.cs" />
|
||||
<Compile Include="YSKDZGongNeng_JY\ProgramNumber.cs" />
|
||||
<Compile Include="YSKDZGongNeng_JY\YourDataPlugIn.cs" />
|
||||
<Compile Include="YSZKDZBaoBiao\AccountsReceivableFiter.cs" />
|
||||
<Compile Include="YSZKDZBaoBiao\AccountsReceivablePlugIn.cs" />
|
||||
<Compile Include="YSZKDZBaoBiao\AccountsReceivableReport.cs" />
|
||||
<Compile Include="YSZKDZBaoBiao\AccountsReceivableReport2.cs" />
|
||||
<Compile Include="YSZKDZGongNeng_MX\LiteVersionPlugIn2.cs" />
|
||||
<Compile Include="YSZKDZGongNeng_MX\YourDataPlugIn2.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
|
467
YSKDZGongNeng_JY/LiteVersionPlugIn.cs
Normal file
467
YSKDZGongNeng_JY/LiteVersionPlugIn.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 【表单插件】简易版-按钮触发
|
||||
/// </summary>
|
||||
[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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 赋值EXCEL
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
71
YSKDZGongNeng_JY/ProgramNumber.cs
Normal file
71
YSKDZGongNeng_JY/ProgramNumber.cs
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
115
YSKDZGongNeng_JY/YourDataPlugIn.cs
Normal file
115
YSKDZGongNeng_JY/YourDataPlugIn.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 【表单插件】简易版-确认按钮
|
||||
/// </summary>
|
||||
[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
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
27
YSZKDZBaoBiao/AccountsReceivableFiter.cs
Normal file
27
YSZKDZBaoBiao/AccountsReceivableFiter.cs
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
36
YSZKDZBaoBiao/AccountsReceivablePlugIn.cs
Normal file
36
YSZKDZBaoBiao/AccountsReceivablePlugIn.cs
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
344
YSZKDZBaoBiao/AccountsReceivableReport.cs
Normal file
344
YSZKDZBaoBiao/AccountsReceivableReport.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 应收账款对账报表【简易版】
|
||||
/// </summary>
|
||||
[Description("【服务插件】应收账款对账报表【简易版】取数"), HotUpdate]
|
||||
public class AccountsReceivableReport: SysReportBaseService
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化
|
||||
/// </summary>
|
||||
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<DecimalControlField>
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报表列表头
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示报表数据
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <param name="tableName"></param>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取前端组件转换过滤条件
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
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<SummaryField> 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;
|
||||
}
|
||||
}
|
||||
}
|
396
YSZKDZBaoBiao/AccountsReceivableReport2.cs
Normal file
396
YSZKDZBaoBiao/AccountsReceivableReport2.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 应收账款对账报表【明细版】
|
||||
/// </summary>
|
||||
[Description("[服务插件] 应收账款对账报表【明细版】取数"), HotUpdate]
|
||||
public class AccountsReceivableReport2 : SysReportBaseService
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化
|
||||
/// </summary>
|
||||
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<DecimalControlField>
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报表列表头
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示报表数据
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <param name="tableName"></param>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取前端组件转换过滤条件
|
||||
/// </summary>
|
||||
/// <param name="filter"></param>
|
||||
/// <returns></returns>
|
||||
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<SummaryField> 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;
|
||||
}
|
||||
}
|
||||
}
|
562
YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs
Normal file
562
YSZKDZGongNeng_MX/LiteVersionPlugIn2.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 【表单插件】明细版-按钮触发
|
||||
/// </summary>
|
||||
[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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 赋值EXCEL
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
115
YSZKDZGongNeng_MX/YourDataPlugIn2.cs
Normal file
115
YSZKDZGongNeng_MX/YourDataPlugIn2.cs
Normal file
@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 【表单插件】明细版-确认按钮
|
||||
/// </summary>
|
||||
[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
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
41
派诺报表SQL文件/应收对账表(明细创建).sql
Normal file
41
派诺报表SQL文件/应收对账表(明细创建).sql
Normal file
@ -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
|
||||
|
||||
|
||||
|
||||
|
31
派诺报表SQL文件/应收对账表(明细创建SQL).sql
Normal file
31
派诺报表SQL文件/应收对账表(明细创建SQL).sql
Normal file
@ -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
|
42
派诺报表SQL文件/应收对账表(简易).sql
Normal file
42
派诺报表SQL文件/应收对账表(简易).sql
Normal file
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
42
派诺报表SQL文件/应收对账表(简易)更新数据.sql
Normal file
42
派诺报表SQL文件/应收对账表(简易)更新数据.sql
Normal file
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
22
派诺报表SQL文件/应收对账表(简易创建).sql
Normal file
22
派诺报表SQL文件/应收对账表(简易创建).sql
Normal file
@ -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;
|
@ -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
|
||||
--DROP TABLE GZ_DDWFHMX_TH
|
||||
|
||||
SELECT SUM([价税合计]) FROM GZ_DDWFHMX_TH
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user