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

📄 rulesfix.cs

📁 这是一个系统中使用的判断功能尖
💻 CS
📖 第 1 页 / 共 4 页
字号:
						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 + -