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

518 lines
14 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.

// C_Pay.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "C_Pay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CC_Pay dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
CC_Pay::CC_Pay(CWnd* pParent /*=NULL*/)
: CDialog(CC_Pay::IDD, pParent)
{
//{{AFX_DATA_INIT(CC_Pay)
m_lCorp = -1;
m_tBegin = COleDateTime::GetCurrentTime();
m_tEnd = COleDateTime::GetCurrentTime();
m_lPayType = -1;
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_bProcess = false;
}
void CC_Pay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC_Pay)
DDX_Control(pDX, IDC_C_PAY_S1, m_S_S1);
DDX_Control(pDX, IDC_C_PAY_LIST, m_wndList);
DDX_Control(pDX, IDC_C_PAY_CORPID, m_E_CorpID);
DDX_Control(pDX, IDC_C_PAY_CORP, m_L_Corp);
DDX_CBIndex(pDX, IDC_C_PAY_CORP, m_lCorp);
DDX_DateTimeCtrl(pDX, IDC_C_PAY_TBEGIN, m_tBegin);
DDX_DateTimeCtrl(pDX, IDC_C_PAY_TEND, m_tEnd);
DDX_CBIndex(pDX, IDC_C_PAY_PAYTYPE, m_lPayType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CC_Pay, CDialog)
//{{AFX_MSG_MAP(CC_Pay)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_C_PAY_QUERY, OnCPayQuery)
ON_BN_CLICKED(IDC_C_PAY_QUERY2, OnCPayQuery2)
//}}AFX_MSG_MAP
ON_NOTIFY(NM_RCLICK, IDC_C_PAY_LIST, &CC_Pay::OnNMRClickCPayList)
ON_COMMAND(MENU_PAY_EXPORT , On_User_Export )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CC_Pay message handlers
BOOL CC_Pay::OnInitDialog()
{
CDialog::OnInitDialog();
//È¡µÃ¹²ÓòÎÊý
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LIST) );
m_wndList.SubClassWindow2();
#ifdef SMSCENTER_ADC
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ³äÖµÀàÐÍ,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#else
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#endif
m_wndList.SetGridLines(true);
// m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
/*
//ĬÈÏÈ¡ÉÏÔµÄÄÚÈÝ
SYSTEMTIME t; ::GetLocalTime(&t);
t.wDay = 1;//´Ó1ºÅÆð
t.wMonth = t.wMonth-1;
if ( t.wMonth <=0 )
{
t.wMonth = 12;
t.wYear = t.wYear-1;
}
m_tBegin.SetDate( t.wYear,t.wMonth,t.wDay ); //Æðʼ
if ( t.wMonth == 1 ||
t.wMonth == 3 ||
t.wMonth == 5 ||
t.wMonth == 7 ||
t.wMonth == 8 ||
t.wMonth == 10 ||
t.wMonth == 12 )
{
t.wDay = 31;
}
else
if (t.wMonth == 2 )
t.wDay = 28;
else
t.wDay = 30;
m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//½áÊø
*/
SYSTEMTIME t; ::GetLocalTime(&t);
m_tBegin.SetDate( t.wYear,t.wMonth,1 ); //Æðʼ
m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//½áÊø
m_lPayType = 0; //ĬÈϲ鿴ËùÓÐÊÖ»úÀàÐÍ
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CC_Pay::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CC_Pay::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CC_Pay::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
{
return false;
}
m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);
return true;
}
BOOL CC_Pay::SetRefresh(BOOL bRefresh)
{
m_bRefresh = bRefresh;
return m_bRefresh;
}
BOOL CC_Pay::ProcessSocket(Socket_Head *pHead)
{
CString strTemp;
//È¡¹ýÂËÐÅÏ¢
if (pHead->lFuncType == SMSFUNC_CORP_NAME)
{
m_bRefresh = true; //ÒѾ­Ë¢Ð¹ý
ANS_Corp_Name * pCorp = (ANS_Corp_Name *)pHead->pFrame;
ANS_Corp_NameData * pData = (ANS_Corp_NameData *)(pHead->pFrame+sizeof(ANS_Corp_Name));
m_L_Corp.ResetContent(); //ɾ³ýÔ­ÒÑÓÐµÄÆóÒµ
m_L_Corp.AddString( _T("ËùÓÐÆóÒµ") );
this->Close(); //¹Ø±ÕÔ­¶ÓÁÐ
for ( int i=0;i<pCorp->lCount;i++ )
{
ANS_Corp_NameData * pNewData = new ANS_Corp_NameData;
*pNewData = *pData;
POSITION pos = m_Corp.AddTail(pNewData);
strTemp.Format( _T("%d-%s"),pData->lCorpID,pData->szCorpName);
long lItem = m_L_Corp.AddString( strTemp );
m_L_Corp.SetItemData( lItem , (DWORD)pos);
pData ++;
}
m_L_Corp.SetCurSel(0);
return true;
}
if(pHead->lFuncType == SMSFUNC_PAY_SEE )
{
m_wndList.ShowWindow( SW_HIDE ); //¼Ó¿ìËÙ¶È
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
#ifdef SMSCENTER_ADC
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ³äÖµÀàÐÍ,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#else
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#endif
ANS_Pay_See * pPay = (ANS_Pay_See *)pHead->pFrame;
ANS_Pay_SeeData * pData= (ANS_Pay_SeeData *)(pHead->pFrame+sizeof(ANS_Pay_See));
TCHAR Buf[128]={0};
double fTotal=0;
long lSms=0;
long lPresent=0;
long lSmsAll=0;
for ( int i=0 ; i<pPay->lCount ; i++ )
{
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ½É·ÑÕß,80;½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,60;С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;½É·Ñʱ¼ä,130;¹ýÆÚʱ¼ä,130; ±¸ ×¢,130;"));
_stprintf( Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf , 0 ); //ItemΪ0µÄÔ­ÒòÊǵ¹×ªÏÔʾ
_stprintf( Buf , _T("%d-%s"),pData->lCorpID,pData->szCorpName);
m_wndList.SetItemText( i , 1 , Buf);
#ifdef SMSCENTER_ADC
if ( pData->lPayType ==1 )
m_wndList.SetItemText( i , 2 , _T("ADC³äÖµ") );
else
m_wndList.SetItemText( i , 2 , _T("¶ÌÐÅÒ׳äÖµ") );
#else
m_wndList.SetItemText( i , 2 , pData->szPayMode );
#endif
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( i , 3 , Buf );
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( i , 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( i , 5 , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( i , 6 , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( i , 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( i , 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( i , 9 , Buf);
// m_wndList.SetItemText( i , 10 , pData->szBZ);
fTotal += pData->fPrice;
lSms += a;
lPresent += pData->lPresent;
lSmsAll += pData->lSMSCount;
pData ++;
}
m_wndList.InsertItem(i,_T(""),0 );
i++;
m_wndList.InsertItem(i,_T("ºÏ¼Æ"),0 );
_stprintf( Buf , _T("%8.2f") , fTotal );
m_wndList.SetItemText( i , 3 , Buf );
_stprintf( Buf , _T("%8d") , lSms);
m_wndList.SetItemText( i , 5 , Buf );
_stprintf( Buf , _T("%8d") , lPresent);
m_wndList.SetItemText( i , 6 , Buf );
_stprintf( Buf , _T("%8d") , lSmsAll);
m_wndList.SetItemText( i , 7 , Buf );
m_wndList.ShowWindow( SW_SHOW ); //¼Ó¿ìËÙ¶È
return true;
}
return false;
}
void CC_Pay::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
CRect rect;
m_S_S1.GetWindowRect(&rect);
m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5);
}
}
void CC_Pay::Close()
{
//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
while (!m_Corp.IsEmpty())
{
ANS_Corp_NameData * pData = m_Corp.GetHead();
m_Corp.RemoveHead();
delete pData;
}
}
void CC_Pay::OnCPayQuery()
{
UpdateData(true);
if ( m_tEnd < m_tBegin )
{
MessageBox( _T("²éѯ½áÊøÈÕÆÚ²»ÄÜСÓÚÆðʼÈÕÆÚ£¬Çë¸ÄÕý!") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
if ( m_lPayType==1 ) //²éѯ²ÊÐųäÖµ
{
m_wndList.ShowWindow(SW_HIDE);
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
#ifdef SMSCENTER_ADC
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ³äÖµÀàÐÍ,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ²ÊÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#else
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ²ÊÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#endif
m_wndList.ShowWindow(SW_SHOW);
REQ_MmsPay_See * pPay = new REQ_MmsPay_See;memset(pPay,0,sizeof(REQ_MmsPay_See));
if ( m_lCorp == 0 ) //Ñ¡ÁËËùÓÐÆóÒµ
{
pPay->lCorpID = -1;
}
else
{
POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
POSITION pos2 = pos;
ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
if (pData)
{
pPay->lCorpID = pData->lCorpID;
}
else
{
return;
}
}
m_tBegin.GetAsSystemTime( pPay->tBegin );
m_tEnd.GetAsSystemTime( pPay->tEnd );
pPay->lPayType = 0;
pPay->lYWYID = -1;
m_pMainFrame->SendFrame(SMSFUNC_MMSPAY_SEE,(BYTE*)pPay,sizeof(REQ_MmsPay_See));
}
else
{
m_wndList.ShowWindow(SW_HIDE);
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
#ifdef SMSCENTER_ADC
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ³äÖµÀàÐÍ,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#else
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#endif
m_wndList.ShowWindow(SW_SHOW);
REQ_Pay_See * pPay = new REQ_Pay_See;memset(pPay,0,sizeof(REQ_Pay_See));
if ( m_lCorp == 0 ) //Ñ¡ÁËËùÓÐÆóÒµ
{
pPay->lCorpID = -1;
}
else
{
POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
POSITION pos2 = pos;
ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
if (pData)
{
pPay->lCorpID = pData->lCorpID;
}
else
{
return;
}
}
m_tBegin.GetAsSystemTime( pPay->tBegin );
m_tEnd.GetAsSystemTime( pPay->tEnd );
pPay->lPayType = 0;
pPay->lYWYID = -1;
m_pMainFrame->SendFrame(SMSFUNC_PAY_SEE,(BYTE*)pPay,sizeof(REQ_Pay_See));
}
return ;
}
void CC_Pay::OnCPayQuery2()
{
CString strTemp;
CString strFind;
m_E_CorpID.GetWindowText(strFind);
if ( strFind.GetLength()<=0 )
return ;
long lSel = m_L_Corp.GetCurSel();
long lCount = m_L_Corp.GetCount();
for ( int i=lSel+1 ; i<lCount ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
return ;
}
}
for ( i=0 ; i<lSel ; i++ )
{
m_L_Corp.GetLBText(i,strTemp);
if ( strTemp.Find(strFind)>=0 )
{
m_L_Corp.SetCurSel(i);
return ;
}
}
}
BOOL CC_Pay::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
if(pHead->lFuncType == SMSFUNC_MMSPAY_SEE )
{
m_wndList.ShowWindow( SW_HIDE ); //¼Ó¿ìËÙ¶È
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
#ifdef SMSCENTER_ADC
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ³äÖµÀàÐÍ,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ²ÊÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#else
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,250; ½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,80;С¼Æ,70; ÔùËÍ,70; ²ÊÐÅÁ¿,70;³äֵʱ¼ä,130;"));
#endif
ANS_MmsPay_See * pPay = (ANS_MmsPay_See *)pFrame;
ANS_MmsPay_SeeData * pData= (ANS_MmsPay_SeeData *)(pFrame+sizeof(ANS_MmsPay_See));
TCHAR Buf[128]={0};
double fTotal=0;
long lSms=0;
long lPresent=0;
long lSmsAll=0;
for ( int i=0 ; i<pPay->lCount ; i++ )
{
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ½É·ÑÕß,80;½É·Ñ·½Ê½,80;½É·Ñ½ð¶î,80; ·ÑÂÊ,60;С¼Æ,70; ÔùËÍ,70; ¶ÌÐÅÁ¿,70;½É·Ñʱ¼ä,130;¹ýÆÚʱ¼ä,130; ±¸ ×¢,130;"));
_stprintf( Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf , 0 ); //ItemΪ0µÄÔ­ÒòÊǵ¹×ªÏÔʾ
_stprintf( Buf , _T("%d-%s"),pData->lCorpID,pData->szCorpName);
m_wndList.SetItemText( i , 1 , Buf);
#ifdef SMSCENTER_ADC
if ( pData->lPayType ==1 )
m_wndList.SetItemText( i , 2 , _T("ADC³äÖµ") );
else
m_wndList.SetItemText( i , 2 , _T("¶ÌÐÅÒ׳äÖµ") );
#else
m_wndList.SetItemText( i , 2 , pData->szPayMode );
#endif
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( i , 3 , Buf );
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( i , 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( i , 5 , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( i , 6 , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( i , 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( i , 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( i , 9 , Buf);
// m_wndList.SetItemText( i , 10 , pData->szBZ);
fTotal += pData->fPrice;
lSms += a;
lPresent += pData->lPresent;
lSmsAll += pData->lSMSCount;
pData ++;
}
m_wndList.InsertItem(i,_T(""),0 );
i++;
m_wndList.InsertItem(i,_T("ºÏ¼Æ"),0 );
_stprintf( Buf , _T("%8.2f") , fTotal );
m_wndList.SetItemText( i , 3 , Buf );
_stprintf( Buf , _T("%8d") , lSms);
m_wndList.SetItemText( i , 5 , Buf );
_stprintf( Buf , _T("%8d") , lPresent);
m_wndList.SetItemText( i , 6 , Buf );
_stprintf( Buf , _T("%8d") , lSmsAll);
m_wndList.SetItemText( i , 7 , Buf );
m_wndList.ShowWindow( SW_SHOW ); //¼Ó¿ìËÙ¶È
return true;
}
return false;
}
void CC_Pay::OnNMRClickCPayList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
*pResult = 0;
ShowRMenu();
}
void CC_Pay::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING , MENU_PAY_EXPORT , _T(" ¸´ÖÆÊý¾Ý ") );
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
void CC_Pay::On_User_Export()
{
m_wndList.CopyToClipboard();
MessageBox(_T("Êý¾ÝÒѸ´ÖÆ£¬½¨Òé´ò¿ªExcelÕ³Ìù½øÈ¥") , _T("Ìáʾ") , MB_ICONINFORMATION);
}