unit U_TradeSampleClothStkList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
  cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses,
  cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls,
  ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient,
  cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset,
  RM_System, RM_GridReport, Menus, cxCalendar, cxButtonEdit, cxTextEdit,
  cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters,
  cxNavigator, dxDateRanges, dxBarBuiltInMenu, U_BaseList, dxSkinWXI,
  dxScrollbarAnnotations, jpeg, Math, U_SLT;

type
  TfrmTradeSampleClothStkList = class(TfrmBaseList)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBFind: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DataSource1: TDataSource;
    GPM_1: TcxGridPopupMenu;
    CDS_Main: TClientDataSet;
    CDS_HZ: TClientDataSet;
    PopupMenu1: TPopupMenu;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column14: TcxGridDBColumn;
    v2Column1: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v2Column6: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Label3: TLabel;
    Label4: TLabel;
    Label8: TLabel;
    Label2: TLabel;
    C_name: TEdit;
    FromCoName: TEdit;
    C_spec: TEdit;
    BatchNo: TEdit;
    v1Column6: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    ToolButton2: TToolButton;
    Tv1Column1: TcxGridDBColumn;
    Tv1Column2: TcxGridDBColumn;
    Tv1Column3: TcxGridDBColumn;
    Tv1Column4: TcxGridDBColumn;
    Tv1Column5: TcxGridDBColumn;
    Tv1Column6: TcxGridDBColumn;
    Tv1Column7: TcxGridDBColumn;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    Tv1Column8: TcxGridDBColumn;
    Tv1Column9: TcxGridDBColumn;
    Tv1Column10: TcxGridDBColumn;
    Tv1Column11: TcxGridDBColumn;
    BCIID: TEdit;
    Label1: TLabel;
    ADOQuery1: TADOQuery;
    Panel9: TPanel;
    Panel10: TPanel;
    GroupBox1: TGroupBox;
    ScrollBox1: TScrollBox;
    Tv1Column12: TcxGridDBColumn;
    adoqueryPicture: TADOQuery;
    Tv1Column13: TcxGridDBColumn;
    ADOQuery2: TADOQuery;
    C_Code: TEdit;
    Label5: TLabel;
    ToolButton1: TToolButton;
    ToolButton3: TToolButton;
    Tv1Column14: TcxGridDBColumn;
    ADOQueryPrint: TADOQuery;
    RMDB_1: TRMDBDataSet;
    Rm1: TRMGridReport;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBRafreshClick(Sender: TObject);
    procedure ConNoMChange(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBFindClick(Sender: TObject);
    procedure MPRTCodeNameChange(Sender: TObject);
    procedure SXBatchNOChange(Sender: TObject);
    procedure FromCoNameChange(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure BCIIDKeyPress(Sender: TObject; var Key: Char);
    procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure ToolButton3Click(Sender: TObject);
  private
    procedure InitGrid();
    procedure InitImage();
    { Private declarations }
  public
    FstkName: string;
    { Public declarations }
  end;

var
  frmTradeSampleClothStkList: TfrmTradeSampleClothStkList;
  Mach: array of TfrmSlt;

implementation

uses
  U_DataLink, U_RTFun, U_ZDYHelp;

{$R *.dfm}

procedure TfrmTradeSampleClothStkList.FormDestroy(Sender: TObject);
begin
  inherited;
  frmTradeSampleClothStkList := nil;
end;

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

procedure TfrmTradeSampleClothStkList.FormCreate(Sender: TObject);
begin
  inherited;
  inherited;
end;

procedure TfrmTradeSampleClothStkList.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;
      sql.Add(' select CBMoney=ISNULL(A.CBPrice,0)*ISNULL(A.stkqty,0),A.* ');
      sql.Add(',IsImg=cast((case when (select COUNT(T.WBID) from TP_File T where T.FileType = ''YPCK'' and T.WBID=A.BCIOID)=0 then 0 else 1 end) as bit ) ');
      sql.Add(' from BS_Cloth_IO A    ');
      SQL.Add(' where A.IOFlag=''入库'' and (isnull(StkQty,0)>0 or isnull(StkPiece,0)>0) ');
      sql.Add(' and isnull(stkName,'''')=''' + Trim(FstkName) + '''');
//      ShowMessage(Sql.text);
      Open;
    end;
    SCreateCDS(ADOQueryMain, CDS_Main);
    SInitCDSData(ADOQueryMain, CDS_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmTradeSampleClothStkList.InitImage();
var
  i, j: integer;
  jpg: TJpegImage;
  myStream: TADOBlobStream;
begin

  j := length(Mach);
  if j > 0 then
  begin
    for i := 0 to j - 1 do
    begin
      Mach[i].free;
    end;
  end;
  SetLength(Mach, 0);
  if CDS_Main.IsEmpty then
    exit;
  try
    with adoqueryPicture do
    begin
      close;
      sql.Clear;
      sql.Add(' select A.TFID,A.WBID,A.FilesOther,A.FileName from TP_File A  ');
      sql.add('where  A.WBID=' + quotedstr(trim(CDS_Main.fieldbyname('BCIOID').AsString)));
      open;
    end;
    j := adoqueryPicture.RecordCount;
    if j < 1 then
      exit;
    adoqueryPicture.DisableControls;
    adoqueryPicture.First;
    SetLength(Mach, j);
    jpg := TJpegImage.Create();
    for i := 0 to j - 1 do
    begin
      if triM(adoqueryPicture.fieldbyname('FilesOther').AsString) <> '' then
      begin
        myStream := tadoblobstream.Create(tblobfield(adoqueryPicture.fieldbyname('FilesOther')), bmread);
        jpg.LoadFromStream(myStream);
        Mach[i] := TfrmSlt.Create(Self);
        Mach[i].Name := trim(adoqueryPicture.fieldbyname('TFID').AsString);
        Mach[i].Parent := ScrollBox1;
//        Mach[i].Left := 0;
        Mach[i].Top := 0 + i * 180;
        Mach[i].Init(adoqueryPicture.fieldbyname('TFID').AsString, adoqueryPicture.fieldbyname('FileName').AsString, jpg);
      end;
      adoqueryPicture.Next;
    end;
    adoqueryPicture.EnableControls;
  finally
    jpg.free;
    application.ProcessMessages;
  end;
end;

procedure TfrmTradeSampleClothStkList.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
  InitImage();
end;

procedure TfrmTradeSampleClothStkList.BCIIDKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    with ADOQuery2 do
    begin
      close;
      sql.Clear;
      sql.Add('select * from BS_Cloth_Info A where A.BCIID=''' + trim(BCIID.Text) + ''' ');
//      showmessage(sql.text);
      open;
    end;

    C_name.text := ADOQuery2.FieldByName('C_Name').ASString;
  end;

end;

procedure TfrmTradeSampleClothStkList.ConNoMChange(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  end;
end;

procedure TfrmTradeSampleClothStkList.TBCloseClick(Sender: TObject);
begin

  Close;
end;

procedure TfrmTradeSampleClothStkList.FormShow(Sender: TObject);
begin
  inherited;
  ReadCxGrid(trim(Self.Caption), Tv1, '贸易汇总仓库');
  InitGrid();
  InitImage();
end;

procedure TfrmTradeSampleClothStkList.TBFindClick(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_Main);
    SInitCDSData(ADOQueryMain, CDS_Main);
  end;
//  TBFind.Click
end;

procedure TfrmTradeSampleClothStkList.MPRTCodeNameChange(Sender: TObject);
begin
  TBFind.Click;
end;

procedure TfrmTradeSampleClothStkList.SXBatchNOChange(Sender: TObject);
begin
  TBFind.Click;
end;

procedure TfrmTradeSampleClothStkList.FromCoNameChange(Sender: TObject);
begin
  TBFind.Click;
end;

procedure TfrmTradeSampleClothStkList.ToolButton1Click(Sender: TObject);
var
  SavedTopRowIndex: Integer;
  PBCIOIDS: string;
begin
  if CDS_Main.IsEmpty then
    Exit;

  if CDS_Main.Locate('ssel', true, []) = False then
  begin
    Application.MessageBox('请选择数据', '提示', 0);
    exit;
  end;

  try
    SavedTopRowIndex := Self.Tv1.Controller.TopRowIndex;
    Self.CDS_Main.First;
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'StkPosition';
      flagname := '库位';
      MainType := FSTKName;
      if ShowModal = 1 then
      begin
        Self.CDS_Main.DisableControls;
        with Self.CDS_Main do
        begin
          First;
          while not eof do
          begin
            if FieldByName('ssel').value = true then
            begin
              if PBCIOIDS = '' then
                PBCIOIDS := PBCIOIDS + '''' + CDS_Main.FieldByName('BCIOID').AsString + ''''
              else
                PBCIOIDS := PBCIOIDS + ',''' + CDS_Main.FieldByName('BCIOID').AsString + '''';
            end;
            Next;
          end;
        end;
        Self.CDS_Main.EnableControls;

        with ADOQueryBaseCmd do
        begin
          close;
          sql.Clear;
          SQL.Add('update BS_Cloth_IO set stkposition = ' + QuotedStr(Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString)) + ' where BCIOID in (' + PBCIOIDS + ')');
          ExecSQL;
        end;
        Self.InitGrid();
        if SavedTopRowIndex < self.Tv1.DataController.RowCount then
          self.Tv1.Controller.TopRowIndex := SavedTopRowIndex;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmTradeSampleClothStkList.ToolButton2Click(Sender: TObject);
begin
  WriteCxGrid(trim(Self.Caption), Tv1, '贸易汇总仓库');
end;

procedure TfrmTradeSampleClothStkList.ToolButton3Click(Sender: TObject);
var
  fPrintFile, FLabVolume: string;
  SavedTopRowIndex: Integer;
begin
  if CDS_Main.IsEmpty then
    Exit;
  if CDS_Main.Locate('SSel', True, []) = False then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;
  SavedTopRowIndex := Self.Tv1.Controller.TopRowIndex;
  CDS_Main.DisableControls;
  with CDS_Main do
  begin
    First;
    while not Eof do
    begin
      if CDS_Main.FieldByName('SSel').AsBoolean = True then
      begin
        with ADOQueryPrint do
        begin
          Close;
          SQL.Clear;
          sql.Add(' EXEC P_BS_SampleCloth_In_Prt1 ');
          SQL.Add(' @Filtration=''' + Trim(CDS_Main.fieldbyname('BCIOID').AsString) + '''');
          Open;
        end;
        if ADOQueryPrint.IsEmpty then
        begin
          application.MessageBox('标签内容未找到！', '提示信息', MB_ICONERROR);
          exit;
        end;
        FLabVolume := '样品入库标签';
        ExportFtErpFile(FLabVolume + '.rmf', ADOQueryBaseTemp);
        fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLabVolume + '.rmf';

        if FileExists(fPrintFile) then
        begin
          RM1.LoadFromFile(fPrintFile);
//          if Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString) <> '次品标签' then
//            Rm1.DefaultCopies := 2
//          else
          Rm1.DefaultCopies := 1;
          RM1.PrintReport;
        end
        else
        begin
          Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0);
        end;
      end;
      Next;
    end;
  end;
  CDS_Main.EnableControls;
  if SavedTopRowIndex < self.Tv1.DataController.RowCount then
    self.Tv1.Controller.TopRowIndex := SavedTopRowIndex;
end;

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

procedure TfrmTradeSampleClothStkList.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  inherited;
  InitImage();
end;

end.

