CorpSms/FBill.cpp
lujiang e17c4ce7ed 重新对窗口布局进行优化,解决缺字的情况。
对图标显示进行了优化,使用gdi+按DPI进行缩放。
2025-04-14 17:24:47 +08:00

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;
}