AyaNova CE Archive added as recovered from storage during attempt to upgrade a customer from v1.7 to v8!
This commit is contained in:
@@ -0,0 +1,823 @@
|
||||
// LoanersDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "sp.h"
|
||||
#include "LoanersDlg.h"
|
||||
#include "loanerseditdlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLoanersDlg dialog
|
||||
|
||||
|
||||
CLoanersDlg::CLoanersDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CLoanersDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CLoanersDlg)
|
||||
//}}AFX_DATA_INIT
|
||||
m_pApp= (CSpApp*)AfxGetApp();
|
||||
|
||||
rsPrint=m_pApp->rsPool->GetRSPrint("CLoanersDlg rsPrint");
|
||||
|
||||
|
||||
rs=m_pApp->rsPool->GetRS("CLoanersDlg");
|
||||
|
||||
m_strCriteria=" WHERE (((rentals.returned)=False))";
|
||||
m_nDateCriteriaX=0;
|
||||
//show rented out items only when startup
|
||||
m_nTypeCriteriaX=2;
|
||||
}
|
||||
|
||||
CLoanersDlg::~CLoanersDlg()
|
||||
{
|
||||
m_pApp->rsPool->ReleaseRS(&rsPrint->m_nID);
|
||||
m_pApp->rsPool->ReleaseRS(&rs->m_nID);
|
||||
}
|
||||
|
||||
void CLoanersDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CLoanersDlg)
|
||||
DDX_Control(pDX, IDC_CKRECEIVEDDATE, m_ckReceivedDate);
|
||||
DDX_Control(pDX, IDC_CKDUEDATE, m_ckDueDate);
|
||||
DDX_Control(pDX, IDC_CKANYDATE, m_ckAnyDate);
|
||||
DDX_Control(pDX, IDC_CKSENTDATE, m_ckSentDate);
|
||||
DDX_Control(pDX, IDC_CKSHOWRETURNED, m_ckShowReturned);
|
||||
DDX_Control(pDX, IDC_CKSHOWOUT, m_ckShowOut);
|
||||
DDX_Control(pDX, IDC_CKSHOWALLITEMS, m_ckShowAll);
|
||||
DDX_Control(pDX, IDC_REPORT, m_rc);
|
||||
DDX_Control(pDX, IDC_lblTo, m_lblTo);
|
||||
DDX_Control(pDX, IDC_DTTO, m_dtTo);
|
||||
DDX_Control(pDX, IDC_DTFROM, m_dtFrom);
|
||||
//}}AFX_DATA_MAP
|
||||
DDX_Control(pDX, IDC_LBL_SHOW, m_lblShow);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CLoanersDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CLoanersDlg)
|
||||
ON_BN_CLICKED(IDC_CKANYDATE, OnCkanydate)
|
||||
ON_BN_CLICKED(IDC_CKSENTDATE, OnCksentdate)
|
||||
ON_BN_CLICKED(IDC_CKDUEDATE, OnCkduedate)
|
||||
ON_BN_CLICKED(IDC_CKRECEIVEDDATE, OnCkreceiveddate)
|
||||
ON_BN_CLICKED(IDC_CKSHOWRETURNED, OnCkshowreturned)
|
||||
ON_BN_CLICKED(IDC_CKSHOWOUT, OnCkshowout)
|
||||
ON_BN_CLICKED(IDC_CKSHOWALLITEMS, OnCkshowallitems)
|
||||
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DTTO, OnDatetimechangeDtto)
|
||||
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DTFROM, OnDatetimechangeDtfrom)
|
||||
ON_NOTIFY(RVN_ITEMDBCLICK, IDC_REPORT, OnRvnItemDbClick)
|
||||
ON_NOTIFY(RVN_COLUMNCLICK, IDC_REPORT, OnColumnClick)
|
||||
ON_BN_CLICKED(IDC_BTNPRINT, OnBtnprint)
|
||||
//}}AFX_MSG_MAP
|
||||
ON_COMMAND(ID_NEW, OnNew)
|
||||
ON_COMMAND(ID_DELETE, OnDelete)
|
||||
ON_COMMAND(ID_CLOSE_LOANERS_AND_RENTALS, OnCloseThisScreen)
|
||||
ON_COMMAND(ID_HELPONLOANERS, OnHelponloaners)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CLoanersDlg message handlers
|
||||
void CLoanersDlg::OnRvnItemDbClick(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
|
||||
LPNMREPORTVIEW lpnmrv = (LPNMREPORTVIEW)pNMHDR;
|
||||
|
||||
|
||||
|
||||
if(lpnmrv->iItem >=0)//-1 if clicked on invalid
|
||||
{
|
||||
|
||||
CLoanersEditDlg d;
|
||||
CString item=m_rc.GetItemText(lpnmrv->iItem,6);
|
||||
d.SetRentalID(&item);
|
||||
if(d.DoModal()==IDOK)
|
||||
FillView();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
*pResult = FALSE;
|
||||
}
|
||||
|
||||
BOOL CLoanersDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
m_resize.Create( this );
|
||||
ShowWindow(SW_HIDE);
|
||||
Security();
|
||||
CWaitCursor wait;
|
||||
//defaults
|
||||
m_ckShowOut.SetCheck(TRUE);
|
||||
m_ckAnyDate.SetCheck(TRUE);
|
||||
|
||||
CString profile,q;
|
||||
q.Format("SELECT users.rentalprofile "
|
||||
"FROM users WHERE (((users.id)=%u));",m_pApp->m_lusrID);
|
||||
rs->Query(q);
|
||||
rs->FetchField("rentalprofile",&profile);
|
||||
|
||||
|
||||
|
||||
m_ilReport.Create(IDB_BM2, 16, 1, RGB(255,0,255));
|
||||
m_rc.SetImageList(&m_ilReport);
|
||||
|
||||
//ShowWindow(SW_MAXIMIZE);
|
||||
|
||||
m_rc.InsertColor(0, 0x00C0D8C0);
|
||||
m_rc.InsertColor(1, ::GetSysColor(COLOR_GRAYTEXT));
|
||||
m_rc.InsertColor(2, 0x00D0C0C0);
|
||||
m_rc.InsertColor(3, 0x00804000);
|
||||
|
||||
|
||||
RVCOLUMN rvc;
|
||||
|
||||
rvc.nFormat = RVCF_TEXT|RVCF_EX_AUTOWIDTH|RVCF_EX_FIXEDWIDTH|RVCF_SUBITEM_IMAGE;
|
||||
rvc.iImage = 1;
|
||||
rvc.lpszText = _T("Status");
|
||||
rvc.iWidth = 60;
|
||||
m_rc.DefineColumn(0, &rvc);
|
||||
|
||||
rvc.nFormat = RVCF_TEXT;
|
||||
rvc.lpszText = "Item";
|
||||
rvc.iWidth = 60;
|
||||
m_rc.DefineColumn(1, &rvc);
|
||||
|
||||
rvc.lpszText = "At";
|
||||
rvc.iWidth = 60;
|
||||
m_rc.DefineColumn(2, &rvc);
|
||||
|
||||
rvc.lpszText = "Out";
|
||||
rvc.iWidth = 60;
|
||||
m_rc.DefineColumn(3, &rvc);
|
||||
|
||||
rvc.nFormat = RVCF_TEXT;
|
||||
rvc.lpszText = "Due";
|
||||
rvc.iWidth = 60;
|
||||
m_rc.DefineColumn(4, &rvc);
|
||||
|
||||
rvc.lpszText = "Rcvd.";
|
||||
rvc.iWidth = 60;
|
||||
m_rc.DefineColumn(5, &rvc);
|
||||
|
||||
rvc.nFormat = RVCF_TEXT | RVCF_EX_FIXEDWIDTH;
|
||||
rvc.lpszText = "id";
|
||||
rvc.iWidth = 0;
|
||||
m_rc.DefineColumn(6, &rvc);
|
||||
|
||||
rvc.nFormat = RVCF_TEXT;
|
||||
rvc.lpszText = "Ref";
|
||||
rvc.iWidth = 60;
|
||||
m_rc.DefineColumn(7, &rvc);
|
||||
|
||||
rvc.nFormat = RVCF_TEXT;
|
||||
rvc.lpszText = "Desc.";
|
||||
rvc.iWidth = 60;
|
||||
m_rc.DefineColumn(8, &rvc);
|
||||
|
||||
//setup according to users preferences
|
||||
if(!profile.IsEmpty())
|
||||
m_rc.GetProfile(&profile);
|
||||
else
|
||||
{
|
||||
|
||||
//not needed when setting by pref
|
||||
//but if there are no preferences then you would need it
|
||||
|
||||
m_rc.ActivateColumn(0, 0);
|
||||
m_rc.ActivateColumn(1, 1);
|
||||
m_rc.ActivateColumn(2, 2);
|
||||
m_rc.ActivateColumn(3, 3);
|
||||
m_rc.ActivateColumn(4, 4);
|
||||
m_rc.ActivateColumn(5, 5);
|
||||
m_rc.ActivateColumn(6, 6);
|
||||
m_rc.ActivateColumn(7, 7);
|
||||
m_rc.ActivateColumn(8, 8);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
m_rc.ModifyStyle(0, RVS_SINGLESELECT);
|
||||
//m_rc.ModifyStyle(0, RVS_SHOWCOLORALTERNATE);
|
||||
|
||||
|
||||
//turn off the grids
|
||||
m_rc.ModifyStyle(RVS_SHOWVGRID, 0);
|
||||
m_rc.ModifyStyle(RVS_SHOWHGRID, 0);
|
||||
|
||||
|
||||
|
||||
//retrieve the loaner items and display them
|
||||
FillView();
|
||||
Layout();
|
||||
|
||||
//Use the current width and height as the minimum size
|
||||
m_resize.SetMinimumTrackingSize();
|
||||
|
||||
//===================================================
|
||||
// SET WINDOW SIZE TO MATCH WORK AREA
|
||||
ShowWindow(SW_SHOWMAXIMIZED);
|
||||
CRect workarea;
|
||||
SystemParametersInfo(SPI_GETWORKAREA,0,&workarea,0);
|
||||
SetWindowPos(NULL,workarea.left,workarea.top,workarea.Width(),workarea.Height(),SWP_NOZORDER);
|
||||
//===================================================
|
||||
|
||||
|
||||
//ShowWindow(SW_MAXIMIZE);
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
void CLoanersDlg::FillView()
|
||||
{
|
||||
CString q;
|
||||
COleDateTime dtDefault;
|
||||
dtDefault.SetDate(1968,03,12);
|
||||
int x=0;
|
||||
q.Format("SELECT rentals.id, rentals.ref, IIf(IsNull([sn]),[rentals].[description] & [parts].[description],[company_person] & "
|
||||
"\" \" & [unitmodels].[description] & \" \" & [unitmodels].[model]) AS [desc], [rentals]![description] & "
|
||||
"IIf(IsNull([parts]![partnumber]),\"\",\"part:\" & [parts]![partnumber]) & "
|
||||
"IIf(IsNull([units]![sn]),\"\",\"unit:\" & [units]![sn]) AS item, [loanedto] & "
|
||||
"IIf(IsNull([clients]![company]),[clients]![first] & \" \" & [clients]![last],[clients]![company]) "
|
||||
"AS rentor, Format([dateout],\"Short Date\") AS outdate, IIf([datedue]=#%s#,\"na\",Format([datedue], "
|
||||
"\"Short Date\")) AS duedate, IIf([datereturn]=#%s#,\"Out\",Format([datereturn],\"Short Date\")) "
|
||||
"AS retdate, rentals.returned, DateDiff(\"d\",Now(),[datedue]) AS duedays "
|
||||
"FROM ((((rentals LEFT JOIN clients ON rentals.clientlink = clients.id) LEFT JOIN "
|
||||
"units ON rentals.unitlink = units.id) LEFT JOIN parts ON rentals.partlink = parts.id) "
|
||||
"LEFT JOIN unitmodels ON units.model = unitmodels.id) LEFT JOIN nonclients ON unitmodels.manufacturer = nonclients.id "
|
||||
"%s %s;",dtDefault.Format(_T("%m/%d/%Y")),
|
||||
dtDefault.Format(_T("%m/%d/%Y")),m_strCriteria,m_strOrderBy);
|
||||
/*
|
||||
q.Format("SELECT rentals.id, rentals.ref, [rentals]![description] "
|
||||
"& IIf(IsNull([parts]![partnumber]),\"\","
|
||||
"\"part:\" & [parts]![partnumber] ) & "
|
||||
"IIf(IsNull([units]![sn]),\"\",\"unit:\" & "
|
||||
"[units]![sn]) AS item, [loanedto] & "
|
||||
"IIf(IsNull([clients]![company]), "
|
||||
"[clients]![first] & \" \" & [clients]![last], "
|
||||
"[clients]![company]) AS rentor, Format([dateout], "
|
||||
"\"Short Date\") AS outdate, IIf([datedue]=#%s# "
|
||||
",\"na\",Format([datedue],\"Short Date\")) AS "
|
||||
"duedate, IIf([datereturn]=#%s#,\"Out\", "
|
||||
"Format([datereturn],\"Short Date\")) AS retdate, "
|
||||
"rentals.returned, DateDiff(\"d\",Now(),[datedue]) AS duedays "
|
||||
"FROM ((rentals LEFT JOIN clients ON "
|
||||
"rentals.clientlink = clients.id) LEFT JOIN units "
|
||||
"ON rentals.unitlink = units.id) LEFT JOIN parts "
|
||||
"ON rentals.partlink = parts.id %s %s;",dtDefault.Format(_T("%m/%d/%Y")),
|
||||
dtDefault.Format(_T("%m/%d/%Y")),m_strCriteria,m_strOrderBy);
|
||||
*/
|
||||
|
||||
//"WHERE ( ((rentals.datereturn) Between #06/01/2000# And #06/30/2000#) AND ((rentals.returned)=False));");
|
||||
// "WHERE ( ((rentals.returned)=True) AND ((rentals.dateout) Between #1/1/1990# And #1/1/2000#));");
|
||||
|
||||
|
||||
//WHERE (((rentals.returned)=True) AND ((rentals.dateout) Between #1/1/1990# And #1/1/2001#))
|
||||
//rs->Query("SELECT rentals.* FROM rentals WHERE (((rentals.id)=0));");
|
||||
|
||||
rs->Query(q);
|
||||
//m_pApp->ShowStuff(q);
|
||||
m_rc.DeleteAllItems();
|
||||
|
||||
|
||||
if(rs->IsEmpty())
|
||||
return;
|
||||
|
||||
|
||||
|
||||
|
||||
CString strData,strItem,strRentor,strOutdate,strDueDays,strDuedate,strRetdate,strID,strRef,strDesc;
|
||||
COleDateTime dtDate;
|
||||
long lData;
|
||||
long lDueDays;
|
||||
bool bReturned;
|
||||
int nDueDays;
|
||||
rs->MoveFirst();
|
||||
|
||||
|
||||
do
|
||||
{
|
||||
|
||||
rs->FetchField("item",&strItem);
|
||||
//avoid the underline in the report control
|
||||
//for a single &
|
||||
strItem.Replace("&","&&");
|
||||
|
||||
|
||||
rs->FetchField("rentor",&strRentor);
|
||||
strRentor.Replace("&","&&");
|
||||
|
||||
rs->FetchField("outdate",&strOutdate);
|
||||
|
||||
rs->FetchField("duedate",&strDuedate);
|
||||
|
||||
rs->FetchField("retdate",&strRetdate);
|
||||
|
||||
rs->FetchField("duedays",&lDueDays);
|
||||
nDueDays=lDueDays;//atoi(strDueDays);
|
||||
|
||||
rs->FetchField("id",&lData);
|
||||
strID.Format("%u",lData);
|
||||
|
||||
rs->FetchField("returned",&bReturned);
|
||||
|
||||
rs->FetchField("ref",&strRef);
|
||||
|
||||
rs->FetchField("desc",&strDesc);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//Set the look of the row and insert it
|
||||
|
||||
//LATE!
|
||||
RVITEM rvi;
|
||||
rvi.iItem = x;
|
||||
rvi.iSubItem = 0;
|
||||
rvi.nMask = RVIM_IMAGE|RVIM_PREVIEW|RVIM_STATE|RVIM_LPARAM;
|
||||
rvi.nState = 0;
|
||||
rvi.nPreview = 0;//no preview necessary
|
||||
if(bReturned)
|
||||
rvi.iImage=3;//blank
|
||||
else
|
||||
{
|
||||
rvi.iImage=0;//green light - default
|
||||
|
||||
if(nDueDays<0)//overdue
|
||||
rvi.iImage=2;//redlight
|
||||
|
||||
if(nDueDays==0)//due today
|
||||
rvi.iImage=1;//orange light
|
||||
|
||||
}
|
||||
|
||||
rvi.lParam = x;
|
||||
m_rc.InsertItem(&rvi);
|
||||
|
||||
|
||||
//ITEM
|
||||
rvi.iSubItem = 1;
|
||||
rvi.nMask = RVIM_TEXT;
|
||||
rvi.lpszText = strItem.GetBuffer(strItem.GetLength());
|
||||
m_rc.SetItem(&rvi);
|
||||
|
||||
//AT
|
||||
rvi.iSubItem = 2;
|
||||
rvi.lpszText = strRentor.GetBuffer(strRentor.GetLength());
|
||||
m_rc.SetItem(&rvi);
|
||||
|
||||
//OUT
|
||||
rvi.iSubItem = 3;
|
||||
rvi.lpszText = strOutdate.GetBuffer(strOutdate.GetLength());
|
||||
m_rc.SetItem(&rvi);
|
||||
|
||||
//DUE
|
||||
rvi.iSubItem = 4;
|
||||
rvi.lpszText = strDuedate.GetBuffer(strDuedate.GetLength());
|
||||
m_rc.SetItem(&rvi);
|
||||
|
||||
//BACK
|
||||
rvi.iSubItem = 5;
|
||||
if(bReturned==false)
|
||||
rvi.lpszText=" ";
|
||||
else
|
||||
rvi.lpszText = strRetdate.GetBuffer(strRetdate.GetLength());
|
||||
m_rc.SetItem(&rvi);
|
||||
|
||||
|
||||
//ID
|
||||
rvi.iSubItem = 6;
|
||||
rvi.lpszText = strID.GetBuffer(strID.GetLength());
|
||||
m_rc.SetItem(&rvi);
|
||||
|
||||
//ref
|
||||
rvi.iSubItem = 7;
|
||||
rvi.lpszText = strRef.GetBuffer(strRef.GetLength());
|
||||
m_rc.SetItem(&rvi);
|
||||
|
||||
//description
|
||||
rvi.iSubItem = 8;
|
||||
rvi.lpszText = strDesc.GetBuffer(strDesc.GetLength());
|
||||
m_rc.SetItem(&rvi);
|
||||
|
||||
x++;
|
||||
|
||||
}while(rs->MoveForward());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//SET CRITERIA FOR QUERY:
|
||||
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
void CLoanersDlg::OnCkanydate()
|
||||
{
|
||||
m_nDateCriteriaX=0;
|
||||
ShowDateFields(false);
|
||||
Criteria();
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnCksentdate()
|
||||
{/*
|
||||
if(m_nDateCriteriaX==0)//were not dates showing before
|
||||
{
|
||||
//so just show dates and exit
|
||||
m_ckAnyDate.SetCheck(FALSE);
|
||||
ShowDateFields(true);
|
||||
m_nDateCriteriaX=(1);
|
||||
return;
|
||||
}
|
||||
*/
|
||||
ShowDateFields(true);
|
||||
m_nDateCriteriaX=(1);
|
||||
Criteria();
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnCkduedate()
|
||||
{/*
|
||||
if(m_nDateCriteriaX==0)//were not dates showing before
|
||||
{
|
||||
//so just show dates and exit
|
||||
m_ckAnyDate.SetCheck(FALSE);
|
||||
ShowDateFields(true);
|
||||
m_nDateCriteriaX=(2);
|
||||
return;
|
||||
}*/
|
||||
ShowDateFields(true);
|
||||
m_nDateCriteriaX=(2);
|
||||
Criteria();
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnCkreceiveddate()
|
||||
{
|
||||
/*
|
||||
if(m_nDateCriteriaX==0)//were not dates showing before
|
||||
{
|
||||
//so just show dates and exit
|
||||
m_ckAnyDate.SetCheck(FALSE);
|
||||
ShowDateFields(true);
|
||||
m_nDateCriteriaX=(3);
|
||||
return;
|
||||
}*/
|
||||
ShowDateFields(true);
|
||||
m_nDateCriteriaX=(3);
|
||||
Criteria();
|
||||
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnDatetimechangeDtto(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
|
||||
Criteria();
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnDatetimechangeDtfrom(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
|
||||
Criteria();
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnCkshowreturned()
|
||||
{
|
||||
m_nTypeCriteriaX=1;
|
||||
Criteria();
|
||||
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnCkshowout()
|
||||
{
|
||||
m_nTypeCriteriaX=2;
|
||||
Criteria();
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnCkshowallitems()
|
||||
{
|
||||
m_nTypeCriteriaX=0;
|
||||
Criteria();
|
||||
}
|
||||
|
||||
|
||||
//set date and type criteria and rebuild list
|
||||
void CLoanersDlg::Criteria()
|
||||
{
|
||||
CString strFrom,strTo,strDatePart,strTypePart;
|
||||
COleDateTime dtData;
|
||||
m_ckAnyDate.SetCheck(FALSE);
|
||||
m_ckDueDate.SetCheck(FALSE);
|
||||
m_ckSentDate.SetCheck(FALSE);
|
||||
m_ckShowAll.SetCheck(FALSE);
|
||||
m_ckShowOut.SetCheck(FALSE);
|
||||
m_ckShowReturned.SetCheck(FALSE);
|
||||
m_ckReceivedDate.SetCheck(FALSE);
|
||||
|
||||
m_dtFrom.GetTime(dtData);
|
||||
strFrom=dtData.Format(_T("%m/%d/%Y"));
|
||||
|
||||
m_dtTo.GetTime(dtData);
|
||||
strTo=dtData.Format(_T("%m/%d/%Y"));
|
||||
|
||||
m_strCriteria.Empty();
|
||||
|
||||
switch(m_nDateCriteriaX)
|
||||
{
|
||||
|
||||
case 1://sent date
|
||||
m_ckSentDate.SetCheck(TRUE);
|
||||
strDatePart.Format("((rentals.dateout) Between #%s# And #%s#)",strFrom,strTo);
|
||||
break;
|
||||
|
||||
case 2://due date
|
||||
m_ckDueDate.SetCheck(TRUE);
|
||||
strDatePart.Format("((rentals.datedue) Between #%s# And #%s#)",strFrom,strTo);
|
||||
break;
|
||||
|
||||
case 3://received date
|
||||
m_ckReceivedDate.SetCheck(TRUE);
|
||||
strDatePart.Format("((rentals.datereturn) Between #%s# And #%s#) AND ((rentals.returned)=True)",strFrom,strTo);
|
||||
break;
|
||||
|
||||
default://any date
|
||||
strDatePart.Empty();
|
||||
m_ckAnyDate.SetCheck(TRUE);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
switch(m_nTypeCriteriaX)
|
||||
{
|
||||
|
||||
case 1://returned
|
||||
strTypePart=" ((rentals.returned)=True)";
|
||||
|
||||
m_ckShowReturned.SetCheck(TRUE);
|
||||
break;
|
||||
|
||||
case 2://out
|
||||
|
||||
m_ckShowOut.SetCheck(TRUE);
|
||||
strTypePart=" ((rentals.returned)=False)";
|
||||
break;
|
||||
|
||||
default://all
|
||||
m_ckShowAll.SetCheck(TRUE);
|
||||
strTypePart.Empty();
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//No criteria
|
||||
if(strDatePart.IsEmpty() && strTypePart.IsEmpty())
|
||||
{
|
||||
m_strCriteria.Empty();
|
||||
FillView();
|
||||
return;
|
||||
}
|
||||
|
||||
//both criteria
|
||||
if(!strDatePart.IsEmpty() && !strTypePart.IsEmpty() )
|
||||
{
|
||||
|
||||
m_strCriteria=" WHERE (" + strTypePart + " AND " + strDatePart + ")";
|
||||
FillView();
|
||||
return;
|
||||
}
|
||||
|
||||
//only one criteria
|
||||
if(!strTypePart.IsEmpty())
|
||||
{
|
||||
m_strCriteria = " WHERE (" + strTypePart+ ")";
|
||||
FillView();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_strCriteria=" WHERE (" + strDatePart+ ")";
|
||||
FillView();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CLoanersDlg::ShowDateFields(bool bShow)
|
||||
{
|
||||
m_dtFrom.ShowWindow(bShow ? TRUE : FALSE);
|
||||
m_dtTo.ShowWindow(bShow ? TRUE : FALSE);
|
||||
m_lblTo.ShowWindow(bShow ? TRUE : FALSE);
|
||||
}
|
||||
|
||||
|
||||
void CLoanersDlg::Security()
|
||||
{
|
||||
int x=m_pApp->Allowed(RLOANERS,true);
|
||||
|
||||
if(x==2)//read only
|
||||
{
|
||||
m_btnAdd.ShowWindow(FALSE);
|
||||
m_btnDelete.ShowWindow(FALSE);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(x==0)
|
||||
{
|
||||
m_pApp->SecurityWarning();
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//SET ORDER BY CLAUSE DEPENDING ON CLICK HERE
|
||||
void CLoanersDlg::OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
int x;
|
||||
CString str;
|
||||
CFlatHeaderCtrl* header;
|
||||
header=m_rc.GetHeaderCtrl();
|
||||
|
||||
|
||||
//FIND CLICKED COLUMN
|
||||
|
||||
str=header->m_szHotItemText;
|
||||
|
||||
if(str=="Status"){x=0;goto OUTTAHERE;}
|
||||
if(str=="Item"){x=1;goto OUTTAHERE;}
|
||||
if(str=="At"){x=2;goto OUTTAHERE;}
|
||||
if(str=="Out"){x=3;goto OUTTAHERE;}
|
||||
if(str=="Due"){x=4;goto OUTTAHERE;}
|
||||
if(str=="Rcvd."){x=5;goto OUTTAHERE;}
|
||||
if(str=="Ref"){x=7;goto OUTTAHERE;}
|
||||
if(str=="Desc."){x=8;goto OUTTAHERE;}
|
||||
|
||||
|
||||
OUTTAHERE:
|
||||
|
||||
|
||||
bColumnSortAsc[x]=!bColumnSortAsc[x];
|
||||
switch(x)
|
||||
{//DESC
|
||||
case 0://duedays
|
||||
m_strOrderBy="ORDER BY [datedue]";
|
||||
break;
|
||||
case 1://item
|
||||
m_strOrderBy="ORDER BY [rentals]![description] & IIf(IsNull([parts]![partnumber]),\"\",\"part:\" & [parts]![partnumber]) & IIf(IsNull([units]![sn]),\"\",\"unit:\" & [units]![sn])";
|
||||
break;
|
||||
case 2://RENTOR
|
||||
m_strOrderBy="ORDER BY [loanedto] & IIf(IsNull([clients]![company]),[clients]![first] & \" \" & [clients]![last],[clients]![company])";
|
||||
break;
|
||||
case 3://OUTDATE
|
||||
m_strOrderBy="ORDER BY [dateout]";
|
||||
break;
|
||||
|
||||
case 4://DUEDATE
|
||||
m_strOrderBy="ORDER BY [datedue]";
|
||||
break;
|
||||
|
||||
case 5://backdate/returned
|
||||
m_strOrderBy="ORDER BY rentals.returned,[datereturn]";
|
||||
break;
|
||||
|
||||
//case 6: is id number so not sortable
|
||||
|
||||
case 7://reference number/text
|
||||
m_strOrderBy="ORDER BY rentals.ref";
|
||||
break;
|
||||
|
||||
case 8://Description
|
||||
m_strOrderBy="ORDER BY IIf(IsNull([sn]),[rentals].[description] & [parts].[description],[company_person] & \" \" & [unitmodels].[description] & \" \" & [unitmodels].[model])";
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(!bColumnSortAsc[x])
|
||||
m_strOrderBy+=" DESC";
|
||||
|
||||
|
||||
header->SetSortColumn(header->GetHotIndex(),bColumnSortAsc[x]);
|
||||
|
||||
*pResult = TRUE;//TRUE means we handled it here thanks anyway
|
||||
FillView();
|
||||
}
|
||||
|
||||
|
||||
void CLoanersDlg::OnBtnprint()
|
||||
{
|
||||
CString q;
|
||||
COleDateTime dtDefault;
|
||||
dtDefault.SetDate(1968,03,12);
|
||||
q.Format("SELECT rentals.*, IIf(IsNull([sn]),[rentals].[description] & [parts].[description],[company_person] & "
|
||||
"\" \" & [unitmodels].[description] & \" \" & [unitmodels].[model]) AS [desc], [rentals]![description] & "
|
||||
"IIf(IsNull([parts]![partnumber]),\"\",\"part:\" & [parts]![partnumber]) & "
|
||||
"IIf(IsNull([units]![sn]),\"\",\"unit:\" & [units]![sn]) AS item, [loanedto] & "
|
||||
"IIf(IsNull([clients]![company]),[clients]![first] & \" \" & [clients]![last],[clients]![company]) "
|
||||
"AS rentor, Format([dateout],\"Short Date\") AS outdate, IIf([datedue]=#%s#,\"na\",Format([datedue], "
|
||||
"\"Short Date\")) AS duedate, IIf([datereturn]=#%s#,\"Out\",Format([datereturn],\"Short Date\")) "
|
||||
"AS retdate, DateDiff(\"d\",Now(),[datedue]) AS duedays "
|
||||
"FROM ((((rentals LEFT JOIN clients ON rentals.clientlink = clients.id) LEFT JOIN "
|
||||
"units ON rentals.unitlink = units.id) LEFT JOIN parts ON rentals.partlink = parts.id) "
|
||||
"LEFT JOIN unitmodels ON units.model = unitmodels.id) LEFT JOIN nonclients ON unitmodels.manufacturer = nonclients.id "
|
||||
"%s %s;",dtDefault.Format(_T("%m/%d/%Y")),
|
||||
dtDefault.Format(_T("%m/%d/%Y")),m_strCriteria,m_strOrderBy);
|
||||
|
||||
rsPrint->QueryReadOnly(q);
|
||||
if(rsPrint->IsEmpty())
|
||||
{
|
||||
AfxMessageBox("Nothing to print!");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//m_pApp->CreateTTX("loaners.ttx",rsPrint->RecordSetPointer());
|
||||
m_pApp->PrintCMReportRDC("loaners",rsPrint->RecordSetPointer());
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnNew()
|
||||
{
|
||||
CLoanersEditDlg d;
|
||||
if(d.DoModal()==IDOK)
|
||||
FillView();
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnDelete()
|
||||
{
|
||||
int x;
|
||||
CString q,strID;
|
||||
x=m_rc.GetFirstSelectedItem();
|
||||
if(x<0) return;//no selection
|
||||
if(AfxMessageBox("Delete the highlighted item? Are you sure?",MB_YESNO)==IDNO)
|
||||
return;
|
||||
|
||||
strID=m_rc.GetItemText(x,6);
|
||||
|
||||
q.Format("DELETE rentals.* FROM rentals WHERE (((rentals.id)=%s));",strID);
|
||||
rs->Ex(q);
|
||||
FillView();
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnCloseThisScreen()
|
||||
{
|
||||
CString profile,q;
|
||||
//save to user prefs.
|
||||
m_rc.WriteProfile(&profile);
|
||||
q.Format("UPDATE users SET users.rentalprofile = \"%s\" "
|
||||
"WHERE (((users.id)=%u));",profile,m_pApp->m_lusrID);
|
||||
rs->Ex(q);
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
||||
void CLoanersDlg::OnHelponloaners()
|
||||
{
|
||||
WinHelp(0x200A8);
|
||||
//
|
||||
}
|
||||
|
||||
void CLoanersDlg::Layout(void)
|
||||
{
|
||||
int nVertFactor;//used to scale vertically
|
||||
int nDelta=0;//change in vertical height
|
||||
nVertFactor=0;
|
||||
nDelta=5;
|
||||
|
||||
|
||||
m_resize.Add(IDC_LBL_SHOW,0,100,0,0);
|
||||
m_resize.Add(IDC_CKSHOWRETURNED,0,100,0,0);
|
||||
|
||||
m_resize.Add(IDC_CKSHOWOUT,0,100,0,0);
|
||||
m_resize.Add(IDC_CKSHOWALLITEMS,0,100,0,0);
|
||||
m_resize.Add(IDC_CKANYDATE,0,100,0,0);
|
||||
m_resize.Add(IDC_CKSENTDATE,0,100,0,0);
|
||||
m_resize.Add(IDC_CKDUEDATE,0,100,0,0);
|
||||
m_resize.Add(IDC_CKRECEIVEDDATE,0,100,0,0);
|
||||
m_resize.Add(IDC_DTFROM,0,100,0,0);
|
||||
m_resize.Add(IDC_lblTo,0,100,0,0);
|
||||
m_resize.Add(IDC_DTTO,0,100,0,0);
|
||||
m_resize.Add(IDC_REPORT,0,0,100,100);
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user