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

547 lines
14 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.

// DLG_Mms_Pay.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Mms_Pay.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_Mms_Pay dialog
#include "DLG_Mms_Pay_Modify.h"
DLG_Mms_Pay::DLG_Mms_Pay(CWnd* pParent /*=NULL*/)
: CDialog(DLG_Mms_Pay::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_Mms_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_pMemberData = NULL;
m_lModifyType = 0;
m_bCommend = true;
m_bModify = true;
m_lUsed = 0;
m_lAdd = 0;
m_lType = 0; //默认为短信易代理
m_fPriceOne = 0.10f; //默认单价
m_lAgentID = 0; //代理商ID
}
void DLG_Mms_Pay::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_Mms_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_Mms_Pay, CDialog)
//{{AFX_MSG_MAP(DLG_Mms_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
ON_BN_CLICKED(IDC_CORP_PAY_ZX, &DLG_Mms_Pay::OnBnClickedCorpPayZx)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_Mms_Pay message handlers
BOOL DLG_Mms_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);
//初始化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
m_wndList.SetHeadings(_T("序号,50; 出单人,80;缴费方式,80;缴费金额,80; 单价,80; 小计,70; 赠送,70; 彩信量,70;缴费时间,130;过期时间,130;预开票,55;应收,55;测试,55;收款时间,130;发票,55;发票状态,80;开票时间,130; 备 注,200;"));
#else
m_wndList.SetHeadings(_T("序号,50; 出单人,80;缴费方式,80;缴费金额,80; 单价,80; 小计,70; 赠送,70; 彩信量,70;缴费时间,130;过期时间,130; 备注,200;"));
#endif
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
//#ifndef SMSMANAGER_KF
BOOL bFirst = true;
POSITION pos;
TCHAR Buf[32];
CString str;
for ( int i = 0 ; i< m_PayReq.lCount ; i++ )
{
ANS_Mms_PayData * pData = new ANS_Mms_PayData;
*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)pos);
int iIndex=1;
//m_wndList.SetItemText( i , 1 , pData->szPayMan );
m_wndList.SetItemText( i , iIndex++ , pData->szCreateUser );
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 );
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);
_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);
#ifdef MANAGER_VER_YWY
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++;
_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("无需发票");
break;
case 1:
strType = _T("地税发票");
break;
case 2:
strType = _T("增值税普票");
break;
case 3:
strType = _T("移动发票");
break;
case 4:
strType = _T("增值税专票");
break;
case 5:
strType = _T("无需发票已报税");
break;
}
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("已寄出") );
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+=3;
}
#endif
/*
switch( pData->lLPType )
{
case 1:
m_wndList.SetItemText( i , iIndex++ , _T("充值卡") );
break;
case 2:
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);
str.Format( _T("%d") , pData->lCommend_VipInt ); //推荐积分
m_wndList.SetItemText( i , iIndex++ , str);
if ( pData->lCommend_VipInt>0 )
m_bCommend = false; //不允许再添加推荐积分了
*/
m_wndList.SetItemText( i , iIndex++ , pData->szBZ);
}
//#endif
#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 ) //不允许修改
{
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_Mms_Pay::SetParam(ANS_Mms_Pay Pay, ANS_Mms_PayData *pPayData,ANS_Corp_MemberData * pMemberData,long lModifyType,BOOL bModify,long lUsed,long lType,DWORD dwYJ,long lAgentID)
{
m_PayReq = Pay;
m_pPayData = pPayData;
m_pMemberData=pMemberData;
m_lModifyType=lModifyType;
m_bModify = bModify;
m_lUsed = lUsed;
m_lType = lType; //代理商类型
m_dwYJ = dwYJ;
m_lAgentID = lAgentID; //代理商ID
}
void DLG_Mms_Pay::OnCorpPayAdd()
{
/*
if ( m_lModifyType == 1 )
{
int iRet=MessageBox( _T("此企业是代理商的用户,非特殊情况不允许向其充值!是否继续?"),_T("警告") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
if ( iRet != IDYES )
return ;
}
*/
/*
if ( !m_bModify )
return;
*/
DLG_Mms_Pay_Modify dlg(m_lUsed-m_lAdd, m_PayReq.lSmsUsed, m_fPriceOne,m_dwYJ, m_lAgentID,this);
CString str;
dlg.SetCorpData(m_PayReq,m_pMemberData,m_bCommend);
if ( dlg.DoModal() == IDOK )
{
ANS_Mms_PayData * pData = new ANS_Mms_PayData;
*pData = dlg.GetParam();
m_lAdd = m_lAdd + pData->lSMSCount; //记录总数
pData->ucStatus = CORP_PAY_ADD;
m_lModifyCount ++; //需要修改的记录增加
POSITION pos = m_Pay.AddTail( pData );
long lCount = m_wndList.GetItemCount();
TCHAR Buf[32];
_stprintf( Buf, _T("%d") , lCount +1 );
//设置新的数据
int iIndex=1;
m_wndList.InsertItem( 0 , Buf , 0); //Item为0的原因是倒转显示
m_wndList.SetItemData( 0, (DWORD)pos );
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 ( a<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 );
#ifdef MANAGER_VER_YWY
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);
_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 , iIndex++ , Buf);
iIndex++;
if ( pData->bFP )
m_wndList.SetItemText( 0 , iIndex++ , _T("") );
else
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 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++ , str);
str.Format( _T("%d") , pData->lCommend_VipInt ); //推荐积分
m_wndList.SetItemText( 0 , iIndex++ , str);
#else
_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);
_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 , iIndex++ , Buf);
#endif
m_wndList.SetItemText( 0 , iIndex++ , pData->szBZ);
//增加数据
if ( pData->lYSType ==0 ) //非预充的才加
{
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_Mms_Pay::OnOK()
{
if (m_PayReq.lSmsUsed<0 )
{
MessageBox(_T("企业短信余额不能小于0请修改充值记录"),_T("错误") , MB_ICONWARNING);
return ;
}
if (m_lUsed<m_lAdd)
{
MessageBox(_T("你的代理商可用余额不足,不能添此次缴费!"), _T("错误"), MB_ICONWARNING);
return;
}
CDialog::OnOK();
}
void DLG_Mms_Pay::OnDblclkCorpPayList(NMHDR* pNMHDR, LRESULT* pResult)
{
OnCorpPaySee();
*pResult = 0;
}
void DLG_Mms_Pay::OnCorpPaySee()
{
return ;
/*
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
TCHAR Buf[128]={0};
CString str;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_Mms_PayData * pData = m_Pay.GetNext( pos );
if (pData)
{
DLG_Mms_Pay_Modify dlg(this);
dlg.SetCorpData(m_PayReq,m_pMemberData,m_bCommend);
#ifndef SMSMANAGER_KF
if ( this->m_PayReq.lCorpID == 100152 && pData->ucStatus ==0 && COleDateTime::GetCurrentTime()-COleDateTime(pData->tPayTime)<COleDateTimeSpan(60,0,0,0)) //新大新的允许修改数据
{
dlg.SetParam( *pData,2);
float fPriceCE = 0;
long lSmsCountCE=0;
if ( dlg.DoModal() == IDOK )
{
ANS_Mms_PayData * pData2 = new ANS_Mms_PayData;
*pData2 = dlg.GetParam();
pData2->ucStatus = CORP_PAY_MODIFY;
m_lModifyCount ++; //需要修改的记录增加
fPriceCE = pData2->fPrice - pData->fPrice;
lSmsCountCE= pData2->lSMSCount - pData->lSMSCount;
pData2->fPriceOne = fPriceCE; //保存差额
pData2->lPresent = lSmsCountCE;
str.Format( _T("\r\n更改前金额:%.2f") , pData->fPrice);
_tcscat(pData2->szBZ , str );
*pData = * pData2;
delete pData2;
//POSITION pos = m_Pay.AddTail( pData2 );
_stprintf( Buf , _T("%8.2f") , pData->fPrice );
m_wndList.SetItemText( lItem , 3 , Buf );
_stprintf( Buf , _T("%8d") , pData->lSMSCount);
m_wndList.SetItemText( lItem , 7 , Buf );
if ( pData->lYSType ==0 ) //非预充的才加
{
m_PayReq.fTotal += fPriceCE;
m_PayReq.lTotalSms += lSmsCountCE;
m_PayReq.lSmsUsed += lSmsCountCE;
m_strSMSUsed.Format( _T("%d") , m_PayReq.lSmsUsed );
m_strTotal.Format( _T("%.2f") , m_PayReq.fTotal );
}
this->UpdateData(false);
}
}
else
{
dlg.SetParam( *pData,false);
dlg.DoModal();
}
#else
dlg.SetParam( *pData,false);
dlg.DoModal();
#endif
}
*/
}
long DLG_Mms_Pay::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void DLG_Mms_Pay::OnBnClickedCorpPayZx()
{
// TODO: 在此添加控件通知处理程序代码
}