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

📄 sal_enter_delsaleorder.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Sal_Enter_DelSaleOrder;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Check, Menus, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
  ExtCtrls, ComCtrls, ToolWin, DBCtrls, jpeg, ExtPrintReport;

Type
  TFrm_Sal_Enter_DelSaleOrder = Class(TFrm_Base_Check)
    DBText2: TDBText;
    Label2: TLabel;
    AdoQry_Headslocheck: TIntegerField;
    AdoQry_Headcreatedate: TDateTimeField;
    AdoQry_Headslono: TStringField;
    AdoQry_Headslolineno: TIntegerField;
    AdoQry_HeadItemCode: TStringField;
    AdoQry_HeadItemName: TStringField;
    AdoQry_HeadItemflag: TStringField;
    AdoQry_Headslolinestatus: TIntegerField;
    AdoQry_Headslolinedate: TDateTimeField;
    AdoQry_Headsloqty: TFloatField;
    AdoQry_HeadcustomerCode: TStringField;
    AdoQry_HeadcustomerName: TStringField;
    AdoQry_Headcustomerflag: TStringField;
    AdoQry_HeadSaleTypeName: TStringField;
    AdoQry_HeadSaleTypeflag: TStringField;
    AdoQry_HeadSaleDeptCode: TStringField;
    AdoQry_HeadDeptName: TStringField;
    AdoQry_HeadDeptflag: TStringField;
    AdoQry_HeadSaleEmployeeCode: TStringField;
    AdoQry_HeadEmployeeName: TStringField;
    AdoQry_HeadEmployeeflag: TStringField;
    AdoQry_HeadslolineremArk: TStringField;
    AdoQry_Headlastoperationtime: TDateTimeField;
    AdoQry_HeadSaleTypeCode: TStringField;
    Label1: TLabel;
    DBText1: TDBText;
    AdoQry_HeadShipqty: TFloatField;
    AdoQry_HeadcustomerPmno: TStringField;
    AdoQry_Headreferenceno: TStringField;
    procedure FormDestroy(Sender: TObject);
    procedure Act_CheckExecute(Sender: TObject);
    procedure Act_CancelCheckExecute(Sender: TObject);
    procedure DBGridEhDblClick(Sender: TObject);
    procedure DBGridEhTitleClick(Column: TColumnEh);
    procedure AdoQry_HeadBeforeInsert(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
    procedure Act_ExcelExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Act_DeleteExecute(Sender: TObject);
  private
    Flag:Boolean;
    { Private declarations }
  public
    procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
    procedure  checksloline;
    procedure  deletesloline;
    { Public declarations }
  end;

var
          Frm_Sal_Enter_DelSaleOrder: TFrm_Sal_Enter_DelSaleOrder;
          i:integer;
implementation

uses Sys_Global, Sal_Enter_DelSaleOrder_C;

{$R *.DFM}

procedure TFrm_Sal_Enter_DelSaleOrder.InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);
var sqltext:string;
 slonos,slonoe,customerCodes,customerCodee,dates,datee:string;
begin
  Application.ProcessMessages;
  Inherited;
  with TFrm_Sal_Enter_DelSaleOrder_C.Create(self) do
     begin
     SetDBConnect(dbconnect);
      showmodal;
      if modalResult=mrok then
      try
        slonos:=edt_Slono.text;
        slonoe:=edt_End_Slono.text;
        customerCodes:=edt_CustomerCode.text;
        customerCodee:=edt_End_CustomerCode.text;
        dates:=medt_Slodate.Text;
        datee:=medt_End_Slodate.Text;
      finally
       Frm_Sal_Enter_DelSaleOrder_C.Free;
      end;
      if modalResult<>mrok then
       Frm_Sal_Enter_DelSaleOrder_C.Free;
     end;


  sqltext:='select t2.slocheck,      '
           +'      t1.Createdate,     '
           +'      t1.customerPmno,   '
           +'      t1.referenceno,    '
           +'      t2.slono,          '
           +'      t2.slolineno,     '
           +'      t2.ItemCode,      '
           +'      Item.ItemName,    '
           +'      t2.ItemCode+'' ''+Item.ItemName as Itemflag,  '
           +'      t2.slolinestatus, '
           +'      t2.slolinedate,   '
           +'      t2.sloqty,        '
           +'      t2.Shipqty,       '
         //  +'      t2.noFinishsloqty, '
           +'      t1.customerCode,   '
           +'      customer.customerName,  '
           +'      t1.customerCode+'' ''+customer.customerName as customerflag, '
           +'      t1.SaleTypeCode,            '
           +'      SaleType.SaleTypeName,  '
           +'      t1.SaleTypeCode+'' ''+SaleType.SaleTypeName as SaleTypeflag,  '
           +'      t1.SaleDeptCode,        '
          +'       Dept.DeptName,          '
          +'       t1.SaleDeptCode+'' ''+Dept.DeptName as Deptflag,  '
          +'       t1.SaleEmployeeCode,    '
          +'       Employee.EmployeeName,  '
          +'       t1.SaleEmployeeCode+'' ''+Employee.EmployeeName as Employeeflag, '
          +'       t2.lastoperationtime,  '
          +'       t2.slolineremArk        '
        +'   into #tMpSaleOrderdelete  '
        +'  from  sa_SaleOrderline t2       '
        +'  join sa_SaleOrder t1 on t2.slono=t1.slono   '
        +'   and t1.slono between '+quotedstr(slonos)+' and '+quotedstr(slonoe)
        +'   and  t1.Createdate between '+quotedstr(dates)+' and '+quotedstr(datee)
        +'  left outer join Item on t2.ItemCode=Item.ItemCode  '
        +'  left outer join customer on t1.customerCode=customer.customerCode  '
        +'              and t1.customerCode between '+quotedstr(customerCodes)+' and '+quotedstr(customerCodee)
        +'  left outer join SaleType on t1.SaleTypeCode=SaleType.SaleTypeCode    '
        +'  left outer join Dept on t1.SaleDeptCode=Dept.DeptCode            '
        +'  left outer join Employee on t1.SaleEmployeeCode=Employee.EmployeeCode  '
       +'  where slolinestatus=8';
{ conditionuserDefine:='( slolinestatus=4) and createdate between '+quotedstr(dates)+' and '+quotedstr(datee)
                      +' and slono between '+quotedstr(slonos)+' and '+quotedstr(slonoe);}
 Orderbyfields:='createdate,slono';
 Executesql(AdoQry_Head,sqltext,1);
 selectfromsql:='select * from #tMpSaleOrderdelete';
// showmessage(selectfromsql+#13+conditionuserDefine);
// Executesql(AdoQry_Head,selectfromsql,0);
 getdata;
 Flag:=False;
end;

procedure TFrm_Sal_Enter_DelSaleOrder.FormDestroy(Sender: TObject);
begin
  inherited;
  Frm_Sal_Enter_DelSaleOrder:=Nil;
end;

procedure TFrm_Sal_Enter_DelSaleOrder.Act_CheckExecute(Sender: TObject);
   { function checksloline:boolean;
      var sqltext:string;
      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').AsInteger <>3 then
              begin
                If DbConnect.InTransaction Then
                  DbConnect.RollBackTrans;
                  DispInfo('选定的第'+IntToStr(I)+'条销售订单行状态已被其它用户修改,请刷新!',3);
                  Abort;
              end;
        Result:=True;
        end;

      end;

    procedure Closesloline;
     var sqlstring:string;
     begin
       sqlstring:='Update sa_SaleOrderline '
                  +' set slolineStatus=4, '
                  +'     lastoperationtime='+quotedstr(GetServerDateTime(dbconnect))
                  +' 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=4, '
                  +'     lastoperationtime='+quotedstr(GetServerDateTime(dbconnect))
                  +' 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;       }
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,7);
          Closesloline;
          AdoQry_Head.Edit;
          AdoQry_Head.fieldbyname('slolineStatus').AsInteger:=4;
          AdoQry_Head.fieldbyname('sloCheck').AsInteger:=0;
          AdoQry_Head.Post;
          I:=I+1;
          DbConnect.CommitTrans;
          AdoQry_Head.Next;
         end
        Else
        begin
          I:=I+1;
          DbConnect.CommitTrans;
          AdoQry_Head.Next;
        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.Act_CancelCheckExecute(Sender: TObject);
  {  function checksloline:boolean;
      var sqltext:string;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -