// DLG_Corp_FP.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "DLG_Corp_FP.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_Corp_FP dialog #include "DLG_Corp_FP_Modify.h" #include "DLG_Corp_LXR_SF.h" DLG_Corp_FP::DLG_Corp_FP(CWnd* pParent /*=NULL*/) : CDialog(DLG_Corp_FP::IDD, pParent) , m_strCorpAddress(_T("")) , m_strCorpPostCode(_T("")) , m_strAgentName(_T("")) , m_strYWYName(_T("")) { //{{AFX_DATA_INIT(DLG_Corp_FP) m_strCorpName = _T(""); m_strSMSNum = _T(""); //}}AFX_DATA_INIT m_lModifyCount = 0; m_lLXRCount = 0; memset( &m_FPReq , 0 , sizeof(m_FPReq) ); m_pLXRData = NULL; m_pLXR_YWYData = NULL; m_lCorpType = 0; m_pSFDlg = NULL; } void DLG_Corp_FP::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_Corp_FP) DDX_Control(pDX, IDC_CORP_FP_LIST, m_wndList); DDX_Text(pDX, IDC_CORP_FP_CORPNAME, m_strCorpName); DDX_Text(pDX, IDC_CORP_FP_SMSNUM, m_strSMSNum); //}}AFX_DATA_MAP DDX_Text(pDX, IDC_CORP_FP_CORPADDRESS, m_strCorpAddress); DDX_Text(pDX, IDC_CORP_FP_CORPPOSTCODE, m_strCorpPostCode); DDX_Text(pDX, IDC_CORP_FP_AGENTNAME, m_strAgentName); DDX_Text(pDX, IDC_CORP_FP_YWYNAME, m_strYWYName); } BEGIN_MESSAGE_MAP(DLG_Corp_FP, CDialog) //{{AFX_MSG_MAP(DLG_Corp_FP) ON_NOTIFY(NM_DBLCLK, IDC_CORP_FP_LIST, OnDblclkCorpLxrList) ON_BN_CLICKED(IDC_CORP_FP_MODIFY, OnCorpLxrModify) ON_BN_CLICKED(IDC_CORP_FP_ADD, OnCorpLxrAdd) ON_BN_CLICKED(IDC_CORP_FP_DEL, OnCorpLxrDel) //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, &DLG_Corp_FP::OnBnClickedOk) ON_BN_CLICKED(IDC_CORP_FP_SF, &DLG_Corp_FP::OnBnClickedCorpFpSf) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_Corp_FP message handlers void DLG_Corp_FP::SetParam(ANS_Corp_FP LXR , ANS_Corp_FPData *pLXRData , long lCorpType, ANS_Corp_LXR_YWYData * pYWYData) { m_lLXRCount = LXR.lCount; m_FPReq = LXR; m_pLXRData = pLXRData; m_pLXR_YWYData = pYWYData; m_lCorpType = lCorpType; } BOOL DLG_Corp_FP::OnInitDialog() { CDialog::OnInitDialog(); m_strCorpName = m_FPReq.szCorpName; m_strSMSNum = m_FPReq.szSMSNum; m_strCorpAddress = m_FPReq.szAddress; m_strCorpPostCode = m_FPReq.szPostCode; m_strAgentName = m_FPReq.szAgentName; m_strYWYName = m_FPReq.szYWYName; 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(); m_wndList.SetHeadings(_T("序号,50; 默认,60; 发票类型,90; 发票抬头,250; 纳税人识别号,100; 收票邮箱,200;录入用户,80; 录入日期,90;")); m_wndList.SetGridLines(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); POSITION pos; TCHAR Buf[32]; CString str; for ( int i = 0 ; i< m_lLXRCount ; i++ ) { ANS_Corp_FPData * pData = new ANS_Corp_FPData; *pData = m_pLXRData[i]; pos = m_FP.AddTail( pData ); _stprintf( Buf , _T("%d") , i+1 ); m_wndList.InsertItem( i , Buf , 0 ); m_wndList.SetItemData( i , (DWORD)pos); int iTemp=1; if ( pData->bDefaultFP ) m_wndList.SetItemText( i , iTemp++ , _T(" 是") ); else iTemp++; m_wndList.SetItemText( i , iTemp++ , GetFPType(pData->lFPType) ); m_wndList.SetItemText( i , iTemp++ , pData->szCorpName ); m_wndList.SetItemText( i , iTemp++ , pData->szCorpTaxID ); m_wndList.SetItemText( i , iTemp++ , pData->szPostEmail); m_wndList.SetItemText( i , iTemp++ , pData->szCreateUser ); str.Format( _T("%04d.%02d.%02d") ,pData->tCreateTime.wYear,pData->tCreateTime.wMonth,pData->tCreateTime.wDay ); m_wndList.SetItemText( i , iTemp++ , str ); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_Corp_FP::OnDblclkCorpLxrList(NMHDR* pNMHDR, LRESULT* pResult) { OnCorpLxrModify(); *pResult = 0; } void DLG_Corp_FP::OnCorpLxrModify() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_FPData * pData = m_FP.GetNext( pos ); if (pData) { DLG_Corp_FP_Modify dlg(this); dlg.SetParam( *pData,pos2); if ( dlg.DoModal() == IDOK ) { *pData = dlg.GetParam(); //取得修改过后的值 //m_wndList.SetHeadings(_T("序号,50; 默认,60; 发票类型,90; 发票抬头,150; 纳税人识别号,100;录入用户,80; 录入日期,90;")); CString str; int iTemp=1; if ( pData->bDefaultFP ) m_wndList.SetItemText( lItem , iTemp++ , _T(" 是") ); else m_wndList.SetItemText( lItem , iTemp++ , _T("") ); m_wndList.SetItemText( lItem , iTemp++ , GetFPType(pData->lFPType) ); m_wndList.SetItemText( lItem , iTemp++ , pData->szCorpName ); m_wndList.SetItemText( lItem , iTemp++ , pData->szCorpTaxID ); m_wndList.SetItemText( lItem , iTemp++ , pData->szPostEmail); m_wndList.SetItemText( lItem , iTemp++ , pData->szCreateUser ); str.Format( _T("%04d.%02d.%02d") ,pData->tCreateTime.wYear,pData->tCreateTime.wMonth,pData->tCreateTime.wDay ); m_wndList.SetItemText( lItem , iTemp++ , str ); if ( pData->ucStatus == 0 ) { pData->ucStatus = CORP_FP_MODIFY; //需要修改 m_lModifyCount ++; //需要修改的记录增加 } } } } long DLG_Corp_FP::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void DLG_Corp_FP::OnCorpLxrAdd() { ANS_Corp_FPData LXRData={0}; LXRData.lCorpType = m_FPReq.lCorpType; _tcscpy(LXRData.szCorpName , m_FPReq.szCorpName); _tcscpy(LXRData.szCorpAddress,m_FPReq.szAddress); DLG_Corp_FP_Modify dlg(this); dlg.SetParam( LXRData,0); if ( dlg.DoModal() == IDOK ) { ANS_Corp_FPData * pData = new ANS_Corp_FPData; *pData = dlg.GetParam(); pData->ucStatus = CORP_FP_ADD; pData->lCorpType = m_lCorpType; m_lModifyCount ++; //需要修改的记录增加 POSITION pos = m_FP.AddTail( pData ); long lCount = m_wndList.GetItemCount(); TCHAR Buf[32]; _stprintf( Buf, _T("%d") , lCount +1 ); //设置新的数据 m_wndList.InsertItem( lCount , Buf , 0); m_wndList.SetItemData( lCount, (DWORD)pos ); CString str; int iTemp=1; if ( pData->bDefaultFP ) m_wndList.SetItemText( lCount , iTemp++ , _T(" 是") ); else iTemp++; m_wndList.SetItemText( lCount , iTemp++ , GetFPType(pData->lFPType) ); m_wndList.SetItemText( lCount , iTemp++ , pData->szCorpName ); m_wndList.SetItemText( lCount , iTemp++ , pData->szCorpTaxID); m_wndList.SetItemText( lCount , iTemp++ , pData->szPostEmail); m_wndList.SetItemText( lCount , iTemp++ , pData->szCreateUser ); m_wndList.SetItemText( lCount , iTemp++ , pData->szCorpTaxID ); str.Format( _T("%04d.%02d.%02d") ,pData->tCreateTime.wYear,pData->tCreateTime.wMonth,pData->tCreateTime.wDay ); m_wndList.SetItemText( lCount , iTemp++ , str ); } } void DLG_Corp_FP::OnCorpLxrDel() { long lCount = m_wndList.GetSelectedCount(); if ( lCount <= 0 ) return ; long lRet = MessageBox( _T("此操作将会删除开票信息,是否继续?") , _T("提问") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2); if ( lRet != IDYES ) return; long * lDel = new long[lCount]; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i=0; while ( pos ) { lDel[i] = m_wndList.GetNextSelectedItem(pos); i++; } for ( i = lCount-1 ; i>=0 ; i-- ) //倒转删除 { long lItem = lDel[i]; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); m_wndList.DeleteItem( lItem ); //删除 POSITION pos2 = pos; ANS_Corp_FPData * pData = m_FP.GetNext( pos ); if (pData) { if (pData->ucStatus == 0) { pData->ucStatus = CORP_FP_DEL; m_lModifyCount ++; //需要修改的记录增加 } else { pData->ucStatus = 0; m_lModifyCount --; //因为修改增加时会加1 } } } delete lDel; } CString DLG_Corp_FP::GetFPType(long lType) { CString str=_T("未知"); switch(lType) { case 0: str = _T(" 不开票"); break; 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; default: str = _T(" 未知"); break; } return str; } CString DLG_Corp_FP::GetFPType2(long lType) { CString str=_T(""); switch(lType) { case 0: str = _T(""); break; 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; default: str = _T("未知"); break; } return str; } void DLG_Corp_FP::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CDialog::OnOK(); } BOOL DLG_Corp_FP::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame) { if (pHead->lFuncType == SMSFUNC_CORP_SF_ADD || pHead->lFuncType == SMSFUNC_CORP_SF_CANCEL || pHead->lFuncType == SMSFUNC_CORP_SF_ROUTE) { //ANS_Corp_SF_Add * pAdd = (ANS_Corp_SF_Add *)pFrame; //ANS_Corp_SFData * pData = (ANS_Corp_SFData *)(pFrame + sizeof(ANS_Corp_SF_Add)); if (this->m_pSFDlg) { m_pSFDlg->ProcessSocket(pHead, pFrame); } return true; } return false; } void DLG_Corp_FP::OnBnClickedCorpFpSf() { if (m_lModifyCount>0) { MessageBox(_T("你已对联系人做过修改,请确定后再重新顺丰寄件!"), _T("提示"), MB_ICONINFORMATION); return; } long lItem = GetCurrentSelected(); if (lItem < 0) { MessageBox(_T("请先选中发票抬头,再开始顺丰寄件!"), _T("提示"), MB_ICONINFORMATION); return; } ANS_Corp_SFData sf = { 0 }; GetLocalTime(&sf.tCreate); //创建时间 sf.lStatus = 0; //状态,0-生成,1-已收件,2-已签收 sf.pay_method = 0; //付款方式:0:寄付月结,1:寄方付 2 : 收方付 3 : 第三方付 sf.express_type = 1; //顺丰特惠 sf.lCorpType = m_FPReq.lCorpType; //企业类型,0-终端客户,1-代理商。 sf.lCorpID = m_FPReq.lCorpID; //企业id或代理商ID sf.lPayType = m_FPReq.lPayType; //支付类型,0-非充值,1-短信充值,2-彩信充值,3-代理商短信充值,4-代理商彩信充值,5-功能开通充值,6-月结帐单,7-酬金帐单 sf.lPayID = m_FPReq.lPayID; //支付记录ID sf.fPrice = m_FPReq.fPrice; //发票金额 _tcscpy(sf.d_company, m_FPReq.szCorpName); _tcscpy(sf.d_address, m_FPReq.szAddress); _tcscpy(sf.d_post_code, m_FPReq.szPostCode); if (lItem >= 0) { POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_FPData * pData = m_FP.GetNext(pos); if (pData) { _tcscpy(sf.d_contact, pData->szPostName); _tcscpy(sf.d_tel, pData->szPostTel); _tcscpy(sf.d_mobile, pData->szPostMobile); _tcscpy(sf.d_address, pData->szPostAddress); _tcscpy(sf.d_post_code, pData->szPostCode); } } //_tcscpy(sf.Cargo_name, _T("合同")); //从联系人发起的,默认是合同 sf.Cargo_count = 1; //货物数量 DLG_Corp_LXR_SF dlg(this); m_pSFDlg = &dlg; dlg.SetParam(m_FPReq.lYWYCount, m_FPReq.lDefaultYWYID, m_pLXR_YWYData, sf, true); dlg.DoModal(); m_pSFDlg = NULL; }