unit U_ClothInfoInput2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, ADODB, DBClient, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView,
  cxGrid, ComCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, cxTextEdit,
  cxButtonEdit, StdCtrls, ExtCtrls, cxCurrencyEdit, BtnEdit, U_BaseList,
  cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges,
  dxBarBuiltInMenu, cxCheckBox, cxDropDownEdit, cxContainer, cxMaskEdit,
  dxScrollbarAnnotations, cxMemo, dxSkinsCore, dxSkinsDefaultPainters;

type
  TfrmClothInfoInput2 = class(TForm)
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    TBClose: TToolButton;
    ADOQueryCmd: TADOQuery;
    ADOQueryTemp: TADOQuery;
    ScrollBox1: TScrollBox;
    Label1: TLabel;
    Label5: TLabel;
    Label15: TLabel;
    Label22: TLabel;
    Label3: TLabel;
    C_Code: TcxTextEdit;
    PictureNo: TcxTextEdit;
    Label7: TLabel;
    ToolButton6: TToolButton;
    BCIID: TcxTextEdit;
    Label6: TLabel;
    C_GramWeight: TcxButtonEdit;
    C_Composition: TcxButtonEdit;
    C_Spec: TcxButtonEdit;
    C_FromName: TcxButtonEdit;
    C_Width: TcxButtonEdit;
    Label12: TLabel;
    C_YarnSpec: TcxTextEdit;
    Label14: TLabel;
    CraftName: TcxButtonEdit;
    Label18: TLabel;
    Label19: TLabel;
    FtyNo: TcxTextEdit;
    FtyName: TcxTextEdit;
    Label21: TLabel;
    Label20: TLabel;
    C_Texture: TcxButtonEdit;
    Label2: TLabel;
    LSNo: TcxTextEdit;
    procedure FormShow(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure CYColorKeyPress(Sender: TObject; var Key: Char);
    procedure CYJGGYBtnDnClick(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure C_GramWeightDblClick(Sender: TObject);
    procedure ParentCoNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure C_FromNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure C_TexturePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
  private
    canshu1, TempPre, TempLSNo: string;
    Fint: Integer;
    procedure InitGrid();
    function SaveData(): Boolean;
    { Private declarations }
  public
    FBCIID, FCTID: string;
    TypeInt: Integer; //0新增_1复制_2修改
    TempCTName: string;

    { Public declarations }
  end;

var
  frmClothInfoInput2: TfrmClothInfoInput2;

implementation

uses
  U_DataLink, U_RTFun, U_iniParam, U_ZDYHelp, U_AttachmentUpload, U_ClothInfoSel;

{$R *.dfm}

procedure TfrmClothInfoInput2.InitGrid();
begin

  with ADOQueryTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from V_BS_Cloth_Info where BCIID=''' + Trim(FBCIID) + '''');
    Open;
  end;

  SCSHData(ADOQueryTemp, ScrollBox1, 2);
//  SCSHData(ADOQueryTemp, ScrollBox1, 0);
  C_FromName.Properties.LookupItems.Text := Trim(ADOQueryTemp.fieldbyname('FromBCIID').AsString); //坯布编号
  C_FromName.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName').AsString);    //坯布名称


end;

procedure TfrmClothInfoInput2.C_FromNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmClothInfoSel := TfrmClothInfoSel.Create(Application);
    with frmClothInfoSel do
    begin
      FCTType := '坯布';
      if ShowModal = 1 then
      begin
        C_FromName.Properties.LookupItems.Text := Trim(CDS_1.fieldbyname('BCIID').AsString);
        C_FromName.Text := Trim(CDS_1.fieldbyname('C_Name').AsString);
      end;
    end;
  finally
    frmClothInfoSel.Free;
  end;
end;

procedure TfrmClothInfoInput2.C_GramWeightDblClick(Sender: TObject);
begin
  TcxButtonEdit(Sender).Text := '';
  TcxButtonEdit(Sender).Properties.LookupItems.Text := '';
  LSNo.Text := '';
end;

procedure TfrmClothInfoInput2.ParentCoNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      MainType := 'ClothInfo';
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);

//        with ADOQueryTemp do
//        begin
//          Close;
//          sql.Clear;
//          sql.Add(' exec P_BS_Cloth_Info_Get_No ');
//          sql.Add('  @CTID=' + Quotedstr(FCTID));
////          sql.Add('  ,@Str=' + Quotedstr(C_Texture.Text));
////          ShowMessage(SQL.Text);
//          Open;
//        end;
//        GC_Name.Text := trim(ADOQueryTemp.FieldByName('GC_Name').asstring);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput2.FormShow(Sender: TObject);
begin
  InitGrid();
  if TypeInt = 1 then
  begin
    FBCIID := '';
    BCIID.text := '';
    C_Code.text := '';
    LSNo.Text := '';
    C_Texture.Text := '';
  end;
  if TypeInt = 2 then
  begin
    C_Texture.Enabled := false;
  end;
end;

procedure TfrmClothInfoInput2.TBCloseClick(Sender: TObject);
begin
  Close;
end;

function TfrmClothInfoInput2.SaveData(): Boolean;
var
  MaxBCIID, MaxBCPID, MaxLSNo, LSNoHint: string;
begin
  try
    ADOQueryCmd.Connection.BeginTrans;
////////////////       保存主表          //////////////////////
    if Trim(FBCIID) = '' then
    begin
      if GetLSNo(ADOQueryCmd, MaxBCIID, 'Y', 'BS_Cloth_Info', 4, 1) = False then
      begin
        Result := False;
        ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('取最大号失败！', '提示', 0);
        Exit;
      end;

      BCIID.Text := trim(MaxBCIID);

    end
    else
    begin
      MaxBCIID := Trim(FBCIID);
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        sql.Add('update BS_Cloth_Info set DelId=' + quotedstr(DCode) + ',Deler=' + quotedstr(DName) + ',Deltime=GETDATE() where BCIID=''' + Trim(MaxBCIID) + '''');
        sql.Add('insert into Bs_Cloth_Info_Log select * from BS_Cloth_Info where BCIID=''' + Trim(MaxBCIID) + '''');
        sql.Add('update BS_Cloth_Info set DelId=null,Deler=null,Deltime=null where BCIID=''' + Trim(MaxBCIID) + '''');
        ExecSQL;
      end;
    end;

    if TypeInt <> 2 then
    begin
      if GetLSNo(ADOQueryCmd, MaxLSNo, TempPre, 'BS_Cloth_Info', 3, 0) = False then
      begin
        Result := False;
        ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('取流水号失败！', '提示', 0);
        Exit;
      end;
      LSNo.Text := MaxLSNo;
    end;

    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from BS_Cloth_Info where BCIID=''' + Trim(FBCIID) + '''');
      Open;
    end;
    with ADOQueryCmd do
    begin
      if Trim(FBCIID) = '' then
      begin
        Append;
        FieldByName('CTID').Value := Trim(FCTID);
        FieldByName('FILLID').Value := Trim(DCode);
        FieldByName('FILLER').Value := Trim(DName);
        FieldByName('FILLTIME').Value := SGetServerDateTime(ADOQueryTemp);
      end
      else
      begin
        Edit;
        FieldByName('EDITER').Value := Trim(DName);
        FieldByName('EDITTIME').Value := SGetServerDateTime(ADOQueryTemp);
      end;
      FieldByName('BCIID').Value := Trim(MaxBCIID);
      if trim(C_Code.Text) = '' then
        C_Code.Text := Trim(MaxBCIID);
      RTSetsavedata(ADOQueryCmd, 'BS_Cloth_Info', ScrollBox1, 2);
      Post;
    end;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('delete BS_Cloth_Info_Link where ToID=''' + Trim(MaxBCIID) + '''');
      ExecSQL;
    end;

    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from BS_Cloth_Info_Link  where 1=2');
      Open;
    end;
    with ADOQueryCmd do
    begin
      Append;
      FieldByName('ToID').Value := Trim(MaxBCIID);
      FieldByName('FromID').Value := Trim(C_FromName.Properties.LookupItems.Text);   // 坯布编号
      Post;
    end;

    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select count(*) as AA from BS_Cloth_Info where C_Code=''' + Trim(C_Code.Text) + '''');
      Open;
      if FieldByName('AA').AsInteger > 1 then
      begin
        ADOQueryCmd.Connection.RollbackTrans;
        Result := False;
        Application.MessageBox('编号重复！', '提示', 0);
        Exit;
      end;
    end;


////////////////       保存主表          //////////////////////
///
///
    ADOQueryCmd.Connection.CommitTrans;
    if TempLSNo <> MaxLSNo then
    begin
      Application.MessageBox(PChar('流水号' + TempLSNo + '已被占用，新流水号为' + MaxLSNo), '提示', 0);
    end;
    FBCIID := MaxBCIID;
    Result := True;
  except
    Result := False;
    ADOQueryCmd.Connection.RollbackTrans;
    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
  end;
end;

procedure TfrmClothInfoInput2.CYJGGYBtnDnClick(Sender: TObject);
begin
  TBtnEditC(Sender).Text := '';
end;

procedure TfrmClothInfoInput2.C_TexturePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  fsj: string;
  FWZ: Integer;
  TempNo: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      MainType := 'ClothInfo';
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      fnote := True;
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
        LSNo.Text := '';
        if Trim(ClientDataSet1.fieldbyname('Note').AsString) <> '' then
        begin
          TempPre := TempCTName + Trim(ClientDataSet1.fieldbyname('Note').AsString);
          with ADOQueryTemp do
          begin
            Close;
            SQL.Clear;
            sql.Add('select BHNo from SY_MaxBH where BHStr=''' + Trim(TempPre) + ''' and BHType=''BS_Cloth_Info''');
            ExecSQL;
            Open;
          end;
          TempNo := 1;
          if ADOQueryTemp.RecordCount > 0 then
          begin
            TempNo := ADOQueryTemp.FieldByName('BHNo').AsInteger + 1;
          end;

          LSNo.Text := TempPre + Format('%.3d', [TempNo]);
          TempLSNo := LSNo.Text;
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput2.ToolButton1Click(Sender: TObject);
var
  MC_Code: string;
begin
  if C_Texture.Text = '' then
  begin
    Application.MessageBox('风格不能为空！', '提示', 0);
    Exit;
  end;
  if LSno.Text = '' then
  begin
    Application.MessageBox('流水号获取失败，请为风格添加对应前缀', '提示', 0);
    Exit;
  end;
  if trim(C_Code.Text) = '' then
  begin
    if GetLSNo(ADOQueryCmd, MC_Code, 'C', 'BS_Cloth_Info', 4, 0) = False then
    begin
      Application.MessageBox('取最成品编号失败!', '提示', 0);
      Exit;
    end;
    C_Code.Text := MC_Code;
  end;
  if SaveData() then
  begin
    Application.MessageBox('保存成功！', '提示', 0);
    ModalResult := 1;
  end;
end;

procedure TfrmClothInfoInput2.CYColorKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    Key := #0;
    SelectNext(ActiveControl as TWinControl, True, True);
  end;
end;

procedure TfrmClothInfoInput2.ToolButton6Click(Sender: TObject);
begin
  if trim(C_Code.Text) = '' then
    Exit;
  try
    frmAttachmentUpload := TfrmAttachmentUpload.Create(Application);
    with frmAttachmentUpload do
    begin
      FEditAuthority := True;
      fkeyNO := trim(C_Code.Text);
      fType := '产品品档案';
      if ShowModal = 1 then
      begin

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

end.

