AgentManager/DLG_User_Pay.cpp
2025-01-22 15:45:17 +08:00

258 lines
7.7 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// DLG_User_Pay.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_User_Pay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_User_Pay dialog
#include "DLG_User_Pay_Modify.h"
DLG_User_Pay::DLG_User_Pay(CWnd* pParent /*=NULL*/)
: CDialog(DLG_User_Pay::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_User_Pay)
m_strLoginName = _T("");
m_strSMSNum = _T("");
m_strSMSSendAll = _T("");
m_strSMSUsed = _T("");
m_strTotal = _T("");
//}}AFX_DATA_INIT
m_lModifyCount = 0;
memset( &m_PayReq , 0 , sizeof(m_PayReq) );
m_pPayData = NULL;
m_bModify = true;
m_fUsed = 0.0f;
m_fAdd = 0.0f;
}
void DLG_User_Pay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_User_Pay)
DDX_Control(pDX, IDC_USER_PAY_LIST, m_wndList);
DDX_Text(pDX, IDC_USER_PAY_LOGINNAME, m_strLoginName);
DDX_Text(pDX, IDC_USER_PAY_SMSNUM, m_strSMSNum);
DDX_Text(pDX, IDC_USER_PAY_SMSSENDALL, m_strSMSSendAll);
DDX_Text(pDX, IDC_USER_PAY_SMSUSED, m_strSMSUsed);
DDX_Text(pDX, IDC_USER_PAY_TOTAL, m_strTotal);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_User_Pay, CDialog)
//{{AFX_MSG_MAP(DLG_User_Pay)
ON_BN_CLICKED(IDC_USER_PAY_ADD, OnUserPayAdd)
ON_BN_CLICKED(IDC_USER_PAY_SEE, OnUserPaySee)
ON_NOTIFY(NM_DBLCLK, IDC_USER_PAY_LIST, OnDblclkUserPayList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_User_Pay message handlers
BOOL DLG_User_Pay::OnInitDialog()
{
CDialog::OnInitDialog();
m_strLoginName = m_PayReq.szUserName;
m_strSMSNum = m_PayReq.szSMSNum;
m_strSMSUsed.Format( _T("%d") , m_PayReq.lSmsUsed );
if ( m_PayReq.lSmsUsed == -100 )
m_strSMSUsed=_T("ÎÞÏÞÖÆ");
m_strSMSSendAll.Format( _T("%d") , m_PayReq.lSmsSendAll );
float fTotal=0.0f;
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP) );
m_wndList.SubClassWindow2();
if ( m_PayReq.lPayType==0 )
{
m_wndList.SetHeadings(_T("ÐòºÅ,50; ³öµ¥ÈË,80;½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80; С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;½É·Ñʱ¼ä,130; ±¸ ×¢,130;"));
this->SetWindowText(_T("¶ÌÐųäÖµ ×¢Ò⣺×ÓÕʺÅÓжàÖÖ·½Ê½ÐÞ¸ÄÓà¶î£¬´Ë³äÖµ½ö¹©¼Ç¼²Î¿¼£¡"));
}
if ( m_PayReq.lPayType==1 )
{
m_wndList.SetHeadings(_T("ÐòºÅ,50; ³öµ¥ÈË,80;½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80; С¼Æ,70; ÔùËÍ,70; ²ÊÐÅÁ¿,70;½É·Ñʱ¼ä,130; ±¸ ×¢,130;"));
this->SetWindowText(_T("²ÊÐųäÖµ ×¢Ò⣺×ÓÕʺÅÓжàÖÖ·½Ê½ÐÞ¸ÄÓà¶î£¬´Ë³äÖµ½ö¹©¼Ç¼²Î¿¼£¡"));
}
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
POSITION pos;
TCHAR Buf[32];
for ( int i = 0 ; i< m_PayReq.lCount ; i++ )
{
ANS_User_PayData * pData = new ANS_User_PayData;
*pData = m_pPayData[i];
pos = m_Pay.AddTail( pData );
_stprintf( Buf , _T("%d") , i+1 );
m_wndList.InsertItem( 0 , Buf , 0 ); //ItemΪ0µÄÔ­ÒòÊǵ¹×ªÏÔʾ
m_wndList.SetItemData( 0 , (DWORD)pos);
//m_wndList.SetItemText( 0 , 1 , pData->szPayMan );
m_wndList.SetItemText( 0 , 1 , pData->szCreateUser );
m_wndList.SetItemText( 0 , 2 , pData->szPayMode );
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( 0 , 3 , Buf );
fTotal += pData->fPrice;
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( 0 , 4 , Buf );
long a=0;
if ( pData->fPrice!=0 && pData->fPriceOne!=0 )
{
double l = pData->fPrice/pData->fPriceOne;
a = long(l+0.5f);
if ( a<0 )
a = long(l-0.5f);
}
_stprintf( Buf , _T("%8d") , a);
m_wndList.SetItemText( 0 , 5 , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( 0 , 6 , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( 0 , 7 , Buf );
_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tPayTime.wYear,pData->tPayTime.wMonth,pData->tPayTime.wDay,pData->tPayTime.wHour,pData->tPayTime.wMinute );
m_wndList.SetItemText( 0 , 8 , Buf);
//_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tOvrTime.wYear,pData->tOvrTime.wMonth,pData->tOvrTime.wDay,pData->tOvrTime.wHour,pData->tOvrTime.wMinute );
//m_wndList.SetItemText( 0 , 9 , Buf);
m_wndList.SetItemText( 0 , 9 , pData->szBZ);
}
/*
if ( !m_bModify || m_PayReq.lSmsUsed == -100 ) //²»ÔÊÐíÐÞ¸Ä
{
GetDlgItem(IDC_USER_PAY_ADD)->EnableWindow(false);
}
*/
if (!m_bModify ) //²»ÔÊÐíÐÞ¸Ä
{
GetDlgItem(IDC_USER_PAY_ADD)->EnableWindow(false);
}
m_strTotal.Format( _T("%.2f") , fTotal );
this->UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DLG_User_Pay::OnOK()
{
CDialog::OnOK();
}
long DLG_User_Pay::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void DLG_User_Pay::SetParam(ANS_User_Pay Pay, ANS_User_PayData *pPayData, BOOL bModify, float fUsed)
{
m_PayReq = Pay;
m_pPayData = pPayData;
m_bModify = bModify;
m_fUsed = fUsed;
}
void DLG_User_Pay::OnUserPayAdd()
{
DLG_User_Pay_Modify dlg(m_PayReq.lSmsUsed,this);
if ( dlg.DoModal() == IDOK )
{
ANS_User_PayData * pData = new ANS_User_PayData;
*pData = dlg.GetParam();
pData->ucStatus = CORP_PAY_ADD;
pData->lPayType = this->m_PayReq.lPayType;
m_lModifyCount ++; //ÐèÒªÐ޸ĵļǼÔö¼Ó
POSITION pos = m_Pay.AddTail( pData );
m_fAdd = m_fAdd + pData->fPrice; //¼Ç¼×ÜÊý
long lCount = m_wndList.GetItemCount();
TCHAR Buf[32];
_stprintf( Buf, _T("%d") , lCount +1 );
//ÉèÖÃеÄÊý¾Ý
m_wndList.InsertItem( 0 , Buf , 0); //ItemΪ0µÄÔ­ÒòÊǵ¹×ªÏÔʾ
m_wndList.SetItemData( 0, (DWORD)pos );
m_wndList.SetItemText( 0 , 1 , pData->szPayMan );
m_wndList.SetItemText( 0 , 2 , pData->szPayMode );
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( 0 , 3 , Buf );
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( 0 , 4 , Buf );
long a=0;
if ( pData->fPrice!=0 && pData->fPriceOne!=0 )
{
double l = pData->fPrice/pData->fPriceOne;
a = long(l+0.5f);
if ( a<0 )
a = long(l-0.5f);
}
_stprintf( Buf , _T("%8d") , a);
m_wndList.SetItemText( 0 , 5 , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( 0 , 6 , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( 0 , 7 , Buf );
_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tPayTime.wYear,pData->tPayTime.wMonth,pData->tPayTime.wDay,pData->tPayTime.wHour,pData->tPayTime.wMinute );
m_wndList.SetItemText( 0 , 8 , Buf);
m_wndList.SetItemText( 0 , 9 , pData->szBZ );
//_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tOvrTime.wYear,pData->tOvrTime.wMonth,pData->tOvrTime.wDay,pData->tOvrTime.wHour,pData->tOvrTime.wMinute );
//m_wndList.SetItemText( 0 , 9 , Buf);
//Ôö¼ÓÊý¾Ý
//m_PayReq.fTotal += pData->fPrice;
//m_PayReq.lTotalSms += pData->lSMSCount;
if (m_PayReq.lSmsUsed == -100) m_PayReq.lSmsUsed = 0; //Èç¹ûÊÇÎÞÏÞÖÆµÄ£¬³äÖµºó¾Í±ä³É´Ó0¿ªÊ¼
m_PayReq.lSmsUsed += pData->lSMSCount;
m_strSMSUsed.Format( _T("%d") , m_PayReq.lSmsUsed );
float fTotal = _tstof(m_strTotal) + pData->fPrice;
m_strTotal.Format( _T("%.2f") , fTotal );
this->UpdateData(false);
}
}
void DLG_User_Pay::OnUserPaySee()
{
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_User_PayData * pData = m_Pay.GetNext( pos );
if (pData)
{
DLG_User_Pay_Modify dlg(m_PayReq.lSmsUsed,this);
dlg.SetParam( *pData,false);
dlg.DoModal();
}
}
void DLG_User_Pay::OnDblclkUserPayList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
OnUserPaySee();
}