⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sal_enter_delsaleorder.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      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 + -