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

398 lines
10 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

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_MyPay.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "C_MyPay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CC_MyPay dialog
#include "MainFrm.h"
#include "SmsManagerDoc.h"
#include "UserView.h"
#include "ProcessSocket.h"
CC_MyPay::CC_MyPay(CWnd* pParent /*=NULL*/)
: CDialog(CC_MyPay::IDD, pParent)
, m_lQueryType(0)
{
//{{AFX_DATA_INIT(CC_MyPay)
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_bProcess = false;
}
void CC_MyPay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC_MyPay)
DDX_Control(pDX, IDC_C_MYPAY_AGENTNAME, m_E_AgentName);
DDX_Control(pDX, IDC_C_PAY_S1, m_S_S1);
DDX_Control(pDX, IDC_C_PAY_LIST, m_wndList);
//}}AFX_DATA_MAP
DDX_CBIndex(pDX, IDC_C_PAY_PAYTYPE, m_lQueryType);
}
BEGIN_MESSAGE_MAP(CC_MyPay, CDialog)
//{{AFX_MSG_MAP(CC_MyPay)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_C_PAY_QUERY, OnCPayQuery)
//}}AFX_MSG_MAP
ON_NOTIFY(NM_RCLICK, IDC_C_PAY_LIST, &CC_MyPay::OnNMRClickCPayList)
ON_COMMAND(MENU_MYPAY_EXPORT , On_User_Export )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CC_MyPay message handlers
BOOL CC_MyPay::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();
m_wndList.SetHeadings(_T("序号,50;缴费时间,130;缴费金额,100; 费率,80;小计,70; 赠送,70; 短信量,70; 余额,70;"));
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 );//结束
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CC_MyPay::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CC_MyPay::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CC_MyPay::RefreshInfo()
{
/*
if ( !m_pMainFrame->GetUserPurview(PURVIEW_TAB) )
{
return false;
}
*/
OnCPayQuery();
//m_E_AgentName.SetWindowText( this->m_pMainFrame->m_pUserView->m_dlgInfo.m_strName );
return true;
}
BOOL CC_MyPay::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
CString strTemp;
if(pHead->lFuncType == SMSFUNC_AGENT_MMSPAY )
{
m_wndList.ShowWindow(SW_HIDE);
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
m_wndList.SetHeadings(_T("序号,50;缴费时间,130;缴费金额,100; 费率,80;小计,70; 赠送,70; 彩信量,70; 余额,70;"));
ANS_Agent_MmsPay * pPay = (ANS_Agent_MmsPay *)pFrame;
ANS_Agent_MmsPayData * pData= (ANS_Agent_MmsPayData *)(pFrame+sizeof(ANS_Agent_MmsPay));
m_E_AgentName.SetWindowText( pPay->szAgentName );
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;小计,70; 赠送,70; 短信量,70;缴费时间,130;"));
_stprintf( Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf , 0 ); //Item为0的原因是倒转显示
_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 , 1 , Buf);
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( i , 2 , Buf );
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( i , 3 , 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 , 4 , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( i , 5 , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( i , 6 , Buf );
_stprintf(Buf, _T("%8d"), pData->lBalance);
m_wndList.SetItemText(i,7, Buf);
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 , 2 , Buf );
_stprintf( Buf , _T("%8d") , lSms);
m_wndList.SetItemText( i , 4 , Buf );
_stprintf( Buf , _T("%8d") , lPresent);
m_wndList.SetItemText( i , 5 , Buf );
_stprintf( Buf , _T("%8d") , lSmsAll);
m_wndList.SetItemText( i , 6 , Buf );
m_wndList.ShowWindow( SW_SHOW ); //加快速度
return true;
}
return false;
}
BOOL CC_MyPay::ProcessSocket(Socket_Head *pHead)
{
CString strTemp;
if(pHead->lFuncType == SMSFUNC_AGENT_PAY )
{
m_wndList.ShowWindow(SW_HIDE);
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
m_wndList.SetHeadings(_T("序号,50;缴费时间,130;缴费金额,100; 费率,80;小计,70; 赠送,70; 短信量,70; 余额,70;"));
ANS_Agent_Pay * pPay = (ANS_Agent_Pay *)pHead->pFrame;
ANS_Agent_PayData * pData= (ANS_Agent_PayData *)(pHead->pFrame+sizeof(ANS_Agent_Pay));
m_E_AgentName.SetWindowText( pPay->szAgentName );
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;小计,70; 赠送,70; 短信量,70;缴费时间,130;"));
_stprintf( Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf , 0 ); //Item为0的原因是倒转显示
_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 , 1 , Buf);
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( i , 2 , Buf );
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( i , 3 , 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 , 4 , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( i , 5 , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( i , 6 , Buf );
_stprintf(Buf, _T("%8d"), pData->lBalance);
m_wndList.SetItemText(i, 7, Buf);
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 , 2 , Buf );
_stprintf( Buf , _T("%8d") , lSms);
m_wndList.SetItemText( i , 4 , Buf );
_stprintf( Buf , _T("%8d") , lPresent);
m_wndList.SetItemText( i , 5 , Buf );
_stprintf( Buf , _T("%8d") , lSmsAll);
m_wndList.SetItemText( i , 6 , Buf );
m_wndList.ShowWindow( SW_SHOW ); //加快速度
return true;
}
return false;
}
void CC_MyPay::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_MyPay::Close()
{
//清除队列中的内容
while (!m_Corp.IsEmpty())
{
ANS_Corp_NameData * pData = m_Corp.GetHead();
m_Corp.RemoveHead();
delete pData;
}
}
void CC_MyPay::OnCPayQuery()
{
UpdateData(true);
// if ( m_tEnd < m_tBegin )
// {
// MessageBox( _T("查询结束日期不能小于起始日期,请改正!") , _T("错误") , MB_ICONWARNING );
// return ;
// }
m_wndList.ShowWindow(SW_HIDE);
m_wndList.DeleteAllItems();
m_wndList.DeleteAllColumns();
if ( m_lQueryType==1 ) //彩信
{
m_wndList.SetHeadings(_T("序号,50;缴费时间,130;缴费金额,100; 费率,80;小计,70; 赠送,70; 彩信量,70;"));
REQ_Agent_MmsPay * pPay = new REQ_Agent_MmsPay;
memset( pPay , 0 , sizeof(REQ_Agent_MmsPay));
_tcscpy( pPay->szAgentName , this->m_pMainFrame->m_pUserView->m_dlgInfo.m_strName );
pPay->lAgentID = this->m_pMainFrame->m_lUserID;
pPay->lUsed = 0;
pPay->lTotal = 0;
pPay->fJFTotal = 0;
pPay->bTest = 0;
pPay->fPriceOne= 0;
pPay->lItem = 0;
m_pMainFrame->SendFrame( SMSFUNC_AGENT_MMSPAY , (BYTE*)pPay , sizeof(REQ_Agent_Pay) ); //取联系人信息
}
else
{
m_wndList.SetHeadings(_T("序号,50;缴费时间,130;缴费金额,100; 费率,80;小计,70; 赠送,70; 短信量,70;"));
REQ_Agent_Pay * pPay = new REQ_Agent_Pay;
memset( pPay , 0 , sizeof(REQ_Agent_Pay));
_tcscpy( pPay->szAgentName , this->m_pMainFrame->m_pUserView->m_dlgInfo.m_strName );
pPay->lAgentID = this->m_pMainFrame->m_lUserID;
pPay->fUsed = 0;
pPay->fTotal = 0;
pPay->bTest = 0;
pPay->lItem = 0;
m_pMainFrame->SendFrame( SMSFUNC_AGENT_PAY , (BYTE*)pPay , sizeof(REQ_Agent_Pay) ); //取联系人信息
}
m_wndList.ShowWindow(SW_SHOW);
return ;
}
void CC_MyPay::OnNMRClickCPayList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
*pResult = 0;
ShowRMenu();
}
void CC_MyPay::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING , MENU_MYPAY_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_MyPay::On_User_Export()
{
m_wndList.CopyToClipboard();
MessageBox(_T("数据已复制建议打开Excel粘贴进去") , _T("提示") , MB_ICONINFORMATION);
}