📄 tas530_02.pas
字号:
qryTas533.SQL.Add('from TAS533,ORD510B,INV150,INV140');
qryTas533.SQL.Add('where T533_002=O510B_001 and T533_003=O510B_002 and O510B_003=I150_001 and');
qryTas533.SQL.Add(' O510B_004=I140_001 and T533_001='+''''+edtCode.Text+'''');
qryTas533.SQL.Add('order by O510B_002');
qryTas533.Open;
while not qryTas533.Eof do
begin
adsTas533.Append;
adsTas533.FieldByName('FOrder').Value:=qryTas533.FieldByName('T533_002').Value;
adsTas533.FieldByName('FLine').Value:=qryTas533.FieldByName('T533_003').Value;
adsTas533.FieldByName('FItemNo').Value:=qryTas533.FieldByName('I150_001').Value;
adsTas533.FieldByName('FItemID').Value:=qryTas533.FieldByName('I150_002').Value;
adsTas533.FieldByName('FItemName').Value:=qryTas533.FieldByName('I150_003').Value;
adsTas533.FieldByName('FItemSpec').Value:=qryTas533.FieldByName('I150_004').Value;
adsTas533.FieldByName('FUnitName').Value:=qryTas533.FieldByName('I140_003').Value;
adsTas533.FieldByName('FQty').Value:=qryTas533.FieldByName('T533_004').Value;
adsTas533.FieldByName('FRemark').Value:=qryTas533.FieldByName('T533_005').Value;
adsTas533.FieldByName('FItemPrice').Value:=qryTas533.FieldByName('T533_006').Value;
adsTas533.FieldByName('FTotal').Value:=qryTas533.FieldByName('T533_007').Value;
adsTas533.Post;
qryTas533.Next;
end;
if not Active then Exit;
if ActSave.Enabled then Exit;
ActNext.Enabled:=not qryTas530.Eof;
ActLast.Enabled:=not qryTas530.Eof;
ActFirst.Enabled:=not qryTas530.Bof;
ActPrior.Enabled:=not qryTas530.Bof;
end;
procedure TTas530_02Form.SaveData;
//取得原因说明的保存格式
function GetReason:string;
var
S:String;
begin
if not adsTas110.Active then Exit;
adsTas110.First;
while not adsTas110.Eof do
begin
if adsTas110.FieldByName('FSelected').Value then
S:=S+','+'['+adsTas110.FieldByName('T110_001').AsString+']';
adsTas110.Next;
end;
Delete(S,1,1);
Result:=S;
end;
var
ADate:TDateTime;
AVendNo,AContinue:Integer;
AFlag:Boolean;
begin
inherited;
//确定(&O)
AVendNo:=0;
if edtCode.Enabled then
begin
if (trim(edtCode.Text)='') and (not AIsAutoCode) then
begin
ShowMsg('UMS10000293'); //汇报编号不能为空
edtCode.SetFocus;
Abort;
end;
if AOldCode<>edtCode.Text then
begin
if IsExists('select 1 from TAS530 where T530_001='+''''+edtCode.Text+'''') then
begin
ShowMsg('UMS10000294'); //汇报编号已存在,请重新输入
edtCode.SetFocus;
Abort;
end;
end;
end;
if trim(edtWork.Text)='' then
begin
ShowMsg('UMS10000283'); //工单编号不能为空
edtWork.SetFocus;
Abort;
end;
if AOldWork<>edtWork.Text then
begin
if not qryTas520.Locate('T520_001',edtWork.Text,[]) then
begin
ShowMsg('UMS10000290'); //输入的工单编号无效
edtWork.SetFocus;
Abort;
end;
end;
if trim(edtVendor.Text)<>'' then
begin
if not qryOrd150.Locate('O150_002',edtVendor.Text,[]) then
begin
ShowMsg('UMS10000298'); //输入的协助公司无效
edtVendor.SetFocus;
Abort;
end;
AVendNo:=qryOrd150.FieldByName('O150_001').Value;
if trim(edtSupport.Text)='' then
begin
ShowMsg('UMS10000299'); //协助人员不能为空
edtSupport.SetFocus;
Abort;
end;
if (trim(edtSupportDays.Text)='') or (trim(edtSupportDays.Text)='0') then
begin
ShowMsg('UMS10000300'); //协助工时不能为空或零
edtSupportDays.SetFocus;
Abort;
end;
end;
if trim(memDetails.Text)='' then
begin
ShowMsg('UMS10000312'); //汇报内容不能为空
PageControl1.ActivePageIndex:=0;
memDetails.SetFocus;
Abort;
end;
if cbContinue.Text='' then
begin
ShowMsg('UMS10000313'); //后续处理不能为空
PageControl1.ActivePageIndex:=0;
cbContinue.SetFocus;
Abort;
end;
AContinue:=0;
if qryTas120.Locate('T120_003',cbContinue.Text,[]) then
AContinue:=qryTas120.FieldByName('T120_001').Value;
if tsHours.TabVisible then
begin
if adsTas531.State in [dsInsert,dsEdit] then adsTas531.Post;
if adsTas531.IsEmpty then
begin
ShowMsg('UMS10000402'); //工时信息不能为空
PageControl1.ActivePageIndex:=1;
Abort;
end;
wwDBGrid1UpdateFooter(wwDBGrid1);
end;
AFlag:=False;
if adsTas533.State in [dsInsert,dsEdit] then adsTas533.Post;
if not adsTas533.IsEmpty then
begin
adsTas533.DisableControls;
adsTas533.First;
while not adsTas533.Eof do
begin
if adsTas533.FieldByName('FQty').AsFloat<>0 then AFlag:=True;
adsTas533.Next;
end;
adsTas533.EnableControls;
if not AFlag then
begin
//信息为零的时候
if GetSysParams('TAS0018')='N' then
begin
ShowMsg('UMS10000631'); //计费信息不能为空
PageControl1.ActivePageIndex:=3;
Abort;
end;
end;
end;
qryTas531.Close;
qryTas531.SQL.Clear;
qryTas531.SQL.Add('delete from TAS531 where T531_001='+''''+edtCode.Text+'''');
qryTas531.ExecSQL;
qryTas533.Close;
qryTas533.SQL.Clear;
qryTas533.SQL.Add('delete from TAS533 where T533_001='+''''+edtCode.Text+'''');
qryTas533.ExecSQL;
if AMode='ADD' then
begin
qryTas530.Insert;
qryTas530.FieldByName('T530_011').AsString:=edtCreateDate.Text; //制单日期
qryTas530.FieldByName('T530_012').AsString:=edtCreateBy.Text; //制单人员
qryTas530.FieldByName('T530_013').AsString:=edtUpdateDate.Text; //修改日期
qryTas530.FieldByName('T530_014').AsString:=edtUpdateBy.Text; //修改人员
end else
begin
ADate:=GetServerDate;
qryTas530.Edit;
qryTas530.FieldByName('T530_013').Value:=ADate; //修改日期
qryTas530.FieldByName('T530_014').Value:=AUserName; //修改人员
end;
qryTas530.FieldByName('T530_002').Value:=edtWork.Text; //工单编号
qryTas530.FieldByName('T530_003').AsString:=edtPercent.Text; //完工比率
qryTas530.FieldByName('T530_004').AsString:=edtDays.Text; //汇报工时
qryTas530.FieldByName('T530_005').Value:=edtFromDate.Date; //开始日期
qryTas530.FieldByName('T530_006').Value:=edtToDate.Date; //结束日期
qryTas530.FieldByName('T530_007').Value:=cbUnit.ItemIndex; //时间单位
qryTas530.FieldByName('T530_008').Value:=memDetails.Text; //汇报内容
qryTas530.FieldByName('T530_009').Value:=edtDelay.Text; //拖期原因
qryTas530.FieldByName('T530_010').Value:=AContinue; //后续处理
qryTas530.FieldByName('T530_015').Value:=GetReason; //原因说明 取得原因说明的保存格式
if AVendNo<>0 then
begin
qryTas530.FieldByName('T530_016').Value:=AVendNo; //协助公司
qryTas530.FieldByName('T530_017').Value:=edtSupport.Text; //协助人员
qryTas530.FieldByName('T530_018').Value:=edtSupportDays.Text;//协助工时
end else
begin
qryTas530.FieldByName('T530_016').Value:=null; //协助公司
qryTas530.FieldByName('T530_017').Value:=null; //协助人员
qryTas530.FieldByName('T530_018').Value:=null; //协助工时
end;
try
if (edtCode.Text='') and (AIsAutoCode) then edtCode.Text:=GetAutoCode('TAS530');
if AOldCode<>edtCode.Text then qryTas530.FieldByName('T530_001').Value:=edtCode.Text; //汇报编号
qryTas530.Post;
qryTas531.Close;
qryTas531.SQL.Clear;
qryTas531.SQL.Add('select * from TAS531 where T531_001='+''''+edtCode.Text+'''');
qryTas531.Open;
adsTas531.First;
while not adsTas531.Eof do
begin
qryTas531.Append;
qryTas531.FieldByName('T531_001').Value:=edtCode.Text;
qryTas531.FieldByName('T531_002').Value:=adsTas531.FieldByName('FID').Value;
qryTas531.FieldByName('T531_003').Value:=adsTas531.FieldByName('FDate').Value;
qryTas531.FieldByName('T531_004').Value:=adsTas531.FieldByName('FFromTime').Value;
qryTas531.FieldByName('T531_005').Value:=adsTas531.FieldByName('FToTime').Value;
qryTas531.FieldByName('T531_006').Value:=adsTas531.FieldByName('FHours').Value;
qryTas531.FieldByName('T531_007').Value:=adsTas531.FieldByName('FOT').Value;
qryTas531.FieldByName('T531_008').Value:=adsTas531.FieldByName('FRemark').Value;
qryTas531.FieldByName('T531_009').Value:=adsTas531.FieldByName('FStartTime').Value;
qryTas531.FieldByName('T531_010').Value:=adsTas531.FieldByName('FEndTime').Value;
qryTas531.FieldByName('T531_011').Value:=adsTas531.FieldByName('FTripHour').Value;
qryTas531.Post;
adsTas531.Next;
end;
if tsItems.TabVisible then
begin
qryTas532.First;
while not qryTas532.Eof do
begin
qryTas532.Edit;
qryTas532.FieldByName('T532_001').Value:=edtCode.Text;
qryTas532.Post;
qryTas532.Next;
end;
qryTas532.UpdateBatch;
end;
qryTas533.Close;
qryTas533.SQL.Clear;
qryTas533.SQL.Add('select * from TAS533 where T533_001='+''''+edtCode.Text+'''');
qryTas533.Open;
adsTas533.First;
while not adsTas533.Eof do
begin
qryTas533.Append;
qryTas533.FieldByName('T533_001').Value:=edtCode.Text; //汇报编号
qryTas533.FieldByName('T533_002').Value:=adsTas533.FieldByName('FOrder').Value; //销售单号
qryTas533.FieldByName('T533_003').Value:=adsTas533.FieldByName('FLine').Value; //定单行号
qryTas533.FieldByName('T533_004').Value:=adsTas533.FieldByName('FQty').Value; //发货数量
qryTas533.FieldByName('T533_005').Value:=adsTas533.FieldByName('FRemark').Value; //备注说明
qryTas533.FieldByName('T533_006').Value:=adsTas533.FieldByName('FItemPrice').Value; //销售单价
qryTas533.FieldByName('T533_007').Value:=adsTas533.FieldByName('FTotal').Value; //销售总额
qryTas533.FieldByName('T533_008').Value:=0;//发票金额
qryTas533.FieldByName('T533_009').Value:=0;//收款折扣
qryTas533.FieldByName('T533_010').Value:=adsTas533.FieldByName('FTotal').Value;//应开票额
qryTas533.FieldByName('T533_011').Value:=0;//已收金额
qryTas533.Post;
adsTas533.Next;
end;
UpdateWorksInfo(edtWork.Text); //更新任务工单信息(实际工时、实际开始日期、实际结束日期)
if (AOldWork<>'') and (AOldWork<>edtWork.Text) then UpdateWorksInfo(AOldWork);
SetButtonState(False);
ActRefresh.Execute;
qryTas530AfterScroll(qryTas530);
if AMode='ADD' then
begin
if ShowDialog('['+edtCode.Text+'] '+GetDBString('UMS10000309'),1)=IDYES then //记录保存成功,是否继续增加新记录?
begin
ActInsert.Execute;
end;
end;
except
ShowMsg(SYSDM.ADOC.Errors[0].Description,1);
Abort;
end;
end;
procedure TTas530_02Form.qryTas530T530_007GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
if qryTas530.IsEmpty then Exit;
case Sender.AsInteger of
0:Text:=AUnit[0]; //时
1:Text:=AUnit[1]; //天
2:Text:=AUnit[2]; //周
3:Text:=AUnit[3]; //月
end;
end;
procedure TTas530_02Form.edtDaysExit(Sender: TObject);
begin
inherited;
try
if trim(edtDays.Text)='' then edtDays.Text:='1';
StrToFloat(edtDays.Text);
except
ShowMsg('UMS10000322'); //输入的值无效,请输入数字
Abort;
end;
end;
procedure TTas530_02Form.qryTas530CalcFields(DataSet: TDataSet);
var
ACustNo,AItemNo:Integer;
AMacNo:string;
ACustomerInfo:TCustomerInfo;
begin
inherited;
ACustNo:=qryTas530T510_016.Value;
AItemNo:=qryTas530T510_017.Value;
AMacNo:=qryTas530T510_018.Value;
GetCustomerInfo(ACustNo,AItemNo,AMacNo,ACustomerInfo);
qryTas530O150_005.Value:=ACustomerInfo.CustPhone;
qryTas530O150_007.Value:=ACustomerInfo.CustEmail;
qryTas530O150_012.Value:=ACustomerInfo.CustAddress;
qryTas530O151_002.Value:=ACustomerInfo.CustContact;
qryTas530O151_004.Value:=ACustomerInfo.CustPosition;
end;
procedure TTas530_02Form.mmiAdd1Click(Sender: TObject);
begin
inherited;
//新增工时记录
adsTas531.Append;
end;
procedure TTas530_02Form.mmiEdit1Click(Sender: TObject);
be
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -