Files
ayanova7/archive/ayanova 1.9.4 CE final release db schema 171/sp/DispatchFieldsDlg.cpp

1382 lines
34 KiB
C++

// 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(" <All techs>","-1");
m_cbTech.AddRow("<To be assigned>","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("<Any Client>","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("<Any Zone>","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("<Any category>","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("<Any project>","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
}