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,951 @@
|
||||
// ModelsDlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "sp.h"
|
||||
#include "ModelsDlg.h"
|
||||
#include "ModelCatsDlg.h"
|
||||
#include "NonClientsDlg.h"
|
||||
#include "PM.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CModelsDlg dialog
|
||||
|
||||
|
||||
CModelsDlg::CModelsDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CModelsDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CModelsDlg)
|
||||
// NOTE: the ClassWizard will add member initialization here
|
||||
//}}AFX_DATA_INIT
|
||||
m_bAddMode=false;
|
||||
m_pApp= (CSpApp*)AfxGetApp();
|
||||
/*
|
||||
rs=new GZRset("Error: Unit models dialog");
|
||||
rs->SetConnect(m_pApp->strConnectString);
|
||||
|
||||
cbrs=new GZRset("Error: Unit models dialog combo box recordset\r\n");
|
||||
cbrs->SetConnect(m_pApp->strConnectString);
|
||||
*/
|
||||
//Initialize recordset pointer
|
||||
|
||||
|
||||
cbrs=m_pApp->rsPool->GetRS("CModelsDlg (CBRS)");
|
||||
rs=m_pApp->rsPool->GetRS("CModelsDlg (RS)");
|
||||
|
||||
m_pstrReturnValue=NULL;
|
||||
m_strSelectedModel.Empty();
|
||||
m_bListByDescription=true;
|
||||
|
||||
}
|
||||
|
||||
CModelsDlg::~CModelsDlg()
|
||||
{
|
||||
|
||||
m_pApp->rsPool->ReleaseRS(&cbrs->m_nID);
|
||||
m_pApp->rsPool->ReleaseRS(&rs->m_nID);
|
||||
}
|
||||
|
||||
|
||||
void CModelsDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CModelsDlg)
|
||||
DDX_Control(pDX, IDC_LBLBYDESC, m_lblByDesc);
|
||||
DDX_Control(pDX, IDC_LBLBYMODEL, m_lblByModel);
|
||||
DDX_Control(pDX, IDC_EDDESCRIPTION, m_edDescription);
|
||||
DDX_Control(pDX, IDC_BTNPM, m_btnPM);
|
||||
DDX_Control(pDX, IDC_LBLMODELLIST, m_lblModels);
|
||||
DDX_Control(pDX, IDC_LBLMANUFACTURER, m_lblManufacturer);
|
||||
DDX_Control(pDX, IDC_LBLCATEGORY, m_lblCategory);
|
||||
DDX_Control(pDX, IDC_EDWARRANTYTERMS, m_edWarrantyTerms);
|
||||
DDX_Control(pDX, IDC_EDWARRANTYMONTHS, m_edWarrantyMonths);
|
||||
DDX_Control(pDX, IDC_EDNOTES, m_edNotes);
|
||||
DDX_Control(pDX, IDC_EDMODEL, m_edModel);
|
||||
DDX_Control(pDX, IDC_DTINTRODUCED, m_dtIntroduced);
|
||||
DDX_Control(pDX, IDC_DTDISCONTINUED, m_dtDiscontinued);
|
||||
DDX_Control(pDX, IDC_CKLIFETIME, m_ckLifetime);
|
||||
DDX_Control(pDX, IDC_CKDISCONTINUED, m_ckDiscontinued);
|
||||
DDX_Control(pDX, IDC_CKACTIVE, m_ckActive);
|
||||
DDX_Control(pDX, IDC_CBMODELS, m_cbModels);
|
||||
DDX_Control(pDX, IDC_CBMANUFACTURERS, m_cbManufacturers);
|
||||
DDX_Control(pDX, IDC_CBCATEGORIES, m_cbCategories);
|
||||
DDX_Control(pDX, IDC_BTNDONE, m_btnDone);
|
||||
DDX_Control(pDX, IDC_BTNDELETE, m_btnDelete);
|
||||
DDX_Control(pDX, IDC_BTNADD, m_btnAdd);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CModelsDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CModelsDlg)
|
||||
ON_BN_CLICKED(IDC_BTNADD, OnBtnadd)
|
||||
ON_BN_CLICKED(IDC_BTNDELETE, OnBtndelete)
|
||||
ON_BN_CLICKED(IDC_BTNDONE, OnBtndone)
|
||||
ON_CBN_CLOSEUP(IDC_CBCATEGORIES, OnCloseupCbcategories)
|
||||
ON_CBN_CLOSEUP(IDC_CBMANUFACTURERS, OnCloseupCbmanufacturers)
|
||||
ON_CBN_CLOSEUP(IDC_CBMODELS, OnCloseupCbmodels)
|
||||
ON_BN_CLICKED(IDC_CKDISCONTINUED, OnCkdiscontinued)
|
||||
ON_BN_CLICKED(IDC_CKLIFETIME, OnCklifetime)
|
||||
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DTDISCONTINUED, OnDatetimechangeDtdiscontinued)
|
||||
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DTINTRODUCED, OnDatetimechangeDtintroduced)
|
||||
ON_EN_KILLFOCUS(IDC_EDMODEL, OnKillfocusEdmodel)
|
||||
ON_EN_KILLFOCUS(IDC_EDNOTES, OnKillfocusEdnotes)
|
||||
ON_EN_KILLFOCUS(IDC_EDWARRANTYMONTHS, OnKillfocusEdwarrantymonths)
|
||||
ON_EN_KILLFOCUS(IDC_EDWARRANTYTERMS, OnKillfocusEdwarrantyterms)
|
||||
ON_BN_CLICKED(IDC_LBLCATEGORY, OnLblcategory)
|
||||
ON_BN_CLICKED(IDC_LBLMANUFACTURER, OnLblmanufacturer)
|
||||
ON_BN_CLICKED(IDC_BTNPM, OnBtnpm)
|
||||
ON_EN_KILLFOCUS(IDC_EDDESCRIPTION, OnKillfocusEddescription)
|
||||
ON_BN_CLICKED(IDC_LBLBYMODEL, OnLblbymodel)
|
||||
ON_BN_CLICKED(IDC_LBLBYDESC, OnLblbydesc)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CModelsDlg message handlers
|
||||
|
||||
BOOL CModelsDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
Security();
|
||||
//make "hyperlinks"
|
||||
m_lblCategory.SetTextColor(RGB(0,0,255));
|
||||
m_lblCategory.SetFontUnderline(TRUE);
|
||||
m_lblCategory.SetLink(TRUE);
|
||||
m_lblCategory.SetLinkCursor(m_pApp->hcHand);
|
||||
m_lblCategory.SetLinkURL("");
|
||||
|
||||
|
||||
//make "hyperlinks"
|
||||
m_lblManufacturer.SetTextColor(RGB(0,0,255));
|
||||
m_lblManufacturer.SetFontUnderline(TRUE);
|
||||
m_lblManufacturer.SetLink(TRUE);
|
||||
m_lblManufacturer.SetLinkCursor(m_pApp->hcHand);
|
||||
m_lblManufacturer.SetLinkURL("");
|
||||
|
||||
|
||||
m_lblByDesc.SetTextColor(RGB(0,0,255));
|
||||
m_lblByDesc.SetFontUnderline(TRUE);
|
||||
m_lblByDesc.SetLink(TRUE);
|
||||
m_lblByDesc.SetLinkCursor(m_pApp->hcHand);
|
||||
m_lblByDesc.SetLinkURL("");
|
||||
|
||||
m_lblByModel.SetTextColor(RGB(0,0,255));
|
||||
m_lblByModel.SetFontUnderline(TRUE);
|
||||
m_lblByModel.SetLink(TRUE);
|
||||
m_lblByModel.SetLinkCursor(m_pApp->hcHand);
|
||||
m_lblByModel.SetLinkURL("");
|
||||
|
||||
|
||||
FillCategoryList();
|
||||
FillManufacturerList();
|
||||
//this one has to be last because it's going to
|
||||
//trigger selections on the other two
|
||||
FillModelList();
|
||||
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void CModelsDlg::OnBtnadd()
|
||||
{
|
||||
CString strData;
|
||||
long lData;
|
||||
bool bData;
|
||||
COleDateTime dtData;
|
||||
CString q;
|
||||
|
||||
if(!m_bAddMode)
|
||||
{
|
||||
//Go into add mode
|
||||
EnableFields(true);
|
||||
m_bAddMode=true;
|
||||
m_lblModels.ShowWindow(FALSE);
|
||||
m_cbModels.ShowWindow(FALSE);
|
||||
m_btnPM.ShowWindow(FALSE);
|
||||
m_btnDone.ShowWindow(FALSE);
|
||||
m_btnAdd.SetWindowText("SAVE");
|
||||
m_btnDelete.SetWindowText("CANCEL");
|
||||
m_cbCategories.Select("0");
|
||||
m_cbManufacturers.Select("0");
|
||||
m_ckDiscontinued.SetCheck(FALSE);
|
||||
m_ckLifetime.SetCheck(FALSE);
|
||||
m_dtDiscontinued.SetTime(COleDateTime::GetCurrentTime());
|
||||
m_dtIntroduced.SetTime(COleDateTime::GetCurrentTime());
|
||||
m_edModel.SetWindowText("");
|
||||
m_edDescription.SetWindowText("");
|
||||
m_edNotes.SetWindowText("");
|
||||
m_edWarrantyMonths.SetWindowText("");
|
||||
m_edWarrantyTerms.SetWindowText("");
|
||||
m_lblByDesc.ShowWindow(FALSE);
|
||||
m_lblByModel.ShowWindow(FALSE);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//Validate and Save record
|
||||
m_edModel.GetWindowText(strData);
|
||||
if(strData.IsEmpty())
|
||||
{
|
||||
AfxMessageBox("A Model number is required to save this record");
|
||||
return;
|
||||
}
|
||||
|
||||
//check if duplicate model number
|
||||
q.Format("SELECT unitmodels.model FROM unitmodels WHERE (((unitmodels.model)=\"%s\"));",strData);
|
||||
rs->QueryReadOnly(q);
|
||||
if(!rs->IsEmpty())
|
||||
{
|
||||
q.Format("Model number \"%s\" has already been used.\r\n"
|
||||
"Each model record must have a unique model number\r\n"
|
||||
"Change the model number to save this record.",strData);
|
||||
AfxMessageBox(q);
|
||||
m_edModel.SetFocus();
|
||||
return;
|
||||
|
||||
}
|
||||
rs->Query("SELECT unitmodels.* FROM unitmodels WHERE unitmodels.id = 0;");
|
||||
rs->AddNewRecord();
|
||||
|
||||
//MODEL
|
||||
rs->UpdateField("model",&strData);
|
||||
|
||||
//Description
|
||||
m_edDescription.GetWindowText(strData);
|
||||
rs->UpdateField("description",&strData);
|
||||
|
||||
//CATEGORY
|
||||
strData=m_cbCategories.GetCurrentRowID();
|
||||
lData=atol(strData);
|
||||
rs->UpdateField("category",&lData);
|
||||
|
||||
//LIFETIMEWARRANTY
|
||||
bData=(m_ckLifetime.GetCheck() ? true : false);
|
||||
rs->UpdateField("lifetimewarranty",&bData);
|
||||
|
||||
//WARRANTY (months)
|
||||
m_edWarrantyMonths.GetWindowText(strData);
|
||||
lData=atol(strData);
|
||||
rs->UpdateField("warranty",&lData);
|
||||
|
||||
//WARRANTYTERMS
|
||||
m_edWarrantyTerms.GetWindowText(strData);
|
||||
rs->UpdateField("warrantyterms",&strData);
|
||||
|
||||
//MANUFACTURER
|
||||
strData=m_cbManufacturers.GetCurrentRowID();
|
||||
lData=atol(strData);
|
||||
rs->UpdateField("manufacturer",&lData);
|
||||
|
||||
//DISCONTINUED
|
||||
bData=(m_ckDiscontinued.GetCheck() ? true : false);
|
||||
rs->UpdateField("discontinued",&bData);
|
||||
|
||||
//DISCONTINUED DATE
|
||||
m_dtDiscontinued.GetTime(dtData);
|
||||
rs->UpdateField("discodate",&dtData);
|
||||
|
||||
//INTRODUCED DATE
|
||||
m_dtIntroduced.GetTime(dtData);
|
||||
rs->UpdateField("introduced",&dtData);
|
||||
|
||||
//NOTES
|
||||
m_edNotes.GetWindowText(strData);
|
||||
rs->UpdateField("notes",&strData);
|
||||
|
||||
//SAVE NEW RECORD
|
||||
rs->SaveRecord();
|
||||
|
||||
|
||||
m_bAddMode=false;
|
||||
m_lblByDesc.ShowWindow(TRUE);
|
||||
m_lblByModel.ShowWindow(TRUE);
|
||||
m_btnPM.ShowWindow(TRUE);
|
||||
m_lblModels.ShowWindow(TRUE);
|
||||
m_cbModels.ShowWindow(TRUE);
|
||||
m_btnDone.ShowWindow(TRUE);
|
||||
m_btnAdd.SetWindowText("Add");
|
||||
m_btnDelete.SetWindowText("Delete");
|
||||
FillModelList();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//Delete
|
||||
void CModelsDlg::OnBtndelete()
|
||||
{
|
||||
CString q;
|
||||
|
||||
if(m_bAddMode)//then this is the cancel button
|
||||
{
|
||||
m_bAddMode=false;
|
||||
m_btnPM.ShowWindow(TRUE);
|
||||
m_lblModels.ShowWindow(TRUE);
|
||||
m_cbModels.ShowWindow(TRUE);
|
||||
m_btnDone.ShowWindow(TRUE);
|
||||
m_lblByDesc.ShowWindow(TRUE);
|
||||
m_lblByModel.ShowWindow(TRUE);
|
||||
m_btnAdd.SetWindowText("Add");
|
||||
m_btnDelete.SetWindowText("Delete");
|
||||
FillModelList();
|
||||
return;
|
||||
}
|
||||
|
||||
if(m_bNoRecords) return;
|
||||
|
||||
//Delete the current record
|
||||
|
||||
//check if safe to delete
|
||||
q.Format("SELECT units.id "
|
||||
"FROM units WHERE (((units.model)=%s));",m_cbModels.GetCurrentRowID());
|
||||
|
||||
cbrs->Query(q);
|
||||
|
||||
if(!cbrs->IsEmpty())
|
||||
{
|
||||
AfxMessageBox("DATA INTEGRITY PROTECTION!\r\n"
|
||||
"There are one or more units that are attached to this model number.\r\n"
|
||||
"You can't delete this record at this time.");
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
//SAFE TO DELETE
|
||||
q.Format("DELETE unitmodels.*, unitmodels.id "
|
||||
"FROM unitmodels WHERE (((unitmodels.id)=%s));",m_cbModels.GetCurrentRowID());
|
||||
|
||||
if(AfxMessageBox("Delete this record permanently?\r\nAre you sure?",MB_YESNO)==IDYES)
|
||||
{
|
||||
cbrs->Ex(q);
|
||||
m_strSelectedModel="";
|
||||
FillModelList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void CModelsDlg::OnBtndone()
|
||||
{
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
|
||||
|
||||
//********************************
|
||||
void CModelsDlg::OnCloseupCbcategories()
|
||||
{
|
||||
SaveField(&m_cbCategories,"category");
|
||||
|
||||
}
|
||||
|
||||
void CModelsDlg::OnCloseupCbmanufacturers()
|
||||
{
|
||||
SaveField(&m_cbManufacturers,"manufacturer");
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-****************************
|
||||
void CModelsDlg::OnCloseupCbmodels()
|
||||
{
|
||||
m_strSelectedModel=m_cbModels.GetCurrentRowID();
|
||||
|
||||
FillFields();
|
||||
|
||||
}
|
||||
|
||||
|
||||
//*******************************
|
||||
void CModelsDlg::OnCkdiscontinued()
|
||||
{
|
||||
SaveField(&m_ckDiscontinued,"discontinued");
|
||||
m_dtDiscontinued.ShowWindow(m_ckDiscontinued.GetCheck());
|
||||
if(m_bReadOnly)
|
||||
m_dtDiscontinued.EnableWindow(FALSE);
|
||||
}
|
||||
|
||||
|
||||
//*******************************
|
||||
void CModelsDlg::OnCklifetime()
|
||||
{
|
||||
SaveField(&m_ckLifetime,"lifetimewarranty");
|
||||
|
||||
}
|
||||
|
||||
//************************************************
|
||||
void CModelsDlg::OnDatetimechangeDtdiscontinued(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
SaveField(&m_dtDiscontinued,"discodate");
|
||||
|
||||
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
//************************************************
|
||||
void CModelsDlg::OnDatetimechangeDtintroduced(NMHDR* pNMHDR, LRESULT* pResult)
|
||||
{
|
||||
SaveField(&m_dtIntroduced,"introduced");
|
||||
*pResult = 0;
|
||||
}
|
||||
|
||||
//*****************************************
|
||||
void CModelsDlg::OnKillfocusEdmodel()
|
||||
{
|
||||
|
||||
SaveField(&m_edModel,"model",false);
|
||||
if(!m_bAddMode)
|
||||
FillModelList();
|
||||
}
|
||||
|
||||
//*********************************************
|
||||
void CModelsDlg::OnKillfocusEdnotes()
|
||||
{
|
||||
SaveField(&m_edNotes,"notes",true);
|
||||
|
||||
}
|
||||
|
||||
//************************************************
|
||||
void CModelsDlg::OnKillfocusEdwarrantymonths()
|
||||
{
|
||||
|
||||
long lData;
|
||||
|
||||
CString str;
|
||||
//do nothing if not changed
|
||||
if(m_edWarrantyMonths.GetModify()!=TRUE) return;
|
||||
|
||||
m_edWarrantyMonths.GetWindowText(str);
|
||||
//lData=atol(str);
|
||||
_variant_t vtData(str);
|
||||
//v1.9.4.4 added try / catch mechanism to catch dumb-asses entering text in a numeric field
|
||||
try
|
||||
{
|
||||
lData=(long)vtData;//cast variant to float (locale friendly)
|
||||
}
|
||||
catch( _com_error &e )
|
||||
{
|
||||
|
||||
AfxMessageBox("I could not interpret your entry in the Warranty Months field\r\n"
|
||||
"I can't save this field until a valid entry is made.\r\n"
|
||||
"If you want to leave it blank, put a zero in it.");
|
||||
m_edWarrantyMonths.Undo();
|
||||
m_edWarrantyMonths.SetModify(FALSE);
|
||||
m_edWarrantyMonths.SetFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
//v1.9.4.4 moved down here so validation will run in any mode
|
||||
if(m_bAddMode) return;//dont attempt to update
|
||||
|
||||
rs->UpdateField("warranty",&lData);
|
||||
rs->SaveRecord();
|
||||
UpdateModified();
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CModelsDlg::OnKillfocusEdwarrantyterms()
|
||||
{
|
||||
SaveField(&m_edWarrantyTerms,"warrantyterms",true);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//*******************************
|
||||
void CModelsDlg::OnLblcategory()
|
||||
{
|
||||
CString str,id;
|
||||
CModelCatsDlg d;
|
||||
d.SetReturnString(&str);
|
||||
if(d.DoModal()==IDOK)
|
||||
{
|
||||
id=m_cbCategories.GetCurrentRowID();
|
||||
FillCategoryList();
|
||||
m_cbCategories.Select(id);
|
||||
}
|
||||
//OnCloseupCbcategories();
|
||||
|
||||
}
|
||||
|
||||
|
||||
//**********************************
|
||||
void CModelsDlg::OnLblmanufacturer()
|
||||
{
|
||||
CString str,id;
|
||||
long ldata=3;//manufacturers are type 3
|
||||
CNonClientsDlg d;
|
||||
d.SetType(&ldata);
|
||||
d.SetReturnString(&str);
|
||||
if(d.DoModal()==IDOK)
|
||||
{
|
||||
id=m_cbManufacturers.GetCurrentRowID();
|
||||
FillManufacturerList();
|
||||
m_cbManufacturers.Select(id);
|
||||
//this will save the field change tothe
|
||||
//database since the user didn't select
|
||||
//the regular way.
|
||||
////OnCloseupCbmanufacturers();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void CModelsDlg::FillCategoryList()
|
||||
{
|
||||
CString strData;
|
||||
CString strIndex;
|
||||
long lData;
|
||||
m_cbCategories.Clear();
|
||||
|
||||
//Set the default
|
||||
strData="<No category>";
|
||||
strIndex="0";
|
||||
m_cbCategories.AddRow(strData,strIndex);
|
||||
|
||||
cbrs->Query("SELECT unitmodelcats.* FROM unitmodelcats;");
|
||||
if(cbrs->IsEmpty())
|
||||
return;
|
||||
|
||||
|
||||
cbrs->MoveFirst();
|
||||
|
||||
do
|
||||
{
|
||||
cbrs->FetchField("name",&strData);
|
||||
cbrs->FetchField("id",&lData);
|
||||
strIndex.Format("%u",lData);
|
||||
m_cbCategories.AddRow(strData,strIndex);
|
||||
}while(cbrs->MoveForward());
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//********************************
|
||||
void CModelsDlg::FillModelList()
|
||||
{
|
||||
|
||||
CString strData;
|
||||
CString strIndex;
|
||||
long lData;
|
||||
m_cbModels.Clear();
|
||||
|
||||
|
||||
if(m_bListByDescription)
|
||||
{
|
||||
rs->Query("SELECT [company_person] & \" \" & [description] & \" \" & [model] AS item, unitmodels.id "
|
||||
"FROM unitmodels LEFT JOIN nonclients ON unitmodels.manufacturer = nonclients.id "
|
||||
"ORDER BY [company_person] & \" \" & [description] & \" \" & [model];");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
rs->Query("SELECT [model] & \" \" & [company_person] & \" \" & [description] AS item, unitmodels.id "
|
||||
"FROM unitmodels LEFT JOIN nonclients ON unitmodels.manufacturer = nonclients.id "
|
||||
"ORDER BY [company_person] & \" \" & [description] & \" \" & [model];");
|
||||
|
||||
}
|
||||
|
||||
if(rs->IsEmpty())
|
||||
{
|
||||
EnableFields(false);
|
||||
m_bNoRecords=true;
|
||||
return;
|
||||
}
|
||||
else
|
||||
m_bNoRecords=false;
|
||||
EnableFields(true);
|
||||
|
||||
rs->MoveFirst();
|
||||
|
||||
do
|
||||
{
|
||||
rs->FetchField("item",&strData);
|
||||
rs->FetchField("id",&lData);
|
||||
strIndex.Format("%u",lData);
|
||||
m_cbModels.AddRow(strData,strIndex);
|
||||
}while(rs->MoveForward());
|
||||
|
||||
|
||||
//pretend user has selected so that other fields get filled in
|
||||
if(m_strSelectedModel.IsEmpty()) //first time in
|
||||
{
|
||||
m_cbModels.SetCurSel(0);
|
||||
m_strSelectedModel=m_cbModels.GetCurrentRowID();
|
||||
|
||||
}
|
||||
else//something valid was selected before so stick with it
|
||||
m_cbModels.Select(m_strSelectedModel);
|
||||
|
||||
|
||||
//trigger selection
|
||||
OnCloseupCbmodels();
|
||||
}
|
||||
|
||||
|
||||
//********************************************
|
||||
void CModelsDlg::FillManufacturerList()
|
||||
{
|
||||
|
||||
CString strData;
|
||||
CString strIndex;
|
||||
long lData;
|
||||
m_cbManufacturers.Clear();
|
||||
|
||||
//set defaults
|
||||
strData="<Unknown>";
|
||||
strIndex="0";
|
||||
m_cbManufacturers.AddRow(strData,strIndex);
|
||||
|
||||
//type 3 = manufacturers
|
||||
cbrs->Query("SELECT nonclients.* "
|
||||
"FROM nonclients "
|
||||
"WHERE (((nonclients.type)=3)) "
|
||||
"ORDER BY nonclients.company_person;");
|
||||
|
||||
|
||||
if(cbrs->IsEmpty())
|
||||
return;
|
||||
|
||||
|
||||
cbrs->MoveFirst();
|
||||
|
||||
do
|
||||
{
|
||||
cbrs->FetchField("company_person",&strData);
|
||||
cbrs->FetchField("id",&lData);
|
||||
strIndex.Format("%u",lData);
|
||||
m_cbManufacturers.AddRow(strData,strIndex);
|
||||
}while(cbrs->MoveForward());
|
||||
|
||||
}
|
||||
|
||||
|
||||
//*******************************************
|
||||
|
||||
void CModelsDlg::SetReturnString(CString *strReturn)
|
||||
{
|
||||
m_pstrReturnValue=strReturn;
|
||||
//specific record should be shown?
|
||||
if(!m_pstrReturnValue->IsEmpty())
|
||||
m_strSelectedModel=*m_pstrReturnValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//****************************************
|
||||
void CModelsDlg::FillFields()
|
||||
{
|
||||
|
||||
CString q,strData;
|
||||
COleDateTime dtData;
|
||||
bool bData;
|
||||
long lData;
|
||||
//Fill all fields based on current record.
|
||||
strData=m_cbModels.GetCurrentRowID();
|
||||
if(strData.IsEmpty())
|
||||
return;
|
||||
|
||||
q.Format("SELECT unitmodels.* "
|
||||
"FROM unitmodels "
|
||||
"WHERE (((unitmodels.id)=%s));",strData);
|
||||
|
||||
rs->Query(q);
|
||||
|
||||
if(rs->IsEmpty())
|
||||
return;//something very wrong if this ever gets called
|
||||
|
||||
//FETCHFIELDS AND FILL BOXES
|
||||
|
||||
//MODEL
|
||||
rs->FetchField("model",&strData);
|
||||
m_edModel.SetWindowText(strData);
|
||||
|
||||
//DESCRIPTION
|
||||
rs->FetchField("description",&strData);
|
||||
m_edDescription.SetWindowText(strData);
|
||||
|
||||
//CATEGORY
|
||||
rs->FetchField("category",&lData);
|
||||
strData.Format("%u",lData);
|
||||
m_cbCategories.Select(strData);
|
||||
|
||||
//LIFETIMEWARRANTY
|
||||
rs->FetchField("lifetimewarranty",&bData);
|
||||
m_ckLifetime.SetCheck(bData ? TRUE : FALSE);
|
||||
|
||||
//WARRANTY (months)
|
||||
rs->FetchField("warranty",&lData);
|
||||
strData.Format("%u",lData);
|
||||
m_edWarrantyMonths.SetWindowText(strData);
|
||||
|
||||
//WARRANTYTERMS
|
||||
rs->FetchField("warrantyterms",&strData);
|
||||
m_edWarrantyTerms.SetWindowText(strData);
|
||||
|
||||
//MANUFACTURER
|
||||
rs->FetchField("manufacturer",&lData);
|
||||
strData.Format("%u",lData);
|
||||
m_cbManufacturers.Select(strData);
|
||||
|
||||
//DISCONTINUED
|
||||
rs->FetchField("discontinued",&bData);
|
||||
m_ckDiscontinued.SetCheck(bData ? TRUE : FALSE);
|
||||
m_dtDiscontinued.ShowWindow(bData ? TRUE : FALSE);
|
||||
if(m_bReadOnly)
|
||||
m_dtDiscontinued.EnableWindow(FALSE);
|
||||
//DISCONTINUED DATE (IF APPLICABLE)
|
||||
if(bData)
|
||||
{
|
||||
rs->FetchField("discodate",&dtData);
|
||||
m_dtDiscontinued.SetTime(dtData);
|
||||
|
||||
}
|
||||
|
||||
//INTRODUCED DATE
|
||||
rs->FetchField("introduced",&dtData);
|
||||
m_dtIntroduced.SetTime(dtData);
|
||||
|
||||
//NOTES
|
||||
rs->FetchField("notes",&strData);
|
||||
m_edNotes.SetWindowText(strData);
|
||||
|
||||
//
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//************************************************************
|
||||
//SAVE EDIT CONTROL FIELD
|
||||
//************************************************************
|
||||
bool CModelsDlg::SaveField(CEdit *edControl,CString fldname,bool AllowEmpty)
|
||||
{
|
||||
|
||||
if(m_bAddMode || m_bNoRecords) return true;//dont attempt to update
|
||||
CString str;
|
||||
//do nothing if not changed
|
||||
if(edControl->GetModify()!=TRUE) return true;
|
||||
|
||||
edControl->GetWindowText(str);
|
||||
//dont save empty fields if not allowed to
|
||||
if(!AllowEmpty)
|
||||
{
|
||||
|
||||
if(str.IsEmpty())
|
||||
{
|
||||
edControl->Undo();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
rs->UpdateField(fldname,&str);
|
||||
rs->SaveRecord();
|
||||
UpdateModified();
|
||||
return true;
|
||||
}
|
||||
|
||||
//************************************************************
|
||||
//SAVE GZCOMBO CONTROL FIELD
|
||||
//************************************************************
|
||||
bool CModelsDlg::SaveField(CgzCombo *cbControl,CString fldname)
|
||||
{
|
||||
|
||||
if(m_bAddMode || m_bNoRecords) return true;//dont attempt to update
|
||||
CString str;
|
||||
long lData;
|
||||
str=cbControl->GetCurrentRowID();
|
||||
if(str.IsEmpty()) return false;//shouldn't happen but...
|
||||
lData=atol(str);
|
||||
rs->UpdateField(fldname,&lData);
|
||||
rs->SaveRecord();
|
||||
UpdateModified();
|
||||
return true;
|
||||
}
|
||||
|
||||
//************************************************************
|
||||
//SAVE CheckBox CONTROL FIELD
|
||||
//************************************************************
|
||||
bool CModelsDlg::SaveField(CButton *ckControl,CString fldname)
|
||||
{
|
||||
if(m_bAddMode || m_bNoRecords) return true;//dont attempt to update
|
||||
bool bData=false;
|
||||
BOOL BData;
|
||||
BData=ckControl->GetCheck();
|
||||
if(BData==TRUE) bData=true;
|
||||
rs->UpdateField(fldname,&bData);
|
||||
rs->SaveRecord();
|
||||
UpdateModified();
|
||||
return true;
|
||||
}
|
||||
//************************************************************
|
||||
//SAVE DateTimePicker CONTROL FIELD
|
||||
//************************************************************
|
||||
bool CModelsDlg::SaveField(CDateTimeCtrl *dtControl,CString fldname)
|
||||
{
|
||||
if(m_bAddMode || m_bNoRecords) return true;//dont attempt to update
|
||||
COleDateTime dtData;
|
||||
dtControl->GetTime(dtData);
|
||||
rs->UpdateField(fldname,&dtData);
|
||||
rs->SaveRecord();
|
||||
UpdateModified();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//************************************************
|
||||
//UPDATE MODIFIED DATA
|
||||
//*************************************************
|
||||
bool CModelsDlg::UpdateModified()
|
||||
{
|
||||
|
||||
//updates modified by and modified on fields
|
||||
rs->UpdateField("modifier",&m_pApp->m_lusrID);
|
||||
COleDateTime dtData;
|
||||
dtData=COleDateTime::GetCurrentTime();
|
||||
rs->UpdateField("modified",&dtData);
|
||||
rs->SaveRecord();
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void CModelsDlg::OnBtnpm()
|
||||
{
|
||||
|
||||
if(m_bNoRecords || m_strSelectedModel.IsEmpty() || m_strSelectedModel=="0") return;
|
||||
|
||||
|
||||
//Open the PM dialog for this model
|
||||
CPM d;
|
||||
CString prompt;
|
||||
CString str;
|
||||
str=m_cbModels.GetCurrentRowText();//m_edModel.GetWindowText(str);
|
||||
prompt="Preventive maintenance for Model#: " + str;
|
||||
|
||||
//set criteria serial number
|
||||
d.PreInitialize(false,true,m_strSelectedModel,prompt);
|
||||
d.DoModal();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CModelsDlg::EnableFields(bool bEnable)
|
||||
{
|
||||
if(m_bReadOnly)
|
||||
return;
|
||||
BOOL enable = bEnable ? TRUE : FALSE;
|
||||
m_btnDelete.EnableWindow(enable);
|
||||
m_btnPM.EnableWindow(enable);
|
||||
m_cbCategories.EnableWindow(enable);
|
||||
m_cbManufacturers.EnableWindow(enable);
|
||||
m_cbModels.EnableWindow(enable);
|
||||
m_ckActive.EnableWindow(enable);
|
||||
m_ckDiscontinued.EnableWindow(enable);
|
||||
m_ckLifetime.EnableWindow(enable);
|
||||
m_dtDiscontinued.EnableWindow(enable);
|
||||
m_dtIntroduced.EnableWindow(enable);
|
||||
m_edModel.EnableWindow(enable);
|
||||
m_edNotes.EnableWindow(enable);
|
||||
m_lblCategory.EnableWindow(enable);
|
||||
m_lblManufacturer.EnableWindow(enable);
|
||||
m_lblModels.EnableWindow(enable);
|
||||
m_edWarrantyMonths.EnableWindow(enable);
|
||||
m_edWarrantyTerms.EnableWindow(enable);
|
||||
m_edDescription.EnableWindow(enable);
|
||||
|
||||
}
|
||||
|
||||
void CModelsDlg::OnKillfocusEddescription()
|
||||
{
|
||||
SaveField(&m_edDescription,"description",true);
|
||||
if(!m_bAddMode)
|
||||
FillModelList();
|
||||
}
|
||||
|
||||
void CModelsDlg::OnLblbymodel()
|
||||
{
|
||||
m_bListByDescription=false;
|
||||
FillModelList();
|
||||
}
|
||||
|
||||
void CModelsDlg::OnLblbydesc()
|
||||
{
|
||||
m_bListByDescription=true;
|
||||
FillModelList();
|
||||
}
|
||||
|
||||
void CModelsDlg::Security()
|
||||
{
|
||||
m_bReadOnly=false;
|
||||
int x=m_pApp->Allowed(RMODELS,true);
|
||||
if(x==0)//no access allowed
|
||||
{
|
||||
m_pApp->SecurityWarning();
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
if(x==2)//read only
|
||||
{
|
||||
m_bReadOnly=true;
|
||||
m_btnAdd.ShowWindow(FALSE);
|
||||
m_btnDelete.ShowWindow(FALSE);
|
||||
m_cbCategories.EnableWindow(FALSE);
|
||||
m_cbManufacturers.EnableWindow(FALSE);
|
||||
//m_cbModels.EnableWindow(FALSE);
|
||||
m_ckActive.EnableWindow(FALSE);
|
||||
m_ckDiscontinued.EnableWindow(FALSE);
|
||||
m_ckLifetime.EnableWindow(FALSE);
|
||||
m_dtDiscontinued.EnableWindow(FALSE);
|
||||
m_dtIntroduced.EnableWindow(FALSE);
|
||||
m_edDescription.SetReadOnly(TRUE);
|
||||
m_edModel.SetReadOnly(TRUE);
|
||||
m_edWarrantyTerms.SetReadOnly(TRUE);
|
||||
m_edWarrantyMonths.SetReadOnly(TRUE);
|
||||
m_lblCategory.EnableWindow(FALSE);
|
||||
m_lblManufacturer.EnableWindow(FALSE);
|
||||
|
||||
m_lblModels.EnableWindow(FALSE);
|
||||
m_edNotes.SetReadOnly(TRUE);
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user