// DispatchFieldsDlg.cpp : implementation file // #include "stdafx.h" #include "sp.h" #include "DispatchFieldsDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDispatchFieldsDlg dialog CDispatchFieldsDlg::CDispatchFieldsDlg(CWnd* pParent /*=NULL*/) : CDialog(CDispatchFieldsDlg::IDD, pParent) { //{{AFX_DATA_INIT(CDispatchFieldsDlg) //}}AFX_DATA_INIT m_pApp = (CSpApp*)AfxGetApp(); /* rs=new GZRset("Error: Dispatch field selection "); rs->SetConnect(m_pApp->strConnectString); */ //Initialize recordset pointer rs=m_pApp->rsPool->GetRS("Error at:CDispatchFieldsDlg"); pdv=new CDispatchView; } CDispatchFieldsDlg::~CDispatchFieldsDlg() { m_pApp->rsPool->ReleaseRS(&rs->m_nID); delete pdv; } void CDispatchFieldsDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDispatchFieldsDlg) DDX_Control(pDX, IDC_CKPROJECT, m_ckProject); DDX_Control(pDX, IDC_CBPROJECTS, m_cbProjects); DDX_Control(pDX, IDC_CBCATEGORIES, m_cbCategories); DDX_Control(pDX, IDC_CKCATEGORY, m_ckCategory); DDX_Control(pDX, IDC_CKSCHEDDATE_TOMORROW, m_ckSchedDate_TOMORROW); DDX_Control(pDX, IDC_CKCUSTREF, m_ckCustRef); DDX_Control(pDX, IDC_CKSTATUS, m_ckStatus); DDX_Control(pDX, IDC_CKOURREF, m_ckOurRef); DDX_Control(pDX, IDC_CKDATE, m_ckDate); DDX_Control(pDX, IDC_CKINVOICE, m_ckInvoice); DDX_Control(pDX, IDC_DTENTRYDATE, m_dtEntryDate); DDX_Control(pDX, IDC_CBENTRY, m_cbEntry); DDX_Control(pDX, IDC_LBL16, m_lbl16); DDX_Control(pDX, IDC_CBREPORTS, m_cbReports); DDX_Control(pDX, IDC_LBL15, m_lbl15); DDX_Control(pDX, IDC_CKPREVIEW, m_ckPreview); DDX_Control(pDX, IDC_CKSCHEDDATE_BETWEEN, m_ckSchedDate_BETWEEN); DDX_Control(pDX, IDC_EDSQL, m_edSQL); DDX_Control(pDX, IDC_EDLASTACTIVITY_DAYSAGO, m_edLastActivity_DAYS); DDX_Control(pDX, IDC_DTCHEDDATE_BETWEEN_START, m_dtSchedDate_START); DDX_Control(pDX, IDC_DTCHEDDATE_BETWEEN_END, m_dtSchedDate_END); DDX_Control(pDX, IDC_CKSCHEDDATE_TODAY, m_ckSchedDate_TODAY); DDX_Control(pDX, IDC_CKSCHEDDATE_THISWEEK, m_ckSchedDate_THISWEEK); DDX_Control(pDX, IDC_CKSCHEDDATE_THISMONTH, m_ckSchedDate_THISMONTH); DDX_Control(pDX, IDC_CKSCHEDDATE_ANY, m_ckSchedDate_ANY); DDX_Control(pDX, IDC_CKONSITE_ONSITEONLY, m_ckOnsite_ONSITE); DDX_Control(pDX, IDC_CKONSITE_INHOUSEONLY, m_ckOnsite_INHOUSE); DDX_Control(pDX, IDC_CKONSITE_BOTH, m_ckOnsite_BOTH); DDX_Control(pDX, IDC_CKLASTACTIVITY_ANY, m_ckLastActivity_ANY); DDX_Control(pDX, IDC_CKCLOSEDOPEN_OPENONLY, m_ckClosedOpen_OPEN); DDX_Control(pDX, IDC_CKCLOSEDOPEN_CLOSEDONLY, m_ckClosedOpen_CLOSED); DDX_Control(pDX, IDC_CKCLOSEDOPEN_BOTH, m_ckClosedOpen_BOTH); DDX_Control(pDX, IDC_CBZONES, m_cbZone); DDX_Control(pDX, IDC_CBTECHS, m_cbTech); DDX_Control(pDX, IDC_CBCLIENTS, m_cbClient); DDX_Control(pDX, IDC_LBL14, m_lbl14); DDX_Control(pDX, IDC_LBL9, m_lbl9); DDX_Control(pDX, IDC_LBL8, m_lbl8); DDX_Control(pDX, IDC_LBL7, m_lbl7); DDX_Control(pDX, IDC_LBL6, m_lbl6); DDX_Control(pDX, IDC_LBL5, m_lbl5); DDX_Control(pDX, IDC_LBL4, m_lbl4); DDX_Control(pDX, IDC_LBL3, m_lbl3); DDX_Control(pDX, IDC_LBL2, m_lbl2); DDX_Control(pDX, IDC_LBL13, m_lbl13); DDX_Control(pDX, IDC_LBL12, m_lbl12); DDX_Control(pDX, IDC_LBL11, m_lbl11); DDX_Control(pDX, IDC_LBL10, m_lbl10); DDX_Control(pDX, IDC_LBL1, m_lbl1); DDX_Control(pDX, IDC_CKZONE, m_ckZone); DDX_Control(pDX, IDC_CKWO, m_ckWO); DDX_Control(pDX, IDC_CKSCHEDTECH, m_ckSchedTech); DDX_Control(pDX, IDC_CKSCHEDEND, m_ckSchedEndDate); DDX_Control(pDX, IDC_CKSCHEDDATE, m_ckSchedDate); DDX_Control(pDX, IDC_CKPOSTAL, m_ckPostal); DDX_Control(pDX, IDC_CKONSITE, m_ckOnsite); DDX_Control(pDX, IDC_CKLASTACTIVITY, m_ckLastActivity); DDX_Control(pDX, IDC_CKENTRYDATE, m_ckEntryDate); DDX_Control(pDX, IDC_CKCLOSEDDATE, m_ckClosedDate); DDX_Control(pDX, IDC_CKCLOSED, m_ckClosed); DDX_Control(pDX, IDC_CKCLIENT, m_ckClient); DDX_Control(pDX, IDC_CKCITY, m_ckCity); //}}AFX_DATA_MAP DDX_Control(pDX, IDC_CBSTATUS, m_cbStatus); DDX_Control(pDX, IDC_LBLCREATEDDAYS, m_lblCreatedDays); DDX_Control(pDX, IDC_EDCREATEDDAYS, m_edCreatedDays); } BEGIN_MESSAGE_MAP(CDispatchFieldsDlg, CDialog) //{{AFX_MSG_MAP(CDispatchFieldsDlg) ON_BN_CLICKED(IDC_BTNDONE, OnBtndone) ON_BN_CLICKED(IDC_BTNCANCEL, OnBtncancel) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_CKCLOSEDOPEN_BOTH, OnCkclosedopenBoth) ON_BN_CLICKED(IDC_CKCLOSEDOPEN_OPENONLY, OnCkclosedopenOpenonly) ON_BN_CLICKED(IDC_CKCLOSEDOPEN_CLOSEDONLY, OnCkclosedopenClosedonly) ON_BN_CLICKED(IDC_CKONSITE_BOTH, OnCkonsiteBoth) ON_BN_CLICKED(IDC_CKONSITE_INHOUSEONLY, OnCkonsiteInhouseonly) ON_BN_CLICKED(IDC_CKONSITE_ONSITEONLY, OnCkonsiteOnsiteonly) ON_BN_CLICKED(IDC_CKSCHEDDATE_ANY, OnCkscheddateAny) ON_BN_CLICKED(IDC_CKSCHEDDATE_BETWEEN, OnCkscheddateBetween) ON_BN_CLICKED(IDC_CKSCHEDDATE_THISMONTH, OnCkscheddateThismonth) ON_BN_CLICKED(IDC_CKSCHEDDATE_THISWEEK, OnCkscheddateThisweek) ON_BN_CLICKED(IDC_CKSCHEDDATE_TODAY, OnCkscheddateToday) ON_BN_CLICKED(IDC_CKLASTACTIVITY_ANY, OnCklastactivityAny) ON_CBN_CLOSEUP(IDC_CBENTRY, OnCloseupCbentry) ON_BN_CLICKED(IDC_CKINVOICE, OnCkinvoice) ON_BN_CLICKED(IDC_CKDATE, OnCkdate) ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DTCHEDDATE_BETWEEN_START, OnDatetimechangeDtcheddateBetweenStart) ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DTCHEDDATE_BETWEEN_END, OnDatetimechangeDtcheddateBetweenEnd) ON_BN_CLICKED(IDC_CKOURREF, OnCkourref) ON_BN_CLICKED(IDC_CKSTATUS, OnCkstatus) ON_BN_CLICKED(IDC_CKSCHEDDATE_TOMORROW, OnCkscheddateTomorrow) ON_CBN_CLOSEUP(IDC_CBCATEGORIES, OnCloseupCbcategories) ON_BN_CLICKED(IDC_CKCATEGORY, OnCkcategory) ON_CBN_CLOSEUP(IDC_CBCLIENTS, BuildSQL) ON_CBN_CLOSEUP(IDC_CBTECHS, BuildSQL) ON_CBN_CLOSEUP(IDC_CBZONES, BuildSQL) ON_BN_CLICKED(IDC_CKCITY, BuildSQL) ON_BN_CLICKED(IDC_CKCLIENT, BuildSQL) ON_BN_CLICKED(IDC_CKCLOSED, BuildSQL) ON_BN_CLICKED(IDC_CKCLOSEDDATE, BuildSQL) ON_BN_CLICKED(IDC_CKENTRYDATE, BuildSQL) ON_BN_CLICKED(IDC_CKLASTACTIVITY, BuildSQL) ON_BN_CLICKED(IDC_CKONSITE, BuildSQL) ON_BN_CLICKED(IDC_CKPOSTAL, BuildSQL) ON_BN_CLICKED(IDC_CKSCHEDDATE, BuildSQL) ON_BN_CLICKED(IDC_CKSCHEDEND, BuildSQL) ON_BN_CLICKED(IDC_CKSCHEDTECH, BuildSQL) ON_BN_CLICKED(IDC_CKWO, BuildSQL) ON_BN_CLICKED(IDC_CKZONE, BuildSQL) ON_EN_KILLFOCUS(IDC_EDLASTACTIVITY_DAYSAGO, BuildSQL) ON_BN_CLICKED(IDC_CKPROJECT, OnCkproject) ON_CBN_CLOSEUP(IDC_CBPROJECTS, OnCloseupCbprojects) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDispatchFieldsDlg message handlers void CDispatchFieldsDlg::OnBtndone() { BuildSQL(); if(*passeddv==*pdv) //cool operator overload! pdv->IsModified=false; else pdv->IsModified=true; *passeddv=*pdv; CDialog::OnOK(); } //******************************************************* void CDispatchFieldsDlg::SetReturnVariable(CDispatchView * dvReturn) { passeddv=dvReturn; *pdv=*passeddv; } //******************************************************* void CDispatchFieldsDlg::OnOK() {} BOOL CDispatchFieldsDlg::OnInitDialog() { CDialog::OnInitDialog(); ShowWindow(FALSE); CString str; CWaitCursor wait; FillLists(); ASSERT(pdv!=NULL); m_lbl1.SetFontBold(TRUE); m_lbl2.SetFontBold(TRUE); m_lbl3.SetFontBold(TRUE); m_lbl4.SetFontBold(TRUE); m_lbl5.SetFontBold(TRUE); m_lbl6.SetFontBold(TRUE); m_lbl7.SetFontBold(TRUE); m_lbl8.SetFontBold(TRUE); m_lbl9.SetFontBold(TRUE); m_lbl10.SetFontBold(TRUE); m_lbl11.SetFontBold(TRUE); m_lbl12.SetFontBold(TRUE); m_lbl13.SetFontBold(TRUE); //title: m_lbl14.SetFontBold(TRUE); m_lbl14.SetFontSize(14); m_lbl15.SetFontBold(TRUE); m_lbl16.SetFontBold(TRUE); //WO ENTRY DATE m_dtEntryDate.SetTime(pdv->woentrydate); //WOENTERY DATE TYPE CODE m_cbEntry.SetCurSel(pdv->woentrydatetype); m_edCreatedDays.ShowWindow(FALSE); m_lblCreatedDays.ShowWindow(FALSE); m_dtEntryDate.ShowWindow(FALSE); if(pdv->woentrydatetype==1 || pdv->woentrydatetype==2) { m_dtEntryDate.ShowWindow(TRUE); } //More than / less than days if(12==pdv->woentrydatetype || 13==pdv->woentrydatetype) { m_edCreatedDays.ShowWindow(TRUE); m_lblCreatedDays.ShowWindow(TRUE); } str.Format("%u",pdv->lCreatedDays); m_edCreatedDays.SetWindowText(str); //CLIENT m_ckClient.SetCheck(pdv->client==0 ? FALSE : TRUE); m_cbClient.Select(pdv->client); //DATE - combined standard/quick date m_ckDate.SetCheck(pdv->date==0 ? FALSE : TRUE); //SCHED DATE m_dtSchedDate_START.EnableWindow(FALSE); m_dtSchedDate_END.EnableWindow(FALSE); m_ckSchedDate.SetCheck(pdv->schedstart==0 ? FALSE : TRUE); switch( pdv->schedstart) {//0 = not displayed otherwise 1=any,2=today,3=week,4=month,5=between, 6=TOMORROW case 1: m_ckSchedDate_ANY.SetCheck(TRUE); break; case 2: m_ckSchedDate_TODAY.SetCheck(TRUE); break; case 3: m_ckSchedDate_THISWEEK.SetCheck(TRUE); break; case 4: m_ckSchedDate_THISMONTH.SetCheck(TRUE); break; case 6: m_ckSchedDate_TOMORROW.SetCheck(TRUE); break; default ://between { m_ckSchedDate_BETWEEN.SetCheck(TRUE); m_dtSchedDate_START.EnableWindow(TRUE); m_dtSchedDate_END.EnableWindow(TRUE); m_dtSchedDate_START.SetTime(pdv->scheddatestart); m_dtSchedDate_END.SetTime(pdv->scheddateend); } } //SCHED END DATE m_ckSchedEndDate.SetCheck(pdv->schedenddate==0 ? FALSE : TRUE); //SCHED TECH m_ckSchedTech.SetCheck(pdv->schedtech==-2 ? FALSE : TRUE); m_cbTech.Select(pdv->schedtech); //ENTRY DATE m_ckEntryDate.SetCheck(pdv->wocreateddate==0 ? FALSE : TRUE); //LAST ACTIVITY m_edLastActivity_DAYS.EnableWindow(FALSE); m_ckLastActivity_ANY.SetCheck(TRUE); m_ckLastActivity.SetCheck(TRUE); switch( pdv->lastactivity) {//0 = not displayed otherwise -1=any, or x days case 0: m_ckLastActivity.SetCheck(FALSE); break; case -1: m_ckLastActivity.SetCheck(TRUE); break; default ://X days m_ckLastActivity_ANY.SetCheck(FALSE); m_edLastActivity_DAYS.EnableWindow(TRUE); str.Format("%u",pdv->lastactivity); m_edLastActivity_DAYS.SetWindowText(str); } //ONSITE m_ckOnsite.SetCheck(TRUE); switch( pdv->onsite) { //0 = not displayed otherwise 1="both", 2= "onsite", 3="inhouse" case 0: m_ckOnsite.SetCheck(FALSE); break; case 1: m_ckOnsite_BOTH.SetCheck(TRUE); break; case 2: m_ckOnsite_ONSITE.SetCheck(TRUE); break; case 3: m_ckOnsite_INHOUSE.SetCheck(TRUE); break; } //CLOSED m_ckClosed.SetCheck(TRUE); switch( pdv->closed) {//0 = not displayed 1=both,2="closed",3="open" case 0: m_ckClosed.SetCheck(FALSE); break; case 1: m_ckClosedOpen_BOTH.SetCheck(TRUE); break; case 2: m_ckClosedOpen_CLOSED.SetCheck(TRUE); break; case 3: m_ckClosedOpen_OPEN.SetCheck(TRUE); break; } //CLOSED DATE m_ckClosedDate.SetCheck(pdv->closeddate==0 ? FALSE : TRUE); //POSTAL m_ckPostal.SetCheck(pdv->postal==0 ? FALSE : TRUE); //CITY m_ckCity.SetCheck(pdv->city==0 ? FALSE : TRUE); //WORKORDER m_ckWO.SetCheck(pdv->workorder==0 ? FALSE : TRUE); //INVOICE # m_ckInvoice.SetCheck(pdv->invoice==0 ? FALSE : TRUE); //Our ref # m_ckOurRef.SetCheck(pdv->ourrefnumber==0 ? FALSE : TRUE); //Cust ref # m_ckCustRef.SetCheck(pdv->custrefnumber==0 ? FALSE : TRUE); //Status m_ckStatus.SetCheck(pdv->status==0 ? FALSE : TRUE); m_cbStatus.Select(pdv->status); //ZONE m_ckZone.SetCheck(pdv->zone==0 ? FALSE : TRUE); m_cbZone.Select(pdv->zone); //CATEGORY m_ckCategory.SetCheck(pdv->category==0 ? FALSE : TRUE); m_cbCategories.Select(pdv->category); //PROJECTS m_ckProject.SetCheck(pdv->project==0 ? FALSE : TRUE); m_cbProjects.Select(pdv->project); //PREVIEW DESCripTION m_ckPreview.SetCheck(pdv->preview==0 ? FALSE : TRUE); //REPORT NAME m_cbReports.Select(pdv->virtualreport); ShowWindow(SW_MAXIMIZE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } //************************************************* void CDispatchFieldsDlg::OnBtncancel() { CDialog::OnCancel(); } //**************************************** //Build the SQL statement //Set the various dispatchview class values //update the user interface to provide feedback void CDispatchFieldsDlg::BuildSQL() { bool NoChoices=true; CString str1,str2; long lData; COleDateTime dtData1,dtData2,dtDefault; dtDefault.SetDate(1968,03,12); //AfxMessageBox("BuildSQL"); //Iterate through the fields and build the WHERE clause //of the sql statement. pdv->sqlcriteria.Empty(); //CLIENT if(m_ckClient.GetCheck()==TRUE) { pdv->client=-1;//default means show but no criteria NoChoices=false; bool bHO=false; //Head office addition June 20 2003 m_cbClient.GetWindowText(str1); if(str1.Right(13)=="(head office)") bHO=true; str1=m_cbClient.GetCurrentRowID(); if(str1!="0") { //(clients.headoffice)=22) if(bHO==true) str2.Format(" ((clients.headoffice)=%s)",str1); else str2.Format(" ((wo.client)=%s)",str1); pdv->sqlcriteria+=str2; pdv->client=atol(str1); } } else//no client pdv->client=0; //ZONE if(m_ckZone.GetCheck()==TRUE) { pdv->zone=-1; NoChoices=false; str1=m_cbZone.GetCurrentRowID(); if(str1!="0") { str2.Format(" AND ((clients.czone)=%s)",str1); pdv->sqlcriteria+=str2; pdv->zone=atol(str1); } } else pdv->zone=0; //CATEGORY if(m_ckCategory.GetCheck()==TRUE) { pdv->category=-1; NoChoices=false; str1=m_cbCategories.GetCurrentRowID(); if(str1!="0") { str2.Format(" AND ((wo.type)=%s)",str1); pdv->sqlcriteria+=str2; pdv->category=atol(str1); } } else pdv->category=0; //PROJECT if(m_ckProject.GetCheck()==TRUE) { pdv->project=-1; NoChoices=false; str1=m_cbProjects.GetCurrentRowID(); if(str1!="0") { str2.Format(" AND ((wo.project)=%s)",str1); pdv->sqlcriteria+=str2; pdv->project=atol(str1); } } else pdv->project=0; //TECH if(m_ckSchedTech.GetCheck()==TRUE) { pdv->schedtech=-1; NoChoices=false; str1=m_cbTech.GetCurrentRowID(); //Commented out check if tech zero because if you select "any tech" //it should just show work orders assigned to tech 0 (not assigned) //replaced with -1 meaning don't show if(str1!="-1") { //original: //str2.Format(" AND ((wo.assigntech)=%s)",str1); str2.Format(" AND ( ((wo.assigntech)=%s) OR ((wo.assigntech2)=%s) OR ((wo.assigntech3)=%s) OR ((wo.assigntech4)=%s) )" ,str1,str1,str1,str1); //((wo.assigntech)=2) OR ((wo.assigntech2)=2) OR ((wo.assigntech3)=2) OR ((wo.assigntech4)=2) pdv->sqlcriteria+=str2; pdv->schedtech=atol(str1); } } else pdv->schedtech=-2;//-2 means don't show the scheduled tech column //CLOSED/OPEN str2.Empty(); if(m_ckClosed.GetCheck()==TRUE) { pdv->closed=-1;//default, means show but no criteria NoChoices=false; if(m_ckClosedOpen_BOTH.GetCheck()==TRUE) pdv->closed=1; if(m_ckClosedOpen_OPEN.GetCheck()==TRUE) { str2.Format(" AND ((wo.closed)=#%s#)",dtDefault.Format(_T("%m/%d/%Y")));//Open pdv->closed=3; } if(m_ckClosedOpen_CLOSED.GetCheck()==TRUE) { str2.Format(" AND ((wo.closed)<>#%s#)",dtDefault.Format(_T("%m/%d/%Y")));//Closed pdv->closed=2; } pdv->sqlcriteria+=str2; } else pdv->closed=0; //ONSITE str2.Empty(); if(m_ckOnsite.GetCheck()==TRUE) { pdv->onsite=-1;//default show but no criteria NoChoices=false; if(m_ckOnsite_BOTH.GetCheck()==TRUE) pdv->onsite=1; if(m_ckOnsite_ONSITE.GetCheck()==TRUE) { pdv->onsite=2; str2=" AND ((wo.onsite)=True)"; } if(m_ckOnsite_INHOUSE.GetCheck()==TRUE) { pdv->onsite=3; str2=" AND ((wo.onsite)=False)"; } pdv->sqlcriteria+=str2; } else pdv->onsite=0; //LAST ACTIVITY if(m_ckLastActivity.GetCheck()==TRUE) { NoChoices=false; pdv->lastactivity=-1;//default show but no criteria if(m_ckLastActivity_ANY.GetCheck()!=TRUE) { m_edLastActivity_DAYS.GetWindowText(str1); if(!str1.IsEmpty()) { str2.Format(" AND ((wo.modified) < Date( ) - %s)",str1); pdv->sqlcriteria+=str2; pdv->lastactivity=atol(str1); } } } else pdv->lastactivity=0; //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>. //WO CREATED DATE //update January 2 2002, changed all date related bits below to use the dateadd function //was previously stuck on a year hump because it was explicitly looking for wo's within the same year str1.Empty(); str2.Empty(); pdv->woentrydatetype=m_cbEntry.GetCurSel(); //m_dtEntryDate.SetTime(pdv->woentrydate); m_dtEntryDate.GetTime(pdv->woentrydate); pdv->lCreatedDays=0; if(pdv->woentrydatetype >0) //0=Anytime { switch(pdv->woentrydatetype) { case 1://1=After woentrydate //dtLaborStart.Format(_T("%m/%d/%Y %H:%M:%S") str1.Format(" AND ((wo.created)>#%s#)", pdv->woentrydate.Format(_T("%m/%d/%Y 23:59:59"))); break; case 2: //2=Before woentrydate str1.Format(" AND ((wo.created)<#%s#)", pdv->woentrydate.Format(_T("%m/%d/%Y"))); break; case 3: //3=within 1 week str1=" AND (([wo].[created]))>= (DateAdd(\"d\",-7, Date()))"; break; case 4://4=within 2 weeks str1=" AND (([wo].[created]))>= (DateAdd(\"d\",-14, Date()))"; break; case 5: //5=within the last 45 days str1=" AND (([wo].[created]))>= (DateAdd(\"d\",-45, Date()))"; break; case 6: //5=within 1 month str1=" AND (([wo].[created]))>= (DateAdd(\"m\",-1, Date()))"; break; case 7: //6=within 3 months DateAdd("m",-3,Date()) str1=" AND (([wo].[created]))>= (DateAdd(\"m\",-3, Date()))"; break; case 8://7=within 6 months str1=" AND (([wo].[created]))>= (DateAdd(\"m\",-6, Date()))"; break; case 9: //8=within 1 year str1=" AND (([wo].[created]))>= (DateAdd(\"yyyy\",-1, Date()))"; break; case 10: //9=within 2 years str1=" AND (([wo].[created]))>= (DateAdd(\"yyyy\",-2, Date()))"; break; case 11://10=within 5 years str1=" AND (([wo].[created]))>= (DateAdd(\"yyyy\",-4, Date()))"; break; case 12://Less than X days ago m_edCreatedDays.GetWindowText(str2); lData=atol(str2); if(lData==0) { str1.Format("Workorder created more than \"%s\" days is invalid\r\n" "Substituting with 5\r\n",str2); AfxMessageBox(str1); m_edCreatedDays.SetWindowText("5"); m_edCreatedDays.SetFocus(); lData=5; } pdv->lCreatedDays=lData; str1.Format(" AND (([wo].[created]))>=(DateAdd(\"d\",-%u, Date()))",lData); break; case 13://More than X days ago m_edCreatedDays.GetWindowText(str2); lData=atol(str2); if(lData==0) { str1.Format("Workorder created more than \"%s\" days is invalid\r\n" "Substituting with 5\r\n",str2); AfxMessageBox(str1); m_edCreatedDays.SetWindowText("5"); m_edCreatedDays.SetFocus(); lData=5; } pdv->lCreatedDays=lData; str1.Format(" AND (([wo].[created]))<=(DateAdd(\"d\",-%u, Date()))",lData); break; } pdv->sqlcriteria+=str1; } //SCHED START DATE str1.Empty(); str2.Empty(); if(m_ckSchedDate.GetCheck()==TRUE) { pdv->schedstart=-1;//show but no crit. NoChoices=false; if(m_ckSchedDate_ANY.GetCheck()==TRUE) pdv->schedstart=1; if(m_ckSchedDate_TODAY.GetCheck()==TRUE) { str1=" AND ((DatePart(\"y\",[wo].[starttime]))=DatePart(\"y\",Date())) AND ((DatePart(\"yyyy\",[wo].[starttime]))=DatePart(\"yyyy\",Date()))"; pdv->schedstart=2; } if(m_ckSchedDate_THISWEEK.GetCheck()==TRUE) { str1=" AND ((DatePart(\"ww\",[wo].[starttime]))=DatePart(\"ww\",Date())) AND ((DatePart(\"yyyy\",[wo].[starttime]))=DatePart(\"yyyy\",Date()))"; pdv->schedstart=3; } if(m_ckSchedDate_THISMONTH.GetCheck()==TRUE) { str1=" AND ((DatePart(\"m\",[wo].[starttime]))=DatePart(\"m\",Date())) AND ((DatePart(\"yyyy\",[wo].[starttime]))=DatePart(\"yyyy\",Date()))"; pdv->schedstart=4; } if(m_ckSchedDate_TOMORROW.GetCheck()==TRUE) { str1=" AND ((DatePart(\"y\",[wo].[starttime]))=DatePart(\"y\",Date())+1) AND ((DatePart(\"yyyy\",[wo].[starttime]))=DatePart(\"yyyy\",Date()))"; pdv->schedstart=2; pdv->schedstart=6; } if(m_ckSchedDate_BETWEEN.GetCheck()==TRUE) { m_dtSchedDate_START.GetTime(dtData1); m_dtSchedDate_END.GetTime(dtData2); pdv->scheddatestart=dtData1; pdv->scheddateend=dtData2; str1.Format(" AND ((wo.starttime) Between #%s# And #%s#)",dtData1.Format(_T("%m/%d/%Y")),dtData2.Format(_T("%m/%d/%Y"))); pdv->schedstart=5; } pdv->sqlcriteria+=str1; } else pdv->schedstart=0; //NON CRITERIA FIELDS: (0=dont display, nonzero means display) //POSTAL pdv->postal=m_ckPostal.GetCheck() ? 1 : 0; if(pdv->postal==1) NoChoices=false; //CITY pdv->city= m_ckCity.GetCheck() ? 1 : 0; if(pdv->city==1) NoChoices=false; //workorder pdv->workorder= m_ckWO.GetCheck() ? 1 : 0; if(pdv->workorder==1) NoChoices=false; //CLOSEDDATE pdv->closeddate = m_ckClosedDate.GetCheck() ? 1 : 0; if(pdv->closeddate==1) NoChoices=false; //SCHEDENDDATE pdv->schedenddate = m_ckSchedEndDate.GetCheck() ? 1 : 0; if(pdv->schedenddate==1) NoChoices=false; //WOCREATEDDATE pdv->wocreateddate= m_ckEntryDate.GetCheck() ? 1 : 0; if(pdv->wocreateddate==1) NoChoices=false; //DATE - combined standard/quick date column pdv->date= m_ckDate.GetCheck() ? 1 : 0; if(pdv->date==1) NoChoices=false; //INVOICE # pdv->invoice = m_ckInvoice.GetCheck() ? 1 : 0; if(pdv->invoice==1) NoChoices=false; //Our ref # pdv->ourrefnumber = m_ckOurRef.GetCheck() ? 1 : 0; if(pdv->ourrefnumber==1) NoChoices=false; //Cust ref # pdv->custrefnumber = m_ckCustRef.GetCheck() ? 1 : 0; if(pdv->custrefnumber==1) NoChoices=false; //STATUS /*pdv->status = m_ckStatus.GetCheck() ? 1 : 0; if(pdv->status==1) NoChoices=false;*/ if(m_ckStatus.GetCheck()==TRUE) { pdv->status=-1; NoChoices=false; str1=m_cbStatus.GetCurrentRowID(); if(str1!="0") { str2.Format(" AND ((wo.status)=%s)",str1); pdv->sqlcriteria+=str2; pdv->status=atol(str1); } } else pdv->status=0; //PREVIEW DESCripTION pdv->preview = m_ckPreview.GetCheck() ? 1 : 0; if(pdv->preview==1) NoChoices=false; //FIXUP THE QUERY STRING if(pdv->sqlcriteria.IsEmpty()) { pdv->sqlcriteria.Empty(); } else { if(pdv->sqlcriteria.Left(4)==" AND") { str1=pdv->sqlcriteria.Right(pdv->sqlcriteria.GetLength()-4); pdv->sqlcriteria=str1; } pdv->sqlcriteria=" WHERE(" + pdv->sqlcriteria + ")"; } //REPORT NAME pdv->virtualreport=m_cbReports.GetCurrentRowID(); if(NoChoices) //nothing was chosen to display { AfxMessageBox("You must select at least one item for display.\r\nI'm going to select workorder # for you now to avoid problems."); m_ckWO.SetCheck(TRUE); pdv->workorder=1;//force a workorder to avoid crash } } //***************************************** void CDispatchFieldsDlg::FillLists() { CString strData; CString strIndex; long lData; bool bHO; m_cbTech.Clear(); m_cbTech.AddRow(" ","-1"); m_cbTech.AddRow("","0"); rs->Query("SELECT users.id, [last] & \", \" & [first] AS fullname FROM users WHERE (((users.tech)=True)) ORDER BY users.last;"); if(!rs->IsEmpty()) { rs->MoveFirst(); rs->FetchField("fullname",&strData); rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_cbTech.AddRow(strData,strIndex); while(rs->MoveForward()) { rs->FetchField("fullname",&strData); rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_cbTech.AddRow(strData,strIndex); } } //========================================== //CLIENTS LIST m_cbClient.Clear(); m_cbClient.AddRow("","0"); rs->Query("SELECT clients.id, IIf(IsNull([company]),[last] & \", \" & [first],[company]) AS name, isheadoffice " "FROM clients ORDER BY IIf(IsNull([company]),[last] & \", \" & [first],[company]);"); if(!rs->IsEmpty()) { do { rs->FetchField("isheadoffice",&bHO); rs->FetchField("name",&strData); if(bHO) strData=strData+" (head office)"; rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_cbClient.AddRow(strData,strIndex); }while(rs->MoveForward()); } //============================================ //========================================== //ZONES LIST m_cbZone.Clear(); m_cbZone.AddRow("","0"); rs->Query("SELECT zones.name, zones.id FROM zones ORDER BY zones.name;"); if(!rs->IsEmpty()) { do { rs->FetchField("name",&strData); rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_cbZone.AddRow(strData,strIndex); }while(rs->MoveForward()); } //========================================== //CATEGORIES LIST m_cbCategories.Clear(); m_cbCategories.AddRow("","0"); rs->Query("SELECT wotypes.category, wotypes.id FROM wotypes ORDER BY wotypes.category;"); if(!rs->IsEmpty()) { do { rs->FetchField("category",&strData); rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_cbCategories.AddRow(strData,strIndex); }while(rs->MoveForward()); } //m_cbCategories.Select("0"); //========================================== //PROJECTS LIST m_cbProjects.Clear(); m_cbProjects.AddRow("","0"); rs->Query("SELECT projects.name, projects.id FROM projects ORDER BY projects.name;"); if(!rs->IsEmpty()) { do { rs->FetchField("name",&strData); rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_cbProjects.AddRow(strData,strIndex); }while(rs->MoveForward()); } //m_cbProjects.Select("0"); //============================================ //REPORTS LIST m_cbReports.Clear(); rs->Query("SELECT rptsmaster.virtualname, rptsmaster.filename FROM rptsmaster " "WHERE (((rptsmaster.recordset)=\"wostat\")) " "ORDER BY rptsmaster.virtualname;"); if(!rs->IsEmpty()) { do { rs->FetchField("virtualname",&strIndex); rs->FetchField("filename",&strData); strData=strIndex + " (" + strData + ")"; m_cbReports.AddRow(strData,strIndex); }while(rs->MoveForward()); } m_cbReports.Select("0");//should force first item selection //========================================== //STATUS LIST m_cbStatus.Clear(); m_cbStatus.AddRow(" < Any status >","0"); rs->Query("SELECT probstat.notes, probstat.id FROM probstat ORDER BY probstat.notes;"); if(!rs->IsEmpty()) { do { rs->FetchField("notes",&strData); rs->FetchField("id",&lData); strIndex.Format("%u",lData); m_cbStatus.AddRow(strData,strIndex); }while(rs->MoveForward()); } m_cbStatus.Select("0"); } //************************************************** void CDispatchFieldsDlg::OnButton1() { BuildSQL(); m_edSQL.SetWindowText(pdv->sqlcriteria); } void CDispatchFieldsDlg::RefreshDisplay() { m_ckClosedOpen_BOTH.SetCheck(FALSE); m_ckClosedOpen_CLOSED.SetCheck(FALSE); m_ckClosedOpen_OPEN.SetCheck(FALSE); switch( pdv->closed) {//0 = not displayed 1=both,2="closed",3="open" case 1: m_ckClosedOpen_BOTH.SetCheck(TRUE); break; case 2: m_ckClosedOpen_CLOSED.SetCheck(TRUE); break; case 3: m_ckClosedOpen_OPEN.SetCheck(TRUE); break; } m_ckOnsite_BOTH.SetCheck(FALSE); m_ckOnsite_ONSITE.SetCheck(FALSE); m_ckOnsite_INHOUSE.SetCheck(FALSE); switch(pdv->onsite) { //0 = not displayed otherwise 1="both", 2= "onsite", 3="inhouse" case 1: m_ckOnsite_BOTH.SetCheck(TRUE); break; case 2: m_ckOnsite_ONSITE.SetCheck(TRUE); break; case 3: m_ckOnsite_INHOUSE.SetCheck(TRUE); break; } m_ckSchedDate_ANY.SetCheck(FALSE); m_ckSchedDate_TODAY.SetCheck(FALSE); m_ckSchedDate_THISWEEK.SetCheck(FALSE); m_ckSchedDate_THISMONTH.SetCheck(FALSE); m_ckSchedDate_BETWEEN.SetCheck(FALSE); switch( pdv->schedstart) {//0 = not displayed otherwise 1=any,2=today,3=week,4=month,5=between case 1: m_ckSchedDate_ANY.SetCheck(TRUE); break; case 2: m_ckSchedDate_TODAY.SetCheck(TRUE); break; case 3: m_ckSchedDate_THISWEEK.SetCheck(TRUE); break; case 4: m_ckSchedDate_THISMONTH.SetCheck(TRUE); break; case 5 ://between m_ckSchedDate_BETWEEN.SetCheck(TRUE); break; } m_ckLastActivity.SetCheck(FALSE); if( pdv->lastactivity==-1) m_ckLastActivity.SetCheck(TRUE); } //*************************************************************** void CDispatchFieldsDlg::OnCkclosedopenBoth() { m_ckClosedOpen_CLOSED.SetCheck(FALSE); //m_ckClosedOpen_BOTH.SetCheck(FALSE); m_ckClosedOpen_OPEN.SetCheck(FALSE); BuildSQL(); } void CDispatchFieldsDlg::OnCkclosedopenOpenonly() { m_ckClosedOpen_CLOSED.SetCheck(FALSE); m_ckClosedOpen_BOTH.SetCheck(FALSE); //m_ckClosedOpen_OPEN.SetCheck(FALSE); BuildSQL(); } void CDispatchFieldsDlg::OnCkclosedopenClosedonly() { //m_ckClosedOpen_CLOSED.SetCheck(FALSE); m_ckClosedOpen_BOTH.SetCheck(FALSE); m_ckClosedOpen_OPEN.SetCheck(FALSE); BuildSQL(); } //*********************************************************** void CDispatchFieldsDlg::OnCkonsiteBoth() { //m_ckOnsite_BOTH.SetCheck(FALSE); m_ckOnsite_INHOUSE.SetCheck(FALSE); m_ckOnsite_ONSITE.SetCheck(FALSE); BuildSQL(); } void CDispatchFieldsDlg::OnCkonsiteInhouseonly() { m_ckOnsite_BOTH.SetCheck(FALSE); //m_ckOnsite_INHOUSE.SetCheck(FALSE); m_ckOnsite_ONSITE.SetCheck(FALSE); BuildSQL(); } void CDispatchFieldsDlg::OnCkonsiteOnsiteonly() { m_ckOnsite_BOTH.SetCheck(FALSE); m_ckOnsite_INHOUSE.SetCheck(FALSE); //m_ckOnsite_ONSITE.SetCheck(FALSE); BuildSQL(); } //******************************************************** void CDispatchFieldsDlg::OnCkscheddateAny() { m_ckSchedDate_TODAY.SetCheck(FALSE); m_ckSchedDate_THISWEEK.SetCheck(FALSE); m_ckSchedDate_THISMONTH.SetCheck(FALSE); m_ckSchedDate_TOMORROW.SetCheck(FALSE); m_ckSchedDate_BETWEEN.SetCheck(FALSE); m_dtSchedDate_START.EnableWindow(FALSE); m_dtSchedDate_END.EnableWindow(FALSE); BuildSQL(); } void CDispatchFieldsDlg::OnCkscheddateBetween() { m_ckSchedDate_TODAY.SetCheck(FALSE); m_ckSchedDate_THISWEEK.SetCheck(FALSE); m_ckSchedDate_THISMONTH.SetCheck(FALSE); m_ckSchedDate_ANY.SetCheck(FALSE); m_ckSchedDate_TOMORROW.SetCheck(FALSE); m_dtSchedDate_START.EnableWindow(TRUE); m_dtSchedDate_END.EnableWindow(TRUE); m_dtSchedDate_START.SetTime(COleDateTime::GetCurrentTime()); m_dtSchedDate_END.SetTime(COleDateTime::GetCurrentTime()); } void CDispatchFieldsDlg::OnCkscheddateThismonth() { m_ckSchedDate_TODAY.SetCheck(FALSE); m_ckSchedDate_THISWEEK.SetCheck(FALSE); m_ckSchedDate_TOMORROW.SetCheck(FALSE); m_ckSchedDate_ANY.SetCheck(FALSE); m_ckSchedDate_BETWEEN.SetCheck(FALSE); m_dtSchedDate_START.EnableWindow(FALSE); m_dtSchedDate_END.EnableWindow(FALSE); BuildSQL(); } void CDispatchFieldsDlg::OnCkscheddateThisweek() { m_ckSchedDate_TODAY.SetCheck(FALSE); m_ckSchedDate_TOMORROW.SetCheck(FALSE); m_ckSchedDate_THISMONTH.SetCheck(FALSE); m_ckSchedDate_ANY.SetCheck(FALSE); m_ckSchedDate_BETWEEN.SetCheck(FALSE); m_dtSchedDate_START.EnableWindow(FALSE); m_dtSchedDate_END.EnableWindow(FALSE); BuildSQL(); } void CDispatchFieldsDlg::OnCkscheddateToday() { m_ckSchedDate_TOMORROW.SetCheck(FALSE); m_ckSchedDate_THISWEEK.SetCheck(FALSE); m_ckSchedDate_THISMONTH.SetCheck(FALSE); m_ckSchedDate_ANY.SetCheck(FALSE); m_ckSchedDate_BETWEEN.SetCheck(FALSE); m_dtSchedDate_START.EnableWindow(FALSE); m_dtSchedDate_END.EnableWindow(FALSE); BuildSQL(); } void CDispatchFieldsDlg::OnCkscheddateTomorrow() { m_ckSchedDate_TODAY.SetCheck(FALSE); m_ckSchedDate_THISWEEK.SetCheck(FALSE); m_ckSchedDate_THISMONTH.SetCheck(FALSE); m_ckSchedDate_ANY.SetCheck(FALSE); m_ckSchedDate_BETWEEN.SetCheck(FALSE); m_dtSchedDate_START.EnableWindow(FALSE); m_dtSchedDate_END.EnableWindow(FALSE); BuildSQL(); } //************************************************************** void CDispatchFieldsDlg::OnCklastactivityAny() { if(m_ckLastActivity_ANY.GetCheck()==TRUE) { m_edLastActivity_DAYS.SetWindowText(""); m_edLastActivity_DAYS.EnableWindow(FALSE); } else { m_edLastActivity_DAYS.SetWindowText("7"); m_edLastActivity_DAYS.EnableWindow(TRUE); } } void CDispatchFieldsDlg::OnCloseupCbentry() { int x=0; x=m_cbEntry.GetCurSel(); m_edCreatedDays.ShowWindow(FALSE); m_lblCreatedDays.ShowWindow(FALSE); m_dtEntryDate.ShowWindow(FALSE); if(x==1 || x==2) { m_dtEntryDate.ShowWindow(TRUE); } if(12==x || 13==x) { m_edCreatedDays.ShowWindow(TRUE); m_lblCreatedDays.ShowWindow(TRUE); } } void CDispatchFieldsDlg::OnCkinvoice() { // TODO: Add your control notification handler code here } void CDispatchFieldsDlg::OnCkdate() { // TODO: Add your control notification handler code here } void CDispatchFieldsDlg::OnDatetimechangeDtcheddateBetweenStart(NMHDR* pNMHDR, LRESULT* pResult) { BuildSQL(); *pResult = 0; } void CDispatchFieldsDlg::OnDatetimechangeDtcheddateBetweenEnd(NMHDR* pNMHDR, LRESULT* pResult) { BuildSQL(); *pResult = 0; } void CDispatchFieldsDlg::OnCkourref() { // TODO: Add your control notification handler code here } void CDispatchFieldsDlg::OnCkstatus() { // TODO: Add your control notification handler code here } void CDispatchFieldsDlg::OnCloseupCbcategories() { // TODO: Add your control notification handler code here } void CDispatchFieldsDlg::OnCkcategory() { // TODO: Add your control notification handler code here } void CDispatchFieldsDlg::OnCkproject() { // TODO: Add your control notification handler code here } void CDispatchFieldsDlg::OnCloseupCbprojects() { // TODO: Add your control notification handler code here }