csh510_02.pas.svn-base
来自「一个用Delphi开发的ERP软件」· SVN-BASE 代码 · 共 996 行 · 第 1/3 页
SVN-BASE
996 行
qryCsh500.Open;
if AcctNo=0 then
begin
qryCsh500.Locate('C500_003;C500_004',VarArrayOf([ADate,ABillNo]),[]);
end else
qryCsh500.Locate('C500_001;C500_003;C500_004',VarArrayOf([AcctNo,ADate,ABillNo]),[]);
qryCsh500.EnableControls;
qryCsh500AfterScroll(qryCsh500);
end;
procedure TCsh510_02Form.SetInterface;
begin
Caption:=GetDBString('CSH51002001'); //收支单
lblCode.Caption:=GetDBString('CSH51002002'); //原始单号
lblAcct.Caption:=GetDBString('CSH51002003'); //帐户名称
lblFrom.Caption:=GetDBString('CSH51002004'); //来源类型
lblObj.Caption:=GetDBString('CSH51002005'); //对象类型
lblCust.Caption:=GetDBString('CSH51002006'); //对象编号
lblClass.Caption:=GetDBString('CSH51002007'); //业务类别
lblRemark.Caption:=GetDBString('CSH51002008'); //摘要说明
lblBillNo.Caption:=GetDBString('CSH51002009'); //单据编号
lblDate.Caption:=GetDBString('CSH51002010'); //收支日期
lblAmount.Caption:=GetDBString('CSH51002011'); //收支金额
lblProject.Caption:=GetDBString('CSH51002012'); //项目名称
lblDept.Caption:=GetDBString('CSH51002013'); //部门名称
lblName.Caption:=Caption;
cbType.Clear;
cbType.Items.Add(GetDBString('CSH51002014')); //收入单
cbType.Items.Add(GetDBString('CSH51002015')); //支出单
cbType.Items.Add(GetDBString('CSH51002017')); //借入单
cbType.Items.Add(GetDBString('CSH51002018')); //借出单
cbType.Items.Add(GetDBString('CSH51002019')); //还入单
cbType.Items.Add(GetDBString('CSH51002020')); //还出单
cbType.ItemIndex:=0;
cbFrom.Clear;
cbFrom.Items.Add(GetDBString('CSH51002021')); //手工输入
cbFrom.Items.Add(GetDBString('CSH51002022')); //销售定单
cbFrom.Items.Add(GetDBString('CSH51002023')); //采购定单
cbFrom.Items.Add(GetDBString('CSH51002016')); //任务工单
cbFrom.ItemIndex:=0;
cbObj.Clear;
cbObj.Items.Add(GetDBString('CSH51002024')); //客户
cbObj.Items.Add(GetDBString('CSH51002025')); //员工
cbObj.Items.Add(GetDBString('CSH51002026')); //空白
cbObj.ItemIndex:=2;
bbtnBack.Caption:=GetDBString('CSH51002027'); //上一步(&B)
bbtnNext.Caption:=GetDBString('CSH51002028'); //下一步(&N)
PageControl1.ActivePageIndex:=0;
qryOrd150FCode.DisplayLabel:=GetDBString('CSH51002029'); //编号
qryOrd150FName.DisplayLabel:=GetDBString('CSH51002030'); //名称
qryTas520.FieldByName('T520_001').DisplayLabel:=GetDBString('CSH51002031'); //工单编号
qryTas520.FieldByName('T520_002').DisplayLabel:=GetDBString('CSH51002032'); //任务编号
qryTas520.FieldByName('T510_002').DisplayLabel:=GetDBString('CSH51002033'); //任务名称
end;
procedure TCsh510_02Form.FormCreate(Sender: TObject);
begin
inherited;
SetInterface;
qryCsh140.Open;
qryCsh150.Open;
qryHrm100.Open;
qryOrd150.Open;
edtDate.Date:=GetServerDate;
//取单据编号
edtBillNo.Text:=GetBillNo(edtDate.Date);
end;
procedure TCsh510_02Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryCsh140.Close;
qryOrd150.Close;
qryCsh150.Close;
qryHrm100.Close;
qryCsh500.Close;
end;
//检查数据有效性
procedure TCsh510_02Form.CheckData;
var
AStartDate:TDateTime;
ABalance:Double;
begin
if cbAcct.Text='' then
begin
ShowMsg('UMS10000176'); //帐户名称不能为空
PageControl1.ActivePageIndex:=0;
cbAcct.SetFocus;
Abort;
end;
//取得帐户编号及建帐日期
qryQuery.Close;
qryQuery.SQL.Clear;
qryQuery.SQL.Add('select C550_001,C550_007 from CSH550 where C550_002='+''''+cbAcct.Text+'''');
qryQuery.Open;
AccNo:=qryQuery.Fields[0].Value;
AStartDate:=qryQuery.Fields[1].Value;
if edtWork.Visible then
begin
if trim(edtCust.Text)='' then
begin
ShowMsg('UMS10000241'); //工单编号不能空
edtWork.SetFocus;
Abort;
end;
edtWorkExit(edtWork);
end;
//检验类别的合法性
if cbClass.Text='' then
begin
ShowMsg('UMS10000158'); //类别不能为空
PageControl1.ActivePageIndex:=0;
cbClass.SetFocus;
Abort;
end;
if edtCust.Enabled then
begin
if trim(edtCust.Text)='' then
begin
ShowMsg('UMS10000590'); //对象编号不能为空
edtCust.SetFocus;
Abort;
end;
edtCustExit(edtCust);
end;
//检验票据编号的合法性
if edtBillNo.Text='' then
begin
ShowMsg('UMS10000159'); //票据编号不能为空
PageControl1.ActivePageIndex:=0;
edtBillNo.SetFocus;
Abort;
end;
try
StrToInt(edtBillNo.Text); //单据编号
except
ShowMsg('UMS10000160'); //无效的票据编号,编号只能为数字
PageControl1.ActivePageIndex:=0;
edtBillNo.SetFocus;
Abort;
end;
if StrToInt(edtBillNo.Text)<=0 then
begin
ShowMsg('UMS10000161'); //无效的票据编号,编号不能为负数或零
PageControl1.ActivePageIndex:=0;
edtBillNo.SetFocus;
Abort;
end;
//如果单据编号没有修改,则不检查票据编号是否重复
if AOldBillNo<>StrToInt(edtBillNo.Text) then
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select 1 from CSH500 where C500_003='+GetDateString(edtDate.Date)+' and C500_004='+edtBillNo.Text);
SYSDM.qryQuery.Open;
if not SYSDM.qryQuery.IsEmpty then
begin
ShowMsg('UMS10000162'); //票据编号重复,请重新输入
PageControl1.ActivePageIndex:=0;
edtBillNo.SetFocus;
Abort;
end;
end;
//检验日期的合法性
if edtDate.Text='' then
begin
ShowMsg('UMS10000163'); //日期不能为空
PageControl1.ActivePageIndex:=0;
edtDate.SetFocus;
Abort;
end;
if edtDate.Date<AStartDate then
begin
ShowMsg('UMS10000164'); //日期不能小于建帐日期
PageControl1.ActivePageIndex:=0;
edtDate.SetFocus;
Abort;
end;
//检验金额的合法性
if edtAmount.Text='' then
begin
ShowMsg('UMS10000165'); //金额不能为空
PageControl1.ActivePageIndex:=0;
edtAmount.SetFocus;
Abort;
end;
try
StrToFloat(edtAmount.Text);
except
ShowMsg('UMS10000166'); //无效的金额,金额只能为数字
PageControl1.ActivePageIndex:=0;
edtAmount.SetFocus;
Abort;
end;
if StrToFloat(edtAmount.Text)=0 then
begin
ShowMsg('UMS10000167'); //金额不能为零
PageControl1.ActivePageIndex:=0;
edtAmount.SetFocus;
Abort;
end;
//允许记帐时收入支出金额为负数
if GetSysParams('CSH0002')='N' then
begin
if StrToFloat(edtAmount.Text)<0 then
begin
ShowMsg('UMS10000186'); //金额不能为负数
PageControl1.ActivePageIndex:=0;
edtAmount.SetFocus;
Abort;
end;
end;
if cbType.ItemIndex in [1,3,5] then //支出
begin
//取得帐户的余额
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select top 1 C500_014 from CSH500 where C500_001='+IntToStr(AccNo)+' order by C500_001, C500_003 desc, C500_004 desc');
SYSDM.qryQuery.Open;
ABalance:=SYSDM.qryQuery.Fields[0].Value;
if AMode='ADD' then
begin
//允许帐户余额为负数
if GetSysParams('CSH0001')='N' then
begin
if StrToFloat(edtAmount.Text)>ABalance then
begin
ShowMsg('UMS10000168'); //金额不能大于帐户余额
PageControl1.ActivePageIndex:=0;
edtAmount.SetFocus;
Abort;
end;
end;
end
else if AMode='UPD' then
begin
//允许帐户余额为负数
if GetSysParams('CSH0001')='N' then
begin
if StrToFloat(edtAmount.Text)-AOldAmount>ABalance then
begin
ShowMsg('UMS10000168'); //金额不能大于帐户余额
PageControl1.ActivePageIndex:=0;
edtAmount.SetFocus;
Abort;
end;
end;
end;
end;
end;
procedure TCsh510_02Form.bbtnSaveClick(Sender: TObject);
begin
//保存
//检验输入的数据
CheckData;
if PageControl1.ActivePageIndex=1 then
begin
if dxDBGrid1FFactAmt.SummaryFooterValue=0 then
begin
ShowMsg('UMS10000167'); //金额不能为零
PageControl1.ActivePageIndex:=1;
Abort;
end;
edtAmount.Text:=FloatToStr(dxDBGrid1FFactAmt.SummaryFooterValue);
end;
//保存数据
try
SYSDM.ADOC.BeginTrans;
SaveData;
SYSDM.ADOC.CommitTrans;
except
SYSDM.ADOC.RollbackTrans;
ShowMsg(SYSDM.ADOC.Errors[0].Description,1);
Abort;
end;
PageControl1.ActivePageIndex:=0;
//新增模式下则继续新增下一条记录,否则关闭
if AMode='ADD' then
begin
SetEmptyInit;
cbType.SetFocus;
end else
begin
Close;
end;
inherited;
end;
procedure TCsh510_02Form.edtDateCloseUp(Sender: TObject);
begin
inherited;
//取票据编号
edtBillNo.Text:=GetBillNo(edtDate.Date);
end;
procedure TCsh510_02Form.edtDateExit(Sender: TObject);
begin
inherited;
//取票据编号
edtBillNo.Text:=GetBillNo(edtDate.Date);
end;
procedure TCsh510_02Form.sbCustClick(Sender: TObject);
begin
inherited;
//对象编号
if not edtCust.Focused then edtCust.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryOrd150,nil);
if HwSelDataForm.ShowModal=1 then
begin
edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;
edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;
edtCust1.Text:=qryOrd150.FieldByName('FCode').AsString;
edtCustName1.Text:=qryOrd150.FieldByName('FName').AsString;
end;
end;
procedure TCsh510_02Form.cbFromChange(Sender: TObject);
begin
inherited;
bbtnBack.Enabled:=False;
bbtnBack.Visible:=cbFrom.ItemIndex in [1,2];
bbtnNext.Visible:=bbtnBack.Visible;
bbtnSave.Visible:=not bbtnNext.Visible;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?