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.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);
|
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}
|
INTO {3}
|
||||||
FROM GZ_DDWFHMX_TH
|
FROM GZ_DDWFHMX_TH
|
||||||
|
WHERE [未发货数量] <> 0 AND [未发货数量] > 0
|
||||||
ORDER BY [日期]
|
ORDER BY [日期]
|
||||||
", FstartDate, FEndDate, FSaleOrgId, tableName);
|
", FstartDate, FEndDate, FSaleOrgId, tableName);
|
||||||
DBUtils.Execute(this.Context, sql);
|
DBUtils.Execute(this.Context, sql);
|
||||||
@ -115,8 +117,9 @@ namespace GZ_LTHReportForms.ReporyDDWFH
|
|||||||
public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
|
public override List<SummaryField> GetSummaryColumnInfo(IRptParams filter)
|
||||||
{
|
{
|
||||||
var result = base.GetSummaryColumnInfo(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));
|
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">
|
<Reference Include="Kingdee.BOS.DataEntity">
|
||||||
<HintPath>..\..\GZ_LTHYJZZHTH\bin\Debug\Kingdee.BOS.DataEntity.dll</HintPath>
|
<HintPath>..\..\GZ_LTHYJZZHTH\bin\Debug\Kingdee.BOS.DataEntity.dll</HintPath>
|
||||||
</Reference>
|
</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" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
@ -65,6 +77,15 @@
|
|||||||
<Compile Include="YingShouBaoBiao\YingShouQDNF.cs" />
|
<Compile Include="YingShouBaoBiao\YingShouQDNF.cs" />
|
||||||
<Compile Include="YingShouBaoBiao\YingShouSBU.cs" />
|
<Compile Include="YingShouBaoBiao\YingShouSBU.cs" />
|
||||||
<Compile Include="YingShouBaoBiao\YingShouQKBiao.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>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<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),
|
规格型号 VARCHAR(5000),
|
||||||
数量 DECIMAL(23, 10),
|
数量 DECIMAL(23, 10),
|
||||||
含税单价 DECIMAL(23, 10),
|
含税单价 DECIMAL(23, 10),
|
||||||
|
价税合计 DECIMAL(23, 10),
|
||||||
已发货数量 DECIMAL(23, 10),
|
已发货数量 DECIMAL(23, 10),
|
||||||
已发货金额 DECIMAL(23, 10),
|
已发货金额 DECIMAL(23, 10),
|
||||||
未发货数量 DECIMAL(23, 10),
|
未发货数量 DECIMAL(23, 10),
|
||||||
@ -22,3 +23,5 @@ CREATE TABLE GZ_DDWFHMX_TH (
|
|||||||
);
|
);
|
||||||
|
|
||||||
--DROP TABLE GZ_DDWFHMX_TH
|
--DROP TABLE GZ_DDWFHMX_TH
|
||||||
|
|
||||||
|
SELECT SUM([价税合计]) FROM GZ_DDWFHMX_TH
|
@ -1,4 +1,4 @@
|
|||||||
ALTER PROCEDURE GZTH_DDWFHMXB
|
CREATE PROCEDURE GZTH_DDWFHMXB
|
||||||
@FSDate nvarchar(1000),
|
@FSDate nvarchar(1000),
|
||||||
@FEDate nvarchar(1000),
|
@FEDate nvarchar(1000),
|
||||||
@FSaleOrgId nvarchar(1000)
|
@FSaleOrgId nvarchar(1000)
|
||||||
@ -17,10 +17,8 @@ BEGIN
|
|||||||
AE.FENTRYID AS FENTRYID,
|
AE.FENTRYID AS FENTRYID,
|
||||||
A.FApproveDate AS '日期',
|
A.FApproveDate AS '日期',
|
||||||
B.FNAME AS '制单人',
|
B.FNAME AS '制单人',
|
||||||
CASE WHEN ISNULL(E.FNAME,'') = '' THEN ACG.区域
|
ACG.区域 AS '区域',
|
||||||
ELSE ACE.区域 END AS '区域',
|
G.FNAME AS '业务员',
|
||||||
CASE WHEN ISNULL(E.FNAME,'') = '' THEN G.FNAME
|
|
||||||
ELSE E.FNAME END AS '业务员',
|
|
||||||
A.F_contractnumber AS '合同号',
|
A.F_contractnumber AS '合同号',
|
||||||
F.FNAME AS '客户',
|
F.FNAME AS '客户',
|
||||||
H.FNAME AS '项目名',
|
H.FNAME AS '项目名',
|
||||||
@ -29,16 +27,13 @@ BEGIN
|
|||||||
WL_L.FSpecification AS '规格型号',
|
WL_L.FSpecification AS '规格型号',
|
||||||
AE.FQTY AS '数量',
|
AE.FQTY AS '数量',
|
||||||
AE_F.FTaxPrice AS '含税单价',
|
AE_F.FTaxPrice AS '含税单价',
|
||||||
|
AE_F.FALLAMOUNT_LC AS '价税合计',
|
||||||
HT_L.FDATAVALUE AS '合同类型',
|
HT_L.FDATAVALUE AS '合同类型',
|
||||||
A.F_Deliveryconditions AS '发货条件'
|
A.F_Deliveryconditions AS '发货条件'
|
||||||
INTO #TEMP1
|
INTO #TEMP1
|
||||||
FROM T_SAL_ORDER A
|
FROM T_SAL_ORDER A
|
||||||
INNER JOIN T_SEC_USER B ON A.FCreatorId = B.FUSERID --用户表
|
INNER JOIN T_SEC_USER B ON A.FCreatorId = B.FUSERID --用户表
|
||||||
INNER JOIN V_BD_SALESMAN_L G ON G.FID = A.FSALERID -- 员工表,销售订单
|
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 --销售订单业务员区域
|
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_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_BAS_PREBDONE_L H ON H.FID = A.F_projectname --工程项目名称表
|
||||||
@ -53,7 +48,7 @@ BEGIN
|
|||||||
AND (ISNULL(@FEDate,'') = '' OR A.FAPPROVEDATE < @ConvertedDate)
|
AND (ISNULL(@FEDate,'') = '' OR A.FAPPROVEDATE < @ConvertedDate)
|
||||||
|
|
||||||
INSERT INTO GZ_DDWFHMX_TH([FId],[FENTRYID],[日期],[制单人],[区域],[业务员],[合同号],[客户],[项目名],
|
INSERT INTO GZ_DDWFHMX_TH([FId],[FENTRYID],[日期],[制单人],[区域],[业务员],[合同号],[客户],[项目名],
|
||||||
[物料编码],[物料名称],[规格型号],[数量],[含税单价],[合同类型],[发货条件])
|
[物料编码],[物料名称],[规格型号],[数量],[含税单价],[价税合计],[合同类型],[发货条件])
|
||||||
SELECT * FROM #TEMP1
|
SELECT * FROM #TEMP1
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user