📄 fvjjtg.cpp
字号:
// FvJJTG.cpp : implementation file
//
#include "stdafx.h"
#include "SellMan.h"
#include "FvJJTG.h"
#include "TabCS.h"
#include "TabDL.h"
#include "TabJJ.h"
#include "TabXC.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFvJJTG
extern _ConnectionPtr connection;
extern BOOL bConnected;
IMPLEMENT_DYNCREATE(CFvJJTG, CFormView)
CFvJJTG::CFvJJTG()
: CFormView(CFvJJTG::IDD)
{
//{{AFX_DATA_INIT(CFvJJTG)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CFvJJTG::~CFvJJTG()
{
}
void CFvJJTG::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFvJJTG)
DDX_Control(pDX, IDC_BT_QUERY, m_bt_query);
DDX_Control(pDX, IDC_ST_STOP, m_st_stop);
DDX_Control(pDX, IDC_ST_START, m_st_start);
DDX_Control(pDX, IDC_DA_STOP, m_date_stop);
DDX_Control(pDX, IDC_DA_START, m_date_start);
DDX_Control(pDX, IDC_BT_EXIT, m_bt_close);
DDX_Control(pDX, IDC_BT_START, m_bt_calc);
DDX_Control(pDX, IDC_LIST_TGJL, m_list_tgjl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFvJJTG, CFormView)
//{{AFX_MSG_MAP(CFvJJTG)
ON_BN_CLICKED(IDC_BT_START, OnBtStart)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_BT_QUERY, OnBtQuery)
ON_BN_CLICKED(IDC_BT_EXIT, OnBtExit)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFvJJTG diagnostics
#ifdef _DEBUG
void CFvJJTG::AssertValid() const
{
CFormView::AssertValid();
}
void CFvJJTG::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CFvJJTG message handlers
void CFvJJTG::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
SYSTEMTIME tm;
CString strTime;
SetScrollSizes( MM_TEXT, CSize( 0, 0 ) );
GetLocalTime( &tm );
strTime.Format( "%4d-%02d-%02d", tm.wYear, tm.wMonth + 1, tm.wDay );
m_date_start.SetTime( tm );
m_date_stop.SetWindowText( strTime );
m_bt_calc.SetIcon( IDI_NEW );
m_bt_close.SetIcon( IDI_EXIT16 );
m_bt_query.SetIcon( IDI_PRINT_PREVIEW );
CImageList m_imgList;
m_list_tgjl.InsertColumn( 0, "员工姓名", LVCFMT_LEFT, 100 );
m_list_tgjl.InsertColumn( 1, "奖金金额", LVCFMT_RIGHT, 70 );
m_list_tgjl.InsertColumn( 2, "计算比例(%)", LVCFMT_RIGHT, 100 );
m_list_tgjl.InsertColumn( 3, "被介绍代理商姓名", LVCFMT_RIGHT, 150 );
HICON hIcon;
m_imgList.Create (16, 16, true, 2, 1);
hIcon= AfxGetApp()->LoadIcon ( IDI_MAN );
m_imgList.Add (hIcon);
m_list_tgjl.SetImageList( &m_imgList, LVSIL_SMALL );
m_list_tgjl.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES );
m_list_tgjl.SetTextColor( RGB( 0, 0, 128 ) );
}
void CFvJJTG::CalTGJL()
{
CTabCS tabcs;
CTabDL tabdl;
CTabJJ tabjj;
char szSQL[250];
double ddi, ddifirst, dxian, dxianfirst, dxiang, dxiangfirst, dTmp, djj;
long lTmp, lcount ,lmax;
CString strTmp1, strMsg, strDateTime;
SYSTEMTIME systm;
GetLocalTime( &systm );
strDateTime.Format( "%04d%02d%02d",systm.wYear, systm.wMonth, systm.wDay );
try
{
//1.取出结算比例
memset( szSQL, 0, 250 );
sprintf( szSQL, "WHERE CSBMBM = 'JJ' AND CSZDMC = 'JJHSDW'" );
tabcs.Open( szSQL );
while( tabcs.IsOpen && !tabcs.IsEOF() )
{
lTmp = atol( tabcs.CSZDXH.GetValue() );
switch( lTmp )
{
case 1:
ddifirst = atof( tabcs.CSSZQZ.GetValue() );
break;
case 2:
ddi = atof( tabcs.CSSZQZ.GetValue() );
break;
case 3:
dxianfirst = atof( tabcs.CSSZQZ.GetValue() );
break;
case 4:
dxian = atof( tabcs.CSSZQZ.GetValue() );
break;
case 5:
dxiangfirst = atof( tabcs.CSSZQZ.GetValue() );
break;
case 6:
dxiang = atof( tabcs.CSSZQZ.GetValue() );
break;
}
tabcs.MoveNext();
}
//2.读出未计算的推广人员信息
memset( szSQL, 0, 250 );
sprintf( szSQL, "WHERE DLJLZT = 1 " );
tabdl.Open( szSQL );
lcount = getCount();
dlgpro.Create(IDD_PR, this);
dlgpro.Open( lcount, "正准备开始计算推广员的奖励----" );
lcount = 0;
connection->BeginTrans();
while( tabdl.IsOpen() && !tabdl.IsEOF() )
{
lcount++;
lTmp = IsFirst( tabdl.DLTJRH.GetValue() );
strTmp1 = tabdl.DLDLJB.GetValue();
strMsg.Format( "正在计算[%s]推荐[%s]推荐费", tabdl.DLTJRH.GetValue(), tabdl.DLDLID.GetValue() );
dlgpro.SetProgressMessage( strMsg, lcount );
switch( lTmp )
{
case 0:
if (strTmp1.Compare( "1" ))
dTmp = ddifirst;
else if (strTmp1.Compare( "2" ))
dTmp = dxianfirst;
else
dTmp = dxiangfirst;
break;
case 1:
if (strTmp1.Compare( "1" ))
dTmp = ddi;
else if (strTmp1.Compare( "2" ))
dTmp = dxian;
else
dTmp = dxiang;
break;
}
if ( lTmp == 2 ) continue;
memset( szSQL, 0, 250 );
sprintf( szSQL, "%s", tabdl.DLJHJE.GetValue());
djj = dTmp*atof(szSQL);
tabjj.JJYGBH.strValue = tabdl.DLTJRH.GetValue();
strTmp1.Format( "%.2f", djj );
tabjj.JJFFJE.strValue = strTmp1;
tabjj.JJJJRX.strValue = "5";
strTmp1.Format( "%.f", dTmp );
tabjj.JJHSDW.strValue = strTmp1;
tabjj.JJJLZT.strValue = "1";
tabjj.JJJSDL.strValue = tabdl.DLDLID.GetValue();
tabjj.JJJSQR.strValue = tabdl.DLJRRQ.GetValue();
tabjj.JJJSJR.strValue = tabdl.DLJRRQ.GetValue();
tabjj.JJFFRQ.strValue = strDateTime;
lmax = GetMaxCount();
if ( lmax > 0 )
{
strTmp1.Format( "%ld", lmax );
tabjj.JJLSID.strValue = strTmp1;
tabjj.AppendRecord();
tabdl.DLJLZT.strValue = "2";
tabdl.UpdateRecord();
}
else
AfxMessageBox("当前记录计算不成功");
tabdl.MoveNext();
}
dlgpro.Close( "计算完毕" );
connection->CommitTrans();
}
catch( _com_error &e )
{
connection->RollbackTrans();
dlgpro.Close( "计算中断" );
AfxMessageBox( e.ErrorMessage() );
}
}
/**************************************
0----首次
1----不是首次
2----读不出该信息
****************************************/
long CFvJJTG::IsFirst(CString strDLTJRH)
{
CTabDL tabdl;
char szSQL[250];
_RecordsetPtr recordset;
HRESULT hr;
Fields * fields = NULL;
VARIANT var_value;
CString strTmp;
long lreturn;
memset( szSQL, 0, 250 );
sprintf( szSQL,"SELECT COUNT( DLTJRH ) FROM DL WHERE DLJLZT =2 AND DLTJRH = '%s'", strDLTJRH );
try
{
hr = recordset.CreateInstance( _uuidof( Recordset ) );
if( SUCCEEDED(hr) )
{
_bstr_t query( szSQL );
hr = recordset->Open( query, _variant_t((IDispatch*)connection, true),
adOpenDynamic, adLockOptimistic, adCmdText );
if( SUCCEEDED(hr) )
{
recordset->get_Fields( &fields );
fields->Item[ (long)0 ]->get_Value( &var_value );
strTmp = VariantToString( var_value );
if (!strTmp.GetLength())
{
lreturn = 2;
}
else if( !strTmp.Compare("0"))
{
lreturn = 0;
}
else
{
lreturn = 1;
}
}
}
}
catch( _com_error &e )
{
AfxMessageBox( e.ErrorMessage() );
lreturn = 2;
}
catch( ... )
{
lreturn = 2;
}
return lreturn;
}
long CFvJJTG::getCount()
{
char szSQL[250];
_RecordsetPtr recordset;
HRESULT hr;
Fields * fields = NULL;
VARIANT var_value;
CString strTmp;
long lreturn;
memset( szSQL, 0, 250 );
sprintf( szSQL,"SELECT COUNT( DLTJRH ) FROM DL WHERE DLJLZT = 1 ");
try
{
hr = recordset.CreateInstance( _uuidof( Recordset ) );
if( SUCCEEDED(hr) )
{
_bstr_t query( szSQL );
hr = recordset->Open( query, _variant_t((IDispatch*)connection, true),
adOpenDynamic, adLockOptimistic, adCmdText );
if( SUCCEEDED(hr) )
{
recordset->get_Fields( &fields );
fields->Item[ (long)0 ]->get_Value( &var_value );
strTmp = VariantToString( var_value );
memset( szSQL, 0, 250 );
sprintf( szSQL, "%s", strTmp );
lreturn = atol( szSQL );
}
}
}
catch( _com_error &e )
{
AfxMessageBox( e.ErrorMessage() );
lreturn = -1;
}
catch( ... )
{
lreturn = -1;
}
return lreturn;
}
void CFvJJTG::OnBtStart()
{
// TODO: Add your control notification handler code here
CalTGJL();
Query();
}
long CFvJJTG::GetMaxCount()
{
char szSQL[250];
_RecordsetPtr recordset;
HRESULT hr;
Fields * fields = NULL;
VARIANT var_value;
CString strTmp;
long lreturn;
memset( szSQL, 0, 250 );
sprintf( szSQL,"SELECT MAX( JJLSID ) + 1 FROM JJ ");
try
{
hr = recordset.CreateInstance( _uuidof( Recordset ) );
if( SUCCEEDED(hr) )
{
_bstr_t query( szSQL );
hr = recordset->Open( query, _variant_t((IDispatch*)connection, true),
adOpenDynamic, adLockOptimistic, adCmdText );
if( SUCCEEDED(hr) )
{
recordset->get_Fields( &fields );
fields->Item[ (long)0 ]->get_Value( &var_value );
strTmp = VariantToString( var_value );
if ( !strTmp.GetLength() )
{
lreturn = 1;
}
else
{
memset( szSQL, 0, 250 );
sprintf( szSQL, "%s", strTmp );
lreturn = atol( szSQL );
}
}
}
}
catch( _com_error &e )
{
AfxMessageBox( e.ErrorMessage() );
lreturn = -1;
}
catch( ... )
{
lreturn = -1;
}
return lreturn;
}
void CFvJJTG::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
// TODO: Add your specialized code here and/or call the base class
}
void CFvJJTG::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
if( m_bt_calc.GetSafeHwnd() )
{
m_list_tgjl.SetWindowPos( 0, 0, 30, cx, cy - 75, SWP_NOZORDER );
m_st_start.SetWindowPos( 0, 10, cy - 30, 15, 20, SWP_NOZORDER );
m_date_start.SetWindowPos( 0, 35, cy - 35, 150, 20, SWP_NOZORDER );
m_st_stop.SetWindowPos( 0, 190, cy - 30, 15, 20, SWP_NOZORDER );
m_date_stop.SetWindowPos( 0, 215, cy - 35, 150, 20, SWP_NOZORDER );
m_bt_calc.SetWindowPos( 0, 375, cy - 40, 100, 35, SWP_NOZORDER );
m_bt_query.SetWindowPos( 0, 485, cy - 40, 100, 35, SWP_NOZORDER );
m_bt_close.SetWindowPos( 0, 600, cy - 40, 100, 35, SWP_NOZORDER );
}
}
void CFvJJTG::Query()
{
CTabJJ tabjj;
CTabXC tabxc;
CTabDL tabdl;
CString strStartDate, strStopDate;
SYSTEMTIME systime;
char szSQL[250];
int nindex;
CString strTmp;
m_date_start.GetTime( &systime );
strStartDate.Format( "%04d%02d%02d", systime.wYear, systime.wMonth, systime.wDay );
m_date_stop.GetTime( &systime );
strStopDate.Format( "%04d%02d%02d", systime.wYear, systime.wMonth, systime.wDay );
memset( szSQL, 0, 250 );
sprintf( szSQL, "WHERE JJJSQR >= '%s' AND JJJSQR <= '%s' AND JJJJRX = 5",
strStartDate, strStopDate );
try
{
m_list_tgjl.DeleteAllItems();
tabjj.Open( szSQL );
nindex = 0;
while( !tabjj.IsEOF() && tabjj.IsOpen() )
{
memset( szSQL, 0, 255 );
sprintf( szSQL, "WHERE XCYGID = '%s'", tabjj.JJYGBH.GetValue() );
tabxc.Open( szSQL );
if ( tabxc.IsOpen() )
m_list_tgjl.InsertItem( nindex, tabxc.XCYGMC.GetValue() );
strTmp.Format( "%.2f", atof( tabjj.JJFFJE.GetValue().GetBuffer( 0 ) )/100 );
m_list_tgjl.SetItemText( nindex, 1, strTmp );
m_list_tgjl.SetItemText( nindex, 2, tabjj.JJHSDW.GetValue() );
sprintf( szSQL, "WHERE DLDLID = '%s'", tabjj.JJJSDL.GetValue() );
tabdl.Open( szSQL );
if ( tabdl.IsOpen() )
m_list_tgjl.SetItemText( nindex, 3, tabdl.DLDLMC.GetValue() );
nindex++;
tabjj.MoveNext();
}
}
catch( _com_error &e )
{
AfxMessageBox( e.ErrorMessage() );
}
}
void CFvJJTG::OnBtQuery()
{
// TODO: Add your control notification handler code here
Query();
}
void CFvJJTG::OnBtExit()
{
// TODO: Add your control notification handler code here
GetParentFrame()->SendMessage( WM_CLOSE );
}
void CFvJJTG::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
{
AfxGetApp()->GetMainWnd()->SendMessage( WM_VIEW_ACTIVE, (WPARAM)this, (LPARAM)this );
CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}
void CFvJJTG::OnDestroy()
{
CFormView::OnDestroy();
AfxGetApp()->GetMainWnd()->SendMessage( WM_VIEW_CLOSE, (WPARAM)this, (LPARAM)this );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -