unit U_SMPBKcHZList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, cxStyles, cxCustomData,
  cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData,
  cxButtonEdit, cxDropDownEdit, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView,
  cxGrid, DBClient, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, cxCheckBox,
  RM_Common, RM_Class, RM_GridReport, RM_System, RM_Dataset, MMSystem, Menus,
  BtnEdit, U_SLT, jpeg, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator,
  cxTextEdit;

type
  TfrmSMPBKcHZList = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBExport: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    Label3: TLabel;
    P_CodeName: TEdit;
    ADOQueryCmd: TADOQuery;
    ADOQueryTmp: TADOQuery;
    DataSource1: TDataSource;
    CDS_Main: TClientDataSet;
    cxGridPopupMenu1: TcxGridPopupMenu;
    Label7: TLabel;
    P_Color: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    kuwei: TEdit;
    ADOQueryPrint: TADOQuery;
    RMDB_Main: TRMDBDataSet;
    RM1: TRMGridReport;
    ADOQueryMain: TADOQuery;
    Label13: TLabel;
    P_Code: TEdit;
    Label18: TLabel;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    ToolButton2: TToolButton;
    GroupBox1: TGroupBox;
    ScrollBox1: TScrollBox;
    adoqueryPicture: TADOQuery;
    CheckBox1: TCheckBox;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Ssel: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1P_CodeName: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1P_SPEC: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Qty: TcxGridDBColumn;
    v1QtyUnit: TcxGridDBColumn;
    Tv1Column3: TcxGridDBColumn;
    v1Note: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure P_CodeNameChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TOkClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);

    procedure ToolButton2Click(Sender: TObject);

    procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure ToolButton3Click(Sender: TObject);

    procedure OrderNoKeyPress(Sender: TObject; var Key: Char);
    procedure Tv1Column1PropertiesEditValueChanged(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Tv1DblClick(Sender: TObject);
    procedure v1QtyPropertiesEditValueChanged(Sender: TObject);
    procedure v1NotePropertiesEditValueChanged(Sender: TObject);
    procedure Tv1Column3PropertiesEditValueChanged(Sender: TObject);
    procedure Tv1Column4PropertiesEditValueChanged(Sender: TObject);
  private
    procedure InitGrid();
    procedure SetStatus();
    procedure InitImage();
    { Private declarations }
  public
    fType: integer;
    fCKName: string;
    CANSHU1: string;
    
    { Public declarations }
  end;

var
  frmSMPBKcHZList: TfrmSMPBKcHZList;

var
  Mach: array of TfrmSlt;

implementation

uses
  U_DataLink, U_Fun10, U_ZDYHelp;
{$R *.dfm}

procedure TfrmSMPBKcHZList.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,B.FileName from TP_File A,XD_File B  where A.TFID =B.XFID ');
      if CDS_Main.IsEmpty = False then
      begin
        sql.Add('and A.WBID=' + quotedstr(trim(CDS_Main.fieldbyname('MJID').AsString)));
      end
      else
      begin
        sql.add(' and 1=2');
      end;
      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 + i * 165;
        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 TfrmSMPBKcHZList.SetStatus();
begin

  v1Qty.Visible := False;
  v1Qty.Hidden := True;

  if Trim(CANSHU1) <> '客服' then
  begin
    v1Qty.Visible := true;
    v1Qty.Hidden := False;

  end;

end;

procedure TfrmSMPBKcHZList.InitGrid();
begin
  try
    with adoqueryMain do
    begin
      close;
      sql.Clear;
      sql.Add(' select A.* ');
      SQL.Add(' from CK_Sample_CR A ');
      sql.Add(' where A.kcQty<>0 and CKName=' + quotedstr(trim(fCKName)));
      sql.ADD(' and  A.Valid=''Y'' and A.CRFlag=''入库'' ');
      sql.Add(' order by A.CRTime desc,A.CRNO desc');
      open;
    end;
    SCreateCDS20(adoqueryMain, CDS_Main);
    SInitCDSData20(adoqueryMain, CDS_Main);
  finally
  end;
end;

procedure TfrmSMPBKcHZList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  writeCxGrid(self.Caption + tv1.Name, Tv1, '面料仓库');
  if fType = 10 then
    Action := cahide
  else
    Action := cafree;
end;

procedure TfrmSMPBKcHZList.FormDestroy(Sender: TObject);
begin
  frmsmpbKcHZList := nil;
end;

procedure TfrmSMPBKcHZList.P_CodeNameChange(Sender: TObject);
begin
  if adoqueryMain.Active = False then
    Exit;
  SDofilter(adoqueryMain, SGetFilters(Panel1, 1, 2));
  SCreateCDS20(adoqueryMain, CDS_Main);
  SInitCDSData20(adoqueryMain, CDS_Main);
end;

procedure TfrmSMPBKcHZList.FormShow(Sender: TObject);
begin
  readCxGrid(self.Caption + tv1.Name, Tv1, '面料仓库');
  SetStatus();
  TBRafresh.Click();
end;

procedure TfrmSMPBKcHZList.TBCloseClick(Sender: TObject);
begin
  close;
end;

procedure TfrmSMPBKcHZList.TBRafreshClick(Sender: TObject);
begin
  with adoqueryMain do
  begin
    close;
    sql.Clear;
    sql.Add(' select P_Code,P_CodeName,P_Color,p_CF,P_SPEC,P_KZ,kuwei,SUM(kcQty)kcQty,QtyUnit,cgpz,Note ');

    SQL.Add(' from CK_Sample_CR A ');
    sql.Add(' where A.kcQty<>0 and CKName=' + quotedstr(trim(fCKName)));
    sql.ADD(' and  A.Valid=''Y'' and A.CRFlag=''入库'' ');

    sql.Add(' GROUP BY P_Code,P_CodeName,P_Color,p_CF,P_SPEC,P_KZ,kuwei,QtyUnit,cgpz,Note ');
    SQL.Add('ORDER BY P_Code');
    open;
  end;
  SCreateCDS20(adoqueryMain, CDS_Main);
  SInitCDSData20(adoqueryMain, CDS_Main);
end;

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

procedure TfrmSMPBKcHZList.TOkClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then
    Exit;
  ModalResult := 1;
end;

procedure TfrmSMPBKcHZList.N1Click(Sender: TObject);
begin
  SelOKNo(CDS_Main, true);
end;

procedure TfrmSMPBKcHZList.N2Click(Sender: TObject);
begin
  SelOKNo(CDS_Main, false);

end;

procedure TfrmSMPBKcHZList.ToolButton2Click(Sender: TObject);
begin
  if adoqueryMain.Active = False then
    Exit;
  SDofilter(adoqueryMain, SGetFilters(Panel1, 1, 2));
  SCreateCDS20(adoqueryMain, CDS_Main);
  SInitCDSData20(adoqueryMain, CDS_Main);
end;

procedure TfrmSMPBKcHZList.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
  InitImage();
end;

procedure TfrmSMPBKcHZList.ToolButton3Click(Sender: TObject);
begin
  with ADOQueryCmd do
  begin
    close;
    sql.Clear;
    sql.Add('exec P_Up_SampleKcAll');
    execsql;
  end;
end;

procedure TfrmSMPBKcHZList.OrderNoKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    TBRafresh.Click();
    ToolButton2.Click();

  end;

end;

procedure TfrmSMPBKcHZList.Tv1Column1PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin
  if CANSHU1 = '客服' then
    Exit;
  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with CDS_Main do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update CK_Sample_CR set  XSKCQTY=' + (Trim(mvalue)));
    sql.Add('where CRNO=' + quotedstr(Trim(CDS_Main.fieldbyname('CRNO').AsString)));

    ExecSQL;
  end;
  tv1.Controller.EditingController.ShowEdit();

end;

procedure TfrmSMPBKcHZList.CheckBox1Click(Sender: TObject);
begin
  if checkbox1.Checked = True then
  begin
    P_Code.Tag := 1;
  end
  else
  begin
    P_Code.Tag := 2;
  end;
  initgrid();
  ToolButton2.Click();
end;

procedure TfrmSMPBKcHZList.Tv1DblClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then
    Exit;
  ModalResult := 1;
end;

procedure TfrmSMPBKcHZList.v1QtyPropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin

  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with CDS_Main do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update CK_Sample_CR set  kcQty=' + (Trim(mvalue)));
    SQL.Add(',QTY=ISNULL((SELECT SUM(QTY) FROM  CK_Sample_CR B WHERE B.MJID=CK_Sample_CR.MJID AND B.VALID=''Y'' and crflag=''出库'' ),0)+' + (Trim(mvalue)));
    sql.Add('where CRNO=' + quotedstr(Trim(CDS_Main.fieldbyname('CRNO').AsString)));

    ExecSQL;
  end;
  tv1.Controller.EditingController.ShowEdit();

end;

procedure TfrmSMPBKcHZList.v1NotePropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin
  if CANSHU1 = '客服' then
    Exit;
  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with CDS_Main do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update CK_Sample_CR set  Note=' + QuotedStr(Trim(mvalue)));
    sql.Add('where CRNO=' + quotedstr(Trim(CDS_Main.fieldbyname('CRNO').AsString)));

    ExecSQL;
  end;
  tv1.Controller.EditingController.ShowEdit();
end;

procedure TfrmSMPBKcHZList.Tv1Column3PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin

  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);

  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update CK_Sample_CR set  CGPZ=' + quotedstr(Trim(mvalue)));
    sql.Add('where CRNO=' + quotedstr(Trim(CDS_Main.fieldbyname('CRNO').AsString)));

    ExecSQL;
  end;
  with CDS_Main do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;

  Tv1.Controller.EditingController.ShowEdit();
end;

procedure TfrmSMPBKcHZList.Tv1Column4PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin

  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);

  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update CK_Sample_CR set  SJBDH=' + quotedstr(Trim(mvalue)));
    sql.Add('where CRNO=' + quotedstr(Trim(CDS_Main.fieldbyname('CRNO').AsString)));

    ExecSQL;
  end;
  with CDS_Main do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;
  end;

  Tv1.Controller.EditingController.ShowEdit();
end;

end.

