unit U_KHGetCPManage;  //4

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
  cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin,
  StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
  cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
  cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
  RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP,ShellAPI,IniFiles, cxCheckBox, RM_e_Xls,jpeg, BtnEdit,
  cxButtonEdit, cxDropDownEdit;

type
  TfrmKHGetCPManage = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBAdd: TToolButton;
    TBDel: TToolButton;
    TBClose: TToolButton;
    DataSource1: TDataSource;
    ADOQueryPrint: TADOQuery;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    cxGridPopupMenu1: TcxGridPopupMenu;
    Tv1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    Panel1: TPanel;
    Label2: TLabel;
    CYNo: TEdit;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    Label1: TLabel;
    CYName: TEdit;
    Label4: TLabel;
    CYEName: TEdit;
    Label5: TLabel;
    CYSpec: TEdit;
    v1Column1: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    DataSource2: TDataSource;
    ADOQueryMain: TADOQuery;
    CDS_Main: TClientDataSet;
    v1Column12: TcxGridDBColumn;
    v1Column13: TcxGridDBColumn;
    ToolButton1: TToolButton;
    ToolButton4: TToolButton;
    RM1: TRMGridReport;
    RMDB_Main: TRMDBDataSet;
    ODPat: TOpenDialog;
    IdFTP1: TIdFTP;
    SaveDialog1: TSaveDialog;
    v1Column18: TcxGridDBColumn;
    v1Column19: TcxGridDBColumn;
    Label3: TLabel;
    KHName: TEdit;
    Label6: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    v1Column14: TcxGridDBColumn;
    v1Column15: TcxGridDBColumn;
    v1Column16: TcxGridDBColumn;
    v1Column17: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    Label7: TLabel;
    CKNO: TEdit;
    ToolButton7: TToolButton;
    RM2: TRMGridReport;
    RMDBDataSet1: TRMDBDataSet;
    RMXLSExport1: TRMXLSExport;
    ToolButton8: TToolButton;
    Image2: TImage;
    ToolButton9: TToolButton;
    Panel4: TPanel;
    Label13: TLabel;
    LabName: TBtnEditA;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    cxGridDBColumn5: TcxGridDBColumn;
    cxGridDBColumn6: TcxGridDBColumn;
    cxGridDBColumn7: TcxGridDBColumn;
    cxGridDBColumn8: TcxGridDBColumn;
    v1P_ChnName: TcxGridDBColumn;
    cxGridDBColumn9: TcxGridDBColumn;
    v1Quantity: TcxGridDBColumn;
    v1UnitName: TcxGridDBColumn;
    cxGridDBColumn10: TcxGridDBColumn;
    cxGridDBColumn11: TcxGridDBColumn;
    cxGridDBColumn12: TcxGridDBColumn;
    cxGridDBColumn13: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    cxSplitter1: TcxSplitter;
    ClientDataSet2: TClientDataSet;
    DataSource3: TDataSource;
    cxGridPopupMenu2: TcxGridPopupMenu;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cxDBTreeList1DblClick(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure CYNoKeyPress(Sender: TObject; var Key: Char);
    procedure CYNoChange(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure Tv1CellDblClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure CKNOKeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton7Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure ToolButton9Click(Sender: TObject);
    procedure LabNameBtnClick(Sender: TObject);
  private
    { Private declarations }
    PState:Integer;
    FCPID,FTopID:String;
    procedure InitTree();
    procedure InitGrid();
    procedure ReadINIFile();

  public
    { Public declarations }
  end;

var
  frmKHGetCPManage: TfrmKHGetCPManage;

implementation
uses
  U_DataLink,U_RTFun,U_CPAdd,U_FileUp,U_KHGetCPAdd,U_ZDYHelp;

{$R *.dfm}

procedure TfrmKHGetCPManage.InitTree();
var
  i:Integer;
begin
  {with ADOQueryTree do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from CP_Type order by CPlevel,CPName');
    Open;
  end;
  cxDBTreeList1.Items[0].Expand(false);  }
  //cxDBTreeList1.Items[1].Expand(False);
end;

procedure TfrmKHGetCPManage.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Close;
      SQL.Clear;
      SQL.Add('exec P_Select_Get_CP_YDang :CKID,:Begdate,:EndDate,:PState');
      Parameters.ParamByName('CKID').Value:='';
      Parameters.ParamByName('Begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.DateTime));
      Parameters.ParamByName('EndDate').Value:=Trim(FormatDateTime('yyyy-MM-dd',EndDate.DateTime+1));
      Parameters.ParamByName('PState').Value:=0;
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmKHGetCPManage.FormDestroy(Sender: TObject);
begin
  frmKHGetCPManage:=nil;
end;

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

procedure TfrmKHGetCPManage.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid('客户拿样',Tv1,'样品管理');
  if  DirectoryExists(ExtractFileDir('E:\Right1209')) then
    winexec('cmd /c rd /s /q D:\Right1209',sw_hide);
  Close;
end;
procedure TfrmKHGetCPManage.TBDelClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  if Application.MessageBox('确定要删除数据吗？','提示',32+4)<>IDYES then Exit;
  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('delete CP_YDang_KHGet where CKID='''+Trim(CDS_Main.fieldbyname('CKID').AsString)+'''');
    ExecSQL;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('Update CK_YP_KC Set KCQty=(select sum(Qty*QtyFlag) from CK_YP_CR A where A.CRID=CK_YP_KC.CRID');
    sql.Add(' and isnull(A.QYCKID,'''')<>'''+Trim(CDS_Main.fieldbyname('CKID').AsString)+''')');
    sql.Add(' where CRID in');
    sql.Add('(select CRID from CK_YP_CR where isnull(QYCKID,'''')='''+Trim(CDS_Main.fieldbyname('CKID').AsString)+''')');
    ExecSQL;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('delete CK_YP_CR where isnull(QYCKID,'''')='''+Trim(CDS_Main.fieldbyname('CKID').AsString)+'''');
    ExecSQL;
  end;
  CDS_Main.Delete;
end;

procedure TfrmKHGetCPManage.FormShow(Sender: TObject);
begin
  //InitTree();
  ReadCxGrid('样品列表',Tv1,'样品管理');

  EndDate.DateTime:=SGetServerDate(ADOQueryTemp);
  BegDate.DateTime:=EndDate.DateTime-7;
end;

procedure TfrmKHGetCPManage.cxDBTreeList1DblClick(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmKHGetCPManage.TBAddClick(Sender: TObject);
begin
  try
    frmKHGetCPAdd:=TfrmKHGetCPAdd.Create(Application);
    with frmKHGetCPAdd do
    begin
      FCYID:='';
      //FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      //FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmKHGetCPAdd.Free;
  end;
end;

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

procedure TfrmKHGetCPManage.ToolButton3Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  try
    frmKHGetCPAdd:=TfrmKHGetCPAdd.Create(Application);
    with frmKHGetCPAdd do
    begin
      FCYID:=Trim(Self.CDS_Main.fieldbyname('CKNO').AsString);
      //FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      //FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmKHGetCPAdd.Free;
  end;
end;

procedure TfrmKHGetCPManage.ToolButton2Click(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
  end;
end;

procedure TfrmKHGetCPManage.CYNoKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
  begin
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from CP_YDang where CYID='''+Trim(CYNo.Text)+'''');
      Open;
      CYNo.Text:=Trim(fieldbyname('CYNo').AsString);
    end;
  end;
end;

procedure TfrmKHGetCPManage.CYNoChange(Sender: TObject);
begin
  ToolButton2.Click;
end;

procedure TfrmKHGetCPManage.ToolButton1Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  TcxGridToExcel('客户拿样',cxGrid1);
end;

procedure TfrmKHGetCPManage.ToolButton4Click(Sender: TObject);
var
   fPrintFile:string;
begin
  if CDS_Main.IsEmpty then Exit;
  if Trim(LabName.Text)='' then
  begin
    Application.MessageBox('标签名称不能为空!','提示',0);
    Exit;
  end;
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\'+Trim(LabName.Text)+'.rmf' ;
  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\'+Trim(LabName.Text)+'.rmf'),'提示',0);
  end;
end;

procedure TfrmKHGetCPManage.ReadINIFile();
var
  programIni:Tinifile;  //配置文件名
  FileName:string;
begin
  FileName:=ExtractFilePath(Paramstr(0))+'SYSTEMSET.INI';
  programIni:=Tinifile.create(FileName);
  server:=programIni.ReadString('SERVER','服务器地址','127.0.0.1');
  programIni.Free;
end;

procedure TfrmKHGetCPManage.Tv1CellDblClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
 // ToolButton6.Click;
end;

procedure TfrmKHGetCPManage.CKNOKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
  begin
    if Trim(CKNO.Text)='' then Exit;
    try
      ADOQueryMain.DisableControls;
      with ADOQueryMain do
      begin
        Close;
        SQL.Clear;
        SQL.Add('exec P_Select_Get_CP_YDang :CKID,:Begdate,:EndDate,:PState');
        Parameters.ParamByName('CKID').Value:=Trim(CKNO.Text);
        Parameters.ParamByName('Begdate').Value:='';
        Parameters.ParamByName('EndDate').Value:='';
        Parameters.ParamByName('PState').Value:=3;
        Open;
      end;
      SCreateCDS20(ADOQueryMain,CDS_Main);
      SInitCDSData20(ADOQueryMain,CDS_Main);
      CKNO.Text:='';
    finally
      ADOQueryMain.EnableControls;
    end;
  end;

end;

procedure TfrmKHGetCPManage.ToolButton7Click(Sender: TObject);
var
   fPrintFile:string;
begin
  if CDS_Main.IsEmpty then Exit;
  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    SQL.Add('exec P_Select_Get_CP_YDang :CKID,:Begdate,:EndDate,:PState');
    Parameters.ParamByName('CKID').Value:=Trim(CDS_Main.fieldbyname('CKNO').AsString);
    Parameters.ParamByName('Begdate').Value:='';
    Parameters.ParamByName('EndDate').Value:='';
    Parameters.ParamByName('PState').Value:=3;
    Open;
  end;
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\拿样清单.rmf' ;
  if FileExists(fPrintFile) then
  begin
    RM2.LoadFromFile(fPrintFile);
    RMVariables['printer']:=Trim(DName);
    RM2.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\拿样清单.rmf'),'提示',0);
  end;
end;

procedure TfrmKHGetCPManage.ToolButton8Click(Sender: TObject);
var
   fPrintFile:string;
begin
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\空白信笺纸.rmf' ;
  if FileExists(fPrintFile) then
  begin
    RM2.LoadFromFile(fPrintFile);
    RM2.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('没有找'+ExtractFilePath(Application.ExeName)+'Report\空白信笺纸.rmf'),'提示',0);
  end;
end;

procedure TfrmKHGetCPManage.Tv1CellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
var
  jpg:TJpegImage;
  myStream:TADOBlobStream;
begin
  if CDS_Main.IsEmpty then Exit;
  if Trim(CDS_Main.fieldbyname('CYID').AsString)='' then Exit;
 // if cxPageControl1.ActivePageIndex=6 then
  begin
    Image2.Picture.Assign(nil);
    try
      with ADOQueryTemp do
      begin
        close;
        sql.Clear;
        sql.Add(' select * from TP_File A where A.WBID='''+Trim(CDS_Main.fieldbyname('CYID').AsString)+'''');
        sql.Add(' and TFType=''样品'' ');
        open;
        if RecordCount>0 then
        begin
          if trim(ADOQueryTemp.fieldbyname('FilesOther').AsString)<>'' then
          begin
            myStream:=tadoblobstream.Create(tblobfield(ADOQueryTemp.fieldbyname('FilesOther')),bmread);
            if myStream=nil then exit;
            jpg:=TJPEGImage.Create;
            jpg.LoadFromStream(myStream);
            Image2.Picture.Assign(jpg);
          end;
        end;
      end;
    finally
      jpg.Free;
      myStream.Free;
    end;
  end;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    SQL.Add('select  A.CRTime,A.CRID,A.BCID,A.Qty,A.QtyUnit,A.CYColor,A.Note,A.CYType,A.BCID ');
    sql.Add(' ,A.CRPrice,A.BZTYpe,A.PBFactory,A.RCFactory,A.HJGFactory,A.CYID,A.WeiZhi,A.MiLenNote');
    SQL.Add(',B.CYNO,B.CYName,B.CYMF,B.CYKZ,B.CYSpec,B.CYCF,B.CYHX,B.CYEName,B.CYECF,B.CYColorEng');
    sql.Add(',MLen=dbo.F_Get_MLen(A.CYID),C.KCQty,A.CYID ');
    SQL.Add(' from CK_YP_CR A inner join CP_YDang B on A.CYID=B.CYID ');
    sql.Add(' inner join CK_YP_KC C on A.CRID=C.CRID');
    sql.Add(' where A.QYCKID='''+Trim(CDS_Main.fieldbyname('CKID').AsString)+'''');
    sql.Add(' and CRFlag=''出库'' ');
    Open;
  end;
  SCreateCDS20(ADOQueryTemp,ClientDataSet2);
  SInitCDSData20(ADOQueryTemp,ClientDataSet2);
end;

procedure TfrmKHGetCPManage.ToolButton9Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  try
    frmKHGetCPAdd:=TfrmKHGetCPAdd.Create(Application);
    with frmKHGetCPAdd do
    begin
      FCYID:=Trim(Self.CDS_Main.fieldbyname('CKNO').AsString);
      CopyInt:=99;
      //FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      //FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmKHGetCPAdd.Free;
  end;
end;

procedure TfrmKHGetCPManage.LabNameBtnClick(Sender: TObject);
begin
  try
    frmZDYHelp:=TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag:='YPLabName';
      flagname:='样品标签';
      fnote:=True;
      TBAdd.Visible:=False;
      TBEdit.Visible:=False;
      TBDel.Visible:=False;
      if ShowModal=1 then
      begin
        Self.LabName.Text:=Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

end.
