⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rulesfix.cs

📁 这是一个系统中使用的判断功能尖
💻 CS
📖 第 1 页 / 共 4 页
字号:

            #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 + -