unit U_YGYPZZChkList_JiaXinSH;

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, cxCheckBox, cxCalendar, cxSplitter,
  RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, RM_e_Xls,
  Menus, cxButtonEdit, cxDropDownEdit, cxPC;

type
  TfrmYGYPZZChkList_JiaXinSH = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: TToolButton;
    TBClose: TToolButton;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    Order_Main: TClientDataSet;
    TBView: TToolButton;
    Panel1: TPanel;
    PopupMenu1: TPopupMenu;
    N2: TMenuItem;
    N1: TMenuItem;
    TCXTJ: TToolButton;
    BegDate: TDateTimePicker;
    Label3: TLabel;
    EndDate: TDateTimePicker;
    cxTabControl1: TcxTabControl;
    cxGrid2: TcxGrid;
    TV2: TcxGridDBTableView;
    V2Chker: TcxGridDBColumn;
    V2Chktime: TcxGridDBColumn;
    V2Chkstatus: TcxGridDBColumn;
    V2chkNote: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    DataSource2: TDataSource;
    order_Sub: TClientDataSet;
    Label2: TLabel;
    TTiJiao: TToolButton;
    TNOTG: TToolButton;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1TBDate: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1GangWei: TcxGridDBColumn;
    v1Dept: TcxGridDBColumn;
    v1JXMoney: TcxGridDBColumn;
    v1JHJXDate: TcxGridDBColumn;
    v1SXJXdate: TcxGridDBColumn;
    v1JXNote: TcxGridDBColumn;
    v1JXStatus: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    TPrint: TToolButton;
    RM1: TRMGridReport;
    RMXLSExport1: TRMXLSExport;
    RMDBMain: TRMDBDataSet;
    Order_Print: TClientDataSet;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBFindClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBViewClick(Sender: TObject);
    procedure CustomerNoNameChange(Sender: TObject);
    procedure TCXTJClick(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure Tv1CellDblClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure TTiJiaoClick(Sender: TObject);
    procedure TNOTGClick(Sender: TObject);
    procedure TPrintClick(Sender: TObject);
  private
    canshu1:string;
    DQdate:TDateTime;
    procedure InitGrid();
    procedure InitForm();
    procedure setstatus();
    { Private declarations }
  public
    FFInt,FCloth:Integer;

    { Public declarations }
  end;

var
  frmYGYPZZChkList_JiaXinSH: TfrmYGYPZZChkList_JiaXinSH;

implementation
uses
  U_DataLink,U_RTFun,U_ZDYHelp, U_YGYPInPut,U_YGYPInPut_JiaXin;

{$R *.dfm}

procedure TfrmYGYPZZChkList_JiaXinSH.setstatus();
begin
  TTiJiao.Visible:=False;
  TCXTJ.Visible:=False;
  TNOTG.Visible:=False;
  case cxTabControl1.TabIndex of
    0:begin
        TTiJiao.Visible:=True;
        TNOTG.Visible:=True;
      end;
    1:begin
        //TCXTJ.Visible:=True;
      end;
    2:begin

      end;
  end;
end;

procedure TfrmYGYPZZChkList_JiaXinSH.FormDestroy(Sender: TObject);
begin
  frmYGYPZZChkList_JiaXinSH:=nil;
end;

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

procedure TfrmYGYPZZChkList_JiaXinSH.FormCreate(Sender: TObject);
begin
  canshu1:=Trim(DParameters1);
end;

procedure TfrmYGYPZZChkList_JiaXinSH.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('员工离职审核列表',Tv1,'OA管理');
end;

procedure TfrmYGYPZZChkList_JiaXinSH.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.Add('select A.*,B.*,C.* ');
      sql.Add(' from OA_YG_DangAn_JX A  ');
      sql.add(' inner join OA_Chk B on B.Mainid=A.JXID and B.OAType=''加薪申请'' ');
      sql.add(' inner join OA_YG_DangAn C on C.YGID=A.YGID ');
      if cxTabControl1.TabIndex<>0 then
      begin
        sql.Add(' where A.TBDate>='''+Trim(FormatDateTime('yyyy-MM-dd',BegDate.Date))+'''');
        sql.Add(' and A.TBDate<='''+Trim(FormatDateTime('yyyy-MM-dd',EndDate.Date+1))+'''');
      end;
      if cxTabControl1.TabIndex=0 then
      begin
        sql.Add(' where isnull(B.Chkstatus,'''')='''' ');
      end else
      if cxTabControl1.TabIndex=1 then
      begin
        sql.Add(' and isnull(B.Chkstatus,'''')=''加薪通过'' ');
      end;
      sql.add(' and B.Chker='''+trim(DName)+''' ');
      Open;
    end;
    SCreateCDS20(ADOQueryMain,Order_Main);
    SInitCDSData20(ADOQueryMain,Order_Main);
    with ADOQueryCmd do
    begin
      close;
      sql.clear;
      sql.add('select A.* from OA_Chk A ');
      sql.add('where A.Mainid='''+trim(Order_Main.fieldbyname('JXID').AsString)+''' ');
      sql.Add('and isnull(OAType,'''')=''加薪申请''');
      open;
    end;
    SCreateCDS20(ADOQueryCmd,Order_Sub);
    SInitCDSData20(ADOQueryCmd,Order_Sub);
  finally
    ADOQueryMain.EnableControls;
  end;
end;


procedure TfrmYGYPZZChkList_JiaXinSH.InitForm();
begin
  EndDate.Date:=SGetServerDate(ADOQueryTemp);
  BegDate.Date:=EndDate.Date-7;
  ReadCxGrid('员工加薪审核列表',Tv1,'OA管理');
  setstatus();
  InitGrid();
end;

procedure TfrmYGYPZZChkList_JiaXinSH.TBFindClick(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 TfrmYGYPZZChkList_JiaXinSH.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmYGYPZZChkList_JiaXinSH.FormShow(Sender: TObject);
begin
  InitForm();
end;

procedure TfrmYGYPZZChkList_JiaXinSH.TBViewClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  frmYGYPInPut_JiaXin:=TfrmYGYPInPut_JiaXin.create(self);
  with frmYGYPInPut_JiaXin do
  begin
    TBSave.Visible:=False;
    FJXID:=trim(Order_Main.fieldbyname('JXID').AsString);
    if showModal=1 then
    begin

    end;
    free;
  end;
  initGrid();
end;

procedure TfrmYGYPZZChkList_JiaXinSH.CustomerNoNameChange(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 TfrmYGYPZZChkList_JiaXinSH.TCXTJClick(Sender: TObject);
var FNXMoney: double;
begin
  if Order_Main.IsEmpty then Exit;
  if Application.MessageBox('确定要执行撤销操作吗？','提示',32+4)<>IDYES then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    if Order_Main.fieldbyname('JXStatus').AsString='已加薪' then
    begin
      with ADOQueryMain do
      begin
        close;
        sql.Clear;
        sql.Add('select * from OA_YG_DangAn ');
        sql.add('where YGID='''+trim(Order_Main.fieldbyname('YGID').AsString)+'''');
        open;
      end;
      FNXMoney:=ADOQueryMain.fieldbyname('GRNXMoney').AsFloat;
      with ADOQueryCmd do
      begin
        close;
        sql.Clear;
        sql.Add('update OA_YG_DangAn set GRNXMoney='''+floattostr(FNXMoney-Order_Main.fieldbyname('JXMoney').AsFloat)+''' ');
        sql.add('where YGID='''+trim(Order_Main.fieldbyname('YGID').AsString)+'''');
        execsql;
      end;
    end;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('Update OA_YG_DangAn_JX Set JXStatus=''已提交'' ');
      sql.Add(' where JXID='''+Order_Main.fieldbyname('JXID').AsString+'''');
      ExecSQL;
    end;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('Update OA_Chk set ChkStatus='''' ');
      sql.Add(' where CKID='''+Order_Main.fieldbyname('CKID').AsString+'''');
      ExecSQL;
    end;
    initGrid();
    ADOQueryCmd.Connection.CommitTrans;
    Exit;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常!','提示',0);
  end;
end;

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

procedure TfrmYGYPZZChkList_JiaXinSH.Tv1CellDblClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  TBView.Click;
end;

procedure TfrmYGYPZZChkList_JiaXinSH.Tv1CellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  with ADOQueryCmd do
    begin
      close;
      sql.clear;
      sql.add('select A.* from OA_Chk A ');
      sql.add('where A.Mainid='''+trim(Order_Main.fieldbyname('JXID').AsString)+''' ');
      sql.Add('and isnull(OAType,'''')=''加薪申请''');
      open;
    end;
    SCreateCDS20(ADOQueryCmd,Order_Sub);
    SInitCDSData20(ADOQueryCmd,Order_Sub);
end;

procedure TfrmYGYPZZChkList_JiaXinSH.TTiJiaoClick(Sender: TObject);
var FNXMoney: double;
begin
  if Order_Main.IsEmpty then exit;
  try
    if trim(DParameters1)='高权限' then
    begin
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        sql.Add('Update OA_Chk Set ');
        sql.Add('ChkTime=getdate(),Chkstatus=''加薪通过'' ');
        sql.Add('where Mainid='''+trim(Order_Main.fieldbyname('Mainid').AsString)+''' ');
        sql.add('and OAType=''加薪申请''');
        ExecSQL;
      end;
      {with ADOQueryMain do
      begin
        Close;
        SQL.Clear;
        sql.Add('Update OA_Chk Set ');
        sql.Add(' chkNote='''+trim(order_Sub.fieldbyname('chkNote').AsString)+''' ');
        sql.Add(' where CKID='''+trim(Order_Main.fieldbyname('CKID').AsString)+''' ');
        ExecSQL;
      end; }
    end
    else
    begin
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        sql.Add('Update OA_Chk Set ');
        sql.Add(' ChkTime=getdate(),Chkstatus=''加薪通过'' ');
        sql.Add(' where CKID='''+trim(Order_Main.fieldbyname('CKID').AsString)+''' ');
        ExecSQL;
      end;
    end;
    with ADOQueryCmd do
    begin
      close;
      sql.clear;
      sql.add('select A.* from OA_Chk A ');
      sql.add('where A.Mainid='''+trim(Order_Main.fieldbyname('Mainid').AsString)+''' ');
      sql.add('and isnull(A.Chkstatus,'''')<>''加薪通过'' ');
      sql.add('and isnull(A.OAType,'''')=''加薪申请''');
      open;
    end;
    if ADOQueryCmd.IsEmpty then
    begin
      with ADOQueryMain do
      begin
        close;
        sql.Clear;
        sql.add('update OA_YG_DangAn_JX set ');
        sql.add('JXStatus=''加薪通过'' ');
        sql.Add(' where JXID='''+trim(Order_Main.fieldbyname('JXID').AsString)+'''');
        execsql;
      end;
      if SGetServerDate(ADOQueryTemp)>Order_Main.fieldbyname('SXJXdate').AsDateTime then
      begin
        with ADOQueryMain do
        begin
          close;
          sql.Clear;
          sql.Add('select * from OA_YG_DangAn ');
          sql.add('where YGID='''+trim(Order_Main.fieldbyname('YGID').AsString)+'''');
          open;
        end;
        FNXMoney:=ADOQueryMain.fieldbyname('GRNXMoney').AsFloat;
        with ADOQueryTemp do
        begin
          close;
          sql.Clear;
          sql.Add('update OA_YG_DangAn set GRNXMoney='''+floattostr(FNXMoney+Order_Main.fieldbyname('JXMoney').AsFloat)+''' ');
          sql.add('where YGID='''+trim(Order_Main.fieldbyname('YGID').AsString)+'''');
          execsql;
        end;
        with ADOQueryMain do
        begin
          close;
          sql.Clear;
          sql.add('update OA_YG_DangAn_JX set ');
          sql.add('JXStatus=''已加薪'' ');
          sql.Add(' where JXID='''+trim(Order_Main.fieldbyname('JXID').AsString)+'''');
          execsql;
        end;
      end;
    end;
    application.MessageBox('审核成功','提示');
    initGrid();
  except;
    application.MessageBox('审核失败','提示');
    exit;
  end;
end;

procedure TfrmYGYPZZChkList_JiaXinSH.TNOTGClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then Exit;
  if Application.MessageBox('确定要执行撤销操作吗？','提示',32+4)<>IDYES then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('Update OA_YG_DangAn_JX Set JXStatus=''不通过''');
      sql.Add(' where JXID='''+Order_Main.fieldbyname('JXID').AsString+'''');
      ExecSQL;
    end;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('delete from OA_Chk ');
      sql.Add(' where Mainid='''+Order_Main.fieldbyname('JXID').AsString+'''');
      sql.Add(' and isnull(OAType,'''')=''加薪申请'' ');
      ExecSQL;
    end;
    initGrid();
    ADOQueryCmd.Connection.CommitTrans;
    Exit;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('操作异常!','提示',0);
  end;
end;

procedure TfrmYGYPZZChkList_JiaXinSH.TPrintClick(Sender: TObject);
var
  fPrintFile:String;
begin
  if Order_Main.IsEmpty then Exit;
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\加薪申请单.rmf' ;
  with ADOQueryCmd do
  begin
    Filtered:=False;
    Close;
    sql.Clear;
    sql.Add('select A.*,B.* ');
    sql.Add(' from OA_YG_DangAn_JX A  ');
    sql.add(' inner join OA_YG_DangAn B on B.YGID=A.YGID ');
    sql.Add(' where JXID='''+trim(Order_Main.fieldbyname('JXID').AsString)+'''');
    Open;
  end;
  SCreateCDS20(ADOQueryCmd,Order_Print);
  SInitCDSData20(ADOQueryCmd,Order_Print);
  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;
    //RM1.PrintReport;
  end else
  begin
    Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\加薪申请单.rmf'),'提示',0);
    Exit;
  end;
end;

end.
