unit U_TradeLabelPrint;

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, cxCalendar, cxButtonEdit,
  cxTextEdit, cxDBLookupComboBox, ComObj, cxLookAndFeels, cxLookAndFeelPainters,
  cxNavigator, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges,
  dxBarBuiltInMenu, dxScrollbarAnnotations;

type
  TfrmTradeLabelPrint = class(TfrmBaseList)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBClose: TToolButton;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    cxGridLevel1: TcxGridLevel;
    GPM_1: TcxGridPopupMenu;
    DS_1: TDataSource;
    CDS_1: TClientDataSet;
    v2Column6: TcxGridDBColumn;
    v2Column2: TcxGridDBColumn;
    v2Column10: TcxGridDBColumn;
    Tv1Column1: TcxGridDBColumn;
    Panel1: TPanel;
    Label1: TLabel;
    edtScan: TEdit;
    btnFind: TToolButton;
    ToolButton2: TToolButton;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Tv1Column2: TcxGridDBColumn;
    Tv1Column3: TcxGridDBColumn;
    Tv1Column4: TcxGridDBColumn;
    Tv1Column5: TcxGridDBColumn;
    ADOQueryPrint: TADOQuery;
    RMDB_1: TRMDBDataSet;
    RM1: TRMGridReport;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    Button3: TButton;
    CDS_Print: TClientDataSet;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxgrdbclmn1: TcxGridDBColumn;
    cxgrdbclmn2: TcxGridDBColumn;
    cxgrdbclmn3: TcxGridDBColumn;
    cxgrdbclmn4: TcxGridDBColumn;
    cxgrdbclmn5: TcxGridDBColumn;
    cxgrdbclmn6: TcxGridDBColumn;
    cxgrdbclmn7: TcxGridDBColumn;
    cxgrdbclmn8: TcxGridDBColumn;
    cxGridLevel2: TcxGridLevel;
    btn1: TButton;
    DS_2: TDataSource;
    CDS_2: TClientDataSet;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure btnFindClick(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure edtScanKeyPress(Sender: TObject; var Key: Char);
    procedure Button3Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
  private
    fFlileFlag: string;
    { Private declarations }
    procedure InitGrid();
  public
    FAuthority, FCIID: string;
  end;

var
  frmTradeLabelPrint: TfrmTradeLabelPrint;

implementation

uses
  U_DataLink, U_RTFun, U_ZDYHelp, U_AttachmentUpload;

{$R *.dfm}

procedure TfrmTradeLabelPrint.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('select top 500 * from Trade_Cloth_Inspect A INNER JOIN Trade_LabelPrint B on A.CIID=B.CIID');
      sql.Add('where B.Filler =''' + trim(DName) + '''');
      sql.Add('order by B.Filltime desc');
      Open;
    end;
    SCreateCDS(ADOQueryMain, CDS_1);
    SInitCDSData(ADOQueryMain, CDS_1);
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add('SELECT * FROM Trade_Cloth_Inspect a WHERE a.Filltime > ''2024-12-16'' and NOT EXISTS(SELECT DISTINCT Ciid FROM Trade_LabelPrint b WHERE a.CIID = b.CIID)');
      sql.Add('order by Filltime desc');
      Open;
    end;
    SCreateCDS(ADOQueryMain, CDS_2);
    SInitCDSData(ADOQueryMain, CDS_2);
  finally
    ADOQueryMain.EnableControls;
  end;
  CDS_1.First;
  CDS_2.first;
end;

procedure TfrmTradeLabelPrint.FormDestroy(Sender: TObject);
begin
  inherited;
  frmTradeLabelPrint := nil;
end;

procedure TfrmTradeLabelPrint.Button3Click(Sender: TObject);
var
  fPrintFile, FLabVolume: string;
begin
  with ADOQueryPrint do
  begin
    Close;
    SQL.Clear;
    sql.Add(' EXEC P_Trade_Insp_Prt_Lab ');
    SQL.Add(' @CIID=''' + Trim(CDS_1.fieldbyname('CIID').AsString) + '''');
    Open;
  end;
  SCreateCDS(ADOQueryPrint, CDS_Print);
  SInitCDSData(ADOQueryPrint, CDS_Print);
  if ADOQueryPrint.IsEmpty then
  begin
    application.MessageBox('��ǩ����δ�ҵ���', '��ʾ��Ϣ', MB_ICONERROR);
    exit;
  end;

  if Trim(ADOQueryPrint.fieldbyname('Grade').AsString) = '��Ʒ' then
    FLabVolume := Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString)
  else
    FLabVolume := '��Ʒ��ǩ';

  ExportFtErpFile(FLabVolume + '.rmf', ADOQueryTemp);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLabVolume + '.rmf';

  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    Rm1.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1);
    RM1.PrintReport;
  end
  else
  begin
    Application.MessageBox(PChar('û����' + fPrintFile), '��ʾ', 0);
  end;
  edtScan.SetFocus;
  InitGrid();
end;

procedure TfrmTradeLabelPrint.edtScanKeyPress(Sender: TObject; var Key: Char);
var
  fPrintFile, FLabVolume, FCIID: string;
begin
  if Key = #13 then
  begin
    if trim(edtScan.Text) = '' then
      exit;

    FCIID := trim(edtScan.Text);
    edtScan.text := '';
    with ADOQueryTemp do
    begin
      Close;
      SQL.Clear;
      sql.Add(' select * from Trade_Cloth_Inspect A');
      SQL.Add(' where CIID=''' + trim(FCIID) + '''');
      Open;
    end;
    if ADOQueryTemp.IsEmpty then
    begin
      Application.MessageBox('�������û�и�����!', '��ʾ', 0);
      Exit;
    end;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('insert into Trade_LabelPrint(CIID,Filltime,Filler) values( ');
      sql.Add(quotedstr(Trim(FCIID)));
      sql.Add(',getdate() ');
      sql.Add(', ' + quotedstr(trim(DName)));
      sql.Add(')');
      ExecSQL;
    end;
    with ADOQueryPrint do
    begin
      Close;
      SQL.Clear;
      sql.Add(' EXEC P_Trade_Insp_Prt_Lab ');
      SQL.Add(' @CIID=''' + Trim(FCIID) + '''');
//      ShowMessage(sql.text);
      Open;
    end;
    SCreateCDS(ADOQueryPrint, CDS_Print);
    SInitCDSData(ADOQueryPrint, CDS_Print);
    if ADOQueryPrint.IsEmpty then
    begin
      application.MessageBox('��ǩ����δ�ҵ���', '��ʾ��Ϣ', MB_ICONERROR);
      exit;
    end;

    if Trim(ADOQueryPrint.fieldbyname('Grade').AsString) = '��Ʒ' then
      FLabVolume := Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString)
    else
      FLabVolume := '��Ʒ��ǩ';
    ExportFtErpFile(FLabVolume + '.rmf', ADOQueryTemp);
    fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLabVolume + '.rmf';

    if FileExists(fPrintFile) then
    begin
      RM1.LoadFromFile(fPrintFile);
      Rm1.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1);
      RM1.PrintReport;
    end
    else
    begin
      Application.MessageBox(PChar('û����' + fPrintFile), '��ʾ', 0);
    end;
    InitGrid();

  end;
end;

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

procedure TfrmTradeLabelPrint.TBCloseClick(Sender: TObject);
begin

  Close;
end;

procedure TfrmTradeLabelPrint.TBDelClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  if Application.MessageBox('ȷ��Ҫɾ��������', '��ʾ', 32 + 4) <> IDYES then
    Exit;

  if Trim(CDS_1.fieldbyname('COID').AsString) <> '' then
  begin
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('update BS_Company set Valid=''N'' where COID=''' + Trim(CDS_1.fieldbyname('COID').AsString) + '''');
      ExecSQL;
    end;
  end;
  CDS_1.Delete;

end;

procedure TfrmTradeLabelPrint.FormShow(Sender: TObject);
begin
  inherited;
  ReadCxGrid(trim(self.Caption), Tv1, '�ͻ�����');
  edtScan.SetFocus;
  InitGrid();
end;

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

procedure TfrmTradeLabelPrint.ToolButton5Click(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  try
    frmAttachmentUpload := TfrmAttachmentUpload.Create(Application);
    with frmAttachmentUpload do
    begin
//      FEditAuthority := True;
      if (Trim(FAuthority) = '¼��') or (Trim(FAuthority) = '����') then
        FEditAuthority := True;
      fkeyNO := Trim(Self.CDS_1.fieldbyname('Coid').AsString);
      fType := '�ͻ�';
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmAttachmentUpload.Free;
  end;
end;

procedure TfrmTradeLabelPrint.btn1Click(Sender: TObject);
var
  fPrintFile, FLabVolume: string;
begin
  if CDS_2.IsEmpty then
  begin
    application.MessageBox('��ѡ��Ҫ��ӡ����Ϣ��', '��ʾ��Ϣ', MB_ICONERROR);
    exit;
  end;
  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('insert into Trade_LabelPrint(CIID,Filltime,Filler) values('''+Trim(CDS_2.FieldByName('CIID').AsString)+'''');
    sql.Add(',getdate() ');
    sql.Add(', ' + quotedstr(trim(DName)));
    sql.Add(')');
    ExecSQL;
  end;
  with ADOQueryPrint do
  begin
    Close;
    SQL.Clear;
    sql.Add(' EXEC P_Trade_Insp_Prt_Lab ');
    SQL.Add(' @CIID=''' + Trim(CDS_2.fieldbyname('CIID').AsString) + '''');
    Open;
  end;
  SCreateCDS(ADOQueryPrint, CDS_Print);
  SInitCDSData(ADOQueryPrint, CDS_Print);
  if ADOQueryPrint.IsEmpty then
  begin
    application.MessageBox('��ǩ����δ�ҵ���', '��ʾ��Ϣ', MB_ICONERROR);
    exit;
  end;

  if Trim(ADOQueryPrint.fieldbyname('Grade').AsString) = '��Ʒ' then
    FLabVolume := Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString)
  else
    FLabVolume := '��Ʒ��ǩ';

  ExportFtErpFile(FLabVolume + '.rmf', ADOQueryTemp);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLabVolume + '.rmf';

  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    Rm1.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1);
    RM1.PrintReport;
  end
  else
  begin
    Application.MessageBox(PChar('û����' + fPrintFile), '��ʾ', 0);
  end;
  edtScan.SetFocus;
  InitGrid();
end;

procedure TfrmTradeLabelPrint.btnFindClick(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_1);
    SInitCDSData(ADOQueryMain, CDS_1);
  end;
end;

procedure TfrmTradeLabelPrint.ToolButton2Click(Sender: TObject);
begin
  WriteCxGrid(trim(self.caption), Tv1, '�ͻ�����');

end;

end.