📄 rulesfix.cs
字号:
deprM = currRow.CARD_FACTVALUE / 24;
currRow.CARD_DEPRMETHOD = "05";
}
else
{
switch (currRow.CARD_DEPRMETHOD)
{
case "01": // 不计提折旧
break;
case "02": // 直线法1:月折旧额=净资产÷剩余使用年限÷12
deprM = currRow.CARD_FACTVALUE / (currRow.CARD_USEYEARS - currRow.CARD_DEPRMONTHES / 12) / 12;
break;
case "03": // 直线法2:月折旧额=(资产原值-净残值)÷使用年限÷12
deprM = (currRow.CARD_ORIGINALVALUE - currRow.CARD_SALVALUE) / currRow.CARD_USEYEARS / 12;
break;
case "04": // 工作量法:月折旧额=本期工作量×[(资产原值-净残值)÷工作总量]
deprM = periodQuan * (currRow.CARD_ORIGINALVALUE - currRow.CARD_SALVALUE) / currRow.CARD_JOBGROSS;
break;
case "05": // 固定折旧额法:月折旧额=资产原值×月折旧率
deprM = currRow.CARD_DEPRVALUE;
break;
case "06": // 年数总和法:月折旧额=(资产原值-净残值)×{(使用年限-折旧年限)÷[使用年限×(1+使用年限)÷2]÷12}
deprM = (currRow.CARD_ORIGINALVALUE -currRow.CARD_SALVALUE) * (currRow.CARD_USEYEARS - Decimal.Truncate(currRow.CARD_DEPRMONTHES / 12))
/ (currRow.CARD_USEYEARS * (1 + currRow.CARD_USEYEARS) / 2 / 12);
break;
case "07": // 双倍余额法:月折旧额=年初资产净值×(2÷使用年限)÷12
deprM = currRow.CARD_ORIGINALVALUE * Convert.ToDecimal(Math.Pow(Convert.ToDouble(1 - 2 / currRow.CARD_USEYEARS),
Convert.ToDouble(Decimal.Truncate(currRow.CARD_DEPRMONTHES / 12)))) * (2 / currRow.CARD_USEYEARS) /12;
break;
}
if (deprM > currRow.CARD_FACTVALUE - currRow.CARD_SALVALUE)
{
deprM = currRow.CARD_FACTVALUE - currRow.CARD_SALVALUE;
}
currRow.CARD_DEPRVALUE = deprM;
currRow.CARD_DEPRMONTHES = currRow.CARD_DEPRMONTHES + 1;
currRow.CARD_DEPRSUM = currRow.CARD_DEPRSUM + deprM;
currRow.CARD_FACTVALUE = currRow.CARD_FACTVALUE - deprM;
currRow.CARD_DEPRFLAG = "1";
result = result + daoCard.Update(p_dsCard);
currRow.AcceptChanges();
}
// 修改资产明细表
wherePart = " AssetsDetail_Card_Rid = '{0}' and AssetsDetail_Year = {1} and AssetsDetail_Period = {2} ";
wherePart = string.Format(wherePart, cardId, fixYear, fixPeriod);
Data_T_FIX_D_AssetsDetail dsAssetsDetail = daoAssetsDetail.CustomSearchExtend(wherePart);
if (dsAssetsDetail.T_FIX_D_ASSETSDETAIL.Count > 0)
{
dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0].ASSETSDETAIL_ENDVALUE = currRow.CARD_ORIGINALVALUE;
dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0].ASSETSDETAIL_ENDDEPRSUM = currRow.CARD_DEPRSUM;
dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0].ASSETSDETAIL_MONTHDEPR = deprM;
dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0].ASSETSDETAIL_DEPRDATE = DateTime.Today;
result = result + daoAssetsDetail.Update(dsAssetsDetail);
dsAssetsDetail.AcceptChanges();
}
// 修改资产汇总表
wherePart = " Total_Dept_Rid = '{0}' and Total_AssetsType_RId = '{1}' and Total_Year = {2} and Total_Period = {3} ";
wherePart = string.Format(wherePart, deptId, assetsTypeId, fixYear, fixPeriod);
Data_T_FIX_D_AssetsTotal dsAssetsTotal = daoAssetsTotal.CustomSearchExtend(wherePart);
if (dsAssetsTotal.T_FIX_D_ASSETSTOTAL.Count > 0)
{
Data_T_FIX_D_AssetsTotal.T_FIX_D_ASSETSTOTALRow drRow = dsAssetsTotal.T_FIX_D_ASSETSTOTAL[0];
drRow.TOTAL_PERIODENDDPERSUM = drRow.TOTAL_PERIODENDDPERSUM + deprM;
drRow.TOTAL_PERIODADDSUM = drRow.TOTAL_PERIODADDSUM + deprM;
result = result + daoAssetsTotal.Update(dsAssetsTotal);
dsAssetsTotal.AcceptChanges();
}
// 生成资产变动记录
Data_T_FIX_D_VariationBill dsVarBill = new Data_T_FIX_D_VariationBill();
Data_T_FIX_D_VariationBill.T_FIX_D_VARIATIONBILLRow newRow = dsVarBill.T_FIX_D_VARIATIONBILL.NewT_FIX_D_VARIATIONBILLRow();
newRow.VARBILL_ID = ServiceSystem.GetEntityID(newRow.Table.TableName, p_OperateUser);
//newRow.VARBILL_ID = p_Conn.GetGuid(dsVarBill.T_FIX_D_VARIATIONBILL.TableName); // 变动单ID
newRow.VARBILL_CODE = daoVarBill.Get_VarBillCode(); // 变动单号
newRow.VARBILL_CARD_RID = currRow.CARD_ID; // 资产卡片ID
newRow.VARBILL_YEAR = fixYear; // 会计年度
newRow.VARBILL_PERIOD = fixPeriod; // 会计月份
newRow.VARBILL_CRED_TYPE_RID = currRow.CARD_CREDENCE_TYPE_RID ; // 凭证类别ID
newRow.VARBILL_VARMODE_RID = "00501"; // 资产变动(变动方式为“00501”时,专指资产累计折旧)
newRow.VARBILL_REASON = "资产累计折旧"; // 资产变动原因
newRow.VARBILL_BEFORE_DEPT_RID = currRow.CARD_DEPT_RID; // 所属部门ID
newRow.VARBILL_BEFORE_USESTATE_RID = currRow.CARD_USESTATE_RID; // 使用状况ID
newRow.VARBILL_BEFORE_DEPRMETH = currRow.CARD_DEPRMETHOD; // 折旧方法
newRow.VARBILL_BEFORE_ASSETSTYPE_RID = currRow.CARD_ASSETSTYPE_RID; // 资产类别ID
newRow.VARBILL_BEFORE_ORIVALUE = currRow.CARD_ORIGINALVALUE; // 资产原值
newRow.VARBILL_BEFORE_JOBQUAN = currRow.CARD_JOBGROSS; // 工作总量
newRow.VARBILL_BEFORE_SALVALUE = currRow.CARD_SALVALUE; // 净残值
newRow.VARBILL_BEFORE_USEYEARS = currRow.CARD_USEYEARS; // 使用年限
newRow.VARBILL_BEFORE_AMOUNT = currRow.CARD_AMOUNT; // 资产数量
newRow.VARBILL_BEFORE_DPERSUM = currRow.CARD_DEPRSUM - deprM; // 资产累计折旧
newRow.VARBILL_AFTER_DEPT_RID = currRow.CARD_DEPT_RID; // 所属部门
newRow.VARBILL_AFTER_USESTATE_RID = currRow.CARD_USESTATE_RID; // 使用状况
newRow.VARBILL_AFTER_DEPRMETH = currRow.CARD_DEPRMETHOD; // 折旧方法
newRow.VARBILL_AFTER_ASSETSTYPE_RID = currRow.CARD_ASSETSTYPE_RID; // 资产类别编号
newRow.VARBILL_AFTER_ORIVALUE = currRow.CARD_ORIGINALVALUE; // 资产原值
newRow.VARBILL_AFTER_DPERSUM = currRow.CARD_DEPRSUM; // 资产累计折旧
newRow.VARBILL_AFTER_JOBQUAN = currRow.CARD_JOBGROSS; // 工作总量
newRow.VARBILL_AFTER_SALVALUE = currRow.CARD_SALVALUE; // 净残值
newRow.VARBILL_AFTER_USEYEARS = currRow.CARD_USEYEARS; // 使用年限
newRow.VARBILL_AFTER_AMOUNT = currRow.CARD_AMOUNT; // 资产数量
newRow.VARBILL_MAKER_RID = p_OperateUser.UserID; // 操作员
newRow.VARBILL_DATE = DateTime.Today; // 变动日期
dsVarBill.T_FIX_D_VARIATIONBILL.AddT_FIX_D_VARIATIONBILLRow(newRow);
result = result + daoVarBill.Update(dsVarBill);
dsVarBill.AcceptChanges();
}
}
return result;
}
#endregion
#region 固定资产计提折旧恢复方法 UnDepr
/// <summary>
/// 固定资产计提折旧恢复方法
/// </summary>
/// <returns>返回更新记录数</returns>
public int UnDepr(HP.MiddleTierClassLibrary.DBConnect p_Conn, Data_T_FIX_D_AssetsCard p_dsCard, OperateUser p_OperateUser)
{
int result = 0;
DAO_T_P_B_CALENDARExtend daoCalendar = new DAO_T_P_B_CALENDARExtend();
DAO_T_FIX_D_JOBQUANTITYExtend daoJobQuan = new DAO_T_FIX_D_JOBQUANTITYExtend();
DAO_T_FIX_D_ASSETSCARDExtend daoCard = new DAO_T_FIX_D_ASSETSCARDExtend();
DAO_T_FIX_D_ASSETSDETAILExtend daoAssetsDetail = new DAO_T_FIX_D_ASSETSDETAILExtend();
DAO_T_FIX_D_ASSETSTOTALExtend daoAssetsTotal = new DAO_T_FIX_D_ASSETSTOTALExtend();
DAO_T_FIX_D_VARIATIONBILLExtend daoVarBill = new DAO_T_FIX_D_VARIATIONBILLExtend();
p_Conn.Add(daoCalendar);
p_Conn.Add(daoJobQuan);
p_Conn.Add(daoCard);
p_Conn.Add(daoAssetsDetail);
p_Conn.Add(daoAssetsTotal);
p_Conn.Add(daoVarBill);
string wherePart = " CAL_ISFIXEND = '0' ";
Data_T_P_B_Calendar dsCalendar = daoCalendar.SearchCustomize(wherePart);
if (dsCalendar.T_P_B_CALENDAR.Count != 0)
{
// 固定资产计提折旧年份、月份
int fixYear = Convert.ToInt32(dsCalendar.T_P_B_CALENDAR[0].CAL_YEAR);
int fixPeriod = Convert.ToInt32(dsCalendar.T_P_B_CALENDAR[0].CAL_PERIOD);
foreach (Data_T_FIX_D_AssetsCard.T_FIX_D_ASSETSCARDRow currRow in p_dsCard.T_FIX_D_ASSETSCARD.Rows)
{
// 资产卡片ID、资产类别ID、部门ID
string cardId = currRow.CARD_ID;
string assetsTypeId = currRow.CARD_ASSETSTYPE_RID;
string deptId = currRow.CARD_DEPT_RID;
// 修改固定资产卡片信息
currRow.CARD_DEPRMONTHES = currRow.CARD_DEPRMONTHES - 1;
if (currRow.CARD_DEPRMONTHES <= 0)
{
currRow.CARD_DEPRMONTHES = 0;
currRow.CARD_TYPE = "1";
}
decimal deprM = 0; // 月折旧额
deprM = currRow.CARD_DEPRVALUE;
currRow.CARD_DEPRSUM = currRow.CARD_DEPRSUM - deprM;
currRow.CARD_FACTVALUE = currRow.CARD_FACTVALUE + deprM;
currRow.CARD_DEPRFLAG = "0";
result = result + daoCard.Update(p_dsCard);
currRow.AcceptChanges();
// 修改资产明细表
wherePart = " AssetsDetail_Card_Rid = '{0}' and AssetsDetail_Year = {1} and AssetsDetail_Period = {2} ";
wherePart = string.Format(wherePart, cardId, fixYear, fixPeriod);
Data_T_FIX_D_AssetsDetail dsAssetsDetail = daoAssetsDetail.CustomSearchExtend(wherePart);
if (dsAssetsDetail.T_FIX_D_ASSETSDETAIL.Count > 0)
{
dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0].ASSETSDETAIL_ENDDEPRSUM = dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0].ASSETSDETAIL_ENDDEPRSUM - deprM;
dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0].ASSETSDETAIL_MONTHDEPR = 0;
dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0].ASSETSDETAIL_DEPRDATE = p_OperateUser.LoginTime ; //DateTime.Today;
result = result + daoAssetsDetail.Update(dsAssetsDetail);
dsAssetsDetail.AcceptChanges();
}
// 修改资产汇总表
wherePart = " Total_Dept_Rid = '{0}' and Total_AssetsType_RId = '{1}' and Total_Year = {2} and Total_Period = {3} ";
wherePart = string.Format(wherePart, deptId, assetsTypeId, fixYear, fixPeriod);
Data_T_FIX_D_AssetsTotal dsAssetsTotal = daoAssetsTotal.CustomSearchExtend(wherePart);
if (dsAssetsTotal.T_FIX_D_ASSETSTOTAL.Count > 0)
{
Data_T_FIX_D_AssetsTotal.T_FIX_D_ASSETSTOTALRow drRow = dsAssetsTotal.T_FIX_D_ASSETSTOTAL[0];
drRow.TOTAL_PERIODENDDPERSUM = drRow.TOTAL_PERIODENDDPERSUM - deprM;
drRow.TOTAL_PERIODADDSUM = drRow.TOTAL_PERIODADDSUM - deprM;
result = result + daoAssetsTotal.Update(dsAssetsTotal);
dsAssetsTotal.AcceptChanges();
}
// 删除资产变动记录
wherePart = " VarBill_VarMode_RId = '{0}' and VarBill_Year = {1} and VarBill_Period = {2} ";
wherePart = string.Format(wherePart, "00501", fixYear, fixPeriod);
Data_T_FIX_D_VariationBill dsVarBill = daoVarBill.CustomSearchExtend(wherePart);
foreach(DataRow delRow in dsVarBill.T_FIX_D_VARIATIONBILL.Rows)
{
delRow.Delete();
}
result = result + daoVarBill.Update(dsVarBill);
dsVarBill.AcceptChanges();
}
}
return result;
}
#endregion
#region 固定资产月末结帐方法 Check
/// <summary>
/// 固定资产月末结帐方法
/// </summary>
/// <returns>返回更新记录数</returns>
public int Check(HP.MiddleTierClassLibrary.DBConnect p_Conn, OperateUser p_OperateUser)
{
int result = 0;
//DAO_T_P_B_CALENDARExtend daoCalendar = new DAO_T_P_B_CALENDARExtend();
//DAO_T_FIX_D_JOBQUANTITYExtend daoJobQuan = new DAO_T_FIX_D_JOBQUANTITYExtend();
//DAO_T_FIX_D_ASSETSDETAILExtend daoAssetsDetail = new DAO_T_FIX_D_ASSETSDETAILExtend();
//DAO_T_FIX_D_ASSETSTOTALExtend daoAssetsTotal = new DAO_T_FIX_D_ASSETSTOTALExtend();
//DAO_T_FIX_D_VARIATIONBILLExtend daoVarBill = new DAO_T_FIX_D_VARIATIONBILLExtend();
//p_Conn.Add(daoCalendar);
//p_Conn.Add(daoJobQuan);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -