unit U_KDList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData,
  cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB,
  cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses,
  cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxGrid, DBClient, cxCalendar, cxButtonEdit, cxSplitter,
  RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport,
  cxTextEdit, cxPC, cxCheckBox, Menus;


type
  TfrmKDList = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBAdd: TToolButton;
    TBEdit: TToolButton;
    TBDel: TToolButton;
    TBClose: TToolButton;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    TBExport: TToolButton;
    Order_Main: TClientDataSet;
    RM1: TRMGridReport;
    RMDBMain: TRMDBDataSet;
    RMXLSExport1: TRMXLSExport;
    CDS_PRT: TClientDataSet;
    ToolButton3: TToolButton;
    Panel1: TPanel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column6: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    v1Column16: TcxGridDBColumn;
    ComboBox2: TComboBox;
    Label3: TLabel;
    Label1: TLabel;
    ToolButton1: TToolButton;
    ToolButton4: TToolButton;
    v1Column1: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    ADOQueryPrint: TADOQuery;
    v1Column18: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    cxTabControl1: TcxTabControl;
    v1Column8: TcxGridDBColumn;
    ToolButton2: TToolButton;
    ToolButton5: TToolButton;
    v1Column11: TcxGridDBColumn;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    v1Column13: TcxGridDBColumn;
    v1Column15: TcxGridDBColumn;
    v1Column17: TcxGridDBColumn;
    v1Column19: TcxGridDBColumn;
    v1Column21: TcxGridDBColumn;
    v1Column22: TcxGridDBColumn;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    v1Column23: TcxGridDBColumn;
    Label8: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    KDNO: TEdit;
    Country: TEdit;
    KHName: TEdit;
    KDType: TEdit;
    Label6: TLabel;
    FKType: TEdit;
    v1Column2: TcxGridDBColumn;
    v1Column12: TcxGridDBColumn;
    v1Column14: TcxGridDBColumn;
    v1Column24: TcxGridDBColumn;
    v1Column25: TcxGridDBColumn;
    v1Column26: TcxGridDBColumn;
    DataSource2: TDataSource;
    cxGridPopupMenu2: TcxGridPopupMenu;
    ClientDataSet2: TClientDataSet;
    cxSplitter1: TcxSplitter;
    CDS_Chker: TClientDataSet;
    CDS_Chk: TClientDataSet;
    DS_Chk: TDataSource;
    Panel2: TPanel;
    cxGrid3: TcxGrid;
    cxGridDBTableView1: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn7: TcxGridDBColumn;
    cxGridDBColumn8: TcxGridDBColumn;
    cxGridLevel2: TcxGridLevel;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridDBColumn3: TcxGridDBColumn;
    v2Column2: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    cxGridDBColumn5: TcxGridDBColumn;
    cxGridDBColumn6: TcxGridDBColumn;
    cxGridDBColumn9: TcxGridDBColumn;
    cxGridDBColumn10: TcxGridDBColumn;
    cxGridDBColumn17: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    Label2: TLabel;
    EditNote: TMemo;
    v1EditSQTime: TcxGridDBColumn;
    v1EditNote: TcxGridDBColumn;
    TEditSQ: TToolButton;
    TQS: TToolButton;
    v1QSDate: TcxGridDBColumn;
    Panel4: TPanel;
    Label4: TLabel;
    Label14: TLabel;
    Panel10: TPanel;
    Image2: TImage;
    Button1: TButton;
    QSDate: TDateTimePicker;
    Label10: TLabel;
    JYPerson: TEdit;
    Label11: TLabel;
    KDComName: TEdit;
    v1ConNo: TcxGridDBColumn;
    Label12: TLabel;
    ConNO: TEdit;
    v1IFDS: TcxGridDBColumn;
    v1HKMoney: TcxGridDBColumn;
    v1FKName: TcxGridDBColumn;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cxPageControl1Change(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure WorkerChange(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure KDNOKeyPress(Sender: TObject; var Key: Char);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure TEditSQClick(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure TQSClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private
    FInt,PFInt:Integer;
    canshu1,canshu2:string;
    FNowDate:TDateTime;
    procedure InitGrid();
    procedure InitForm();
    function  DelData():Boolean;
    procedure InitGridWsql(fsj:string);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmKDList: TfrmKDList;

implementation
uses
  U_DataLink,U_RTFun,U_KDInPut,U_ModuleNote, U_ZDYHelp, U_ZDYHelpSel;

{$R *.dfm}

procedure TfrmKDList.FormDestroy(Sender: TObject);
begin
  frmKDList:=nil;
end;

procedure TfrmKDList.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action:=caFree;
end;

procedure TfrmKDList.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('快递信息登记',Tv1,'寄件管理');
end;

procedure TfrmKDList.InitGrid();
var
  fsj:String;
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.Add(' select A.* ');
      SQL.Add(' from KuaiDi_Money A where 1=1 ');
      if Trim(canshu1)<>'高权限' then
      begin
        //sql.Add(' and Filler='''+Trim(DName)+'''');
        sql.Add(' and( isnull(JYPerson,'''')='''+Trim(DName)+'''');
        sql.Add(' or isnull(YWZhuLi,'''')='''+Trim(DName)+'''');
        sql.Add(' or isnull(FillCode,'''')='''+Trim(DCode)+''')');
      end;
      if cxTabControl1.TabIndex<>0 then
      begin
        fsj:=TA(ComboBox2.Items.Objects[ComboBox2.Items.IndexOf(Trim(ComboBox2.Text))]).S;
        sql.Add(' and A.'+Trim(fsj)+'>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date))+'''');
        sql.Add(' and A.'+Trim(fsj)+'<'''+Trim(FormatDateTime('yyyy-MM-dd',EndDate.Date+1))+'''');
      end;
      if cxTabControl1.TabIndex=0 then
      begin
        sql.Add(' and (isnull(A.Status,'''')='''' or isnull(A.Status,'''')=''审核不通过'')');
      end else
      if cxTabControl1.TabIndex=1 then
      begin
        sql.Add(' and (isnull(A.Status,'''')=''已送审'' or isnull(A.Status,'''')=''审核中'' or isnull(A.Status,'''')=''单据修改'')  ');
      end else
      if cxTabControl1.TabIndex=2 then
      begin
        sql.Add(' and isnull(A.Status,'''')=''审核通过''  ');
      end else
      if cxTabControl1.TabIndex=3 then
      begin
        sql.Add(' and isnull(A.Status,'''')=''审核不通过''  ');
      end;
      Open;
    end;
    SCreateCDS20(ADOQueryMain,Order_Main);
    SInitCDSData20(ADOQueryMain,Order_Main);
  finally
    ADOQueryMain.EnableControls;
  end;

end;

procedure TfrmKDList.InitForm();
begin
  FNowDate:=SGetServerDate(ADOQueryTemp);
  EndDate.Date:=SGetServerDateMEnd(ADOQueryTemp);
  BegDate.Date:=SGetServerDateMBeg(ADOQueryTemp);
  ReadCxGrid('快递信息登记',Tv1,'寄件管理');
  TQS.Visible:=False;
  if canshu1='高权限' then
  TQS.Visible:=true;
  //InitGrid();
end;

procedure TfrmKDList.TBEditClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if (cxTabControl1.TabIndex<>0) and (cxTabControl1.TabIndex<>3) then Exit;
  if Trim(DCode)<>Trim(Order_Main.fieldbyname('FillCode').AsString) then
  begin
    Application.MessageBox('不能操作他人的信息!','提示',0);
    Exit;
  end;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add(' select * from KuaiDi_Money where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
    sql.Add(' and isnull(MoneyPerson,'''')<>'''' ');
    Open;
  end;
  if ADOQueryTemp.IsEmpty=False then
  begin
    Application.MessageBox('已对账不能修改数据!','提示',0);
    Exit;
  end;
  try
    frmKDInPut:=TfrmKDInPut.Create(Application);
    with frmKDInPut do
    begin
      PState:=1;
      FMainId:=Trim(Self.Order_Main.fieldbyname('KDID').AsString);
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmKDInPut.Free;
  end;
end;

procedure TfrmKDList.TBDelClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if cxTabControl1.TabIndex<>0 then Exit;
  if Trim(DCode)<>Trim(Order_Main.fieldbyname('FillCode').AsString) then
  begin
    Application.MessageBox('不能操作他人的信息!','提示',0);
    Exit;
  end;
  {with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add(' select * from KuaiDi_Money where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
    sql.Add(' and isnull(Chker,'''')<>'''' ');
    Open;
  end;
  if ADOQueryTemp.IsEmpty=False then
  begin
    Application.MessageBox('已审核不能修改数据!','提示',0);
    Exit;
  end;  }
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;

  if Application.MessageBox('确定要删除数据吗？','提示',32+4)<>IDYES then Exit;
  if DelData() then
  begin
    //Order_Main.Delete;
  end;
end;

function TfrmKDList.DelData():Boolean;
begin
  try
    Result:=false;
    ADOQueryCmd.Connection.BeginTrans;
    Order_Main.DisableControls;
    with Order_Main do
    begin
      while Locate('SSel',True,[]) do
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('delete KuaiDi_Money  where KDId='''+Trim(Order_Main.fieldbyname('KDId').AsString)+'''');
          ExecSQL;
        end;

        Delete;
      end;
    end;
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.CommitTrans;
    Result:=True;
  except
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.RollbackTrans;
    Result:=False;
    Application.MessageBox('数据删除异常！','提示',0);
  end;
end;

procedure TfrmKDList.TBExportClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  TcxGridToExcel('寄件信息',cxGrid1);
end;

procedure TfrmKDList.TBRafreshClick(Sender: TObject);
begin
  ToolBar1.SetFocus;
  InitGrid();
end;

procedure TfrmKDList.TBAddClick(Sender: TObject);
begin
  try
    frmKDInPut:=TfrmKDInPut.Create(Application);
    with frmKDInPut do
    begin
      frmKDInPut.canshu1:=Self.canshu1;
      PState:=0;
      FMainId:='';
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmKDInPut.Free;
  end;
end;

procedure TfrmKDList.FormShow(Sender: TObject);
var
  i:Integer;
begin
  InitForm();
  SInitComBoxByTvColumns(ComboBox2,Tv1,999,True,True);
end;

procedure TfrmKDList.cxPageControl1Change(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmKDList.ToolButton3Click(Sender: TObject);
begin
  try
    frmModuleNote:=TfrmModuleNote.Create(Application);
    with frmModuleNote do
    begin
      flag:='寄件信息登记';
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmModuleNote.Free;
  end;
end;

procedure TfrmKDList.FormCreate(Sender: TObject);
begin
  canshu1:=Trim(DParameters1);
  canshu2:=Trim(DParameters2);
end;

procedure TfrmKDList.InitGridWsql(fsj:string);
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.Add(' select A.* ');
      SQL.Add(' from KuaiDi_Money A');
      sql.Add(' where isnull(HZType,'''')='''' ');
      if Trim(canshu1)<>'高权限' then
      begin
        sql.Add('and (FillCode in(select UserID from  SY_User where DPID in');
        sql.Add('              (select DPID from SY_User where UserID='''+Trim(DCode)+'''))');
        SQL.Add(' )');
      end;
      if cxTabControl1.TabIndex=0 then
      begin
        sql.Add('  and isnull(A.Status,'''')='''' ');
      end else
      if cxTabControl1.TabIndex=1 then
      begin
        sql.Add(' and isnull(A.Status,'''')<>'''' and isnull(A.MoneyPerson,'''')='''' ');
      end   else
      if cxTabControl1.TabIndex=2 then
      begin
        sql.Add(' and isnull(A.MoneyPerson,'''')<>'''' ');
      end;
      sql.Add(fsj);
      Open;
    end;
    SCreateCDS20(ADOQueryMain,Order_Main);
    SInitCDSData20(ADOQueryMain,Order_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmKDList.cxTabControl1Change(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmKDList.WorkerChange(Sender: TObject);
begin
  if ADOQueryMain.Active=False then Exit;
  SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
  SCreateCDS20(ADOQueryMain,Order_Main);
  SInitCDSData20(ADOQueryMain,Order_Main);
end;

procedure TfrmKDList.ToolButton1Click(Sender: TObject);
begin
  if ADOQueryMain.Active=False then Exit;
  ToolBar1.SetFocus;
  SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
  SCreateCDS20(ADOQueryMain,Order_Main);
  SInitCDSData20(ADOQueryMain,Order_Main);
end;

procedure TfrmKDList.ToolButton4Click(Sender: TObject);
var
  fPrintFile:String;
begin
  if Order_Main.IsEmpty then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据！','提示',0);
    Exit;
  end;
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\检验指示单标签.rmf' ;
  Order_Main.DisableControls;
  with Order_Main do
  begin
    First;
    while not eof do
    begin
      if Order_Main.FieldByName('SSel').AsBoolean=True then
      begin
        if FileExists(fPrintFile) then
        begin
          with ADOQueryPrint do
          begin
            Close;
            sql.Clear;
            sql.Add('select B.OrderNo,B.MPRTCodeName,B.MPRTMF,B.MPRTKZ,C.PRTHX,C.PRTColorNo,C.PRTColor,GangNo=A.GangNo,A.PS,A.Qty,A.QtyUnit,A.MDID ');
            SQL.Add(',B.MPRTCode,B.MPRTGY,C.PRTColorEng,A.SelfGangNo');
            sql.Add('from JYOrder_Main_MD A');
            sql.Add('inner join JYOrder_Main B on A.OrdMainid=B.Mainid');
            sql.Add(' inner join JYOrder_Sub C on A.OrdSubid=C.SubId');
            sql.Add(' where A.MDID='''+Trim(Order_Main.fieldbyname('MDID').AsString)+'''');
            Open;
          end;
          RM1.LoadFromFile(fPrintFile);
          //RM1.ShowReport;
          RM1.PrintReport;
        end else
        begin
          Order_Main.DisableControls;
          Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\检验指示单标签.rmf'),'提示',0);
          Exit;
        end;
      end;

      Next;
    end;
  end;
  Order_Main.EnableControls;
end;

procedure TfrmKDList.KDNOKeyPress(Sender: TObject; var Key: Char);
var
  fsj:String;
begin
  if Key<>#13 then Exit;
  if Length(Trim(KDNo.Text))<3 then Exit;
  fsj:=' and A.KDNo like '''+'%'+Trim(KDNo.Text)+'%'+'''';
  InitGridWsql(fsj);
end;

procedure TfrmKDList.N1Click(Sender: TObject);
begin
  SelOKNo(Order_Main,True);
end;

procedure TfrmKDList.N2Click(Sender: TObject);
begin
  SelOKNo(Order_Main,False);
end;

procedure TfrmKDList.ToolButton2Click(Sender: TObject);
var
  maxno,FCKID:string;
  FCount:Integer;
begin
  if Order_Main.IsEmpty then Exit;
  if cxTabControl1.TabIndex<>0 then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select Chker=Cast('''' as varchar(20))');
    Open;
  end;
  SCreateCDS20(ADOQueryTemp,CDS_Chker);
  SInitCDSData20(ADOQueryTemp,CDS_Chker);
  while CDS_Chker.IsEmpty=False do
  begin
    CDS_Chker.Delete;
  end;
  try
    frmZDYHelpSel:=TfrmZDYHelpSel.Create(Application);
    with frmZDYHelpSel do
    begin
      flag:='OAChker';
      flagname:='OA审核人';
      MainType:=Trim(DName);
      if ShowModal=1 then
      begin
        with ClientDataSet1 do
        begin
          First;
          while not Eof do
          begin
            if FieldByName('SSEl').AsBoolean=True then
            begin
              CDS_Chker.Append;
              CDS_Chker.FieldByName('Chker').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString);
              CDS_Chker.Post;
            end;
            Next;
          end;
        end;
        if CDS_Chker.IsEmpty then FCount:=9
      end;
    end;
  finally
    frmZDYHelpSel.Free;
  end;
  if FCount=9 then
  begin
    if CDS_Chker.IsEmpty then
    begin
      Application.MessageBox('没有选择审核人!','提示',0);
      Exit;
    end;
  end;
  if CDS_Chker.IsEmpty then Exit;
  CDS_Chker.DisableControls;
  with CDS_Chker do
  begin
    First;
    while not eof do
    begin
      with ADOQueryTemp do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from SY_User where UserName='''+Trim(CDS_Chker.fieldbyname('Chker').AsString)+'''');
        Open;
      end;
      if ADOQueryTemp.IsEmpty then
      begin
        CDS_Chker.EnableControls;
        Application.MessageBox('审核人定义错误!','提示',0);
        Exit;
      end;
      Next;
    end;
  end;
  CDS_Chker.EnableControls;

  if Application.MessageBox('确定要执行此操作吗？','提示',32+4)<>IDYES then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    Order_Main.DisableControls;
    with Order_Main do
    begin
      First;
      while Order_Main.Locate('SSel',True,[]) do
      begin
        with ADOQueryCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add('UPdate KuaiDi_Money Set Status=''已送审'',SSTime=getdate(),SSPerson='''+Trim(DName)+'''');
          sql.Add(' where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
          ExecSQL;
        end;
        with CDS_Chker do
        begin
          CDS_Chker.First;
          while not CDS_Chker.Eof do
          begin
            with ADOQueryTemp do
            begin
              Close;
              sql.Clear;
              sql.Add('select * from OA_Chk where MainId='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
              sql.Add(' and isnull(OAType,'''')=''寄件'' ');
              sql.Add(' and isnull(Chker,'''')='''+Trim(CDS_Chker.fieldbyname('Chker').AsString)+'''');
              Open;
            end;
            FCKID:=Trim(ADOQueryTemp.fieldbyname('CKID').AsString);
            ADOQueryTemp.Close;
            if Trim(FCKID)='' then
            begin
              if GetLSNo(ADOQueryCmd,maxno,'CK','OA_Chk',4,1)=False then
              begin
                ADOQueryCmd.Connection.RollbackTrans;
                Application.MessageBox('取最大号失败!','提示',0);
                Exit;
              end;
              with ADOQueryCmd do
              begin
                Close;
                sql.Clear;
                sql.Add('select * from OA_Chk where 1=2');
                Open;
              end;
              with ADOQueryCmd do
              begin
                Append;
                FieldByName('CKID').Value:=Trim(maxno);
                FieldByName('MainID').Value:=Trim(Order_Main.fieldbyname('KDID').AsString);
                FieldByName('OAType').Value:='寄件';
                FieldByName('Chker').Value:=Trim(CDS_Chker.fieldbyname('Chker').AsString);
                Post;
              end;
            end;
            CDS_Chker.Next;
          end;
        end;
        Order_Main.Delete;
      end;
    end;
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.CommitTrans;
    Exit;
  except
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常!','提示',0);
  end;

  {if Order_Main.IsEmpty then Exit;
  if cxTabControl1.TabIndex<>0 then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;
  if Application.MessageBox('确定要执行此操作吗？','提示',32+4)<>IDYES then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    Order_Main.DisableControls;
    with Order_Main do
    begin
      First;
      while Locate('SSel',True,[])=True do
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('UPdate KuaiDi_Money Set Status=''已送审'',SSTime=getdate(),SSPerson='''+Trim(DName)+'''');
          sql.Add(' where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
          ExecSQL;
        end;
        Order_Main.Delete;
      end;
    end;
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.CommitTrans;
  except
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常!','提示',0);
  end;}

end;

procedure TfrmKDList.ToolButton5Click(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if cxTabControl1.TabIndex<>1 then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;
  Order_Main.DisableControls;
  with Order_Main do
  begin
    First;
    while not Eof do
    begin
      if Order_Main.FieldByName('SSel').AsBoolean=True then
      begin
        with ADOQueryTemp do
        begin
          Close;
          sql.Clear;
          sql.Add(' select * from KuaiDi_Money where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
          sql.Add(' and isnull(Status,'''')<>''已送审'' and isnull(Status,'''')<>''审核不通过''');
          Open;
        end;
        if ADOQueryTemp.IsEmpty=False then
        begin
          Order_Main.EnableControls;
          Application.MessageBox('已审核，不能撤销!','提示',0);
          Exit;
        end;
      end;
      Next;
    end;
  end;

  Order_Main.EnableControls;
  if Application.MessageBox('确定要执行撤销操作吗？','提示',32+4)<>IDYES then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    Order_Main.DisableControls;
    with Order_Main do
    begin
      First;
      while Order_Main.Locate('SSel',True,[]) do
      begin
        with ADOQueryCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add('Update KuaiDi_Money Set ');
          sql.Add(' SSPerson=NUll,SSTime=NUll,Status='''',ChkStatus='''' ');
          sql.Add(' where KDID='''+Order_Main.fieldbyname('KDID').AsString+'''');
          sql.Add(' delete OA_Chk where MainId='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
          sql.Add(' and isnull(OAType,'''')=''寄件'' ');
          ExecSQL;
        end;
        Order_Main.Delete;
      end;
    end;
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.CommitTrans;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from OA_Chk where 1=2');
      Open;
    end;
    SCreateCDS20(ADOQueryTemp,CDS_Chk);
    SInitCDSData20(ADOQueryTemp,CDS_Chk);
    Exit;
  except
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常!','提示',0);
  end;
  {if Order_Main.IsEmpty then Exit;
  if cxTabControl1.TabIndex<>1 then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;
  if Application.MessageBox('确定要执行此操作吗？','提示',32+4)<>IDYES then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    Order_Main.DisableControls;
    with Order_Main do
    begin
      First;
      while Locate('SSel',True,[])=True do
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('UPdate KuaiDi_Money Set Status=Null,SSTime=Null,SSPerson=Null');
          sql.Add(' where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
          ExecSQL;
        end;
        Order_Main.Delete;
      end;
    end;
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.CommitTrans;
    
  except
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常!','提示',0);
  end;  }
end;

procedure TfrmKDList.ToolButton6Click(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if cxTabControl1.TabIndex<>2 then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;
  if Order_Main.Locate('SSel;KDNO',VarArrayOf([True,Null]),[loPartialKey])=True then
  begin
    Application.MessageBox('面单号不能为空!','提示',0);
    Exit;
  end;
  if Application.MessageBox('确定要执行此操作吗？','提示',32+4)<>IDYES then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    Order_Main.DisableControls;
    with Order_Main do
    begin
      First;
      while Locate('SSel',True,[])=True do
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('UPdate KuaiDi_Money Set Status=''已下单'',XDTime=getdate(),XDPerson='''+Trim(DName)+'''');
          sql.Add(',XDStatus=''已下单'',KDNO='''+Trim(Order_Main.fieldbyname('KDNO').AsString)+'''');
          sql.Add(' where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
          ExecSQL;
        end;
        Order_Main.Delete;
      end;
    end;
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.CommitTrans;
   
  except
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常!','提示',0);
  end;

end;

procedure TfrmKDList.ToolButton7Click(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if cxTabControl1.TabIndex<>4 then Exit;
  if Order_Main.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据!','提示',0);
    Exit;
  end;
  if Application.MessageBox('确定要执行此操作吗？','提示',32+4)<>IDYES then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    Order_Main.DisableControls;
    with Order_Main do
    begin
      First;
      while Locate('SSel',True,[])=True do
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('UPdate KuaiDi_Money Set Status=''审核通过'',XDTime=Null,XDPerson=Null');
          sql.Add(',XDStatus=Null,KDNO=Null');
          sql.Add(' where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
          ExecSQL;
        end;
        Order_Main.Delete;
      end;
    end;
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.CommitTrans;
   
  except
    Order_Main.EnableControls;
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常!','提示',0);
  end;
end;

procedure TfrmKDList.Tv1CellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  if Order_Main.IsEmpty then Exit;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from KuaiDi_Money_Sub ');
    sql.Add('where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
    Open;
  end;
  SCreateCDS20(ADOQueryTemp,ClientDataSet2);
  SInitCDSData20(ADOQueryTemp,ClientDataSet2);
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from OA_Chk where MainId='''+Trim(Order_Main.fieldbyname('KDId').AsString)+'''');
    sql.Add(' and OAType=''寄件'' ');
    Open;
  end;
  SCreateCDS20(ADOQueryTemp,CDS_Chk);
  SInitCDSData20(ADOQueryTemp,CDS_Chk);
  EditNote.Text:=trim(Order_Main.fieldbyname('EditNote').AsString);
end;

procedure TfrmKDList.TEditSQClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then exit;
  if cxTabControl1.TabIndex=0 then exit;
  if EditNote.Text='' then
  begin
    application.MessageBox('修改原因不能为空','提示');
    exit;
  end;
  frmZDYHelpSel:=TfrmZDYHelpSel.Create(self);
  with frmZDYHelpSel do
  begin
    flag:='OAChker';
    flagname:='OA审核人';
    MainType:=Trim(DName);
    if showModal=1 then
    begin
      with ClientDataSet1 do
      begin
        first;
        while not eof do
        begin
          if fieldbyname('Ssel').AsBoolean=true then
          begin
            if CDS_Chk.Locate('Chker',Trim(fieldbyname('ZdyName').AsString),[])=False then
            begin
              application.MessageBox('没有该合同的审核人','提示');
              exit;
            end;
            with ADOQueryTemp do
            begin
              Close;
              sql.Clear;
              sql.Add('Update OA_Chk Set ChkStatus=''单据修改'',chknote='''',ChkTime=getdate()');
              sql.Add(' where Mainid='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
              sql.Add(' and Chker='''+Trim(ClientDataSet1.fieldbyname('ZdyName').AsString)+'''');
              sql.Add(' and isnull(OAType,'''')=''寄件'' ');
              ExecSQL;
            end;
          end;
          next;
        end;
      end;
    end;
    free;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('Update KuaiDi_Money Set EditNote='''+Trim(EditNote.Text)+'''');
    sql.Add(',Status=''单据修改'',EditFlag=''1'',EditSQTime=getDate()');
    sql.Add(' where KDID='''+Trim(Order_Main.fieldbyname('KDID').AsString)+'''');
    ExecSQL;
  end;
  with Order_Main do
  begin
    Edit;
    fieldbyname('Status').Value:='单据修改';
    FieldByName('EditNote').Value:=Trim(EditNote.Text);
    fieldbyname('EditSQTime').Value:=SGetServerDate10(ADOQueryTemp);
    Post;
  end;
  EditNote.Text:='';
end;

procedure TfrmKDList.Image2Click(Sender: TObject);
begin
  panel4.Visible:=false;
end;

procedure TfrmKDList.TQSClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then exit;
  if order_Main.Locate('Ssel',true,[])=false then
  begin
    application.MessageBox('没有选择数据','提示');
    exit;
  end;
  panel4.Visible:=true;
end;

procedure TfrmKDList.Button1Click(Sender: TObject);
begin
  if application.MessageBox('确定要执行此操作','提示',1)=2 then exit;
  with Order_Main do
  begin
    first;
    while not eof do
    begin
      if fieldbyname('Ssel').AsBoolean then
      begin
        with ADOQueryCmd do
        begin
          close;
          sql.Clear;
          sql.Add('update KuaiDi_Money set QSDate='''+trim(formatdatetime('yyyy-MM-dd',QSDate.DateTime))+''' ');
          sql.add('where KDID='''+trim(Order_Main.fieldbyname('KDID').AsString)+'''');
          execsql;
        end;
        with Order_Main do
        begin
          edit;
          fieldbyname('QSDate').Value:=QSDate.DateTime;
        end;
      end;
      next;
    end;
    first;
  end;
end;

end.
