DlgServiceTrackingInfo.cpp 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. // DlgServiceTrackingInfo.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "YLGL.h"
  5. #include "DlgServiceTrackingInfo.h"
  6. // CDlgServiceTrackingInfo 对话框
  7. IMPLEMENT_DYNAMIC(CDlgServiceTrackingInfo, CDialog)
  8. CDlgServiceTrackingInfo::CDlgServiceTrackingInfo(CWnd* pParent /*=NULL*/)
  9. : CDialog(CDlgServiceTrackingInfo::IDD, pParent),m_pAryString(NULL)
  10. , m_strOrderTaker(_T(""))
  11. , m_strReceiptItem(_T(""))
  12. , m_strReceivables(_T(""))
  13. , m_strReceived(_T(""))
  14. , m_bModify(FALSE)
  15. {
  16. }
  17. CDlgServiceTrackingInfo::~CDlgServiceTrackingInfo()
  18. {
  19. }
  20. void CDlgServiceTrackingInfo::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. DDX_Control(pDX, IDC_LIST2, m_list);
  24. DDX_Text(pDX, TX_ORDER, m_strOrder);
  25. DDX_Text(pDX, TX_ORDER_TAKER, m_strOrderTaker);
  26. DDX_Text(pDX, TX_RECEIPT_ITEM, m_strReceiptItem);
  27. DDX_Text(pDX, TX_RECEIVABLES, m_strReceivables);
  28. DDX_Text(pDX, TX_RECEIVED, m_strReceived);
  29. DDX_Control(pDX, IDC_COMBO1, m_cbox_state);
  30. DDX_Control(pDX, CBOX_PICKUPMAN, m_cbox_pickup_man);
  31. DDX_Control(pDX, CBOX_ORDER_TAKER, m_cbox_order_taker);
  32. }
  33. BEGIN_MESSAGE_MAP(CDlgServiceTrackingInfo, CDialog)
  34. ON_WM_CTLCOLOR()
  35. ON_BN_CLICKED(BTN_ADD_RECORD, &CDlgServiceTrackingInfo::OnBnClickedAddRecord)
  36. ON_BN_CLICKED(BTN_FLAT_RECEIVED, &CDlgServiceTrackingInfo::OnBnClickedFlatReceived)
  37. ON_CBN_CLOSEUP(CBOX_ORDER_TAKER, &CDlgServiceTrackingInfo::OnCbnCloseupOrderTaker)
  38. END_MESSAGE_MAP()
  39. // CDlgServiceTrackingInfo 消息处理程序
  40. BOOL CDlgServiceTrackingInfo::OnInitDialog()
  41. {
  42. CDialog::OnInitDialog();
  43. // TODO: 在此添加额外的初始化
  44. CenterWindow();
  45. m_cbox_state.AddString(_T("未服务"));
  46. m_cbox_state.AddString(_T("服务中"));
  47. m_cbox_state.AddString(_T("服务完成"));
  48. // 初始化list列头;
  49. m_list.SetHeadings(
  50. _T("时间, 60"),
  51. _T("人员, 120"),
  52. _T("内容, 120"),
  53. NULL);
  54. if ( m_pAryString != NULL )
  55. {
  56. // id;
  57. m_strId = m_pAryString->ElementAt(0);
  58. // 订单号;
  59. m_strOrder = m_pAryString->ElementAt(1);
  60. // 收款项目(服务项目);
  61. m_strReceiptItem = m_pAryString->ElementAt(5);
  62. // 应收款;
  63. m_strReceivables = m_pAryString->ElementAt(6);
  64. // 实收款;
  65. m_strReceived = m_pAryString->ElementAt(7);
  66. // 接单人;
  67. m_strOrderTaker = m_pAryString->ElementAt(9);
  68. // 对接人;
  69. CString strPickupMan = m_pAryString->ElementAt(11);
  70. // 服务状态;
  71. m_strServiceState = m_pAryString->ElementAt(13);
  72. // 当实收款 > 应收款时,平账按钮可用;
  73. //GetDlgItem(BTN_FLAT_RECEIVED)->EnableWindow(_tstoi(m_strReceived) > _tstoi(m_strReceivables) ? TRUE : FALSE);
  74. m_cbox_state.SelectString(0, m_strServiceState);
  75. m_cbox_pickup_man.RefDroppedWidth();
  76. int nSelectedItem = m_cbox_pickup_man.FindString(0, strPickupMan);
  77. if ( nSelectedItem == CB_ERR )
  78. m_cbox_pickup_man.AddString(strPickupMan);
  79. m_cbox_pickup_man.SetCurSel(m_cbox_pickup_man.FindString(0, strPickupMan));
  80. // 接单人空,可设置接单人;
  81. if ( !m_strOrderTaker.IsEmpty() )
  82. {
  83. m_cbox_order_taker.ShowWindow(FALSE);
  84. GetDlgItem(TX_ORDER_TAKER)->ShowWindow(TRUE);
  85. }
  86. else
  87. {
  88. m_cbox_order_taker.ShowWindow(TRUE);
  89. GetDlgItem(TX_ORDER_TAKER)->ShowWindow(FALSE);
  90. }
  91. UpdateData(FALSE);
  92. }
  93. GetServiceTrackingRecord();
  94. GetDlgItem(BTN_FLAT_RECEIVED)->EnableWindow(IsHasRights2new(54));
  95. return TRUE; // return TRUE unless you set the focus to a control
  96. // 异常: OCX 属性页应返回 FALSE
  97. }
  98. void CDlgServiceTrackingInfo::OnOK() // 保存,修改服务状态;
  99. {
  100. // TODO: 在此添加专用代码和/或调用基类
  101. if ( m_cbox_state.GetCurSel() != CB_ERR )
  102. {
  103. m_cbox_state.GetLBText(m_cbox_state.GetCurSel(),m_strServiceState);
  104. if ( m_strServiceState == _T("服务完成") && ( _tstoi(m_strReceivables) != _tstoi(m_strReceived) ))
  105. {
  106. AfxMessageBox(_T("欠款用户不能标记服务完成!"));
  107. return;
  108. }
  109. m_strPickupMan = _T("");
  110. if ( m_cbox_pickup_man.GetCurSel() != CB_ERR )
  111. m_cbox_pickup_man.GetLBText(m_cbox_pickup_man.GetCurSel(), m_strPickupMan);
  112. if ( m_strServiceState == _T("服务中") && m_strPickupMan.IsEmpty())
  113. {
  114. AfxMessageBox(_T("服务中必须选择对接人员!"));
  115. return;
  116. }
  117. CString strSQL;
  118. m_strPickupDept = DAL::GetStaffDepartment(m_strPickupMan);
  119. if ( m_strId == m_strOrder )
  120. {
  121. 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);
  122. }
  123. else
  124. {
  125. 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);
  126. }
  127. g_sendhead.bsql = TRUE;
  128. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  129. m_bModify = TRUE; // 标记已修改, 要刷新;
  130. if (g_bSendOK == 0)
  131. return;
  132. AfxMessageBox(_T("保存成功"));
  133. }
  134. }
  135. HBRUSH CDlgServiceTrackingInfo::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  136. {
  137. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  138. // TODO: 在此更改 DC 的任何属性
  139. switch(nCtlColor)
  140. {
  141. case CTLCOLOR_DLG:
  142. {
  143. return CreateSolidBrush(g_clr_dlg);
  144. }
  145. break;
  146. case CTLCOLOR_BTN:
  147. break;
  148. case CTLCOLOR_STATIC:
  149. {
  150. pDC->SetBkMode(TRANSPARENT);
  151. return CreateSolidBrush(g_clr_dlg);
  152. }
  153. break;
  154. }
  155. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  156. return hbr;
  157. }
  158. void CDlgServiceTrackingInfo::OnBnClickedAddRecord()
  159. {
  160. // TODO: 在此添加控件通知处理程序代码
  161. CString strWord = _T("");
  162. GetDlgItemText(TX_RECORD, strWord);
  163. if ( strWord.IsEmpty() )
  164. return;
  165. CString strSQL = _T("");
  166. strSQL.Format(_T("insert into service_tracking_record(type, id, [time], [staff], [record])values('%s', '%s', '%s', '%s', '%s')"),
  167. m_strId == m_strOrder ? _T("订单") : _T("加挑"),
  168. m_strId,
  169. CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S")),
  170. g_user.name,
  171. strWord);
  172. g_sendhead.bsql = TRUE;
  173. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  174. m_bModify = TRUE; // 标记已修改, 要刷新;
  175. if (g_bSendOK == 0)
  176. return;
  177. GetServiceTrackingRecord();
  178. }
  179. void CDlgServiceTrackingInfo::GetServiceTrackingRecord()
  180. {
  181. CString strSQL;
  182. strSQL.Format(_T("type = '%s' and id = '%s'"), m_strId == m_strOrder ? _T("订单") : _T("加挑"), m_strId);
  183. g_sendhead.bsql = 0;
  184. g_sendhead.code[0] = 236;
  185. g_sendhead.tabcount = 1;
  186. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  187. if (g_bSendOK == 0)
  188. return;
  189. CArray<CStringArray, CStringArray> AryRecord;
  190. DataToArray(&AryRecord);
  191. m_list.m_AryList.RemoveAll();
  192. m_list.DeleteAllItems();
  193. m_list.m_AryList.SetSize(AryRecord.GetSize());
  194. for (int i = 0; i < AryRecord.GetSize(); i++)
  195. {
  196. m_list.m_AryList.ElementAt(i).RemoveAll();
  197. m_list.m_AryList.ElementAt(i).Add(AryRecord.ElementAt(i).ElementAt(2));
  198. m_list.m_AryList.ElementAt(i).Add(AryRecord.ElementAt(i).ElementAt(3));
  199. m_list.m_AryList.ElementAt(i).Add(AryRecord.ElementAt(i).ElementAt(4));
  200. }
  201. m_list.SetItemCountEx(m_list.m_AryList.GetSize());
  202. }
  203. void CDlgServiceTrackingInfo::OnBnClickedFlatReceived() // 平账按钮;
  204. {
  205. CString strSQL;
  206. CString strLogContent;
  207. if ( m_strId == m_strOrder )
  208. {
  209. strSQL.Format(_T("update dindan set amount_received = '%s' where id = '%s'"), m_strReceivables, m_strId);
  210. strLogContent.Format(_T("订单号:%s, 原实收款:%s"), m_strId, m_strReceived);
  211. }
  212. else
  213. {
  214. strSQL.Format(_T("update dindanbukuan2 set amount_received = '%s' where autoid = %s"), m_strReceivables, m_strId);
  215. strLogContent.Format(_T("订单号:%s, 加挑物品:%s, 原实收款:%s"), m_strId, m_strReceiptItem, m_strReceived);
  216. }
  217. g_sendhead.bsql = TRUE;
  218. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  219. if (g_bSendOK == 0)
  220. return;
  221. WriteLog(_T("平账日志"), _T("平账操作"), g_user.name, strLogContent);
  222. m_strReceived = m_strReceivables;
  223. UpdateData(FALSE);
  224. m_bModify = TRUE;
  225. AfxMessageBox(_T("平账成功!"));
  226. }
  227. void CDlgServiceTrackingInfo::OnCbnCloseupOrderTaker()
  228. {
  229. CString strOrderTaker = _T("");
  230. if ( m_cbox_order_taker.GetCurSel() != CB_ERR )
  231. m_cbox_order_taker.GetLBText(m_cbox_order_taker.GetCurSel(), strOrderTaker);
  232. if ( !strOrderTaker.IsEmpty())
  233. {
  234. CString strSQL;
  235. CString strLogContent;
  236. if ( m_strId == m_strOrder )
  237. {// 订单;
  238. strSQL.Format(_T("update [dindan] set [ren] = '%s', [bm] = '%s' where [id] = '%s'"), strOrderTaker, DAL::GetStaffDepartment(strOrderTaker), m_strId);
  239. strLogContent.Format(_T("订单号:%s"),m_strId);
  240. }
  241. else
  242. {// 加挑;
  243. strSQL.Format(_T("update [dindanbukuan2] set [order_taker] = '%s', [order_taker_dept] = '%s' where [autoid] = %s"), strOrderTaker, DAL::GetStaffDepartment(strOrderTaker), m_strId);
  244. strLogContent.Format(_T("订单号:%s, 加挑物品:%s"), m_strId, m_strReceiptItem);
  245. }
  246. g_sendhead.bsql = TRUE;
  247. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  248. if (g_bSendOK == 0)
  249. return;
  250. AfxMessageBox(_T("重选接单人成功!"));
  251. WriteLog(_T("普通日志"), _T("重选接单人"), g_user.name, strLogContent);
  252. GetServiceTrackingRecord();
  253. }
  254. }