unit U_KnitClothInspList;

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, MovePanel, cxTextEdit,
  cxContainer, cxCurrencyEdit, BtnEdit, RM_e_main, RM_e_htm, RM_e_Graphic,
  RM_e_Jpeg, RM_e_txt, RM_e_csv, Math, Clipbrd, cxPC, cxLookAndFeels,
  cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, dxSkinsCore,
  dxSkinsDefaultPainters, dxDateRanges, U_BaseList, dxDateTimeWheelPicker,
  dxScrollbarAnnotations;

type
  TfrmKnitClothInspList = class(TfrmBaseList)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBClose: TToolButton;
    GPM_1: TcxGridPopupMenu;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DS_1: TDataSource;
    TBExport: TToolButton;
    Order_Main: TClientDataSet;
    btnEdit: TToolButton;
    TBZF: TToolButton;
    btnJBQ: TToolButton;
    RM1: TRMGridReport;
    RMDB_1: TRMDBDataSet;
    ADOQueryPrint: TADOQuery;
    MovePanel2: TMovePanel;
    btnJYBG: TToolButton;
    ToolButton1: TToolButton;
    PM_1: TPopupMenu;
    N1: TMenuItem;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column22: TcxGridDBColumn;
    v1Column21: TcxGridDBColumn;
    v1Column32: TcxGridDBColumn;
    v1Column1: TcxGridDBColumn;
    Tv1Column4: TcxGridDBColumn;
    v1Column13: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column17: TcxGridDBColumn;
    v1Column18: TcxGridDBColumn;
    v1Column23: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column27: TcxGridDBColumn;
    v1Column28: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    v1Column14: TcxGridDBColumn;
    v1Column12: TcxGridDBColumn;
    v1Column42: TcxGridDBColumn;
    Tv1Column7: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Panel6: TPanel;
    Label31: TLabel;
    LBCPAP: TLabel;
    BTLP: TButton;
    BTNP: TButton;
    TCBNOR: TComboBox;
    Tv1Column10: TcxGridDBColumn;
    Panel1: TPanel;
    Label3: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label10: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label23: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    OrderNo: TEdit;
    conNO: TEdit;
    CIID: TEdit;
    C_Name: TEdit;
    CIIOFlag: TComboBox;
    Filler: TComboBox;
    Loom: TEdit;
    IsJYTime: TCheckBox;
    C_Code: TEdit;
    Tv1Column1: TcxGridDBColumn;
    Tv1Column2: TcxGridDBColumn;
    Tv1Column3: TcxGridDBColumn;
    Tv1Column5: TcxGridDBColumn;
    Tv1Column6: TcxGridDBColumn;
    Tv1Column8: TcxGridDBColumn;
    Tv1Column9: TcxGridDBColumn;
    N2: TMenuItem;
    N3: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure btnEditClick(Sender: TObject);
    procedure TBZFClick(Sender: TObject);
    procedure btnJBQClick(Sender: TObject);
    procedure OrderNoKeyPress(Sender: TObject; var Key: Char);
    procedure BTLPClick(Sender: TObject);
    procedure BTNPClick(Sender: TObject);
    procedure TCBNORChange(Sender: TObject);
    procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure conNOKeyPress(Sender: TObject; var Key: Char);
    procedure CIIOFlagChange(Sender: TObject);
    procedure GradeChange(Sender: TObject);
    procedure KHConNOKeyPress(Sender: TObject; var Key: Char);
    procedure RKOrdIDKeyPress(Sender: TObject; var Key: Char);
    procedure btnJYBGClick(Sender: TObject);
    procedure Tv1CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
    procedure cxPageControl1Change(Sender: TObject);
    procedure chkZFClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
  private
    DQdate: TDateTime;
    FLeft, FTop: Integer;
    CurrentPage, RecordsNumber: Integer;
    procedure InitGrid();
    procedure SetStatus();
    { Private declarations }
  public
    FFInt: Integer;
    canshu1: string;
    { Public declarations }
  end;

implementation

uses
  U_DataLink, U_RTFun, U_KnitInspEdit, U_ZDYHelp, U_LabelPrint;

{$R *.dfm}

procedure TfrmKnitClothInspList.SetStatus();
begin
//  btnEdit.Enabled := False;
//  TBZF.Enabled := False;
//  btnHY.Enabled := False;
//  btnJBQ.Enabled := False;
//  btnJYBG.Enabled := False;
//
//  btnEdit.Enabled := True;
//  TBZF.Enabled := True;
//  btnJBQ.Enabled := True;
//  btnJYBG.Enabled := True;

end;

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

procedure TfrmKnitClothInspList.FormCreate(Sender: TObject);
begin
  inherited;
  cxgrid1.Align := alClient;
  DQdate := SGetServerDate(ADOQueryTemp);
end;

procedure TfrmKnitClothInspList.TBCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmKnitClothInspList.TBExportClick(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then
    Exit;
  TcxGridToExcel(self.Caption, cxgrid1);
end;

procedure TfrmKnitClothInspList.InitGrid();
var
  WSql: string;
begin
  MovePanel2.Left := (self.Width - MovePanel2.Width) div 2;
  MovePanel2.Visible := True;
  MovePanel2.Refresh;
  WSql := SGetFilters(Panel1, 1, 2);
  if trim(WSql) <> '' then
  begin
    WSql := ' and ' + trim(WSql);
  end;

  if IsJYTime.Checked then
  begin
    WSql := WSql + ' and Filltime>' + quotedstr(FormatDateTime('yyyy-MM-dd', BegDate.DateTime));
    WSql := WSql + ' and Filltime<=' + quotedstr(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1));
  end
  else
  begin
    if trim(WSql) <> '' then
      WSql := ' and 1=1' + trim(WSql)
    else
      WSql := WSql + ' and 1=2 ';
  end;
  if trim(WSql) = 'and 1=2' then
    Application.MessageBox('��ѡ�������ڻ�������������', '��ʾ', 0);

  try
    ADOQueryMain.DisableControls;

    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      sql.Add('exec P_Knit_Insp_Get_Page ');
      sql.Add(' @pageIndex=' + inttostr(CurrentPage));
      sql.Add(',@pageSize=' + inttostr(RecordsNumber));
      sql.Add(',@criteria= ' + quotedstr(WSql));
      Open;
    end;
    SCreateCDS(ADOQueryMain, Order_Main);
    SInitCDSData(ADOQueryMain, Order_Main);
    LBCPAP.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(Order_Main.FieldByName('TotalCount').AsInteger / RecordsNumber));

    MovePanel2.Visible := false;
  finally
    ADOQueryMain.EnableControls;
    MovePanel2.Visible := false;
    TV1.DataController.Filter.Clear;
  end;
end;

procedure TfrmKnitClothInspList.TBRafreshClick(Sender: TObject);
begin
  OrderNo.SetFocus;
  CurrentPage := 1;
  InitGrid();
end;

procedure TfrmKnitClothInspList.FormShow(Sender: TObject);
var
  fsj: string;
begin
  inherited;
  canshu1 := self.fParameters1;
  CurrentPage := 1;
  RecordsNumber := 500;
  ReadCxGrid(Trim(self.Caption) + 'Tv1', Tv1, 'ó�׼������');
  EndDate.DateTime := SGetServerDate(ADOQueryTemp);
  BegDate.DateTime := EndDate.DateTime;
  fsj := 'select distinct(Filler) name from Knit_Cloth_Inspect   ';
  SInitComBoxBySql(ADOQueryCmd, Filler, False, fsj);
//  Filler.ItemIndex := Filler.Items.IndexOf(trim(DName));


  InitGrid();
  SetStatus();
  InitGrid();
end;

procedure TfrmKnitClothInspList.Tv1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  FLeft := X;
  FTop := Y;
end;

procedure TfrmKnitClothInspList.btnEditClick(Sender: TObject);
begin
  if Order_Main.IsEmpty then
    exit;

  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from Knit_Cloth_IO where IOFlag=''���'' and StkId=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
    Open;
  end;
  if ADOQueryTemp.IsEmpty = False then
  begin
    Order_Main.EnableControls;
    Application.MessageBox('�Ѳ���������ݲ��ܱ༭!', '��ʾ', 0);
    Exit;
  end;
  try
    frmKnitInspEdit := TfrmKnitInspEdit.Create(Application);
    with frmKnitInspEdit do
    begin
      CIID.Text := Trim(Self.Order_Main.fieldbyname('CIID').AsString);
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmKnitInspEdit.Free;
  end;
end;

procedure TfrmKnitClothInspList.TBZFClick(Sender: TObject);
begin
  if Order_Main.Locate('ssel', True, []) = False then
  begin
    Application.MessageBox('û��ѡ������!', '��ʾ', 0);
    Exit;
  end;
  if Application.MessageBox('ȷ��Ҫ�������������Ϻ����ݲ��ָܻ���', '��ʾ', 32 + 4) <> IDYES then
    Exit;
  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 BS_Cloth_IO where BCIOID=''' + Trim(Order_Main.fieldbyname('BCIOID').AsString) + '''');
//          Open;
//        end;
//        if ADOQueryTemp.FieldByName('DJWCFlag').Value <> 0 then
//        begin
//          Order_Main.EnableControls;
//          Application.MessageBox('����ɲ���ɾ�����ȳ������!', '��ʾ', 0);
//          Exit;
//        end;

        with ADOQueryTemp do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from Knit_Cloth_IO where StkId=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + ''' and IOFlag=''���''');
          Open;
        end;
        if ADOQueryTemp.IsEmpty = False then
        begin
          Order_Main.EnableControls;
          Application.MessageBox('�Ѳ���������ݲ���ɾ��!', '��ʾ', 0);
          Exit;
        end
        else
        begin
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;

            sql.Add('insert into Knit_Cloth_Inspect_Del  select * from Knit_Cloth_Inspect where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('insert into Knit_Cloth_IO_Del  select * from  Knit_Cloth_IO where StkId=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('insert into Knit_Cloth_Stock_Del  select * from  Knit_Cloth_Stock where StkId=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('insert into Knit_Cloth_Inspect_Flaw_Del  select * from  Knit_Cloth_Inspect_Flaw where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');

            sql.Add('update Knit_Cloth_Inspect_Del set  DelId=' + quotedstr(trim(DCode)) + ',Deler=' + quotedstr(trim(DName)) + ',Deltime=getdate() where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('update Knit_Cloth_IO_Del set  DelId=' + quotedstr(trim(DCode)) + ',Deler=' + quotedstr(trim(DName)) + ',Deltime=getdate() where StkId=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('update Knit_Cloth_Stock_Del set  DelId=' + quotedstr(trim(DCode)) + ',Deler=' + quotedstr(trim(DName)) + ',Deltime=getdate() where StkId=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('update Knit_Cloth_Inspect_Flaw_Del set  DelId=' + quotedstr(trim(DCode)) + ',Deler=' + quotedstr(trim(DName)) + ',Deltime=getdate() where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('update knit_Plan_Card  set Status =''0'' where PCID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');

            sql.Add('delete Knit_Cloth_Inspect where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('delete Knit_Cloth_IO where StkId=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('delete Knit_Cloth_Stock where StkId=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('delete Knit_Cloth_Inspect_Flaw where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
            sql.Add('delete Knit_Cloth_knitter where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');

            sql.Add('insert into Knit_Need_Up(UType,UDataId) values(''����ɾ��'',' + quotedstr(Trim(Order_Main.fieldbyname('CIID').AsString)) + ')  ');

            //            ShowMessage(sql.text);

            ExecSQL;
          end;
        end;
        Order_Main.Delete;
      end
      else
        Next;
    end;
  end;
  Order_Main.EnableControls;

end;

procedure TfrmKnitClothInspList.btnJBQClick(Sender: TObject);
var
  fPrintFile, FLBName: string;
begin
  if Order_Main.IsEmpty 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 ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('Update Knit_Cloth_Inspect Set PrtCount=PrtCount+1,PrtDate=getdate(),Prter=''' + Trim(DName) + '''');
          sql.Add(' where CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
          ExecSQL;
        end;

        with ADOQueryPrint do
        begin
          Close;
          SQL.Clear;
          sql.Add(' EXEC P_Knit_Insp_Prt_Lab ');
          SQL.Add(' @CIID=''' + Trim(Order_Main.fieldbyname('CIID').AsString) + '''');
          Open;
        end;
        if ADOQueryPrint.IsEmpty then
        begin
          application.MessageBox('��ǩ����δ�ҵ���', '��ʾ��Ϣ', MB_ICONERROR);
          exit;
        end;

        FLBName := Trim(ADOQueryPrint.fieldbyname('LBName').AsString);
        ExportFtErpFile(FLBName + '.rmf', ADOQueryTemp);

        fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLBName + '.rmf';

        if FileExists(fPrintFile) then
        begin
          RM1.LoadFromFile(fPrintFile);
          Rm1.DefaultCopies := 2;
          RM1.PrintReport;
        end
        else
        begin
          Application.MessageBox(PChar('û����' + fPrintFile), '��ʾ', 0);
        end;
      end;
      Next;
    end;
  end;
  Order_Main.EnableControls;
end;

procedure TfrmKnitClothInspList.OrderNoKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    CurrentPage := 1;
    InitGrid();
  end;
end;

procedure TfrmKnitClothInspList.BTLPClick(Sender: TObject);
begin
  if CurrentPage > 1 then
    CurrentPage := CurrentPage - 1;
  InitGrid();
end;

procedure TfrmKnitClothInspList.BTNPClick(Sender: TObject);
begin
  if CurrentPage < Order_Main.FieldByName('TotalCount').AsInteger / RecordsNumber then
    CurrentPage := CurrentPage + 1;
  InitGrid();
end;

procedure TfrmKnitClothInspList.TCBNORChange(Sender: TObject);
begin
  RecordsNumber := StrToInt(TCBNOR.Text);
  CurrentPage := 1;
  InitGrid();
end;

procedure TfrmKnitClothInspList.ToolButton1Click(Sender: TObject);
begin
  WriteCxGrid(Trim(self.Caption) + 'Tv1', Tv1, 'ó�׼������');
end;

procedure TfrmKnitClothInspList.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
  Clipboard.SetTextBuf(PChar(Trim(Order_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
end;

procedure TfrmKnitClothInspList.chkZFClick(Sender: TObject);
begin
  inherited;
  CurrentPage := 1;
  SetStatus();
  InitGrid();
end;

procedure TfrmKnitClothInspList.conNOKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    CurrentPage := 1;
    InitGrid();
  end;
end;

procedure TfrmKnitClothInspList.cxPageControl1Change(Sender: TObject);
begin
  CurrentPage := 1;
  SetStatus();
  InitGrid();
end;

procedure TfrmKnitClothInspList.CIIOFlagChange(Sender: TObject);
begin
  CurrentPage := 1;
  InitGrid();
end;

procedure TfrmKnitClothInspList.GradeChange(Sender: TObject);
begin
  CurrentPage := 1;
  InitGrid();
end;

procedure TfrmKnitClothInspList.KHConNOKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    CurrentPage := 1;
    InitGrid();
  end;
end;

procedure TfrmKnitClothInspList.N1Click(Sender: TObject);
begin
  SelOKNo(Order_Main, true);
end;

procedure TfrmKnitClothInspList.N2Click(Sender: TObject);
begin
  SelOKNo(Order_Main, false);
end;

procedure TfrmKnitClothInspList.N3Click(Sender: TObject);
begin
  Clipboard.SetTextBuf(PChar(Trim(Order_Main.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
end;

procedure TfrmKnitClothInspList.RKOrdIDKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    CurrentPage := 1;
    InitGrid();
  end;
end;

procedure TfrmKnitClothInspList.btnJYBGClick(Sender: TObject);
var
  WSql: string;
begin
  if Order_Main.IsEmpty then
    Exit;
  WSql := '';
  Order_Main.DisableControls;
  with Order_Main do
  begin
    First;
    while not Eof do
    begin
      if Order_Main.fieldbyname('SSel').AsBoolean then
      begin
        if WSql <> '' then
        begin
          WSql := WSql + ',' + QuotedStr(Trim(Order_Main.fieldbyname('CIID').AsString));
        end
        else
        begin
          WSql := QuotedStr(Trim(Order_Main.fieldbyname('CIID').AsString));
        end;
      end;
      Next;
    end;
  end;
  Order_Main.Locate('SSel', True, []);
  Order_Main.EnableControls;
  try
    frmLabelPrint := TfrmLabelPrint.Create(Application);
    with frmLabelPrint do
    begin
      FLMType := 'KnitInsp';    //P_Do_Print_JYBB
      FFiltration1 := WSql;
      if ShowModal = 1 then
      begin
//        Self.InitGrid();
      end;
    end;
  finally
    frmLabelPrint.Free;
  end;

  if Order_Main.Locate('SSel', True, []) = False then
  begin
    Application.MessageBox('û��ѡ������', '��ʾ', 0);
    Exit;
  end;

end;

procedure TfrmKnitClothInspList.Tv1CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
var
  FValue: string;
  FBounds: TRect;
begin
  FBounds := AViewInfo.Bounds;
  if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
  begin
    ACanvas.FillRect(FBounds);
    ACanvas.DrawComplexFrame(FBounds, clBlack, clBlack, [bBottom, bLeft, bRight], 1);
    FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1);
    InflateRect(FBounds, -3, -2); //Platform specific. May not work on Linux.
    ACanvas.Font.Color := clBlack;
    ACanvas.Brush.Style := bsClear;
    ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop);
    ADone := True;
  end;
end;

end.