unit U_TradeInspSet;

interface

uses
  Windows, Messages, StrUtils, 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, cxDropDownEdit, BtnEdit, cxLookAndFeels, cxLookAndFeelPainters,
  cxNavigator,   dxDateRanges,
  dxBarBuiltInMenu, U_BaseList, cxContainer, dxCore, cxDateUtils, cxImage,
  cxDBEdit, IdExplicitTLSClientServerBase, RM_Preview, cxPC, U_BaseHelp,
  System.ImageList, Vcl.ImgList, RTComboBox, RM_BarCode, RM_e_Xls, 
  dxScrollbarAnnotations, dxLayoutcxEditAdapters, dxLayoutContainer,
  dxLayoutControl, RM_RichEdit, RM_DsgGridReport;

type
  TfrmTradeInspSet = class(TfrmBaseHelp)
    ToolBar1: TToolBar;
    TBClose: TToolButton;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    Tsave: TToolButton;
    cxPageControl1: TcxPageControl;
    cxTabSheet4: TcxTabSheet;
    cxTabSheet3: TcxTabSheet;
    RMPreview2: TRMPreview;
    RMPreview1: TRMPreview;
    RuleLaterTare: TcxTextEdit;
    Coefficient: TcxTextEdit;
    ADOQueryLabel: TADOQuery;
    RM1: TRMGridReport;
    RMDB_1: TRMDBDataSet;
    ADO_1: TADOQuery;
    RM2: TRMGridReport;
    RMDB_2: TRMDBDataSet;
    cxTabSheet1: TcxTabSheet;
    DS_Label: TDataSource;
    CDS_Label: TClientDataSet;
    RMDB_Label: TRMDBDataSet;
    RMLabel: TRMGridReport;
    Panel1: TPanel;
    Panel2: TPanel;
    cxGridLabel: TcxGrid;
    TVLabel: TcxGridDBTableView;
    TVLabellabelId: TcxGridDBColumn;
    TVLabellabeltype: TcxGridDBColumn;
    TVLabellabelCaption: TcxGridDBColumn;
    TVLabellabelFile: TcxGridDBColumn;
    cxGridLabelLevel1: TcxGridLevel;
    RMPreview3: TRMPreview;
    Panel4: TPanel;
    Label9: TLabel;
    Label10: TLabel;
    ToolBar2: TToolBar;
    TVolumeset: TToolButton;
    Tpackset: TToolButton;
    Tadd: TToolButton;
    Tupd: TToolButton;
    Tdel: TToolButton;
    ToolButton4: TToolButton;
    RMBarCodeObject1: TRMBarCodeObject;
    RMXLSExport1: TRMXLSExport;
    ADO_Down: TADOQuery;
    TVLabelColumn1: TcxGridDBColumn;
    TVLabelColumn2: TcxGridDBColumn;
    LabVolume: TcxTextEdit;
    LabPackage: TcxTextEdit;
    RuleAddLen: TcxTextEdit;
    LabelType: TcxComboBox;
    LabelCaption: TcxTextEdit;
    RuleConversion: TcxComboBox;
    RulePieceNo: TcxComboBox;
    RuleLenUnit: TcxComboBox;
    RuleAddwet: TcxTextEdit;
    FixedLength: TcxTextEdit;
    dxLayoutControl_packsetGroup_Root: TdxLayoutGroup;
    dxLayoutControl_packset: TdxLayoutControl;
    dxLayoutGroup1: TdxLayoutGroup;
    dxLayoutItem1: TdxLayoutItem;
    dxLayoutItem2: TdxLayoutItem;
    RulePackNo: TcxComboBox;
    RuleYardstick: TcxComboBox;
    dxLayoutItem3: TdxLayoutItem;
    packRolls: TcxTextEdit;
    dxLayoutControl_piecesetGroup_Root: TdxLayoutGroup;
    dxLayoutControl_pieceset: TdxLayoutControl;
    dxLayoutGroup2: TdxLayoutGroup;
    dxLayoutGroup3: TdxLayoutGroup;
    dxLayoutItem4: TdxLayoutItem;
    dxLayoutItem5: TdxLayoutItem;
    dxLayoutItem6: TdxLayoutItem;
    dxLayoutItem7: TdxLayoutItem;
    dxLayoutItem8: TdxLayoutItem;
    dxLayoutItem9: TdxLayoutItem;
    dxLayoutItem10: TdxLayoutItem;
    dxLayoutItem11: TdxLayoutItem;
    dxLayoutItem12: TdxLayoutItem;
    dxLayoutItem13: TdxLayoutItem;
    RMDB_rtfields: TRMDBDataSet;
    ADOQueryRtFields: TADOQuery;
    ADOConnection1: TADOConnection;
    RuleAddwetVirtual: TcxTextEdit;
    RuleAddLenVirtual: TcxTextEdit;
    dxLayoutItem14: TdxLayoutItem;
    dxLayoutItem15: TdxLayoutItem;
    DecimalY: TcxTextEdit;
    DecimalKg: TcxTextEdit;
    dxLayoutItem16: TdxLayoutItem;
    dxLayoutItem18: TdxLayoutItem;
    dxLayoutGroup4: TdxLayoutGroup;
    RMRichObject1: TRMRichObject;
    DecimalM: TcxTextEdit;
    dxLayoutItem17: TdxLayoutItem;
    packlabNumber: TcxComboBox;
    packPostAction: TcxComboBox;
    dxLayoutItem_packlabNumber: TdxLayoutItem;
    dxLayoutItem_packPrintAction: TdxLayoutItem;
    RMGridReportDesigner1: TRMGridReportDesigner;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TsaveClick(Sender: TObject);
    procedure cxPageControl1Change(Sender: TObject);
    procedure TVolumesetClick(Sender: TObject);
    procedure TpacksetClick(Sender: TObject);
    procedure TupdClick(Sender: TObject);
    procedure TdelClick(Sender: TObject);
    procedure TaddClick(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure LabelTypeChange(Sender: TObject);
    procedure TVLabelCellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure TVLabelDblClick(Sender: TObject);
  private
    { Private declarations }
    procedure InitGrid();
    function SaveData(): Boolean;
    procedure InitLabel();
    function SaveLabel(MLabelID: string): Boolean;
    procedure InitLabVolume();
    procedure InitLabPackage();
  public
    FDataID: string;
    fSubUseFlag:Boolean;
  end;

var
  frmTradeInspSet: TfrmTradeInspSet;

implementation

uses
  U_DataLink, U_RTFun, U_LabelInput, U_LabelList;

{$R *.dfm}

function TfrmTradeInspSet.SaveLabel(MLabelID: string): Boolean;
begin
  try
    ADOQueryCmd.Connection.BeginTrans;
    with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('select * from Trade_Label');
      sql.Add('where LabelID=' + Quotedstr(MLabelID));
      Open;
      Edit;
      fieldByName('Editer').value := DName;
      FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp);
//      RMLabel.SaveToBlobField(TBlobField(FieldByName('LabelFile')));
      Post;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    result := true;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Result := false;
    application.MessageBox('保存标签模板出错!', '警告信息', 0);
  end;
end;

procedure TfrmTradeInspSet.InitLabel();
begin
  with ADOQueryMain do
  begin
    close;
    sql.Clear;
    sql.Add(' select * from Trade_Label');
    sql.Add(' order by labeltype,labelCaption');
    Open;
  end;
  SDofilter(ADOQueryMain, SGetFilters(Panel4, 1, 2));
  SCreateCDS(ADOQueryMain, CDS_Label);
  SInitCDSData(ADOQueryMain, CDS_Label);
  TVLabel.ApplyBestFit() ;
end;

procedure TfrmTradeInspSet.InitLabVolume();
begin

  with ADOQueryLabel do
  begin
    close;
    sql.Clear;
    sql.Add('select top 1 * from RT_FileUpdate');
    sql.Add('where FileName=' + quotedstr(trim(LabVolume.Text) + '.rmf'));
    Open;
  end;

  if ADOQueryLabel.IsEmpty then
    exit;
  with RM1 do
  begin
    LoadFromBlobField(tblobfield(ADOQueryLabel.fieldbyname('Files')));
    Preview := RMPreview1;
    ShowReport;
  end;

end;

procedure TfrmTradeInspSet.InitLabPackage();
begin

  with ADOQueryLabel do
  begin
    close;
    sql.Clear;
    sql.Add('select top 1 * from RT_FileUpdate');
    sql.Add('where FileName=' + quotedstr(trim(LabPackage.Text) + '.rmf'));
    Open;
  end;

  if ADOQueryLabel.IsEmpty then
    exit;

  with RM2 do
  begin
    LoadFromBlobField(tblobfield(ADOQueryLabel.fieldbyname('Files')));
    Preview := RMPreview2;
    ShowReport;
  end;
end;

procedure TfrmTradeInspSet.LabelTypeChange(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel4, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_Label);
    SInitCDSData(ADOQueryMain, CDS_Label);
  end;

end;

procedure TfrmTradeInspSet.InitGrid();
begin

  with ADOQueryTemp do
  begin
    Close;
    SQL.Clear;
    sql.Add(' select * from Trade_Cloth_Inspect_Rule where  RuleID=''' + Trim(FDataID) + '''');
    Open;
  end;
  LSCSHData(ADOQueryTemp, dxLayoutControl_pieceset, 2);
  LSCSHData(ADOQueryTemp, dxLayoutControl_packset, 2);


end;

procedure TfrmTradeInspSet.FormDestroy(Sender: TObject);
begin
  inherited;
  frmTradeInspSet := nil;
end;

procedure TfrmTradeInspSet.cxPageControl1Change(Sender: TObject);
begin
  case cxPageControl1.ActivePageIndex of
    1:
      begin
        InitLabVolume();
      end;
    2:
      begin
        InitLabPackage();
      end;
  end;
end;

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

procedure TfrmTradeInspSet.FormCreate(Sender: TObject);
begin
  inherited;
  cxPageControl1.Align:=alClient;
  fSubUseFlag:=false;
end;

procedure TfrmTradeInspSet.TaddClick(Sender: TObject);
begin
  try
    frmLabelInput := TfrmLabelInput.create(self);
    with frmLabelInput do
    begin
      FLabelId := '';
      if showModal = 1 then
      begin
        InitLabel();
      end;
    end;
  finally
    frmLabelInput.Free;
  end;
end;

procedure TfrmTradeInspSet.TBCloseClick(Sender: TObject);
begin
  //ModalResult := 1;
  close;
end;

procedure TfrmTradeInspSet.FormShow(Sender: TObject);
begin
  inherited;
  if fSubUseFlag then
  begin
    ToolBar1.Visible:=false;
    dxLayoutControl_packset.Visible:=false;
    dxLayoutControl_pieceset.Visible:=False;
    Tpackset.Visible:=False;
    TVolumeset.Visible:=false;
  end;
  ExportFtErpFile('模板标签.rmf', ADOQueryTemp);
  with ADO_1 do
  begin
    Close;
    SQL.Clear;
    sql.Add('exec P_BS_Label_Get_Test');
    Open;
  end;
  Initlabel();
  InitGrid();

end;

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

procedure TfrmTradeInspSet.TdelClick(Sender: TObject);
begin
  if application.MessageBox('确定要删除当前选择的标签吗?','警告信息',1)=2 then exit;

  try
    with ADOQueryCmd do
    begin
      close;
      sql.clear;
      sql.Add('delete Trade_Label');
      sql.Add('where labelId=' + quotedstr(CDS_Label.fieldByName('LabelID').asString));

      sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( ');
      sql.Add(' ' + quotedstr(trim(DName)));
      sql.Add(',getdate() ');
      sql.Add(',' + quotedstr(trim(self.Caption)));
      sql.Add(',' + quotedstr(trim('标签删除')));
      sql.Add(',' + quotedstr(trim('标签名称：' + trim(CDS_Label.fieldByName('labelCaption').asString))));
      sql.Add(',' + quotedstr(trim('成功')));
      sql.Add(')');
      execSql;
    end;
    CDS_Label.Delete;
  except
    application.MessageBox('删除失败!', '警告信息', 0);
  end;

end;

function TfrmTradeInspSet.SaveData(): Boolean;
var
  MaxId, MaxSubId, FCoCode, FCCID, MaxCFID: string;
begin
  Result := false;
  try
    ADOQueryCmd.Connection.BeginTrans;

    if Trim(FDataID) = '' then
    begin
      if GetLSNo(ADOQueryCmd, MaxId, 'R', 'Trade_Cloth_Inspect_Rule', 4, 1) = False then
      begin
        Result := False;
        ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('取最大号失败！', '提示', 0);
        Exit;
      end;
    end
    else
    begin
      MaxId := Trim(FDataID);
    end;

    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from Trade_Cloth_Inspect_Rule where RuleID=''' + Trim(FDataID) + '''');
      Open;
    end;
    with ADOQueryCmd do
    begin
      if Trim(FDataID) = '' then
      begin
        Append;
        FieldByName('Filler').Value := Trim(DName);
      end
      else
      begin
        Edit;
        FieldByName('Editer').Value := Trim(DName);
        FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTemp);
      end;
      FieldByName('RuleID').Value := Trim(MaxId);
      LRTSetsavedata(ADOQueryCmd, 'Trade_Cloth_Inspect_Rule', dxLayoutControl_pieceset, 2);
      LRTSetsavedata(ADOQueryCmd, 'Trade_Cloth_Inspect_Rule', dxLayoutControl_packset, 2);
      Post;
    end;

    ADOQueryCmd.Connection.CommitTrans;
    FCCID := Trim(MaxSubId);
    Result := True;
  except

    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('保存异常!', '提示', 0);
  end;
end;

procedure TfrmTradeInspSet.TVolumesetClick(Sender: TObject);
begin
  if CDS_Label.IsEmpty then
    exit;
  LabVolume.Text := trim(CDS_Label.fieldbyname('labelCaption').asstring);
end;

procedure TfrmTradeInspSet.TpacksetClick(Sender: TObject);
begin
  if CDS_Label.IsEmpty then
    exit;
  LabPackage.Text := trim(CDS_Label.fieldbyname('labelCaption').asstring);
end;

procedure TfrmTradeInspSet.TsaveClick(Sender: TObject);
begin
  if RuleLenUnit.text = '' then
  begin
    Application.MessageBox('长度单位不能为空!', '提示', 0);
    Exit;
  end;
  //if trim(RuleConversion.text)='无需转换' then
  //  Coefficient.Text:='';


  if SaveData() then
  begin
    if Tsave.Tag=0 then
      Application.MessageBox('保存成功!', '提示', 0)
    else
      ModalResult:=1;
  end;
end;

procedure TfrmTradeInspSet.ToolButton4Click(Sender: TObject);
var
  fFileName, fPrintFile: string;
  MLabelID, MLabelCaption: string;
begin
  if CDS_Label.IsEmpty then
    exit;
  with ADOQueryRtFields do
  begin
    close;
    sql.Clear;
    sql.Add('select * from SY_ReportFields10');
    sql.Add('where field_group=''label''');
    sql.Add('order by order_no');
    open;
  end;
  MLabelID := TRIM(CDS_Label.fieldByName('LabelID').asString);
  MLabelCaption := TRIM(CDS_Label.fieldByName('LabelCaption').asString);
  ExportFtErpFile(MLabelCaption + '.rmf', ADOQueryTemp);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'report\' + MLabelCaption + '.rmf';

  if not FileExists(fPrintFile) then
    CopyFile(PChar(ExtractFilePath(Application.ExeName) + 'Report\模板标签.rmf'), PChar(fPrintFile), False);


  with RMLabel do
  begin
    RMLabel.Clear;
    RMDB_Label.DataSet := nil;
    Dictionary.FieldAliases.Clear;
    Dictionary.FieldAliases['RMDB_Label'] := '标签数据';
   RMVariables.Add('QRBARCODE','[QRBARCODE]');
    RMDB_Label.DataSet := ADO_1;
    LoadFromFile(fPrintFile);
    application.ProcessMessages;

    DesignReport();
//    RMLabel.SaveToFile(fPrintFile);
    SaveLabel(MLabelID);
    ExportToFtErp(fPrintFile, ADOQueryCmd);
  end;
  with RMLabel do
  begin
    RMLabel.LoadFromFile(fPrintFile);
    Preview := RMPreview3;
    ShowReport;
  end;
end;

procedure TfrmTradeInspSet.TupdClick(Sender: TObject);
begin
  if CDS_Label.IsEmpty then
    exit;
  try
    frmLabelInput := TfrmLabelInput.create(self);
    with frmLabelInput do
    begin
      fLabelId := CDS_Label.fieldByName('LabelId').AsString;
      if showModal = 1 then
      begin
        InitLabel();
      end;
    end;
  finally
    frmLabelInput.Free;
  end;
end;

procedure TfrmTradeInspSet.TVLabelCellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
  fPrintFile: string;
begin
  if CDS_Label.IsEmpty then
    exit;
  ExportFtErpFile(TRIM(CDS_Label.fieldByName('LabelCaption').asString) + '.rmf', ADOQueryTemp);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + CDS_Label.fieldbyname('LabelCaption').AsString + '.rmf';
  if not FileExists(fPrintFile) then
    CopyFile(PChar(ExtractFilePath(Application.ExeName) + 'Report\模板标签.rmf'), PChar(fPrintFile), False);

  with RMLabel do
  begin
    RMLabel.LoadFromFile(fPrintFile);
    Preview := RMPreview3;
    ShowReport;
  end;
end;

procedure TfrmTradeInspSet.TVLabelDblClick(Sender: TObject);
begin
  inherited;
  if fSubUseFlag then
  begin
    ModalResult :=1;
  end;
end;

end.

