⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgxsdj.cpp

📁 工能强大的一款医药管理软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}

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 + -