📄 listxsth.cpp
字号:
// ListXSTH.cpp: implementation of the CListXSTH class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "a1.h"
#include "ListXSTH.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CListXSTH::CListXSTH(bool isxsth,CString djph)
{
this->m_bXsth=isxsth;
this->m_strDjPh=djph;
this->m_pstrlistThYp=new CStringList[6];
for(int i=0;i<100;i++)
{
m_iTheItemState[i]=NONE;
this->m_iYpKcSelected[i]=-1;
}
this->InitValuesFromDB();
}
CListXSTH::~CListXSTH()
{
delete [] this->m_pstrlistThYp;
}
bool CListXSTH::InitValuesFromDB()
{
LRunSql m_runsql;
CString sql,yp_id;
long sl;long l_temp;
_variant_t value;
m_pstrlistThYp[0].AddTail("药品编号");
m_pstrlistThYp[1].AddTail("药品名称");
m_pstrlistThYp[2].AddTail("仓库");
m_pstrlistThYp[4].AddTail("登记数量");
m_pstrlistThYp[5].AddTail("该药品可退货数量");
if(m_bXsth)
{
m_pstrlistThYp[3].AddTail("单价");
sql.Format("select tabxsdj.yp_id,sum(tabxsdj.sl) as sl,tabxsdj.ck_name,\
tabypinfo.yp_name,tabxsdj.dj from tabxsdj,tabypinfo \
where tabxsdj.yp_id=tabypinfo.yp_id and tabxsdj.xs_ph = '%s' \
group by tabxsdj.yp_id,tabxsdj.ck_name,\
tabypinfo.yp_name,tabxsdj.dj",
this->m_strDjPh);
}
else
{
m_pstrlistThYp[3].AddTail("进价");
sql.Format("select tabrkdj.yp_id,sum(tabrkdj.sl) as sl,tabrkdj.ck_name,\
tabypinfo.yp_name,tabrkdj.dj from tabrkdj,tabypinfo \
where tabrkdj.yp_id=tabypinfo.yp_id and tabrkdj.rk_ph = '%s'\
group by tabrkdj.yp_id,tabrkdj.ck_name,\
tabypinfo.yp_name,tabrkdj.dj",
this->m_strDjPh);
}
m_runsql.CheckSQLResult(sql);
while(!m_runsql.m_recordset->adoEOF)
{
value=m_runsql.m_recordset->GetCollect("yp_id");
if(value.vt!=VT_NULL)
m_pstrlistThYp[0].AddTail((char*)(_bstr_t)value);
yp_id=(char*)(_bstr_t)value;
value=m_runsql.m_recordset->GetCollect("yp_name");
if(value.vt!=VT_NULL)
m_pstrlistThYp[1].AddTail((char*)(_bstr_t)value);
value=m_runsql.m_recordset->GetCollect("ck_name");
if(value.vt!=VT_NULL)
m_pstrlistThYp[2].AddTail((char*)(_bstr_t)value);
value=m_runsql.m_recordset->GetCollect("dj");
if(value.vt!=VT_NULL)
m_pstrlistThYp[3].AddTail((char*)(_bstr_t)value);
value=m_runsql.m_recordset->GetCollect("sl");
if(value.vt!=VT_NULL)
m_pstrlistThYp[4].AddTail((char*)(_bstr_t)value);
sl=value.dblVal;
m_pstrlistThYp[5].AddTail("0");
//累加可退货药品数量;
if(m_strtolongYpIdToSl.Lookup(yp_id,l_temp))
this->m_strtolongYpIdToSl.SetAt(yp_id,sl+l_temp);
else
this->m_strtolongYpIdToSl.SetAt(yp_id,sl);
m_runsql.m_recordset->MoveNext();
}
if(m_bXsth)
{
sql.Format("select tabxsthdj.yp_id,sum(tabxsthdj.sl) as sl from tabxsthdj,tabxsthph where tabxsthph.xsth_ph = tabxsthdj.xsth_ph and tabxsthph.xs_ph = '%s' group by yp_id",this->m_strDjPh);
}
else
{
sql.Format("select tabrkthdj.yp_id,sum(tabrkthdj.sl) as sl from tabrkthdj,tabrkthph where tabrkthph.rkth_ph = tabrkthdj.rkth_ph and tabrkthph.rk_ph = '%s' group by yp_id",this->m_strDjPh);
}
m_runsql.CheckSQLResult(sql);
while(!m_runsql.m_recordset->adoEOF)
{
value=m_runsql.m_recordset->GetCollect("yp_id");
if(value.vt!=VT_NULL)
yp_id=(char*)(_bstr_t)value;
value=m_runsql.m_recordset->GetCollect("sl");
if(value.vt!=VT_NULL)
sl=value.dblVal;
if(m_strtolongYpIdToSl.Lookup(yp_id,l_temp))
this->m_strtolongYpIdToSl.SetAt(yp_id,l_temp-sl);
else
MessageBox("登记时没有的药品,退货登记却有!","问题");
m_runsql.m_recordset->MoveNext();
}
this->SetLeftNumber();
return true;
}
bool CListXSTH::Create(DWORD dwStyle, const RECT &rect, CWnd *pParentWnd, UINT nID)
{
bool b=CBaseList::Create(dwStyle,rect,pParentWnd,nID);
m_poplist->SelectStringList(6,this->m_pstrlistThYp);
return b;
}
void CListXSTH::OnEditKillFocus(const int& item,const int& subitem)
{
TRACE("void CListXSDJ::OnEditKillFocus()\n");
CString str;
m_edit.GetWindowText(str);
switch(subitem)
{
// case 0:
// case 1:
case 2:
{
str.MakeUpper();
this->SetValueUnChange(str);
break;
}
case 4:
{
CString id=this->GetItemText(item,0);
long l_left=0;
l_left=this->m_edit.kc_number-atoi(str)+m_edit.m_dSetFocusValue;//- cur show number + setfocus value= left
m_strtolongYpIdToSl.SetAt(id,l_left);
this->SetLeftNumber();
this->m_poplist->SelectStringList(6,this->m_pstrlistThYp);
break;
}
}
CBaseList::OnEditKillFocus(item,subitem);
if(subitem==5)
this->SetZje();
}
bool CListXSTH::OnEditReturn(const int& item,const int& subitem)
{
CString str;
m_edit.GetWindowText(str);
switch(subitem)
{
case 0:
{
if(this->m_poplist->IsWindowVisible()&&this->m_poplist->GetSelectedMark()>=0)
{
this->SetValueUnChange(m_poplist->GetListCtrlSel(0));
this->SetItemText(m_nItem,0,this->m_poplist->GetListCtrlSel(0));
this->SetItemText(m_nItem,1,this->m_poplist->GetListCtrlSel(1));
this->SetItemText(m_nItem,3,this->m_poplist->GetListCtrlSel(3));
// this->InitListYpCk(item,m_poplist->GetListCtrlSel(0));
m_iTheItemState[item]=NONE;
m_iTheItemState[item]&=NOCK;
m_iTheItemState[item]|=YPTRUE;
}
else
SetValueUnChange("");
break;
}
case 1:
{
if(this->m_poplist->IsWindowVisible()&&this->m_poplist->GetSelectedMark()>=0)
{
SetValueUnChange(m_poplist->GetListCtrlSel(1));
this->SetItemText(m_nItem,0,this->m_poplist->GetListCtrlSel(0));
this->SetItemText(m_nItem,1,this->m_poplist->GetListCtrlSel(1));
this->SetItemText(m_nItem,3,this->m_poplist->GetListCtrlSel(3));
// this->InitListYpCk(item,m_poplist->GetListCtrlSel(0));
m_iTheItemState[item]=NONE;
m_iTheItemState[item]&=NOCK;
m_iTheItemState[item]|=YPTRUE;
}
else
SetValueUnChange("");
break;
}
case 2:
{
if(this->m_poplist->IsWindowVisible()&&this->m_poplist->GetSelectedMark()>=0)
{
SetValueUnChange(m_poplist->GetListCtrlSel(2));
this->SetItemText(m_nItem,2,this->m_poplist->GetListCtrlSel(2));
m_iTheItemState[item]=CKTRUE;
}
else
SetValueUnChange("");
break;
}
}
CBaseList::OnEditReturn(item,subitem);
return true;
}
void CListXSTH::OnEditSetFocus(const int& item,const int& subitem)
{
CString str;
m_edit.m_dSetFocusValue=0;
m_edit.GetWindowText(str);
this->m_sSetFocus=str;
m_edit.GetWindowRect(&this->m_rectWindow);
str.MakeUpper();
switch(subitem)
{
case 0:
{
this->m_poplist->ShowWindow(SW_HIDE);
ASSERT(this->m_poplist!=NULL);
// m_poplist->SelectStringList(5,this->m_pstrlistYp);
this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
this->m_poplist->RefreshListCtrlView(0,str);
if(!m_poplist->IsWindowVisible())
m_poplist->ShowListPop();
break;
}
case 1:
{
this->m_poplist->ShowWindow(SW_HIDE);
ASSERT(this->m_poplist!=NULL);
// m_poplist->SelectStringList(5,this->m_pstrlistYp);
this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
CString id=this->GetItemText(item,0);
m_poplist->RefreshListCtrlView(1,str,id,0);
if(!m_poplist->IsWindowVisible())
m_poplist->ShowListPop();
break;
}
case 2:
{
if(!(CheckYp(item)&YPTRUE))
goto wrong_mission;
ASSERT(this->m_poplist!=NULL);
// m_iTheItemState[item]&=NOCK;
this->m_poplist->ShowWindow(SW_HIDE);
CString id=this->GetItemText(item,0);
this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
m_poplist->RefreshListCtrlView(0,id,2,str);
if(!m_poplist->IsWindowVisible())
m_poplist->ShowListPop();
break;
}
case 3:
{
if(CheckCk(item)!=CKTRUE)
goto wrong_mission;
ASSERT(this->m_poplist!=NULL);
// m_poplist->SelectStringList(5,this->m_pstrlistYp);
this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
CString id=this->GetItemText(item,0);
CString ck_name=this->GetItemText(item,2);
m_poplist->RefreshListCtrlView(0,id,2,ck_name);
if(str=="")
{
str=m_poplist->GetListCtrlSel(3);
this->SetValueUnChange(str);
}
m_edit.SetSel(0,-1);
//计算
long sl=0;double dj=0,je=0;
sl=atoi(this->GetItemText(item,4));
dj=atof(str);
je=sl*dj;
CString s_je;
s_je.Format("%0.2f",je);
this->SetItemText(item,5,s_je);
this->SetItemText(item,6,s_je);
if(!m_poplist->IsWindowVisible())
m_poplist->ShowListPop();
break;
}
case 4:
{
if(CheckCk(item)!=CKTRUE)
goto wrong_mission;
if(str!="")
m_edit.m_dSetFocusValue=atoi(str);
// this->InitListCurYpKc(item);
ASSERT(this->m_poplist!=NULL);
CString id=this->GetItemText(item,0);
CString ck_name=this->GetItemText(item,2);
// m_poplist->SelectStringList(4,this->m_pstrlistCurYpKc);
this->SetLeftNumber();
if(!this->m_strtolongYpIdToSl.Lookup(id,this->m_edit.kc_number))
{
MessageBox("目前的情况是:你选择的药品编号,没找到它的剩余值!","问题"); //cur kc_number;
break;
}
this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
m_poplist->SelectStringList(6,this->m_pstrlistThYp);
m_poplist->RefreshListCtrlView(0,id,2,ck_name);
//计算
long sl=0;double dj=0,je=0;
dj=atof(this->GetItemText(item,3));
sl=atoi(str);
je=sl*dj;
CString s_je;
s_je.Format("%0.2f",je);
this->SetItemText(item,5,s_je);
this->SetItemText(item,6,s_je);
if(!m_poplist->IsWindowVisible())
m_poplist->ShowListPop();
break;
}
case 5:
{
if(m_poplist->IsWindowVisible())
this->m_poplist->ShowWindow(SW_HIDE);
if(CheckCk(item)!=CKTRUE)
goto wrong_mission;
CString str=this->GetItemText(item,4);
if(str==""||str=="0")
{
this->m_iEditedIndex=3;
m_edit.ShowWindow(SW_HIDE);
this->SetNextItemFocus();
}
break;
}
}
return;
wrong_mission:
{
this->m_iEditedIndex=-1;
m_edit.ShowWindow(SW_HIDE);
this->SetNextItemFocus();
}
TRACE("aftersetfocus\n");
}
void CListXSTH::OnNewEditChange(const int& item,const int& sub_item)
{
TRACE("void CListXSDJ::OnNewEditChange()\n");
if(this->m_bSetValue) return ;
ASSERT(this->m_poplist!=NULL);
CString str;
m_edit.GetWindowText(str);
CString str_sl=this->GetItemText(item,4);
switch(sub_item)
{
case 0:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -