unit U_TatClothOutEdit;

interface

uses
  Windows, Messages, strUtils, SysUtils, Variants, Classes, Graphics, Controls,
  Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, ExtCtrls, ADODB, DBClient,
  cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, MMSystem,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
  cxControls, cxGridCustomView, cxGrid, MovePanel, cxCheckBox, Menus, ComCtrls,
  cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, U_BaseList, dxSkinsCore,
  dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, RM_Common, RM_Class,
  RM_GridReport, RM_Dataset, Vcl.ToolWin, dxScrollbarAnnotations;

type
  TfrmTatClothOutEdit = class(TfrmBaseList)
    GPM_1: TcxGridPopupMenu;
    CDS_1: TClientDataSet;
    DS_1: TDataSource;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    Panel1: TPanel;
    CDS_2: TClientDataSet;
    DS_2: TDataSource;
    GPM_2: TcxGridPopupMenu;
    DS_3: TDataSource;
    CDS_3: TClientDataSet;
    GPM_3: TcxGridPopupMenu;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    v1OrderNo: TcxGridDBColumn;
    v2Column2: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    v1PRTMF: TcxGridDBColumn;
    v1PRTKZ: TcxGridDBColumn;
    cxGrid2Level1: TcxGridLevel;
    Panel2: TPanel;
    Panel4: TPanel;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column6: TcxGridDBColumn;
    v1Column1: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    Tv1Column1: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v2Column6: TcxGridDBColumn;
    v2Column5: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    ToolBar1: TToolBar;
    ToolButton2: TToolButton;
    cxGrid3: TcxGrid;
    Tv3: TcxGridDBTableView;
    v3Column5: TcxGridDBColumn;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    v3MJID: TcxGridDBColumn;
    v3Column3: TcxGridDBColumn;
    Tv3Column1: TcxGridDBColumn;
    v3Column4: TcxGridDBColumn;
    cxGridDBColumn6: TcxGridDBColumn;
    v3Column1: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    ToolBar2: TToolBar;
    ToolButton1: TToolButton;
    Panel3: TPanel;
    Label4: TLabel;
    Label5: TLabel;
    Label11: TLabel;
    CRTime: TDateTimePicker;
    OutNo: TEdit;
    CRType: TComboBox;
    ToolBar3: TToolBar;
    ToolButton3: TToolButton;
    btnGetOutNo: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    edtScan: TEdit;
    Label6: TLabel;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    Tv2Column2: TcxGridDBColumn;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure btnGetOutNoClick(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure edtScanKeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton9Click(Sender: TObject);
    procedure ToolButton10Click(Sender: TObject);
    procedure ToolButton11Click(Sender: TObject);
    procedure ToolButton12Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
  private
    { Private declarations }
    FScan, FPCIds: string;
    procedure PlayWav(MWav: string);
    procedure InitGrid1();
    procedure InitGrid2();
    procedure InitGrid3();
    procedure ScanInNo();
    procedure ScanCIID();
  public

    { Public declarations }
  end;

var
  frmTatClothOutEdit: TfrmTatClothOutEdit;

implementation

uses
  U_DataLink, U_RTFun, U_TatClothWaitReleased, U_LabelPrint,
  U_TatClothStkListsel;

{$R *.dfm}
procedure TfrmTatClothOutEdit.PlayWav(MWav: string);
begin
  if FileExists(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MWav + '.wav')) then
    PlaySound(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MWav + '.wav'), 0, SND_ASYNC);
end;

procedure TfrmTatClothOutEdit.InitGrid2();
begin
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select A.*,B.*,C.* ');
    sql.Add(' from Tat_Plan_Card A inner join Tat_Plan_Sub B on A.SubId=B.SubId');
    sql.Add(' inner join Tat_Plan_Main C on A.MainId=C.Mainid');
    if TRIm(FPCIds) <> '' then
      sql.add('and PCId in (' + FPCIds + ')')
    else
      sql.add('and 1=2');
    Open;
  end;
  SCreateCDS(ADOQueryTemp, CDS_2);
  SInitCDSData(ADOQueryTemp, CDS_2);
end;

procedure TfrmTatClothOutEdit.InitGrid1();
begin

  with ADOQueryMain do
  begin
    Close;
    sql.Clear;
    sql.Add('select A.IOFlag,A.IONo,A.IOID,B.* from Tat_Cloth_IO A    ');
    sql.Add('inner join Tat_Cloth_Stock B on A.StkId=B.StkId and A.IOCycles=B.StkCycles   ');
    sql.Add('where A.IOFlag=''入库'' and B.StkExists=1 ');
    if TRIm(FPCIds) <> '' then
      sql.add('and A.CIID in (' + FPCIds + ')')
    else
      sql.add('and 1=2');
    Open;
  end;
  SCreateCDS(ADOQueryMain, CDS_1);
  SInitCDSData(ADOQueryMain, CDS_1);

end;

procedure TfrmTatClothOutEdit.InitGrid3();
begin

  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select A.IOFlag,A.IONo,A.IOID,B.* from Tat_Cloth_IO A    ');
    sql.Add('inner join Tat_Cloth_Stock B on A.StkId=B.StkId and A.IOCycles=B.StkCycles   ');
    sql.Add('where A.IOFlag=''出库'' and B.StkExists=0 ');
    if TRIm(OutNo.Text) <> '' then
      sql.add('and IONO =' + QuotedStr(TRIm(OutNo.Text)))
    else
      sql.add('and 1=2');
    Open;
  end;
  SCreateCDS(ADOQueryTemp, CDS_3);
  SInitCDSData(ADOQueryTemp, CDS_3);

end;

procedure TfrmTatClothOutEdit.ScanInNo();
var
  MStkIds: string;
begin
  try
    if Trim(OutNo.Text) = '' then
      raise Exception.Create('出库单号不能为空!');
    if CDS_2.IsEmpty then
      raise Exception.Create('未选单不能扫描出库!');

    if not CDS_1.Locate('IONo', Trim(FScan), []) then
      raise Exception.Create('此入库单不包含在待出库的卷数据中');

    MStkIds := '';
    with CDS_1 do
    begin
      First;
      while CDS_1.Locate('IONo', Trim(FScan), []) = True do
      begin
        MStkIds := MStkIds + (Trim(CDS_1.FieldByName('StkId').AsString)) + ',';
        MoveCDS(CDS_1, CDS_3);
        CDS_1.Delete;
      end;
    end;

    MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1);

    try
      ADOQueryCmd.Connection.BeginTrans;
      with ADOQueryCmd do
      begin
        Close;
        Sql.Clear;
        sql.Add('insert into Finance_Need_Up(UType,UDataId) values(''针织成品出库'',' + quotedstr(OutNo.Text) + ')  ');

        Sql.Add('exec P_Tat_Cloth_Out ');
        Sql.Add(' @StkIds=' + quotedstr(trim(MStkIds)));
        Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', CRTime.DateTime)));
        Sql.Add(',@IOType=' + Quotedstr(crtype.Text));
        Sql.Add(',@IONO=' + Quotedstr(OutNo.Text));
        Sql.Add(',@FillId=' + Quotedstr(DCode));
        Sql.Add(',@Filler=' + Quotedstr(DName));
        Open;
      end;
      if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
      begin
        raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
      end;

      ADOQueryCmd.Connection.CommitTrans;
      PlayWav('正确');
    except
      ADOQueryCmd.Connection.RollbackTrans;
      raise Exception.Create(PChar(Exception(ExceptObject).Message));
    end;

  except
    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
//    PlayWav('发货错误');
  end;

end;

procedure TfrmTatClothOutEdit.ScanCIID();
var
  MStkIds: string;
begin
  try
    if Trim(OutNo.Text) = '' then
      raise Exception.Create('出库单号不能为空!');
    if CDS_2.IsEmpty then
      raise Exception.Create('未选单不能扫描出库!');

    if not CDS_1.Locate('StkId', Trim(FScan), []) then
      raise Exception.Create('此条码不包含在待出库的卷数据中');

    try
      ADOQueryCmd.Connection.BeginTrans;
      MStkIds := (Trim(CDS_1.FieldByName('StkId').AsString));
      MoveCDS(CDS_1, CDS_3);
      CDS_1.Delete;
      with ADOQueryCmd do
      begin
        Close;
        Sql.Clear;
        sql.Add('insert into Finance_Need_Up(UType,UDataId) values(''针织成品出库'',' + quotedstr(OutNo.Text) + ')  ');

        Sql.Add('exec P_Tat_Cloth_Out ');
        Sql.Add(' @StkIds=' + quotedstr(trim(MStkIds)));
        Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', CRTime.DateTime)));
        Sql.Add(',@IOType=' + Quotedstr(crtype.Text));
        Sql.Add(',@IONO=' + Quotedstr(OutNo.Text));
        Sql.Add(',@FillId=' + Quotedstr(DCode));
        Sql.Add(',@Filler=' + Quotedstr(DName));
        Open;
      end;
      if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
      begin
        raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
      end;
      ADOQueryCmd.Connection.CommitTrans;
      PlayWav('正确');
    except
      ADOQueryCmd.Connection.RollbackTrans;
      raise Exception.Create(PChar(Exception(ExceptObject).Message));
    end;

  except
    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
//    PlayWav('发货错误');
  end;

end;

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

procedure TfrmTatClothOutEdit.FormDestroy(Sender: TObject);
begin
  inherited;
  frmTatClothOutEdit := nil;
end;

procedure TfrmTatClothOutEdit.FormShow(Sender: TObject);
begin
  inherited;
  ReadCxGrid(self.caption + 'Tv1', Tv1, '成品仓库');
  ReadCxGrid(self.caption + 'Tv2', Tv2, '成品仓库');
  ReadCxGrid(self.caption + 'Tv3', Tv3, '成品仓库');
  InitGrid2();
  InitGrid1();
  InitGrid3();
  CRTime.DateTime := SGetServerDate(ADOQueryTemp);
end;

procedure TfrmTatClothOutEdit.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
  if CDS_3.IsEmpty = False then
    Exit;
  if CDS_2.IsEmpty then
    Exit;
  if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
    Exit;
  CDS_1.DisableControls;
  with CDS_1 do
  begin
    First;
    while not Eof do
    begin
      if Trim(CDS_1.fieldbyname('SubId').AsString) = Trim(CDS_2.fieldbyname('SubId').AsString) then
      begin
        CDS_1.Delete;
      end
      else
        Next;
    end;
  end;
  CDS_1.EnableControls;
  CDS_2.Delete;
end;

procedure TfrmTatClothOutEdit.edtScanKeyPress(Sender: TObject; var Key: Char);
var
  maxno, SMFlag, KYCKFlag, FMainId, ff: string;
  FFQty: Integer;
begin
  if Key = #13 then
  begin
    FScan := TRIM(edtScan.Text);
    edtScan.Text := '';
    if Copy(FScan, 1, 2) = 'RK' then
    begin
      ScanInNo();
    end
    else
    begin
      ScanCIID();
    end;
  end;
end;

procedure TfrmTatClothOutEdit.ToolButton10Click(Sender: TObject);
begin
  SelOKNo(CDS_1, False);

end;

procedure TfrmTatClothOutEdit.ToolButton11Click(Sender: TObject);
begin
  SelOKNo(CDS_3, True);

end;

procedure TfrmTatClothOutEdit.ToolButton12Click(Sender: TObject);
begin
  SelOKNo(CDS_3, False);

end;

procedure TfrmTatClothOutEdit.ToolButton1Click(Sender: TObject);
var
  MStkIds, MIOIDS: string;
begin
  if CDS_3.IsEmpty then
    Exit;
  if Application.MessageBox('确定要执行此操作吗？', '提示', 32 + 4) <> IDYES then
    Exit;
  MStkIds := '';
  MIOIDS := '';
  with CDS_3 do
  begin
    while CDS_3.Locate('SSel', True, []) do
    begin
      MStkIds := MStkIds + (Trim(CDS_3.FieldByName('StkId').AsString)) + ',';
      MIOIDS := MIOIDS + (Trim(CDS_3.FieldByName('IOID').AsString)) + ',';
      CDS_3.Delete;
    end;
  end;
  MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1);
  MIOIDS := copy(MIOIDS, 1, Length(MIOIDS) - 1);
  try

    try
      ADOQueryCmd.Connection.BeginTrans;
      with ADOQueryCmd do
      begin
        Close;
        Sql.Clear;
        sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule) ');
        sql.Add('values(''梭织成品出库''    ');
        sql.Add(',' + quotedstr(OutNo.Text));
        sql.Add(',''撤销出库'' ');
        sql.Add(',' + quotedstr(dname));
        sql.Add(',' + quotedstr(self.Caption));
        sql.Add(')  ');

        Sql.Add('exec P_Tat_Cloth_ReOut ');
        Sql.Add(' @StkIds=' + quotedstr(trim(MStkIds)));
        Sql.Add(',@IOIDS=' + quotedstr(trim(MIOIDS)));
        Sql.Add(',@FillId=' + Quotedstr(DCode));
        Sql.Add(',@Filler=' + Quotedstr(DName));
        Open;
      end;
      if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
      begin
        raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
      end;
      ADOQueryCmd.Connection.CommitTrans;
      PlayWav('正确');
      InitGrid1();
    except
      ADOQueryCmd.Connection.RollbackTrans;
      raise Exception.Create(PChar(Exception(ExceptObject).Message));
    end;
  except
    InitGrid1();
    InitGrid3();
    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
//    PlayWav('发货错误');
  end;

end;

procedure TfrmTatClothOutEdit.ToolButton2Click(Sender: TObject);
var
  MStkIds: string;
begin
  try
    if Trim(OutNo.Text) = '' then
      raise Exception.Create('出库单号不能为空!');
    if CDS_2.IsEmpty then
      raise Exception.Create('未选单不能扫描出库!');

    if not CDS_1.Locate('SSel', True, []) then
      raise Exception.Create('请选择数据');

    MStkIds := '';
    with CDS_1 do
    begin
      while CDS_1.Locate('SSel', True, []) = True do
      begin
        MStkIds := MStkIds + (Trim(CDS_1.FieldByName('StkId').AsString)) + ',';
        CDS_1.Delete;
      end;
    end;
    MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1);

    try
      ADOQueryCmd.Connection.BeginTrans;

      with ADOQueryCmd do
      begin
        Close;
        Sql.Clear;
        sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule) ');
        sql.Add('values(''梭织成品出库''    ');
        sql.Add(',' + quotedstr(OutNo.Text));
        sql.Add(',''出库'' ');
        sql.Add(',' + quotedstr(dname));
        sql.Add(',' + quotedstr(self.Caption));
        sql.Add(')  ');

        Sql.Add('exec P_Tat_Cloth_Out ');
        Sql.Add(' @StkIds=' + quotedstr(trim(MStkIds)));
        Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', CRTime.DateTime)));
        Sql.Add(',@IOType=' + Quotedstr(crtype.Text));
        Sql.Add(',@IONO=' + Quotedstr(OutNo.Text));
        Sql.Add(',@FillId=' + Quotedstr(DCode));
        Sql.Add(',@Filler=' + Quotedstr(DName));
        Open;
      end;
      if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
      begin
        raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
      end;

      ADOQueryCmd.Connection.CommitTrans;
      PlayWav('正确');
      InitGrid3();
    except
      ADOQueryCmd.Connection.RollbackTrans;
      raise Exception.Create(PChar(Exception(ExceptObject).Message));
    end;
  except
    InitGrid1();
    InitGrid3();
    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
//    PlayWav('发货错误');
  end;

end;

procedure TfrmTatClothOutEdit.ToolButton3Click(Sender: TObject);
begin
  if Trim(OutNo.Text) = '' then
    Exit;

  try
    frmLabelPrint := TfrmLabelPrint.Create(Application);
    with frmLabelPrint do
    begin
      FLMType := 'TatClothOut1';
      FFiltration1 := Trim(Self.OutNo.Text);
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmLabelPrint.Free;
  end;

end;

procedure TfrmTatClothOutEdit.ToolButton4Click(Sender: TObject);
begin
  FPCIds := '';
  InitGrid2();
end;

procedure TfrmTatClothOutEdit.ToolButton5Click(Sender: TObject);
begin
  try
    frmTatClothStkListsel := TfrmTatClothStkListsel.Create(Application);
    with frmTatClothStkListsel do
    begin
//      CustomerNoName.text := trim(Self.KHName.text);
      if ShowModal = 1 then
      begin
        with frmTatClothStkListsel.CDS_1 do
        begin
          First;
          while not Eof do
          begin
            if Fieldbyname('ssel').AsBoolean then
            begin

            end;
            Next;
          end;
        end;
      end;
    end;
  finally
    frmTatClothStkListsel.Free;
  end;
end;

procedure TfrmTatClothOutEdit.btnGetOutNoClick(Sender: TObject);
var
  maxNo: string;
begin
  if GetLSNo(ADOQueryCmd, maxNo, 'TDM', 'Tat_Cloth_DR_Main', 4, 1) = False then
  begin
    Application.MessageBox('取出库单号失败!', '提示', 0);
    Exit;
  end;
  OutNo.Text := Trim(maxNo);
  CRTime.DateTime := SGetServerDate(ADOQueryTemp);
  InitGrid3();
end;

procedure TfrmTatClothOutEdit.ToolButton6Click(Sender: TObject);
var
  maxno, fsj: string;
begin

  try
    frmTatClothWaitReleased := TfrmTatClothWaitReleased.Create(Application);
    with frmTatClothWaitReleased do
    begin
      if ShowModal = 1 then
      begin
        CDS_OrderSel.DisableControls;
        with CDS_OrderSel do
        begin
          First;
          while not Eof do
          begin
            if FieldByName('SSel').Value = True then
            begin
              if Self.CDS_2.Locate('PCID', Trim(CDS_OrderSel.fieldbyname('PCID').AsString), []) = False then
              begin
                with Self.CDS_2 do
                begin
                  Append;
//                  FieldByName('OrderNo').Value := Trim(CDS_OrderSel.fieldbyname('OrderNo').AsString);
                  FieldByName('MainId').Value := Trim(CDS_OrderSel.fieldbyname('MainId').AsString);
                  FieldByName('SubId').Value := Trim(CDS_OrderSel.fieldbyname('SubId').AsString);
                  FieldByName('PCID').Value := Trim(CDS_OrderSel.fieldbyname('PCID').AsString);
                  FieldByName('CustNo').Value := Trim(CDS_OrderSel.fieldbyname('CustNo').AsString);
                  FieldByName('CustName').Value := Trim(CDS_OrderSel.fieldbyname('CustName').AsString);
                  FieldByName('C_Name').Value := Trim(CDS_OrderSel.fieldbyname('C_Name').AsString);
                  FieldByName('OrdPiece').Value := CDS_OrderSel.fieldbyname('OrdPiece').Value;
                  FieldByName('OrdQty').Value := CDS_OrderSel.fieldbyname('OrdQty').Value;
//                  FieldByName('PCUnit').Value := Trim(CDS_OrderSel.fieldbyname('PCUnit').AsString);
                  FieldByName('C_Color').Value := Trim(CDS_OrderSel.fieldbyname('C_Color').AsString);
                  FieldByName('C_Width').Value := Trim(CDS_OrderSel.fieldbyname('C_Width').AsString);
                  FieldByName('C_GramWeight').Value := Trim(CDS_OrderSel.fieldbyname('C_GramWeight').AsString);
                  Post;
                end;
              end;
            end;
            Next;
          end;
        end;
        CDS_OrderSel.EnableControls;
      end;
    end;
  finally
    frmTatClothWaitReleased.Free;
  end;

  FPCIds := '';
  CDS_2.DisableControls;
  with CDS_2 do
  begin
    First;
    while not Eof do
    begin
      FPCIds := FPCIds + Quotedstr(Trim(CDS_2.FieldByName('PCId').AsString)) + ',';
      Next;
    end;
  end;
  FPCIds := copy(FPCIds, 1, Length(FPCIds) - 1);
  CDS_2.EnableControls;

  if Trim(OutNo.Text) = '' then
    btnGetOutNo.Click;

  InitGrid1();
  InitGrid3();
end;

procedure TfrmTatClothOutEdit.ToolButton7Click(Sender: TObject);
begin
  tv1.Controller.EditingController.ShowEdit();
  tv3.Controller.EditingController.ShowEdit();
  Close;

end;

procedure TfrmTatClothOutEdit.ToolButton8Click(Sender: TObject);
begin
  WriteCxGrid(self.caption + 'Tv2', Tv2, '成品仓库');
  WriteCxGrid(self.caption + 'Tv1', Tv1, '成品仓库');
  WriteCxGrid(self.caption + 'Tv3', Tv3, '成品仓库');
end;

procedure TfrmTatClothOutEdit.ToolButton9Click(Sender: TObject);
begin
  SelOKNo(CDS_1, True);

end;

end.

