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

392 lines
11 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_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; //默认为短信易代理
m_lAgentID = 0; //代理产ID
m_fPriceOne = 0.10f; //默认单价
}
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);
//初始化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("序号,50; 出单人,80;充值类型,80;ADC状态,80;缴费金额,80; 单价,80; 小计,70; 赠送,70; 短信量,70;充值费时间,130;预开票,55;应收,55;测试,55;收款时间,130;发票,55;发票状态,80;发票时间,130; 备注,200;"));
#else
m_wndList.SetHeadings(_T("序号,50; 出单人,80;缴费方式,80;缴费金额,80; 单价,80; 小计,70; 赠送,70; 短信量,70;充值时间,130;过期时间,130;预开票,55;应收,55;测试,55;收款时间,130;发票,55;发票状态,80;发票时间,130; 备注,200;"));
#endif
#else
#ifdef SMSCENTER_ADC
m_wndList.SetHeadings(_T("序号,50; 出单人,80;充值类型,80;ADC状态,80;缴费金额,80; 单价,80; 小计,70; 赠送,70; 短信量,70;缴费时间,130; 备注,200;"));
#else
m_wndList.SetHeadings(_T("序号,50; 出单人,80;缴费方式,80;缴费金额,80; 单价,80; 小计,70; 赠送,70; 短信量,70;缴费时间,130;过期时间,130; 备注,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的原因是倒转显示
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充值") );
else
m_wndList.SetItemText( i , iIndex++ , _T("短信易充值") );
if ( pData->lPayType ==1 )
{
switch( pData->lAdcStatus )
{
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;
default:
m_wndList.SetItemText( i , iIndex++ , _T("未处理") );
}
}
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("") );
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++;
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 ) //不允许修改
{
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; //代理商类型
m_dwYJ = dwYJ;
m_lAgentID = lAgentID; //代理商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 ++; //需要修改的记录增加
POSITION pos = m_Pay.AddTail( pData );
//m_fAdd = m_fAdd + pData->fPrice; //记录总数
m_fAdd = m_fAdd + (float)pData->lSMSCount / 10.0f; //记录总数
long lCount = m_wndList.GetItemCount();
TCHAR Buf[32];
_stprintf( Buf, _T("%d") , lCount +1 );
//设置新的数据
m_wndList.InsertItem( 0 , Buf , 0); //Item为0的原因是倒转显示
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);
//增加数据
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("企业短信余额不能小于0请修改充值记录"),_T("错误") , MB_ICONWARNING);
return ;
}
if (m_fUsed<m_fAdd)
{
MessageBox(_T("你的代理商可用余额不足,不能添此次缴费!"), _T("错误"), 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;
}