📄 pm_enter_newfreepasspo.pas
字号:
sqltext:=' update po'
+' set Vendorordinal=case when Vendorordinal>0 then Vendorordinal else '+inttostr(tmpordinal+1)+' end '
+' where pono='+quotedstr(AdoQry_Head.fieldbyname('pono').asstring);
Executesql(AdoQry_tmp,sqltext,1) ;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('PoLineStatus').AsInteger:=6;
AdoQry_Head.fieldbyname('PoLineCheck').AsInteger:=0;
AdoQry_Head.Post;
OperationMOPO(AdoQry_Tmp,Trim(AdoQry_Head.fieldbyname('ItemCode').AsString),'po',5,
Trim(AdoQry_Head.fieldbyname('pono').AsString),AdoQry_Head.fieldbyname('PoLineNo').AsInteger,AdoQry_Head.fieldbyname('POLINESTATUS').AsInteger,
0,AdoQry_Head.fieldbyname('PoQty').Asfloat,
AdoQry_Head.fieldbyname('PONoFinishQty').Asfloat,AdoQry_Head.fieldbyname('POStArtWorkDate').AsString,
AdoQry_Head.fieldbyname('POLineDATE').AsString,AdoQry_Head.fieldbyname('PoType').AsInteger,AdoQry_Head.fieldbyname('VendorCode').AsString );
if AdoQry_Head.fieldbyname('poType').AsInteger=1 then
begin
If IsBomChange(AdoQry_Head.fieldbyname('ItemCode').AsString,AdoQry_Head.fieldbyname('PoDate').AsString) then
begin
SqlText:='Delete OpItemList where pono='''+AdoQry_Head.fieldbyname('pono').AsString+''' '
+' and polineno='''+AdoQry_Head.fieldbyname('polineno').AsString+''' ';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
IF Not NewAutoBuildopListOrder(DbConnect,AdoQry_Head.fieldbyname('PoNo').asString,IntToStr(AdoQry_Head.fieldbyname('PoLineNo').AsInteger),Trim(AdoQry_Head.fieldbyname('ItemCode').AsString),
0,AdoQry_Head.fieldbyname('PoQty').Asfloat) Then //自动产生领料单
Abort;
end;
end;
I:=I+1;
DbConnect.CommitTrans;
AdoQry_Head.Next;
end
Else
begin
I:=I+1;
AdoQry_Head.Next;
end;
Except
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
AdoQry_Head.BookMArk:=BookmArk;
DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
Abort;
end;
AdoQry_Head.BookMArk:=BookmArk;
Flag:=Not Flag;
end;
procedure TFrm_Pm_Enter_NewFreePassPo.CloseRecord;
var
SqlText,BookMArk:String;
I:Integer;
begin
BookMArk:=AdoQry_Head.BookmArk;
I:=1;
AdoQry_Head.First;
DbConnect.beginTrans;
Try
While Not AdoQry_Head.Eof Do
begin
{If AdoQry_Head.fieldbyname('PoNoFinishQty').AsFloat<AdoQry_Head.fieldbyname('POQTY').AsFloat Then
begin
I:=I+1;
AdoQry_Head.Next;
Continue;
end;}
If (AdoQry_Head.fieldbyname('PoLineCheck').AsInteger=1)
And (AdoQry_Head.fieldbyname('PoLineStatus').AsInteger=6) Then
begin
SqlText:=' Select * From PoLine '
+' Where PoNo='''+AdoQry_Head.fieldbyname('PoNo').AsString+''''
+' And PoLineNo='''+IntToStr(AdoQry_Head.fieldbyname('PoLineNo').AsInteger)+'''';
// +' And PoLineStatus=6 and (PoQty=PoNoFinishQty )';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.Open;
If AdoQry_Tmp.Eof Then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条采购订单记录已被删除,请刷新!',3);
exit;
end
else
begin
if AdoQry_Tmp.fieldbyname('PoLineStatus').asfloat<> 6 then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条采购订单记录行状态已被其它用户修改,请刷新!',3);
exit;
end
else
if AdoQry_Tmp.fieldbyname('PoQty').AsString<>AdoQry_Tmp.fieldbyname('PoNoFinishQty').AsString then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条采购订单记录约定交货量不等于未结量,'+chr(13)+'不能取消批准!',3);
exit;
end
else if beendilivered(AdoQry_Head.fieldbyname('pono').asstring,AdoQry_Head.fieldbyname('polineno').asinteger) then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条采购订单行已生产领料,不可取消批准!',3);
exit;
end;
end;
sqlText:=' Select Count(ItemCode) as aa from opItemList '
+' where PoRealQty>0 and pono='''+AdoQry_Head.fieldbyname('Pono').asstring+''' '
+' and polineno='''+AdoQry_Head.fieldbyname('Polineno').asstring+'''';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.clear;
AdoQry_tmp.SQL.Text := sqltext;
AdoQry_tmp.Open ;
if AdoQry_tmp.fieldbyname('aa').asinteger>0 then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条采购订单记录的子项已领料,'+chr(13)+'不能取消批准!',3);
Abort;
end;
SavePoLineHistory('Edit');
SqlText:=' Update PoLine '
+' set PoLineStatus=5,'
+' PassEmployeeCode=null '
+' Where PoLine.PoNo='''+AdoQry_Head.fieldbyname('PoNo').AsString+''''
+' And PoLine.PoLineNo='''+AdoQry_Head.fieldbyname('PoLineNo').AsString+''''
+' And PoLine.PoLineStatus=6';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('PoLineStatus').AsInteger:=5;
AdoQry_Head.fieldbyname('PoLineCheck').AsInteger:=0;
AdoQry_Head.Post;
OperationMOPO(AdoQry_Tmp,Trim(AdoQry_Head.fieldbyname('ItemCode').AsString),'po',5,
Trim(AdoQry_Head.fieldbyname('pono').AsString),AdoQry_Head.fieldbyname('PoLineNo').AsInteger,AdoQry_Head.fieldbyname('POLINESTATUS').AsInteger,
0,AdoQry_Head.fieldbyname('PoQty').Asfloat,
AdoQry_Head.fieldbyname('PONoFinishQty').Asfloat,AdoQry_Head.fieldbyname('POStArtWorkDate').AsString,
AdoQry_Head.fieldbyname('POLineDATE').AsString,AdoQry_Head.fieldbyname('PoType').AsInteger,AdoQry_Head.fieldbyname('VendorCode').AsString );
I:=I+1;
AdoQry_Head.Next;
end
Else
begin
I:=I+1;
AdoQry_Head.Next;
end;
end;
DbConnect.CommitTrans;
Except
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
AdoQry_Head.BookMArk:=BookmArk;
DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
Abort;
end;
AdoQry_Head.BookMArk:=BookmArk;
Flag:=Not Flag;
end;
procedure TFrm_Pm_Enter_NewFreePassPo.Act_CancelCheckExecute(Sender: TObject);
begin
inherited;
If AdoQry_Head.RecordCount=0 Then
Exit;
If (DispInfo('确认取消批准选定的采购订单吗?',2)='y') Then
CloseRecord;
end;
procedure TFrm_Pm_Enter_NewFreePassPo.Act_CheckExecute(Sender: TObject);
begin
inherited;
If AdoQry_Head.RecordCount=0 Then
Exit;
If (DispInfo('确认真的要批准选定的采购订单吗',2)='y') Then
OpenRecord;
end;
procedure TFrm_Pm_Enter_NewFreePassPo.DBGridEhDblClick(Sender: TObject);
begin
inherited;
IF AdoQry_Head.fieldbyname('PoLineStatus').AsInteger=6 Then
begin
Frm_Pm_Enter_NewFreePassPo.Act_CancelCheckExecute(Act_CancelCheck);
Abort;
end;
IF AdoQry_Head.fieldbyname('PoLineStatus').AsInteger=5 Then
begin
Frm_Pm_Enter_NewFreePassPo.Act_CheckExecute(Act_Check);
Abort;
end;
end;
procedure TFrm_Pm_Enter_NewFreePassPo.FormDestroy(Sender: TObject);
begin
inherited;
Frm_Pm_Enter_NewFreePassPo:=Nil;
end;
procedure TFrm_Pm_Enter_NewFreePassPo.AdoQry_HeadBeforeInsert(
DataSet: TDataSet);
begin
inherited;
Abort;
end;
procedure TFrm_Pm_Enter_NewFreePassPo.DBGridEhTitleClick(Column: TColumnEh);
var
BookMArk:String;
begin
inherited;
If Trim(Column.Title.Caption)<>'标记' Then
Abort;
If AdoQry_Head.RecordCount=0 Then
Abort;
BookMArk:=AdoQry_Head.BookmArk;
If Not Flag Then
begin
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('PoLineCheck').AsInteger:=1;
AdoQry_Head.Post;
AdoQry_Head.Next;
end;
end
Else
begin
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('PoLineCheck').AsInteger:=0;
AdoQry_Head.Post;
AdoQry_Head.Next;
end;
end;
AdoQry_Head.BookmArk:=BookMArk;
Flag:=Not Flag;
end;
procedure TFrm_Pm_Enter_NewFreePassPo.Act_LookExecute(Sender: TObject);
begin
inherited;
{ If (AdoQry_Head.RecordCount>0) Then
if Frm_Pm_Enter_PoSsParent=nil then
begin
Frm_Pm_Enter_PoSsParent:=TFrm_Pm_Enter_PoSsParent.Create(Self);
Frm_Pm_Enter_PoSsParent.SetSysParam(UserCode,ModuleCode,MenuId,LoginDate);
Frm_Pm_Enter_PoSsParent.ItemCode:=AdoQry_Head.fieldbyname('ItemCode').asstring;
if AdoQry_Head.fieldbyname('PmCode').Asinteger<>0 then
Frm_Pm_Enter_PoSsParent.duedate:=datetimetostr(AdoQry_Head.fieldbyname('PoLineDate').asdatetime)
else
Frm_Pm_Enter_PoSsParent.duedate:=SlCalendar(Dbconnect,datetimetostr(AdoQry_Head.fieldbyname('PoLineDate').asdatetime),-AdoQry_Head.fieldbyname('QcLt').Asinteger);
// Frm_Pm_Enter_PoSsParent.duedate:=datetimetostr(AdoQry_Head.fieldbyname('PoLineDate').asdatetime-AdoQry_Head.fieldbyname('QcLt').Asinteger);
// Frm_Pm_Enter_PoSsParent.duedate:=datetimetostr(AdoQry_Head.fieldbyname('PoLineDate').asdatetime);
Frm_Pm_Enter_PoSsParent.strpath:=AdoQry_Head.fieldbyname('ItemCode').asstring+',';
Frm_Pm_Enter_PoSsParent.InitForm(dbconnect,True);
end
else Frm_Pm_Enter_PoSsParent.Show; }
try
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -