pod.cpp
来自「科思ERP部分源码及控件」· C++ 代码 · 共 337 行
CPP
337 行
//--------------------------------------------------------------------------
#include <vcl.h>
#include "wnquery.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#include "Pod.h"
#include "Poh.h"
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
TfrmPod *frmPod;
//--------------------------------------------------------------------------
__fastcall TfrmPod::TfrmPod(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
: TStdBaseForm(Owner,chWnd,ClassCode,WhereStr)
{
InitControlGroup();
btnOK->Enabled = false;
}
//--------------------------------------------------------------------------
__fastcall TfrmPod::TfrmPod(TComponent* Owner): TStdBaseForm(Owner)
{
InitControlGroup();
btnOK->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::btnOKClick(TObject *Sender)
{
AnsiString sMemo;
int ErrNum;
try
{
StartWaitForm("正在生成采购单,请稍候......");
if(sgPod->RowCount>1)
{
int j;
j=comServer->ItemCount-1;
if(j>=0)
{
comServer->LocateItemByIndex(j);
j=StrToInt(GetDetailValue("PodLine"));
j=j+1;
}
else
j=1;
try
{
for(int i=1;i<sgPod->RowCount;i++)
{
if(sgPod->Cells[1][i]=="√")
{
comServer->AddItem();
SetDetailValue("PodLine",IntToStr(j)); //采购单行号
SetDetailValue("PodCode",frmPoh->sePohCode->Text); //采购单号
SetDetailValue("PodGoods",sgPod->Cells[3][i]);
SetDetailValue("GoodsName",sgPod->Cells[4][i]);
SetDetailValue("GoodsSpec",sgPod->Cells[5][i]);
//货物编码
SetDetailValue("PodUnit",sgPod->Cells[6][i]); //采购单位
SetDetailValue("PodConvRate",sgPod->Cells[7][i]); //换算比率
SetDetailValue("PodFrom",sgPod->Cells[8][i]); //需求来源
if(sgPod->Cells[9][i] == "")
throw Exception("请输入采购数量");
SetDetailValue("PodQty",sgPod->Cells[9][i]); //采购数量
if(sgPod->Cells[10][i] == "")
throw Exception("请输入采购单价");
SetDetailValue("PodPrice",sgPod->Cells[10][i]); //采购单价
SetDetailValue("PodType","2"); //行类型
SetDetailValue("PodFromCode",seRpohCode->Text);
SetDetailValue("PodFromLine",sgPod->Cells[2][i]);
SetDetailValue("PodStatus","1"); //订单行状态
SetDetailValue("PodSendDate",sgPod->Cells[12][i]); //发货日期
SetDetailValue("PodRecDate",sgPod->Cells[12][i]); //交货日期
SetDetailValue("PodReqDate",sgPod->Cells[11][i]); //需求日期
SetDetailValue("PodLoc",sgPod->Cells[13][i]); //需求货位
SetDetailValue("PodDept",sgPod->Cells[14][i]); //需求部门
sMemo="来源于请购单'"+seRpohCode->Text+"'的第"+sgPod->Cells[2][i]+"行";
SetDetailValue("PodDesc",sMemo); //备注
SetDetailValue("PodClose","0"); //结清标志
SetDetailValue("PodCloseDate", TDateTime().CurrentDate().DateString()); //结清日期
SetDetailValue("PodSo",""); //订单号
SetDetailValue("PodSodLine","0"); //订单行号
SetDetailValue("PodBatch",""); //批号
SetDetailValue("PodAmt", sgPod->Cells[10][i].ToDouble()*sgPod->Cells[9][i].ToDouble()); //批号
comServer->AddToObject();
j=j+1;
}
}
}
catch(Exception &e)
{
comServer->FreeItem();
this->ModalResult=0;
throw Exception(e.Message);
}
}
}
__finally
{
EndWaitForm();
}
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::btnCancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::InitControlGroup()
{
sgPod->RowCount = 1;
sePohSupply->Text=frmPoh->scPohSupply->ItemData[0];
if(frmPoh->scPohSettleMode->ItemData[0]!="")
sePodSettleMode->Text =frmPoh->scPohSettleMode->ItemData[0];
if(frmPoh->scPohTaxCode->ItemData[0]!="")
sePodTax->Text =frmPoh->scPohTaxCode->ItemData[0];
// scPohSettleMode->ItemData[0]=frmPoh->scPohSettleMode->ItemData[0];
//scPohSettleMode->ItemData[1]=frmPoh->scPohSettleMode->ItemData[1];
// scPohTaxCode->ItemData[0]=frmPoh->scPohTaxCode->ItemData[0];
//scPohTaxCode->ItemData[1]=frmPoh->scPohTaxCode->ItemData[1];
sePohSupply->Enabled=false;
seRpohCode->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::FillGridWithData()
{
TComResultSet *RsRpod;
RsRpod=new TComResultSet(Handle, g_ClientHandle);
AnsiString ItemStr,s_SQL;
s_SQL=" select goodsbuyer, goodsname ,goodsspec,";
s_SQL+=" RpodLine,RpodCode,RpodGoodsCode,RpodUnitCode,RpodConvRate,RpodFrom,RpodQty,RpodPrice,RpodPQty,RpodReqDate,RpodRecDate,RpodLocCode,RpodDept from sdrpod,sdgoods ";
s_SQL+=" where rpodgoodscode=goodscode and RpodCode= '"+seRpohCode->Text+" '";
s_SQL+=" and RpodClose = 0 and Rpodqty-rpodpqty>0 ";
RsRpod->Close();
RsRpod->Open("select parametercode,parametervalue from sdparameter where parametercode = '10302' and parametervalue =1","parametercode");
if(RsRpod->RecordCount >0)
s_SQL+=" and goodsbuyer = '"+g_sdUserCode+"'";
//second filter for fill grid with data
sgPod->RowCount=1;
try
{
StartWaitForm("正在查询数据,请稍候......");
RsRpod->Close();
RsRpod->Open(s_SQL,"");
while( RsRpod->Eof == false)
{
ItemStr = "\t"+AnsiString("") +
"\t"+RsRpod->FieldByName("RpodLine")+
"\t"+RsRpod->FieldByName("RpodGoodsCode")+
"\t"+RsRpod->FieldByName("Goodsname")+
"\t"+RsRpod->FieldByName("Goodsspec")+
"\t"+RsRpod->FieldByName("RpodUnitCode")+
"\t"+RsRpod->FieldByName("RpodConvRate")+
"\t"+RsRpod->FieldByName("RpodFrom")+
"\t"+AnsiString(RsRpod->FieldByName("RpodQty").ToDouble()-RsRpod->FieldByName("RpodPQty").ToDouble())+
"\t"+RsRpod->FieldByName("RpodPrice")+
"\t"+RsRpod->FieldByName("RpodReqDate")+
"\t"+RsRpod->FieldByName("RpodRecDate")+
"\t"+RsRpod->FieldByName("RpodLocCode")+
"\t"+RsRpod->FieldByName("RpodDept");
sgPod->AddItem(ItemStr);
RsRpod->MoveNext();
}
RsRpod->Close();
}
__finally
{
EndWaitForm();
}
delete RsRpod;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::GetComObject(TComServer *comServerPtr)
{
comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::SetDetailValue(AnsiString fieldname,AnsiString Value)
{
comServer->DataSet->SetDetailValue(fieldname,Value);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmPod::GetDetailValue(AnsiString fieldname)
{
Variant vTmp;
vTmp=comServer->DataSet->GetItemValue(fieldname);
if(vTmp.IsNull())
return "";
else
return AnsiString(vTmp);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::sgPodDblClick(TObject *Sender)
{
AnsiString SqlStr;
if (sgPod->Row > 0 && sgPod->Col == 1)
{
if (sgPod->Cells[1][sgPod->Row] == "√")
{
sgPod->Cells[1][sgPod->Row] = "";
for (int i=1;i<sgPod->RowCount;i++)
{
if(sgPod->Cells[1][i]=="√")
{
btnOK->Enabled=true;
break;
}
else
btnOK->Enabled=false;
}
}
else
{
sgPod->Cells[1][sgPod->Row] = "√";
btnOK->Enabled = true;
}
}
//DONE: BUG NO.650 FIXED 9-4
else if(sgPod->Col==13 && sgPod->Cells[1][sgPod->Row] == "√")
{
SqlStr="002[货位代码][货位名称]select loccode,locname from sdLoc,sdlg ";
SqlStr+=" where lgLoccode=loccode and lggoodscode='"+sgPod->Cells[3][sgPod->Row]+"'";
// if(g_sdQuality == false) //无需质量管理
SqlStr+= " and LocType=1 order by locCode";
// else //需要质量管理
// SqlStr+= " and LocType=3 order by loccode";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"货位查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
sgPod->Cells[13][sgPod->Row]=p->ColData[1];
}
delete p;
}
else if(sgPod->Col==14 && sgPod->Cells[1][sgPod->Row] == "√")
{
SqlStr="002[部门代码][部门名称]select deptcode,deptname from sddept order by deptCode ";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"部门查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
sgPod->Cells[14][sgPod->Row]=p->ColData[1];
}
delete p;
}
//=============END OF 650==================
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::bbSelAllClick(TObject *Sender)
{
if(sgPod->RowCount <=1)
return;
for(int i=1;i<sgPod->RowCount;i++)
sgPod->Cells[1][i] = "√";
btnOK->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::bbSelNoneClick(TObject *Sender)
{
for(int i=1;i<sgPod->RowCount;i++)
sgPod->Cells[1][i] = "";
btnOK->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::seRpohCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
SqlStr="004[请购单号][请购日期][币种][采购员] select Rpohcode,Rpohdate,Currencyname=isnull((select currencyname from sdcurrency where Currencycode = rpohcurrencycode),'') ,rpohbuyercode " ;
SqlStr+=",RpohSupplyCode,RpohSettleMode,RpohTaxcode from sdRpoh ";
SqlStr+=" where Rpohcheck=1 and Rpohclose=0 and Rpohcancel=0 ";
SqlStr+=" and Rpohsupplycode='"+frmPoh->scPohSupply->ItemData[1]+"'";
if(frmPoh->scPohSettleMode->Text!="" && CBSettleMode->Checked ==true)
SqlStr+=" and RpohSettleMode = '"+frmPoh->scPohSettleMode->ItemData[1]+"'";
if(frmPoh->scPohTaxCode->Text!="" && CBTax->Checked ==true)
SqlStr+=" and RpohTaxCode= '"+frmPoh->scPohTaxCode->ItemData[1]+"'";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"请购单查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seRpohCode->Text=p->ColData[1];
FillGridWithData();
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPod::sgPodClick(TObject *Sender)
{
if(sgPod->Cells[1][sgPod->Row]=="√")
sgPod->ReadOnly=false;
else
sgPod->ReadOnly=true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?