HireDress2.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. // HireDress2.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ylgl.h"
  5. #include "HireDress2.h"
  6. #include "ShowPic22.h"
  7. #include "ShowPhoto.h"
  8. #include "ShowEarlyWarning.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // HireDress2 dialog IDC_COMBOname
  16. HireDress2::HireDress2(CWnd* pParent /*=NULL*/)
  17. : CDialog(HireDress2::IDD, pParent)
  18. {
  19. //{{AFX_DATA_INIT(HireDress2)
  20. m_id = _T("");
  21. m_inputdate = g_date;
  22. m_clerk = g_user.name ;
  23. m_balance = _T("");
  24. m_count = _T("");
  25. m_no = _T("");
  26. m_remark = _T("");
  27. m_bAdd=1;
  28. m_pImg=NULL;
  29. m_date1 = _T("");
  30. m_date2 = _T("");
  31. //}}AFX_DATA_INIT
  32. }
  33. void HireDress2::DoDataExchange(CDataExchange* pDX)
  34. {
  35. CDialog::DoDataExchange(pDX);
  36. //{{AFX_DATA_MAP(HireDress2)
  37. DDX_Control(pDX, IDC_EDITdate2, m_datectrl5);
  38. DDX_Control(pDX, IDC_EDITdate1, m_datectrl4);
  39. DDX_Control(pDX, IDC_EDITcount, m_editctrl3);
  40. DDX_Control(pDX, IDC_LIST4, m_List1);
  41. DDX_Control(pDX, IDC_COMBOname, m_comboname);
  42. DDX_Text(pDX, IDC_EDITid, m_id);
  43. DDX_Text(pDX, IDC_EDITinputdate, m_inputdate);
  44. DDX_Text(pDX, IDC_EDITclerk, m_clerk);
  45. DDX_Text(pDX, IDC_EDITbalance, m_balance);
  46. DDX_Text(pDX, IDC_EDITcount, m_count);
  47. DDX_Text(pDX, IDC_EDITno, m_no);
  48. DDX_Text(pDX, IDC_EDITremark, m_remark);
  49. DDV_MaxChars(pDX, m_remark, 1000);
  50. DDX_Text(pDX, IDC_EDITdate1, m_date1);
  51. DDX_Text(pDX, IDC_EDITdate2, m_date2);
  52. //}}AFX_DATA_MAP
  53. }
  54. BEGIN_MESSAGE_MAP(HireDress2, CDialog)
  55. //{{AFX_MSG_MAP(HireDress2)
  56. ON_CBN_SELCHANGE(IDC_COMBOname, OnSelchangeCOMBOname)
  57. ON_WM_DESTROY()
  58. ON_WM_PAINT()
  59. ON_BN_CLICKED(IDC_BUTTON1, OnAddDress)
  60. ON_BN_CLICKED(IDC_BUTTON2, OnDelDress)
  61. ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
  62. ON_BN_CLICKED(IDC_STATIC4, OnStatic4)
  63. //}}AFX_MSG_MAP
  64. END_MESSAGE_MAP()
  65. /////////////////////////////////////////////////////////////////////////////
  66. // HireDress2 message handlers
  67. BOOL HireDress2::OnInitDialog()
  68. {
  69. CDialog::OnInitDialog();
  70. int i = 0;
  71. // TODO: Add extra initialization here
  72. if(m_bAdd)
  73. {
  74. CString sql="select max(id) as cot from dresshire where [date]='"+g_date+"'";
  75. g_sendhead.bsql=1;
  76. g_pMainWnd->ProcessChatMessageRequest2(sql);
  77. if(g_bSendOK==0)
  78. {
  79. CDialog::OnCancel ();
  80. return false;
  81. }
  82. CString date=g_date;
  83. date.Replace ("-", "");
  84. m_id.Format ("%s-(lf)%03d", date, g_ncount+1);
  85. g_sendhead.bsql=0;
  86. g_sendhead.code[0]=72;
  87. g_sendhead.tabcount=1;
  88. g_pMainWnd->ProcessChatMessageRequest2(0);
  89. if(g_bSendOK==0)
  90. {
  91. CDialog::OnCancel ();
  92. return false;
  93. }
  94. DataToArray(&m_List1array);
  95. for( i=0; i<m_List1array.GetSize (); i++)
  96. {
  97. if(0!=atoi(m_List1array.ElementAt (i).ElementAt (12)))continue;
  98. m_comboname.AddString (m_List1array.ElementAt (i).ElementAt (2));
  99. }
  100. }
  101. else
  102. {
  103. SetWindowText("送洗单修改");
  104. CString filter=";id='"+m_id+"';id='"+m_id+"'";
  105. g_sendhead.bsql=0;
  106. g_sendhead.code[0]=72;
  107. g_sendhead.code[1]=73;
  108. g_sendhead.code[2]=74;
  109. g_sendhead.tabcount=3;
  110. g_pMainWnd->ProcessChatMessageRequest2(filter);
  111. if(g_bSendOK==0)
  112. {
  113. CDialog::OnCancel ();
  114. return false;
  115. }
  116. CArray<CStringArray, CStringArray>dresshirearray;
  117. CArray<CStringArray, CStringArray>dresshiredataarray;
  118. DataToArray(&m_List1array, &dresshirearray, &dresshiredataarray);
  119. if(dresshirearray.GetSize ())
  120. {
  121. m_remark = dresshirearray.ElementAt (0).ElementAt (10);
  122. m_inputdate = dresshirearray.ElementAt (0).ElementAt (6);
  123. m_date1 = dresshirearray.ElementAt (0).ElementAt (7);
  124. m_date2 = dresshirearray.ElementAt (0).ElementAt (8);
  125. m_clerk = g_user.name ;
  126. }
  127. for( i=0; i<dresshiredataarray.GetSize (); i++)
  128. {
  129. m_needgetbalancearray.Add (dresshiredataarray.ElementAt (i).ElementAt (1));
  130. m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (1));
  131. m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (2));
  132. m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (3));
  133. m_seldressarray.Add (m_id);
  134. m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (4));
  135. m_seldressarray.Add (dresshiredataarray.ElementAt (i).ElementAt (7));
  136. CString str;
  137. str=dresshiredataarray.ElementAt (i).ElementAt (2);
  138. str+="\r\n数量:";
  139. str+=dresshiredataarray.ElementAt (i).ElementAt (3);
  140. if(m_List1.GetCount()%2)
  141. m_List1.AddEntry( str , g_gridcol1, m_List1.GetCount());
  142. else
  143. m_List1.AddEntry( str , g_gridcol2, m_List1.GetCount());
  144. }
  145. for( i=0; i<m_List1array.GetSize (); i++)
  146. {
  147. if(0!=atoi(m_List1array.ElementAt (i).ElementAt (12)))continue;
  148. m_comboname.AddString (m_List1array.ElementAt (i).ElementAt (2));
  149. }
  150. }
  151. CenterWindow();
  152. UpdateData(false);
  153. return TRUE; // return TRUE unless you set the focus to a control
  154. // EXCEPTION: OCX Property Pages should return FALSE
  155. }
  156. void HireDress2::OnOK()
  157. {
  158. // TODO: Add extra validation here
  159. UpdateData();
  160. if(!CheckDateOK(m_date1))return;
  161. if(!CheckDateOK(m_date2))return;
  162. if(m_date1.IsEmpty () || m_date2.IsEmpty ())
  163. {
  164. AfxMessageBox("资料不全, 打*号的项目为必填项目!");
  165. return;
  166. }
  167. if( m_seldressarray.GetSize()==0 )
  168. {
  169. AfxMessageBox("礼服资料未添加!");
  170. return;
  171. }
  172. CString sql;
  173. CString hireorsale="洗";
  174. if(m_bAdd)
  175. {
  176. sql.Format ("insert into [dresshire]([id],[date],[clerk],[hireorsale],[remark],[date1],[date2])values('%s','%s','%s','%s','%s','%s','%s')",m_id,m_inputdate,m_clerk,hireorsale,m_remark,m_date1,m_date2);
  177. }
  178. else
  179. {
  180. sql="update [dresshire] set [clerk]='"+m_clerk+"',[remark]='"+m_remark+"',[date1]='"+m_date1+"',[date2]='"+m_date2+"' where [id]='"+m_id+"'";
  181. }
  182. g_sendhead.bsql=1;
  183. g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return;
  184. CStringArray m_seldressarraybak;
  185. m_seldressarraybak.Copy (m_seldressarray);
  186. int count=m_seldressarray.GetSize ();
  187. CString str;
  188. str.Format ("%d", count);
  189. for(int i=0; i<m_needgetbalancearray.GetSize (); i++)
  190. {
  191. m_seldressarray.Add (m_needgetbalancearray.ElementAt (i));
  192. }
  193. m_seldressarray.Add (str);
  194. m_seldressarray.Add (m_date1);
  195. m_seldressarray.Add (m_date2);
  196. CMemFile memfile;
  197. CArchive ar(&memfile, CArchive::store);
  198. m_seldressarray.Serialize (ar);
  199. ar.Close();
  200. int length=memfile.GetLength ();
  201. BYTE *pData = memfile.Detach();
  202. g_nSendCode=20;
  203. g_pMainWnd->ProcessChatMessageRequest2(pData, length);
  204. g_nSendCode=0;
  205. delete []pData;
  206. m_seldressarray.RemoveAll ();
  207. m_seldressarray.Copy (m_seldressarraybak);
  208. if(g_bSendOK==0)return;
  209. AfxMessageBox("保存成功!", MB_ICONINFORMATION);
  210. CDialog::OnOK();
  211. }
  212. void HireDress2::OnSelchangeCOMBOname()
  213. {
  214. // TODO: Add your control notification handler code here
  215. int pos=m_comboname.GetCurSel ();
  216. if(pos==-1)return;
  217. UpdateData();
  218. CString name;
  219. m_comboname.GetLBText (pos, name);
  220. for(int i=0; i<m_List1array.GetSize (); i++)
  221. {
  222. if(name==m_List1array.ElementAt (i).ElementAt (2))
  223. {
  224. m_no=m_List1array.ElementAt (i).ElementAt (1);
  225. m_balance=m_List1array.ElementAt (i).ElementAt (4);
  226. m_sellcot=m_List1array.ElementAt (i).ElementAt (6);
  227. CString savepath=g_path5+"\\";
  228. if(m_pImg)delete m_pImg;m_pImg=NULL;
  229. m_picpath="";
  230. if(PathFileExists( savepath+""+m_no+".jpg" ) )
  231. {
  232. ::LoadImageFromBuf (&m_pImg, savepath+""+m_no+".jpg");
  233. m_picpath=savepath+m_no+".jpg";
  234. }
  235. CRect rc;
  236. GetDlgItem(IDC_STATIC4)->GetWindowRect(rc);
  237. ScreenToClient(rc);
  238. InvalidateRect(rc);
  239. UpdateData(false);
  240. }
  241. }
  242. }
  243. void HireDress2::OnDestroy()
  244. {
  245. // TODO: Add your message handler code here
  246. if(m_pImg)delete m_pImg;m_pImg=NULL;
  247. CDialog::OnDestroy();
  248. }
  249. void HireDress2::OnPaint()
  250. {
  251. CPaintDC dc(this); // device context for painting
  252. // TODO: Add your message handler code here
  253. if(m_pImg)
  254. {
  255. CRect rc;
  256. GetDlgItem(IDC_STATIC4)->GetWindowRect(rc);
  257. ScreenToClient(rc);
  258. RectFitDes(m_pImg->GetWidth(), m_pImg->GetHeight(), rc);
  259. Graphics dcgraph(dc.GetSafeHdc());
  260. Rect destinationRect(rc.left , rc.top , rc.Width (), rc.Height ());
  261. dcgraph.DrawImage(m_pImg, destinationRect, 0,0,m_pImg->GetWidth(), m_pImg->GetHeight(),UnitPixel);
  262. }
  263. // Do not call CDialog::OnPaint() for painting messages
  264. }
  265. void HireDress2::OnAddDress()
  266. {
  267. // TODO: Add your control notification handler code here
  268. UpdateData();
  269. int pos=m_comboname.GetCurSel ();
  270. if(pos==-1)return;
  271. CString name;
  272. m_comboname.GetLBText (pos, name);
  273. m_count.TrimLeft ();m_count.TrimRight ();
  274. if(atoi(m_count)<1)
  275. {
  276. AfxMessageBox("数量不能为空!");
  277. return;
  278. }
  279. if(atoi(m_count)>atoi(m_balance))
  280. {
  281. // AfxMessageBox("库存不足!");
  282. // return;
  283. }
  284. for(int i=0; i<m_seldressarray.GetSize (); i+=6)
  285. {
  286. if(name==m_seldressarray.ElementAt (i+1))
  287. {
  288. AfxMessageBox("已有此礼服的记录!");
  289. return;
  290. }
  291. }
  292. if(CheckEarlyWarning())
  293. { if(AfxMessageBox("此日期礼服可能未回,是否继续开送洗单?", MB_YESNO|MB_ICONINFORMATION)!=IDYES)return;
  294. }
  295. m_needgetbalancearray.Add (m_no);
  296. m_seldressarray.Add (m_no);
  297. m_seldressarray.Add (name);
  298. m_seldressarray.Add (m_count);
  299. m_seldressarray.Add (m_id);
  300. m_seldressarray.Add ("");
  301. m_seldressarray.Add ("洗");
  302. CString str;
  303. str=name;
  304. str+="\r\n数量:";
  305. str+=m_count;
  306. if(m_List1.GetCount()%2)
  307. m_List1.AddEntry( str , g_gridcol1, m_List1.GetCount());
  308. else
  309. m_List1.AddEntry( str , g_gridcol2, m_List1.GetCount());
  310. }
  311. void HireDress2::OnDelDress()
  312. {
  313. // TODO: Add your control notification handler code here
  314. int pos=m_List1.GetCurSel ();
  315. if(pos==-1)
  316. {
  317. AfxMessageBox("请先选中您要删除的礼服!");
  318. return;
  319. }
  320. m_List1.DeleteString (pos);
  321. pos*=6;
  322. if(m_bAdd==0)
  323. m_needgetbalancearray.Add (m_seldressarray.ElementAt (pos));
  324. m_seldressarray.RemoveAt(pos+5);
  325. m_seldressarray.RemoveAt(pos+4);
  326. m_seldressarray.RemoveAt(pos+3);
  327. m_seldressarray.RemoveAt(pos+2);
  328. m_seldressarray.RemoveAt(pos+1);
  329. m_seldressarray.RemoveAt(pos);
  330. }
  331. void HireDress2::OnButton3()
  332. {
  333. // TODO: Add your control notification handler code here
  334. UpdateData();
  335. if(!CheckDateOK(m_date1))return;
  336. if(m_date1.IsEmpty () || m_no.IsEmpty () || m_count.IsEmpty ())
  337. {
  338. AfxMessageBox("取件日期和编号和数量为必填项目!");
  339. return;
  340. }
  341. int pos=m_comboname.GetCurSel ();
  342. if(pos==-1)return;
  343. UpdateData();
  344. CString name;
  345. m_comboname.GetLBText (pos, name);
  346. ShowEarlyWarning dlg;
  347. dlg.m_no=m_no;
  348. dlg.m_name=name;
  349. dlg.m_cot1=m_balance;
  350. dlg.m_cot2=m_sellcot;
  351. dlg.m_cot3=m_count;
  352. dlg.m_date1=m_date1;
  353. dlg.DoModal();
  354. }
  355. BOOL HireDress2::CheckEarlyWarning()
  356. {
  357. if(!CheckDateOK(m_date1))return 1;
  358. if(m_date1.IsEmpty () || m_no.IsEmpty () || m_count.IsEmpty ())
  359. {
  360. AfxMessageBox("取件日期和编号和数量为必填项目!");
  361. return 1;
  362. }
  363. int pos=m_comboname.GetCurSel ();
  364. if(pos==-1)return 1;
  365. CString name;
  366. m_comboname.GetLBText (pos, name);
  367. ShowEarlyWarning dlg;
  368. dlg.m_mode=1;
  369. dlg.m_no=m_no;
  370. dlg.m_name=name;
  371. dlg.m_cot1=m_balance;
  372. dlg.m_cot2=m_sellcot;
  373. dlg.m_cot3=m_count;
  374. dlg.m_date1=m_date1;
  375. dlg.DoModal();
  376. return dlg.m_nRet;
  377. }
  378. void HireDress2::OnStatic4()
  379. {
  380. // TODO: Add your control notification handler code here
  381. if(m_pImg)
  382. {
  383. ShowPhoto dlg;
  384. dlg.m_pImg=m_pImg;
  385. dlg.DoModal();
  386. }
  387. }