rpod.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 296 行
CPP
296 行
//--------------------------------------------------------------------------
#include <vcl.h>
#include "Rpod.h"
#include "Rpoh.h"
//--------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma link "DateEdit"
#pragma resource "*.dfm"
TfrmRpod *frmRpod;
//--------------------------------------------------------------------------
__fastcall TfrmRpod::TfrmRpod(TComponent* Owner, HWND chWnd, AnsiString ClassCode,AnsiString WhereStr)
: TStdBaseForm(Owner,chWnd,ClassCode,WhereStr)
{
btnOK->Enabled = false;
}
//--------------------------------------------------------------------------
__fastcall TfrmRpod::TfrmRpod(TComponent* Owner) : TStdBaseForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::btnOKClick(TObject *Sender)
{
AnsiString sMemo;
int ErrNum;
try
{
StartWaitForm("正在生成收货单,请稍候......");
if(sgRpod->RowCount>1)
{
int j;
j=comServer->ItemCount-1;
if(j>=0)
{
comServer->LocateItemByIndex(j);
j=StrToInt(GetDetailValue("RpodLine"));
j=j+1;
}
else
j=1;
try
{
for(int i=1;i<sgRpod->RowCount;i++)
{
if(sgRpod->Cells[1][i]=="√")
{
try
{
StrToFloat(sgRpod->Cells[7][i]);
}
catch(...)
{
if(::MessageBox(Handle,"请购数量填写错误,选择'确定'继续执行,选择'取消'中断执行","错误提示",MB_OKCANCEL|MB_ICONSTOP)==IDOK)
continue;
else
return;
}
comServer->AddItem();
SetDetailValue("RpodLine",IntToStr(j)); //请购单行号
SetDetailValue("RpodCode",frmRpoh->seRpohCode->Text); //请购单号
SetDetailValue("RpodGoodsCode",sgRpod->Cells[3][i]);
SetDetailValue("GoodsName",sgRpod->Cells[4][i]);
SetDetailValue("GoodsSpec",sgRpod->Cells[5][i]); //货物名称
SetDetailValue("RpodUnitCode",sgRpod->Cells[6][i]); //采购单位
SetDetailValue("RpodConvRate","1"); //换算比率
SetDetailValue("RpodFrom","2"); //需求来源
if(sgRpod->Cells[9][i] == "")
throw Exception("请输入请购数量");
SetDetailValue("RpodQty",sgRpod->Cells[9][i]); //请购数量
//DONE:QUES.521 Modified 9-4 增加请购单价栏
if(sgRpod->Cells[10][i] == "")
throw Exception("请输入请购单价");
SetDetailValue("RpodPrice",sgRpod->Cells[10][i]); //单价
//DONE:BUG NO 737 FIXED 9-10
//根据请购单价和数量计算行金额
SetDetailValue("RpodAmt",
DataCarry(StrToFloat(sgRpod->Cells[9][i])*StrToFloat(sgRpod->Cells[10][i]),2,0)); //金额
//========= END OF FIX ==========
SetDetailValue("RpodStatus","2"); //行状态
SetDetailValue("RpodPQty","0"); //生成数量
SetDetailValue("RpodReqDate",sgRpod->Cells[2][i]); //需求日期
SetDetailValue("RpodRecDate",sgRpod->Cells[2][i]); //交货日期
SetDetailValue("RpodLocCode",""); //入库货位
SetDetailValue("RpodDept",""); //需求部门
SetDetailValue("RpodDesc","");
//备注
comServer->AddToObject();
j=j+1;
}
}
}
catch(Exception &e)
{
comServer->FreeItem();
this->ModalResult=0;
throw Exception(e.Message);
}
}
}
__finally
{
EndWaitForm();
}
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::btnCancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::FormShow(TObject *Sender)
{
InitControlGroup();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::InitControlGroup()
{
sgRpod->RowCount = 1;
FSupplyCode=frmRpoh->scRpohSupplyCode->ItemData[1];
seRpohSupply->Text=frmRpoh->scRpohSupplyCode->ItemData[0];
seRpohSupply->Enabled=false;
deEndDate->Text="";
seRpohGoods->Text="";
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmRpod::GetSqlString()
{
AnsiString s_SQL,s_Temp;
TComResultSet * TempRes = new TComResultSet(Handle,g_ClientHandle);
TempRes->Open("select parametercode,parametervalue from sdparameter where parametercode = '10302' and parametervalue =1","parametercode");
//if need goodsbuyer
s_SQL =" Select BplanRDate,BplanGoods,GoodsName,goodsspec,BplanUnit,BplanQty,BplanRQty,DQty=BplanQty-BplanRQty,goodsbuyer";
s_SQL+=" from sdBplan,sdGoods,sdPgd ";
s_SQL+=" where BplanGoods = GoodsCode and BplanGoods = PgdGoodsCode and BplanCheck=1 and BplanQty>BplanRQty ";
s_Temp="";
if(seRpohSupply->Text!=""&&CBSupply->Checked==true)
s_Temp+=" and PgdSupplyCode='"+FSupplyCode+"' ";
if(seRpohGoods->Text != "")
s_Temp+=" and GoodsCode ='"+seRpohGoods->Text+"'";
if(deBegDate->Text != ""&&CBBDate->Checked==true)
s_Temp+=" and BplanDate >='"+FormatDateTime("yyyy-mm-dd",StrToDateTime(deBegDate->Text))
+"'"; //DONE:: RDate->Date
if(TempRes->RecordCount >0)
s_Temp+=" and goodsbuyer = ' "+g_sdUserCode+" '";
//filter for supplybuyer
if(deEndDate->Text != ""&&CBEDate->Checked ==true)
// s_Temp+=" and BplanRDate <='"+deEndDate->Text+"'";
s_Temp+=" and BplanRDate <='"+FormatDateTime("yyyy-mm-dd",StrToDateTime(deEndDate->Text))
+"'";
//s_Temp+="group by bplangoods";
//============END==============;====
s_SQL+=s_Temp;
return(s_SQL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::FillGridWithData()
{
AnsiString ItemStr,s_SQL;
s_SQL =GetSqlString();
sgRpod->RowCount=1;
TComResultSet *RsRpod;
RsRpod=new TComResultSet(Handle, g_ClientHandle);
RsRpod->Open(s_SQL,"");
while( RsRpod->Eof == 0)
{
ItemStr = "\t"+AnsiString("") +
"\t"+RsRpod->FieldByName("BplanRDate")+
"\t"+RsRpod->FieldByName("BplanGoods")+
"\t"+RsRpod->FieldByName("GoodsName")+
"\t"+RsRpod->FieldByName("GoodsSpec")+
"\t"+RsRpod->FieldByName("BplanUnit")+
"\t"+RsRpod->FieldByName("BplanQty")+
"\t"+RsRpod->FieldByName("BplanRQty")+
"\t"+RsRpod->FieldByName("DQty")+
//DONE:QUES.521 Modified 9-4
"\t"+"0";
//====== END ========
sgRpod->AddItem(ItemStr);
RsRpod->MoveNext();
}
RsRpod->Close();
delete RsRpod;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::GetComObject(TComServer *comServerPtr)
{
comServer = comServerPtr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::sgRpodDblClick(TObject *Sender)
{
int ARow=sgRpod->Row;
int ACol=sgRpod->Col;
if (ARow > 0 && ACol == 1)
{
if (sgRpod->Cells[1][ARow] == "√")
{
sgRpod->Cells[1][ARow] = "";
for (int i=1;i<sgRpod->RowCount;i++)
{
if(sgRpod->Cells[1][i]=="√")
{
btnOK->Enabled=true;
break;
}
else
btnOK->Enabled=false;
}
}
else
{
sgRpod->Cells[1][ARow] = "√";
btnOK->Enabled = true;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::bbQueryClick(TObject *Sender)
{
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::bbAllClick(TObject *Sender)
{
if(sgRpod->RowCount <=1)
return;
for(int i=1;i<sgRpod->RowCount;i++)
sgRpod->Cells[1][i] = "√";
btnOK->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::bbNoneClick(TObject *Sender)
{
for(int i=1;i<sgRpod->RowCount;i++)
sgRpod->Cells[1][i] = " ";
btnOK->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::sgRpodSelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if(sgRpod->Cells[1][ARow]=="√")
sgRpod->ReadOnly=false;
else
sgRpod->ReadOnly=true;
}
//---------------------------------------------
AnsiString __fastcall TfrmRpod::GetDetailValue(AnsiString fieldname)
{
Variant vTmp;
vTmp=comServer->DataSet->GetItemValue(fieldname);
if(vTmp.IsNull())
return "";
else
return AnsiString(vTmp);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRpod::SetDetailValue(AnsiString fieldname,Variant value)
{
comServer->DataSet->SetDetailValue(fieldname,value);
}
//----------------------------------------------------------------------------
void __fastcall TfrmRpod::seRpohGoodsButtonClick(TObject *Sender)
{
AnsiString SqlStr;
TComResultSet * TempRes = new TComResultSet(Handle,g_ClientHandle);
TempRes->Close();
TempRes->Open("select parametercode,parametervalue from sdparameter where parametercode = '10302' and parametervalue=1","Parametercode");
if(TempRes->RecordCount>0)
SqlStr+=" goodsbuyer = '"+g_sdUserCode+"'";//过滤条件
else
SqlStr="";
if(OpenGoodsForm(SqlStr))
{
seRpohGoods->Text=GetGoodsValue(gtOpenForm,"GoodsCode");
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?