AgentManager/DLG_Corp_Pay.cpp

392 lines
11 KiB
C++
Raw Normal View History

2025-01-22 15:45:17 +08:00
// DLG_Corp_Pay.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Corp_Pay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_Corp_Pay dialog
#include "DLG_Corp_Pay_Modify.h"
DLG_Corp_Pay::DLG_Corp_Pay(CWnd* pParent /*=NULL*/)
: CDialog(DLG_Corp_Pay::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_Corp_Pay)
m_strSMSNum = _T("");
m_strCorpName = _T("");
m_strSMSUsed = _T("");
m_strTotal = _T("");
//}}AFX_DATA_INIT
m_lModifyCount = 0;
memset( &m_PayReq , 0 , sizeof(m_PayReq) );
m_pPayData = NULL;
m_bModify = true;
m_fUsed = 0.0f;
m_fAdd = 0.0f;
m_lType = 0; //Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD><D7B4><EFBFBD>
m_lAgentID = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
m_fPriceOne = 0.10f; //Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD>
}
void DLG_Corp_Pay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_Corp_Pay)
DDX_Control(pDX, IDC_CORP_PAY_LIST, m_wndList);
DDX_Text(pDX, IDC_CORP_PAY_SMSNUM, m_strSMSNum);
DDX_Text(pDX, IDC_CORP_PAY_CORPNAME, m_strCorpName);
DDX_Text(pDX, IDC_CORP_PAY_SMSUSED, m_strSMSUsed);
DDX_Text(pDX, IDC_CORP_PAY_TOTAL, m_strTotal);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_Corp_Pay, CDialog)
//{{AFX_MSG_MAP(DLG_Corp_Pay)
ON_BN_CLICKED(IDC_CORP_PAY_ADD, OnCorpPayAdd)
ON_NOTIFY(NM_DBLCLK, IDC_CORP_PAY_LIST, OnDblclkCorpPayList)
ON_BN_CLICKED(IDC_CORP_PAY_SEE, OnCorpPaySee)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_Corp_Pay message handlers
BOOL DLG_Corp_Pay::OnInitDialog()
{
CDialog::OnInitDialog();
m_strCorpName = m_PayReq.szCorpName;
m_strSMSNum = m_PayReq.szSMSNum;
m_strSMSUsed.Format( _T("%d") , m_PayReq.lSmsUsed );
m_strTotal.Format( _T("%.2f") , m_PayReq.fTotal );
this->UpdateData(false);
//<2F><>ʼ<EFBFBD><CABC>List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP) );
m_wndList.SubClassWindow2();
#ifdef MANAGER_VER_YWY
#ifdef SMSCENTER_ADC
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,80;<3B><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,80;ADC״̬,80;<3B>ɷѽ<C9B7><D1BD><EFBFBD>,80; <20><><EFBFBD><EFBFBD>,80; С<><D0A1>,70; <20><><EFBFBD><EFBFBD>,70; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,70;<3B><>ֵ<EFBFBD><D6B5>ʱ<EFBFBD><CAB1>,130;Ԥ<><D4A4>Ʊ,55;Ӧ<><D3A6>,55;<3B><><EFBFBD><EFBFBD>,55;<3B>տ<EFBFBD>ʱ<EFBFBD><CAB1>,130;<3B><>Ʊ,55;<3B><>Ʊ״̬,80;<3B><>Ʊʱ<C6B1><CAB1>,130; <20><>ע,200;"));
#else
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,80;<3B>ɷѷ<C9B7>ʽ,80;<3B>ɷѽ<C9B7><D1BD><EFBFBD>,80; <20><><EFBFBD><EFBFBD>,80; С<><D0A1>,70; <20><><EFBFBD><EFBFBD>,70; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,70;<3B><>ֵʱ<D6B5><CAB1>,130;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,130;Ԥ<><D4A4>Ʊ,55;Ӧ<><D3A6>,55;<3B><><EFBFBD><EFBFBD>,55;<3B>տ<EFBFBD>ʱ<EFBFBD><CAB1>,130;<3B><>Ʊ,55;<3B><>Ʊ״̬,80;<3B><>Ʊʱ<C6B1><CAB1>,130; <20><>ע,200;"));
#endif
#else
#ifdef SMSCENTER_ADC
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,80;<3B><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,80;ADC״̬,80;<3B>ɷѽ<C9B7><D1BD><EFBFBD>,80; <20><><EFBFBD><EFBFBD>,80; С<><D0A1>,70; <20><><EFBFBD><EFBFBD>,70; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,70;<3B>ɷ<EFBFBD>ʱ<EFBFBD><CAB1>,130; <20><>ע,200;"));
#else
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,80;<3B>ɷѷ<C9B7>ʽ,80;<3B>ɷѽ<C9B7><D1BD><EFBFBD>,80; <20><><EFBFBD><EFBFBD>,80; С<><D0A1>,70; <20><><EFBFBD><EFBFBD>,70; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,70;<3B>ɷ<EFBFBD>ʱ<EFBFBD><CAB1>,130;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,130; <20><>ע,200;"));
#endif
#endif
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
BOOL bFirst = true;
POSITION pos;
TCHAR Buf[32];
for ( int i = 0 ; i< m_PayReq.lCount ; i++ )
{
ANS_Corp_PayData * pData = new ANS_Corp_PayData;
*pData = m_pPayData[i];
pos = m_Pay.AddTail( pData );
_stprintf( Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf , 0 ); //ItemΪ0<CEAA><30>ԭ<EFBFBD><D4AD><EFBFBD>ǵ<EFBFBD>ת<EFBFBD><D7AA>ʾ
m_wndList.SetItemData( i , (DWORD)pos);
int iIndex=1;
m_wndList.SetItemText( i , iIndex++ , pData->szCreateUser );
#ifndef SMSCENTER_ADC
m_wndList.SetItemText( i , iIndex++ , pData->szPayMode );
#endif
#ifdef SMSCENTER_ADC
if ( pData->lPayType ==1 )
m_wndList.SetItemText( i , iIndex++ , _T("ADC<EFBFBD><EFBFBD>ֵ") );
else
m_wndList.SetItemText( i , iIndex++ , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD>ֵ") );
if ( pData->lPayType ==1 )
{
switch( pData->lAdcStatus )
{
case 1:
m_wndList.SetItemText( i , iIndex++ , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
break;
case 2:
m_wndList.SetItemText( i , iIndex++ , _T("<EFBFBD>ѳ<EFBFBD>ֵ") );
break;
case 3:
m_wndList.SetItemText( i , iIndex++ , _T("<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>") );
break;
default:
m_wndList.SetItemText( i , iIndex++ , _T("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
}
}
else
{
iIndex++;
}
#endif
_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 );
if (bFirst && pData->fPriceOne>0.0f)
{
m_fPriceOne = pData->fPriceOne;
bFirst = false;
}
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("%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);
#ifndef SMSCENTER_ADC
_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);
#endif
#ifdef MANAGER_VER_YWY
switch(pData->lYSType )
{
case 0:
default:
iIndex++;
break;
case 1:
m_wndList.SetItemText( i , iIndex++ , _T(" <20><>") );
break;
case 2:
m_wndList.SetItemText( i , iIndex++ , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
break;
}
if ( pData->bYS )
m_wndList.SetItemText( i , iIndex++ , _T(" <20><>") );
else
iIndex++;
if ( pData->bTest )
m_wndList.SetItemText( i , iIndex++ , _T(" <20><>") );
else
iIndex++;
_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);
if ( pData->bFP>0 )
{
CString strType;
switch (pData->bFP)
{
case 0:
strType = _T("<EFBFBD><EFBFBD><EFBFBD>跢Ʊ");
break;
case 1:
strType = _T("<EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>Ʊ");
break;
case 2:
strType = _T("<EFBFBD><EFBFBD>ֵ˰<EFBFBD><EFBFBD>Ʊ");
break;
case 3:
strType = _T("<EFBFBD>ƶ<EFBFBD><EFBFBD><EFBFBD>Ʊ");
break;
case 4:
strType = _T("<EFBFBD><EFBFBD>ֵ˰רƱ");
break;
case 5:
strType = _T("<EFBFBD><EFBFBD><EFBFBD>跢Ʊ<EFBFBD>ѱ<EFBFBD>˰");
break;
}
m_wndList.SetItemText( i , iIndex++ ,strType );
switch(pData->lFPStatus)
{
case 0:
default:
m_wndList.SetItemText( i , iIndex++ , _T("δ<EFBFBD><EFBFBD>Ʊ") );
break;
case 1:
m_wndList.SetItemText( i , iIndex++ , _T("<EFBFBD>ѿ<EFBFBD>Ʊ") );
break;
case 2:
m_wndList.SetItemText( i , iIndex++ , _T("<EFBFBD>Ѽij<EFBFBD>") );
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++;
iIndex++;
iIndex++;
}
#endif
m_wndList.SetItemText( i , iIndex++ , pData->szBZ);
}
#if defined(MANAGER_VER_YWY) || defined(MANAGER_VER_HF)
GetDlgItem(IDC_CORP_PAY_TOTAL)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CORP_PAY_TOTAL_S)->ShowWindow(SW_HIDE);
if ( !m_bModify ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
{
GetDlgItem(IDC_CORP_PAY_ADD)->EnableWindow(false);
GetDlgItem(IDC_CORP_PAY_ADD)->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_Corp_Pay::SetParam(ANS_Corp_Pay Pay, ANS_Corp_PayData *pPayData,BOOL bModify,float fUsed,long lType,DWORD dwYJ,long lAgentID)
{
m_PayReq = Pay;
m_pPayData = pPayData;
m_bModify = bModify;
m_fUsed = fUsed;
m_lType = lType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_dwYJ = dwYJ;
m_lAgentID = lAgentID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
}
void DLG_Corp_Pay::OnCorpPayAdd()
{
DLG_Corp_Pay_Modify dlg(m_fUsed-m_fAdd, m_PayReq.lSmsUsed, m_fPriceOne, m_dwYJ,m_lAgentID,this);
if ( dlg.DoModal() == IDOK )
{
ANS_Corp_PayData * pData = new ANS_Corp_PayData;
*pData = dlg.GetParam();
pData->ucStatus = CORP_PAY_ADD;
m_lModifyCount ++; //<2F><>Ҫ<EFBFBD>޸ĵļ<C4B5>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
POSITION pos = m_Pay.AddTail( pData );
//m_fAdd = m_fAdd + pData->fPrice; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
m_fAdd = m_fAdd + (float)pData->lSMSCount / 10.0f; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
long lCount = m_wndList.GetItemCount();
TCHAR Buf[32];
_stprintf( Buf, _T("%d") , lCount +1 );
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
m_wndList.InsertItem( 0 , Buf , 0); //ItemΪ0<CEAA><30>ԭ<EFBFBD><D4AD><EFBFBD>ǵ<EFBFBD>ת<EFBFBD><D7AA>ʾ
m_wndList.SetItemData( 0, (DWORD)pos );
//m_wndList.SetItemText( 0 , 1 , pData->szPayMan );
m_wndList.SetItemText( 0 , 1 , pData->szCreateUser );
m_wndList.SetItemText( 0 , 2 , pData->szPayMode );
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( 0 , 3 , Buf );
_stprintf( Buf , _T("%8.4f") , pData->fPriceOne);
m_wndList.SetItemText( 0 , 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( 0 , 5 , Buf );
_stprintf( Buf , _T("%8d") , pData->lPresent);
m_wndList.SetItemText( 0 , 6 , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( 0 , 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( 0 , 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( 0 , 9 , Buf);
m_wndList.SetItemText( 0 , 10 , pData->szBZ);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_PayReq.fTotal += pData->fPrice;
m_PayReq.lTotalSms += pData->lSMSCount;
m_PayReq.lSmsUsed += pData->lSMSCount;
m_strSMSUsed.Format( _T("%d") , m_PayReq.lSmsUsed );
m_strTotal.Format( _T("%.2f") , m_PayReq.fTotal );
this->UpdateData(false);
}
}
void DLG_Corp_Pay::OnOK()
{
if (m_PayReq.lSmsUsed<0 )
{
MessageBox(_T("<EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ij<EFBFBD>ֵ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>"),_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING);
return ;
}
if (m_fUsed<m_fAdd)
{
MessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴νɷ<EFBFBD>!"), _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), MB_ICONWARNING);
return;
}
CDialog::OnOK();
}
void DLG_Corp_Pay::OnDblclkCorpPayList(NMHDR* pNMHDR, LRESULT* pResult)
{
OnCorpPaySee();
*pResult = 0;
}
void DLG_Corp_Pay::OnCorpPaySee()
{
return;
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_Corp_PayData * pData = m_Pay.GetNext( pos );
if (pData)
{
DLG_Corp_Pay_Modify dlg(m_fUsed, m_PayReq.lSmsUsed, m_fPriceOne, m_dwYJ,m_lAgentID,this);
dlg.SetParam( *pData,false);
dlg.DoModal();
}
}
long DLG_Corp_Pay::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}