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

📄 finddeprciation.cpp

📁 关于固定资产管理系统的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// FindDeprciation.cpp : implementation file
//

#include "stdafx.h"
#include "FixedAssets.h"
#include "FindDeprciation.h"
#include "CRACK.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFindDeprciation dialog


CFindDeprciation::CFindDeprciation(CWnd* pParent /*=NULL*/)
	: CDialog(CFindDeprciation::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFindDeprciation)
	m_strAssetID = _T("");
	m_CKAssetID = FALSE;
	m_CKDPType = FALSE;
	m_CKLeftValue = FALSE;
	m_CKRatio = FALSE;
	m_CKMonth = FALSE;
	m_CKName = FALSE;
	m_CKOrigValue = FALSE;
	m_CKSort = FALSE;
	m_CKSum = FALSE;
	m_CKType = FALSE;
	m_dLeftValue1 = 0.0;
	m_dLeftValue2 = 0.0;
	m_dLRatio2 = 0.0;
	m_dMonth1 = 0.0;
	m_dMonth2 = 0.0;
	m_strName = _T("");
	m_dOrigValue1 = 0.0;
	m_dOrigValue2 = 0.0;
	m_dSum1 = 0.0;
	m_dSum2 = 0.0;
	m_strType = _T("");
	m_CKDate = FALSE;
	m_Date = -1;
	m_dLRatio1 = 0.0;
	//}}AFX_DATA_INIT
	flag=0;
	sum=0;
	monthDeprc=0;
	LeftValue=0;
}


void CFindDeprciation::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFindDeprciation)
	DDX_Control(pDX, IDC_FDRP_LIST, m_CtrlList);
	DDX_Control(pDX, IDC_FDDP_TYPE, m_CtrlCBType);
	DDX_Control(pDX, IDC_FDDP_DPTYPE, m_CtrlCBDPType);
	DDX_Control(pDX, IDC_FDDP_SORT, m_CtrlCBSort);
	DDX_Control(pDX, IDC_FDDP_NAME, m_CtrlCBName);
	DDX_Control(pDX, IDC_FDDP_ASSETID, m_CtrlCBAssetID);
	DDX_CBString(pDX, IDC_FDDP_ASSETID, m_strAssetID);
	DDX_Check(pDX, IDC_FDDP_CKASSETID, m_CKAssetID);
	DDX_Check(pDX, IDC_FDDP_CKDPTYPE, m_CKDPType);
	DDX_Check(pDX, IDC_FDDP_CKLEFTVALUE, m_CKLeftValue);
	DDX_Check(pDX, IDC_FDDP_CKLRATIO, m_CKRatio);
	DDX_Check(pDX, IDC_FDDP_CKMONTH, m_CKMonth);
	DDX_Check(pDX, IDC_FDDP_CKNAME, m_CKName);
	DDX_Check(pDX, IDC_FDDP_CKORIGVALUE, m_CKOrigValue);
	DDX_Check(pDX, IDC_FDDP_CKSORT, m_CKSort);
	DDX_Check(pDX, IDC_FDDP_CKSUM, m_CKSum);
	DDX_Check(pDX, IDC_FDDP_CKTYPE, m_CKType);
	DDX_Text(pDX, IDC_FDDP_LEFTVALUE1, m_dLeftValue1);
	DDX_Text(pDX, IDC_FDDP_LEFTVALUE2, m_dLeftValue2);
	DDX_Text(pDX, IDC_FDDP_LRATIO2, m_dLRatio2);
	DDX_Text(pDX, IDC_FDDP_MONTH1, m_dMonth1);
	DDV_MinMaxDouble(pDX, m_dMonth1, 0., 1.e+023);
	DDX_Text(pDX, IDC_FDDP_MONTH2, m_dMonth2);
	DDV_MinMaxDouble(pDX, m_dMonth2, 0., 1.e+022);
	DDX_CBString(pDX, IDC_FDDP_NAME, m_strName);
	DDX_Text(pDX, IDC_FDDP_ORIGVALUE1, m_dOrigValue1);
	DDV_MinMaxDouble(pDX, m_dOrigValue1, 0., 1.e+020);
	DDX_Text(pDX, IDC_FDDP_ORIGVALUE2, m_dOrigValue2);
	DDV_MinMaxDouble(pDX, m_dOrigValue2, 0., 1.e+023);
	DDX_Text(pDX, IDC_FDDP_SUM1, m_dSum1);
	DDX_Text(pDX, IDC_FDDP_SUM2, m_dSum2);
	DDX_CBString(pDX, IDC_FDDP_TYPE, m_strType);
	DDX_Check(pDX, IDC_FDDP_CKDATE, m_CKDate);
	DDX_DateTimeCtrl(pDX, IDC_FDDP_DATE, m_Date);
	DDX_Text(pDX, IDC_FDDP_LRATIO1, m_dLRatio1);
	DDV_MinMaxDouble(pDX, m_dLRatio1, 0., 1.);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFindDeprciation, CDialog)
	//{{AFX_MSG_MAP(CFindDeprciation)
	ON_BN_CLICKED(IDC_FDDP_CKDATE, OnFddpCkdate)
	ON_BN_CLICKED(IDC_FDDP_CKDPTYPE, OnFddpCkdptype)
	ON_BN_CLICKED(IDC_FDDP_CKORIGVALUE, OnFddpCkorigvalue)
	ON_BN_CLICKED(IDC_FDDP_CKSUM, OnFddpCksum)
	ON_BN_CLICKED(IDC_FDDP_CKNAME, OnFddpCkname)
	ON_BN_CLICKED(IDC_FDDP_CKSORT, OnFddpCksort)
	ON_BN_CLICKED(IDC_FDDP_CKASSETID, OnFddpCkassetid)
	ON_BN_CLICKED(IDC_FDDP_CKTYPE, OnFddpCktype)
	ON_BN_CLICKED(IDC_FDDP_CKLRATIO, OnFddpCklratio)
	ON_BN_CLICKED(IDC_FDDP_CKLEFTVALUE, OnFddpCkleftvalue)
	ON_BN_CLICKED(IDC_FDDP_CKMONTH, OnFddpCkmonth)
	ON_EN_CHANGE(IDC_FDDP_ORIGVALUE1, OnChangeFddpOrigvalue1)
	ON_EN_CHANGE(IDC_FDDP_ORIGVALUE2, OnChangeFddpOrigvalue2)
	ON_EN_CHANGE(IDC_FDDP_SUM1, OnChangeFddpSum1)
	ON_EN_CHANGE(IDC_FDDP_SUM2, OnChangeFddpSum2)
	ON_EN_CHANGE(IDC_FDDP_LRATIO1, OnChangeFddpLratio1)
	ON_EN_CHANGE(IDC_FDDP_LRATIO2, OnChangeFddpLratio2)
	ON_EN_CHANGE(IDC_FDDP_LEFTVALUE1, OnChangeFddpLeftvalue1)
	ON_EN_CHANGE(IDC_FDDP_LEFTVALUE2, OnChangeFddpLeftvalue2)
	ON_EN_CHANGE(IDC_FDDP_MONTH1, OnChangeFddpMonth1)
	ON_EN_CHANGE(IDC_FDDP_MONTH2, OnChangeFddpMonth2)
	ON_BN_CLICKED(IDC_FDDP_FIND, OnFddpFind)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFindDeprciation message handlers

int CFindDeprciation::DoModal() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::DoModal();
}

BOOL CFindDeprciation::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	m_pDatabase->Close();
	delete m_pDatabase;
	m_pDatabase=NULL;
	return CDialog::DestroyWindow();
}

BOOL CFindDeprciation::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
		m_CtrlList.SetExtendedStyle(LVS_EX_GRIDLINES); 
	//连接数据库
    m_pDatabase=new CDaoDatabase;
	try{
		m_pDatabase->Open("FixedAssets");
        m_pRecordset=new CDaoRecordset(m_pDatabase);
	}
	catch(CDaoException *e)
	{
		e->ReportError();
		delete m_pDatabase;
		m_pDatabase=NULL;
		e->Delete();
	}	
	if(!m_pDatabase->IsOpen()) return 0;
	if(!m_pRecordset) return 0;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	CString strSelect;
	try
	{   
		// 资产类别
		strSelect = _T("Select 资产类别ID,资产类别 From 资产类别");
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{
			COleVariant var;
			var = m_pRecordset->GetFieldValue(0);
			m_uaSort.Add(var.lVal);
			var = m_pRecordset->GetFieldValue(1);
			m_saSort.Add(CCrack::strVARIANT(var));
			m_pRecordset->MoveNext();
		}
		m_pRecordset->Close();
        
        strSelect = _T("Select DISTINCT 资产名称 From 资产信息");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
	    {
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBName.AddString(CCrack::strVARIANT(var));
		    m_pRecordset->MoveNext();
	    }
	    m_pRecordset->Close();

	    strSelect = _T("Select DISTINCT 资产编号 From 资产信息");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
	    {
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBAssetID.AddString(CCrack::strVARIANT(var));
            m_pRecordset->MoveNext();
	    }
	    m_pRecordset->Close();
	
	    strSelect = _T("Select DISTINCT 型号 From 资产信息");
	    m_pRecordset->Open(dbOpenDynaset,strSelect);
	    while (!m_pRecordset->IsEOF())
	    {
		    COleVariant var;
		    var = m_pRecordset->GetFieldValue(0);
		    m_CtrlCBType.AddString(CCrack::strVARIANT(var));
		    m_pRecordset->MoveNext();
	    }
	    m_pRecordset->Close();
	}
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return 0;
	}
	int nIndex,i;
	for(i=0;i<m_saSort.GetSize();i++)  //初始化类别
	{
	   nIndex =m_CtrlCBSort.AddString(m_saSort.GetAt(i));
	   m_CtrlCBSort.SetItemData(nIndex, m_uaSort.GetAt(i));
	} 
	m_CtrlCBDPType.InsertString(0,"平均年限法");  //初始化折旧方法
	m_CtrlCBDPType.InsertString(1,"工作量法");
	m_CtrlCBDPType.InsertString(2,"双倍余额递减法");
	m_CtrlCBDPType.InsertString(3,"年数总和法");
    m_CtrlCBDPType.InsertString(4,"不折旧");
	
	strSelect=_T("Select * From 资产信息");
	Refresh(strSelect);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CFindDeprciation::Refresh(CString strSelect)//刷新
{
    m_strTableName = _T("资产信息");
	if(!m_pDatabase->IsOpen()) return;
	if(!m_pRecordset) return;
	if(m_pRecordset->IsOpen()) m_pRecordset->Close();
	//清空list控件
	m_CtrlList.DeleteAllItems();
	while(m_CtrlList.DeleteColumn(0));
	CDaoFieldInfo fieldInfo;
	int nFields;

	CDaoTableDef td(m_pDatabase);
	try
	{
		td.Open(m_strTableName);
		nFields = td.GetFieldCount();
		int nWidth,index=7;
		for (int j=0; j < nFields; j++)
		{
			td.GetFieldInfo(j,fieldInfo);
			nWidth = m_CtrlList.GetStringWidth(fieldInfo.m_strName) + 15;
			if(j<=4)
			  m_CtrlList.InsertColumn(j,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
			else
			{
			    if(j==8||j==9||j==10||j==11||j==12||j==13||j==19)
				   m_CtrlList.InsertColumn(index++,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
			}
		}
		nWidth=100;
		m_CtrlList.InsertColumn(5,"累计折旧", LVCFMT_LEFT, nWidth);
		m_CtrlList.InsertColumn(6,"本月折旧", LVCFMT_LEFT, nWidth);
	}
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return;
	}
	td.Close();

	int nItem = 0,i;
	try
	{
		m_pRecordset->Open(dbOpenDynaset,strSelect);
		while (!m_pRecordset->IsEOF())
		{   
			COleVariant var;
			var = m_pRecordset->GetFieldValue(14);
			if(CCrack::strVARIANT(var)=="清理") 
			{   
				m_pRecordset->MoveNext();
				continue;
			}
			if(!CalcuDep(atof(CCrack::strVARIANT(m_pRecordset->GetFieldValue(9))),atof(CCrack::strVARIANT(m_pRecordset->GetFieldValue(11))),CCrack::strVARIANT(m_pRecordset->GetFieldValue(13)),CCrack::strVARIANT(m_pRecordset->GetFieldValue(8)),atoi(CCrack::strVARIANT(m_pRecordset->GetFieldValue(10)))))//参数分别为  残值率,原值,折旧方式,购买时间,使用年限
			   return;
			if(m_CKSum)//累计折旧
			{ 
	            if(m_dSum1>m_dSum2)
				{ 
	                double temp;
		            temp=m_dSum1;m_dSum1=m_dSum2;m_dSum2=temp;
				} 
				if(sum>m_dSum2||sum<m_dSum1)
				{
				    m_pRecordset->MoveNext();
				    continue;
				}
			}
            if(m_CKMonth)//本月折旧
			{ 
	            if(m_dMonth1>m_dMonth2)
				{ 
	                double temp;
		            temp=m_dMonth1;m_dMonth1=m_dMonth2;m_dMonth2=temp;
				} 
				if(monthDeprc>m_dMonth2||monthDeprc<m_dMonth1)
				{
				    m_pRecordset->MoveNext();
				    continue;
				}
			}
			if(m_CKLeftValue)//净值
			{ 
	            if(m_dLeftValue1>m_dLeftValue2)
				{ 
	                double temp;
		            temp=m_dLeftValue1;m_dLeftValue1=m_dLeftValue2;m_dLeftValue2=temp;
				} 
				if(LeftValue>m_dLeftValue2||LeftValue<m_dLeftValue1)
				{
				    m_pRecordset->MoveNext();
				    continue;
				}
			}
			var = m_pRecordset->GetFieldValue(0);
			m_CtrlList.InsertItem(nItem,CCrack::strVARIANT(var));
			int index=7,j;
			for (i=0; i < nFields; i++)
			{   
				var = m_pRecordset->GetFieldValue(i);
				if(i<=4&&i!=3)
				   m_CtrlList.SetItemText( nItem,i,CCrack::strVARIANT(var));
				if(i==3)
				{
				   
                   for(j=0;j<m_uaSort.GetSize();j++)
				   { 
                     if(m_uaSort[j]==unsigned(atoi(CCrack::strVARIANT(var)))) 
						 break;
				   }
	               m_CtrlList.SetItemText( nItem,i,m_saSort[j]);
				}
				if(i==8||i==9||i==10||i==11||i==12||i==13||i==19)  
				{ 
				   m_CtrlList.SetItemText( nItem,index++,CCrack::strVARIANT(var));
				}
			}
            CString a1,a2,a3;
			a1.Format("%f",sum);
			a2.Format("%f",monthDeprc);
			a3.Format("%f",LeftValue);
            m_CtrlList.SetItemText( nItem,5,a1);
			m_CtrlList.SetItemText( nItem,6,a2);
            m_CtrlList.SetItemText( nItem,11,a3);
            m_pRecordset->MoveNext();
			nItem++;
		}
	} 
	catch (CDaoException* e)
	{
		e->ReportError(); 
		e->Delete();
		return;
	}


} 
bool CFindDeprciation::CalcuDep(double LRatio,double OrigValue,CString DPType,CString time,int MaxYearNum)//参数分别为  残值率,原值,折旧方式,购买时间,使用年限
{
    UpdateData(1);
	if(DPType=="不折旧")
	{
	   sum=0;monthDeprc=0;LeftValue=OrigValue;
	   return 1;
	}
	//将CString型的购入日期转变为CTime型的变量
	CString year,month,day;
	if(time.GetAt(6)=='0') 
	   year.Format("20%c%c",time.GetAt(6),time.GetAt(7));
	else
	   year.Format("19%c%c",time.GetAt(6),time.GetAt(7));
	month.Format("%c%c",time.GetAt(0),time.GetAt(1));
	day.Format("%c%c",time.GetAt(3),time.GetAt(4));
	CTime m_InTime(atoi(year),atoi(month),atoi(day),m_Date.GetHour(),m_Date.GetMinute(),m_Date.GetSecond());
	
	int yearNum,monthNum;
	//如果选择了折旧日期,需要对该日期的合法性进行判断,如果改日前晚于购买日期将给出提示。
	if(m_CKDate)
	{
	   CTimeSpan timespan;
	   timespan=m_Date-m_InTime;
	   if(timespan<0)
	   {
	      MessageBox("折旧时间必须晚于购买日期\n购买日期为"+time);
		  return 0;
	   }
       else
	   {
	      yearNum=m_Date.GetYear()-m_InTime.GetYear();
          monthNum=m_Date.GetMonth()-m_InTime.GetMonth()+12*yearNum;
	   }
	}
	else
	{
		CTime m_CurTime=CTime::GetCurrentTime();
		yearNum=m_CurTime.GetYear()-m_InTime.GetYear();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -