unit U_OrderSel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, ADODB, DBClient, ComCtrls,
  ExtCtrls, cxGridLevel, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid,
  cxGridCustomPopupMenu, cxGridPopupMenu, cxCheckBox;

type
  TfrmOrderSel = class(TForm)
    cxGrid1: TcxGrid;
    Tv2: TcxGridDBTableView;
    v1OrderNo: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column14: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    v1PRTMF: TcxGridDBColumn;
    v1PRTKZ: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Panel1: TPanel;
    Label2: TLabel;
    OrderNo: TEdit;
    Label3: TLabel;
    PRTColor: TEdit;
    Label6: TLabel;
    MPRTMF: TEdit;
    Label7: TLabel;
    MPRTKZ: TEdit;
    CDS_OrderSel: TClientDataSet;
    DataSource1: TDataSource;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    cxGridPopupMenu1: TcxGridPopupMenu;
    v2Column2: TcxGridDBColumn;
    Label8: TLabel;
    CustomerNoName: TEdit;
    Label9: TLabel;
    MPRTCodeName: TEdit;
    v2Column3: TcxGridDBColumn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure OrderNoChange(Sender: TObject);
    procedure Tv2CellDblClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
  private
    { Private declarations }
    procedure InitGrid();
  public
    { Public declarations }
  end;

var
  frmOrderSel: TfrmOrderSel;

implementation
uses
  U_DataLink,U_Fun ;

{$R *.dfm}

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

procedure TfrmOrderSel.Button2Click(Sender: TObject);
var
  KHName:String;
begin
  if CDS_OrderSel.Locate('SSel',True,[])=False then
  begin
    Application.MessageBox('没有选择数据！','提示',0);
    Exit;
  end;
  CDS_OrderSel.DisableControls;
  KHName:='';
  with CDS_OrderSel do
  begin
    First;
    while not Eof do
    begin
      if FieldByName('SSel').AsBoolean=True then
      begin
        if Trim(KHName)='' then
        begin
          KHName:=Trim(fieldbyname('CustomerNo').AsString);
        end else
        begin
          if Trim(fieldbyname('CustomerNo').AsString)<>KHName then
          begin
            Application.MessageBox('不能选择不同客户！','提示',0);
            Exit;
          end;
        end;
      end;
      Next;
    end;
  end;
  CDS_OrderSel.EnableControls;
  ModalResult:=1;
end;

procedure TfrmOrderSel.FormDestroy(Sender: TObject);
begin
  frmOrderSel:=nil;
end;

procedure TfrmOrderSel.Button3Click(Sender: TObject);
begin
  ModalResult:=-1;
  WriteCxGrid('订单选择',Tv2,'成品仓库');
  Close;
end;

procedure TfrmOrderSel.FormShow(Sender: TObject);
begin
  ReadCxGrid('订单选择',Tv2,'成品仓库');
  InitGrid();
end;

procedure TfrmOrderSel.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered:=False;
      Close;
      sql.Clear;
      sql.Add('select A.*,B.*');
      sql.Add(' from JYOrder_Main A inner join JYOrder_Sub B on A.MainId=B.Mainid');
      sql.Add(' where exists(select * from CK_BanCP_CR AA inner join CK_BanCP_KC BB on AA.CRID=BB.CRID ');
      sql.Add('              where AA.MainId=A.MainId and AA.SubId=B.SubId and AA.CRType=''正常入库'' and BB.KCQty>0)');

      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_OrderSel);
    SInitCDSData20(ADOQueryMain,CDS_OrderSel);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmOrderSel.Button1Click(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmOrderSel.OrderNoChange(Sender: TObject);
begin
  SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
  SCreateCDS20(ADOQueryMain,CDS_OrderSel);
  SInitCDSData20(ADOQueryMain,CDS_OrderSel);
end;

procedure TfrmOrderSel.Tv2CellDblClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  ModalResult:=1;
end;

end.
