using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Collections;
using AmbitsBusiness_CLR;
public partial class WYTableFunction
{
/// <summary>
/// 按会计月计算应收日期
/// CybleBeginDate:周期实际的起始日,由于是按会计月计,所以永远与计算的起始日相同。
/// CybleEndDate:周期实际的结束日。
/// </summary>
/// <param name="UnitType"></param>
/// <param name="Cycle"></param>
/// <param name="sBeginDate"></param>
/// <param name="sEndDate"></param>
/// <param name="ExesType"></param>
/// <param name="ExesMonth"></param>
/// <param name="AccDate"></param>
/// <returns></returns>
[SqlFunction(TableDefinition = @" BeginDate DateTime,EndDate DateTime,GatheringDate DateTime,CybleBeginDate DateTime,CycleEndDate DateTime", FillRowMethodName = "FillRow2")]
public static IEnumerable CW_F_CalDateTable_Accountant(int UnitType, int Cycle, string sBeginDate,
string sEndDate, int ExesType, int ExesMonth, int AccDate, int iEnumPeroiod, bool ReturnDataRow)
{
enumPeroiod Peroid = (enumPeroiod)iEnumPeroiod;
DateTime BeginDate = Convert.ToDateTime(sBeginDate);
DateTime EndDate = Convert.ToDateTime(sEndDate);
DateTime AccountDate = DateTime.MinValue;
List<DateTime[]> rowList = new List<DateTime[]>();
DateTime dtBegin = BeginDate, dtEnd;
DateTime dtCycleEndDate = EndDate;
DateTime dtCybleBeginDate = dtBegin;//按会计月,则周期的起始日与原起始日相同。
//Globe.SendString(string.Format("生成周期,从{0:yyyy-MM-dd}至{1:yyyy-MM-dd}", BeginDate, EndDate));
switch (UnitType)
{
#region
case 1://年
while (dtBegin <= EndDate)
{
if (Peroid == enumPeroiod.NotSplit)
{
dtEnd = EndDate;
}
else
dtEnd = dtBegin.AddYears(Cycle);
dtCycleEndDate = dtEnd.AddDays(-1);
dtCybleBeginDate = dtEnd.AddYears(-Cycle);
if (dtEnd > EndDate)
dtEnd = EndDate;
else
dtEnd = dtEnd.AddDays(-1);
AccountDate=CalAccountDate(dtBegin, dtEnd, ExesType, ExesMonth, AccDate);
rowList.Add(new DateTime[] { dtBegin, dtEnd, AccountDate, dtCybleBeginDate, dtCycleEndDate });
if (Peroid != enumPeroiod.AllPeroid) break;
dtBegin = dtEnd.AddDays(1);
}
break;
#endregion
#region 季交
case 2://季
while (dtBegin <= EndDate)
{
if (Peroid == enumPeroiod.NotSplit)
{
dtEnd = EndDate;
}
else
dtEnd = dtBegin.AddMonths(Cycle * 3);
dtCycleEndDate = dtEnd.AddDays(-1);
dtCybleBeginDate = dtEnd.AddMonths(-Cycle*3);
if (dtEnd > EndDate)
dtEnd = EndDate;
else
dtEnd = dtEnd.AddDays(-1);
//dtEnd = new DateTime(dtEnd.Year, dtEnd.Month, 1).AddDays(-1);
AccountDate=CalAccountDate(dtBegin, dtEnd, ExesType, ExesMonth, AccDate);
rowList.Add(new DateTime[] { dtBegin, dtEnd, AccountDate, dtCybleBeginDate, dtCycleEndDate });
if (Peroid != enumPeroiod.AllPeroid) break;
dtBegin = dtEnd.AddDays(1);
}
break;
#endregion
#region 月交
case 3://月
while (dtBegin <= EndDate)
{
if (Peroid == enumPeroiod.NotSplit)
{
dtEnd = EndDate;
}
else
dtEnd = dtBegin.AddMonths(Cycle);
dtCycleEndDate =dtEnd.AddDays(-1);
dtCybleBeginDate = dtEnd.AddMonths(-Cycle);
if (dtEnd > EndDate)
dtEnd = EndDate;
else
dtEnd = dtEnd.AddDays(-1);
AccountDate=CalAccountDate(dtBegin, dtEnd, ExesType, ExesMonth, AccDate);
rowList.Add(new DateTime[] { dtBegin, dtEnd, AccountDate, dtCybleBeginDate, dtCycleEndDate });
if (Peroid != enumPeroiod.AllPeroid) break;
dtBegin = dtEnd.AddDays(1);
}
break;
#endregion
#region 周交
case 4://周
while (dtBegin <= EndDate)
{
if (Peroid == enumPeroiod.NotSplit)
{
dtEnd = EndDate;
}
else
dtEnd = dtBegin.AddDays(Cycle * 7);
dtCycleEndDate = dtEnd.AddDays(-1);
dtCybleBeginDate = dtEnd.AddDays(-Cycle*7);
if (dtEnd > EndDate)
dtEnd = EndDate;
else
dtEnd = dtEnd.AddDays(-1);
AccountDate=CalAccountDate(dtBegin, dtEnd, ExesType, ExesMonth, AccDate);
rowList.Add(new DateTime[] { dtBegin, dtEnd, AccountDate, dtCybleBeginDate, dtCycleEndDate });
if (Peroid != enumPeroiod.AllPeroid) break;
dtBegin = dtEnd.AddDays(1);
}
break;
#endregion
#region 日交
case 5://日
while (dtBegin <= EndDate)
{
dtEnd = dtBegin.AddDays(Cycle);
if (dtEnd > EndDate)
dtEnd = EndDate;
else
dtEnd = dtEnd.AddDays(-1);
dtCycleEndDate = dtBegin;
dtCybleBeginDate = dtBegin;
AccountDate=CalAccountDate(dtBegin, dtEnd, ExesType, ExesMonth, AccDate);
rowList.Add(new DateTime[] { dtBegin, dtEnd, AccountDate, dtCybleBeginDate, dtCycleEndDate });
if (Peroid != enumPeroiod.AllPeroid) break;
dtBegin = dtEnd.AddDays(1);
}
break;
#endregion
#region 其他
case 6:
{
dtEnd = EndDate;
dtCycleEndDate = dtEnd;
dtCybleBeginDate = BeginDate;
AccountDate=CalAccountDate(dtBegin, dtEnd, ExesType, ExesMonth, AccDate);
rowList.Add(new DateTime[] { BeginDate, EndDate, AccountDate, dtCybleBeginDate, dtCycleEndDate });
if (Peroid != enumPeroiod.AllPeroid) break;
}
break;
#endregion
}
DataTable dt = new DataTable();
dt.Columns.Add("BeginDate", typeof(DateTime));
dt.Columns.Add("EndDate", typeof(DateTime));
dt.Columns.Add("GatheringDate", typeof(DateTime));
dt.Columns.Add("CycleBeginDate", typeof(DateTime));
dt.Columns.Add("CycleEndDate", typeof(DateTime));
for (int i = 0; i < rowList.Count; i++)
{
DataRow row = dt.NewRow();
row["BeginDate"] = rowList[i][0];
row["EndDate"] = rowList[i][1];
row["GatheringDate"] = rowList[i][2];
row["CycleBeginDate"] = rowList[i][3];
row["CycleEndDate"] = rowList[i][4];
dt.Rows.Add(row);
}
if (ReturnDataRow == true)
return dt.Rows as IEnumerable;
else
return rowList as IEnumerable;
//return rowList as IEnumerable;
}
}
测试代码
select * from CW_F_CalDateTable_Accountant(3,1,'2013-01-15','2014-01-14',3,1,15,2,0)
运行结果
- 大小: 112.7 KB
分享到:
相关推荐
系统应能自动生成各种财务报表,如资产负债表、利润表等,且支持自定义时间段和条件筛选。这需要利用C#的报表服务或者第三方报表控件,结合数据可视化技术实现。 4. **预算控制**:预算是财务管理的重要组成部分,...
在C#中实现这类系统需要熟悉多线程、时间管理和并发控制,因为多个用户可能同时进行操作。数据库操作同样重要,例如存储客户信息、房间状态和预订记录。此外,使用报表工具(如Crystal Reports)生成入住和收入报告...
4. 利率变动:考虑到利率可能随时间变化,计算器可以允许用户输入多个时间段的不同利率。 【C#实现】 1. 类设计:在C#中,可以创建一个名为`DepositCalculator`的类,包含必要的属性如本金(Principal)、年利率...
- **报表生成**:生成资产负债表、利润表、现金流量表等各类财务报表,支持自定义时间段和条件筛选。 - **权限控制**:设置不同级别的用户权限,确保敏感数据的安全。 - **数据备份与恢复**:定期自动备份数据,...
同时,后台需要处理预订冲突,确保同一时间段内房间不被重复预订。 2. **客房管理**:这部分包括房间状态跟踪(如空闲、已预订、清洁中等)、房型设置(如单人间、双人间、套房等)以及房间设施配置。系统需实时...
账目查询功能允许用户实时查看账户余额、往来款项等信息,支持按时间段、科目等进行筛选,满足日常财务管理中的查询需求。此外,系统还支持自定义查询条件,以适应不同的查询场景。 报表模块则是对企业财务状况进行...
在C#编程中,"显示友好时间"是指将时间戳转换为易于理解的相对时间表述,例如"1分钟前"、"2个月前"等。这样的功能有助于提高用户体验,因为用户可以快速理解某个事件距离现在有多远。在给定的代码段中,实现了这样一...
- 明细账查询:根据科目或时间段查找具体交易记录,便于审计和分析。 - 总账查询:提供整体财务状况的概览,包括资产、负债和所有者权益等。 5. **报表**: - 资产负债表:展示企业在特定日期的资产、负债及所有...
查询功能则包括开始时间和结束时间的选择,用户可以自定义时间范围来获取特定时间段内的科目数据。时间格式要求为"YYYY-MM-DD",例如"2017-01-01",这两个字段不是必填项,但能够提供更精确的查询结果。 隐藏字段_1...
同时,它支持灵活的定价策略,可以设定不同时间段、不同会员级别的价格差异,以吸引不同类型的消费者。 5. 销售分析与报告 通过对销售数据的深度分析,Kaba软件能够提供多维度的销售报告,如畅销商品、滞销商品、...
【标题】"daojishi.rar" 是一个使用C#编程语言开发的教育系统应用,主要功能是为注册会计师考试提供倒计时服务。这个程序旨在帮助考生更好地规划备考时间,通过实时显示距离考试剩余的天数来提升学习紧迫感。 ...
(5) 设计一个实用的工资管理程序,模拟会计的活动,实施工资帐目的存储、查询和更改,系统要求有高度的可靠性和安全性,并能按规定的格式打印工资报表。 (6) 设计一个实用的小型商店销售管理系统,其功能包括: ① ...
用户记账软件源码功能介绍:实现了用户登陆,可以记录支出和收入,可以按时间段查询支出和收入明细,还可以添加支出和收入类别,可以调用计算器和笔记本程序。开发环境为VisualStudio2010,后台数据库为SQLServer...
在构建会计信息系统的过程中,生成报表是一项关键任务,它要求能够灵活地处理不同的时间段数据,以满足用户对财务信息的分析需求。"建立自由的会计日期的报表--1.2.创建让用户选择日期窗体"这一主题,正是针对这一...
根据给定的文件信息,我们可以提炼出一系列与C#编程及软件测试相关的知识点,下面将对这些知识点进行详细的解析。 ### C#编程基础 #### 数学运算与表达式解析 在题目描述中提到的数学表达式`a+b*c/d`,涉及到C#中...
用户可以根据需要选择不同的时间段、过滤条件来定制报表,且通常支持导出为Excel、PDF等格式,方便进一步分析和打印。对于江都经济开发区的财务管理系统,打印报表功能尤为重要,它可以让管理者在实体会议上展示财务...
5. **会计期间管理**:支持设置会计年度和期间,便于按时间段进行财务核算和报告。 6. **权限控制**:系统具有完善的权限管理体系,不同角色的用户可分配不同的操作权限,确保数据安全。 7. **数据库备份与恢复**...
3.管理期间 设定时间段,为查询统计模块提供时间段设置。 4.审批流程 审批流程方式灵活多样,该功能可同级,也可多级定义,方便公司内部审批管理,在所有提交模块中都可调用此流程,也可修改该流程。 5.资金帐户 ...
查看用户操作记录的部分,利用SQL查询语句从UBF_Portal_OperationRecord表中提取特定时间段内的用户操作数据。这对于审计和监控系统的操作日志非常关键,可以帮助企业了解用户在系统中的操作历史,及时发现异常行为...
7. **集成能力**:现代CRM系统往往具备与其他企业应用(如ERP、会计系统、呼叫中心等)集成的能力,实现数据共享和流程自动化。 在本压缩包“myCRM”中,可能包含了这些功能模块的源代码,开发人员可以进一步研究、...