?? dlgxsdj.cpp
字號:
}
int CDlgXSDJ::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rect;
this->GetClientRect(&rect);
rect.left+=10;
rect.right-=290;
rect.top+=10;
rect.bottom=120;
m_whiteframe.Create("",WS_CHILD|WS_TABSTOP|WS_VISIBLE,rect,this,700);
return 0;
}
BOOL CDlgXSDJ::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
return CDialog::Create(IDD, pParentWnd);
}
void CDlgXSDJ::OnButtonOk()
{
if(!CheckKh())
{
this->m_editKhId.SetFocus();
if(m_bXs)
MessageBox("請輸入客戶信息","注意");
else
MessageBox("請輸入供應商信息","注意");
return;
}
else if(!this->m_plistXSDJ->CheckAllItem())
{
if(m_bXs)
MessageBox("請輸入完整客戶登記信息","注意");
else
MessageBox("請輸入完整供應商登記信息","注意");
this->m_plistXSDJ->m_edit.SetFocus();
return;
}
CA1App * app=(CA1App*)AfxGetApp();
this->BeginWaitCursor();
CString xs_ph=this->m_sXsPh;int i=0;
CString kh_id;this->m_editKhId.GetWindowText(kh_id);
CString kh_name;this->m_editKhName.GetWindowText(kh_name);
CString czy=app->m_sUserName;
CString jsr;this->m_comboJsr.GetWindowText(jsr);
CString rq;this->m_tcRq.GetWindowText(rq);
CString jsfs;this->m_comboJsfs.GetWindowText(jsfs);
CString yp_id,yp_name,s_sl,ck_name,s_dj,s_je,sql;
if(jsr=="")
{
MessageBox("請輸入完整經手人信息","注意");
this->m_comboJsr.SetFocus();
return;
}
if(jsfs=="")
{
MessageBox("請輸入完整結算方式信息","注意");
this->m_comboJsfs.SetFocus();
return;
}
long l_sl=0;
double d_dj=0,d_je=0,ys=0,ss=0,ws=0;
CString sSs;
this->GetDlgItem(IDC_EDIT_SS)->GetWindowText(sSs);
ss=atof(sSs);
long pzs=0;
bool is_jq=false;
CStringList slist;
int n=m_plistXSDJ->GetItemCount();
if(n<=0)
{
MessageBox("請輸入登記信息","注意");
this->m_plistXSDJ->m_iEditedIndex=-1;
m_plistXSDJ->InsertItem(0,"");
::PostMessage(m_plistXSDJ->GetSafeHwnd(),WM_SETFOCUS,0,0);
::PostMessage(m_plistXSDJ->GetSafeHwnd(),SETNEXTITEMPHFOCUS,0,0);
return ;
}
try{
m_runsql.m_recordset->Close();
LRunSql::BeginTrans();
}
catch(_com_error e)
{
MessageBox(e.ErrorMessage());
}
for( i=0;i<n;i++)
{
yp_id=this->m_plistXSDJ->GetItemText(i,0);
yp_name=this->m_plistXSDJ->GetItemText(i,1);
ck_name=this->m_plistXSDJ->GetItemText(i,2);
s_dj=this->m_plistXSDJ->GetItemText(i,3);
d_dj=atof(s_dj);
s_sl=this->m_plistXSDJ->GetItemText(i,4);
l_sl=atoi(s_sl);
s_je=this->m_plistXSDJ->GetItemText(i,5);
d_je=atof(s_je);
ys=d_je+ys;
// ss=ss+atof(m_plistXSDJ->GetItemText(i,6));
//save dj;
if(slist.Find(yp_id)==NULL)slist.AddTail(yp_id);
if(m_bXs)
{
double jinjia=0;double profit=0;
m_plistXSDJ->m_mapYpToJj.Lookup(yp_id,jinjia);profit=(d_dj-jinjia)*l_sl;
sql.Format("INSERT INTO tabxsdj(xs_ph,yp_id,ck_name,sl,dj,je,profit) VALUES('%s','%s','%s',%d,%f,%f,%f)"
,xs_ph,yp_id,ck_name,l_sl,d_dj,d_je,profit);
}
else
sql.Format("INSERT INTO tabrkdj(rk_ph,yp_id,ck_name,sl,dj,je) VALUES('%s','%s','%s',%d,%f,%f)"
,xs_ph,yp_id,ck_name,l_sl,d_dj,d_je);
this->m_runsql.RunSQL(sql);
//save kc;
if(m_bXs)
sql.Format("update tabkc set kc_number = kc_number - %d where yp_id='%s' and ck_name = '%s'",l_sl,yp_id,ck_name);
else
sql.Format("update tabkc set kc_number = kc_number + %d where yp_id='%s' and ck_name = '%s'",l_sl,yp_id,ck_name);
this->m_runsql.RunSQL(sql);
}
ws=ys-ss;
if(ws<=0.0)
{
ws=0.0;
is_jq=true;
}
pzs=slist.GetCount();
if(!m_bXs)
sql.Format("INSERT INTO tabrkph(rk_ph,gys_id,pzs,yf,sf,wf,is_jq,rq,czy,jsr,jsfs) VALUES('%s','%s',%d,%f,%f,%f,%d,#%s#,'%s','%s','%s')"
,xs_ph,kh_id,pzs,ys,ss,ws,is_jq,rq,czy,jsr,jsfs);
else
sql.Format("INSERT INTO tabxsph(xs_ph,kh_id,pzs,ys,ss,ws,is_jq,rq,czy,jsr,jsfs) VALUES('%s','%s',%d,%f,%f,%f,%d,#%s#,'%s','%s','%s')"
,xs_ph,kh_id,pzs,ys,ss,ws,is_jq,rq,czy,jsr,jsfs);
this->m_runsql.RunSQL(sql);
this->EndWaitCursor();
if(!LRunSql::CommitTrans())
{
MessageBox("數據庫事務提交錯誤","醫藥管理系統");
}
else
MessageBox("OK","醫藥管理系統");
this->EndDialog(0);
}
bool CDlgXSDJ::CheckKh()
{
CString kh_id;this->m_editKhId.GetWindowText(kh_id);
CString kh_name;this->m_editKhName.GetWindowText(kh_name);
bool result=false;
POSITION pos=m_strlistKh[0].FindIndex(1);
int i;
for( pos,i=0; pos != NULL; i++)
{
if(kh_id== m_strlistKh[0].GetNext( pos ))
if(this->m_strlistKh[1].Find(kh_name)!=NULL)
{
result=true;
break;
}
}
return result;
}
CString CDlgXSDJ::ChanShengXSDJPH()
{
this->UpdateData();
CString sql;
_bstr_t sql_;
_variant_t value;
CString s_value;
CString s_date;
CString ph;
CTime m_tRq;
this->m_tcRq.GetTime(m_tRq);
this->m_tcRq.GetWindowText(s_date);
CString y_date,m_date,d_date;
y_date=m_tRq.Format("%Y");
m_date.Format("%02d",m_tRq.GetMonth());
d_date.Format("%02d",m_tRq.GetDay());
ph=y_date+"-"+m_date+"-"+d_date;
if(this->m_bXs)
{
ph=ph+"xsd";
sql.Format("select xs_ph from tabxsph where rq=#%s# order by xs_ph desc",s_date);
if(m_runsql.CheckSQLResult(sql))
{
value=m_runsql.m_recordset->GetCollect("xs_ph");
if(value.vt!=NULL)
{
s_value=(char*)(_bstr_t)value;
s_value=s_value.Mid(s_value.GetLength()-4,4);
}
}
else
{
s_value="0";
}
}
else
{
ph=ph+"rkd";
sql.Format("select rk_ph from tabrkph where rq=#%s# order by rk_ph desc",s_date);
if(m_runsql.CheckSQLResult(sql))
{
value=m_runsql.m_recordset->GetCollect("rk_ph");
if(value.vt!=NULL)
{
s_value=(char*)(_bstr_t)value;
s_value=s_value.Mid(s_value.GetLength()-4,4);
}
}
else
{
s_value="0";
}
}
long l_value=atoi(s_value)+1;
s_value.Format("%04d",l_value);
ph=ph+s_value;
return ph;
}
void CDlgXSDJ::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your message handler code here and/or call default
if(nIDCtl==IDC_EDIT2)
OnDrawItem(nIDCtl, lpDrawItemStruct) ;
CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDrawXSDJ::CDrawXSDJ(CDlgXSDJ* dlg):CDrawDlg()
{
// pParent = DYNAMIC_DOWNCAST(CFrameWnd, pNaturalParent);
parent=dlg;
m_nColumns=6;
m_iHaveColumnsTitle=1;
m_nSmallTilte=5;
m_piCharsColumns=new int[m_nColumns];
m_piWidthColumns=new int[m_nColumns]; //每列寬度
this->m_pstrColumnTitle=new CString[this->m_nColumns];
m_pstrColumnTitle[0]=_T("藥品編號");
m_pstrColumnTitle[1]=_T("藥品名稱");
m_pstrColumnTitle[2]=_T("倉庫名稱");
m_pstrColumnTitle[3]=_T("單價");
m_pstrColumnTitle[4]=_T("數量");
if(parent->m_bXs)
{
m_pstrColumnTitle[5]=_T("應收");
// m_pstrColumnTitle[6]=_T("實收");
}
else
{
m_pstrColumnTitle[5]=_T("應付");
// m_pstrColumnTitle[6]=_T("實付");
}
}
CDrawXSDJ::~CDrawXSDJ()
{
}
void CDrawXSDJ::PrintDlg(CDC* pDC, CPrintInfo* pInfo)
{
// TEXTMETRIC tm;
// pDC->GetTextMetrics(&tm);
// long nHeight = tm.tmHeight + tm.tmExternalLeading;
m_pOldFont = (CFont*) (pDC->SelectObject(m_pGeneralFont));
CPoint ptLeftCurPos(pInfo->m_rectDraw.TopLeft());
CPoint ptRightCurPos(pInfo->m_rectDraw.right,pInfo->m_rectDraw.top);
ptLeftCurPos.Offset(this->m_iLeftMargin,2*this->m_iLineHeight);
ptRightCurPos.Offset(-this->m_iRightMargin,2*this->m_iLineHeight);
int iCurPage=pInfo->m_nCurPage;
if(iCurPage==pInfo->GetMinPage())
{
ptLeftCurPos.Offset(0,this->m_iLineHeight/4);//開始寫字的起始坐標
ptRightCurPos.Offset(0,this->m_iLineHeight*9/4);
CString str,down,up;
CSize size;
//左邊的四行:
CString mc="客戶";
if(!parent->m_bXs)mc="供應商";
pDC->TextOut(ptLeftCurPos.x,ptLeftCurPos.y,mc+"編號:");
this->parent->m_editKhId.GetWindowText(str);
pDC->TextOut(m_iLineHeight*4,ptLeftCurPos.y,str);
ptLeftCurPos.Offset(0,this->m_iLineHeight);
pDC->TextOut(ptLeftCurPos.x,ptLeftCurPos.y,mc+"名稱:");
this->parent->m_editKhName.GetWindowText(str);
pDC->TextOut(m_iLineHeight*4,ptLeftCurPos.y,str);
ptLeftCurPos.Offset(0,this->m_iLineHeight);
this->parent->m_comboJsfs.GetWindowText(str);
pDC->TextOut(ptLeftCurPos.x,ptLeftCurPos.y,"結算方式:");
pDC->TextOut(m_iLineHeight*4,ptLeftCurPos.y,str+"付款");
ptLeftCurPos.Offset(0,this->m_iLineHeight);
this->parent->m_comboJsr.GetWindowText(str);
pDC->TextOut(ptLeftCurPos.x,ptLeftCurPos.y,"經手人:");
pDC->TextOut(m_iLineHeight*4,ptLeftCurPos.y,str);
//右邊的兩行:
//票號:
this->parent->m_editPh.GetWindowText(str);
if(parent->m_bXs)
str="銷售票號: "+str;
else
str="入庫票號: "+str;
size=pDC->GetTextExtent(str);
pDC->TextOut(ptRightCurPos.x-size.cx,ptRightCurPos.y,str);
//日期:
ptRightCurPos.Offset(0,m_iLineHeight);
parent->m_tcRq.GetWindowText(str);
str="日期: "+str;
pDC->TextOut(ptRightCurPos.x-size.cx,ptRightCurPos.y,str);
//總金額,應收應付
ptLeftCurPos.Offset(0,m_iLineHeight);
CString text;
str="總金額: ";
parent->GetDlgItemText(IDC_STATIC_ZJE,text);
str+=text+"元 ";
parent->GetDlgItemText(IDC_STATIC_SS,text);
str+=text;
parent->GetDlgItemText(IDC_EDIT_SS,text);
str+=text+"元 ";
pDC->TextOut(ptLeftCurPos.x,ptLeftCurPos.y,str);
ptLeftCurPos.Offset(0,m_iLineHeight*3/4);
ptRightCurPos.Offset(0,m_iLineHeight*7/4);
}
int n=this->parent->m_plistXSDJ->GetItemCount();
if(n==0) return ;
this->DrawListItems(pDC,iCurPage,ptLeftCurPos,ptRightCurPos,parent->m_plistXSDJ);
pDC->SelectObject(m_pOldFont);
}
void CDrawXSDJ::PrintPageHeader(CDC* pDC, CPrintInfo* pInfo)
{
CString str;
if(parent->m_bXs)
str="銷售登記";
else
str="入庫登記";
CDrawDlg::PrintPageHeader(pDC,pInfo,str);
}
void CDlgXSDJ::OnButtonPrint()
{
for(int i=this->m_plistXSDJ->GetItemCount()-1;i>=0;i--)
if(m_plistXSDJ->GetItemText(i,0)==""&&
m_plistXSDJ->GetItemText(i,1)==""&&
m_plistXSDJ->GetItemText(i,2)=="")
{
m_plistXSDJ->DeleteItem(i);
}
if(!::OpenPrintFrame(this,m_draw))
{
MessageBox("打開打印框架錯誤","錯誤!");
}
if(m_plistXSDJ->GetItemCount()==0)
m_plistXSDJ->InsertItem(0,"");
}
BOOL CDlgXSDJ::DestroyWindow()
{
m_plistXSDJ->DestroyWindow();
delete m_plistXSDJ;
m_plistXSDJ=NULL;
this->m_popList.DestroyWindow();
delete m_draw;
m_draw=NULL;
delete [] m_strlistKh;
m_strlistKh=NULL;
delete [] wf;
wf=NULL;
return CDialog::DestroyWindow();
}
CListCtrl* CDrawXSDJ::GetListCtrl()
{
return this->parent->m_plistXSDJ;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -