#include "stdafx.h" #include "StaffWage.h" #include "Global/Global.h" #include "MainFrm.h" extern CMainFrame *g_pMainWnd; #ifdef VC60 #define _tstof atof #define _tstoi atoi #endif CStaffWage::CStaffWage(void) { m_strStaffName = _T(""); m_strWageStartDate = _T(""); m_strWageEndofDate = _T(""); m_fEaryResultMoney = 0.0; } CStaffWage::~CStaffWage(void) { ClearStaffWageData(); } void CStaffWage::ClearStaffWageData() { m_AryStaffDetail.RemoveAll(); m_AryReceiptRecords.RemoveAll(); m_AryOrderDetail.RemoveAll(); m_AryOtherIncomeRecord.RemoveAll(); m_ArySceneryWorkRecord.RemoveAll(); m_AryMyWorkRecord.RemoveAll(); m_AryDigitalWorkRecord.RemoveAll(); m_AryWageType.RemoveAll(); m_AryWageTypeMoney.RemoveAll(); m_fEaryResultMoney = 0.0; } BOOL CStaffWage::GetStaffWageData(IN CString strStaffName, IN CString strWageStartDate, IN CString strWageEndofDate) { m_strStaffName = strStaffName; m_strWageStartDate = strWageStartDate; m_strWageEndofDate = strWageEndofDate; CString strTemp = _T(""); CString strFilter = _T(""); // 0.case 34:查询员工; strTemp.Format(_T("name = '%s' and dimission='在职';"), m_strStaffName); strFilter += strTemp; // 1.case 242:查询所有收款详情; strTemp.Format(_T("(Paydate >= '%s' and Paydate <= '%s' ) or (PhotoStatus = 'OK' and PhotogOfPaydate >= '%s' and PhotogOfPaydate <= '%s');"), strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate); strFilter += strTemp; #ifdef _DEBUG WriteTextLog(_T("case 242:%s"), strTemp); #endif // 2.case 243:查询收款订单; strTemp.Format( _T("([ren] = '%s' or [ren2] = '%s' or") _T(" [waiter1] = '%s' or [waiter12] = '%s' or [waiter13] = '%s' or [waiter14] = '%s' or") _T(" [waiter2] = '%s' or [waiter22] = '%s' or [waiter23] = '%s' or [waiter24] = '%s' or") _T(" [waiter3] = '%s' or [waiter4] = '%s' or [waiter5] = '%s' or") _T(" [waiter6] = '%s' or [waiter7] = '%s' or [waiter8] = '%s' or [waiter9] = '%s')") _T(" and id in (select distinct id from Payroll where (Paydate >= '%s' and Paydate <= '%s') or (PhotoStatus = 'OK' and PhotogOfPaydate >= '%s' and PhotogOfPaydate <= '%s'));"), m_strStaffName, // 主门市; m_strStaffName, // 副门市; m_strStaffName, // 主摄影; m_strStaffName, // 摄影2; m_strStaffName, // 摄影3; m_strStaffName, // 摄影4; m_strStaffName, // 主化妆; m_strStaffName, // 化妆2; m_strStaffName, // 化妆3; m_strStaffName, // 化妆4; m_strStaffName, // 选片师; m_strStaffName, // 设计师; m_strStaffName, // 初修师; m_strStaffName, // 接单人; m_strStaffName, // 精修师; m_strStaffName, // 看设计人; m_strStaffName, // ???; strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate); strFilter += strTemp; #ifdef _DEBUG WriteTextLog(_T("case 243:%s"), strTemp); #endif // 3.case 198:查询其他收入; strTemp.Format( _T("[date] >= '%s' and [date] <= '%s' and [renyuan3] = '%s';"), strWageStartDate, strWageEndofDate, strStaffName); strFilter += strTemp; // 4.case 142:查询我的工作-mywork; strTemp.Format(_T("datetime >= '%s' and datetime <= '%s' and name = '%s';"),strWageStartDate, strWageEndofDate, strStaffName); strFilter += strTemp; // 5.case 192:查询摄影师景点工作; strTemp.Format(_T("[date] >= '%s' and [date] <= '%s' and [status] = 'OK' and ([waiter1] = '%s' or [waiter12] = '%s' or [waiter2] = '%s' or [waiter22] = '%s');"), strWageStartDate, strWageEndofDate, strStaffName,strStaffName,strStaffName,strStaffName); strFilter += strTemp; // 6.case 193:查询数码工作记录; strTemp.Format( _T("([time8] >='%s' and [time8]<='%s' and [status4]='OK' and [waiter5]='%s') or ") _T("([time9] >='%s' and [time9]<='%s' and [status6]='OK' and [waiter7]='%s') or ") _T("([time10] >='%s' and [time10]<='%s' and [status5]='OK' and [waiter4]='%s');"), strWageStartDate, strWageEndofDate, strStaffName, strWageStartDate, strWageEndofDate, strStaffName, strWageStartDate, strWageEndofDate, strStaffName); strFilter += strTemp; g_sendhead.code[0] = 34; g_sendhead.code[1] = 242; g_sendhead.code[2] = 243; g_sendhead.code[3] = 198; g_sendhead.code[4] = 142; g_sendhead.code[5] = 192; g_sendhead.code[6] = 193; g_sendhead.tabcount = 7; g_sendhead.bsql = FALSE; g_pMainWnd->ProcessChatMessageRequest2(strFilter); if ( !g_bSendOK ) return FALSE; ClearStaffWageData(); DataToArray(&m_AryStaffDetail, &m_AryReceiptRecords, &m_AryOrderDetail, &m_AryOtherIncomeRecord, &m_AryMyWorkRecord, &m_ArySceneryWorkRecord, &m_AryDigitalWorkRecord); #ifdef _DEBUG int nSize = m_AryReceiptRecords.GetSize(); for (int i = 0; i < nSize; i++ ) { WriteTextLog(_T("\n")); for ( int j = 0; j < m_AryReceiptRecords.ElementAt(i).GetSize(); j++ ) { WriteTextLog(_T("%s"), m_AryReceiptRecords.ElementAt(i).ElementAt(j)); } } #endif return TRUE; } /************************************************************************/ /* 函数:[1/3/2017 IT]; /* 描述:摄影师和化妆师的前期业绩; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ void CStaffWage::GetPhotographerAndMakeupArtistServeRecord(IN CString strOrderNum, IN BOOL &bPhotographer, IN BOOL &bMakeupArtist, IN FLOAT &fPhotographerPercent, IN FLOAT &fMakeupArtistPercent) { bPhotographer = bMakeupArtist = FALSE; INT nSize = m_AryOrderDetail.GetSize(); for ( int i = 0; i < nSize; i++ ) { // 是否指定要查询的订单; if ( m_AryOrderDetail.ElementAt(i).ElementAt(0) == strOrderNum ) { // 主摄影师、摄影师2~4只能有一个; if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(1) ) {// 是否是有主摄影师服务提成; bPhotographer = TRUE; // 获取折扣; fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(5))/100.0; if ( fPhotographerPercent == 0.0 ) fPhotographerPercent = 1.0; } else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(2) ) {// 是否是有摄影师2服务提成; bPhotographer = TRUE; // 获取折扣; fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(6))/100.0; if ( fPhotographerPercent == 0.0 ) fPhotographerPercent = 1.0; } else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(3) ) {// 是否是有摄影师3服务提成; bPhotographer = TRUE; // 获取折扣; fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(7))/100.0; if ( fPhotographerPercent == 0.0 ) fPhotographerPercent = 1.0; } else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(4) ) {// 是否是有摄影师4服务提成; bPhotographer = TRUE; // 获取折扣; fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(8))/100.0; if ( fPhotographerPercent == 0.0 ) fPhotographerPercent = 1.0; } // 主化妆师、化妆师2~4只能有一个; if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(9) ) {// 是否是主化妆师服务记录; bMakeupArtist = TRUE; // 获取折扣; fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(13))/100.0; if ( fMakeupArtistPercent == 0.0 ) fMakeupArtistPercent = 1.0; } else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(10) ) {// 是否是有化妆师2服务提成; bMakeupArtist = TRUE; // 获取折扣; fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(14))/100.0; if ( fMakeupArtistPercent == 0.0 ) fMakeupArtistPercent = 1.0; } else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(11) ) {// 是否是有化妆师3服务提成; bMakeupArtist = TRUE; // 获取折扣; fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(15))/100.0; if ( fMakeupArtistPercent == 0.0 ) fMakeupArtistPercent = 1.0; } else if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(12) ) {// 是否是有化妆师4服务提成; bMakeupArtist = TRUE; // 获取折扣; fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(16))/100.0; if ( fMakeupArtistPercent == 0.0 ) fMakeupArtistPercent = 1.0; } break; } } } /************************************************************************/ /* 函数:[1/3/2017 IT]; /* 描述:门市提成; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ void CStaffWage::GetSalesServerRecord(IN CString strOrderNum, IN BOOL &bSalesperson1, IN BOOL &bSalesperson2, IN FLOAT &fbSalesperson1Percent, IN FLOAT &fbSalesperson2Percent) { bSalesperson1 = bSalesperson2 = FALSE; INT nSize = m_AryOrderDetail.GetSize(); for ( int i = 0; i < nSize; i++ ) { // 是否指定要查询的订单; if ( m_AryOrderDetail.ElementAt(i).ElementAt(0) == strOrderNum ) { // 主门市; if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(17) ) {// 是否是主门市提成; bSalesperson1 = TRUE; // 获取折扣; fbSalesperson1Percent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(19))/100.0; if ( fbSalesperson1Percent == 0.0 ) fbSalesperson1Percent = 1.0; } // 副门市; if ( m_strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(18) ) {// 是否是副门市提成; bSalesperson2 = TRUE; // 获取折扣; fbSalesperson2Percent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(20))/100.0; if ( fbSalesperson2Percent == 0.0 ) fbSalesperson2Percent = 1.0; } break; } } } BOOL CStaffWage::GetEarlyResults(IN CArray& AryEarlyResult) // 获取前期业绩; { INT nSize = m_AryReceiptRecords.GetSize(); AryEarlyResult.SetSize(nSize*11, 1); INT i = 0; INT nIndex = -1; INT nArypos = 0; CString strMoney; BOOL bPhotographer,bMakeupArtist; FLOAT fPhotographer, fMakeupArtist; BOOL bSalesperson1,bSalesperson2; FLOAT fbSalesperson1Percent, fbSalesperson2Percent; for ( i = 0; i < nSize; i++ ) { // 前期业绩; if ( m_AryReceiptRecords.ElementAt(i).ElementAt(5) == _T("3") || m_AryReceiptRecords.ElementAt(i).ElementAt(5) == _T("4")) { fPhotographer = fMakeupArtist = 0.0; bPhotographer = bMakeupArtist = FALSE; // 1.这笔收款,员工是否有摄影+化妆服务项; 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 ) { GetPhotographerAndMakeupArtistServeRecord(m_AryReceiptRecords.ElementAt(i).ElementAt(0), bPhotographer, bMakeupArtist, fPhotographer, fMakeupArtist); // ElementAt(56):工资设置:摄影师也有前期提成; if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(56)) && bPhotographer ) {// 摄影前期; // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fPhotographer); // 累加前期业绩; m_fEaryResultMoney += _tstof(strMoney); // 累加摄影工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_PHOTOGRAPHER)) == -1 ) { m_AryWageType.Add(WAGE_EARLY_PHOTOGRAPHER); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).RemoveAll(); AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(10)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(WAGE_EARLY_PHOTOGRAPHER); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } // ElementAt(57):工资设置:化妆师也有前期提成; if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(57)) && bMakeupArtist ) {// 化妆前期; // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fMakeupArtist); // 累加前期业绩; m_fEaryResultMoney += _tstof(strMoney); // 累加摄影工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_MAKEUPARTIST)) == -1 ) { m_AryWageType.Add(WAGE_EARLY_MAKEUPARTIST); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).RemoveAll(); AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(10)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(WAGE_EARLY_MAKEUPARTIST); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } } // 2.这笔收款,员工是否有门市服务项; if ( m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate ) { bSalesperson1 = bSalesperson2 = 0.0; fbSalesperson1Percent = fbSalesperson2Percent = FALSE; GetSalesServerRecord(m_AryReceiptRecords.ElementAt(i).ElementAt(0), bSalesperson1, bSalesperson2, fbSalesperson1Percent, fbSalesperson2Percent); if ( bSalesperson1 ) {// 主门市; // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fbSalesperson1Percent); // 累加前期业绩; m_fEaryResultMoney += _tstof(strMoney); // 累加门市类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_SALES)) == -1 ) { m_AryWageType.Add(WAGE_EARLY_SALES); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).RemoveAll(); AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(7)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(WAGE_EARLY_SALES); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } if ( bSalesperson2 ) {// 副门市; // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fbSalesperson2Percent); // 累加前期业绩; m_fEaryResultMoney += _tstof(strMoney); // 累加门市类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_SALES)) == -1 ) { m_AryWageType.Add(WAGE_EARLY_SALES); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).RemoveAll(); AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(7)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(WAGE_EARLY_SALES); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } } } // 选片二销; else if ( m_AryReceiptRecords.ElementAt(i).ElementAt(12) == _T("选片二销") ) { bPhotographer = bMakeupArtist = FALSE; fPhotographer = fMakeupArtist = 0.0; 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 ) { GetPhotographerAndMakeupArtistServeRecord(m_AryReceiptRecords.ElementAt(i).ElementAt(0), bPhotographer, bMakeupArtist, fPhotographer, fMakeupArtist); // ElementAt(41):工资设置:摄影师也有选片二销提成; if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(41)) && bPhotographer ) { // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fPhotographer); // 累加选片二销业绩; m_fSelectMoney += _tstof(strMoney); // 累加摄影也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_PHOTOGRAPHER)) == -1 ) { m_AryWageType.Add(WAGE_SEL_PHOTOGRAPHER); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(10)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(WAGE_SEL_PHOTOGRAPHER); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } // ElementAt(42):工资设置:化妆师或引导师也有选片二销提成; if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(42)) && bMakeupArtist ) { // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fMakeupArtist); // 累加选片二销业绩; m_fSelectMoney += _tstof(strMoney); // 累加化妆也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_MAKEUPARTIST)) == -1 ) { m_AryWageType.Add(WAGE_SEL_MAKEUPARTIST); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(10)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(WAGE_SEL_MAKEUPARTIST); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } } // 这笔收款,员工是否还是本次选片二销的选片师; 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 ) { // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) ); // 累加选片二销业绩; m_fSelectMoney += _tstof(strMoney); // 累加化妆也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_SALES)) == -1 ) { m_AryWageType.Add(WAGE_SEL_SALES); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).RemoveAll(); AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(7)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(WAGE_SEL_SALES); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } } // 其他订单二销; else { // 这笔收款,员工是否还是本次其他订单二销的促成者; 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 ) { // 获取提成; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6))); // 累加选片二销业绩; m_fSelectMoney += _tstof(strMoney); // 累加化妆也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, m_AryReceiptRecords.ElementAt(i).ElementAt(12))) == -1 ) { m_AryWageType.Add(m_AryReceiptRecords.ElementAt(i).ElementAt(12)); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).RemoveAll(); AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(7)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(12)); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(2)); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(3)); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } } } // 其他收入业绩(散客消费); nSize = m_AryOtherIncomeRecord.GetSize(); for ( i = 0; i < nSize; i++ ) { strMoney.Format(_T("%0.2f"), _tstof(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(4))); //if ( m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3) == WAGE_SEC_PHOTOGRAPHER) // 累加化妆也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3))) == -1 ) { m_AryWageType.Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3)); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } // 保存该类型工资记录; AryEarlyResult.ElementAt(nArypos).RemoveAll(); AryEarlyResult.ElementAt(nArypos).Add(strMoney); // 收款金额; AryEarlyResult.ElementAt(nArypos).Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(5)); // 工资日期; AryEarlyResult.ElementAt(nArypos).Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3)); // 工资类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(1)); // 顾客1姓名; AryEarlyResult.ElementAt(nArypos).Add(_T("")); // 顾客2姓名; AryEarlyResult.ElementAt(nArypos).Add(_T("")); // 套系类型; AryEarlyResult.ElementAt(nArypos).Add(m_AryReceiptRecords.ElementAt(i).ElementAt(13)); // 付款方式; nArypos++; } AryEarlyResult.SetSize(nArypos); return FALSE; } #ifndef ALL_STAFF_WAGE CString CStaffWage::GetRule(CString name) { CString oldrule = g_cominfoarray.ElementAt(0).ElementAt(77); CString header = "$" + name + ":"; CString left, right; int pos = oldrule.Find(header); if (pos != -1) { right = oldrule.Right(oldrule.GetLength() - pos - header.GetLength()); pos = right.Find("$"); if (pos != -1) right = right.Left(pos); right = header + right; return right; } return ""; } float CStaffWage::GetSalaryFromRule(float fmoney, CString rule) { float fresult = 0; int pos = rule.Find(":"); if (pos == -1)return 0; rule = rule.Right(rule.GetLength() - pos - 1); CStringArray rulearray; pos = rule.Find(";"); while (pos != -1) { rulearray.Add(rule.Left(pos)); rule = rule.Right(rule.GetLength() - pos - 1); pos = rule.Find(";"); } BOOL check1 = atoi(rule); if (rulearray.GetSize() == 0)return 0; CString str, temp; int money1, money2; float frate; if (check1 == 0) { for (int i = 0; i < rulearray.GetSize(); i++) { temp = rulearray.ElementAt(i); int pos = temp.Find(" "); temp = temp.Left(pos); pos = temp.Find("-"); money1 = atoi(temp.Left(pos)); money2 = atoi(temp.Right(temp.GetLength() - pos - 1)); if ((i == rulearray.GetSize() - 1) || (fmoney >= money1 && fmoney <= money2)) { temp = rulearray.ElementAt(i); pos = temp.Find(":"); temp = temp.Right(temp.GetLength() - pos - 1); temp.TrimRight("%"); frate = atof(temp) / 100.0; fresult = frate*fmoney; return fresult; } } } else////// { for (int i = 0; i < rulearray.GetSize(); i++) { temp = rulearray.ElementAt(i); int pos = temp.Find(" "); temp = temp.Left(pos); pos = temp.Find("-"); money1 = atoi(temp.Left(pos)); money2 = atoi(temp.Right(temp.GetLength() - pos - 1)); if ((i == rulearray.GetSize() - 1) || (fmoney >= money1 && fmoney <= money2)) { temp = rulearray.ElementAt(i); pos = temp.Find(":"); temp = temp.Right(temp.GetLength() - pos - 1); temp.TrimRight("%"); frate = atof(temp) / 100.0; float dtmoney = fmoney - money1; fresult += frate*dtmoney; if (i == 0)//只有一条规则 { fresult = frate*fmoney; return fresult; } while (i) { i--; temp = rulearray.ElementAt(i); pos = temp.Find(" "); temp = temp.Left(pos); pos = temp.Find("-"); money1 = atoi(temp.Left(pos)); money2 = atoi(temp.Right(temp.GetLength() - pos - 1)); temp = rulearray.ElementAt(i); pos = temp.Find(":"); temp = temp.Right(temp.GetLength() - pos - 1); temp.TrimRight("%"); frate = atof(temp) / 100.0; dtmoney = money2 - money1; fresult += frate*dtmoney; } return fresult; } } } return fresult; } void CStaffWage::GetPhotographerAndMakeupArtistServeRecord(IN CString strStaffName, IN CString strOrderNum, IN BOOL &bPhotographer, IN BOOL &bMakeupArtist, IN FLOAT &fPhotographerPercent, IN FLOAT &fMakeupArtistPercent) { bPhotographer = bMakeupArtist = FALSE; INT nSize = m_AryOrderDetail.GetSize(); for ( int i = 0; i < nSize; i++ ) { // 是否指定要查询的订单; if ( m_AryOrderDetail.ElementAt(i).ElementAt(0) == strOrderNum ) { // 主摄影师、摄影师2~4只能有一个; if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(1) ) {// 是否是有主摄影师服务提成; bPhotographer = TRUE; // 获取折扣; fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(5))/100.0; if ( fPhotographerPercent == 0.0 ) fPhotographerPercent = 1.0; } else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(2) ) {// 是否是有摄影师2服务提成; bPhotographer = TRUE; // 获取折扣; fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(6))/100.0; if ( fPhotographerPercent == 0.0 ) fPhotographerPercent = 1.0; } else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(3) ) {// 是否是有摄影师3服务提成; bPhotographer = TRUE; // 获取折扣; fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(7))/100.0; if ( fPhotographerPercent == 0.0 ) fPhotographerPercent = 1.0; } else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(4) ) {// 是否是有摄影师4服务提成; bPhotographer = TRUE; // 获取折扣; fPhotographerPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(8))/100.0; if ( fPhotographerPercent == 0.0 ) fPhotographerPercent = 1.0; } // 主化妆师、化妆师2~4只能有一个; if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(9) ) {// 是否是主化妆师服务记录; bMakeupArtist = TRUE; // 获取折扣; fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(13))/100.0; if ( fMakeupArtistPercent == 0.0 ) fMakeupArtistPercent = 1.0; } else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(10) ) {// 是否是有化妆师2服务提成; bMakeupArtist = TRUE; // 获取折扣; fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(14))/100.0; if ( fMakeupArtistPercent == 0.0 ) fMakeupArtistPercent = 1.0; } else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(11) ) {// 是否是有化妆师3服务提成; bMakeupArtist = TRUE; // 获取折扣; fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(15))/100.0; if ( fMakeupArtistPercent == 0.0 ) fMakeupArtistPercent = 1.0; } else if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(12) ) {// 是否是有化妆师4服务提成; bMakeupArtist = TRUE; // 获取折扣; fMakeupArtistPercent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(16))/100.0; if ( fMakeupArtistPercent == 0.0 ) fMakeupArtistPercent = 1.0; } break; } } } void CStaffWage::GetSalesServerRecord(IN CString strStaffName, IN CString strOrderNum, IN BOOL &bSalesperson1, IN BOOL &bSalesperson2, IN FLOAT &fbSalesperson1Percent, IN FLOAT &fbSalesperson2Percent) { bSalesperson1 = bSalesperson2 = FALSE; INT nSize = m_AryOrderDetail.GetSize(); for ( int i = 0; i < nSize; i++ ) { // 是否指定要查询的订单; if ( m_AryOrderDetail.ElementAt(i).ElementAt(0) == strOrderNum ) { // 主门市; if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(17) ) {// 是否是主门市提成; bSalesperson1 = TRUE; // 获取折扣; fbSalesperson1Percent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(19))/100.0; if ( fbSalesperson1Percent == 0.0 ) fbSalesperson1Percent = 1.0; } // 副门市; if ( strStaffName == m_AryOrderDetail.ElementAt(i).ElementAt(18) ) {// 是否是副门市提成; bSalesperson2 = TRUE; // 获取折扣; fbSalesperson2Percent = _tstof(m_AryOrderDetail.ElementAt(i).ElementAt(20))/100.0; if ( fbSalesperson2Percent == 0.0 ) fbSalesperson2Percent = 1.0; } break; } } } BOOL CStaffWage::GetAllStaffWageData(IN CString strWageStartDate, IN CString strWageEndofDate) { m_strWageStartDate = strWageStartDate; m_strWageEndofDate = strWageEndofDate; CString strTemp = _T(""); CString strFilter = _T(""); // case 34:查询员工; strTemp.Format(_T("dimission='在职';")); strFilter += strTemp; // case 242:查询所有收款详情; strTemp.Format(_T("(Paydate >= '%s' and Paydate <= '%s' ) or (PhotoStatus = 'OK' and PhotogOfPaydate >= '%s' and PhotogOfPaydate <= '%s');"), strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate); strFilter += strTemp; // case 243:查询收款订单; 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'));"), strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate); strFilter += strTemp; #ifdef _DEBUG WriteTextLog(_T("case 243:%s"), strTemp); #endif // case 198:查询其他收入; strTemp.Format(_T("[date] >= '%s' and [date] <= '%s';"), strWageStartDate, strWageEndofDate); strFilter += strTemp; // case 142:查询我的工作; strTemp.Format(_T("datetime >= '%s' and datetime <= '%s' ;"),strWageStartDate, strWageEndofDate); strFilter += strTemp; // case 192:查询摄影师景点工作; strTemp.Format(_T("[date] >= '%s' and [date] <= '%s' and [status] = 'OK';"), strWageStartDate, strWageEndofDate); strFilter += strTemp; // case 193:查询数码工作记录; strTemp.Format( _T("([time8] >='%s' and [time8]<='%s' and [status4]='OK') or ") _T("([time9] >='%s' and [time9]<='%s' and [status6]='OK') or ") _T("([time10] >='%s' and [time10]<='%s' and [status5]='OK');"), strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate, strWageStartDate, strWageEndofDate); strFilter += strTemp; // 7. case 146:计件式提成比例; strFilter += _T(";"); g_sendhead.code[0] = 34; g_sendhead.code[1] = 242; g_sendhead.code[2] = 243; g_sendhead.code[3] = 198; g_sendhead.code[4] = 142; g_sendhead.code[5] = 192; g_sendhead.code[6] = 193; g_sendhead.code[7] = 146; g_sendhead.tabcount = 8; g_sendhead.bsql = FALSE; g_pMainWnd->ProcessChatMessageRequest2(strFilter); if ( !g_bSendOK ) return FALSE; ClearStaffWageData(); DataToArray(&m_AryStaffDetail, &m_AryReceiptRecords, &m_AryOrderDetail, &m_AryOtherIncomeRecord, &m_AryMyWorkRecord, &m_ArySceneryWorkRecord, &m_AryDigitalWorkRecord, &m_AryWorkrate); return TRUE; } BOOL CStaffWage::GetEarlyResults(IN CString strStaffName) { INT i = 0; INT nSize = m_AryReceiptRecords.GetSize(); INT nIndex = -1; INT nArypos = 0; CString strMoney; BOOL bPhotographer,bMakeupArtist; FLOAT fPhotographer, fMakeupArtist; BOOL bSalesperson1,bSalesperson2; FLOAT fbSalesperson1Percent, fbSalesperson2Percent; m_AryWageType.RemoveAll(); m_AryWageTypeMoney.RemoveAll(); for ( i = 0; i < nSize; i++ ) { // 前期业绩; if ( m_AryReceiptRecords.ElementAt(i).ElementAt(5) == _T("3") || m_AryReceiptRecords.ElementAt(i).ElementAt(5) == _T("4")) { fPhotographer = fMakeupArtist = 0.0; bPhotographer = bMakeupArtist = FALSE; // 1.这笔收款,员工是否有摄影+化妆服务项; 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 ) { GetPhotographerAndMakeupArtistServeRecord(strStaffName, m_AryReceiptRecords.ElementAt(i).ElementAt(0), bPhotographer, bMakeupArtist, fPhotographer, fMakeupArtist); // ElementAt(56):工资设置:摄影师也有前期提成; if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(56)) && bPhotographer ) {// 摄影前期; // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fPhotographer); // 累加前期业绩; m_fEaryResultMoney += _tstof(strMoney); // 累加摄影工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_PHOTOGRAPHER)) == -1 ) { m_AryWageType.Add(WAGE_EARLY_PHOTOGRAPHER); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } // ElementAt(57):工资设置:化妆师也有前期提成; if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(57)) && bMakeupArtist ) {// 化妆前期; // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fMakeupArtist); // 累加前期业绩; m_fEaryResultMoney += _tstof(strMoney); // 累加摄影工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_MAKEUPARTIST)) == -1 ) { m_AryWageType.Add(WAGE_EARLY_MAKEUPARTIST); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } } // 2.这笔收款,员工是否有门市服务项; if ( m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate ) { bSalesperson1 = bSalesperson2 = 0.0; fbSalesperson1Percent = fbSalesperson2Percent = FALSE; GetSalesServerRecord(strStaffName, m_AryReceiptRecords.ElementAt(i).ElementAt(0), bSalesperson1, bSalesperson2, fbSalesperson1Percent, fbSalesperson2Percent); if ( bSalesperson1 ) {// 主门市; // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fbSalesperson1Percent); // 累加前期业绩; m_fEaryResultMoney += _tstof(strMoney); // 累加门市类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_SALES)) == -1 ) { m_AryWageType.Add(WAGE_EARLY_SALES); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } if ( bSalesperson2 ) {// 副门市; // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fbSalesperson2Percent); // 累加前期业绩; m_fEaryResultMoney += _tstof(strMoney); // 累加门市类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_EARLY_SALES)) == -1 ) { m_AryWageType.Add(WAGE_EARLY_SALES); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } } } // 选片二销; else if ( m_AryReceiptRecords.ElementAt(i).ElementAt(12) == _T("选片二销") ) { bPhotographer = bMakeupArtist = FALSE; fPhotographer = fMakeupArtist = 0.0; 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 ) { GetPhotographerAndMakeupArtistServeRecord(strStaffName, m_AryReceiptRecords.ElementAt(i).ElementAt(0), bPhotographer, bMakeupArtist, fPhotographer, fMakeupArtist); // ElementAt(41):工资设置:摄影师也有选片二销提成; if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(41)) && bPhotographer ) { // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fPhotographer); // 累加选片二销业绩; m_fSelectMoney += _tstof(strMoney); // 累加摄影也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_PHOTOGRAPHER)) == -1 ) { m_AryWageType.Add(WAGE_SEL_PHOTOGRAPHER); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } // ElementAt(42):工资设置:化妆师或引导师也有选片二销提成; if ( _tstoi(g_cominfoarray.ElementAt(0).ElementAt(42)) && bMakeupArtist ) { // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) * fMakeupArtist); // 累加选片二销业绩; m_fSelectMoney += _tstof(strMoney); // 累加化妆也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_MAKEUPARTIST)) == -1 ) { m_AryWageType.Add(WAGE_SEL_MAKEUPARTIST); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } } // 这笔收款,员工是否还是本次选片二销的选片师; if ( strStaffName == m_AryReceiptRecords.ElementAt(i).ElementAt(11) && m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate) { // 按提成百分比计算; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6)) ); // 累加选片二销业绩; m_fSelectMoney += _tstof(strMoney); // 累加化妆也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, WAGE_SEL_SALES)) == -1 ) { m_AryWageType.Add(WAGE_SEL_SALES); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } } // 其他订单二销; else { // 这笔收款,员工是否还是本次其他订单二销的促成者; if ( strStaffName == m_AryReceiptRecords.ElementAt(i).ElementAt(11) && m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate) { // 获取提成; strMoney.Format(_T("%0.2f"), _tstof(m_AryReceiptRecords.ElementAt(i).ElementAt(6))); // 累加选片二销业绩; m_fSelectMoney += _tstof(strMoney); // 累加化妆也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, m_AryReceiptRecords.ElementAt(i).ElementAt(12))) == -1 ) { m_AryWageType.Add(m_AryReceiptRecords.ElementAt(i).ElementAt(12)); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } } } // case 198:其他收入业绩(散客消费); nSize = m_AryOtherIncomeRecord.GetSize(); for ( i = 0; i < nSize; i++ ) { // 收款人就是该员工,那这笔收入就是他产生的,计他提成; if ( m_AryOtherIncomeRecord.ElementAt(i).ElementAt(2) == strStaffName && m_AryReceiptRecords.ElementAt(i).ElementAt(7) >= m_strWageStartDate && m_AryReceiptRecords.ElementAt(i).ElementAt(7) <= m_strWageEndofDate) { strMoney.Format(_T("%0.2f"), _tstof(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(4))); // 累加化妆也有选片二销工资类型金额; if ( (nIndex = FindArray(&m_AryWageType, m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3))) == -1 ) { m_AryWageType.Add(m_AryOtherIncomeRecord.ElementAt(i).ElementAt(3)); m_AryWageTypeMoney.Add(_tstof(strMoney)); } else { m_AryWageTypeMoney.SetAt(nIndex, m_AryWageTypeMoney.ElementAt(nIndex) + _tstof(strMoney)); } } } return FALSE; } FLOAT CStaffWage::GetStaffSignerWage(IN CString strSaffName) { FLOAT fStaffEarlyWage = 0.0; INT nSize = m_AryWageType.GetSize(); for ( int i = 0; i < nSize; i++ ) { if ( m_AryWageType.ElementAt(i) == WAGE_EARLY_SALES ) fStaffEarlyWage += m_AryWageTypeMoney.ElementAt(i); } return fStaffEarlyWage; } FLOAT CStaffWage::GetStaffPhotograhperMakeupArtistWage(IN CString strSaffName) { FLOAT fStaffEarlyWage = 0.0; INT nSize = m_AryWageType.GetSize(); for ( int i = 0; i < nSize; i++ ) { if (m_AryWageType.ElementAt(i) == WAGE_EARLY_MAKEUPARTIST || // 化妆前期; m_AryWageType.ElementAt(i) == WAGE_EARLY_PHOTOGRAPHER ) // 摄影前期; fStaffEarlyWage += m_AryWageTypeMoney.ElementAt(i); } return fStaffEarlyWage; } FLOAT CStaffWage::GetStaffLateWage(IN CString strStaffName, OUT FLOAT &fTotalMoney) { FLOAT fStaffLateWage = 0.0; INT nSize = m_AryWageType.GetSize(); for ( int i = 0; i < nSize; i++ ) { if ( m_AryWageType.ElementAt(i) != WAGE_EARLY_SALES && // 门市前期; m_AryWageType.ElementAt(i) != WAGE_EARLY_MAKEUPARTIST && // 化妆前期; m_AryWageType.ElementAt(i) != WAGE_EARLY_PHOTOGRAPHER ) // 摄影前期; { fTotalMoney += m_AryWageTypeMoney.ElementAt(i); fStaffLateWage += GetSalaryFromRule(m_AryWageTypeMoney.ElementAt(i), GetRule(m_AryWageType.ElementAt(i))); } } return fStaffLateWage; } FLOAT CStaffWage::GetStaffDigitalWage(IN CString strStaffName) { FLOAT fDigitalWage = 0.0; CString strUnitPrice; // 单价; CString strTotalMoney; // 总价; BOOL bIsDigital = FALSE; INT nSize = m_AryMyWorkRecord.GetSize(); for ( int i = 0; i < nSize; i++ ) { bIsDigital = FALSE; if ( m_AryMyWorkRecord.ElementAt(i).ElementAt(3) == strStaffName ) { for ( int n = 0; n < m_AryWorkrate.GetSize(); n++ ) { if ( _T("数码师") == m_AryWorkrate.ElementAt(n).ElementAt(0) && m_AryMyWorkRecord.ElementAt(i).ElementAt(6) == m_AryWorkrate.ElementAt(n).ElementAt(1)) { strUnitPrice = m_AryWorkrate.ElementAt(n).ElementAt(2); bIsDigital = TRUE; break; } } if ( !bIsDigital ) strUnitPrice = _T("0"); // ElementAt(5):数量; strTotalMoney.Format(_T("%0.2f"), _tstof(m_AryMyWorkRecord.ElementAt(i).ElementAt(5))*_tstof(strUnitPrice)); fDigitalWage += _tstof(strTotalMoney); } } return fDigitalWage; } FLOAT CStaffWage::GetStaffTotalWage(IN CString strStaffName) { // 员工总工资; FLOAT fStaffTotalWage = 0.0; return fStaffTotalWage; } #endif