DlgN8ViewReuslt.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. // DlgN8ViewReuslt.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "DlgN8ViewReuslt.h"
  5. #include "ylgl.h"
  6. #include "Login2.h"
  7. #include "InputJT.h"
  8. // CDlgN8ViewReuslt 对话框
  9. IMPLEMENT_DYNAMIC(CDlgN8ViewReuslt, CDialog)
  10. CDlgN8ViewReuslt::CDlgN8ViewReuslt(CWnd* pParent /*=NULL*/)
  11. : CDialog(CDlgN8ViewReuslt::IDD, pParent)
  12. , m_strCustomer(_T(""))
  13. , m_strImgCount(_T(""))
  14. , m_strExCount(_T(""))
  15. , m_strExMoney(_T(""))
  16. {
  17. m_strOrderNum = _T("");
  18. m_strScenery = _T("");
  19. m_strUserDir = _T("");
  20. m_bViewFinish = FALSE;
  21. }
  22. CDlgN8ViewReuslt::~CDlgN8ViewReuslt()
  23. {
  24. }
  25. void CDlgN8ViewReuslt::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. DDX_Text(pDX, ET_CUSTOMER, m_strCustomer);
  29. DDX_Control(pDX, ET_CPTIME, m_ctrlViewDate);
  30. DDX_Control(pDX, ET_TAKETIME, m_ctrlPickupDate);
  31. DDX_Control(pDX, CB_URGENT, m_ctrlUrgent);
  32. DDX_Text(pDX, ET_IMGCOUNT, m_strImgCount);
  33. DDX_Text(pDX, ET_DCCOUNT, m_strExCount);
  34. DDX_Text(pDX, ET_EXMONEY, m_strExMoney);
  35. DDX_Control(pDX, IDC_LIST1, m_ctrlList1);
  36. DDX_Control(pDX, IDC_LIST2, m_ctrlList2);
  37. DDX_Control(pDX, IDC_LIST3, m_ctrlList3);
  38. }
  39. BEGIN_MESSAGE_MAP(CDlgN8ViewReuslt, CDialog)
  40. END_MESSAGE_MAP()
  41. // CDlgN8ViewReuslt 消息处理程序
  42. BOOL CDlgN8ViewReuslt::OnInitDialog()
  43. {
  44. CDialog::OnInitDialog();
  45. // TODO: 在此添加额外的初始化
  46. CenterWindow();
  47. InitCtrl();
  48. GetOrderInfo();
  49. FillupCtrl();
  50. GetXMLInfo();
  51. return TRUE; // return TRUE unless you set the focus to a control
  52. // 异常: OCX 属性页应返回 FALSE
  53. }
  54. void CDlgN8ViewReuslt::InitCtrl()
  55. {
  56. m_ctrlUrgent.AddString(_T("否"));
  57. m_ctrlUrgent.AddString(_T("是"));
  58. m_ctrlUrgent.SetCurSel(0);
  59. m_ctrlList1.InitStyle();
  60. m_ctrlList1.InsertColumn(0, _T("编号"), LVCFMT_LEFT, 55);
  61. m_ctrlList1.InsertColumn(1, _T("商品名称"), LVCFMT_LEFT, 150);
  62. m_ctrlList1.InsertColumn(2, _T("数量"), LVCFMT_LEFT, 55);
  63. m_ctrlList2.InitStyle();
  64. m_ctrlList2.InsertColumn(0, _T("autuid"), LVCFMT_LEFT, 0);
  65. m_ctrlList2.InsertColumn(1, _T("编号"), LVCFMT_LEFT, 55);
  66. m_ctrlList2.InsertColumn(2, _T("商品名称"), LVCFMT_LEFT, 150);
  67. m_ctrlList2.InsertColumn(3, _T("价格"), LVCFMT_LEFT, 55);
  68. m_ctrlList2.InsertColumn(4, _T("数量"), LVCFMT_LEFT, 55);
  69. m_ctrlList2.InsertColumn(5, _T("照片编号"), LVCFMT_LEFT, 355);
  70. m_ctrlList2.InsertColumn(6, _T("备注"), LVCFMT_LEFT, 300);
  71. m_ctrlList3.InitStyle();
  72. m_ctrlList3.InsertColumn(0, _T("autuid"), LVCFMT_LEFT, 0);
  73. m_ctrlList3.InsertColumn(1, _T("编号"), LVCFMT_LEFT, 55);
  74. m_ctrlList3.InsertColumn(2, _T("商品名称"), LVCFMT_LEFT, 150);
  75. m_ctrlList3.InsertColumn(3, _T("价格"), LVCFMT_LEFT, 55);
  76. m_ctrlList3.InsertColumn(4, _T("数量"), LVCFMT_LEFT, 55);
  77. m_ctrlList3.InsertColumn(5, _T("版面编号"), LVCFMT_LEFT, 355);
  78. m_ctrlList3.InsertColumn(6, _T("备注"), LVCFMT_LEFT, 300);
  79. }
  80. void CDlgN8ViewReuslt::FillupCtrl()
  81. {
  82. INT i = 0;
  83. for ( i = 0; i < m_AryOrderGoodsInfo.GetSize(); i++ )
  84. {
  85. // 商品编号;
  86. m_ctrlList1.InsertItem(i, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(1));
  87. // 商品名称;
  88. m_ctrlList1.SetItemText(i, 1, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(5));
  89. // 商品数量;
  90. m_ctrlList1.SetItemText(i, 2, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(3));
  91. }
  92. for ( i = 0; i < m_AryOrderGoodsInfo.GetSize(); i++ )
  93. {
  94. // AutoID;
  95. m_ctrlList2.InsertItem(i, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(7));
  96. // 商品编号;
  97. m_ctrlList2.SetItemText(i, 1, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(1));
  98. // 商品名称;
  99. m_ctrlList2.SetItemText(i, 2, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(5));
  100. // 商品价格;
  101. m_ctrlList2.SetItemText(i, 3, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(2));
  102. // 商品数量;
  103. m_ctrlList2.SetItemText(i, 4, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(3));
  104. // 照片编号;
  105. m_ctrlList2.SetItemText(i, 5, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(6));
  106. // 备注;
  107. m_ctrlList2.SetItemText(i, 5, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(9));
  108. }
  109. for ( i = 0; i < m_AryOrderGoodsInfo.GetSize(); i++ )
  110. {
  111. // AutoID;
  112. m_ctrlList3.InsertItem(i, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(7));
  113. // 商品编号;
  114. m_ctrlList3.SetItemText(i, 1, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(1));
  115. // 商品名称;
  116. m_ctrlList3.SetItemText(i, 2, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(5));
  117. // 商品价格;
  118. m_ctrlList3.SetItemText(i, 3, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(2));
  119. // 商品数量;
  120. m_ctrlList3.SetItemText(i, 4, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(3));
  121. // 照片编号;
  122. m_ctrlList3.SetItemText(i, 5, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(6));
  123. // 备注;
  124. m_ctrlList3.SetItemText(i, 5, m_AryOrderGoodsInfo.ElementAt(i).ElementAt(9));
  125. }
  126. // 加挑金额;
  127. m_strExMoney = m_AryOrderInfo.ElementAt(0).ElementAt(3);
  128. UpdateData(FALSE);
  129. // 入底入册;
  130. SetDlgItemText(ET_DCCOUNT, m_AryOrderInfo.ElementAt(0).ElementAt(9));
  131. // 看版日期;
  132. SetDlgItemText(ET_CPTIME, m_AryOrderInfo.ElementAt(0).ElementAt(22));
  133. // 取件日期;
  134. SetDlgItemText(ET_TAKETIME, m_AryOrderInfo.ElementAt(0).ElementAt(48));
  135. // 是否加急;
  136. m_ctrlUrgent.SelectString(0,m_AryOrderInfo.ElementAt(0).ElementAt(40));
  137. }
  138. void CDlgN8ViewReuslt::GetOrderInfo()
  139. {
  140. CString strFilter = _T("");
  141. #ifdef CHILD_VERSION
  142. strFilter.Format(_T("id='%s';id='%s';"),m_strOrderNum,m_strOrderNum);
  143. if ( !m_strScenery.IsEmpty() )
  144. strFilter.Format(_T("id='%s';id='%s' and growthtxname = '%s';"),m_strOrderNum, m_strOrderNum, m_strScenery);
  145. #else
  146. strFilter.Format(_T("id='%s';id='%s' and kind<>'2';"),m_strOrderNum,m_strOrderNum);
  147. #endif //CHILD_VERSION
  148. g_sendhead.code[0] = 11; // dindan;
  149. g_sendhead.code[1] = 50; // dindansp;
  150. g_sendhead.code[2] = 4;
  151. g_sendhead.tabcount = 3;
  152. g_sendhead.bsql = 0;
  153. g_pMainWnd->ProcessChatMessageRequest2(strFilter);
  154. if (g_bSendOK == 0)
  155. return ;
  156. DataToArray(&m_AryOrderInfo, &m_AryOrderGoodsInfo,&m_AryAllGoodsInfo);
  157. }
  158. BOOL CDlgN8ViewReuslt::IsTheGoodImgExists(IN vector<PerGoodImg>& vtPerGoodImg, IN CString& strGood, IN CString strImg)
  159. {
  160. BOOL bExists = FALSE;
  161. strImg.MakeLower();
  162. strImg.TrimRight(_T(".jpg")); // 去除后缀;
  163. vector<PerGoodImg>::iterator it;
  164. for ( it = vtPerGoodImg.begin(); it != vtPerGoodImg.end(); it++ )
  165. {
  166. if ( it->strGoodName.CompareNoCase(strGood) == 0 )
  167. {
  168. for ( vector<CString>::iterator its = it->vtImgs.begin(); its != it->vtImgs.end(); its++)
  169. {
  170. if ( strImg.CompareNoCase(*its) == 0 )
  171. {
  172. bExists = TRUE;
  173. break;
  174. }
  175. }
  176. break;
  177. }
  178. }
  179. return bExists;
  180. }
  181. void CDlgN8ViewReuslt::InsertImgToGood(IN vector<PerGoodImg>& vtPerGoodImg, IN CString& strGood, IN CString strImg)
  182. {
  183. BOOL bGoodExist = FALSE;
  184. strImg.MakeLower();
  185. strImg.TrimRight(_T(".jpg")); // 去除后缀;
  186. vector<PerGoodImg>::iterator it;
  187. for ( it = vtPerGoodImg.begin(); it != vtPerGoodImg.end(); it++ )
  188. {
  189. if ( it->strGoodName.CompareNoCase(strGood) == 0 )
  190. {
  191. bGoodExist = TRUE;
  192. it->vtImgs.push_back(strImg);
  193. break;
  194. }
  195. }
  196. if (!bGoodExist)
  197. {
  198. PerGoodImg tagPerGoodImg;
  199. tagPerGoodImg.strGoodName = strGood;
  200. tagPerGoodImg.vtImgs.push_back(strImg);
  201. vtPerGoodImg.push_back(tagPerGoodImg);
  202. }
  203. }
  204. BOOL CDlgN8ViewReuslt::IsTheImgExists(IN CStringArray& AryImgs, IN CString& strImg)
  205. {
  206. BOOL bExists = FALSE;
  207. for ( int i = 0; i < AryImgs.GetSize(); i++ )
  208. {
  209. if ( strImg.CompareNoCase(AryImgs.ElementAt(i)) == 0 )
  210. {
  211. bExists = TRUE;
  212. break;
  213. }
  214. }
  215. return bExists;
  216. }
  217. void CDlgN8ViewReuslt::GetXMLInfo()
  218. {
  219. // 从N8用户共享目录中获取xml数据信息;
  220. if ( !PathFileExists(m_strUserDir) )
  221. {
  222. printf("N8用户目录不存在\n");
  223. return;
  224. }
  225. CString strTemp = _T("");
  226. // 获取Staff数据;
  227. strTemp.Format(_T("%s\\VgStaff.xml"), g_szN8ViewProductDir);
  228. if ( PathFileExists(strTemp) )
  229. {
  230. m_xmlStaff.LoadXML(strTemp);
  231. }
  232. else
  233. {
  234. printf("Staff.xml不存在:%s\n",strTemp);
  235. }
  236. // 获取Ablum数据;
  237. strTemp.Format(_T("%s\\版面\\Album.pwt"), m_strUserDir);
  238. if ( PathFileExists(strTemp) )
  239. {
  240. m_xmlAblum.LoadXML(strTemp);
  241. }
  242. else
  243. {
  244. printf("Album.pwt不存在:%s\n",strTemp);
  245. }
  246. // 获取选版结果Product.data数据;
  247. strTemp.Format(_T("%s\\选版结果\\Product.data"), m_strUserDir);
  248. if ( PathFileExists(strTemp) )
  249. {
  250. m_xmlResultProduct.LoadXML(strTemp);
  251. }
  252. else
  253. {
  254. printf("Product.data不存在:%s\n",strTemp);
  255. }
  256. // 获取选版结果VgProduct.data数据;
  257. strTemp.Format(_T("%s\\选版结果\\VgProduct.data"), m_strUserDir);
  258. if ( PathFileExists(strTemp) )
  259. {
  260. m_xmlVgResultProduct.LoadXML(strTemp);
  261. }
  262. else
  263. {
  264. printf("VgProduct.data不存在:%s\n",strTemp);
  265. }
  266. // 获取选版结果Item.data数据;
  267. strTemp.Format(_T("%s\\选版结果\\Item.data"), m_strUserDir);
  268. if ( PathFileExists(strTemp) )
  269. {
  270. m_xmlReusltItem.LoadXML(strTemp);
  271. }
  272. else
  273. {
  274. printf("Item.data不存在:%s\n",strTemp);
  275. }
  276. // 获取选版完成结果,如20150612-001.xml数据;
  277. if ( PathFileExists(m_strViewFinishxml) )
  278. {
  279. m_xmlReuslt.LoadXML(m_strViewFinishxml);
  280. }
  281. else
  282. {
  283. printf("订单.xml不存在:%s\n",m_strViewFinishxml);
  284. }
  285. // 计算出正确的结果,并显示;
  286. int i = 0;
  287. for ( i = 0; i < m_xmlVgResultProduct.m_AryItems.GetSize(); i++ )
  288. {
  289. N8Process::CResultVgProduct::CItem &tagItem = m_xmlVgResultProduct.m_AryItems.ElementAt(i);
  290. vector<CString>::iterator it;
  291. for ( it = tagItem.m_ArySubItems.begin(); it != tagItem.m_ArySubItems.end(); it++ )
  292. {
  293. if ( !IsTheGoodImgExists(m_vtPerGoodPage, tagItem.m_strProductName, (*it).Mid( _tcslen( _T("\\版面\\")) ) ) )
  294. {
  295. InsertImgToGood(m_vtPerGoodPage, tagItem.m_strProductName, (*it).Mid( _tcslen( _T("\\版面\\")) ));
  296. }
  297. }
  298. }
  299. int nPos = 0;
  300. vector<PerGoodImg>::iterator it = m_vtPerGoodPage.begin();
  301. for (; it != m_vtPerGoodPage.end(); it++ )
  302. {
  303. vector<CString>::iterator it1 = it->vtImgs.begin();
  304. for ( ; it1 != it->vtImgs.end(); it1++ )
  305. {
  306. for ( i = 0; i < m_xmlAblum.m_AryPages.GetSize(); i++ )
  307. {
  308. N8Process::CAlbum::CPageItem &tagPageItem = m_xmlAblum.m_AryPages.ElementAt(i);
  309. strTemp = tagPageItem.m_strFileName;
  310. strTemp.MakeLower();
  311. strTemp.TrimRight(_T(".jpg"));
  312. if ( strTemp.CompareNoCase(*it1) == 0 )
  313. {
  314. vector<CString>::iterator it2 = tagPageItem.m_vtImgs.begin();
  315. for ( ; it2 != tagPageItem.m_vtImgs.end(); it2++ )
  316. {
  317. strTemp = *it2;
  318. nPos = strTemp.ReverseFind(_T('\\'));
  319. if ( nPos != -1 )
  320. {
  321. strTemp = strTemp.Mid(nPos+1);
  322. }
  323. if ( !IsTheGoodImgExists(m_vtPerGoodImg, it->strGoodName, strTemp))
  324. {
  325. InsertImgToGood(m_vtPerGoodImg, it->strGoodName, strTemp);
  326. }
  327. }
  328. break;
  329. }
  330. }
  331. }
  332. }
  333. // 更新到列表中;
  334. for ( i = 0; i < m_ctrlList3.GetItemCount(); i++ )
  335. {
  336. // 获取商品名称;
  337. strTemp = m_ctrlList3.GetItemText(i, 2);
  338. it = m_vtPerGoodPage.begin();
  339. for ( ; it != m_vtPerGoodPage.end(); it++ )
  340. {
  341. if ( it->strGoodName.CompareNoCase(strTemp) == 0 )
  342. {
  343. strTemp.Empty();
  344. vector<CString>::iterator it1 = it->vtImgs.begin();
  345. for ( ; it1 != it->vtImgs.end(); it1++ )
  346. {
  347. strTemp += *it1 + _T("|");
  348. }
  349. m_ctrlList3.SetItemText(i, 5, strTemp);
  350. break;
  351. }
  352. }
  353. }
  354. for ( i = 0; i < m_ctrlList2.GetItemCount(); i++ )
  355. {
  356. // 获取商品名称;
  357. strTemp = m_ctrlList2.GetItemText(i, 2);
  358. it = m_vtPerGoodImg.begin();
  359. for ( ; it != m_vtPerGoodImg.end(); it++ )
  360. {
  361. if ( it->strGoodName.CompareNoCase(strTemp) == 0 )
  362. {
  363. strTemp.Empty();
  364. vector<CString>::iterator it1 = it->vtImgs.begin();
  365. for ( ; it1 != it->vtImgs.end(); it1++ )
  366. {
  367. strTemp += *it1 + _T("|");
  368. }
  369. m_ctrlList2.SetItemText(i, 5, strTemp);
  370. break;
  371. }
  372. }
  373. }
  374. CStringArray AryImgs;
  375. // 计算实际相片张数,去除重复的;
  376. AryImgs.RemoveAll();
  377. it = m_vtPerGoodImg.begin();
  378. for (; it != m_vtPerGoodImg.end(); it++ )
  379. {
  380. vector<CString>::iterator it1 = it->vtImgs.begin();
  381. for ( ; it1 != it->vtImgs.end(); it1++ )
  382. {
  383. if ( !IsTheImgExists(AryImgs, *it1) )
  384. {
  385. AryImgs.Add(*it1);
  386. }
  387. }
  388. }
  389. SetDlgItemInt(ET_SELIMGCOUNT, AryImgs.GetSize());
  390. // 计算版面张数,去除重复的;
  391. AryImgs.RemoveAll();
  392. it = m_vtPerGoodPage.begin();
  393. for (; it != m_vtPerGoodPage.end(); it++ )
  394. {
  395. vector<CString>::iterator it1 = it->vtImgs.begin();
  396. for ( ; it1 != it->vtImgs.end(); it1++ )
  397. {
  398. if ( !IsTheImgExists(AryImgs, *it1) )
  399. {
  400. AryImgs.Add(*it1);
  401. }
  402. }
  403. }
  404. SetDlgItemInt(ET_SELPAGECOUNT, AryImgs.GetSize());
  405. // 设置加挑张数;
  406. CString strCount = _T("");
  407. GetDlgItemText(ET_DCCOUNT,strCount);
  408. nPos = strCount.Find(_T("\\"));
  409. if ( nPos != -1 )
  410. {
  411. strCount = strCount.Mid(nPos+1);
  412. INT nCount = GetDlgItemInt(ET_SELIMGCOUNT);
  413. nCount -= atoi(strCount);
  414. if ( nCount >= 0)
  415. SetDlgItemInt(ET_EXIMGCOUNT, nCount);
  416. }
  417. }
  418. /************************************************************************/
  419. /* 函数:[5/31/2016 IT];
  420. /* 描述:获取N8选择指定员工ID的员工姓名;
  421. /* 参数:;
  422. /* [IN] strStaffID:要查询的员工ID;
  423. /* 返回:void;
  424. /* 注意:;
  425. /* 示例:;
  426. /*
  427. /* 修改:;
  428. /* 日期:;
  429. /* 内容:;
  430. /************************************************************************/
  431. CString CDlgN8ViewReuslt::GetStaffNameByID(IN CString& strStaffID)
  432. {
  433. CString strStaffName = _T("");
  434. if ( m_bViewFinish && !strStaffID.IsEmpty())
  435. {
  436. if ( !m_xmlReuslt.m_strStaffID.IsEmpty() )
  437. {
  438. for ( int i = 0; i < m_xmlStaff.m_AryItems.GetSize(); i++ )
  439. {
  440. N8Process::CStaff::CItem &tagItem = m_xmlStaff.m_AryItems.ElementAt(i);
  441. if ( tagItem.m_strStaffID.CompareNoCase(strStaffID) == 0 )
  442. {
  443. strStaffName = tagItem.m_strStaffName;
  444. break;
  445. }
  446. }
  447. }
  448. }
  449. return strStaffName;
  450. }
  451. /************************************************************************/
  452. /* 函数:[5/31/2016 IT];
  453. /* 描述:获取指定商品ID的商品销售价;
  454. /* 参数:;
  455. /* [IN] strGoodID:指定查询的商品ID;
  456. /* 返回:void;
  457. /* 注意:;
  458. /* 示例:;
  459. /*
  460. /* 修改:;
  461. /* 日期:;
  462. /* 内容:;
  463. /************************************************************************/
  464. double CDlgN8ViewReuslt::GetGoodSellingPrice(IN CString& strGoodID)
  465. {
  466. double fSellingPrice = 0.0;
  467. for ( int i = 0; i < m_AryAllGoodsInfo.GetSize(); i++ )
  468. {
  469. if ( strGoodID.CompareNoCase(m_AryAllGoodsInfo.ElementAt(i).ElementAt(0)) == 0 )
  470. {
  471. fSellingPrice = atof(m_AryAllGoodsInfo.ElementAt(i).ElementAt(4));
  472. break;
  473. }
  474. }
  475. return fSellingPrice;
  476. }
  477. /************************************************************************/
  478. /* 函数:[5/31/2016 IT];
  479. /* 描述:获取订单商品的实际销售价;
  480. /* 参数:;
  481. /* 返回:void;
  482. /* 注意:;
  483. /* 示例:;
  484. /*
  485. /* 修改:;
  486. /* 日期:;
  487. /* 内容:;
  488. /************************************************************************/
  489. double CDlgN8ViewReuslt::GetOrderGoodsActualSellingPrice()
  490. {
  491. // 实际价格;
  492. double fActualPrice = 0.0;
  493. for ( int i = 0; i < m_ctrlList2.GetItemCount(); i++ )
  494. {
  495. fActualPrice += atof(m_ctrlList2.GetItemText(i, 3)) * atof(m_ctrlList2.GetItemText(i, 4));
  496. }
  497. return fActualPrice;
  498. }
  499. /************************************************************************/
  500. /* 函数:[5/31/2016 IT];
  501. /* 描述:获取订单商品的原始销售价;
  502. /* 参数:;
  503. /* 返回:void;
  504. /* 注意:;
  505. /* 示例:;
  506. /*
  507. /* 修改:;
  508. /* 日期:;
  509. /* 内容:;
  510. /************************************************************************/
  511. double CDlgN8ViewReuslt::GetOrderGoodsOriginalSellingPrice()
  512. {
  513. // 原始价格;
  514. double fOriginalPrice = 0.0;
  515. for ( int i = 0; i < m_ctrlList1.GetItemCount(); i++ )
  516. {
  517. fOriginalPrice += GetGoodSellingPrice(m_ctrlList1.GetItemText(i,0)) * atof(m_ctrlList1.GetItemText(i,2));
  518. }
  519. return fOriginalPrice;
  520. }
  521. /************************************************************************/
  522. /* 函数:[5/31/2016 IT];
  523. /* 描述:计算折扣价;
  524. /* 参数:;
  525. /* [IN] strAuthorize:授权人;
  526. /* [IN] strDiscount:折扣;
  527. /* 返回:void;
  528. /* 注意:;
  529. /* 示例:;
  530. /*
  531. /* 修改:;
  532. /* 日期:;
  533. /* 内容:;
  534. /************************************************************************/
  535. void CDlgN8ViewReuslt::GetCalculatingDiscount(IN CString& strAuthorize, IN CString& strDiscount)
  536. {
  537. UpdateData(FALSE);
  538. //计算折扣;
  539. float fActualPrice = GetOrderGoodsActualSellingPrice();
  540. float fOriginalPrice = GetOrderGoodsOriginalSellingPrice();
  541. if (fActualPrice > fOriginalPrice)
  542. strDiscount.Format(_T("%0.3f"), min(10.0, (atof(m_strExMoney) * 10) / (fActualPrice - fOriginalPrice)));
  543. else
  544. strDiscount = _T("10.0");
  545. if (IsHasRights2new(26) == 0 && atof(m_strExMoney) > 0.1)//无折扣权限;
  546. {
  547. if (strDiscount != _T("10.0"))
  548. {
  549. AfxMessageBox(_T("价格太低,需授权!!"), MB_ICONINFORMATION);
  550. Login2 dlg;
  551. dlg.m_mode = 2;
  552. if (dlg.DoModal() != IDOK)
  553. return;
  554. if (IsHasRightsnew2(26, dlg.m_rights) == 0)
  555. return;
  556. strDiscount.Format(_T("%0.3f"), min(10.0, (atof(m_strExMoney) * 10) / (fActualPrice - fOriginalPrice)));
  557. if (atof(strDiscount) < atof(dlg.m_discount2))
  558. {
  559. CString str;
  560. str.Format(_T("折扣%s太低,需授权!"), strDiscount);
  561. if (AfxMessageBox(str, MB_ICONINFORMATION))
  562. return;
  563. }
  564. strAuthorize = dlg.m_name;
  565. }
  566. }
  567. else if (atof(strDiscount) < atof(g_user.m_discount2))//&& atof(m_money3)>0.1 )
  568. {
  569. AfxMessageBox(_T("价格太低,需授权!!"), MB_ICONINFORMATION);
  570. Login2 dlg;
  571. dlg.m_mode = 2;
  572. if (dlg.DoModal() != IDOK)
  573. return;
  574. if (IsHasRightsnew2(26, dlg.m_rights) == 0)
  575. return;
  576. strDiscount.Format(_T("%0.3f"), min(10.0, (atof(m_strExMoney) * 10) / (fActualPrice - fOriginalPrice)));
  577. if (atof(strDiscount) < atof(dlg.m_discount2))
  578. {
  579. CString str;
  580. str.Format(_T("折扣%s太低,需授权!"), strDiscount);
  581. if(AfxMessageBox(str, MB_ICONINFORMATION))
  582. return;
  583. }
  584. strDiscount = dlg.m_name;
  585. }
  586. }
  587. void CDlgN8ViewReuslt::OnOK()
  588. {
  589. // TODO: 在此添加专用代码和/或调用基类
  590. UpdateData();
  591. CString strAuthorize = _T("");
  592. CString strDiscount = _T("");
  593. // 旧的加挑金额;
  594. CString strPluspickMoney = m_AryOrderInfo.ElementAt(0).ElementAt(3);
  595. //计算折扣;
  596. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(113)))
  597. GetCalculatingDiscount(strAuthorize, strDiscount);
  598. // 加挑张数;
  599. CString strPluspickImg = _T("");
  600. GetDlgItemText(ET_EXIMGCOUNT, strPluspickImg);
  601. // 选版日期;
  602. CString strViewDate = _T("");
  603. GetDlgItemText(ET_CPTIME, strViewDate);
  604. // 取件日期;
  605. CString strTakeDate = _T("");
  606. GetDlgItemText(ET_TAKETIME, strTakeDate);
  607. // 是否加急;
  608. CString strUrgent = _T("否");
  609. m_ctrlUrgent.GetLBText(m_ctrlUrgent.GetCurSel(),strUrgent);
  610. // 选版员工;
  611. CString strViewStaff = GetStaffNameByID(m_xmlReuslt.m_strStaffID);
  612. CString strSQL = _T("");
  613. // 若重选全部,清空一切;
  614. if ( !PathFileExists(m_strUserDir + _T("\\选版结果\\n8vg.ok")) )
  615. {
  616. CSQLStatementImpl::GetInstancePtr()->ReSetKind(_T("dindan"), _T("where id='") + m_strOrderNum + _T("'"), KIND_UPDATE, 7);
  617. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("choosezs"), strPluspickImg); // 加挑张数;
  618. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("time5"), strTakeDate); // 订单的取件时间 ;
  619. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("time6"), strViewDate); // 看设计时间;
  620. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("urgent"), strUrgent); // 是否加急;
  621. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("money3"), m_strExMoney); // 加挑金额;
  622. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("authorize2"), strAuthorize); // 授权人;
  623. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("discount2"), strDiscount); // 折扣;
  624. CSQLStatementImpl::GetInstancePtr()->ReturnSQL(strSQL);
  625. }
  626. else
  627. {
  628. CSQLStatementImpl::GetInstancePtr()->ReSetKind(_T("dindan"), _T("where id='") + m_strOrderNum + _T("'"), KIND_UPDATE, 9);
  629. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("status8"), _T("OK")); // 看设计状态;
  630. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("waiter8"), strViewStaff); // 看设计人;
  631. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("choosezs"), strPluspickImg); // 加挑相片;
  632. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("time5"), strTakeDate); // 取件日期;
  633. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("time6"), strViewDate); // 看设计日期;
  634. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("urgent"), strUrgent); // 是否加急;
  635. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("money3"), m_strExMoney); // 加挑金额;
  636. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("authorize2"), strAuthorize); // 授权人;
  637. CSQLStatementImpl::GetInstancePtr()->AddElement(_T("discount2"), strDiscount); // 折扣;
  638. CSQLStatementImpl::GetInstancePtr()->ReturnSQL(strSQL);
  639. }
  640. g_sendhead.bsql = 1;
  641. g_pMainWnd->ProcessChatMessageRequest2(strSQL);
  642. // 保存加挑金额;
  643. if ( atof(strPluspickMoney) != atof(m_strExMoney) )
  644. {
  645. InputJT dlg;
  646. dlg.m_id = m_strOrderNum;
  647. dlg.m_money.Format("%0.2f", atof(m_strExMoney) - atof(strPluspickMoney));
  648. dlg.DoModal();
  649. }
  650. CDialog::OnOK();
  651. }