📄 sal_enter_delsaleorder.pas
字号:
begin
Result:=False;
If (AdoQry_Head.fieldbyname('sloCheck').AsInteger=1)
And (AdoQry_Head.fieldbyname('slolineStatus').AsInteger=3)
Then
begin
SqlText:=' Select * From sa_SaleOrderline '
+' Where slono='+quotedStr(AdoQry_Head.fieldbyname('slono').Asstring)
+' and slolineno='+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger);
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);
abort;
end
else
if AdoQry_Tmp.fieldbyname('slolineStatus').asfloat <> 3 then
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('选定的第'+IntToStr(I)+'条销售订单行状态已被其它用户修改,请刷新!',3);
abort;
end;
Result:=True;
end;
end;
procedure unClosesloline;
var sqlstring:string;
begin
Sqlstring:='Update sa_SaleOrderline '
+' set slolineStatus=2'
+' Where slono='+quotedStr(AdoQry_Head.fieldbyname('slono').Asstring)
+' and slolineno='+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger)
+' And slolineStatus=3 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=Sqlstring;
AdoQry_tmp.ExecSQL;
Sqlstring:='Update #tMpSaleOrderForeverClose '
+' set slolineStatus=2 '
+' Where slono='+quotedStr(AdoQry_Head.fieldbyname('slono').Asstring)
+' and slolineno='+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger)
+' And slolineStatus=3 ';
AdoQry_tmp.Close;
AdoQry_tmp.SQL.Text:=Sqlstring;
AdoQry_tmp.ExecSQL;
end;
var
SqlText,BookMArk:String;
I:Integer; }
begin
inherited;
{ If AdoQry_Head.RecordCount=0 Then
Abort;
BookMArk:=AdoQry_Head.BookmArk;
If DispInfo('确认取消关闭选定销售合同行吗?',2)='y' Then
begin
I:=1;
Try
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
DbConnect.beginTrans;
if checksloline then
begin
saveSaleOrderLineHistory(dbconnect,AdoQry_Head.fieldbyname('slono').asstring,AdoQry_Head.fieldbyname('slolineno').asinteger,userCode,6);
unClosesloline;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('slolineStatus').AsInteger:=2;
AdoQry_Head.fieldbyname('sloCheck').AsInteger:=0;
AdoQry_Head.Post;
I:=I+1;
AdoQry_Head.Next;
dbconnect.CommitTrans;
end
Else
begin
I:=I+1;
AdoQry_Head.Next;
DbConnect.CommitTrans;
end;
end;
Except
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
DispInfo('更改数据时发生错误,数据未更改,请重试!',1);
AdoQry_Head.BookMArk:=BookmArk;
Abort;
end;
end;
AdoQry_Head.BookMArk:=BookmArk;
Flag:=Not Flag; }
end;
procedure TFrm_Sal_Enter_DelSaleOrder.DBGridEhDblClick(Sender: TObject);
begin
inherited;
If AdoQry_Head.RecordCount=0 Then
Abort;
If AdoQry_Head.fieldbyname('slolineStatus').AsInteger=8 then
Act_DeleteExecute(Act_Delete);
end;
procedure TFrm_Sal_Enter_DelSaleOrder.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('sloCheck').AsInteger:=0;
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('sloCheck').AsInteger:=1;
AdoQry_Head.Post;
AdoQry_Head.Next;
end;
end;
AdoQry_Head.BookmArk:=BookMArk;
Flag:=Not Flag;
end;
procedure TFrm_Sal_Enter_DelSaleOrder.AdoQry_HeadBeforeInsert(
DataSet: TDataSet);
begin
inherited;
Abort;
end;
procedure TFrm_Sal_Enter_DelSaleOrder.FormCreate(Sender: TObject);
begin
inherited;
ToolButton6.Action:=act_excel;
end;
procedure TFrm_Sal_Enter_DelSaleOrder.Act_ExcelExecute(Sender: TObject);
begin
// inherited;
dbgridehtoexcel(dbgrideh);
end;
procedure TFrm_Sal_Enter_DelSaleOrder.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
try
Executesql(AdoQry_tmp,'drop table #tMpSaleOrderdelete',1);
except
end;
end;
procedure TFrm_Sal_Enter_DelSaleOrder.checksloline;
var sqltext:string;
begin
sqltext:='select * from sa_SaleOrderline where slono='
+quotedstr(AdoQry_Head.fieldbyname('slono').asstring)
+' and slolineno='+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger);
Executesql(AdoQry_tmp,sqltext,0);
if AdoQry_tmp.RecordCount=0 then
begin
DispInfo('销售订单行'+AdoQry_Head.fieldbyname('slono').asstring+'--'+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger)+'已被其他用户清除!',3);
abort;
end
else
if AdoQry_tmp.fieldbyname('slolinestatus').asinteger<>8 then
begin
DispInfo('销售订单行'+AdoQry_Head.fieldbyname('slono').asstring+'--'+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger)+'还没有结算!',3);
abort;
end;
end;
procedure TFrm_Sal_Enter_DelSaleOrder.deletesloline;
var sqltext:string;
begin
sqltext:='delete from sa_SaleOrderline '
+' where slono='+quotedstr(AdoQry_Head.fieldbyname('slono').asstring)
+' and slolineno='+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger);
Executesql(AdoQry_tmp,sqltext,1);
sqltext:='delete from #tMpSaleOrderdelete '
+' where slono='+quotedstr(AdoQry_Head.fieldbyname('slono').asstring)
+' and slolineno='+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger);
Executesql(AdoQry_tmp,sqltext,1);
sqltext:='select * from sa_SaleOrder '
+' where not exists(select * from sa_SaleOrderline '
+' where sa_SaleOrder.slono=sa_SaleOrderline.slono )'
+' and slono='+quotedstr(AdoQry_Head.fieldbyname('slono').asstring);
Executesql(AdoQry_tmp,sqltext,0);
if AdoQry_tmp.RecordCount=0 then exit;
saveSaleOrderHistory(dbconnect,AdoQry_tmp.fieldbyname('slono').asstring,userCode,8);
sqltext:='delete from sa_SaleOrder '
+' where not exists(select * from sa_SaleOrderline '
+' where sa_SaleOrder.slono=sa_SaleOrderline.slono )'
+' and slono='+quotedstr(AdoQry_Head.fieldbyname('slono').asstring);
Executesql(AdoQry_tmp,sqltext,1);
end;
procedure TFrm_Sal_Enter_DelSaleOrder.Act_DeleteExecute(Sender: TObject);
var BookmArk:string;
begin
inherited;
if AdoQry_Head.RecordCount=0 then exit;
if DispInfo('确认清除选定的销售订单吗?',2)<>'y' then exit;
BookmArk:=AdoQry_Head.BookmArk;
AdoQry_Head.First;
while not AdoQry_Head.Eof do
begin
if AdoQry_Head.fieldbyname('slocheck').asinteger<>0 then
begin
AdoQry_Head.Next;
continue;
end;
try
checksloline;
dbconnect.beginTrans;
saveSaleOrderLineHistory(dbconnect,AdoQry_Head.fieldbyname('slono').asstring,AdoQry_Head.fieldbyname('slolineno').asinteger,userCode,8);
deletesloline;
AdoQry_Head.Delete;
dbconnect.CommitTrans;
AdoQry_Head.Next;
except
if dbconnect.InTransaction then
dbconnect.RollBackTrans;
DispInfo('销售订单行'+AdoQry_Head.fieldbyname('slono').asstring+'--'+inttostr(AdoQry_Head.fieldbyname('slolineno').asinteger)+'未被清除,可能正被其他数据表引用!',3);
abort;
end;
end;
try
AdoQry_Head.BookmArk:=BookmArk;
except
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -