SmsManager/DLG_Agent_MmsPay.cpp

545 lines
15 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_Agent_MmsPay.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Agent_MmsPay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_Agent_MmsPay dialog
#include "DLG_Agent_MmsPay_Modify.h"
#include "DLG_Corp_FP.h"
DLG_Agent_MmsPay::DLG_Agent_MmsPay(CWnd* pParent /*=NULL*/)
: CDialog(DLG_Agent_MmsPay::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_Agent_MmsPay)
m_strAgentName = _T("");
m_strTotal = _T("");
m_strUsed = _T("");
//}}AFX_DATA_INIT
m_lModifyCount = 0;
memset( &m_PayReq , 0 , sizeof(m_PayReq) );
m_pPayData = NULL;
m_pMemberData = NULL;
memset(&m_agent,0,sizeof(m_agent));
m_bSOS = false;
m_pMainFrame = NULL;
}
void DLG_Agent_MmsPay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_Agent_MmsPay)
DDX_Control(pDX, IDC_AGENT_PAY_LIST, m_wndList);
DDX_Text(pDX, IDC_AGENT_PAY_AGENTNAME, m_strAgentName);
DDX_Text(pDX, IDC_AGENT_PAY_TOTAL, m_strTotal);
DDX_Text(pDX, IDC_AGENT_PAY_USED, m_strUsed);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_Agent_MmsPay, CDialog)
//{{AFX_MSG_MAP(DLG_Agent_MmsPay)
ON_BN_CLICKED(IDC_AGENT_PAY_ADD, OnAgentPayAdd)
ON_BN_CLICKED(IDC_AGENT_PAY_SEE, OnAgentPaySee)
ON_NOTIFY(NM_DBLCLK, IDC_AGENT_PAY_LIST, OnDblclkAgentPayList)
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_AGENT_PAY_MODIFY, &DLG_Agent_MmsPay::OnBnClickedAgentPayModify)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_Agent_MmsPay message handlers
BOOL DLG_Agent_MmsPay::OnInitDialog()
{
CDialog::OnInitDialog();
m_strAgentName = m_PayReq.szAgentName;
//m_strUsed.Format( _T("%.2f") , m_PayReq.fUsed );
//m_strTotal.Format( _T("%.2f") , m_PayReq.fTotal );
m_strUsed.Format( _T("%d") , m_PayReq.lUsed);
m_strTotal.Format( _T("%d") ,m_PayReq.lTotal );
this->UpdateData(false);
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_AGENT) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50; ³äÖµÕß,80;³äÖµ·½Ê½,80;³äÖµ½ð¶î,80; ·ÑÂÊ,80; С¼Æ,70; ÔùËÍ,70; ²ÊÐÅÁ¿,70;±¾´ÎÓà¶î,70;Ô¤¿ªÆ±,55;Ó¦ÊÕ,55;²âÊÔ,55;³É±¾,55;³äֵʱ¼ä,130;ÊÕ¿îʱ¼ä,130;¹ýÆÚʱ¼ä,130; ·¢Æ±,80;·¢Æ±×´Ì¬,80;¿ªÆ±Ê±¼ä,130;ÔùËÍÀñÆ·,80;ÀñÆ·¼ÛÖµ,80;½ÓÊÜÈË,80; ±¸ ×¢,200;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
//#ifndef SMSMANAGER_KF
POSITION pos;
TCHAR Buf[32];
CString str;
for ( int i = 0 ; i< m_PayReq.lCount ; i++ )
{
ANS_Agent_MmsPayData * pData = new ANS_Agent_MmsPayData;
*pData = m_pPayData[i];
pos = m_Pay.AddTail( pData );
_stprintf( Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf , 0 ); //ItemΪ0µÄÔ­ÒòÊǵ¹×ªÏÔʾ
m_wndList.SetItemData( i , (DWORD_PTR)pos);
long iIndex=1;
m_wndList.SetItemText( i , iIndex++ , pData->szPayMan );
m_wndList.SetItemText( i , iIndex++ , pData->szPayMode );
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( i , iIndex++ , Buf );
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( i , iIndex++ , 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 , iIndex++ , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( i , iIndex++ , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( i , iIndex++ , Buf );
_stprintf( Buf , _T("%8d") , pData->lBalance);
m_wndList.SetItemText( i , iIndex++ , Buf );
switch(pData->lYSType )
{
case 0:
default:
iIndex++;
break;
case 1:
m_wndList.SetItemText( i , iIndex++ , _T(" ÊÇ") );
break;
case 2:
m_wndList.SetItemText( i , iIndex++ , _T("×÷·Ï") );
break;
}
if ( pData->bYS )
m_wndList.SetItemText( i , iIndex++ , _T(" ÊÇ") );
else
iIndex++;
if ( pData->bTest )
m_wndList.SetItemText( i , iIndex++ , _T(" ÊÇ") );
else
iIndex++;
if ( pData->bCB )
m_wndList.SetItemText( i , iIndex++ , _T(" ÊÇ") );
else
iIndex++;
_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 , iIndex++ , Buf);
_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tYSTime.wYear,pData->tYSTime.wMonth,pData->tYSTime.wDay,pData->tYSTime.wHour,pData->tYSTime.wMinute );
m_wndList.SetItemText( i , iIndex++ , 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 , iIndex++ , Buf);
if ( pData->bFP>0 )
{
CString strType = DLG_Corp_FP::GetFPType2(pData->bFP);
m_wndList.SetItemText( i , iIndex++ , strType );
switch(pData->lFPStatus)
{
case 0:
default:
m_wndList.SetItemText( i , iIndex++ , _T("δ¿ªÆ±") );
break;
case 1:
m_wndList.SetItemText( i , iIndex++ , _T("ÒÑ¿ªÆ±") );
break;
case 2:
m_wndList.SetItemText( i , iIndex++ , _T("ÒѼijö") );
break;
}
if ( pData->lFPStatus>0 )
{
_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tFPTime.wYear,pData->tFPTime.wMonth,pData->tFPTime.wDay,pData->tFPTime.wHour,pData->tFPTime.wMinute );
m_wndList.SetItemText( i , iIndex++ , Buf);
}
else
{
iIndex++;
}
}
else
{
iIndex++;
iIndex++;
iIndex++;
}
switch( pData->lLPType )
{
case 1:
m_wndList.SetItemText( i , iIndex++ , _T("³äÖµ¿¨") );
break;
case 2:
m_wndList.SetItemText( i , iIndex++ , _T("ÏÖ½ð") );
break;
case 3:
m_wndList.SetItemText(i, iIndex++, _T("¾©¶«¿¨"));
break;
case 4:
m_wndList.SetItemText(i, iIndex++, _T("תÔù¶ÌÐÅ"));
break;
case 5:
m_wndList.SetItemText(i, iIndex++, _T("ÆäËüÔùÆ·"));
break;
case 0:
default:
m_wndList.SetItemText( i , iIndex++ , _T("ÎÞ") );
break;
}
str.Format( _T("%.2f") , pData->fLPPrice );
m_wndList.SetItemText( i , iIndex++ , str);
str = _T(""); //ÔùËÍÈË
for ( int j=0 ; j<m_PayReq.lMemberCount ; j++ )
{
if ( pData->lLXRID == m_pMemberData[j].lLXRID )
{
str = m_pMemberData[j].szName;
break;
}
}
m_wndList.SetItemText( i , iIndex++ , str);
m_wndList.SetItemText( i , iIndex++ , pData->szBZ);
}
//#else
#ifdef SMSMANAGER_KF
GetDlgItem(IDC_AGENT_PAY_TOTAL_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_AGENT_PAY_TOTAL)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_AGENT_PAY_USED_S2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_AGENT_PAY_USED)->ShowWindow(SW_HIDE);
#endif
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DLG_Agent_MmsPay::SetParam(ANS_Agent_MmsPay Pay, ANS_Agent_MmsPayData *pPayData , ANS_Corp_MemberData * pMemberData,ANS_Agent_SeeData agent)
{
m_PayReq = Pay;
m_pPayData = pPayData;
m_pMemberData=pMemberData;
m_agent = agent;
}
long DLG_Agent_MmsPay::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void DLG_Agent_MmsPay::OnAgentPayAdd()
{
DLG_Agent_MmsPay_Modify dlg(this);
ANS_Agent_MmsPayData pay={0};
dlg.SetParam(m_PayReq , pay ,m_pMemberData,true,m_agent);
dlg.SetTest( m_PayReq.bTest , m_PayReq.fPriceOne );
if ( dlg.DoModal() == IDOK )
{
ANS_Agent_MmsPayData * pData = new ANS_Agent_MmsPayData;
*pData = dlg.GetParam();
pData->ucStatus = AGENT_PAY_ADD;
_tcscpy(pData->szPayMan,_T(""));
m_lModifyCount ++; //ÐèÒªÐ޸ĵļǼÔö¼Ó
POSITION pos = m_Pay.AddTail( pData );
long lCount = m_wndList.GetItemCount();
TCHAR Buf[32];
CString str;
_stprintf( Buf, _T("%d") , lCount +1 );
//ÉèÖÃеÄÊý¾Ý
m_wndList.InsertItem( 0 , Buf , 0); //ItemΪ0µÄÔ­ÒòÊǵ¹×ªÏÔʾ
m_wndList.SetItemData( 0, (DWORD_PTR)pos );
int iIndex=1;
m_wndList.SetItemText( 0 , iIndex++ , pData->szPayMan );
m_wndList.SetItemText( 0 , iIndex++ , pData->szPayMode );
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( 0 , iIndex++ , Buf );
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( 0 , iIndex++ , Buf );
long a=0;
if ( pData->fPrice!=0 && pData->fPriceOne !=0 )
{
double l = pData->fPrice/pData->fPriceOne;
a = long(l+0.5f);
if ( l< 0 )
a = long(l-0.5f);
}
_stprintf( Buf , _T("%8d") , a);
m_wndList.SetItemText( 0 , iIndex++ , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( 0 , iIndex++ , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( 0 , iIndex++ , Buf );
iIndex++; //Óà¶î
switch(pData->lYSType )
{
case 0:
default:
iIndex++;
break;
case 1:
m_wndList.SetItemText( 0 , iIndex++ , _T(" ÊÇ") );
break;
case 2:
m_wndList.SetItemText( 0 , iIndex++ , _T("×÷·Ï") );
break;
}
if ( pData->bYS )
m_wndList.SetItemText( 0 , iIndex++ , _T("ÊÇ") );
else
iIndex++;
if ( pData->bTest )
m_wndList.SetItemText( 0 , iIndex++ , _T("ÊÇ") );
else
iIndex++;
if ( pData->bCB )
m_wndList.SetItemText( 0 , iIndex++ , _T("ÊÇ") );
else
iIndex++;
_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 , iIndex++ , Buf);
if ( pData->bFP )
m_wndList.SetItemText( 0 , iIndex++ , _T(" ÊÇ") );
else
iIndex++;
iIndex++;
iIndex++;
iIndex++;
switch( pData->lLPType )
{
case 1:
m_wndList.SetItemText( 0 , iIndex++ , _T("³äÖµ¿¨") );
break;
case 2:
m_wndList.SetItemText( 0 , iIndex++ , _T("ÏÖ½ð") );
break;
case 3:
m_wndList.SetItemText(0, iIndex++, _T("¾©¶«¿¨"));
break;
case 4:
m_wndList.SetItemText(0, iIndex++, _T("תÔù¶ÌÐÅ"));
break;
case 5:
m_wndList.SetItemText(0, iIndex++, _T("ÆäËüÔùÆ·"));
break;
case 0:
default:
m_wndList.SetItemText( 0 , iIndex++ , _T("ÎÞ") );
break;
}
str.Format( _T("%.2f") , pData->fLPPrice );
m_wndList.SetItemText( 0 , iIndex++ , str);
str = _T(""); //ÔùËÍÈË
for ( int i=0 ; i<m_PayReq.lMemberCount ; i++ )
{
if ( pData->lLXRID == m_pMemberData[i].lLXRID )
{
str = m_pMemberData[i].szName;
break;
}
}
m_wndList.SetItemText( 0 , iIndex++ , pData->szBZ);
if ( pData->lLPType == 0 ) //·ÇÔ¤³ä
{
//Ôö¼ÓÊý¾Ý
m_PayReq.lTotal += pData->lSMSCount;
m_PayReq.lUsed += pData->lSMSCount;
m_PayReq.fJFTotal += pData->fPrice;
m_strUsed.Format( _T("%d") , m_PayReq.lUsed );
m_strTotal.Format( _T("%d") ,m_PayReq.lTotal );
}
this->UpdateData(false);
}
}
void DLG_Agent_MmsPay::OnAgentPaySee()
{
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_Agent_MmsPayData * pData = m_Pay.GetNext( pos );
if (pData)
{
DLG_Agent_MmsPay_Modify dlg(this);
dlg.SetParam(m_PayReq , *pData,m_pMemberData , false,m_agent);
dlg.DoModal();
}
}
void DLG_Agent_MmsPay::OnDblclkAgentPayList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
OnAgentPaySee();
}
void DLG_Agent_MmsPay::OnOK()
{
CDialog::OnOK();
}
void DLG_Agent_MmsPay::OnBnClickedAgentPayModify()
{
if (m_bSOS)
{
return;
}
long lItem = GetCurrentSelected();
if (lItem < 0)
return;
CString str, str2;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_Agent_MmsPayData* pData = m_Pay.GetNext(pos);
if (pData && m_pMainFrame)
{
DLG_Agent_MmsPay_Modify dlg(this);
//dlg.SetCorpData(m_PayReq, m_pMemberData, m_bCommend, m_corp);
#ifndef SMSMANAGER_KF
BOOL bAllowModify = false;
if (m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD, false)) //Ö»ÓлÆÐ¡½ãÓÐÕâȨÏÞ
{
if (pData->ucStatus == 0 && COleDateTime::GetCurrentTime() - COleDateTime(pData->tPayTime) < COleDateTimeSpan(180, 0, 0, 0)) //дóеÄÔÊÐíÐÞ¸ÄÊý¾Ý
bAllowModify = true;
}
else
{
if (pData->ucStatus == 0 && pData->bYS && COleDateTime::GetCurrentTime() - COleDateTime(pData->tPayTime) < COleDateTimeSpan(180, 0, 0, 0)) //дóеÄÔÊÐíÐÞ¸ÄÊý¾Ý
bAllowModify = true;
}
if (bAllowModify)
{
dlg.SetParam(m_PayReq, *pData, m_pMemberData, 2, m_agent);
//dlg.SetParam(*pData, 2);
if (dlg.DoModal() == IDOK)
{
ANS_Agent_MmsPayData* pData2 = new ANS_Agent_MmsPayData;
*pData2 = dlg.GetParam();
BOOL bChange = false;
SYSTEMTIME t; GetLocalTime(&t);
if (_tcscmp(pData2->szPayMode, pData->szPayMode) != 0)
{
if (!bChange)
str.Format(_T("%s\r\n%sÓÚ%04d.%02d.%02dÐÞ¸Ä"), pData->szBZ, m_pMainFrame->m_Setup.szUser, t.wYear, t.wMonth, t.wDay);
bChange = true;
str2.Format(_T("\r\n%s->%s"), pData->szPayMode, pData2->szPayMode);
str.Append(str2);
m_wndList.SetItemText(lItem, 2, pData->szPayMode);
}
if (pData->bTest != pData2->bTest)
{
if (!bChange)
str.Format(_T("%s\r\n%sÓÚ%04d.%02d.%02dÐÞ¸Ä"), pData->szBZ, m_pMainFrame->m_Setup.szUser, t.wYear, t.wMonth, t.wDay);
bChange = true;
str2.Format(_T("\r\n²âÊÔ£º%d->%d"), pData->bTest, pData2->bTest);
str.Append(str2);
}
if (pData->tYSTime.wYear != pData2->tYSTime.wYear || pData->tYSTime.wMonth != pData2->tYSTime.wMonth || pData->tYSTime.wDay != pData2->tYSTime.wDay)
{
if (!bChange)
str.Format(_T("%s\r\n%sÓÚ%04d.%02d.%02dÐÞ¸Ä"), pData->szBZ, m_pMainFrame->m_Setup.szUser, t.wYear, t.wMonth, t.wDay);
bChange = true;
str2.Format(_T("\r\nÊÕ¿îʱ¼ä%04d.%02d.%02d->%04d.%02d.%02d"), pData->tYSTime.wYear, pData->tYSTime.wMonth, pData->tYSTime.wDay, pData2->tYSTime.wYear, pData2->tYSTime.wMonth, pData2->tYSTime.wDay);
str.Append(str2);
}
if (pData->lLPType != pData2->lLPType)
{
if (!bChange)
str.Format(_T("%s\r\n%sÓÚ%04d.%02d.%02dÐÞ¸Ä"), pData->szBZ, m_pMainFrame->m_Setup.szUser, t.wYear, t.wMonth, t.wDay);
bChange = true;
str2.Format(_T("\r\nÀñÆ·ÀàÐÍ£º%d->%d"), pData->lLPType, pData2->lLPType);
str.Append(str2);
}
if (pData->lLXRID != pData2->lLXRID)
{
if (!bChange)
str.Format(_T("%s\r\n%sÓÚ%04d.%02d.%02dÐÞ¸Ä"), pData->szBZ, m_pMainFrame->m_Setup.szUser, t.wYear, t.wMonth, t.wDay);
bChange = true;
str2.Format(_T("\r\nÀñÆ·¶ÔÏó£º%d->%d"), pData->lLXRID, pData2->lLXRID);
str.Append(str2);
}
if (pData->fLPPrice != pData2->fLPPrice)
{
if (!bChange)
str.Format(_T("%s\r\n%sÓÚ%04d.%02d.%02dÐÞ¸Ä"), pData->szBZ, m_pMainFrame->m_Setup.szUser, t.wYear, t.wMonth, t.wDay);
bChange = true;
str2.Format(_T("\r\nÀñÆ·¼Û¸ñ£º%.0f->%.0f"), pData->fLPPrice, pData2->fLPPrice);
str.Append(str2);
}
if (bChange)
{
if (str.GetLength() > 200)
str = str.Left(200);
_tcscpy(pData2->szBZ, str);
pData2->ucStatus = CORP_PAY_MODIFY;
m_lModifyCount++; //ÐèÒªÐ޸ĵļǼÔö¼Ó
*pData = *pData2;
}
delete pData2;
//POSITION pos = m_Pay.AddTail( pData2 );
}
}
else
{
dlg.SetParam(m_PayReq, *pData, m_pMemberData, false, m_agent);
dlg.DoModal();
}
#else
dlg.SetParam(m_PayReq, *pData, m_pMemberData, false, m_agent);
dlg.DoModal();
#endif
}
}