📄 tascomm.pas.svn-base
字号:
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select top 1 T520_009 from TAS520 where T520_009 is not null and T520_002='+''''+ATaskID+''''+' order by T520_009');
SYSDM.qryQuery.Open;
if (SYSDM.qryQuery.IsEmpty) or (SYSDM.qryQuery.Fields[0].IsNull) then
AFactFromDate:=0
else
AFactFromDate:=SYSDM.qryQuery.Fields[0].Value;
//实际完成日期
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select top 1 T520_010 from TAS520,TAS530 where T520_010 is not null and T520_001=T530_002 and T530_010=3 and T520_002='+''''+ATaskID+''''+' order by T520_009 desc');
SYSDM.qryQuery.Open;
if (SYSDM.qryQuery.IsEmpty) or (SYSDM.qryQuery.Fields[0].IsNull) then
AFactToDate:=0
else
AFactToDate:=SYSDM.qryQuery.Fields[0].Value;
//更新任务计划实际工时、工单总数
ACust:=0;
AItem:=0;
AMacNo:='';
AClass:=0;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from TAS510 where T510_001='+''''+ATaskID+'''');
SYSDM.qryQuery.Open;
if not SYSDM.qryQuery.IsEmpty then
begin
SYSDM.qryQuery.Edit;
SYSDM.qryQuery.FieldByName('T510_003').Value:=AStatus; //任务状态
SYSDM.qryQuery.FieldByName('T510_013').Value:=ADays; //实际工时
SYSDM.qryQuery.FieldByName('T510_015').Value:=ACount; //工单总数
if (SYSDM.qryQuery.FieldByName('T510_025').AsString='') and (AFromDate<>0) then
SYSDM.qryQuery.FieldByName('T510_025').Value:=AFromDate; //预计开始日期
if (SYSDM.qryQuery.FieldByName('T510_026').AsString='') and (AToDate<>0) then
SYSDM.qryQuery.FieldByName('T510_026').Value:=AToDate; //预计完成日期
if AFactFromDate=0 then SYSDM.qryQuery.FieldByName('T510_027').AsString:='' else SYSDM.qryQuery.FieldByName('T510_027').Value:=AFactFromDate; //实际开始日期
if AFactToDate=0 then SYSDM.qryQuery.FieldByName('T510_028').AsString:='' else if AStatus=3 then SYSDM.qryQuery.FieldByName('T510_028').Value:=AFactToDate; //实际完成日期
SYSDM.qryQuery.Post;
ACust:=SYSDM.qryQuery.FieldByName('T510_016').AsInteger;
AItem:=SYSDM.qryQuery.FieldByName('T510_017').AsInteger;
AMacNo:=SYSDM.qryQuery.FieldByName('T510_018').AsString;
AClass:=SYSDM.qryQuery.FieldByName('T510_004').AsInteger;
//更新来源单据的相关信息
AOrderID:=SYSDM.qryQuery.FieldByName('T510_009').AsString;
if AOrderID<>'' then
begin
case SYSDM.qryQuery.FieldByName('T510_008').AsInteger of
0:UpdateOrderInfo(AOrderID,1);
1:UpdateCallInfo(AOrderID,1);
2:UpdateProjectInfo(AOrderID);
end;
end;
end;
//任务完成时,反写客户资料的产品信息(安装日期、保养日期)
//仅反写“安装”任务,且为新机的机床(安装日期为空即表示为新机)
if (GetSysParams('TAS0014')='Y') and (AClass=StrToInt(GetSysParams('TAS0017'))) then
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select O153_006 from ORD153 where O153_001='+IntToStr(ACust)+' and O153_002='+IntToStr(AItem)+' and O153_003='+''''+AMacNo+'''');
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then Exit;
if SYSDM.qryQuery.FieldByName('O153_006').AsString<>'' then Exit; //安装日期不为空时退出
ADate:=AFactToDate;
DecodeDate(ADate,AYear,AMonth,ADay);
ADate:=EncodeDate(AYear+1,AMonth,ADay)-1;
AInsDate:=GetDateString(AFactToDate);
AEndDate:=GetDateString(ADate);
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
if AFactToDate<>0 then
SYSDM.qryQuery.SQL.Add('update ORD153 set O153_006='+AInsDate+',O153_007='+AInsDate+',O153_008='+AEndDate+' where O153_001='+IntToStr(ACust)+' and O153_002='+IntToStr(AItem)+' and O153_003='+''''+AMacNo+'''')
else
SYSDM.qryQuery.SQL.Add('update ORD153 set O153_006=null,O153_007=null,O153_008=null where O153_001='+IntToStr(ACust)+' and O153_002='+IntToStr(AItem)+' and O153_003='+''''+AMacNo+'''');
SYSDM.qryQuery.ExecSQL;
end;
end;
//更新任务工单信息(实际工时、实际开始日期、实际结束日期)
//實際工時=彙報工時*执行人數 反寫任務工單實際工時
//任务汇报单新增、修改、删除时调用
//AWorkID:任务工单编号
procedure UpdateWorksInfo(AWorkID:string);
var
ADays,APercent:Double;
AFromDate,AToDate:TDateTime;
AStatus:Integer;
ATaskID:String;
begin
if AWorkID='' then Exit;
//实际工时
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select sum(T530_004) from TAS530 where T530_002='+''''+AWorkID+'''');
SYSDM.qryQuery.Open;
if (SYSDM.qryQuery.Fields[0].IsNull) or (SYSDM.qryQuery.IsEmpty) then
ADays:=0
else
ADays:=SYSDM.qryQuery.Fields[0].Value;
//实际开始日期
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select top 1 T530_005 from TAS530 where T530_002='+''''+AWorkID+''''+' order by T530_005');
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then AFromDate:=0 else AFromDate:=SYSDM.qryQuery.FieldByName('T530_005').Value;
//实际结束日期
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select top 1 T530_003,T530_006,T530_010 from TAS530 where T530_002='+''''+AWorkID+''''+' order by T530_005 desc');
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.IsEmpty then
begin
AStatus:=2; //执行状态
AToDate:=0;
APercent:=0;
end else
begin
APercent:=SYSDM.qryQuery.FieldByName('T530_003').Value;
AStatus:=SYSDM.qryQuery.FieldByName('T530_010').Value;
if AStatus<>2 then AToDate:=SYSDM.qryQuery.FieldByName('T530_006').Value else AToDate:=0;
end;
//更新任务工单信息
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from TAS520 where T520_001='+''''+AWorkID+'''');
SYSDM.qryQuery.Open;
ATaskID:=SYSDM.qryQuery.FieldByName('T520_002').AsString;
SYSDM.qryQuery.Edit;
if ADays=0 then SYSDM.qryQuery.FieldByName('T520_008').AsString:='' else SYSDM.qryQuery.FieldByName('T520_008').Value:=ADays;
if AFromDate=0 then SYSDM.qryQuery.FieldByName('T520_009').AsString:='' else SYSDM.qryQuery.FieldByName('T520_009').Value:=AFromDate;
if AToDate=0 then SYSDM.qryQuery.FieldByName('T520_010').AsString:='' else SYSDM.qryQuery.FieldByName('T520_010').Value:=AToDate;
SYSDM.qryQuery.Post;
//更新任务计划状态、完工率
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('update TAS510 set T510_003='+IntToStr(AStatus)+',T510_014='+FloatToStr(APercent)+' where T510_001='+''''+ATaskID+'''');
SYSDM.qryQuery.ExecSQL;
//更新任务计划信息(实际工时、工单总数)
UpdateTasksInfo(ATaskID);
end;
//显示执行人员名称
function GetPersonName(APersonNo:string):string;
var
AStringList:TStringList;
I:Integer;
S:String;
begin
if APersonNo='' then Exit;
AStringList:=TStringList.Create;
for I:=1 to Length(APersonNo) do
begin
if Copy(APersonNo,I,1)='[' then
S:=''
else if Copy(APersonNo,I,1)=']' then
begin
AStringList.Add(trim(S));
S:='';
end else
S:=S+Copy(APersonNo,I,1);
end;
for I:=0 to AStringList.Count-1 do
begin
if AStringList[I]<>'' then
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select H150_002,H150_003 from HRM150 where H150_001='+AStringList[I]);
SYSDM.qryQuery.Open;
if SYSDM.qryQuery.FieldByName('H150_002').AsString='Z01' then
S:=''
else
S:=S+','+SYSDM.qryQuery.FieldByName('H150_003').AsString;
end;
end;
Delete(S,1,1);
Result:=S;
end;
//取得所有任务类别
procedure GetAllTasksClass(AcbClass:TComboBox); overload;
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from TAS100');
{ if ASuper then
begin
SYSDM.qryQuery.SQL.Add('select * from TAS100');
end else
begin
SYSDM.qryQuery.SQL.Add('select B.* from SYS500C A, TAS100 B');
SYSDM.qryQuery.SQL.Add('where A.S500C_002=B.T100_001 and A.S500C_003=''TAS'' and A.S500C_004='+GetBoolean(True)+' and A.S500C_001='+IntToStr(AUserID));
end; }
AcbClass.Clear;
AcbClass.Items.Add(GetDBString('TASW0001114')); //所有任务
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
AcbClass.Items.Add(SYSDM.qryQuery.FieldByName('T100_002').AsString);
SYSDM.qryQuery.Next;
end;
AcbClass.ItemIndex:=0;
end;
//取得所有任务类别
procedure GetAllTasksClass(ADataSet:TADODataSet;AcbClass:TComboBox); overload;
begin
ADataSet.Close;
ADataSet.LockType:=ltBatchOptimistic;
ADataSet.FieldDefs.Clear;
ADataSet.FieldDefs.Add('Num',ftInteger,0);
ADataSet.FieldDefs.Add('Name',ftString,100);
ADataSet.FieldDefs.Add('Parent',ftInteger,0);
ADataSet.CreateDataSet;
ADataSet.Append;
ADataSet.FieldByName('Num').Value:=0;
ADataSet.FieldByName('Name').Value:=GetDBString('TASW0001114'); //所有任务
ADataSet.FieldByName('Parent').Value:=0;
ADataSet.Post;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from TAS100');
{ if ASuper then
begin
SYSDM.qryQuery.SQL.Add('select * from TAS100');
end else
begin
SYSDM.qryQuery.SQL.Add('select B.* from SYS500C A, TAS100 B');
SYSDM.qryQuery.SQL.Add('where A.S500C_002=B.T100_001 and A.S500C_003=''TAS'' and A.S500C_004='+GetBoolean(True)+' and A.S500C_001='+IntToStr(AUserID));
end; }
SYSDM.qryQuery.Open;
while not SYSDM.qryQuery.Eof do
begin
ADataSet.Append;
ADataSet.FieldByName('Num').Value:=SYSDM.qryQuery.FieldByName('T100_001').Value;
ADataSet.FieldByName('Name').Value:=SYSDM.qryQuery.FieldByName('T100_002').Value;
ADataSet.FieldByName('Parent').Value:=SYSDM.qryQuery.FieldByName('T100_003').Value;
ADataSet.Post;
SYSDM.qryQuery.Next;
end;
ADataSet.First;
AcbClass.Clear;
while not ADataSet.Eof do
begin
AcbClass.Items.Add(ADataSet.FieldByName('Name').AsString);
ADataSet.Next;
end;
ADataSet.First;
AcbClass.ItemIndex:=0;
end;
//取得有子任务的电脑编号
function GetChildTask(ATasClass:string):string;
var
AStringList:TStringList;
AClassNo:String;
I:Integer;
begin
AStringList:=TStringList.Create;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select T100_001 from TAS100 where T100_002='+''''+ATasClass+'''');
SYSDM.qryQuery.Open;
AClassNo:=SYSDM.qryQuery.Fields[0].AsString;
if AClassNo<>'' then
begin
AStringList.Add(AClassNo);
if HasChild(AClassNo,'TAS100','T100_003') then GetChild(AClassNo,'TAS100','T100_003','T100_001',AStringList);
end;
AClassNo:='';
for I:=0 to AStringList.Count-1 do AClassNo:=AClassNo+','+AStringList[I];
Delete(AClassNo,1,1);
Result:=AClassNo;
end;
//取得汇报工时表中的员工人数
function GetPersons(APersonNo:String):Integer;
var
I:Integer;
S:String;
AStringList:TStringList;
begin
Result:=0;
if APersonNo='' then Exit;
AStringList:=TStringList.Create;
for I:=1 to Length(APersonNo) do
begin
if Copy(APersonNo,I,1)='[' then
S:=''
else if Copy(APersonNo,I,1)=']' then
begin
AStringList.Add(trim(S));
S:='';
end else
S:=S+Copy(APersonNo,I,1);
end;
Result:=AStringList.Count;
AStringList.Free;
end;
function GetDays(ATimeValue:double):double ;
var
ADays:double;
ALeave:double;
begin
ADays:=Int(ATimeValue/8);
ALeave:=ATimeValue-ADays*8;
if ALeave>0 then ADays:=ADays+int(ALeave/4)*0.5;
ALeave:=ATimeValue-ADays*8;
if ALeave>0 then ADays:=ADays+0.5;
Result:=ADays;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -