📄 rulesfix.cs
字号:
#region 修改固定资产明细帐
wherePart = " AssetsDetail_Card_Rid = '{0}' and AssetsDetail_Year = {1} and AssetsDetail_Period = {2} ";
wherePart = string.Format(wherePart, destRow.CARD_ID, fixYear, fixPeriod);
Data_T_FIX_D_AssetsDetail dsAssetsDetail = daoAssetsDetail.CustomSearchExtend(wherePart);
if (dsAssetsDetail.T_FIX_D_ASSETSDETAIL.Count > 0)
{
Data_T_FIX_D_AssetsDetail.T_FIX_D_ASSETSDETAILRow editRow = dsAssetsDetail.T_FIX_D_ASSETSDETAIL[0];
// 期末资产原值
if (sourceRow.CARD_ORIGINALVALUE != destRow.CARD_ORIGINALVALUE)
{
editRow.ASSETSDETAIL_ENDVALUE = editRow.ASSETSDETAIL_ENDVALUE + destRow.CARD_ORIGINALVALUE;
}
// 期末累计折旧
if (sourceRow.CARD_DEPRSUM != destRow.CARD_DEPRSUM)
{
editRow.ASSETSDETAIL_ENDDEPRSUM = editRow.ASSETSDETAIL_ENDDEPRSUM + destRow.CARD_DEPRSUM;
}
result = result + daoAssetsDetail.Update(dsAssetsDetail);
dsAssetsDetail.AcceptChanges();
}
else
{
Data_T_FIX_D_AssetsDetail.T_FIX_D_ASSETSDETAILRow addRow = dsAssetsDetail.T_FIX_D_ASSETSDETAIL.NewT_FIX_D_ASSETSDETAILRow();
addRow.ASSETSDETAIL_ID = ServiceSystem.GetEntityID(addRow.Table.TableName, p_OperateUser);
addRow.ASSETSDETAIL_CARD_RID = destRow.CARD_ID; // 卡片ID
addRow.ASSETSDETAIL_ASSETSTYPE_RID = destRow.CARD_ASSETSTYPE_RID; // 资产类别ID
addRow.ASSETSDETAIL_YEAR = p_OperateUser.AccountantMonth; // 会计年份
addRow.ASSETSDETAIL_PERIOD = p_OperateUser.AccountantYear; // 会计期间
addRow.ASSETSDETAIL_IMPORTFLAG = "0"; // 录入期间标志
addRow.ASSETSDETAIL_ENDVALUE = destRow.CARD_ORIGINALVALUE; // 期末资产原值
addRow.ASSETSDETAIL_ENDDEPRSUM = destRow.CARD_DEPRSUM; // 期末累计折旧
addRow.ASSETSDETAIL_DEPRDATE = p_OperateUser.LoginTime; // 变动日期
dsAssetsDetail.T_FIX_D_ASSETSDETAIL.AddT_FIX_D_ASSETSDETAILRow(addRow);
result = result + daoAssetsDetail.Update(dsAssetsDetail);
dsAssetsDetail.AcceptChanges();
}
#endregion
#region 修改资产汇总表
wherePart = " Total_Dept_Rid = '{0}' and Total_AssetsType_RId = '{1}' and Total_Year = {2} and Total_Period = {3} ";
wherePart = string.Format(wherePart, destRow.CARD_DEPT_RID, destRow.CARD_ASSETSTYPE_RID, 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 editRow = dsAssetsTotal.T_FIX_D_ASSETSTOTAL[0];
editRow.TOTAL_PERIODENDVALUE = editRow.TOTAL_PERIODENDVALUE - sourceRow.CARD_ORIGINALVALUE + destRow.CARD_ORIGINALVALUE;
editRow.TOTAL_PERIODENDDPERSUM = editRow.TOTAL_PERIODENDDPERSUM - sourceRow.CARD_DEPRSUM + destRow.CARD_DEPRSUM;
if (sourceRow.CARD_ORIGINALVALUE < destRow.CARD_ORIGINALVALUE)
{
// 本期原值增加
editRow.TOTAL_PERIODADD = destRow.CARD_ORIGINALVALUE - sourceRow.CARD_ORIGINALVALUE;
}
else
{
// 本期原值减少
editRow.TOTAL_PERIODSUB = sourceRow.CARD_ORIGINALVALUE - destRow.CARD_ORIGINALVALUE;
}
if (sourceRow.CARD_DEPRSUM < destRow.CARD_DEPRSUM)
{
// 本期累计折旧增加
editRow.TOTAL_PERIODADDSUM = destRow.CARD_DEPRSUM - sourceRow.CARD_DEPRSUM;
}
else
{
// 本期累计折旧减少
editRow.TOTAL_PERIODSUBSUM = sourceRow.CARD_DEPRSUM - destRow.CARD_DEPRSUM;
}
result = result + daoAssetsTotal.Update(dsAssetsTotal);
dsAssetsTotal.AcceptChanges();
}
else
{
Data_T_FIX_D_AssetsTotal.T_FIX_D_ASSETSTOTALRow addRow = dsAssetsTotal.T_FIX_D_ASSETSTOTAL.NewT_FIX_D_ASSETSTOTALRow();
addRow.TOTAL_ID = ServiceSystem.GetEntityID(addRow.Table.TableName, p_OperateUser);
addRow.TOTAL_DEPT_RID = destRow.CARD_DEPT_RID; // 部门ID
addRow.TOTAL_ASSETSTYPE_RID = destRow.CARD_ASSETSTYPE_RID; // 资产类别ID
addRow.TOTAL_YEAR = p_OperateUser.AccountantYear; // 会计年份
addRow.TOTAL_PERIOD = p_OperateUser.AccountantMonth; // 会计期间
addRow.TOTAL_PERIODENDVALUE = destRow.CARD_ORIGINALVALUE; // 期末资产原值
addRow.TOTAL_PERIODENDDPERSUM = destRow.CARD_DEPRSUM; // 期末累计折旧
if (sourceRow.CARD_ORIGINALVALUE < destRow.CARD_ORIGINALVALUE)
{
// 本期原值增加
addRow.TOTAL_PERIODADD = destRow.CARD_ORIGINALVALUE - sourceRow.CARD_ORIGINALVALUE;
}
else
{
// 本期原值减少
addRow.TOTAL_PERIODSUB = sourceRow.CARD_ORIGINALVALUE - destRow.CARD_ORIGINALVALUE;
}
if (sourceRow.CARD_DEPRSUM < destRow.CARD_DEPRSUM)
{
// 本期累计折旧增加
addRow.TOTAL_PERIODADDSUM = destRow.CARD_DEPRSUM - sourceRow.CARD_DEPRSUM;
}
else
{
// 本期累计折旧减少
addRow.TOTAL_PERIODSUBSUM = sourceRow.CARD_DEPRSUM - destRow.CARD_DEPRSUM;
}
dsAssetsTotal.T_FIX_D_ASSETSTOTAL.AddT_FIX_D_ASSETSTOTALRow(addRow);
result = result + daoAssetsTotal.Update(dsAssetsTotal);
dsAssetsTotal.AcceptChanges();
}
#endregion
#region 生成变动单
Data_T_FIX_D_VariationBill dsVarBill = new Data_T_FIX_D_VariationBill();
Data_T_FIX_D_VariationBill.T_FIX_D_VARIATIONBILLRow drRow = dsVarBill.T_FIX_D_VARIATIONBILL.NewT_FIX_D_VARIATIONBILLRow();
drRow.VARBILL_ID = ServiceSystem.GetEntityID(drRow.Table.TableName, p_OperateUser); // 变动单ID
drRow.VARBILL_CODE = daoVarBill.Get_VarBillCode(); // 变动单号
drRow.VARBILL_CARD_RID = destRow.CARD_ID; // 卡片ID
drRow.VARBILL_YEAR = p_OperateUser.AccountantYear; // 会计年度
drRow.VARBILL_PERIOD = p_OperateUser.AccountantMonth; // 会计期间
drRow.VARBILL_DATE = p_OperateUser.LoginTime; // 变动日期
drRow.VARBILL_VARMODE_RID = destRow.CARD_VARIATIONMODE_RID; // 变动方式ID
drRow.VARBILL_CRED_TYPE_RID = destRow.CARD_CREDENCE_TYPE_RID; // 凭证类别
drRow.VARBILL_CREDENCE_SEQ = destRow.CARD_CREDENCE_SEQ; // 凭证号
drRow.VARBILL_REASON = p_VarBill_Reason; // 变动原因
drRow.VARBILL_BEFORE_DEPT_RID = sourceRow.CARD_DEPT_RID; // 变动前的部门
drRow.VARBILL_AFTER_DEPT_RID = destRow.CARD_DEPT_RID; // 变动后的部门
drRow.VARBILL_BEFORE_USESTATE_RID = sourceRow.CARD_USESTATE_RID; // 变动前的使用状况
drRow.VARBILL_AFTER_USESTATE_RID = destRow.CARD_USESTATE_RID; // 变动后的使用状况
drRow.VARBILL_BEFORE_DEPRMETH = sourceRow.CARD_DEPRMETHOD; // 变动前的折旧方法
drRow.VARBILL_AFTER_DEPRMETH = destRow.CARD_DEPRMETHOD; // 变动后的折旧方法
drRow.VARBILL_BEFORE_ASSETSTYPE_RID = sourceRow.CARD_ASSETSTYPE_RID; // 变动前的资产类别
drRow.VARBILL_AFTER_ASSETSTYPE_RID = destRow.CARD_ASSETSTYPE_RID; // 变动后的资产类别
drRow.VARBILL_BEFORE_ORIVALUE = sourceRow.CARD_ORIGINALVALUE; // 变动前的资产原值
drRow.VARBILL_AFTER_ORIVALUE = destRow.CARD_ORIGINALVALUE; // 变动后的资产原值
drRow.VARBILL_BEFORE_DPERSUM = sourceRow.CARD_DEPRSUM; // 变动前的累计折旧
drRow.VARBILL_AFTER_DPERSUM = destRow.CARD_DEPRSUM; // 变动后的累计折旧
drRow.VARBILL_BEFORE_JOBQUAN = sourceRow.CARD_JOBGROSS; // 变动前工作总量
drRow.VARBILL_AFTER_JOBQUAN = destRow.CARD_JOBGROSS; // 变动后工作总量
drRow.VARBILL_BEFORE_SALVALUE = sourceRow.CARD_SALVALUE; // 变动前净残值
drRow.VARBILL_AFTER_SALVALUE = destRow.CARD_SALVALUE; // 变动前净残值
drRow.VARBILL_BEFORE_USEYEARS = sourceRow.CARD_USEYEARS; // 变动前使用年限
drRow.VARBILL_AFTER_USEYEARS = destRow.CARD_USEYEARS; // 变动后使用年限
drRow.VARBILL_BEFORE_AMOUNT = sourceRow.CARD_AMOUNT; // 变动前资产数量
drRow.VARBILL_AFTER_AMOUNT = destRow.CARD_AMOUNT; // 变动后资产数量
drRow.VARBILL_MAKER_RID = p_OperateUser.UserID; // 操作员ID
dsVarBill.T_FIX_D_VARIATIONBILL.AddT_FIX_D_VARIATIONBILLRow(drRow);
result = result + daoVarBill.Update(dsVarBill);
dsVarBill.AcceptChanges();
#endregion
return result;
}
#endregion
#region 固定资产计提折旧方法 Depr
/// <summary>
/// 固定资产计提折旧方法
/// </summary>
/// <returns>返回更新记录数</returns>
public int Depr(HP.MiddleTierClassLibrary.DBConnect p_Conn, Data_T_FIX_D_AssetsCard p_dsCard, OperateUser p_OperateUser)
{
/*
计提折旧原则:
1.减少资产不再计提折旧
2.本月新增资产不提折旧
3.资产净值小于净残值不提折旧
4.当月折旧额大于资产净值-残值时,折旧额=资产净值-净残值
5.处于某不提折旧使用状况时,本月不提折旧
6.按不同折旧方法计提本期折旧
7.如果折旧金额为零,已计提折旧月份不变
8.当资产使用年限进入最后两年时,资产折旧额在两年内每月平均分摊
9.双倍余额法在满足下列条件时,改用直线法1折旧:
当年按双倍余额法计算的折旧额≤(资产净值-净残值)÷剩余使用年限
*/
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;
decimal periodQuan = 0; // 本期工作量
Data_T_FIX_D_JobQuantity dsJobQuan = new Data_T_FIX_D_JobQuantity();
if (currRow.CARD_DEPRMETHOD == "04")
{
wherePart = " JobQuantity_Card_Rid = '{0}' and JobQuantity_Year = {1} and JobQuantity_Period = {2} ";
wherePart = string.Format(wherePart, cardId, fixYear, fixPeriod);
dsJobQuan = daoJobQuan.CustomSearchExtend(wherePart);
if (dsJobQuan.T_FIX_D_JOBQUANTITY.Count > 0)
{
periodQuan = dsJobQuan.T_FIX_D_JOBQUANTITY[0].JOBQUANTITY_PERIODQUAN;
}
}
decimal deprM = 0; // 月折旧额
if (currRow.CARD_DEPRMETHOD == "07")
{
decimal temp1 = 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);
decimal temp2 = (currRow.CARD_FACTVALUE - currRow.CARD_SALVALUE) / (currRow.CARD_USEYEARS - Decimal.Truncate(currRow.CARD_DEPRMONTHES / 12));
if (temp1 == temp2)
{
currRow.CARD_DEPRMETHOD = "02";
}
}
if ((currRow.CARD_USEYEARS * 12 - currRow.CARD_DEPRMONTHES) / 12 == 2)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -