SmsManager/DLG_Pay_Detail.cpp
2025-01-14 10:46:18 +08:00

1032 lines
34 KiB
C++

// DLG_Pay_Detail.cpp: 实现文件
//
#include "stdafx.h"
#include "SmsManager.h"
#include "afxdialogex.h"
#include "DLG_Pay_Detail.h"
#include "MainFrm.h"
#include "CK_AllQuery_Report.h"
#include "DLG_Pay_Oper_Detail.h"
#include "DLG_Corp_FP.h";
// DLG_Pay_Detail 对话框
IMPLEMENT_DYNAMIC(DLG_Pay_Detail, CDialogEx)
DLG_Pay_Detail::DLG_Pay_Detail(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_PAY_DETAIL, pParent)
, m_tFPTime(COleDateTime::GetCurrentTime())
, m_tPayTime(COleDateTime::GetCurrentTime())
, m_tYSTime(COleDateTime::GetCurrentTime())
, m_strAgentName(_T(""))
, m_strBankPayer(_T(""))
, m_strBankReference(_T(""))
, m_strBZ(_T(""))
, m_strCorpID(_T(""))
, m_strBalance(_T(""))
, m_strCorpName(_T(""))
, m_strFPDetail(_T(""))
, m_strFPNum(_T(""))
, m_strFPUser(_T(""))
, m_strLPPrice(_T(""))
, m_strOverTime(_T(""))
, m_strPayMan(_T(""))
, m_strPayMode(_T(""))
, m_strPayType(_T(""))
, m_strPresent(_T(""))
, m_strPrice(_T(""))
, m_strPriceOne(_T(""))
, m_strPT(_T(""))
, m_strSmsCount(_T(""))
, m_strUserType(_T(""))
, m_strVipInt(_T(""))
, m_strYSType(_T(""))
, m_strYWY(_T(""))
, m_strBZS(_T(""))
{
m_pMainFrame = NULL;
m_pGet = NULL;
m_pData = NULL;
m_pMemberData = NULL;
m_pOperData = NULL;
m_pFPData = NULL;
}
DLG_Pay_Detail::~DLG_Pay_Detail()
{
}
void DLG_Pay_Detail::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_DateTimeCtrl(pDX, IDC_PAY_DETAIL_FPTIME, m_tFPTime);
DDX_DateTimeCtrl(pDX, IDC_PAY_DETAIL_PAYTIME, m_tPayTime);
DDX_DateTimeCtrl(pDX, IDC_PAY_DETAIL_YSTIME, m_tYSTime);
DDX_Text(pDX, IDC_PAY_DETAIL_AGENTNAME, m_strAgentName);
DDX_Text(pDX, IDC_PAY_DETAIL_BANKPAYER, m_strBankPayer);
DDX_Text(pDX, IDC_PAY_DETAIL_BANKREFERENCE, m_strBankReference);
DDX_Text(pDX, IDC_PAY_DETAIL_BZ, m_strBZ);
DDV_MaxChars(pDX, m_strBZ, 60);
DDX_Control(pDX, IDC_PAY_DETAIL_CB, m_L_CB);
DDX_Text(pDX, IDC_PAY_DETAIL_CORPID, m_strCorpID);
DDX_Text(pDX, IDC_PAY_DETAIL_BALANCE, m_strBalance);
DDX_Text(pDX, IDC_PAY_DETAIL_CORPNAME, m_strCorpName);
DDX_Control(pDX, IDC_PAY_DETAIL_FPCONFIRM, m_B_FPConfirm);
DDX_Text(pDX, IDC_PAY_DETAIL_FPDETAIL, m_strFPDetail);
DDV_MaxChars(pDX, m_strFPDetail, 768);
DDX_Text(pDX, IDC_PAY_DETAIL_FPNUM, m_strFPNum);
DDV_MaxChars(pDX, m_strFPNum, 50);
DDX_Control(pDX, IDC_PAY_DETAIL_FPSELECT, m_B_FPSelect);
DDX_Control(pDX, IDC_PAY_DETAIL_FPSTATUS, m_L_FPStatus);
DDX_Control(pDX, IDC_PAY_DETAIL_FPTYPE, m_L_FPType);
DDX_Text(pDX, IDC_PAY_DETAIL_FPUSER, m_strFPUser);
DDX_Control(pDX, IDC_PAY_DETAIL_LIST, m_wndList);
DDX_CBString(pDX, IDC_PAY_DETAIL_LPPRICE, m_strLPPrice);
DDX_Control(pDX, IDC_PAY_DETAIL_LPTYPE, m_L_LPType);
DDX_Control(pDX, IDC_PAY_DETAIL_LXRID, m_L_LXRID);
DDX_Text(pDX, IDC_PAY_DETAIL_OVERTIME, m_strOverTime);
DDX_Text(pDX, IDC_PAY_DETAIL_PAYMAN, m_strPayMan);
DDX_CBString(pDX, IDC_PAY_DETAIL_PAYMODE, m_strPayMode);
DDX_Text(pDX, IDC_PAY_DETAIL_PAYTYPE, m_strPayType);
DDX_Text(pDX, IDC_PAY_DETAIL_PRESENT, m_strPresent);
DDX_Text(pDX, IDC_PAY_DETAIL_PRICE, m_strPrice);
DDX_Text(pDX, IDC_PAY_DETAIL_PRICEONE, m_strPriceOne);
DDX_Text(pDX, IDC_PAY_DETAIL_PT, m_strPT);
DDX_Text(pDX, IDC_PAY_DETAIL_SMSCOUNT, m_strSmsCount);
DDX_Control(pDX, IDC_PAY_DETAIL_TEST, m_L_Test);
DDX_Text(pDX, IDC_PAY_DETAIL_USERTYPE, m_strUserType);
DDX_Text(pDX, IDC_PAY_DETAIL_VIPINT, m_strVipInt);
DDX_Control(pDX, IDC_PAY_DETAIL_YS, m_B_YS);
DDX_Text(pDX, IDC_PAY_DETAIL_YSTYPE, m_strYSType);
DDX_Text(pDX, IDC_PAY_DETAIL_YWY, m_strYWY);
DDX_Text(pDX, IDC_PAY_DETAIL_BZS, m_strBZS);
}
BEGIN_MESSAGE_MAP(DLG_Pay_Detail, CDialogEx)
ON_BN_CLICKED(IDOK, &DLG_Pay_Detail::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &DLG_Pay_Detail::OnBnClickedCancel)
ON_NOTIFY(NM_DBLCLK, IDC_PAY_DETAIL_LIST, &DLG_Pay_Detail::OnDblclkPayDetailList)
ON_BN_CLICKED(IDC_PAY_DETAIL_FPSELECT, &DLG_Pay_Detail::OnBnClickedPayDetailFpselect)
ON_COMMAND_RANGE(MENU_PAY_DETAIL_FPSELECT_BEGIN, MENU_PAY_DETAIL_FPSELECT_END, &DLG_Pay_Detail::OnFPSelect)
ON_CBN_SELCHANGE(IDC_PAY_DETAIL_LPTYPE, &DLG_Pay_Detail::OnSelchangePayDetailLptype)
END_MESSAGE_MAP()
// DLG_Pay_Detail 消息处理程序
void DLG_Pay_Detail::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
if (m_pGet->req.lOperType > 0) //为添加操作
{
if (!UpdateData(true))
return;
REQ_Pay_Oper_Add* pAdd = new REQ_Pay_Oper_Add;
memset((BYTE*)pAdd, 0, sizeof(REQ_Pay_Oper_Add));
pAdd->data.lPTNum = m_pGet->req.lPTNum;
pAdd->data.lUserType = m_pGet->req.lUserType;
pAdd->data.lPayType = m_pGet->req.lPayType;
pAdd->data.lDBType = m_pGet->req.lDBType;
pAdd->data.lCorpID = m_pGet->req.lCorpID;
pAdd->data.lPayID = m_pGet->req.lPayID;
pAdd->lItem = m_pGet->req.lItem;
pAdd->data.lOperType = m_pGet->req.lOperType;
_tcscpy(pAdd->data.szBZ, m_strBZ); //备注
BOOL bContinue=true;
long lTemp = 0;
switch (m_pGet->req.lOperType)
{
case 1: //修改测试充值
lTemp = m_L_Test.GetCurSel();
if (lTemp == m_pData->lTest)
{
MessageBox(_T("看起来什么值也没改变,请检查【测试充值】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_TEST)->SetFocus();
bContinue = false;
}
else
{
pAdd->lTest = lTemp;
_stprintf(pAdd->data.szOperMsg,_T("测试充值:%d->%d"), m_pData->lTest, lTemp);
}
break;
case 2: //修改成本充值
lTemp = m_L_CB.GetCurSel();
if (lTemp == m_pData->lCB)
{
MessageBox(_T("看起来什么值也没改变,请检查【成本充值】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_CB)->SetFocus();
bContinue = false;
}
else
{
pAdd->lCB = lTemp;
_stprintf(pAdd->data.szOperMsg, _T("成本充值:%d->%d"), m_pData->lCB, lTemp);
}
break;
case 3: //修改开票信息
lTemp = m_L_FPType.GetCurSel();
if (lTemp != 0 && m_strFPDetail.GetLength() <= 0)
{
MessageBox(_T("你选择了需要开发票,必须录入开票内容 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPDETAIL)->SetFocus();
bContinue = false;
}
if (lTemp == m_pData->lFP && m_strFPDetail == CString(m_pData->szFPDetail) )
{
MessageBox(_T("看起来什么值也没改变,请检查【发票状态】与【发票内容】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPTYPE)->SetFocus();
bContinue = false;
}
else
{
pAdd->lFPType = lTemp;
_tcscpy(pAdd->szFPDetail, m_strFPDetail);
_stprintf(pAdd->data.szOperMsg, _T("发票信息:%d->%d \r\n %s"), m_pData->lFP, lTemp, m_strFPDetail);
}
break;
case 4: //开具发票
lTemp = m_L_FPType.GetCurSel();
if (lTemp == 0) //开具发票下,发票类型不能为"不开票"
{
MessageBox(_T("开票后,发票类型不能为 不开票 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPTYPE)->SetFocus();
bContinue = false;
}
if (bContinue)
{
lTemp = m_L_FPStatus.GetCurSel();
if (lTemp == 0) //开具发票下,发票状态不能为"未开票"
{
MessageBox(_T("开票后,发票状态不能为 未开票 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPSTATUS)->SetFocus();
bContinue = false;
}
}
if (bContinue)
{
if (m_strFPNum.GetLength() <= 5) //开具发票下,必须有发票号码
{
MessageBox(_T("开票后,必须录入发票号码 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPNUM)->SetFocus();
bContinue = false;
}
}
if (bContinue)
{
if (m_tFPTime.GetStatus() == COleDateTime::invalid ||
m_tFPTime.GetStatus() == COleDateTime::null) //开具发票下,必须有开票时间
{
MessageBox(_T("开票后,必须录入开票时间 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPTIME)->SetFocus();
bContinue = false;
}
}
if (bContinue)
{
if (m_tFPTime.GetStatus() == COleDateTime::valid)
{
COleDateTimeSpan tDiff = COleDateTime::GetCurrentTime() - COleDateTime(m_tFPTime);
if (tDiff.GetDays() > 90 || tDiff.GetDays() < -30) //2个月前与1个月后
{
MessageBox(_T("修改的开票时间超过许可范围 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPTIME)->SetFocus();
bContinue = false;
}
}
}
if (bContinue)
{
if (m_strFPDetail.GetLength() <= 5) //开具发票下,必须有发票号码
{
MessageBox(_T("开票后,必须录入发票内容 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPDETAIL)->SetFocus();
bContinue = false;
}
}
if (bContinue)
{
if (m_pData->lFP == m_L_FPType.GetCurSel() &&
m_pData->lFPStatus == m_L_FPStatus.GetCurSel() &&
m_strFPNum == CString(m_pData->szFPNum) &&
m_strFPDetail == CString(m_pData->szFPDetail) &&
m_tFPTime == COleDateTime(m_pData->tFPTime) )
{
MessageBox(_T("看起来什么值也没改变,请检查【发票类型】【发票状态】【开票时间】【发票号码】与【发票内容】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPTYPE)->SetFocus();
bContinue = false;
}
else
{
pAdd->lFPType = m_L_FPType.GetCurSel();
pAdd->lFPStatus = m_L_FPStatus.GetCurSel();
_tcscpy(pAdd->szFPNum, m_strFPNum);
_tcscpy(pAdd->szFPDetail, m_strFPDetail);
m_tFPTime.GetAsSystemTime(pAdd->tFPTime);
_stprintf(pAdd->data.szOperMsg, _T("开具发票:%d->%d \r\n%d->%d \r\n%04d.%02d.%02d %02d:%02d -> %04d.%02d.%02d %02d:%02d\r\n %s -> %s \r\n%s \r\n------>\r\n %s"), m_pData->lFP, pAdd->lFPType, m_pData->lFPStatus, pAdd->lFPStatus, m_pData->tFPTime.wYear, m_pData->tFPTime.wMonth, m_pData->tFPTime.wDay, m_pData->tFPTime.wHour, m_pData->tFPTime.wMinute, pAdd->tFPTime.wYear, pAdd->tFPTime.wMonth, pAdd->tFPTime.wDay, pAdd->tFPTime.wHour, pAdd->tFPTime.wMinute, m_pData->szFPNum, pAdd->szFPNum,m_pData->szFPDetail, m_strFPDetail);
}
}
break;
case 5: //发票已寄出
lTemp = m_L_FPStatus.GetCurSel();
if (lTemp == m_pData->lFPStatus)
{
MessageBox(_T("看起来什么值也没改变,请检查【发票状态】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_FPSTATUS)->SetFocus();
bContinue = false;
}
else
{
pAdd->lFPStatus = lTemp;
_stprintf(pAdd->data.szOperMsg, _T("发票已寄出:%d->%d"), m_pData->lFPStatus, pAdd->lFPStatus);
}
break;
case 6: //删除开票信息
if (m_strBZ.GetLength() < 4)
{
MessageBox(_T("【删除开票信息】,必须输入原因,请录入!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_BZ)->SetFocus();
bContinue = false;
}
else
{
pAdd->lFPStatus = m_L_FPStatus.GetCurSel();
_tcscpy(pAdd->szFPNum, m_strFPNum);
_tcscpy(pAdd->szFPUser, _T(""));
_tcscpy(pAdd->szFPActualType, _T(""));
memset(&pAdd->tFPTime, 0, sizeof(pAdd->tFPTime));
_tcscpy(pAdd->data.szBZ, m_strBZ);
_stprintf(pAdd->data.szOperMsg, _T("删除开票信息:%d->%d %s -> %s %04d.%02d.%02d %02d:%02d -> %04d.%02d.%02d %02d:%02d"), m_pData->lFPStatus, pAdd->lFPStatus,m_pData->szFPNum, pAdd->szFPNum, m_pData->tFPTime.wYear, m_pData->tFPTime.wMonth, m_pData->tFPTime.wDay, m_pData->tFPTime.wHour, m_pData->tFPTime.wMinute, pAdd->tFPTime.wYear, pAdd->tFPTime.wMonth, pAdd->tFPTime.wDay, pAdd->tFPTime.wHour, pAdd->tFPTime.wMinute);
}
break;
case 7: //修改核销收款
lTemp = !m_B_YS.GetCheck();
if (lTemp == m_pData->lYS &&
m_strPayMode == CString(m_pData->szPayMode) &&
m_tYSTime == COleDateTime(m_pData->tYSTime) &&
m_strBankPayer == CString(m_pData->szBankPayer) &&
m_strBankReference == CString(m_pData->szBankReferenceNum))
{
MessageBox(_T("看起来什么值也没改变,请检查【此款项已核销(已确认业绩)】【充值方式】【到款时间】【付款人】【流水码】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_YS)->SetFocus();
bContinue = false;
}
/*
if (bContinue)
{
if (m_tYSTime.GetStatus() == COleDateTime::valid && m_strBankReference.GetLength() <= 5)
{
MessageBox(_T("确认到款后,必须录入银行流水号 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_BANKREFERENCE)->SetFocus();
bContinue = false;
}
}
*/
if (bContinue)
{
if (lTemp == 0 && (m_tYSTime.GetStatus() == COleDateTime::invalid || m_tYSTime.GetStatus() == COleDateTime::null))
{
MessageBox(_T("必须有收款时间能将此款项核销(确认业绩) ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_YS)->SetFocus();
bContinue = false;
}
}
if (bContinue)
{
if (m_tYSTime.GetStatus() == COleDateTime::valid)
{
COleDateTimeSpan tDiff = COleDateTime::GetCurrentTime() - COleDateTime(m_tYSTime);
if (tDiff.GetDays() > 90 || tDiff.GetDays() < -30) //2个月前与1个月后
{
MessageBox(_T("修改的收款时间超过许可范围 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_YSTIME)->SetFocus();
bContinue = false;
}
}
}
if (bContinue)
{
pAdd->lYS = lTemp;
_tcscpy(pAdd->szPayMode, m_strPayMode);
_tcscpy(pAdd->szBankPayer, m_strBankPayer);
_tcscpy(pAdd->szBankReferenceNum, m_strBankReference);
m_tYSTime.GetAsSystemTime(pAdd->tYSTime);
_stprintf(pAdd->data.szOperMsg, _T("收款核销:%d->%d"), m_pData->lCB, lTemp);
}
break;
case 8: //修改充值信息
if (m_strPayMode == CString(m_pData->szPayMode) &&
m_tYSTime == COleDateTime(m_pData->tYSTime) &&
m_strBankPayer == CString(m_pData->szBankPayer) &&
m_strBankReference == CString(m_pData->szBankReferenceNum) )
{
MessageBox(_T("看起来什么值也没改变,请检查【充值方式】【到款时间】【付款人】【流水码】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_BANKREFERENCE)->SetFocus();
bContinue = false;
}
/*
if (bContinue)
{
if ( m_tYSTime.GetStatus()==COleDateTime::valid && m_strBankReference.GetLength() <= 5)
{
MessageBox(_T("确认到款后,必须录入银行流水号 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_BANKREFERENCE)->SetFocus();
bContinue = false;
}
}
*/
if (bContinue)
{
if (m_tYSTime.GetStatus() == COleDateTime::valid)
{
COleDateTimeSpan tDiff = COleDateTime::GetCurrentTime() - COleDateTime(m_tYSTime);
if (tDiff.GetDays() > 90 || tDiff.GetDays() < -30) //2个月前与1个月后
{
MessageBox(_T("修改的收款时间超过许可范围 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_YSTIME)->SetFocus();
bContinue = false;
}
}
}
if (bContinue)
{
_tcscpy(pAdd->szPayMode, m_strPayMode);
_tcscpy(pAdd->szBankPayer, m_strBankPayer);
_tcscpy(pAdd->szBankReferenceNum, m_strBankReference);
m_tYSTime.GetAsSystemTime(pAdd->tYSTime);
_stprintf(pAdd->data.szOperMsg, _T("收款信息:%s -> %s %s -> %s %04d.%02d.%02d %02d:%02d -> %04d.%02d.%02d %02d:%02d"),m_pData->szPayMode, pAdd->szPayMode,m_pData->szBankPayer, pAdd->szBankPayer,m_pData->szBankReferenceNum,pAdd->szBankReferenceNum, m_pData->tYSTime.wYear, m_pData->tYSTime.wMonth, m_pData->tYSTime.wDay, m_pData->tYSTime.wHour, m_pData->tYSTime.wMinute, pAdd->tYSTime.wYear, pAdd->tYSTime.wMonth, pAdd->tYSTime.wDay, pAdd->tYSTime.wHour, pAdd->tYSTime.wMinute);
}
break;
case 9: //修改赠送信息
{
int iLXRItem = m_L_LXRID.GetCurSel();
int iLXRID = 0;
CString strLXRName;
if (iLXRItem >= 0)
{
ANS_Corp_MemberData* pMember = (ANS_Corp_MemberData * )m_L_LXRID.GetItemData(iLXRItem);
if (pMember && pMember->lLXRID>0)
{
iLXRID = pMember->lLXRID;
strLXRName = pMember->szName;
}
}
if (iLXRID == m_pData->lLXRID &&
_ttof(m_strLPPrice) == m_pData->fLPPrice &&
m_L_LPType.GetCurSel() == m_pData->lLPType)
{
MessageBox(_T("看起来什么值也没改变,请检查【礼品类型】【礼品价值】【接受会员】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_LPTYPE)->SetFocus();
bContinue = false;
}
if (bContinue)
{
if (m_L_LPType.GetCurSel() > 0) //有赠送礼品
{
if (_ttof(m_strLPPrice) <= 0.0f)
{
MessageBox(_T("有赠送礼品,必须要录入礼品价值 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_LPPRICE)->SetFocus();
bContinue = false;
}
if (bContinue && iLXRID <= 0)
{
MessageBox(_T("有赠送礼品,必须要有赠送会员 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_LXRID)->SetFocus();
bContinue = false;
}
}
}
if (bContinue)
{
pAdd->lLPType = m_L_LPType.GetCurSel();
if (pAdd->lLPType == 0) //无赠送礼品
{
pAdd->fLPPrice = 0.0f;
pAdd->lLXRID = 0;
_tcscpy(pAdd->szLXRName, _T(""));
}
else
{
pAdd->fLPPrice = _ttol(m_strLPPrice);
pAdd->lLXRID = iLXRID;
_tcscpy(pAdd->szLXRName, strLXRName);
}
_stprintf(pAdd->data.szOperMsg, _T("赠送信息:%d -> %d %.2f -> %.2f %s -> %s"), m_pData->lLPType, pAdd->lLPType, m_pData->fLPPrice, pAdd->fLPPrice, m_pData->szLXRName, strLXRName);
}
}
break;
case 10: //修改充值时间
{
if (m_tPayTime == COleDateTime(m_pData->tPayTime))
{
MessageBox(_T("看起来什么值也没改变,请检查【充值时间】"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_PAYTIME)->SetFocus();
bContinue = false;
}
if (m_tPayTime.GetStatus() == COleDateTime::invalid ||
m_tPayTime.GetStatus() == COleDateTime::null)
{
MessageBox(_T("修改的充值时间有误 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_PAYTIME)->SetFocus();
bContinue = false;
}
if (bContinue)
{
if (m_tPayTime.GetStatus() == COleDateTime::valid)
{
COleDateTimeSpan tDiff = COleDateTime::GetCurrentTime() - COleDateTime(m_tPayTime);
if (tDiff.GetDays() > 60 || tDiff.GetDays() < -30) //2个月前与1个月后
{
MessageBox(_T("修改的充值时间超过许可范围 ,请修正!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_PAYTIME)->SetFocus();
bContinue = false;
}
}
}
if (bContinue)
{
m_tPayTime.GetAsSystemTime(pAdd->tPayTime);
_stprintf(pAdd->data.szOperMsg, _T("充值时间:%04d.%02d.%02d %02d:%02d -> %04d.%02d.%02d %02d:%02d"), m_pData->tPayTime.wYear, m_pData->tPayTime.wMonth, m_pData->tPayTime.wDay, m_pData->tPayTime.wHour, m_pData->tPayTime.wMinute, pAdd->tPayTime.wYear, pAdd->tPayTime.wMonth, pAdd->tPayTime.wDay, pAdd->tPayTime.wHour, pAdd->tPayTime.wMinute);
}
}
break;
case 11: //作废预开票
if (m_strBZ.GetLength() < 4)
{
MessageBox(_T("【作废预开票】,必须输入原因,请录入!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_BZ)->SetFocus();
bContinue = false;
}
else
{
if (m_pData->lYSType != 1)
{
MessageBox(_T("预开票类型有误,不能作废开票,请退出刷新后再试!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_YSTYPE)->SetFocus();
bContinue = false;
}
pAdd->lYSType = 2; //作废预开票
_tcscpy(pAdd->szPayMode, _T("预开票作废"));
}
break;
case 12: //确认预开票
if (m_pData->lYSType != 1)
{
MessageBox(_T("预开票类型有误,不能确认充值 ,请退出刷新后再试!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_YSTYPE)->SetFocus();
bContinue = false;
}
pAdd->lYSType = 0; //确认预充值
_tcscpy(pAdd->szPayMode, _T("应收"));
break;
case 13: //撤销本笔充值
if (m_strBZ.GetLength() < 4)
{
MessageBox(_T("【撤消本笔充值】,必须输入原因,请录入!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_BZ)->SetFocus();
bContinue = false;
}
else
{
if (m_pData->lYSType != 0)
{
MessageBox(_T("非应收充值,不能撤消充值 ,请退出刷新后再试!"), _T("提示"), MB_ICONINFORMATION);
GetDlgItem(IDC_PAY_DETAIL_YSTYPE)->SetFocus();
bContinue = false;
}
pAdd->lYSType = 2; //作废预开票
_tcscpy(pAdd->szPayMode, _T("撤消本笔充值"));
}
break;
}
if (!bContinue)
{
delete pAdd;
return;
}
else
{
m_pMainFrame->SendFrame(SMSFUNC_PAY_OPER_ADD, (BYTE*)pAdd, sizeof(REQ_Pay_Oper_Add));
}
}
CDialogEx::OnOK();
}
void DLG_Pay_Detail::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnCancel();
}
void DLG_Pay_Detail::SetParam(CMainFrame* pFrame, ANS_AllQuery_Report_Get* pGet, ANS_AllQuery_Report_Data* pData, ANS_Corp_MemberData* pMemberData, ANS_Pay_Oper_Data* pOperData, ANS_Corp_FPData* pFPData)
{
m_pMainFrame = pFrame;
m_pGet = pGet;
m_pData = pData;
m_pMemberData = pMemberData;
m_pOperData = pOperData;
m_pFPData = pFPData;
}
BOOL DLG_Pay_Detail::OnInitDialog()
{
CDialogEx::OnInitDialog();
CString str;
//基础信息
m_strPT = CK_AllQuery_Report::GetPTName(m_pData->lPTNum, true);
m_strAgentName = m_pData->szAgentName;
m_strUserType = CK_AllQuery_Report::GetUserType(m_pData->lUserType);
m_strPayType = CK_AllQuery_Report::GetPayType(m_pData->lPayType);
m_strCorpID.Format(_T("%d"), m_pData->lCorpID);
m_strYWY = m_pData->szYWYName;
m_strCorpName = m_pData->szCorpName;
//支付信息
m_strPayMan = m_pData->szCreateUser;
m_strYSType = CK_AllQuery_Report::GetYSType(m_pData->lYSType);
m_L_Test.SetCurSel(m_pData->lTest);
m_L_CB.SetCurSel(m_pData->lCB);
if (COleDateTime(m_pData->tPayTime).GetStatus() == COleDateTime::valid)
{
m_tPayTime = m_pData->tPayTime;
}
else
{
//m_tPayTime.SetStatus(COleDateTime::null);
m_tPayTime.SetDateTime(2000, 1, 1, 0, 0, 0);
}
m_strOverTime.Format(_T("%04d.%02d.%02d"), m_pData->tOvrTime.wYear, m_pData->tOvrTime.wMonth, m_pData->tOvrTime.wDay);
m_strPrice.Format(_T("%.2f"), m_pData->fPrice);
m_strPriceOne.Format(_T("%.4f"), m_pData->fPriceOne);
m_strPresent.Format(_T("%d"), m_pData->lPresent);
m_strSmsCount.Format(_T("%d"), m_pData->lSMSCount);
if ((m_pData->fPrice - m_pData->fLPPrice) != 0 && m_pData->lSMSCount != 0 )
m_strVipInt.Format(_T("%.4f"), (float)((m_pData->fPrice- m_pData->fLPPrice)/(float)m_pData->lSMSCount)); //暂时用推荐积分换成平均单价
m_strBalance.Format(_T("%d"), m_pData->lBalance);
//赠送信息
m_L_LPType.SetCurSel(m_pData->lLPType);
m_strLPPrice.Format(_T("%.2f"), m_pData->fLPPrice);
//添加会员名单
int iSel = -1;
for (int i = 0; i < m_pGet->lLXRCount; i++)
{
int iItem = m_L_LXRID.AddString(m_pMemberData[i].szName);
m_L_LXRID.SetItemData(iItem, (DWORD)(LPVOID *) & m_pMemberData[i]);
if (m_pData->lLXRID == m_pMemberData[i].lLXRID)
iSel = i;
}
if (iSel >= 0)
m_L_LXRID.SetCurSel(iSel);
//付款信息
m_strPayMode = m_pData->szPayMode;
if (COleDateTime(m_pData->tYSTime).GetStatus() == COleDateTime::valid)
{
m_tYSTime = m_pData->tYSTime;
}
else
{
m_tYSTime.SetStatus(COleDateTime::null);
}
m_strBankPayer = m_pData->szBankPayer;
m_strBankReference = m_pData->szBankReferenceNum;
m_B_YS.SetCheck(m_pData->lYS>0?false:true);
//m_B_YS.SetCheck(m_pData->lYS);
//发票信息
m_L_FPType.SetCurSel(m_pData->lFP);
m_L_FPStatus.SetCurSel(m_pData->lFPStatus);
if (COleDateTime(m_pData->tFPTime).GetStatus() == COleDateTime::valid)
{
m_tFPTime = m_pData->tFPTime;
}
else
{
m_tFPTime.SetStatus(COleDateTime::null);
}
m_strFPUser = m_pData->szFPUser;
m_strFPNum = m_pData->szFPNum;
m_strFPDetail = m_pData->szFPDetail;
m_strBZS = m_pData->szBZ;
if (m_pData->lUserType == 1) //代理商
{
GetDlgItem(IDC_PAY_DETAIL_CORPID_S)->SetWindowText(_T("代理商ID"));
GetDlgItem(IDC_PAY_DETAIL_CORPNAME_S)->SetWindowText(_T("代理名称"));
}
if (m_pData->lPayType == 9) //彩信
{
GetDlgItem(IDC_PAY_DETAIL_PRICEONE_S)->SetWindowText(_T("彩信单价"));
GetDlgItem(IDC_PAY_DETAIL_PRESENT_S)->SetWindowText(_T("彩信赠送"));
GetDlgItem(IDC_PAY_DETAIL_SMSCOUNT_S)->SetWindowText(_T("彩信总量"));
}
if (m_pGet->req.lOperType > 0) //为添加操作
{
((CEdit*)GetDlgItem(IDC_PAY_DETAIL_BZ))->SetReadOnly(false);
switch (m_pGet->req.lOperType)
{
case 1: //修改测试充值
m_L_Test.EnableWindow(true);
m_L_Test.SetCurSel(m_pGet->req.lOperNewValue);
break;
case 2: //修改成本充值
m_L_CB.EnableWindow(true);
m_L_CB.SetCurSel(m_pGet->req.lOperNewValue);
break;
case 3: //修改开票信息
m_L_FPType.EnableWindow(true);
GetDlgItem(IDC_PAY_DETAIL_FPSELECT)->EnableWindow(true);
((CEdit*)GetDlgItem(IDC_PAY_DETAIL_FPDETAIL))->SetReadOnly(false);
break;
case 4: //开具发票
m_L_FPType.EnableWindow(true);
if ( m_pData->lFPStatus==0) //如果是未开票的,变为已开票
m_L_FPStatus.SetCurSel(1);
if ( m_tFPTime.GetStatus()== COleDateTime::invalid ||
m_tFPTime.GetStatus() == COleDateTime::null)
m_tFPTime = COleDateTime::GetCurrentTime();
GetDlgItem(IDC_PAY_DETAIL_FPSELECT)->EnableWindow(true);
GetDlgItem(IDC_PAY_DETAIL_FPTIME)->EnableWindow(true);
GetDlgItem(IDC_PAY_DETAIL_FPCONFIRM)->EnableWindow(true);
((CEdit*)GetDlgItem(IDC_PAY_DETAIL_FPDETAIL))->SetReadOnly(false);
((CEdit*)GetDlgItem(IDC_PAY_DETAIL_FPNUM))->SetReadOnly(false);
break;
case 5: //发票已寄出
m_L_FPStatus.EnableWindow(true);
m_L_FPStatus.SetCurSel(m_pGet->req.lOperNewValue);
break;
case 6: //删除开票信息
m_L_FPStatus.SetCurSel(0); //变为未开票
m_tFPTime.SetStatus(COleDateTime::null);
m_strFPNum = _T("");
break;
case 7: //修改收款核销
m_B_YS.EnableWindow(true);
m_B_YS.SetCheck(m_pGet->req.lOperNewValue > 0 ? false : true);
GetDlgItem(IDC_PAY_DETAIL_PAYMODE)->EnableWindow(true);
GetDlgItem(IDC_PAY_DETAIL_YSTIME)->EnableWindow(true);
((CEdit*)GetDlgItem(IDC_PAY_DETAIL_BANKPAYER))->SetReadOnly(false);
((CEdit*)GetDlgItem(IDC_PAY_DETAIL_BANKREFERENCE))->SetReadOnly(false);
if (m_tYSTime.GetStatus() == COleDateTime::invalid ||
m_tYSTime.GetStatus() == COleDateTime::null)
m_tYSTime = COleDateTime::GetCurrentTime();
break;
case 8: //修改收款信息
GetDlgItem(IDC_PAY_DETAIL_PAYMODE)->EnableWindow(true);
GetDlgItem(IDC_PAY_DETAIL_YSTIME)->EnableWindow(true);
((CEdit*)GetDlgItem(IDC_PAY_DETAIL_BANKPAYER))->SetReadOnly(false);
((CEdit*)GetDlgItem(IDC_PAY_DETAIL_BANKREFERENCE))->SetReadOnly(false);
if (m_tYSTime.GetStatus() == COleDateTime::invalid ||
m_tYSTime.GetStatus() == COleDateTime::null)
m_tYSTime = COleDateTime::GetCurrentTime();
break;
case 9: //修改赠送信息
GetDlgItem(IDC_PAY_DETAIL_LPTYPE)->EnableWindow(true);
GetDlgItem(IDC_PAY_DETAIL_LPPRICE)->EnableWindow(true);
GetDlgItem(IDC_PAY_DETAIL_LXRID)->EnableWindow(true);
break;
case 10: //修改充值时间
GetDlgItem(IDC_PAY_DETAIL_PAYTIME)->EnableWindow(true);
break;
case 11: //作废预开票
m_strYSType = _T("作废预开票");
break;
case 12: //确认预开票
m_strYSType = _T("确认预开票");
break;
case 13: //撤销本笔充值
m_strYSType = _T("撤消本笔充值");
break;
}
CString strTitle;
strTitle.Format(_T("请输入【%s】操作的原因"), GetPayOperType(m_pGet->req.lOperType));
GetDlgItem(IDC_PAY_DETAIL_BZ_S)->SetWindowText(strTitle);
GetDlgItem(IDC_PAY_DETAIL_BZ_S)->GetFocus();
}
//显示操作记录
//初始化List
m_Image.Create(16, 16, ILC_COLOR16 | ILC_MASK, 5, 5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LIST));
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("序号,60; 操作类型,150;操作帐号,100; 操作时间,160; 操作内容,300; 备注,300;"));
m_wndList.SetGridLines(true);
int iRow = 0;
for (int i = 0; i < m_pGet->lOperCount; i++)
{
#ifdef SMSMANAGER_KF //如果是客服开票平台,只显示与开票相关的操作
if (m_pOperData[i].lOperType == 3 || //修改开票信息
m_pOperData[i].lOperType == 4 || //开具发票
m_pOperData[i].lOperType == 5 || //发票已寄出
m_pOperData[i].lOperType == 6 ) //删除开票信息
{
#endif
str.Format(_T("%d"), iRow + 1);
m_wndList.InsertItem(iRow, str, 0);
int iIndex = 1;
m_wndList.SetItemText(iRow, iIndex++, GetPayOperType(m_pOperData[i].lOperType));
m_wndList.SetItemText(iRow, iIndex++, m_pOperData[i].szCreateUser);
str.Format(_T("%04d.%02d.%02d %02d:%02d"), m_pOperData[i].tCreateTime.wYear, m_pOperData[i].tCreateTime.wMonth, m_pOperData[i].tCreateTime.wDay, m_pOperData[i].tCreateTime.wHour, m_pOperData[i].tCreateTime.wMinute);
m_wndList.SetItemText(iRow, iIndex++, str);
m_wndList.SetItemText(iRow, iIndex++, m_pOperData[i].szOperMsg);
m_wndList.SetItemText(iRow, iIndex++, m_pOperData[i].szBZ);
m_wndList.SetItemData(iRow, (DWORD)(LPVOID)&m_pOperData[i]);
iRow++;
#ifdef SMSMANAGER_KF
}
#endif
}
#ifdef SMSMANAGER_KF
GetDlgItem(IDC_PAY_DETAIL_YS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_PRICEONE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_PRESENT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_SMSCOUNT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_VIPINT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_BALANCE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_PRICEONE_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_PRESENT_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_SMSCOUNT_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_VIPINT_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_BALANCE_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_LP_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_LPTYPE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_LPPRICE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_LXRID)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_LPTYPE_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_LPPRICE_S)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PAY_DETAIL_LXRID_S)->ShowWindow(SW_HIDE);
#endif
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
CString DLG_Pay_Detail::GetPayOperType(int lOperType)
{
CString str = _T("");
switch (lOperType)
{
case 1:
str = _T("修改测试充值");
break;
case 2:
str = _T("修改成本充值");
break;
case 3:
str = _T("修改开票信息");
break;
case 4:
str = _T("开具发票");
break;
case 5:
str = _T("发票已寄出");
break;
case 6:
str = _T("删除开票信息");
break;
case 7:
str = _T("收款核销");
break;
case 8:
str = _T("修改收款信息");
break;
case 9:
str = _T("修改赠送信息");
break;
case 10:
str = _T("修改充值时间");
break;
case 11:
str = _T("作废预开票");
break;
case 12:
str = _T("确认预开票");
break;
case 13:
str = _T("撤消本笔充值");
break;
default:
str = _T("未知客户操作类型");
break;
}
return str;
}
void DLG_Pay_Detail::OnDblclkPayDetailList(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
*pResult = 0;
long lItem = m_wndList.GetFirstSelectedItem();
if (lItem >= 0)
{
ANS_Pay_Oper_Data* pData = (ANS_Pay_Oper_Data*)(LPVOID)m_wndList.GetItemData(lItem);
if (pData && pData->lOperID>0)
{
DLG_Pay_Oper_Detail dlg(this);
dlg.SetParam(pData);
dlg.DoModal();
}
}
}
void DLG_Pay_Detail::OnBnClickedPayDetailFpselect()
{
CMenu menu;
menu.CreatePopupMenu();
CString str;
for (int i = 0; i < m_pGet->lFPCount;i++)
{
str.Format(_T("%s-%s"), DLG_Corp_FP::GetFPType2(m_pFPData[i].lFPType), m_pFPData[i].szCorpName);
if (m_pFPData[i].bDefaultFP)
str.Append(_T("(默认)"));
menu.AppendMenu(MF_STRING, MENU_PAY_DETAIL_FPSELECT_BEGIN+i, str);
}
//显示菜单
POINT pt;
RECT rect = { 0 };
GetDlgItem(IDC_PAY_DETAIL_FPSELECT)->GetWindowRect(&rect);
//::GetCursorPos(&pt);
pt.x = rect.left;
pt.y = rect.bottom;
//this->ReportToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this, NULL);
menu.DestroyMenu();
}
void DLG_Pay_Detail::OnFPSelect(UINT nID)
{
int iID = nID;
int iBegin = MENU_PAY_DETAIL_FPSELECT_BEGIN;
int iIndex = iID - iBegin;
if (iIndex < 0 || iIndex >= m_pGet->lFPCount)
return;
ANS_Corp_FPData* pFPData = &m_pFPData[iIndex];
if (pFPData->lFPID < 0)
return;
UpdateData(true);
m_L_FPType.SetCurSel(pFPData->lFPType);
//生成发票抬头信息
//m_strFPDetail = _T("发票类型:");
//m_strFPDetail.Append(DLG_Corp_FP::GetFPType2(pFPData->lFPType));
//m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail = _T("特殊需求:");
//m_strFPDetail.Append(DLG_Corp_FP::GetFPType2(pFPData->lFPType));
m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail.Append(_T("发票抬头:"));
m_strFPDetail.Append(pFPData->szCorpName);
m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail.Append(_T("统一信用代码:"));
m_strFPDetail.Append(pFPData->szCorpTaxID);
m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail.Append(_T("地 址、电 话:"));
m_strFPDetail.Append(pFPData->szCorpAddress);
m_strFPDetail.Append(_T(" "));
m_strFPDetail.Append(pFPData->szCorpTel);
m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail.Append(_T("开户行及账号:"));
m_strFPDetail.Append(pFPData->szCorpBank);
m_strFPDetail.Append(_T(" "));
m_strFPDetail.Append(pFPData->szCorpBankNo);
m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail.Append(_T("备注:"));
m_strFPDetail.Append(pFPData->szBZ);
m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail.Append(_T("收件人、邮箱:"));
m_strFPDetail.Append(pFPData->szPostName);
m_strFPDetail.Append(_T(" "));
m_strFPDetail.Append(pFPData->szPostEmail);
m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail.Append(_T("地址、邮编:"));
m_strFPDetail.Append(pFPData->szPostAddress);
m_strFPDetail.Append(_T(" "));
m_strFPDetail.Append(pFPData->szPostCode);
m_strFPDetail.Append(_T("\r\n"));
m_strFPDetail.Append(_T("手机、电话:"));
m_strFPDetail.Append(pFPData->szPostMobile);
m_strFPDetail.Append(_T(" "));
m_strFPDetail.Append(pFPData->szPostTel);
m_strFPDetail.Append(_T("\r\n"));
UpdateData(false);
}
void DLG_Pay_Detail::OnSelchangePayDetailLptype()
{
int iSel = m_L_LPType.GetCurSel();
if (iSel == 0) //没赠送礼品
{
UpdateData(true);
m_strLPPrice = _T("");
m_L_LXRID.SetCurSel(-1);
UpdateData(false);
}
}