?? djt.cpp
字號:
// Djt.cpp : implementation file
//
#include "stdafx.h"
#include "gdzc.h"
#include "Djt.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "ExternDllHeader.h"
/////////////////////////////////////////////////////////////////////////////
// CDjt dialog
CDjt::CDjt(CWnd* pParent /*=NULL*/)
: CDialog(CDjt::IDD, pParent)
{
//{{AFX_DATA_INIT(CDjt)
//}}AFX_DATA_INIT
}
void CDjt::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDjt)
DDX_Control(pDX, IDC_DTDATE, m_DtDate);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDjt, CDialog)
//{{AFX_MSG_MAP(CDjt)
ON_BN_CLICKED(IDC_BUTJT, OnButjt)
ON_BN_CLICKED(IDC_BUTEXIT, OnButexit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDjt message handlers
void CDjt::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
}
void CDjt::OnButjt()
{
if(MessageBox("確定執行計提折舊嗎?","系統提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)
return;
//篩選出可以計提的記錄
CString sSQL,sSQL1,sSQL2,sSQL3;
sSQL1.Format("SELECT * FROM 固定資產信息表 WHERE 計提否=1");
//篩選出不是本月新加入的設備
CTime tTime,tTime2;
this->m_DtDate.GetTime(tTime);
int nYear,nMonth;
nYear=tTime.GetYear();
nMonth=tTime.GetMonth();
tTime2=CTime(nYear,nMonth,1,0,0,0,-1);
RxRecordset uRst;
CString sID,sDepreciation,sOValue,sNetValue,sMeans,sEstimateUseTime,sUseTime,sDepreciationRate,sDepreciationMoney,sMonthRate,sMonthMoney,sDate;
int nUseTime;
CString sDate2;
sDate2=CTimeToCString(tTime2);
float nDepreciation,nNetValue;
sDate=CTimeToCString(tTime);
sSQL.Format("SELECT * FROM 計提表 WHERE YEAR(計提日期)=%d AND MONTH(計提日期)=%d",nYear,nMonth);
uRst.Open(sSQL,adCmdText);
if(uRst.GetRecordCount()>=1)
{
MessageBox("本月已經計提折舊過,無需要重復操作!","系統提示",MB_OK|MB_ICONSTOP);
return;
}
sSQL2.Format("SELECT * FROM (%s) DERIVEDTBL WHERE 入賬日期<='%s'",sSQL1,sDate2);
//篩選出本月以前沒有減少的設備
sSQL3.Format("SELECT * FROM (%s) DERIVEDTBL WHERE 減少否!=1 OR 減少否=1 AND Year(入賬日期)=%d AND Month(入賬日期)=%d",sSQL2,nYear,nMonth);
rst.Open(sSQL3,adCmdText);
if(rst.GetRecordCount()<1)
{
MessageBox("本月沒有可以折舊的固定資產,固定資產本月剛加入或上月已減少!","系統提示",MB_OK|MB_ICONSTOP);
return;
}
for(int i=0;i<rst.GetRecordCount();i++)
{
rst.Move(i);
sID=rst.GetFieldValue("編號");
sEstimateUseTime=rst.GetFieldValue("預計使用月份");
sUseTime=rst.GetFieldValue("已計提月份");
if(sUseTime==sEstimateUseTime)
continue;
sDepreciationMoney=rst.GetFieldValue("月折舊額");
sDepreciation=rst.GetFieldValue("累計折舊");
sNetValue=rst.GetFieldValue("凈值");
sOValue=rst.GetFieldValue("入賬原值");
sMeans=rst.GetFieldValue("折舊方法");
sDepreciationRate=rst.GetFieldValue("月折舊率");
sDepreciationMoney=rst.GetFieldValue("月折舊額");
//存入計提表
sSQL.Format("INSERT INTO 計提表 VALUES('%s',%s,%s,%s,%s,%s,%s,'%s')",sID,sDepreciation,sNetValue,sUseTime,sMeans,sDepreciationRate,sDepreciationMoney,sDate);
uRst.Open(sSQL,adCmdText);
//更改已計提月份
nUseTime=atoi(sUseTime)+1;
//更改累計折舊
nDepreciation=atof(sDepreciation)+atof(sDepreciationMoney);
//計算出凈值
nNetValue=atof(sOValue)-nDepreciation;
sSQL.Format("UPDATE 固定資產信息表 SET 已計提月份=%d,累計折舊=%f,凈值=%f WHERE 編號='%s'",nUseTime,nDepreciation,nNetValue,sID);
uRst.Open(sSQL,adCmdText);
this->UpdateWindow();
//根據計提算法重表計算折舊金額
sMonthRate=ado.FieldToOtherField("折舊算法表","編號",sMeans,"月折舊率",2);
sMonthMoney=ado.FieldToOtherField("折舊算法表","編號",sMeans,"月折舊額",2);
sSQL.Format("SELECT %s AS 折舊率,%s AS 折舊金額 FROM 固定資產信息表 WHERE 編號='%s'",sMonthRate,sMonthMoney,sID);
uRst.Open(sSQL,adCmdText);
if(uRst.GetRecordCount()<1)
{
MessageBox("本月沒有可以折舊的固定資產,固定資產本月剛加入或上月已減少!","系統提示",MB_OK|MB_ICONSTOP);
return;
}
sMonthRate=uRst.GetFieldValue("折舊率");
sMonthMoney=uRst.GetFieldValue("折舊金額");
sSQL.Format("UPDATE 固定資產信息表 SET 月折舊率 =%s,月折舊額=%s WHERE 編號='%s'",sMonthRate,sMonthMoney,sID);
uRst.Open(sSQL,adCmdText);
}
CString sMsg;
sMsg.Format("計提成功!有%d條固定資產記錄被計提折舊!",i);
MessageBox(sMsg,"系統提示",MB_OK|MB_ICONINFORMATION);
}
void CDjt::OnButexit()
{
this->OnCancel();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -