StaffWage.cpp 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401
  1. #include "stdafx.h"
  2. #include "StaffWage.h"
  3. #include "Global/Global.h"
  4. #include "MainFrm.h"
  5. extern CMainFrame *g_pMainWnd;
  6. #ifdef VC60
  7. #define _tstof atof
  8. #define _tstoi atoi
  9. #endif
  10. CStaffWage::CStaffWage(void)
  11. {
  12. m_strStaffName = _T("");
  13. m_strWageStartDate = _T("");
  14. m_strWageEndofDate = _T("");
  15. m_fEaryResultMoney = 0.0;
  16. }
  17. CStaffWage::~CStaffWage(void)
  18. {
  19. ClearStaffWageData();
  20. }
  21. void CStaffWage::ClearStaffWageData()
  22. {
  23. m_AryStaffDetail.RemoveAll();
  24. m_AryReceiptRecords.RemoveAll();
  25. m_AryOrderDetail.RemoveAll();
  26. m_AryOtherIncomeRecord.RemoveAll();
  27. m_ArySceneryWorkRecord.RemoveAll();
  28. m_AryMyWorkRecord.RemoveAll();
  29. m_AryDigitalWorkRecord.RemoveAll();
  30. m_AryWageType.RemoveAll();
  31. m_AryWageTypeMoney.RemoveAll();
  32. m_fEaryResultMoney = 0.0;
  33. }
  34. BOOL CStaffWage::GetStaffWageData(IN CString strStaffName, IN CString strWageStartDate, IN CString strWageEndofDate)
  35. {
  36. m_strStaffName = strStaffName;
  37. m_strWageStartDate = strWageStartDate;
  38. m_strWageEndofDate = strWageEndofDate;
  39. CString strTemp = _T("");
  40. CString strFilter = _T("");
  41. // 0.case 34:查询员工;
  42. strTemp.Format(_T("name = '%s' and dimission='在职';"), m_strStaffName);
  43. strFilter += strTemp;
  44. // 1.case 242:查询所有收款详情;
  45. strTemp.Format(_T("(Paydate >= '%s' and Paydate <= '%s' ) or (PhotoStatus = 'OK' and PhotogOfPaydate >= '%s' and PhotogOfPaydate <= '%s');"), strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate);
  46. strFilter += strTemp;
  47. #ifdef _DEBUG
  48. WriteTextLog(_T("case 242:%s"), strTemp);
  49. #endif
  50. // 2.case 243:查询收款订单;
  51. strTemp.Format(
  52. _T("([ren] = '%s' or [ren2] = '%s' or")
  53. _T(" [waiter1] = '%s' or [waiter12] = '%s' or [waiter13] = '%s' or [waiter14] = '%s' or")
  54. _T(" [waiter2] = '%s' or [waiter22] = '%s' or [waiter23] = '%s' or [waiter24] = '%s' or")
  55. _T(" [waiter3] = '%s' or [waiter4] = '%s' or [waiter5] = '%s' or")
  56. _T(" [waiter6] = '%s' or [waiter7] = '%s' or [waiter8] = '%s' or [waiter9] = '%s')")
  57. _T(" and id in (select distinct id from Payroll where (Paydate >= '%s' and Paydate <= '%s') or (PhotoStatus = 'OK' and PhotogOfPaydate >= '%s' and PhotogOfPaydate <= '%s'));"),
  58. m_strStaffName, // 主门市;
  59. m_strStaffName, // 副门市;
  60. m_strStaffName, // 主摄影;
  61. m_strStaffName, // 摄影2;
  62. m_strStaffName, // 摄影3;
  63. m_strStaffName, // 摄影4;
  64. m_strStaffName, // 主化妆;
  65. m_strStaffName, // 化妆2;
  66. m_strStaffName, // 化妆3;
  67. m_strStaffName, // 化妆4;
  68. m_strStaffName, // 选片师;
  69. m_strStaffName, // 设计师;
  70. m_strStaffName, // 初修师;
  71. m_strStaffName, // 接单人;
  72. m_strStaffName, // 精修师;
  73. m_strStaffName, // 看设计人;
  74. m_strStaffName, // ???;
  75. strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate);
  76. strFilter += strTemp;
  77. #ifdef _DEBUG
  78. WriteTextLog(_T("case 243:%s"), strTemp);
  79. #endif
  80. // 3.case 198:查询其他收入;
  81. strTemp.Format(
  82. _T("[date] >= '%s' and [date] <= '%s' and [renyuan3] = '%s';"),
  83. strWageStartDate, strWageEndofDate, strStaffName);
  84. strFilter += strTemp;
  85. // 4.case 142:查询我的工作-mywork;
  86. strTemp.Format(_T("datetime >= '%s' and datetime <= '%s' and name = '%s';"),strWageStartDate, strWageEndofDate, strStaffName);
  87. strFilter += strTemp;
  88. // 5.case 192:查询摄影师景点工作;
  89. strTemp.Format(_T("[date] >= '%s' and [date] <= '%s' and [status] = 'OK' and ([waiter1] = '%s' or [waiter12] = '%s' or [waiter2] = '%s' or [waiter22] = '%s');"),
  90. strWageStartDate, strWageEndofDate, strStaffName,strStaffName,strStaffName,strStaffName);
  91. strFilter += strTemp;
  92. // 6.case 193:查询数码工作记录;
  93. strTemp.Format(
  94. _T("([time8] >='%s' and [time8]<='%s' and [status4]='OK' and [waiter5]='%s') or ")
  95. _T("([time9] >='%s' and [time9]<='%s' and [status6]='OK' and [waiter7]='%s') or ")
  96. _T("([time10] >='%s' and [time10]<='%s' and [status5]='OK' and [waiter4]='%s');"),
  97. strWageStartDate, strWageEndofDate, strStaffName,
  98. strWageStartDate, strWageEndofDate, strStaffName,
  99. strWageStartDate, strWageEndofDate, strStaffName);
  100. strFilter += strTemp;
  101. g_sendhead.code[0] = 34;
  102. g_sendhead.code[1] = 242;
  103. g_sendhead.code[2] = 243;
  104. g_sendhead.code[3] = 198;
  105. g_sendhead.code[4] = 142;
  106. g_sendhead.code[5] = 192;
  107. g_sendhead.code[6] = 193;
  108. g_sendhead.tabcount = 7;
  109. g_sendhead.bsql = FALSE;
  110. g_pMainWnd->ProcessChatMessageRequest2(strFilter);
  111. if ( !g_bSendOK )
  112. return FALSE;
  113. ClearStaffWageData();
  114. DataToArray(&m_AryStaffDetail, &m_AryReceiptRecords, &m_AryOrderDetail, &m_AryOtherIncomeRecord, &m_AryMyWorkRecord, &m_ArySceneryWorkRecord, &m_AryDigitalWorkRecord);
  115. #ifdef _DEBUG
  116. int nSize = m_AryReceiptRecords.GetSize();
  117. for (int i = 0; i < nSize; i++ )
  118. {
  119. WriteTextLog(_T("\n"));
  120. for ( int j = 0; j < m_AryReceiptRecords.ElementAt(i).GetSize(); j++ )
  121. {
  122. WriteTextLog(_T("%s"), m_AryReceiptRecords.ElementAt(i).ElementAt(j));
  123. }
  124. }
  125. #endif
  126. return TRUE;
  127. }
  128. /************************************************************************/
  129. /* 函数:[1/3/2017 IT];
  130. /* 描述:摄影师和化妆师的前期业绩;
  131. /* 参数:;
  132. /* [IN] :;
  133. /* [OUT] :;
  134. /* [IN/OUT] :;
  135. /* 返回:void;
  136. /* 注意:;
  137. /* 示例:;
  138. /*
  139. /* 修改:;
  140. /* 日期:;
  141. /* 内容:;
  142. /************************************************************************/
  143. void CStaffWage::GetPhotographerAndMakeupArtistServeRecord(IN CString strOrderNum, IN BOOL &bPhotographer, IN BOOL &bMakeupArtist, IN FLOAT &fPhotographerPercent, IN FLOAT &fMakeupArtistPercent)
  144. {
  145. bPhotographer = bMakeupArtist = FALSE;
  146. INT nSize = m_AryOrderDetail.GetSize();
  147. for ( int i = 0; i < nSize; i++ )
  148. {
  149. // 是否指定要查询的订单;
  150. if ( m_AryOrderDetail.ElementAt(i).ElementAt(0) == strOrderNum )
  151. {
  152. // 主摄影师、摄影师2~4只能有一个;
  153. if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(1) )
  154. {// 是否是有主摄影师服务提成;
  155. bPhotographer = TRUE;
  156. // 获取折扣;
  157. fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(5))/100.0;
  158. if ( fPhotographerPercent == 0.0 )
  159. fPhotographerPercent = 1.0;
  160. }
  161. else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(2) )
  162. {// 是否是有摄影师2服务提成;
  163. bPhotographer = TRUE;
  164. // 获取折扣;
  165. fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(6))/100.0;
  166. if ( fPhotographerPercent == 0.0 )
  167. fPhotographerPercent = 1.0;
  168. }
  169. else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(3) )
  170. {// 是否是有摄影师3服务提成;
  171. bPhotographer = TRUE;
  172. // 获取折扣;
  173. fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(7))/100.0;
  174. if ( fPhotographerPercent == 0.0 )
  175. fPhotographerPercent = 1.0;
  176. }
  177. else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(4) )
  178. {// 是否是有摄影师4服务提成;
  179. bPhotographer = TRUE;
  180. // 获取折扣;
  181. fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(8))/100.0;
  182. if ( fPhotographerPercent == 0.0 )
  183. fPhotographerPercent = 1.0;
  184. }
  185. // 主化妆师、化妆师2~4只能有一个;
  186. if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(9) )
  187. {// 是否是主化妆师服务记录;
  188. bMakeupArtist = TRUE;
  189. // 获取折扣;
  190. fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(13))/100.0;
  191. if ( fMakeupArtistPercent == 0.0 )
  192. fMakeupArtistPercent = 1.0;
  193. }
  194. else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(10) )
  195. {// 是否是有化妆师2服务提成;
  196. bMakeupArtist = TRUE;
  197. // 获取折扣;
  198. fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(14))/100.0;
  199. if ( fMakeupArtistPercent == 0.0 )
  200. fMakeupArtistPercent = 1.0;
  201. }
  202. else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(11) )
  203. {// 是否是有化妆师3服务提成;
  204. bMakeupArtist = TRUE;
  205. // 获取折扣;
  206. fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(15))/100.0;
  207. if ( fMakeupArtistPercent == 0.0 )
  208. fMakeupArtistPercent = 1.0;
  209. }
  210. else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(12) )
  211. {// 是否是有化妆师4服务提成;
  212. bMakeupArtist = TRUE;
  213. // 获取折扣;
  214. fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(16))/100.0;
  215. if ( fMakeupArtistPercent == 0.0 )
  216. fMakeupArtistPercent = 1.0;
  217. }
  218. break;
  219. }
  220. }
  221. }
  222. /************************************************************************/
  223. /* 函数:[1/3/2017 IT];
  224. /* 描述:主副门市提成;
  225. /* 参数:;
  226. /* [IN] :;
  227. /* [OUT] :;
  228. /* [IN/OUT] :;
  229. /* 返回:void;
  230. /* 注意:;
  231. /* 示例:;
  232. /*
  233. /* 修改:;
  234. /* 日期:;
  235. /* 内容:;
  236. /************************************************************************/
  237. void CStaffWage::GetSalesServerRecord(IN CString strOrderNum, IN BOOL &bSalesperson1, IN BOOL &bSalesperson2, IN FLOAT &fbSalesperson1Percent, IN FLOAT &fbSalesperson2Percent)
  238. {
  239. bSalesperson1 = bSalesperson2 = FALSE;
  240. INT nSize = m_AryOrderDetail.GetSize();
  241. for ( int i = 0; i < nSize; i++ )
  242. {
  243. // 是否指定要查询的订单;
  244. if ( m_AryOrderDetail.ElementAt(i).ElementAt(0) == strOrderNum )
  245. {
  246. #if 0 // 有误,如果主副门市都存在时;
  247. // 主门市;
  248. if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(17) )
  249. {// 是否是主门市提成;
  250. bSalesperson1 = TRUE;
  251. // 获取折扣;
  252. fbSalesperson1Percent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(19))/100.0;
  253. if ( fbSalesperson1Percent == 0.0 )
  254. fbSalesperson1Percent = 1.0;
  255. }
  256. // 副门市;
  257. if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(18) )
  258. {// 是否是副门市提成;
  259. bSalesperson2 = TRUE;
  260. // 获取折扣;
  261. fbSalesperson2Percent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(20))/100.0;
  262. if ( fbSalesperson2Percent == 0.0 )
  263. fbSalesperson2Percent = 1.0;
  264. }
  265. #else
  266. // 主门市;
  267. CString strStaff1 = m_AryOrderDetail.ElementAt(i).ElementAt(17);
  268. CString strStaff1Percent = m_AryOrderDetail.ElementAt(i).ElementAt(19);
  269. // 副门市;
  270. CString strStaff2 = m_AryOrderDetail.ElementAt(i).ElementAt(18);
  271. CString strStaff2Percent = m_AryOrderDetail.ElementAt(i).ElementAt(20);
  272. if ( strStaff1.IsEmpty() || strStaff2.IsEmpty() )
  273. {// 没有主或副门市;
  274. if ( !strStaff1.IsEmpty() && m_strStaffName == strStaff1 )
  275. {
  276. bSalesperson1 = TRUE;
  277. if ( strStaff1Percent.IsEmpty() )
  278. fbSalesperson1Percent = 1.0;
  279. else
  280. fbSalesperson1Percent = _tstof(strStaff1Percent)/100.0;
  281. }
  282. if ( !strStaff2.IsEmpty() && m_strStaffName == strStaff2 )
  283. {
  284. bSalesperson2 = TRUE;
  285. if ( strStaff2Percent.IsEmpty() )
  286. fbSalesperson2Percent = 1.0;
  287. else
  288. fbSalesperson2Percent = _tstof(strStaff2Percent)/100.0;
  289. }
  290. }
  291. else
  292. {
  293. if (strStaff1Percent.IsEmpty() && strStaff2Percent.IsEmpty())
  294. {// 同时空,各一半;
  295. if ( m_strStaffName == strStaff1 )
  296. {
  297. bSalesperson1 = TRUE;
  298. fbSalesperson1Percent = 0.5;
  299. }
  300. if ( m_strStaffName == strStaff2 )
  301. {
  302. bSalesperson2 = TRUE;
  303. fbSalesperson2Percent = 0.5;
  304. }
  305. }
  306. else
  307. {
  308. if ( !strStaff1Percent.IsEmpty() && strStaff2Percent.IsEmpty())
  309. {// 只有主门市;
  310. if ( m_strStaffName == strStaff1 )
  311. {
  312. bSalesperson1 = TRUE;
  313. fbSalesperson1Percent = 1.0;
  314. }
  315. }
  316. else if ( strStaff1Percent.IsEmpty() && !strStaff2Percent.IsEmpty() )
  317. {// 只有副门市;
  318. if ( m_strStaffName == strStaff2 )
  319. {
  320. bSalesperson2 = TRUE;
  321. fbSalesperson2Percent = 1.0;
  322. }
  323. }
  324. else
  325. {
  326. if ( m_strStaffName == strStaff1 )
  327. {
  328. bSalesperson1 = TRUE;
  329. fbSalesperson1Percent = _tstof(strStaff1Percent)/100.0;
  330. }
  331. if ( m_strStaffName == strStaff2 )
  332. {
  333. bSalesperson2 = TRUE;
  334. fbSalesperson2Percent = _tstof(strStaff2Percent)/100.0;
  335. }
  336. }
  337. }
  338. }
  339. #endif
  340. break;
  341. }
  342. }
  343. }
  344. BOOL CStaffWage::GetEarlyResults(IN CArray<CStringArray, CStringArray>& AryEarlyResult) // 获取前期业绩;
  345. {
  346. INT nSize = m_AryReceiptRecords.GetSize();
  347. if ( nSize == 0 ) // 有些员工是没有业绩的,如财务账号;
  348. return FALSE;
  349. AryEarlyResult.SetSize(nSize*11, 1);
  350. INT i = 0;
  351. INT nIndex = -1;
  352. INT nArypos = 0;
  353. CString strMoney;
  354. BOOL bPhotographer,bMakeupArtist;
  355. FLOAT fPhotographer, fMakeupArtist;
  356. BOOL bSalesperson1,bSalesperson2;
  357. FLOAT fbSalesperson1Percent, fbSalesperson2Percent;
  358. for ( i = 0; i < nSize; i++ )
  359. {
  360. #ifdef _DEBUG
  361. // 调试数据用;
  362. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(0) == _T("20170307-002") /* 订单号 */ || m_AryReceiptRecords.ElementAt(i).ElementAt(1) == _T("苏国平") /*顾客1*/ )
  363. {
  364. OutputDebugString(_T("调试到指定订单\n"));
  365. }
  366. #endif
  367. // 前期业绩;
  368. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(5) == _T("3") || m_AryReceiptRecords.ElementAt(i).ElementAt(5) == _T("4"))
  369. {
  370. fPhotographer = fMakeupArtist = 0.0;
  371. bPhotographer = bMakeupArtist = FALSE;
  372. // 1.这笔收款,员工是否有摄影+化妆服务项;
  373. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(9) == _T("OK") && m_AryReceiptRecords.ElementAt(i).ElementAt(10) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(10) <= m_strWageEndofDate )
  374. {
  375. GetPhotographerAndMakeupArtistServeRecord(m_AryReceiptRecords.ElementAt(i).ElementAt(0), bPhotographer, bMakeupArtist, fPhotographer, fMakeupArtist);
  376. // ElementAt(56):工资设置:摄影师也有前期提成;
  377. if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(56)) && bPhotographer )
  378. {// 摄影前期;
  379. // 按提成百分比计算;
  380. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fPhotographer);
  381. // 累加前期业绩;
  382. m_fEaryResultMoney += _tstof(strMoney);
  383. // 累加摄影工资类型金额;
  384. if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_PHOTOGRAPHER)) == -1 )
  385. {
  386. m_AryWageType.Add(WAGE_EARLY_PHOTOGRAPHER);
  387. m_AryWageTypeMoney.Add(_tstof(strMoney));
  388. }
  389. else
  390. {
  391. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  392. }
  393. // 保存该类型工资记录;
  394. AryEarlyResult.ElementAt(nArypos).RemoveAll();
  395. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  396. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(10)); // 工资日期;
  397. AryEarlyResult.ElementAt(nArypos).Add(WAGE_EARLY_PHOTOGRAPHER); // 工资类型;
  398. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  399. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名;
  400. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型;
  401. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式;
  402. nArypos++;
  403. }
  404. // ElementAt(57):工资设置:化妆师也有前期提成;
  405. if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(57)) && bMakeupArtist )
  406. {// 化妆前期;
  407. // 按提成百分比计算;
  408. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fMakeupArtist);
  409. // 累加前期业绩;
  410. m_fEaryResultMoney += _tstof(strMoney);
  411. // 累加摄影工资类型金额;
  412. if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_MAKEUPARTIST)) == -1 )
  413. {
  414. m_AryWageType.Add(WAGE_EARLY_MAKEUPARTIST);
  415. m_AryWageTypeMoney.Add(_tstof(strMoney));
  416. }
  417. else
  418. {
  419. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  420. }
  421. // 保存该类型工资记录;
  422. AryEarlyResult.ElementAt(nArypos).RemoveAll();
  423. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  424. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(10)); // 工资日期;
  425. AryEarlyResult.ElementAt(nArypos).Add(WAGE_EARLY_MAKEUPARTIST); // 工资类型;
  426. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  427. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名;
  428. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型;
  429. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式;
  430. nArypos++;
  431. }
  432. }
  433. // 2.这笔收款,员工是否有门市服务项;
  434. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate )
  435. {
  436. bSalesperson1 = bSalesperson2 = 0.0;
  437. fbSalesperson1Percent = fbSalesperson2Percent = FALSE;
  438. GetSalesServerRecord(m_AryReceiptRecords.ElementAt(i).ElementAt(0), bSalesperson1, bSalesperson2, fbSalesperson1Percent, fbSalesperson2Percent);
  439. if ( bSalesperson1 )
  440. {// 主门市;
  441. // 按提成百分比计算;
  442. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fbSalesperson1Percent);
  443. // 累加前期业绩;
  444. m_fEaryResultMoney += _tstof(strMoney);
  445. // 累加门市类型金额;
  446. if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_SALES)) == -1 )
  447. {
  448. m_AryWageType.Add(WAGE_EARLY_SALES);
  449. m_AryWageTypeMoney.Add(_tstof(strMoney));
  450. }
  451. else
  452. {
  453. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  454. }
  455. // 保存该类型工资记录;
  456. AryEarlyResult.ElementAt(nArypos).RemoveAll();
  457. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  458. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(7)); // 工资日期;
  459. AryEarlyResult.ElementAt(nArypos).Add(WAGE_EARLY_SALES); // 工资类型;
  460. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  461. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名;
  462. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型;
  463. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式;
  464. nArypos++;
  465. }
  466. if ( bSalesperson2 )
  467. {// 副门市;
  468. // 按提成百分比计算;
  469. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fbSalesperson2Percent);
  470. // 累加前期业绩;
  471. m_fEaryResultMoney += _tstof(strMoney);
  472. // 累加门市类型金额;
  473. if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_SALES)) == -1 )
  474. {
  475. m_AryWageType.Add(WAGE_EARLY_SALES);
  476. m_AryWageTypeMoney.Add(_tstof(strMoney));
  477. }
  478. else
  479. {
  480. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  481. }
  482. // 保存该类型工资记录;
  483. AryEarlyResult.ElementAt(nArypos).RemoveAll();
  484. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  485. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(7)); // 工资日期;
  486. AryEarlyResult.ElementAt(nArypos).Add(WAGE_EARLY_SALES); // 工资类型;
  487. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  488. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名;
  489. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型;
  490. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式;
  491. nArypos++;
  492. }
  493. }
  494. }
  495. // 选片二销;
  496. else if ( m_AryReceiptRecords.ElementAt(i).ElementAt(12) == _T("选片二销") )
  497. {
  498. bPhotographer = bMakeupArtist = FALSE;
  499. fPhotographer = fMakeupArtist = 0.0;
  500. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(9) == _T("OK") && m_AryReceiptRecords.ElementAt(i).ElementAt(10) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(10) <= m_strWageEndofDate )
  501. {
  502. GetPhotographerAndMakeupArtistServeRecord(m_AryReceiptRecords.ElementAt(i).ElementAt(0), bPhotographer, bMakeupArtist, fPhotographer, fMakeupArtist);
  503. // ElementAt(41):工资设置:摄影师也有选片二销提成;
  504. if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(41)) && bPhotographer )
  505. {
  506. // 按提成百分比计算;
  507. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fPhotographer);
  508. // 累加选片二销业绩;
  509. m_fSelectMoney += _tstof(strMoney);
  510. // 累加摄影也有选片二销工资类型金额;
  511. if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_PHOTOGRAPHER)) == -1 )
  512. {
  513. m_AryWageType.Add(WAGE_SEL_PHOTOGRAPHER);
  514. m_AryWageTypeMoney.Add(_tstof(strMoney));
  515. }
  516. else
  517. {
  518. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  519. }
  520. // 保存该类型工资记录;
  521. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  522. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(10)); // 工资日期;
  523. AryEarlyResult.ElementAt(nArypos).Add(WAGE_SEL_PHOTOGRAPHER); // 工资类型;
  524. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  525. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名;
  526. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型;
  527. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式;
  528. nArypos++;
  529. }
  530. // ElementAt(42):工资设置:化妆师或引导师也有选片二销提成;
  531. if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(42)) && bMakeupArtist )
  532. {
  533. // 按提成百分比计算;
  534. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fMakeupArtist);
  535. // 累加选片二销业绩;
  536. m_fSelectMoney += _tstof(strMoney);
  537. // 累加化妆也有选片二销工资类型金额;
  538. if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_MAKEUPARTIST)) == -1 )
  539. {
  540. m_AryWageType.Add(WAGE_SEL_MAKEUPARTIST);
  541. m_AryWageTypeMoney.Add(_tstof(strMoney));
  542. }
  543. else
  544. {
  545. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  546. }
  547. // 保存该类型工资记录;
  548. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  549. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(10)); // 工资日期;
  550. AryEarlyResult.ElementAt(nArypos).Add(WAGE_SEL_MAKEUPARTIST); // 工资类型;
  551. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  552. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名;
  553. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型;
  554. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式;
  555. nArypos++;
  556. }
  557. }
  558. // 这笔收款,员工是否还是本次选片二销的选片师;
  559. if ( m_strStaffName == m_AryReceiptRecords.ElementAt(i).ElementAt(11) && m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate )
  560. {
  561. // 按提成百分比计算;
  562. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) );
  563. // 累加选片二销业绩;
  564. m_fSelectMoney += _tstof(strMoney);
  565. // 累加化妆也有选片二销工资类型金额;
  566. if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_SALES)) == -1 )
  567. {
  568. m_AryWageType.Add(WAGE_SEL_SALES);
  569. m_AryWageTypeMoney.Add(_tstof(strMoney));
  570. }
  571. else
  572. {
  573. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  574. }
  575. // 保存该类型工资记录;
  576. AryEarlyResult.ElementAt(nArypos).RemoveAll();
  577. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  578. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(7)); // 工资日期;
  579. AryEarlyResult.ElementAt(nArypos).Add(WAGE_SEL_SALES); // 工资类型;
  580. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  581. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名;
  582. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型;
  583. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式;
  584. nArypos++;
  585. }
  586. }
  587. // 其他订单二销;
  588. else
  589. {
  590. // 这笔收款,员工是否还是本次其他订单二销的促成者;
  591. if ( m_strStaffName == m_AryReceiptRecords.ElementAt(i).ElementAt(11) && m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate )
  592. {
  593. // 获取提成;
  594. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)));
  595. // 累加选片二销业绩;
  596. m_fSelectMoney += _tstof(strMoney);
  597. // 累加化妆也有选片二销工资类型金额;
  598. if ( (nIndex = FindArray(&m_AryWageType, m_AryReceiptRecords.ElementAt(i).ElementAt(12))) == -1 )
  599. {
  600. m_AryWageType.Add(m_AryReceiptRecords.ElementAt(i).ElementAt(12));
  601. m_AryWageTypeMoney.Add(_tstof(strMoney));
  602. }
  603. else
  604. {
  605. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  606. }
  607. // 保存该类型工资记录;
  608. AryEarlyResult.ElementAt(nArypos).RemoveAll();
  609. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  610. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(7)); // 工资日期;
  611. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(12)); // 工资类型;
  612. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  613. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名;
  614. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型;
  615. AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式;
  616. nArypos++;
  617. }
  618. }
  619. }
  620. // 其他收入业绩(散客消费);
  621. nSize = m_AryOtherIncomeRecord.GetSize();
  622. for ( i = 0; i < nSize; i++ )
  623. {
  624. strMoney.Format(_T("%0.2f"), _tstof(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(4)));
  625. //if ( m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3) == WAGE_SEC_PHOTOGRAPHER)
  626. // 累加化妆也有选片二销工资类型金额;
  627. if ( (nIndex = FindArray(&m_AryWageType, m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3))) == -1 )
  628. {
  629. m_AryWageType.Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3));
  630. m_AryWageTypeMoney.Add(_tstof(strMoney));
  631. }
  632. else
  633. {
  634. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  635. }
  636. // 保存该类型工资记录;
  637. AryEarlyResult.ElementAt(nArypos).RemoveAll();
  638. AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额;
  639. AryEarlyResult.ElementAt(nArypos).Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(5)); // 工资日期;
  640. AryEarlyResult.ElementAt(nArypos).Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3)); // 工资类型;
  641. AryEarlyResult.ElementAt(nArypos).Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(1)); // 顾客1姓名;
  642. AryEarlyResult.ElementAt(nArypos).Add(_T("")); // 顾客2姓名;
  643. AryEarlyResult.ElementAt(nArypos).Add(_T("")); // 套系类型;
  644. AryEarlyResult.ElementAt(nArypos).Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(7)); // 付款方式;
  645. nArypos++;
  646. }
  647. AryEarlyResult.SetSize(nArypos);
  648. return FALSE;
  649. }
  650. #ifndef ALL_STAFF_WAGE
  651. CString CStaffWage::GetRule(CString name)
  652. {
  653. CString oldrule = g_cominfoarray.ElementAt(0).ElementAt(77);
  654. CString header = "$" + name + ":";
  655. CString left, right;
  656. int pos = oldrule.Find(header);
  657. if (pos != -1)
  658. {
  659. right = oldrule.Right(oldrule.GetLength() - pos - header.GetLength());
  660. pos = right.Find("$");
  661. if (pos != -1)
  662. right = right.Left(pos);
  663. right = header + right;
  664. return right;
  665. }
  666. return "";
  667. }
  668. float CStaffWage::GetSalaryFromRule(float fmoney, CString rule)
  669. {
  670. float fresult = 0;
  671. int pos = rule.Find(":");
  672. if (pos == -1)return 0;
  673. rule = rule.Right(rule.GetLength() - pos - 1);
  674. CStringArray rulearray;
  675. pos = rule.Find(";");
  676. while (pos != -1)
  677. {
  678. rulearray.Add(rule.Left(pos));
  679. rule = rule.Right(rule.GetLength() - pos - 1);
  680. pos = rule.Find(";");
  681. }
  682. BOOL check1 = atoi(rule);
  683. if (rulearray.GetSize() == 0)return 0;
  684. CString str, temp;
  685. int money1, money2;
  686. float frate;
  687. if (check1 == 0)
  688. {
  689. for (int i = 0; i < rulearray.GetSize(); i++)
  690. {
  691. temp = rulearray.ElementAt(i);
  692. int pos = temp.Find(" ");
  693. temp = temp.Left(pos);
  694. pos = temp.Find("-");
  695. money1 = atoi(temp.Left(pos));
  696. money2 = atoi(temp.Right(temp.GetLength() - pos - 1));
  697. if ((i == rulearray.GetSize() - 1) || (fmoney >= money1 && fmoney <= money2))
  698. {
  699. temp = rulearray.ElementAt(i);
  700. pos = temp.Find(":");
  701. temp = temp.Right(temp.GetLength() - pos - 1);
  702. temp.TrimRight("%");
  703. frate = atof(temp) / 100.0;
  704. fresult = frate*fmoney;
  705. return fresult;
  706. }
  707. }
  708. }
  709. else//////
  710. {
  711. for (int i = 0; i < rulearray.GetSize(); i++)
  712. {
  713. temp = rulearray.ElementAt(i);
  714. int pos = temp.Find(" ");
  715. temp = temp.Left(pos);
  716. pos = temp.Find("-");
  717. money1 = atoi(temp.Left(pos));
  718. money2 = atoi(temp.Right(temp.GetLength() - pos - 1));
  719. if ((i == rulearray.GetSize() - 1) || (fmoney >= money1 && fmoney <= money2))
  720. {
  721. temp = rulearray.ElementAt(i);
  722. pos = temp.Find(":");
  723. temp = temp.Right(temp.GetLength() - pos - 1);
  724. temp.TrimRight("%");
  725. frate = atof(temp) / 100.0;
  726. float dtmoney = fmoney - money1;
  727. fresult += frate*dtmoney;
  728. if (i == 0)//只有一条规则
  729. {
  730. fresult = frate*fmoney;
  731. return fresult;
  732. }
  733. while (i)
  734. {
  735. i--;
  736. temp = rulearray.ElementAt(i);
  737. pos = temp.Find(" ");
  738. temp = temp.Left(pos);
  739. pos = temp.Find("-");
  740. money1 = atoi(temp.Left(pos));
  741. money2 = atoi(temp.Right(temp.GetLength() - pos - 1));
  742. temp = rulearray.ElementAt(i);
  743. pos = temp.Find(":");
  744. temp = temp.Right(temp.GetLength() - pos - 1);
  745. temp.TrimRight("%");
  746. frate = atof(temp) / 100.0;
  747. dtmoney = money2 - money1;
  748. fresult += frate*dtmoney;
  749. }
  750. return fresult;
  751. }
  752. }
  753. }
  754. return fresult;
  755. }
  756. void CStaffWage::GetPhotographerAndMakeupArtistServeRecord(IN CString strStaffName, IN CString strOrderNum, IN BOOL &bPhotographer, IN BOOL &bMakeupArtist, IN FLOAT &fPhotographerPercent, IN FLOAT &fMakeupArtistPercent)
  757. {
  758. bPhotographer = bMakeupArtist = FALSE;
  759. INT nSize = m_AryOrderDetail.GetSize();
  760. for ( int i = 0; i < nSize; i++ )
  761. {
  762. // 是否指定要查询的订单;
  763. if ( m_AryOrderDetail.ElementAt(i).ElementAt(0) == strOrderNum )
  764. {
  765. // 主摄影师、摄影师2~4只能有一个;
  766. if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(1) )
  767. {// 是否是有主摄影师服务提成;
  768. bPhotographer = TRUE;
  769. // 获取折扣;
  770. fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(5))/100.0;
  771. if ( fPhotographerPercent == 0.0 )
  772. fPhotographerPercent = 1.0;
  773. }
  774. else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(2) )
  775. {// 是否是有摄影师2服务提成;
  776. bPhotographer = TRUE;
  777. // 获取折扣;
  778. fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(6))/100.0;
  779. if ( fPhotographerPercent == 0.0 )
  780. fPhotographerPercent = 1.0;
  781. }
  782. else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(3) )
  783. {// 是否是有摄影师3服务提成;
  784. bPhotographer = TRUE;
  785. // 获取折扣;
  786. fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(7))/100.0;
  787. if ( fPhotographerPercent == 0.0 )
  788. fPhotographerPercent = 1.0;
  789. }
  790. else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(4) )
  791. {// 是否是有摄影师4服务提成;
  792. bPhotographer = TRUE;
  793. // 获取折扣;
  794. fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(8))/100.0;
  795. if ( fPhotographerPercent == 0.0 )
  796. fPhotographerPercent = 1.0;
  797. }
  798. // 主化妆师、化妆师2~4只能有一个;
  799. if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(9) )
  800. {// 是否是主化妆师服务记录;
  801. bMakeupArtist = TRUE;
  802. // 获取折扣;
  803. fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(13))/100.0;
  804. if ( fMakeupArtistPercent == 0.0 )
  805. fMakeupArtistPercent = 1.0;
  806. }
  807. else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(10) )
  808. {// 是否是有化妆师2服务提成;
  809. bMakeupArtist = TRUE;
  810. // 获取折扣;
  811. fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(14))/100.0;
  812. if ( fMakeupArtistPercent == 0.0 )
  813. fMakeupArtistPercent = 1.0;
  814. }
  815. else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(11) )
  816. {// 是否是有化妆师3服务提成;
  817. bMakeupArtist = TRUE;
  818. // 获取折扣;
  819. fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(15))/100.0;
  820. if ( fMakeupArtistPercent == 0.0 )
  821. fMakeupArtistPercent = 1.0;
  822. }
  823. else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(12) )
  824. {// 是否是有化妆师4服务提成;
  825. bMakeupArtist = TRUE;
  826. // 获取折扣;
  827. fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(16))/100.0;
  828. if ( fMakeupArtistPercent == 0.0 )
  829. fMakeupArtistPercent = 1.0;
  830. }
  831. break;
  832. }
  833. }
  834. }
  835. void CStaffWage::GetSalesServerRecord(IN CString strStaffName, IN CString strOrderNum, IN BOOL &bSalesperson1, IN BOOL &bSalesperson2, IN FLOAT &fbSalesperson1Percent, IN FLOAT &fbSalesperson2Percent)
  836. {
  837. bSalesperson1 = bSalesperson2 = FALSE;
  838. INT nSize = m_AryOrderDetail.GetSize();
  839. for ( int i = 0; i < nSize; i++ )
  840. {
  841. // 是否指定要查询的订单;
  842. if ( m_AryOrderDetail.ElementAt(i).ElementAt(0) == strOrderNum )
  843. {
  844. #if 0
  845. // 主门市;
  846. if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(17) )
  847. {// 是否是主门市提成;
  848. bSalesperson1 = TRUE;
  849. // 获取折扣;
  850. fbSalesperson1Percent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(19))/100.0;
  851. if ( fbSalesperson1Percent == 0.0 )
  852. fbSalesperson1Percent = 1.0;
  853. }
  854. // 副门市;
  855. if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(18) )
  856. {// 是否是副门市提成;
  857. bSalesperson2 = TRUE;
  858. // 获取折扣;
  859. fbSalesperson2Percent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(20))/100.0;
  860. if ( fbSalesperson2Percent == 0.0 )
  861. fbSalesperson2Percent = 1.0;
  862. }
  863. #else
  864. // 主门市;
  865. CString strStaff1 = m_AryOrderDetail.ElementAt(i).ElementAt(17);
  866. CString strStaff1Percent = m_AryOrderDetail.ElementAt(i).ElementAt(19);
  867. // 副门市;
  868. CString strStaff2 = m_AryOrderDetail.ElementAt(i).ElementAt(18);
  869. CString strStaff2Percent = m_AryOrderDetail.ElementAt(i).ElementAt(20);
  870. if ( strStaff1.IsEmpty() || strStaff2.IsEmpty() )
  871. {// 没有主或副门市;
  872. if ( !strStaff1.IsEmpty() && strStaffName == strStaff1 )
  873. {
  874. bSalesperson1 = TRUE;
  875. if ( strStaff1Percent.IsEmpty() )
  876. fbSalesperson1Percent = 1.0;
  877. else
  878. fbSalesperson1Percent = _tstof(strStaff1Percent)/100.0;
  879. }
  880. if ( !strStaff2.IsEmpty() && strStaffName == strStaff2 )
  881. {
  882. bSalesperson2 = TRUE;
  883. if ( strStaff2Percent.IsEmpty() )
  884. fbSalesperson2Percent = 1.0;
  885. else
  886. fbSalesperson2Percent = _tstof(strStaff2Percent)/100.0;
  887. }
  888. }
  889. else
  890. {
  891. if (strStaff1Percent.IsEmpty() && strStaff2Percent.IsEmpty())
  892. {// 同时空,各一半;
  893. if ( strStaffName == strStaff1 )
  894. {
  895. bSalesperson1 = TRUE;
  896. fbSalesperson1Percent = 0.5;
  897. }
  898. if ( strStaffName == strStaff2 )
  899. {
  900. bSalesperson2 = TRUE;
  901. fbSalesperson2Percent = 0.5;
  902. }
  903. }
  904. else
  905. {
  906. if ( !strStaff1Percent.IsEmpty() && strStaff2Percent.IsEmpty())
  907. {// 只有主门市;
  908. if ( strStaffName == strStaff1 )
  909. {
  910. bSalesperson1 = TRUE;
  911. fbSalesperson1Percent = 1.0;
  912. }
  913. }
  914. else if ( strStaff1Percent.IsEmpty() && !strStaff2Percent.IsEmpty() )
  915. {// 只有副门市;
  916. if ( strStaffName == strStaff2 )
  917. {
  918. bSalesperson2 = TRUE;
  919. fbSalesperson2Percent = 1.0;
  920. }
  921. }
  922. else
  923. {
  924. if ( strStaffName == strStaff1 )
  925. {
  926. bSalesperson1 = TRUE;
  927. fbSalesperson1Percent = _tstof(strStaff1Percent)/100.0;
  928. }
  929. if ( strStaffName == strStaff2 )
  930. {
  931. bSalesperson2 = TRUE;
  932. fbSalesperson2Percent = _tstof(strStaff2Percent)/100.0;
  933. }
  934. }
  935. }
  936. }
  937. #endif
  938. break;
  939. }
  940. }
  941. }
  942. BOOL CStaffWage::GetAllStaffWageData(IN CString strWageStartDate, IN CString strWageEndofDate)
  943. {
  944. m_strWageStartDate = strWageStartDate;
  945. m_strWageEndofDate = strWageEndofDate;
  946. CString strTemp = _T("");
  947. CString strFilter = _T("");
  948. // case 34:查询员工;
  949. strTemp.Format(_T("dimission='在职';"));
  950. strFilter += strTemp;
  951. // case 242:查询所有收款详情;
  952. strTemp.Format(_T("(Paydate >= '%s' and Paydate <= '%s' ) or (PhotoStatus = 'OK' and PhotogOfPaydate >= '%s' and PhotogOfPaydate <= '%s');"), strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate);
  953. strFilter += strTemp;
  954. // case 243:查询收款订单;
  955. strTemp.Format(_T("id in (select distinct id from Payroll where (Paydate >= '%s' and Paydate <= '%s') or (PhotoStatus = 'OK' and PhotogOfPaydate >= '%s' and PhotogOfPaydate <= '%s'));"),
  956. strWageStartDate,
  957. strWageEndofDate,
  958. strWageStartDate,
  959. strWageEndofDate);
  960. strFilter += strTemp;
  961. #ifdef _DEBUG
  962. WriteTextLog(_T("case 243:%s"), strTemp);
  963. #endif
  964. // case 198:查询其他收入;
  965. strTemp.Format(_T("[date] >= '%s' and [date] <= '%s';"), strWageStartDate, strWageEndofDate);
  966. strFilter += strTemp;
  967. // case 142:查询我的工作;
  968. strTemp.Format(_T("datetime >= '%s' and datetime <= '%s' ;"),strWageStartDate, strWageEndofDate);
  969. strFilter += strTemp;
  970. // case 192:查询摄影师景点工作;
  971. strTemp.Format(_T("[date] >= '%s' and [date] <= '%s' and [status] = 'OK';"),
  972. strWageStartDate, strWageEndofDate);
  973. strFilter += strTemp;
  974. // case 193:查询数码工作记录;
  975. strTemp.Format(
  976. _T("([time8] >='%s' and [time8]<='%s' and [status4]='OK') or ")
  977. _T("([time9] >='%s' and [time9]<='%s' and [status6]='OK') or ")
  978. _T("([time10] >='%s' and [time10]<='%s' and [status5]='OK');"),
  979. strWageStartDate, strWageEndofDate,
  980. strWageStartDate, strWageEndofDate,
  981. strWageStartDate, strWageEndofDate);
  982. strFilter += strTemp;
  983. // 7. case 146:计件式提成比例;
  984. strFilter += _T(";");
  985. g_sendhead.code[0] = 34;
  986. g_sendhead.code[1] = 242;
  987. g_sendhead.code[2] = 243;
  988. g_sendhead.code[3] = 198;
  989. g_sendhead.code[4] = 142;
  990. g_sendhead.code[5] = 192;
  991. g_sendhead.code[6] = 193;
  992. g_sendhead.code[7] = 146;
  993. g_sendhead.tabcount = 8;
  994. g_sendhead.bsql = FALSE;
  995. g_pMainWnd->ProcessChatMessageRequest2(strFilter);
  996. if ( !g_bSendOK )
  997. return FALSE;
  998. ClearStaffWageData();
  999. DataToArray(&m_AryStaffDetail, &m_AryReceiptRecords, &m_AryOrderDetail, &m_AryOtherIncomeRecord, &m_AryMyWorkRecord, &m_ArySceneryWorkRecord, &m_AryDigitalWorkRecord, &m_AryWorkrate);
  1000. return TRUE;
  1001. }
  1002. BOOL CStaffWage::GetEarlyResults(IN CString strStaffName)
  1003. {
  1004. INT i = 0;
  1005. INT nSize = m_AryReceiptRecords.GetSize();
  1006. INT nIndex = -1;
  1007. INT nArypos = 0;
  1008. CString strMoney;
  1009. BOOL bPhotographer,bMakeupArtist;
  1010. FLOAT fPhotographer, fMakeupArtist;
  1011. BOOL bSalesperson1,bSalesperson2;
  1012. FLOAT fbSalesperson1Percent, fbSalesperson2Percent;
  1013. m_AryWageType.RemoveAll();
  1014. m_AryWageTypeMoney.RemoveAll();
  1015. for ( i = 0; i < nSize; i++ )
  1016. {
  1017. // 前期业绩;
  1018. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(5) == _T("3") || m_AryReceiptRecords.ElementAt(i).ElementAt(5) == _T("4"))
  1019. {
  1020. fPhotographer = fMakeupArtist = 0.0;
  1021. bPhotographer = bMakeupArtist = FALSE;
  1022. // 1.这笔收款,员工是否有摄影+化妆服务项;
  1023. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(9) == _T("OK") && m_AryReceiptRecords.ElementAt(i).ElementAt(10) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(10) <= m_strWageEndofDate )
  1024. {
  1025. GetPhotographerAndMakeupArtistServeRecord(strStaffName, m_AryReceiptRecords.ElementAt(i).ElementAt(0), bPhotographer, bMakeupArtist, fPhotographer, fMakeupArtist);
  1026. // ElementAt(56):工资设置:摄影师也有前期提成;
  1027. if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(56)) && bPhotographer )
  1028. {// 摄影前期;
  1029. // 按提成百分比计算;
  1030. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fPhotographer);
  1031. // 累加前期业绩;
  1032. m_fEaryResultMoney += _tstof(strMoney);
  1033. // 累加摄影工资类型金额;
  1034. if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_PHOTOGRAPHER)) == -1 )
  1035. {
  1036. m_AryWageType.Add(WAGE_EARLY_PHOTOGRAPHER);
  1037. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1038. }
  1039. else
  1040. {
  1041. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1042. }
  1043. }
  1044. // ElementAt(57):工资设置:化妆师也有前期提成;
  1045. if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(57)) && bMakeupArtist )
  1046. {// 化妆前期;
  1047. // 按提成百分比计算;
  1048. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fMakeupArtist);
  1049. // 累加前期业绩;
  1050. m_fEaryResultMoney += _tstof(strMoney);
  1051. // 累加摄影工资类型金额;
  1052. if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_MAKEUPARTIST)) == -1 )
  1053. {
  1054. m_AryWageType.Add(WAGE_EARLY_MAKEUPARTIST);
  1055. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1056. }
  1057. else
  1058. {
  1059. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1060. }
  1061. }
  1062. }
  1063. // 2.这笔收款,员工是否有门市服务项;
  1064. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate )
  1065. {
  1066. bSalesperson1 = bSalesperson2 = 0.0;
  1067. fbSalesperson1Percent = fbSalesperson2Percent = FALSE;
  1068. GetSalesServerRecord(strStaffName, m_AryReceiptRecords.ElementAt(i).ElementAt(0), bSalesperson1, bSalesperson2, fbSalesperson1Percent, fbSalesperson2Percent);
  1069. if ( bSalesperson1 )
  1070. {// 主门市;
  1071. // 按提成百分比计算;
  1072. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fbSalesperson1Percent);
  1073. // 累加前期业绩;
  1074. m_fEaryResultMoney += _tstof(strMoney);
  1075. // 累加门市类型金额;
  1076. if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_SALES)) == -1 )
  1077. {
  1078. m_AryWageType.Add(WAGE_EARLY_SALES);
  1079. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1080. }
  1081. else
  1082. {
  1083. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1084. }
  1085. }
  1086. if ( bSalesperson2 )
  1087. {// 副门市;
  1088. // 按提成百分比计算;
  1089. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fbSalesperson2Percent);
  1090. // 累加前期业绩;
  1091. m_fEaryResultMoney += _tstof(strMoney);
  1092. // 累加门市类型金额;
  1093. if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_SALES)) == -1 )
  1094. {
  1095. m_AryWageType.Add(WAGE_EARLY_SALES);
  1096. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1097. }
  1098. else
  1099. {
  1100. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1101. }
  1102. }
  1103. }
  1104. }
  1105. // 选片二销;
  1106. else if ( m_AryReceiptRecords.ElementAt(i).ElementAt(12) == _T("选片二销") )
  1107. {
  1108. bPhotographer = bMakeupArtist = FALSE;
  1109. fPhotographer = fMakeupArtist = 0.0;
  1110. if ( m_AryReceiptRecords.ElementAt(i).ElementAt(9) == _T("OK") && m_AryReceiptRecords.ElementAt(i).ElementAt(10) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(10) <= m_strWageEndofDate )
  1111. {
  1112. GetPhotographerAndMakeupArtistServeRecord(strStaffName, m_AryReceiptRecords.ElementAt(i).ElementAt(0), bPhotographer, bMakeupArtist, fPhotographer, fMakeupArtist);
  1113. // ElementAt(41):工资设置:摄影师也有选片二销提成;
  1114. if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(41)) && bPhotographer )
  1115. {
  1116. // 按提成百分比计算;
  1117. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fPhotographer);
  1118. // 累加选片二销业绩;
  1119. m_fSelectMoney += _tstof(strMoney);
  1120. // 累加摄影也有选片二销工资类型金额;
  1121. if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_PHOTOGRAPHER)) == -1 )
  1122. {
  1123. m_AryWageType.Add(WAGE_SEL_PHOTOGRAPHER);
  1124. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1125. }
  1126. else
  1127. {
  1128. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1129. }
  1130. }
  1131. // ElementAt(42):工资设置:化妆师或引导师也有选片二销提成;
  1132. if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(42)) && bMakeupArtist )
  1133. {
  1134. // 按提成百分比计算;
  1135. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fMakeupArtist);
  1136. // 累加选片二销业绩;
  1137. m_fSelectMoney += _tstof(strMoney);
  1138. // 累加化妆也有选片二销工资类型金额;
  1139. if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_MAKEUPARTIST)) == -1 )
  1140. {
  1141. m_AryWageType.Add(WAGE_SEL_MAKEUPARTIST);
  1142. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1143. }
  1144. else
  1145. {
  1146. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1147. }
  1148. }
  1149. }
  1150. // 这笔收款,员工是否还是本次选片二销的选片师;
  1151. if ( strStaffName == m_AryReceiptRecords.ElementAt(i).ElementAt(11) && m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate)
  1152. {
  1153. // 按提成百分比计算;
  1154. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) );
  1155. // 累加选片二销业绩;
  1156. m_fSelectMoney += _tstof(strMoney);
  1157. // 累加化妆也有选片二销工资类型金额;
  1158. if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_SALES)) == -1 )
  1159. {
  1160. m_AryWageType.Add(WAGE_SEL_SALES);
  1161. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1162. }
  1163. else
  1164. {
  1165. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1166. }
  1167. }
  1168. }
  1169. // 其他订单二销;
  1170. else
  1171. {
  1172. // 这笔收款,员工是否还是本次其他订单二销的促成者;
  1173. if ( strStaffName == m_AryReceiptRecords.ElementAt(i).ElementAt(11) && m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate)
  1174. {
  1175. // 获取提成;
  1176. strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)));
  1177. // 累加选片二销业绩;
  1178. m_fSelectMoney += _tstof(strMoney);
  1179. // 累加化妆也有选片二销工资类型金额;
  1180. if ( (nIndex = FindArray(&m_AryWageType, m_AryReceiptRecords.ElementAt(i).ElementAt(12))) == -1 )
  1181. {
  1182. m_AryWageType.Add(m_AryReceiptRecords.ElementAt(i).ElementAt(12));
  1183. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1184. }
  1185. else
  1186. {
  1187. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1188. }
  1189. }
  1190. }
  1191. }
  1192. // case 198:其他收入业绩(散客消费);
  1193. nSize = m_AryOtherIncomeRecord.GetSize();
  1194. for ( i = 0; i < nSize; i++ )
  1195. {
  1196. // 收款人就是该员工,那这笔收入就是他产生的,计他提成;
  1197. if ( m_AryOtherIncomeRecord.ElementAt(i).ElementAt(2) == strStaffName && m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate)
  1198. {
  1199. strMoney.Format(_T("%0.2f"), _tstof(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(4)));
  1200. // 累加化妆也有选片二销工资类型金额;
  1201. if ( (nIndex = FindArray(&m_AryWageType, m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3))) == -1 )
  1202. {
  1203. m_AryWageType.Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3));
  1204. m_AryWageTypeMoney.Add(_tstof(strMoney));
  1205. }
  1206. else
  1207. {
  1208. m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney));
  1209. }
  1210. }
  1211. }
  1212. return FALSE;
  1213. }
  1214. FLOAT CStaffWage::GetStaffSignerWage(IN CString strSaffName)
  1215. {
  1216. FLOAT fStaffEarlyWage = 0.0;
  1217. INT nSize = m_AryWageType.GetSize();
  1218. for ( int i = 0; i < nSize; i++ )
  1219. {
  1220. if ( m_AryWageType.ElementAt(i) == WAGE_EARLY_SALES )
  1221. fStaffEarlyWage += m_AryWageTypeMoney.ElementAt(i);
  1222. }
  1223. return fStaffEarlyWage;
  1224. }
  1225. FLOAT CStaffWage::GetStaffPhotograhperMakeupArtistWage(IN CString strSaffName)
  1226. {
  1227. FLOAT fStaffEarlyWage = 0.0;
  1228. INT nSize = m_AryWageType.GetSize();
  1229. for ( int i = 0; i < nSize; i++ )
  1230. {
  1231. if (m_AryWageType.ElementAt(i) == WAGE_EARLY_MAKEUPARTIST || // 化妆前期;
  1232. m_AryWageType.ElementAt(i) == WAGE_EARLY_PHOTOGRAPHER ) // 摄影前期;
  1233. fStaffEarlyWage += m_AryWageTypeMoney.ElementAt(i);
  1234. }
  1235. return fStaffEarlyWage;
  1236. }
  1237. FLOAT CStaffWage::GetStaffLateWage(IN CString strStaffName, OUT FLOAT &fTotalMoney)
  1238. {
  1239. FLOAT fStaffLateWage = 0.0;
  1240. INT nSize = m_AryWageType.GetSize();
  1241. for ( int i = 0; i < nSize; i++ )
  1242. {
  1243. if ( m_AryWageType.ElementAt(i) != WAGE_EARLY_SALES && // 门市前期;
  1244. m_AryWageType.ElementAt(i) != WAGE_EARLY_MAKEUPARTIST && // 化妆前期;
  1245. m_AryWageType.ElementAt(i) != WAGE_EARLY_PHOTOGRAPHER ) // 摄影前期;
  1246. {
  1247. fTotalMoney += m_AryWageTypeMoney.ElementAt(i);
  1248. fStaffLateWage += GetSalaryFromRule(m_AryWageTypeMoney.ElementAt(i), GetRule(m_AryWageType.ElementAt(i)));
  1249. }
  1250. }
  1251. return fStaffLateWage;
  1252. }
  1253. FLOAT CStaffWage::GetStaffDigitalWage(IN CString strStaffName)
  1254. {
  1255. FLOAT fDigitalWage = 0.0;
  1256. CString strUnitPrice; // 单价;
  1257. CString strTotalMoney; // 总价;
  1258. BOOL bIsDigital = FALSE;
  1259. INT nSize = m_AryMyWorkRecord.GetSize();
  1260. for ( int i = 0; i < nSize; i++ )
  1261. {
  1262. bIsDigital = FALSE;
  1263. if ( m_AryMyWorkRecord.ElementAt(i).ElementAt(3) == strStaffName )
  1264. {
  1265. for ( int n = 0; n < m_AryWorkrate.GetSize(); n++ )
  1266. {
  1267. if ( _T("数码师") == m_AryWorkrate.ElementAt(n).ElementAt(0) &&
  1268. m_AryMyWorkRecord.ElementAt(i).ElementAt(6) == m_AryWorkrate.ElementAt(n).ElementAt(1))
  1269. {
  1270. strUnitPrice = m_AryWorkrate.ElementAt(n).ElementAt(2);
  1271. bIsDigital = TRUE;
  1272. break;
  1273. }
  1274. }
  1275. if ( !bIsDigital )
  1276. strUnitPrice = _T("0");
  1277. // ElementAt(5):数量;
  1278. strTotalMoney.Format(_T("%0.2f"), _tstof(m_AryMyWorkRecord.ElementAt(i).ElementAt(5))*_tstof(strUnitPrice));
  1279. fDigitalWage += _tstof(strTotalMoney);
  1280. }
  1281. }
  1282. return fDigitalWage;
  1283. }
  1284. FLOAT CStaffWage::GetStaffTotalWage(IN CString strStaffName)
  1285. {
  1286. // 员工总工资;
  1287. FLOAT fStaffTotalWage = 0.0;
  1288. return fStaffTotalWage;
  1289. }
  1290. #endif