// DlgServiceTrackingInfo.cpp : 实现文件 // #include "stdafx.h" #include "YLGL.h" #include "DlgServiceTrackingInfo.h" // CDlgServiceTrackingInfo 对话框 IMPLEMENT_DYNAMIC(CDlgServiceTrackingInfo, CDialog) CDlgServiceTrackingInfo::CDlgServiceTrackingInfo(CWnd* pParent /*=NULL*/) : CDialog(CDlgServiceTrackingInfo::IDD, pParent),m_pAryString(NULL) , m_strOrderTaker(_T("")) , m_strReceiptItem(_T("")) , m_strReceivables(_T("")) , m_strReceived(_T("")) , m_bModify(FALSE) { } CDlgServiceTrackingInfo::~CDlgServiceTrackingInfo() { } void CDlgServiceTrackingInfo::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST2, m_list); DDX_Text(pDX, TX_ORDER, m_strOrder); DDX_Text(pDX, TX_ORDER_TAKER, m_strOrderTaker); DDX_Text(pDX, TX_RECEIPT_ITEM, m_strReceiptItem); DDX_Text(pDX, TX_RECEIVABLES, m_strReceivables); DDX_Text(pDX, TX_RECEIVED, m_strReceived); DDX_Control(pDX, IDC_COMBO1, m_cbox_state); DDX_Control(pDX, CBOX_PICKUPMAN, m_cbox_pickup_man); DDX_Control(pDX, CBOX_ORDER_TAKER, m_cbox_order_taker); } BEGIN_MESSAGE_MAP(CDlgServiceTrackingInfo, CDialog) ON_WM_CTLCOLOR() ON_BN_CLICKED(BTN_ADD_RECORD, &CDlgServiceTrackingInfo::OnBnClickedAddRecord) ON_BN_CLICKED(BTN_FLAT_RECEIVED, &CDlgServiceTrackingInfo::OnBnClickedFlatReceived) ON_CBN_CLOSEUP(CBOX_ORDER_TAKER, &CDlgServiceTrackingInfo::OnCbnCloseupOrderTaker) END_MESSAGE_MAP() // CDlgServiceTrackingInfo 消息处理程序 BOOL CDlgServiceTrackingInfo::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 CenterWindow(); m_cbox_state.AddString(_T("未服务")); m_cbox_state.AddString(_T("服务中")); m_cbox_state.AddString(_T("服务完成")); // 初始化list列头; m_list.SetHeadings( _T("时间, 60"), _T("人员, 120"), _T("内容, 120"), NULL); if ( m_pAryString != NULL ) { // id; m_strId = m_pAryString->ElementAt(0); // 订单号; m_strOrder = m_pAryString->ElementAt(1); // 收款项目(服务项目); m_strReceiptItem = m_pAryString->ElementAt(5); // 应收款; m_strReceivables = m_pAryString->ElementAt(6); // 实收款; m_strReceived = m_pAryString->ElementAt(7); // 接单人; m_strOrderTaker = m_pAryString->ElementAt(9); // 对接人; CString strPickupMan = m_pAryString->ElementAt(11); // 服务状态; m_strServiceState = m_pAryString->ElementAt(13); // 当实收款 > 应收款时,平账按钮可用; //GetDlgItem(BTN_FLAT_RECEIVED)->EnableWindow(_tstoi(m_strReceived) > _tstoi(m_strReceivables) ? TRUE : FALSE); m_cbox_state.SelectString(0, m_strServiceState); m_cbox_pickup_man.RefDroppedWidth(); int nSelectedItem = m_cbox_pickup_man.FindString(0, strPickupMan); if ( nSelectedItem == CB_ERR ) m_cbox_pickup_man.AddString(strPickupMan); m_cbox_pickup_man.SetCurSel(m_cbox_pickup_man.FindString(0, strPickupMan)); // 接单人空,可设置接单人; if ( !m_strOrderTaker.IsEmpty() ) { m_cbox_order_taker.ShowWindow(FALSE); GetDlgItem(TX_ORDER_TAKER)->ShowWindow(TRUE); } else { m_cbox_order_taker.ShowWindow(TRUE); GetDlgItem(TX_ORDER_TAKER)->ShowWindow(FALSE); } UpdateData(FALSE); } GetServiceTrackingRecord(); GetDlgItem(BTN_FLAT_RECEIVED)->EnableWindow(IsHasRights2new(54)); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDlgServiceTrackingInfo::OnOK() // 保存,修改服务状态; { // TODO: 在此添加专用代码和/或调用基类 if ( m_cbox_state.GetCurSel() != CB_ERR ) { m_cbox_state.GetLBText(m_cbox_state.GetCurSel(),m_strServiceState); if ( m_strServiceState == _T("服务完成") && ( _tstoi(m_strReceivables) != _tstoi(m_strReceived) )) { AfxMessageBox(_T("欠款用户不能标记服务完成!")); return; } m_strPickupMan = _T(""); if ( m_cbox_pickup_man.GetCurSel() != CB_ERR ) m_cbox_pickup_man.GetLBText(m_cbox_pickup_man.GetCurSel(), m_strPickupMan); if ( m_strServiceState == _T("服务中") && m_strPickupMan.IsEmpty()) { AfxMessageBox(_T("服务中必须选择对接人员!")); return; } CString strSQL; m_strPickupDept = DAL::GetStaffDepartment(m_strPickupMan); if ( m_strId == m_strOrder ) { strSQL.Format(_T("update dindan set pick_up_man = '%s', pick_up_dept = '%s', service_state = '%s' where id = '%s'"), m_strPickupMan, m_strPickupDept, m_strServiceState, m_strOrder); } else { strSQL.Format(_T("update dindanbukuan2 set pick_up_man = '%s', pick_up_dept = '%s', service_state = '%s' where autoid = %s"), m_strPickupMan, m_strPickupDept, m_strServiceState, m_strId); } g_sendhead.bsql = TRUE; g_pMainWnd->ProcessChatMessageRequest2(strSQL); m_bModify = TRUE; // 标记已修改, 要刷新; if (g_bSendOK == 0) return; AfxMessageBox(_T("保存成功")); } } HBRUSH CDlgServiceTrackingInfo::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 switch(nCtlColor) { case CTLCOLOR_DLG: { return CreateSolidBrush(g_clr_dlg); } break; case CTLCOLOR_BTN: break; case CTLCOLOR_STATIC: { pDC->SetBkMode(TRANSPARENT); return CreateSolidBrush(g_clr_dlg); } break; } // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; } void CDlgServiceTrackingInfo::OnBnClickedAddRecord() { // TODO: 在此添加控件通知处理程序代码 CString strWord = _T(""); GetDlgItemText(TX_RECORD, strWord); if ( strWord.IsEmpty() ) return; CString strSQL = _T(""); strSQL.Format(_T("insert into service_tracking_record(type, id, [time], [staff], [record])values('%s', '%s', '%s', '%s', '%s')"), m_strId == m_strOrder ? _T("订单") : _T("加挑"), m_strId, CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S")), g_user.name, strWord); g_sendhead.bsql = TRUE; g_pMainWnd->ProcessChatMessageRequest2(strSQL); m_bModify = TRUE; // 标记已修改, 要刷新; if (g_bSendOK == 0) return; GetServiceTrackingRecord(); } void CDlgServiceTrackingInfo::GetServiceTrackingRecord() { CString strSQL; strSQL.Format(_T("type = '%s' and id = '%s'"), m_strId == m_strOrder ? _T("订单") : _T("加挑"), m_strId); g_sendhead.bsql = 0; g_sendhead.code[0] = 236; g_sendhead.tabcount = 1; g_pMainWnd->ProcessChatMessageRequest2(strSQL); if (g_bSendOK == 0) return; CArray AryRecord; DataToArray(&AryRecord); m_list.m_AryList.RemoveAll(); m_list.DeleteAllItems(); m_list.m_AryList.SetSize(AryRecord.GetSize()); for (int i = 0; i < AryRecord.GetSize(); i++) { m_list.m_AryList.ElementAt(i).RemoveAll(); m_list.m_AryList.ElementAt(i).Add(AryRecord.ElementAt(i).ElementAt(2)); m_list.m_AryList.ElementAt(i).Add(AryRecord.ElementAt(i).ElementAt(3)); m_list.m_AryList.ElementAt(i).Add(AryRecord.ElementAt(i).ElementAt(4)); } m_list.SetItemCountEx(m_list.m_AryList.GetSize()); } void CDlgServiceTrackingInfo::OnBnClickedFlatReceived() // 平账按钮; { CString strSQL; CString strLogContent; if ( m_strId == m_strOrder ) { strSQL.Format(_T("update dindan set amount_received = '%s' where id = '%s'"), m_strReceivables, m_strId); strLogContent.Format(_T("订单号:%s, 原实收款:%s"), m_strId, m_strReceived); } else { strSQL.Format(_T("update dindanbukuan2 set amount_received = '%s' where autoid = %s"), m_strReceivables, m_strId); strLogContent.Format(_T("订单号:%s, 加挑物品:%s, 原实收款:%s"), m_strId, m_strReceiptItem, m_strReceived); } g_sendhead.bsql = TRUE; g_pMainWnd->ProcessChatMessageRequest2(strSQL); if (g_bSendOK == 0) return; WriteLog(_T("平账日志"), _T("平账操作"), g_user.name, strLogContent); m_strReceived = m_strReceivables; UpdateData(FALSE); m_bModify = TRUE; AfxMessageBox(_T("平账成功!")); } void CDlgServiceTrackingInfo::OnCbnCloseupOrderTaker() { CString strOrderTaker = _T(""); if ( m_cbox_order_taker.GetCurSel() != CB_ERR ) m_cbox_order_taker.GetLBText(m_cbox_order_taker.GetCurSel(), strOrderTaker); if ( !strOrderTaker.IsEmpty()) { CString strSQL; CString strLogContent; if ( m_strId == m_strOrder ) {// 订单; strSQL.Format(_T("update [dindan] set [ren] = '%s', [bm] = '%s' where [id] = '%s'"), strOrderTaker, DAL::GetStaffDepartment(strOrderTaker), m_strId); strLogContent.Format(_T("订单号:%s"),m_strId); } else {// 加挑; strSQL.Format(_T("update [dindanbukuan2] set [order_taker] = '%s', [order_taker_dept] = '%s' where [autoid] = %s"), strOrderTaker, DAL::GetStaffDepartment(strOrderTaker), m_strId); strLogContent.Format(_T("订单号:%s, 加挑物品:%s"), m_strId, m_strReceiptItem); } g_sendhead.bsql = TRUE; g_pMainWnd->ProcessChatMessageRequest2(strSQL); if (g_bSendOK == 0) return; AfxMessageBox(_T("重选接单人成功!")); WriteLog(_T("普通日志"), _T("重选接单人"), g_user.name, strLogContent); GetServiceTrackingRecord(); } }