SmsManager/CC_TDSet_Signature.cpp

566 lines
16 KiB
C++
Raw Normal View History

// CC_TDSet_Signature.cpp: 实现文件
//
#include "stdafx.h"
#include "SmsManager.h"
#include "afxdialogex.h"
#include "CC_TDSet_Signature.h"
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_C_TDSet_Signature_Upload.h"
// CC_TDSet_Signature 对话框
IMPLEMENT_DYNAMIC(CC_TDSet_Signature, CDialogEx)
CC_TDSet_Signature::CC_TDSet_Signature(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_C_TDSET_SIGNATURE, pParent)
, m_bAddTime(FALSE)
, m_tAddTimeBegin(COleDateTime::GetCurrentTime())
, m_bAuditTime(FALSE)
, m_tAuditTimeBegin(COleDateTime::GetCurrentTime())
, m_strKey(_T(""))
, m_bModifyTime(FALSE)
{
m_bInit = false;
m_bRefresh = false;
m_pMainFrame = NULL;
m_pSocket = NULL;
m_pDlgUpload = NULL;
}
CC_TDSet_Signature::~CC_TDSet_Signature()
{
}
void CC_TDSet_Signature::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Check(pDX, IDC_TDSET_SIGNATURE_ADDTIME, m_bAddTime);
DDX_DateTimeCtrl(pDX, IDC_TDSET_SIGNATURE_ADDTIME_TBEGIN, m_tAddTimeBegin);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_ADDTIME_TEND, m_tAddTimeEnd);
DDX_Check(pDX, IDC_TDSET_SIGNATURE_AUDITTIME, m_bAuditTime);
DDX_DateTimeCtrl(pDX, IDC_TDSET_SIGNATURE_AUDITYTIME_TBEGIN, m_tAuditTimeBegin);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_AUDITYTIME_TEND, m_tAuditTimeEnd);
DDX_Text(pDX, IDC_TDSET_SIGNATURE_KEY, m_strKey);
DDV_MaxChars(pDX, m_strKey, 30);
DDX_Check(pDX, IDC_TDSET_SIGNATURE_MODIFYTIME, m_bModifyTime);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_MODIFYTIME_TBEGIN, m_tModifyTimeBegin);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_MODIFYTIME_TEND, m_tModifyTimeEnd);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_LIST, m_wndList);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_OPERTYPE, m_L_OperType);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_STATUS, m_L_Status);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_TD, m_L_TD);
DDX_Control(pDX, IDC_TDSET_SIGNATURE_S1, m_S_S1);
}
BEGIN_MESSAGE_MAP(CC_TDSet_Signature, CDialogEx)
ON_WM_SIZE()
ON_WM_CLOSE()
ON_NOTIFY(NM_DBLCLK, IDC_TDSET_SIGNATURE_LIST, &CC_TDSet_Signature::OnDblclkTdsetSignatureList)
ON_NOTIFY(NM_RCLICK, IDC_TDSET_SIGNATURE_LIST, &CC_TDSet_Signature::OnRclickTdsetSignatureList)
ON_COMMAND(MENU_TDSET_SIGNATURE_SEE, On_User_See)
ON_COMMAND(MENU_TDSET_SIGNATURE_ADD, On_User_Add)
ON_COMMAND(MENU_TDSET_SIGNATURE_DEL, On_User_Del)
ON_COMMAND(MENU_TDSET_SIGNATURE_UPLOAD, On_User_Upload)
ON_COMMAND(MENU_TDSET_SIGNATURE_COPYDATA, On_User_CopyData)
END_MESSAGE_MAP()
BOOL CC_TDSet_Signature::ReShow(BOOL bRefresh)
{
ShowWindow(SW_SHOW);
if (bRefresh || !m_bRefresh)
{
RefreshInfo();
}
return true;
}
BOOL CC_TDSet_Signature::ReHide()
{
ShowWindow(SW_HIDE);
return true;
}
BOOL CC_TDSet_Signature::RefreshInfo()
{
if (!m_pMainFrame->GetUserPurview(PURVIEW_LIST))
{
return false;
}
#ifndef SMSMANAGER_KF
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB))
{
return false;
}
#endif
ANS_TD2SignatureTitle_See* pSee = new ANS_TD2SignatureTitle_See;
memset(pSee, 0, sizeof(ANS_TD2SignatureTitle_See));
m_pMainFrame->SendFrame(SMSFUNC_TD2SIGNATURETITLE_SEE, (BYTE*)pSee, sizeof(ANS_TD2SignatureTitle_See)); //取通道信息
return true;
}
void CC_TDSet_Signature::Close()
{
Close_TitleData();
Close_ListData();
}
void CC_TDSet_Signature::Close_TitleData()
{
//清除队列中的内容
while (!m_TitleData.IsEmpty())
{
ANS_TD2SignatureTitle_Data* pData = m_TitleData.GetHead();
m_TitleData.RemoveHead();
delete pData;
}
}
void CC_TDSet_Signature::Close_ListData()
{
//清除队列中的内容
while (!m_ListData.IsEmpty())
{
ANS_TD2Signature_Data* pData = m_ListData.GetHead();
m_ListData.RemoveHead();
delete pData;
}
}
BOOL CC_TDSet_Signature::OnInitDialog()
{
CDialogEx::OnInitDialog();
//取得共用参数
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame*)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//初始化List
m_Image.Create(24, 24, ILC_COLOR16 | ILC_MASK, 5, 5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_BLANK));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_YSK));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_YKP));
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_YCX));
m_wndList.SubClassWindow2();
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image, LVSIL_SMALL);
m_bInit = true;
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CC_TDSet_Signature::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类
CDialogEx::OnOK();
}
void CC_TDSet_Signature::OnCancel()
{
// TODO: 在此添加专用代码和/或调用基类
CDialogEx::OnCancel();
}
void CC_TDSet_Signature::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
if (m_bInit)
{
CRect rect;
m_S_S1.GetWindowRect(&rect);
m_wndList.MoveWindow(0, 0 + rect.Height() + 5, cx, cy - rect.Height() - 5);
}
}
void CC_TDSet_Signature::OnClose()
{
Close();
CDialogEx::OnClose();
}
void CC_TDSet_Signature::OnDblclkTdsetSignatureList(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
On_User_Modify();
}
void CC_TDSet_Signature::OnRclickTdsetSignatureList(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
ShowRMenu();
}
BOOL CC_TDSet_Signature::ProcessSocket(Socket_Head* pHead)
{
return false;
}
BOOL CC_TDSet_Signature::ProcessSocket(Socket_Head_Add* pHead, BYTE* pFrame)
{
CString strTemp;
CString str;
//查看签名报备信息
if (pHead->lFuncType == SMSFUNC_TD2SIGNATURE_SEE)
{
ANS_TD2Signature_See* pSee = (ANS_TD2Signature_See*)pFrame;
ANS_TD2Signature_Data* pData = (ANS_TD2Signature_Data*)(pFrame + sizeof(ANS_TD2Signature_See));
if (pSee->lCount > 0)
{
//strTemp.Format(_T("查询结果 (%d/%d)"), pSee->lPageCount, pSee->lPageAll);
//m_S_S1.SetWindowText(strTemp);
//添加到List
m_wndList.ShowWindow(SW_HIDE);
long lCount = m_wndList.GetItemCount();
for (int i = 0; i < pSee->lCount; i++)
{
ANS_TD2Signature_Data* pNewData = new ANS_TD2Signature_Data;
*pNewData = *pData;
POSITION pos = m_ListData.AddTail(pNewData);
int iIndex = 1;
strTemp.Format(_T("%d"), lCount + i + 1);
// m_wndList.SetHeadings(_T("序号,50; 平台,80;客户类型,80;充值类型,80;企业ID,80; 企业名称,180; 出单人,80;充值方式,80;充值金额,80; 费率,80;小计,70; 赠送,70; 短信量,70;预开票,55;应收,55;测试,55;成本,55;充值时间,130;过期时间,130;收款时间,130; 发票,80;发票状态,80;开票时间,130;赠送礼品,80;礼品价值,80;接受人,80;推荐积分,80; 备 注,130;客户经理,90; 代理商,130;本次余额,70;发票号码,120;实际开票类型,120;发票抬头,120;银行付款人,120;银行流水码,120;"));
m_wndList.InsertItem(lCount + i, strTemp, 0); //序号
m_wndList.SetItemData(lCount + i, (DWORD)pos); //存Pos
ShowDataInList(lCount + i, pData);
pData++;
}
m_wndList.ShowWindow(SW_SHOW);
}
return true;
}
//查看签名通道信息
if (pHead->lFuncType == SMSFUNC_TD2SIGNATURETITLE_SEE)
{
ANS_TD2SignatureTitle_See* pSee = (ANS_TD2SignatureTitle_See*)pFrame;
ANS_TD2SignatureTitle_Data* pData = (ANS_TD2SignatureTitle_Data*)(pFrame + sizeof(ANS_TD2SignatureTitle_See));
m_L_TD.ResetContent(); //删除原已有的企业
this->Close_TitleData(); //关闭原队列
long lItem;
CString strTemp;
lItem = m_L_TD.AddString(_T("所有通道"));
m_L_TD.SetItemData(lItem, (DWORD)-10);
for (int i = 0; i < pSee->lCount; i++)
{
ANS_TD2SignatureTitle_Data* pNewData = new ANS_TD2SignatureTitle_Data;
*pNewData = *pData;
POSITION pos = m_TitleData.AddTail(pNewData);
//strTemp.Format(_T("%d-%s"), pNewData->lYWYID, pNewData->szYWYName);
strTemp = pNewData->szSignatureTitle;
lItem = m_L_TD.AddString(strTemp);
m_L_TD.SetItemData( lItem , (DWORD)pos);
//m_L_TD.SetItemData(lItem, (DWORD)pNewData->iTDID);
pData++;
}
m_L_TD.SetCurSel(0);
m_bRefresh = true; //已经刷新过
return true;
}
if (pHead->lFuncType == SMSFUNC_TD2SIGNATURE_UPLOAD)
{
if (m_pDlgUpload)
{
m_pDlgUpload->ProcessSocket(pHead, pFrame);
}
}
return false;
}
long CC_TDSet_Signature::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if (pos)
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
BOOL CC_TDSet_Signature::ShowDataInList(long lItem, ANS_TD2Signature_Data* pData)
{
/*
try
{
CString strTemp;
CString str;
int iIndex = 1;
int iIconIndex = 0;
m_wndList.SetItemText(lItem, iIndex++, GetPTName(pData->lPTNum)); //平台号
m_wndList.SetItemText(lItem, iIndex++, GetUserType(pData->lUserType)); //客户类型
#ifndef SMSMANAGER_KF
m_wndList.SetItemText(lItem, iIndex++, GetPayType(pData->lPayType)); //充值类型
#endif
if (pData->lUserType == 1) //代理商
{
strTemp.Format(_T("A-%d"), pData->lCorpID);
}
else
{
strTemp.Format(_T("%d"), pData->lCorpID);
}
m_wndList.SetItemText(lItem, iIndex++, strTemp); //企业ID
if (m_iCorpNameIndex == 0) m_iCorpNameIndex = iIndex;
m_wndList.SetItemText(lItem, iIndex++, pData->szCorpName); //企业名称
#ifndef SMSMANAGER_KF
m_wndList.SetItemText(lItem, iIndex++, pData->szCreateUser); //出单人
#endif
m_wndList.SetItemText(lItem, iIndex++, pData->szPayMode); //充值方式
strTemp.Format(_T("%8.2f"), pData->fPrice);
if (m_iPriceIndex == 0) m_iPriceIndex = iIndex;
m_wndList.SetItemText(lItem, iIndex++, strTemp); //充值金额
#ifndef SMSMANAGER_KF
strTemp.Format(_T("%8.4f"), pData->fPriceOne);
m_wndList.SetItemText(lItem, iIndex++, strTemp); //单价
strTemp.Format(_T("%8d"), pData->lPresent);
if (m_iSmsPresentIndex == 0)m_iSmsPresentIndex = iIndex;
m_wndList.SetItemText(lItem, iIndex++, strTemp); //赠送
strTemp.Format(_T("%8d"), pData->lSMSCount);
if (m_iSmsCountIndex == 0) m_iSmsCountIndex = iIndex;
m_wndList.SetItemText(lItem, iIndex++, strTemp); //短信量
//改为显示平均单价
strTemp = _T("");
double l = 0.0f;
if ((pData->fPrice - pData->fLPPrice) != 0 && pData->lSMSCount != 0)
{
l = (pData->fPrice - pData->fLPPrice) / pData->lSMSCount;
strTemp.Format(_T("%8.4f"), l);
}
m_iSmsPriceOneIndex = iIndex;
m_wndList.SetItemText(lItem, iIndex++, strTemp); //平均单价
#endif
#ifndef SMSMANAGER_KF
m_wndList.SetItemText(lItem, iIndex++, GetYSType(pData->lYSType)); //预充票类型
if (pData->lYS == 1)
m_wndList.SetItemText(lItem, iIndex++, _T(""));
else
m_wndList.SetItemText(lItem, iIndex++, _T(""));;
if (pData->lTest == 1)
m_wndList.SetItemText(lItem, iIndex++, _T(""));
else
m_wndList.SetItemText(lItem, iIndex++, _T(""));;
#endif
strTemp.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tPayTime.wYear, pData->tPayTime.wMonth, pData->tPayTime.wDay, pData->tPayTime.wHour, pData->tPayTime.wMinute);
m_wndList.SetItemText(lItem, iIndex++, strTemp); //充值时间
#ifndef SMSMANAGER_KF
strTemp.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tOvrTime.wYear, pData->tOvrTime.wMonth, pData->tOvrTime.wDay, pData->tOvrTime.wHour, pData->tOvrTime.wMinute);
m_wndList.SetItemText(lItem, iIndex++, strTemp); //过期时间
strTemp.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tYSTime.wYear, pData->tYSTime.wMonth, pData->tYSTime.wDay, pData->tYSTime.wHour, pData->tYSTime.wMinute);
m_wndList.SetItemText(lItem, iIndex++, strTemp); //收款时间
#endif
if (pData->lFP > 0)
{
CString strType = DLG_Corp_FP::GetFPType2(pData->lFP);
m_wndList.SetItemText(lItem, iIndex++, strType); //发票类型
m_wndList.SetItemText(lItem, iIndex++, GetFPStatus(pData->lFPStatus)); //发票状态
if (pData->lFPStatus > 0)
{
strTemp.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tFPTime.wYear, pData->tFPTime.wMonth, pData->tFPTime.wDay, pData->tFPTime.wHour, pData->tFPTime.wMinute);
m_wndList.SetItemText(lItem, iIndex++, strTemp); //开票时间
}
else
{
m_wndList.SetItemText(lItem, iIndex++, _T(""));;
}
m_wndList.SetItemText(lItem, iIndex++, pData->szFPNum); //发票号码
}
else
{
m_wndList.SetItemText(lItem, iIndex++, _T(""));;
m_wndList.SetItemText(lItem, iIndex++, _T(""));;
m_wndList.SetItemText(lItem, iIndex++, _T(""));;
m_wndList.SetItemText(lItem, iIndex++, _T(""));;
}
#ifndef SMSMANAGER_KF
m_wndList.SetItemText(lItem, iIndex++, GetLPType(pData->lLPType)); //礼品类型
str.Format(_T("%.2f"), pData->fLPPrice);
if (m_iLPPresentIndex == 0) m_iLPPresentIndex = iIndex;
m_wndList.SetItemText(lItem, iIndex++, str); //礼品价格
m_wndList.SetItemText(lItem, iIndex++, pData->szLXRName); //礼品接收人
#endif
//m_wndList.SetItemText(lItem, iIndex++, pData->szBZ);
//_stprintf( Buf , _T(" %d") , pData->lAgentID );
//m_wndList.SetItemText(lItem, iIndex++, GetName_YWY(pData->lYWYID));
//m_wndList.SetItemText(lItem, iIndex++, GetName_Agent(pData->lAgentID));
m_wndList.SetItemText(lItem, iIndex++, pData->szYWYName);
#ifndef SMSMANAGER_KF
m_wndList.SetItemText(lItem, iIndex++, pData->szAgentName);
str.Format(_T("%d"), pData->lBalance);
m_wndList.SetItemText(lItem, iIndex++, str); //本次余额
//m_wndList.SetItemText(lItem, iIndex++, pData->szFPActualType); //实际开票类型
//m_wndList.SetItemText(lItem, iIndex++, pData->szFPDetail); //发票抬头
m_wndList.SetItemText(lItem, iIndex++, pData->szBankPayer); //银行付款人
m_wndList.SetItemText(lItem, iIndex++, pData->szBankReferenceNum); //银行流水号
#endif
iIconIndex = -1;
if (COleDateTime(pData->tYSTime).GetStatus() == COleDateTime::valid)
{
iIconIndex = 1;
}
if (pData->lYSType == 1)
iIconIndex = 2;
if (pData->lYSType == 2)
iIconIndex = 3;
m_wndList.SetIconIndex(lItem, iIconIndex);
return true;
}
catch (...)
{
}
*/
return false;
}
void CC_TDSet_Signature::ShowRMenu()
{
#ifdef SMSMANAGER_KF
if (!m_pMainFrame->GetUserPurview(PURVIEW_SP))
{
return;
}
#else
if (!m_pMainFrame->GetUserPurview(PURVIEW_TAB))
{
return;
}
#endif
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
ANS_TD2Signature_Data* pData = NULL;
if (lItem >= 0)
{
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
if ((long)pos >= 0)
{
pData = m_ListData.GetNext(pos);
}
}
menu.AppendMenu(MF_STRING, MENU_TDSET_SIGNATURE_ADD, _T(" 新 增 "));
menu.AppendMenu(MF_SEPARATOR);
if (pData)
{
menu.AppendMenu(MF_STRING, MENU_TDSET_SIGNATURE_SEE, _T(" 查 看 "));
menu.AppendMenu(MF_STRING, MENU_TDSET_SIGNATURE_MODIFY, _T(" 修 改 "));
menu.AppendMenu(MF_STRING, MENU_TDSET_SIGNATURE_DEL, _T(" 删 除 "));
menu.AppendMenu(MF_SEPARATOR);
}
menu.AppendMenu(MF_STRING, MENU_TDSET_SIGNATURE_UPLOAD, _T(" 上 传 "));
#ifndef SMSMANAGER_KF
if (lItem>=0)
{
menu.AppendMenu(MF_SEPARATOR);
menu.AppendMenu(MF_STRING, MENU_TDSET_SIGNATURE_COPYDATA, _T(" 复制数据 "));
}
#endif
//显示菜单
POINT pt;
::GetCursorPos(&pt);
//this->ReportToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this, NULL);
menu.DestroyMenu();
}
void CC_TDSet_Signature::On_User_CopyData()
{
this->m_wndList.CopyToClipboard();
}
void CC_TDSet_Signature::On_User_See()
{
}
void CC_TDSet_Signature::On_User_Add()
{
}
void CC_TDSet_Signature::On_User_Modify()
{
}
void CC_TDSet_Signature::On_User_Del()
{
}
void CC_TDSet_Signature::On_User_Upload()
{
DLG_C_TDSet_Signature_Upload dlg(this);
POSITION pos = NULL;
if (m_L_TD.GetCurSel() >= 0)
{
pos = (POSITION)m_L_TD.GetItemData(m_L_TD.GetCurSel());
}
dlg.SetParam(m_pMainFrame, &m_TitleData, pos);
m_pDlgUpload = &dlg;
dlg.DoModal();
m_pDlgUpload = NULL;
}