916 lines
23 KiB
C++
916 lines
23 KiB
C++
// FBill.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "corpsms.h"
|
|
#include "FBill.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CFBill dialog
|
|
#include "MainFrm.h"
|
|
#include "ProcessSocket.h"
|
|
#include "DLG_UserSelect.h"
|
|
|
|
|
|
CFBill::CFBill(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CFBill::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CFBill)
|
|
m_strUser = _T("");
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_bInit = false;
|
|
m_bRefresh = false;
|
|
m_lUserID = -1;
|
|
m_bGroup = false;
|
|
}
|
|
|
|
|
|
void CFBill::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CFBill)
|
|
DDX_Control(pDX, IDC_BILL_LIST, m_E_List);
|
|
DDX_Control(pDX, IDC_BILL_QUERYMONTH, m_L_Month);
|
|
DDX_Control(pDX, IDC_BILL_SEL, m_B_Sel);
|
|
DDX_Control(pDX, IDC_BILL_S1, m_S_S1);
|
|
DDX_Text(pDX, IDC_BILL_USER, m_strUser);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CFBill, CDialog)
|
|
//{{AFX_MSG_MAP(CFBill)
|
|
ON_WM_SIZE()
|
|
ON_BN_CLICKED(IDC_BILL_SEL, OnBillSel)
|
|
ON_BN_CLICKED(IDC_BILL_QUERY, OnBillQuery)
|
|
ON_BN_CLICKED(IDC_BILL_EXPORT, OnBillExport)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CFBill message handlers
|
|
|
|
BOOL CFBill::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;
|
|
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
|
|
|
m_bInit = true;
|
|
|
|
//只能查前3个月的数据
|
|
SYSTEMTIME t; ::GetLocalTime(&t);
|
|
CString strTemp;
|
|
long lCount = 0;
|
|
long lMaxQueryMon = 12;
|
|
BOOL bQueryCurMon=true;
|
|
if ( bQueryCurMon) //允许查询当月数据
|
|
{
|
|
lMaxQueryMon = 13;
|
|
t.wMonth = t.wMonth +1;
|
|
if ( t.wMonth>12 )
|
|
{
|
|
t.wMonth = 1;
|
|
t.wYear++;
|
|
}
|
|
}
|
|
for ( int i=0 ; i<lMaxQueryMon ; i++ )
|
|
{
|
|
t.wMonth = t.wMonth-1;
|
|
if ( t.wMonth <=0 )
|
|
{
|
|
t.wYear --;
|
|
t.wMonth = 12;
|
|
}
|
|
/*
|
|
if ( bQueryCurMon )
|
|
{
|
|
if ( i==0 && t.wDay <=2 ) //2号后才可以查询当月数据
|
|
continue;
|
|
}
|
|
*/
|
|
strTemp.Format( _T("%04d年%02d月份") , t.wYear , t.wMonth );
|
|
int iTemp = m_L_Month.AddString(strTemp);
|
|
strTemp.Format( _T("%04d%02d") , t.wYear , t.wMonth );
|
|
m_L_Month.SetItemData(iTemp,_ttol(strTemp));
|
|
lCount ++;
|
|
}
|
|
m_L_Month.SetCurSel(0);
|
|
/*
|
|
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_strUser = _T("所有人员"); //默认查询所有用户的帐单
|
|
//m_lUserID = -1; //UserID = -1表示查询所有用户
|
|
|
|
//默认查找自己的数据
|
|
//m_strUser = m_pMainFrame->m_pCurUser->szUser;
|
|
m_lUserID = m_pMainFrame->m_lUserID;
|
|
|
|
|
|
UpdateData(false);
|
|
|
|
#ifdef MOBSET_CARD_VER
|
|
m_B_Sel.ShowWindow(false);
|
|
#endif
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CFBill::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
CDialog::OnSize(nType, cx, cy);
|
|
|
|
if ( m_bInit )
|
|
{
|
|
CRect rect;
|
|
m_S_S1.GetWindowRect(&rect);
|
|
m_E_List.MoveWindow( 0 , 0+rect.Height()+12 , cx,cy-rect.Height()-12);
|
|
}
|
|
}
|
|
|
|
BOOL CFBill::ReShow(BOOL bRefresh)
|
|
{
|
|
ShowWindow( SW_SHOW );
|
|
if ( bRefresh || !m_bRefresh )
|
|
{
|
|
RefreshInfo();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
BOOL CFBill::ReHide()
|
|
{
|
|
ShowWindow( SW_HIDE );
|
|
return true;
|
|
}
|
|
|
|
BOOL CFBill::RefreshInfo()
|
|
{
|
|
//默认是先查询自己
|
|
//没有查询帐单的权限,只能查询自己
|
|
m_strUser = m_pMainFrame->m_pCurUser->szUser;
|
|
m_lUserID = m_pMainFrame->m_lUserID;
|
|
UpdateData(false);
|
|
/*
|
|
if ( !m_pMainFrame->GetUserPurview( PURVIEW_SEEBILL , false ) )
|
|
{
|
|
//没有查询帐单的权限,只能查询自己
|
|
m_strUser = m_pMainFrame->m_pCurUser->szUser;
|
|
m_lUserID = m_pMainFrame->m_lUserID;
|
|
UpdateData(false);
|
|
}
|
|
*/
|
|
return true;
|
|
}
|
|
|
|
void CFBill::OnBillSel()
|
|
{
|
|
if ( !m_pMainFrame->GetUserPurview( PURVIEW_SEEBILL , false ) )
|
|
{
|
|
MessageBox( _T("对不起,由于你没有查询帐单的权限,不能查询其它用户帐单!") , _T("错误") , MB_ICONWARNING );
|
|
return ;
|
|
}
|
|
if ( !m_pMainFrame->GetUserPurview( PURVIEW_USER_MANAGER , false ) )
|
|
{
|
|
MessageBox( _T("对不起,由于你没有帐号管理权限,不能查询其它用户帐单!") , _T("错误") , MB_ICONWARNING );
|
|
return ;
|
|
}
|
|
|
|
DLG_UserSelect dlg(this);
|
|
dlg.SetParam( this->m_pMainFrame,_T("Users"),_T("所有人员"),true );
|
|
if ( dlg.DoModal()==IDOK )
|
|
{
|
|
UpdateData(true);
|
|
m_lUserID = dlg.GetParam(m_strUser);
|
|
m_bGroup = dlg.m_bGroup;
|
|
UpdateData(false);
|
|
}
|
|
}
|
|
|
|
void CFBill::OnBillQuery()
|
|
{
|
|
UpdateData(true);
|
|
|
|
long lQuery= m_L_Month.GetItemData(m_L_Month.GetCurSel());
|
|
|
|
if ( lQuery<200912 )
|
|
{
|
|
MessageBox( _T("查询月份有误,请改正!") , _T("错误") , MB_ICONWARNING );
|
|
return ;
|
|
}
|
|
long lYear = lQuery/100;
|
|
long lMon = lQuery%100;
|
|
long lDay = 31;
|
|
if ( lMon == 1 ||
|
|
lMon == 3 ||
|
|
lMon == 5 ||
|
|
lMon == 7 ||
|
|
lMon == 8 ||
|
|
lMon == 10 ||
|
|
lMon == 12 )
|
|
{
|
|
lDay = 31;
|
|
}
|
|
else
|
|
if (lMon == 2 )
|
|
if ( lYear%4 == 0 )
|
|
lDay = 29;
|
|
else
|
|
lDay = 28;
|
|
else
|
|
lDay = 30;
|
|
|
|
|
|
/*
|
|
REQ_Bill2 * pBill = new REQ_Bill2;memset(pBill,0,sizeof(REQ_Bill2));
|
|
pBill->lCorpID = m_pMainFrame->m_lCorpID; //企业ID
|
|
pBill->lUserID = m_lUserID; //查询用户ID
|
|
pBill->tBegin.wYear = lYear;
|
|
pBill->tBegin.wMonth = lMon;
|
|
pBill->tBegin.wDay = 1;
|
|
pBill->tEnd.wYear = lYear;
|
|
pBill->tEnd.wMonth = lMon;
|
|
pBill->tEnd.wDay = lDay;
|
|
m_pMainFrame->SendFrame(SMSFUNC_BILL3,(BYTE*)pBill,sizeof(REQ_Bill));
|
|
*/
|
|
|
|
REQ_Bill4 * pBill = new REQ_Bill4;memset(pBill,0,sizeof(REQ_Bill4));
|
|
pBill->lCorpID = m_pMainFrame->m_lCorpID; //企业ID
|
|
pBill->lUserID = m_lUserID; //查询用户ID
|
|
pBill->tBegin.wYear = (WORD)lYear;
|
|
pBill->tBegin.wMonth = (WORD)lMon;
|
|
pBill->tBegin.wDay = 1;
|
|
pBill->tEnd.wYear = (WORD)lYear;
|
|
pBill->tEnd.wMonth = (WORD)lMon;
|
|
pBill->tEnd.wDay = (WORD)lDay;
|
|
|
|
pBill->bJCB=false; //不查结存表
|
|
/*
|
|
if ( m_pMainFrame->GetUserPurview( PURVIEW_SEEBILL , false )
|
|
&& m_lUserID==-1 ) //只有查询所有用户时才显示
|
|
{
|
|
pBill->bJCB = true;
|
|
}
|
|
*/
|
|
|
|
m_pMainFrame->SendFrame(SMSFUNC_BILL4,(BYTE*)pBill,sizeof(REQ_Bill4));
|
|
|
|
return ;
|
|
}
|
|
|
|
long CFBill::ProcessSocket(Socket_Head *pHead)
|
|
{
|
|
if ( pHead->lFuncType == SMSFUNC_BILL3 )
|
|
{
|
|
ANS_Bill3 * pBill = (ANS_Bill3 *)pHead->pFrame;
|
|
ANS_BillData3 * pData = (ANS_BillData3 *)(pHead->pFrame+sizeof(ANS_Bill3));
|
|
|
|
CString strTemp,strTemp2;
|
|
CString strHead;
|
|
CString strJCB;
|
|
#ifdef MOBSET_OEM
|
|
strHead += _T("\r\n\r\n 短信用户帐单\r\n\r\n\r\n");
|
|
#else
|
|
strHead += _T("\r\n\r\n 短信易用户帐单\r\n\r\n\r\n");
|
|
#endif
|
|
strTemp.Format( _T(" 企业ID:%d\r\n") , m_pMainFrame->m_lCorpID );
|
|
strHead += strTemp;
|
|
strTemp.Format( _T(" 企业名称:%s\r\n") , m_pMainFrame->m_Ans_Login.szCorpName );
|
|
strHead += strTemp;
|
|
m_L_Month.GetWindowText(strTemp2);
|
|
strTemp.Format( _T(" 帐单日期:%s\r\n"),strTemp2);
|
|
strHead += strTemp;
|
|
strTemp.Format( _T(" 帐单用户:%s\r\n\r\n\r\n") , m_strUser );
|
|
strHead += strTemp;
|
|
//查询发送明细
|
|
long lSmsCount = 0;
|
|
long lSmsSFCount = 0;
|
|
CString strTab=_T(" 类 型 短信数量 计费数量\r\n");
|
|
strTab+=_T(" =========================================\r\n");
|
|
for ( int i=0;i<pBill->lCount;i++)
|
|
{
|
|
|
|
strTemp=_T("未知");
|
|
switch( pData->lSmsType )
|
|
{
|
|
case SMSTYPE_SEND:
|
|
strTemp=_T("发 送");
|
|
break;
|
|
case SMSTYPE_ZF:
|
|
strTemp=_T("转 发");
|
|
break;
|
|
case SMSTYPE_ALARM:
|
|
strTemp=_T("日程提醒");
|
|
break;
|
|
case SMSTYPE_EMAIL:
|
|
strTemp=_T("短信邮差");
|
|
break;
|
|
case SMSTYPE_RECV:
|
|
strTemp=_T("接 收");
|
|
break;
|
|
case SMSTYPE_SP:
|
|
strTemp=_T("实用短信");
|
|
break;
|
|
case SMSTYPE_SWT:
|
|
strTemp=_T("短信商务通");
|
|
break;
|
|
#ifdef SMSCENTER_ADC
|
|
case SMSTYPE_ADC:
|
|
strTemp=_T("ADC业务");
|
|
break;
|
|
#endif
|
|
}
|
|
|
|
strTemp2.Format( _T("%15s") , strTemp );
|
|
strTemp= strTemp2;
|
|
strTemp2.Format( _T(" %11d") , pData->lCount );
|
|
strTemp+= strTemp2;
|
|
strTemp2.Format( _T(" %11d") , pData->lSFCount );
|
|
strTemp+= strTemp2;
|
|
strTemp+=_T("\r\n");
|
|
|
|
strTab += strTemp;
|
|
|
|
lSmsCount += pData->lCount;
|
|
lSmsSFCount += pData->lSFCount;
|
|
pData++;
|
|
|
|
}
|
|
strTab+=_T(" -----------------------------------------\r\n");
|
|
strTemp2.Format( _T("%15s") , _T("共") );
|
|
strTemp= strTemp2;
|
|
strTemp2.Format( _T(" %11d") , lSmsCount );
|
|
strTemp+= strTemp2;
|
|
strTemp2.Format( _T(" %11d") , lSmsSFCount );
|
|
strTemp+= strTemp2;
|
|
strTemp+=_T("\r\n\r\n");
|
|
strTab += strTemp;
|
|
|
|
strHead += strTab;
|
|
|
|
if ( m_pMainFrame->GetUserPurview( PURVIEW_SEEBILL , false )
|
|
&& m_lUserID==-1 ) //只有查询所有用户时才显示
|
|
{
|
|
strTemp.Format( _T("%13s") , _T("上期结存:"));
|
|
strJCB+= strTemp;
|
|
strTemp.Format( _T("%8d") , pBill->jcb.lOldCount);
|
|
strJCB+= strTemp;
|
|
|
|
strTemp.Format( _T("%17s") , _T("本期存入:"));
|
|
strJCB+= strTemp;
|
|
strTemp.Format( _T("%8d") , pBill->jcb.lAddCount);
|
|
strJCB+= strTemp;
|
|
|
|
|
|
// strTemp.Format( _T("\r\n%15s") , "本期使用:"));
|
|
// strJCB+= strTemp;
|
|
// strTemp.Format( _T("%8d") , lAllCount);
|
|
// strJCB+= strTemp;
|
|
|
|
strTemp.Format( _T("\r\n%13s") , _T("本期赠送:"));
|
|
strJCB+= strTemp;
|
|
strTemp.Format( _T("%8d") , pBill->jcb.lPresentCount);
|
|
strJCB+= strTemp;
|
|
|
|
strTemp.Format( _T("%17s") , _T("本期结存:"));
|
|
strJCB+= strTemp;
|
|
strTemp.Format( _T("%8d") , pBill->jcb.lUseCount);
|
|
strJCB+= strTemp;
|
|
|
|
strHead += strJCB;
|
|
strHead += _T("\r\n\r\n");
|
|
}
|
|
strTab = _T("\r\n\r\n");
|
|
if ( !m_bGroup )
|
|
{
|
|
strTemp.Format( _T("\r\n%25s") , _T("用户可用余额:"));
|
|
strTab+= strTemp;
|
|
if ( pBill->lSMSUsed == -100 )
|
|
strTemp=_T("无限制\r\n");
|
|
else
|
|
strTemp.Format( _T("%d\r\n") , pBill->lSMSUsed);
|
|
strTab+= strTemp;
|
|
}
|
|
if ( m_pMainFrame->GetUserPurview( PURVIEW_SEEBILL , false ) )
|
|
{
|
|
#ifdef SMSCENTER_ADC
|
|
strTemp.Format( _T("%25s") , _T("短信易可用余额:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d\r\n") , pBill->lCorpUsed);
|
|
strTab+= strTemp;
|
|
|
|
strTemp.Format( _T("%25s") , _T("ADC可用余额:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d\r\n") , pBill->lAdcCorpUsed);
|
|
strTab+= strTemp;
|
|
#else
|
|
strTemp.Format( _T("%25s") , _T("企业可用余额:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d\r\n") , pBill->lCorpUsed);
|
|
strTab+= strTemp;
|
|
|
|
strTemp.Format( _T("%25s") , _T("短信有效期:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%04d.%02d.%02d\r\n") , pBill->tOvr.wYear,pBill->tOvr.wMonth,pBill->tOvr.wDay);
|
|
strTab+= strTemp;
|
|
|
|
|
|
if ( pBill->bQXT )
|
|
{
|
|
strTemp.Format( _T("\r\n\r\n%25s") , _T("移动业务累计发送量:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d(仅供参考)\r\n") , pBill->lQXT_SendAll);
|
|
strTab+= strTemp;
|
|
strTemp2.Format( _T("移动业务%02d月发送量:") , COleDateTime::GetCurrentTime().GetMonth() );
|
|
strTemp.Format( _T("%25s") ,strTemp2);
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d(仅供参考)\r\n") , pBill->lQXT_SendMon);
|
|
strTab+= strTemp;
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
strTemp.Format( _T("%25s") , _T("企业可用余额:"));
|
|
strTemp+=_T("需管理员查询\r\n");
|
|
strTab+= strTemp;
|
|
}
|
|
strHead += strTab;
|
|
|
|
|
|
m_E_List.SetWindowText(strHead);
|
|
return true;
|
|
}
|
|
|
|
if ( pHead->lFuncType == SMSFUNC_BILL2 )
|
|
{
|
|
ANS_Bill2 * pBill = (ANS_Bill2 *)pHead->pFrame;
|
|
ANS_BillData * pData = (ANS_BillData *)(pHead->pFrame+sizeof(ANS_Bill2));
|
|
|
|
CString strTemp,strTemp2;
|
|
CString strHead;
|
|
CString strJCB;
|
|
#ifdef MOBSET_OEM
|
|
strHead += _T("\r\n\r\n 短信用户帐单\r\n\r\n\r\n");
|
|
#else
|
|
strHead += _T("\r\n\r\n 短信易用户帐单\r\n\r\n\r\n");
|
|
#endif
|
|
strTemp.Format( _T(" 企业ID:%d\r\n") , m_pMainFrame->m_lCorpID );
|
|
strHead += strTemp;
|
|
strTemp.Format( _T(" 企业名称:%s\r\n") , m_pMainFrame->m_Ans_Login.szCorpName );
|
|
strHead += strTemp;
|
|
m_L_Month.GetWindowText(strTemp2);
|
|
strTemp.Format( _T(" 帐单日期:%s\r\n"),strTemp2);
|
|
strHead += strTemp;
|
|
strTemp.Format( _T(" 帐单用户:%s\r\n\r\n\r\n") , m_strUser );
|
|
strHead += strTemp;
|
|
//查询发送明细
|
|
long lSmsCount = 0;
|
|
long lSmsSFCount = 0;
|
|
CString strTab=_T(" 类 型 短信数量 计费数量\r\n");
|
|
strTab+=_T(" =========================================\r\n");
|
|
for ( int i=0;i<pBill->lCount;i++)
|
|
{
|
|
|
|
strTemp=_T("未知");
|
|
switch( pData->lSmsType )
|
|
{
|
|
case SMSTYPE_SEND:
|
|
strTemp=_T("发 送");
|
|
break;
|
|
case SMSTYPE_ZF:
|
|
strTemp=_T("转 发");
|
|
break;
|
|
case SMSTYPE_ALARM:
|
|
strTemp=_T("日程提醒");
|
|
break;
|
|
case SMSTYPE_EMAIL:
|
|
strTemp=_T("短信邮差");
|
|
break;
|
|
case SMSTYPE_RECV:
|
|
strTemp=_T("接 收");
|
|
break;
|
|
case SMSTYPE_SP:
|
|
strTemp=_T("实用短信");
|
|
break;
|
|
case SMSTYPE_SWT:
|
|
strTemp=_T("短信商务通");
|
|
break;
|
|
}
|
|
|
|
strTemp2.Format( _T("%15s") , strTemp );
|
|
strTemp= strTemp2;
|
|
strTemp2.Format( _T(" %11d") , pData->lCount );
|
|
strTemp+= strTemp2;
|
|
strTemp2.Format( _T(" %11d") , pData->lSFCount );
|
|
strTemp+= strTemp2;
|
|
strTemp+=_T("\r\n");
|
|
|
|
strTab += strTemp;
|
|
|
|
lSmsCount += pData->lCount;
|
|
lSmsSFCount += pData->lSFCount;
|
|
pData++;
|
|
|
|
}
|
|
strTab+=_T(" -----------------------------------------\r\n");
|
|
strTemp2.Format( _T("%15s") , _T("共") );
|
|
strTemp= strTemp2;
|
|
strTemp2.Format( _T(" %11d") , lSmsCount );
|
|
strTemp+= strTemp2;
|
|
strTemp2.Format( _T(" %11d") , lSmsSFCount );
|
|
strTemp+= strTemp2;
|
|
strTemp+=_T("\r\n\r\n");
|
|
strTab += strTemp;
|
|
|
|
strHead += strTab;
|
|
/*
|
|
strTemp.Format( _T("%13s") , _T("上期结存:"));
|
|
strJCB+= strTemp;
|
|
strTemp.Format( _T("%8d" , pBill->jcb.lOldCount);
|
|
strJCB+= strTemp;
|
|
|
|
strTemp.Format( _T("%17s") , _T("本期存入:"));
|
|
strJCB+= strTemp;
|
|
strTemp.Format( _T("%8d") , pBill->jcb.lAddCount);
|
|
strJCB+= strTemp;
|
|
|
|
strTemp.Format( _T("\r\n%13s") , _T("本期赠送:"));
|
|
strJCB+= strTemp;
|
|
strTemp.Format( _T("%8d" , pBill->jcb.lPresentCount);
|
|
strJCB+= strTemp;
|
|
|
|
strTemp.Format( _T("%17s") , _T("本期结存:"));
|
|
strJCB+= strTemp;
|
|
strTemp.Format( _T("%8d") , pBill->jcb.lUseCount);
|
|
strJCB+= strTemp;
|
|
|
|
strHead += strJCB;
|
|
*/
|
|
strTab = _T("");
|
|
if ( !m_bGroup )
|
|
{
|
|
strTemp.Format( _T("\r\n\r\n\r\n%25s") , _T("用户可用余额:"));
|
|
strTab+= strTemp;
|
|
if ( pBill->lSMSUsed == -100 )
|
|
strTemp=_T("无限制\r\n");
|
|
else
|
|
strTemp.Format( _T("%8d\r\n") , pBill->lSMSUsed);
|
|
strTab+= strTemp;
|
|
}
|
|
if ( m_pMainFrame->GetUserPurview( PURVIEW_SEEBILL , false ) )
|
|
{
|
|
strTemp.Format( _T("%25s") , _T("企业可用余额:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d\r\n") , pBill->lCorpUsed);
|
|
strTab+= strTemp;
|
|
}
|
|
else
|
|
{
|
|
strTemp.Format( _T("%25s") , _T("企业可用余额:"));
|
|
strTemp+=_T("需管理员查询\r\n");
|
|
strTab+= strTemp;
|
|
}
|
|
|
|
strHead += strTab;
|
|
|
|
m_E_List.SetWindowText(strHead);
|
|
return true;
|
|
}
|
|
/*
|
|
|
|
if ( pHead->lFuncType == SMSFUNC_BILL2 )
|
|
{
|
|
ANS_Bill2 * pBill = (ANS_Bill2 *)pHead->pFrame;
|
|
ANS_BillData * pData = (ANS_BillData *)(pHead->pFrame+sizeof(ANS_Bill2));
|
|
m_wndList.DeleteAllItems();
|
|
char Buf[32];
|
|
char Buf2[32];
|
|
long lCount=0;
|
|
_stprintf(Buf , "%d" , m_pMainFrame->m_lCorpID );
|
|
m_wndList.InsertItem(0,"","企业ID",Buf,"","");
|
|
m_wndList.InsertItem(1,"","查询用户",m_strUser,"");
|
|
m_L_Month.GetWindowText(Buf , sizeof(Buf));
|
|
m_wndList.InsertItem(2,"","帐单时段",Buf,"","");
|
|
long lSmsCount = 0;
|
|
long lSmsSFCount = 0;
|
|
for ( int i=0;i<pBill->lCount;i++)
|
|
{
|
|
_tcscpy( Buf , "未知" );
|
|
switch( pData->lSmsType )
|
|
{
|
|
case SMSTYPE_SEND:
|
|
_tcscpy(Buf , "成功发送" );
|
|
break;
|
|
case SMSTYPE_ZF:
|
|
_tcscpy(Buf , "转 发" );
|
|
#ifdef MOBSET_CARD_VER
|
|
pData++;
|
|
continue;
|
|
#endif
|
|
break;
|
|
case SMSTYPE_ALARM:
|
|
_tcscpy(Buf , "日程提醒" );
|
|
break;
|
|
case SMSTYPE_EMAIL:
|
|
_tcscpy(Buf , "短信邮差" );
|
|
break;
|
|
case SMSTYPE_RECV:
|
|
_tcscpy(Buf , "接 收" );
|
|
#ifdef MOBSET_CARD_VER
|
|
pData++;
|
|
continue;
|
|
#endif
|
|
break;
|
|
case SMSTYPE_SP:
|
|
_tcscpy(Buf , "实用短信" );
|
|
break;
|
|
case SMSTYPE_SWT:
|
|
_tcscpy(Buf , "短信商务通" );
|
|
break;
|
|
}
|
|
lCount = m_wndList.GetItemCount();
|
|
m_wndList.InsertItem( lCount , _itot(lCount+1,Buf2,10),0); //序号
|
|
m_wndList.SetItemText( lCount ,1 , Buf ); //类型
|
|
m_wndList.SetItemText( lCount ,2 , _itot(pData->lCount,Buf,10)); //数量
|
|
m_wndList.SetItemText( lCount ,3 , _itot(pData->lSFCount,Buf,10)); //数量
|
|
lSmsCount += pData->lCount;
|
|
lSmsSFCount += pData->lSFCount;
|
|
pData++;
|
|
}
|
|
lCount = m_wndList.GetItemCount();
|
|
m_wndList.InsertItem( lCount , "",0); //合计
|
|
m_wndList.SetItemText( lCount,1, "合 计"); //合计
|
|
m_wndList.SetItemText( lCount,2, _itot(lSmsCount,Buf,10)); //合计
|
|
m_wndList.SetItemText( lCount,3, _itot(lSmsSFCount,Buf,10)); //合计
|
|
|
|
lCount++;
|
|
m_wndList.InsertItem(lCount, "" , 0 );
|
|
|
|
if ( !m_bGroup )
|
|
{
|
|
lCount++;
|
|
m_wndList.InsertItem( lCount , "",0); //合计
|
|
m_wndList.SetItemText( lCount,1, "用户可用余额"); //合计
|
|
//m_wndList.SetItemText( lCount,2, _itot(lSmsCount,Buf,10)); //合计
|
|
if ( pBill->lSMSUsed == -100 )
|
|
m_wndList.SetItemText( lCount,3, "无限制"); //合计
|
|
else
|
|
m_wndList.SetItemText( lCount,3, _itot(pBill->lSMSUsed,Buf,10)); //合计
|
|
}
|
|
if ( m_pMainFrame->GetUserPurview( PURVIEW_SEEBILL , false ) )
|
|
{
|
|
lCount++;
|
|
m_wndList.InsertItem( lCount , "",0); //合计
|
|
m_wndList.SetItemText( lCount,1, "企业可用余额"); //合计
|
|
//m_wndList.SetItemText( lCount,2, _itot(lSmsCount,Buf,10)); //合计
|
|
if ( pBill->lCorpUsed == -100 )
|
|
m_wndList.SetItemText( lCount,3, "无限制"); //合计
|
|
else
|
|
m_wndList.SetItemText( lCount,3, _itot(pBill->lCorpUsed,Buf,10)); //合计
|
|
|
|
}
|
|
return true;
|
|
}
|
|
*/
|
|
return false;
|
|
}
|
|
|
|
void CFBill::OnOK()
|
|
{
|
|
return ;
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CFBill::OnCancel()
|
|
{
|
|
return ;
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
void CFBill::OnBillExport()
|
|
{
|
|
#define FILE_FILTER_TEXT \
|
|
TEXT("txt文本文件 (*.txt)\0*.txt\0")\
|
|
TEXT("所有文件 (*.*)\0*.*;\0\0")
|
|
|
|
CString strFileName;
|
|
TCHAR szFile[ 256 ];
|
|
TCHAR szFileB[ 256 ];
|
|
*szFileB = NULL;
|
|
_stprintf( szFile , _T("Bill.txt") );
|
|
|
|
OPENFILENAME sOpen;
|
|
sOpen.lStructSize = sizeof( sOpen );
|
|
sOpen.hwndOwner = this->m_hWnd ;
|
|
sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
|
|
sOpen.lpstrFilter = FILE_FILTER_TEXT;
|
|
sOpen.lpstrDefExt = _T("txt");
|
|
sOpen.lpstrCustomFilter = NULL;
|
|
sOpen.nMaxCustFilter = 0;
|
|
sOpen.lpstrFile = szFile;
|
|
sOpen.nMaxFile = sizeof( szFile );
|
|
sOpen.lpstrFileTitle = szFileB;
|
|
sOpen.nMaxFileTitle = sizeof( szFileB );
|
|
sOpen.lpstrInitialDir = NULL;
|
|
sOpen.lpstrTitle = _T("选择导出帐单的文件");
|
|
if ( !::GetSaveFileName( &sOpen ) )
|
|
{
|
|
return ;
|
|
}
|
|
strFileName = sOpen.lpstrFile;
|
|
|
|
CFile fTalk;
|
|
if ( !fTalk.Open( strFileName , CFile::modeReadWrite|CFile::modeCreate ) )
|
|
{
|
|
TCHAR Buf[512];
|
|
_stprintf( Buf , _T("创建文件:%s\n产生错误!") , strFileName );
|
|
MessageBox( Buf , _T("错误") , MB_ICONWARNING|MB_OK );
|
|
return ;
|
|
}
|
|
|
|
CString strMsg;
|
|
m_E_List.GetWindowText(strMsg);
|
|
#ifdef _UNICODE
|
|
CStringA strMsgA = CW2A(strMsg);
|
|
fTalk.Write( strMsgA , strMsgA.GetLength() );
|
|
#else
|
|
fTalk.Write( strMsg , strMsg.GetLength() );
|
|
#endif
|
|
fTalk.Close();
|
|
}
|
|
|
|
BOOL CFBill::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
|
|
{
|
|
CString str;
|
|
if ( pHead->lFuncType == SMSFUNC_BILL4 )
|
|
{
|
|
ANS_Bill4 * pBill = (ANS_Bill4 *)pFrame;
|
|
ANS_BillData4 * pData = (ANS_BillData4 *)(pFrame+sizeof(ANS_Bill4));
|
|
|
|
CString strTemp,strTemp2;
|
|
CString strHead;
|
|
CString strJCB;
|
|
#ifdef MOBSET_OEM
|
|
strHead += _T("\r\n\r\n 业务帐单\r\n\r\n\r\n");
|
|
#else
|
|
strHead += _T("\r\n\r\n 短信易业务帐单\r\n\r\n\r\n");
|
|
#endif
|
|
strTemp.Format( _T(" 企业ID:%d\r\n") , m_pMainFrame->m_lCorpID );
|
|
strHead += strTemp;
|
|
strTemp.Format( _T(" 企业名称:%s\r\n") , pBill->szCorpName);
|
|
strHead += strTemp;
|
|
m_L_Month.GetWindowText(strTemp2);
|
|
strTemp.Format( _T(" 帐单日期:%s\r\n"),strTemp2);
|
|
strHead += strTemp;
|
|
strTemp.Format( _T(" 帐单用户:%s\r\n") , m_strUser );
|
|
strHead += strTemp;
|
|
strTemp.Format( _T(" 查询时间:%04d-%02d-%02d\r\n\r\n\r\n") , pBill->tQuery.wYear,pBill->tQuery.wMonth,pBill->tQuery.wDay );
|
|
strHead += strTemp;
|
|
long lSmsCount = 0;
|
|
long lSmsSFCount = 0;
|
|
CString strTab=strHead+_T(" 业务类型 业务数量");
|
|
if ( pBill->bJCB )
|
|
{
|
|
strTab+= _T(" 上期结存 本期新增 本期结存");
|
|
}
|
|
strTab += _T("\r\n");
|
|
strTab+=_T(" ==================================");
|
|
if ( pBill->bJCB )
|
|
{
|
|
strTab+= _T("===========================================");
|
|
}
|
|
strTab += _T("\r\n");
|
|
for ( int i=0;i<pBill->lCount;i++)
|
|
{
|
|
strTemp2.Format( _T("%8s") , pData->szFuncType );
|
|
strTemp= strTemp2;
|
|
strTemp2.Format( _T("%21d") , pData->lSendCount );
|
|
strTemp+= strTemp2;
|
|
|
|
if ( pBill->bJCB )
|
|
{
|
|
strTemp2.Format( _T("%16d") , pData->jcb.lOldCount );
|
|
strTemp+= strTemp2;
|
|
strTemp2.Format( _T("%16d") , pData->jcb.lAddCount );
|
|
strTemp+= strTemp2;
|
|
strTemp2.Format( _T("%16d") , pData->jcb.lUseCount );
|
|
strTemp+= strTemp2;
|
|
}
|
|
strTemp+=_T("\r\n");
|
|
|
|
strTab += strTemp;
|
|
|
|
pData ++;
|
|
}
|
|
strTab+=_T(" ----------------------------------");
|
|
if ( pBill->bJCB )
|
|
{
|
|
strTab+=_T("-------------------------------------------");
|
|
}
|
|
strTab +=_T("\r\n\r\n");
|
|
|
|
if ( m_pMainFrame->GetUserPurview( PURVIEW_SEEBILL , false ) )
|
|
{
|
|
#ifdef SMSCENTER_ADC
|
|
strTemp.Format( _T("%20s") , _T("短信易可用余额:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d条\r\n") , pBill->lCorpUsed);
|
|
strTab+= strTemp;
|
|
|
|
strTemp.Format( _T("%20s") , _T("ADC可用余额:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d条\r\n") , pBill->lAdcCorpUsed);
|
|
strTab+= strTemp;
|
|
#else
|
|
strTemp.Format( _T("%20s") , _T("当前企业短信余额:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d条\r\n") , pBill->lSMSCorpUsed);
|
|
strTab+= strTemp;
|
|
|
|
strTemp.Format( _T("%20s") , _T("当前企业彩信余额:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d条\r\n") , pBill->lMMSCorpUsed);
|
|
strTab+= strTemp;
|
|
|
|
strTemp.Format( _T("%20s") , _T("企业有效期:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%04d.%02d.%02d\r\n") , pBill->tOvr.wYear,pBill->tOvr.wMonth,pBill->tOvr.wDay);
|
|
strTab+= strTemp;
|
|
|
|
|
|
if ( pBill->bQXT )
|
|
{
|
|
strTemp.Format( _T("\r\n\r\n%20s") , _T("移动业务累计发送量:"));
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d条(仅供参考)\r\n") , pBill->lQXT_SendAll);
|
|
strTab+= strTemp;
|
|
strTemp2.Format( _T("移动业务%02d月发送量:") , COleDateTime::GetCurrentTime().GetMonth() );
|
|
strTemp.Format( _T("%20s") ,strTemp2);
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%d条(仅供参考)\r\n") , pBill->lQXT_SendMon);
|
|
strTab+= strTemp;
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
strTemp.Format( _T("%20s") , _T(" 当前企业可用余额:"));
|
|
strTemp+=_T("需管理员查询\r\n");
|
|
strTab+= strTemp;
|
|
}
|
|
strTemp+=_T("\r\n");
|
|
|
|
if ( !m_bGroup )
|
|
{
|
|
strTemp.Format( _T("\r\n%20s") , _T("当前用户短信余额:"));
|
|
strTab+= strTemp;
|
|
if ( pBill->lSMSUsed == -100 )
|
|
strTemp=_T("无限制\r\n");
|
|
else
|
|
strTemp.Format( _T("%d条\r\n") , pBill->lSMSUsed);
|
|
strTab+= strTemp;
|
|
strTemp.Format( _T("%20s") , _T("当前用户彩信余额:"));
|
|
strTab+= strTemp;
|
|
if ( pBill->lSMSUsed == -100 )
|
|
strTemp=_T("无限制\r\n");
|
|
else
|
|
strTemp.Format( _T("%d条\r\n") , pBill->lMMSUsed);
|
|
strTab+= strTemp;
|
|
}
|
|
|
|
m_E_List.SetWindowText(strTab);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
} |