unit U_FrmCgBJList;

interface

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

type
  TFrmCgBJList = class(TForm)
    ToolBar1: TToolBar;
    Tadd: TToolButton;
    Tupdate: TToolButton;
    Tdel: TToolButton;
    TClose: TToolButton;
    TSel: TToolButton;
    TINIT: TToolButton;
    TV1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    TVSQNo: TcxGridDBColumn;
    TVSQName: TcxGridDBColumn;
    TVNote: TcxGridDBColumn;
    TVC_CodeName: TcxGridDBColumn;
    TVC_Spec: TcxGridDBColumn;
    TVMFQty: TcxGridDBColumn;
    TVKZQty: TcxGridDBColumn;
    cxGridPopupMenu1: TcxGridPopupMenu;
    DataSource1: TDataSource;
    ADOQueryTmp: TADOQuery;
    ADOQueryDel: TADOQuery;
    Panel1: TPanel;
    cxTabControl1: TcxTabControl;
    Label1: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    Tchk: TToolButton;
    TNochk: TToolButton;
    cds_Main: TClientDataSet;
    Label2: TLabel;
    PONo: TEdit;
    Label3: TLabel;
    ConNo: TEdit;
    Label4: TLabel;
    P_CodeName: TEdit;
    Label5: TLabel;
    P_Spec: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Tglv: TToolButton;
    TVchktime: TcxGridDBColumn;
    TVchker: TcxGridDBColumn;
    P_MF: TEdit;
    P_KZ: TEdit;
    V1ConNo: TcxGridDBColumn;
    V1PONo: TcxGridDBColumn;
    V1Column1: TcxGridDBColumn;
    TPrint: TToolButton;
    RM1: TRMGridReport;
    RMXLSExport1: TRMXLSExport;
    RMDBMain: TRMDBDataSet;
    ADOQueryPrint: TADOQuery;
    RMDBsub: TRMDBDataSet;
    V1Column2: TcxGridDBColumn;
    V1Column4: TcxGridDBColumn;
    cxGrid2: TcxGrid;
    TV2: TcxGridDBTableView;
    V1Column6: TcxGridDBColumn;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    cxGridDBColumn5: TcxGridDBColumn;
    TVC_Note: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    DataSource2: TDataSource;
    ADOQuerySub: TADOQuery;
    cxSplitter1: TcxSplitter;
    TBCopy: TToolButton;
    DateTimePicker1: TDateTimePicker;
    TV1Column1: TcxGridDBColumn;
    TV1Column2: TcxGridDBColumn;
    TV1Column3: TcxGridDBColumn;
    TV1Column4: TcxGridDBColumn;
    TV1Column5: TcxGridDBColumn;
    ADOQueryMain: TADOQuery;
    TV1Column6: TcxGridDBColumn;
    TV1Column7: TcxGridDBColumn;
    RMDB_HZ: TRMDBDataSet;
    ADOQuery1: TADOQuery;
    TV1Column8: TcxGridDBColumn;
    Label8: TLabel;
    orderno: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure TCloseClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TaddClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TSelClick(Sender: TObject);
    procedure TupdateClick(Sender: TObject);
    procedure TINITClick(Sender: TObject);
    procedure TV1DblClick(Sender: TObject);
    procedure TdelClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure TchkClick(Sender: TObject);
    procedure TNochkClick(Sender: TObject);
    procedure PONoChange(Sender: TObject);
    procedure TglvClick(Sender: TObject);
    procedure TPrintClick(Sender: TObject);
    procedure TV1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure TBCopyClick(Sender: TObject);
    procedure ordernoChange(Sender: TObject);
  private
    procedure initData();
    procedure setStatus();
    procedure InitSub();
    { Private declarations }
  public
    Ftype: string;
    { Public declarations }
  end;

var
  FrmCgBJList: TFrmCgBJList;

implementation

uses U_DataLink,U_Fun,U_frmCgBjPut;

{$R *.dfm}
procedure TFrmCgBJList.InitSub();
begin
  ADOQuerySub.Close;
  IF cds_Main.IsEmpty then exit;
  with ADOQuerySub do
  begin
    close;
    sql.Clear;
    sql.Add('select * from Contract_Sub_Sh ');
    sql.Add('where mainID ='+quotedstr((cds_Main.fieldbyname('mainID').AsString)));
    open;
  end;
end;

procedure TFrmCgBJList.setStatus();
begin
  Tupdate.Enabled:=true;
  Tdel.Enabled:=true;
  Tnochk.Visible:=False;
  Tchk.Visible:=False;
  if trim(Ftype)='高权限' then
  begin
    if cxTabControl1.TabIndex=0 then
    begin
      Tupdate.Enabled:=true;
      Tdel.Enabled:=true;
      Tchk.Visible:=true;
    end;
    if cxTabControl1.TabIndex=1 then
    begin
      Tnochk.Visible:=true;
    end;
  end
  else
  begin
    if cxTabControl1.TabIndex=0 then
    begin
      Tupdate.Enabled:=true;
      Tdel.Enabled:=true;
    end;
  end;
end;

procedure TFrmCgBJList.initData();
begin
  with ADOQueryMain do
  begin
    close;
    sql.Clear;
    sql.Add('select A.* ');
    sql.add('from CGBJ_Main A ');
//    sql.Add('inner join CGBJ_zb D on D.mainid=A.mainid ');
    sql.Add('where A.SQDate>='''+formatdatetime('yyyy-MM-dd',begdate.datetime)+''' ' );
    sql.Add('and A.SQDate<'''+formatdatetime('yyyy-MM-dd',Enddate.datetime+1)+''' ' );
//    if cxtabControl1.TabIndex=0 then
//    sql.Add('and A.ChkStatus=''0'' ');
//    if CxtabControl1.TabIndex=1 then
//    sql.Add('and A.ChkStatus=''1'' ');
    if trim(Ftype)<>'高权限' then
    begin
      sql.Add('and A.SQName='''+trim(DName)+'''');
    end;
//    ShowMessage(SQL.Text);
    open;
  end;
  SCreateCDS20(ADOQueryMain,cds_Main);
  SInitCDSData20(ADOQueryMain,cds_Main);
end;

procedure TFrmCgBJList.FormCreate(Sender: TObject);
begin
  cxGrid1.Align:=alclient;
end;

procedure TFrmCgBJList.TCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TFrmCgBJList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//  writeCxGrid(self.Caption+tv1.Name,Tv1);
  action:=cafree;
end;

procedure TFrmCgBJList.TaddClick(Sender: TObject);
begin
  try
    frmCgBjPut:=TfrmCgBjPut.create(self);
    with frmCgBjPut do
    begin
      PState:=0;
      FMainId:='';
      if showmodal=1 then                          
      begin
        initData();
      end;
    end;
  finally
    frmCgBjPut.free;
  end;
end;

procedure TFrmCgBJList.FormShow(Sender: TObject);
begin
  ReadCxGrid(self.Caption+tv1.Name,Tv1);
  begdate.datetime:=SGetServerDateTime(ADOQueryTmp)-7;
  enddate.datetime:=SGetServerDateTime(ADOQueryTmp);
  setStatus();
  initdata();
end;

procedure TFrmCgBJList.TSelClick(Sender: TObject);
begin
//  if cds_Main.IsEmpty then exit;
//  frmFabSQ:=TfrmFabSQ.create(self);
//  with frmFabSQ do
//  begin
//    formid:=2;
//    FMainId:=trim(FrmCgBJList.cds_Main.fieldbyname('Mainid').AsString);
//    showmodal;
//    free;
//  end;
end;

procedure TFrmCgBJList.TupdateClick(Sender: TObject);
begin
//  if cds_Main.IsEmpty then exit;
//  try
//    frmFabSQ:=TfrmFabSQ.create(self);
//    with frmFabSQ do
//    begin
//      formid:=1;
//      FMainId:=trim(FrmCgBJList.cds_Main.fieldbyname('Mainid').AsString);
//      if showmodal=1 then
//      begin
//        initData();
//      end;
//    end;
//  finally
//    frmFabSQ.free;
//  end;

  try
    frmCgBjPut:=TfrmCgBjPut.create(self);
    with frmCgBjPut do
    begin
      PState:=1;
      FMainId:=Trim(Self.cds_Main.fieldbyname('MainId').AsString);;
      if showmodal=1 then
      begin
        initData();
      end;
    end;
  finally
    frmCgBjPut.free;
  end;
end;

procedure TFrmCgBJList.TINITClick(Sender: TObject);
begin
  initData();
end;

procedure TFrmCgBJList.TV1DblClick(Sender: TObject);
begin
  Tsel.Click;
end;

procedure TFrmCgBJList.TdelClick(Sender: TObject);
begin
  if cds_Main.IsEmpty then exit;
  if application.MessageBox('确定要删除吗？','提示',1)=2 then exit;
  try
    with ADOQueryDel do
    begin
      close;
      sql.Clear;
      sql.Add('delete from CGBJ_Main ');
      sql.Add('where mainid='''+trim(cds_Main.fieldbyname('Mainid').AsString)+'''');
      sql.Add('delete from CGBJ_Sub ');
      sql.Add('where mainid='''+trim(cds_Main.fieldbyname('Mainid').AsString)+'''');
      sql.Add('delete from CGBJ_ZB ');
      sql.Add('where mainid='''+trim(cds_Main.fieldbyname('Mainid').AsString)+'''');
      execsql;
    end;
  except
    application.messagebox('数据删除失败','提示',0);
  end;
  initdata();
end;

procedure TFrmCgBJList.FormDestroy(Sender: TObject);
begin
  FrmCgBJList:=nil;
end;

procedure TFrmCgBJList.cxTabControl1Change(Sender: TObject);
begin
  setStatus();
  initData();
end;

procedure TFrmCgBJList.TchkClick(Sender: TObject);
begin
  if cds_Main.IsEmpty then exit;
  try
    with ADOQueryTmp do
    begin
      close;
      sql.Clear;
      sql.Add('update contract_Main_Sh set chkstatus=''1'',chktime=getdate(),chker='+quotedstr(trim(Dname)));
      sql.Add(' where Mainid='''+trim(cds_Main.fieldbyname('Mainid').asstring)+'''');
      execsql;
    end;
    application.MessageBox('审核成功','提示');
    initdata();
  except
    application.messagebox('审核失败','提示');
  end;
end;

procedure TFrmCgBJList.TNochkClick(Sender: TObject);
begin
  if cds_Main.IsEmpty then exit;
  try
  {  with ADOQueryTmp do
    begin
      close;
      sql.Clear;
      sql.Add('select * from Contract_Main ');
      sql.add('where SQNo='''+trim(cds_Main.fieldbyname('SQNo').asstring)+'''');
      open;
      if not isempty then
      begin
        application.MessageBox('已采购不能撤销','提示');
        exit;
      end;
    end; }
    with ADOQueryTmp do
    begin
      close;
      sql.Clear;
      sql.Add('update contract_Main_Sh set chkstatus=''0'',chktime=null,chker=null');
      sql.add(' where Mainid='''+trim(cds_Main.fieldbyname('Mainid').asstring)+'''');
      execsql;
    end;
    application.MessageBox('撤销成功','提示');
    initdata();
  except
    application.MessageBox('撤销失败','提示');
  end;
end;

procedure TFrmCgBJList.PONoChange(Sender: TObject);
begin
  SDofilter(AdoQueryTmp,SGetFilters(Panel1,1,0));
  SCreateCDS20(AdoQueryTmp,cds_Main);
  SInitCDSData20(AdoQueryTmp,cds_Main);
end;

procedure TFrmCgBJList.TglvClick(Sender: TObject);
begin
  SDofilter(AdoQueryTmp,SGetFilters(Panel1,1,0));
  SCreateCDS20(AdoQueryTmp,cds_Main);
  SInitCDSData20(AdoQueryTmp,cds_Main);
end;

procedure TFrmCgBJList.TPrintClick(Sender: TObject);
var
  fPrintFile:string;
begin
  if cds_Main.IsEmpty then exit;
  with ADOQueryPrint do
  begin
    close;
    sql.clear;
    sql.Add('select a.*,B.* ');
    sql.add('from CGBJ_Main A ');
    sql.Add('inner join CGBJ_Sub B on B.Mainid=A.Mainid  ');
//    sql.Add(' left join CGBJ_ZB D on D.mainID=A.Mainid ');
//    sql.Add('inner join CGBJ_ZB D on D.Mainid=A.Mainid ');
  //  sql.Add('left join JYOrderFy_Other C on C.OrderNo=A.FYNO ');
    sql.Add('where A.Mainid='''+trim(cds_Main.fieldbyname('Mainid').asstring)+''' ');
//    ShowMessage(SQL.Text);
    open;
  end;

  with ADOQuery1 do
  begin
    close;
    sql.clear;
    sql.Add(' select * from CGBJ_ZB where MainId='''+trim(cds_Main.fieldbyname('Mainid').asstring)+'''');

    open;
  end;
  fPrintFile:=ExtractFilePath(Application.ExeName)+'Report\采购报价表.rmf' ;
  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('没有找'+trim(fPrintFile)),'提示',0);
  end;
end;

procedure TFrmCgBJList.TV1CellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  initsub();
end;

procedure TFrmCgBJList.TBCopyClick(Sender: TObject);
begin
//  if cds_Main.IsEmpty then exit;
//  begin
//    formid:=3;
//    FMainId:=trim(FrmCgBJList.cds_Main.fieldbyname('Mainid').AsString);
//    showmodal;
//    free;
//  end;

    frmCgBjPut:=TfrmCgBjPut.create(self);
    with frmCgBjPut do
    begin
      PState := 1;
      CopyInt := 99;
      FMainId := Trim(Self.cds_Main.fieldbyname('MainId').AsString);
      if showmodal=1 then
      begin
        initData();
      end;
    end;

end;

procedure TFrmCgBJList.ordernoChange(Sender: TObject);
begin
  with ADOQueryMain do
  begin
    close;                                     
    sql.Clear;
    sql.Add('select A.* ');
    sql.add('from CGBJ_Main A ');
    sql.Add('where A.SQDate>='''+formatdatetime('yyyy-MM-dd',begdate.datetime)+''' ' );
    sql.Add('and A.SQDate<'''+formatdatetime('yyyy-MM-dd',Enddate.datetime+1)+''' ' );
      sql.Add('and A.orderno   like '''+'%'+Trim(OrderNo.Text)+'%'+'''  ');
    if trim(Ftype)<>'高权限' then
    begin
      sql.Add('and A.SQName='''+trim(DName)+'''');
    end;

    open;
  end;
  SCreateCDS20(ADOQueryMain,cds_Main);
  SInitCDSData20(ADOQueryMain,cds_Main);
end;

end.
