unit U_TradeClothProcessCastingInput;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, cxCalendar, cxDropDownEdit, ComCtrls, ToolWin,
  cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
  cxClasses, cxControls, cxGridCustomView, cxGrid, cxGridCustomPopupMenu,
  cxGridPopupMenu, ADODB, DBClient, cxButtonEdit, cxTextEdit, cxSpinEdit,
  StdCtrls, ExtCtrls, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator,
  dxDateRanges, dxBarBuiltInMenu, U_BaseInput, System.ImageList, Vcl.ImgList,
  cxPC, dxScrollbarAnnotations, cxCheckBox, cxImageList, dxSkinsCore,
  dxSkinsDefaultPainters, Vcl.Menus;

type
  TfrmTradeClothProcessCastingInput = class(TfrmBaseInput)
    ToolBar1: TToolBar;
    TBSave: TToolButton;
    TBClose: TToolButton;
    DS_1: TDataSource;
    CDS_1: TClientDataSet;
    ADOQueryCmd: TADOQuery;
    ADO_1: TADOQuery;
    ADOQueryTemp: TADOQuery;
    GPM_1: TcxGridPopupMenu;
    ToolButton1: TToolButton;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    Tv1Column13: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column14: TcxGridDBColumn;
    Tv1Column11: TcxGridDBColumn;
    v2Column1: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    Tv1Column4: TcxGridDBColumn;
    v1Column13: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    Tv1Column6: TcxGridDBColumn;
    v1Column15: TcxGridDBColumn;
    v2Column6: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    Tv1Column19: TcxGridDBColumn;
    v1Column19: TcxGridDBColumn;
    v1Column12: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    Tv1Column3: TcxGridDBColumn;
    Tv1Column5: TcxGridDBColumn;
    Tv1Column1: TcxGridDBColumn;
    Tv1Column21: TcxGridDBColumn;
    Tv1Column2: TcxGridDBColumn;
    Tv1Column10: TcxGridDBColumn;
    Tv1Column8: TcxGridDBColumn;
    Tv1Column9: TcxGridDBColumn;
    Tv1Column14: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Tv1Column7: TcxGridDBColumn;
    Tv1Column12: TcxGridDBColumn;
    Tv1Column15: TcxGridDBColumn;
    Tv1Column16: TcxGridDBColumn;
    Tv1Column17: TcxGridDBColumn;
    Tv1Column18: TcxGridDBColumn;
    Tv1Column20: TcxGridDBColumn;
    pm1: TPopupMenu;
    N5: TMenuItem;
    N6: TMenuItem;
    N3: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
  private
    { Private declarations }
    function SaveData(): Boolean;
    procedure InitGrid1();
  public
    { Public declarations }
    FMasterOrderNo, FSubid, FTPFId: string;
  end;

var
  frmTradeClothProcessCastingInput: TfrmTradeClothProcessCastingInput;

implementation

uses
  U_DataLink, U_RTFun, U_ZDYHelp, U_TradeFinishClothStkSel, U_CompanySel,
  U_TradePlanSel;

{$R *.dfm}

procedure TfrmTradeClothProcessCastingInput.InitGrid1();
begin
  with ADO_1 do
  begin
    Close;
    sql.Clear;
    sql.Add(' select A.*,outtime=getdate() ');
    sql.Add(',OutPiece=StkPiece,OutQty=StkQty  ');
    sql.Add(',KYPiece=StkPiece,KYQty=StkQty  ');
    sql.Add(' from BS_Cloth_IO A    ');
    SQL.Add(' where A.IOFlag=''入库'' and (isnull(StkQty,0)>0 or isnull(StkPiece,0)>0) ');
    sql.Add(' and isnull(stkName,'''')=''贸易布匹'' ');
//    sql.Add(' and fromMasterOrdNo= ' + QuotedStr(TRIM(FMasterOrderNo)));      and IOType=''调拨入库''

    Open;
  end;
  SCreateCDS(ADO_1, CDS_1);
  SInitCDSData(ADO_1, CDS_1);

end;

procedure TfrmTradeClothProcessCastingInput.N3Click(Sender: TObject);
begin
  CopyTVFocusValue(TV1);

end;

procedure TfrmTradeClothProcessCastingInput.N5Click(Sender: TObject);
begin
  SelOKNo(CDS_1, True);
end;

procedure TfrmTradeClothProcessCastingInput.N6Click(Sender: TObject);
begin
  SelOKNo(CDS_1, False);
end;

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

function TfrmTradeClothProcessCastingInput.SaveData(): Boolean;
var
  MBCIOID: string;
begin
  try
    ADOQueryCmd.Connection.BeginTrans;
    CDS_1.DisableControls;
    with CDS_1 do
    begin
      First;
      while not eof do
      begin
        if CDS_1.FieldByName('ssel').AsBoolean then
        begin
          if (CDS_1.fieldbyname('OutQty').AsFloat > 0) then
          begin

            with ADOQueryCmd do
            begin
              Close;
              Sql.Clear;
              Sql.Add('exec P_BS_Cloth_IOALL ');
              Sql.Add('  @Operation=' + quotedstr(Trim('投坯出库')));
              Sql.Add(' ,@StkID=' + quotedstr(Trim(CDS_1.fieldbyname('StkID').AsString)));
              Sql.Add(' ,@MasterOrdNo=' + quotedstr(Trim(FMasterOrderNo)));
              Sql.Add(' ,@TPFId=' + quotedstr(Trim(FTPFId)));
              Sql.Add(' ,@SubId=' + quotedstr(Trim(FSubId)));
              Sql.Add(' ,@IOTime=' + quotedstr(Trim(FormatDateTime('yyyy-MM-dd', CDS_1.fieldbyname('outtime').AsDateTime))));
              Sql.Add(' ,@Piece=' + Trim(CDS_1.fieldbyname('OutPiece').AsString));
              Sql.Add(' ,@Qty=' + Trim(CDS_1.fieldbyname('OutQty').AsString));
              Sql.Add(' ,@Dcode=' + quotedstr(Trim(Dcode)));
              Sql.Add(' ,@DName=' + quotedstr(Trim(DName)));
//            ShowMessage(sql.Text);
              Open;
            end;
            if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
              raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString)));
          end;
        end;
        Next;
      end;
    end;
    CDS_1.EnableControls;
    ADOQueryCmd.Connection.CommitTrans;
    Result := True;
  except
    Result := False;
    ADOQueryCmd.Connection.RollbackTrans;
    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
  end;

end;

procedure TfrmTradeClothProcessCastingInput.TBCloseClick(Sender: TObject);
begin

  Close;
end;

procedure TfrmTradeClothProcessCastingInput.FormShow(Sender: TObject);
var
  fsj: string;
begin
  inherited;
  ReadCxGrid(trim(Self.Caption) + 'TV1', Tv1, '贸易汇总仓库');
  InitGrid1();
end;

procedure TfrmTradeClothProcessCastingInput.TBSaveClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  ToolBar1.SetFocus;
  if CDS_1.Locate('SSel', True, []) = False then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;
  if SaveData() then
  begin
    ModalResult := 1;
  end;
end;

procedure TfrmTradeClothProcessCastingInput.ToolButton1Click(Sender: TObject);
begin
  WriteCxGrid(trim(Self.Caption) + 'TV1', Tv1, '贸易汇总仓库');
end;

end.

