unit U_SQSMCK;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, StdCtrls, ExtCtrls, ADODB, DBClient,
  cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView,
  cxGrid, MovePanel, cxCheckBox, Menus, ComCtrls, BtnEdit, ShellAPI, cxTextEdit,
  cxLookAndFeels, cxLookAndFeelPainters, cxNavigator;

type
  TfrmSQSMCK = class(TForm)
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    DS_MainSel: TDataSource;
    CDS_MainSel: TClientDataSet;
    cxGridPopupMenu4: TcxGridPopupMenu;
    cxGrid3: TcxGrid;
    Tv3: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    v3Column1: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    v3Column2: TcxGridDBColumn;
    Panel2: TPanel;
    Label10: TLabel;
    Label11: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label9: TLabel;
    CKPSQty: TEdit;
    CKOrdNo: TEdit;
    BaoID: TEdit;
    CRTime: TDateTimePicker;
    KHName: TEdit;
    Button2: TButton;
    Label6: TLabel;
    PrtCode: TEdit;
    Label8: TLabel;
    PrtCodeName: TEdit;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    MJStr3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Label12: TLabel;
    CDS_Main: TClientDataSet;
    CRType: TEdit;
    Button1: TButton;
    Label1: TLabel;
    v3Column4: TcxGridDBColumn;
    Label7: TLabel;
    CarNoHZ: TEdit;
    Button3: TButton;
    ds1: TClientDataSet;
    SQBatchNoHZ: TComboBox;
    Label13: TLabel;
    edtIsSMTH: TEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BaoIDKeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    function YSData(Order_Main10: TClientDataSet): Boolean;
    procedure Button3Click(Sender: TObject);
    procedure SQBatchNoHZDropDown(Sender: TObject);
    procedure edtIsSMTHClick(Sender: TObject);
  private
    { Private declarations }
    canshu1, FCKOrdNo, FSMStr, JXFlag: string;
    function JudgeJTMCX(): Boolean;
    procedure TMPanDuan();
  public
    { Public declarations }
  end;

var
  frmSQSMCK: TfrmSQSMCK;

implementation

uses
  U_DataLink, U_Fun, MMSystem, U_FHSQListSel, U_PBKCListSel;

{$R *.dfm}

function TfrmSQSMCK.YSData(Order_Main10: TClientDataSet): Boolean;
var
  CRID, YFID, PriceUnit, OrderUnit, FComTaiTou, FromSubID: string;
  fprice, huilv: double;
begin
//  Result:=False;
//  fprice:=0;
//  huilv:=0;
//  PriceUnit:='RMB';
//  with Order_Main10 do
//  begin
//    begin
//      with ADOQueryTemp do
//      begin
//        Close;
//        SQL.Clear;
//        sql.Add('select *,fPrice=dbo.F_Get_Order_Price(MainID,subID) from JYOrder_Sub Where subID='''+Trim(Order_Main10.fieldbyname('subID').AsString)+'''');
//        Open;
//      end;
//      IF not ADOQueryTemp.IsEmpty then
//      begin
//        PriceUnit:=Trim(ADOQueryTemp.fieldbyname('PriceUnit').AsString);
//        OrderUnit:=Trim(ADOQueryTemp.fieldbyname('OrderUnit').AsString);
//        fPrice:= ADOQueryTemp.fieldbyname('fPrice').AsFloat;
//        huilv:= ADOQueryTemp.fieldbyname('huilv').AsFloat;
//      end;
//      IF huilv=0 then huilv:=1;
//      CRID:='0';
//      with ADOQueryTemp do
//      begin
//        Close;
//        sql.Clear;
//        sql.Add(' select * from YF_Money_CR ');
//        sql.Add(' where mainID='''+Trim(Order_Main10.fieldbyname('mainID').AsString)+'''');
//        sql.Add(' and subID='''+Trim(Order_Main10.fieldbyname('subID').AsString)+'''');
//        sql.Add(' and CRTime='''+FormatDateTime('yyyy-MM-dd',CRTime.Date)+'''') ;
//        sql.Add(' and YFName=''销售金额'' ');
//        Open;
//      end;
//      if ADOQueryTemp.IsEmpty then
//      begin
//        if GetLSNo(ADOQueryCmd,YFID,'CS','YF_Money_CR',3,1)=False then
//        begin
//          Application.MessageBox('取成品应收最大号失败!','提示',0);
//          Exit;
//        end;
//        with ADOQueryCmd do
//        begin
//          Close;
//          sql.Clear;
//          sql.Add('select * from YF_Money_CR where 1<>1');
//          Open;
//        end;
//        with ADOQueryCmd do
//        begin
//          Append;
//          FieldByName('YFID').Value:=Trim(YFID);
//          FieldByName('YFTypeId').Value:=Trim(Order_Main10.fieldbyname('mainID').AsString);
//          FieldByName('CRID').Value:=StrToInt(CRID);
//          FieldByName('Filler').Value:=Trim(DName);
//          FieldByName('CRType').Value:='应收款登记';
//          FieldByName('CRFlag').Value:='应收收';
//          FieldByName('QtyFlag').Value:=1;
//          FieldByName('FactoryName').Value:=Trim(TocustName.Text);
//          FieldByName('CRTime').Value:=Trim(FormatDateTime('yyyy-MM-dd',CRTime.Date));
//          FieldByName('YFType').Value:='自动生成';
//          FieldByName('Price').Value:=fprice;
//          FieldByName('HuiLv').Value:=huilv;
//          FieldByName('BZType').Value:=Trim(PriceUnit);
//          FieldByName('QtyUnit').Value:=Trim(OrderUnit);
//          FieldByName('ComTaiTou').Value:=Trim(FComTaiTou);
//          FieldByName('YFName').Value:='销售金额';
//          FieldByName('MainId').Value:=Trim(Order_Main10.fieldbyname('Mainid').AsString);
//          FieldByName('subID').Value:=Trim(Order_Main10.fieldbyname('subID').AsString);
//          FieldByName('OrderNO').Value:=Trim(Order_Main10.fieldbyname('OrderNO').AsString);
//          FieldByName('P_CodeName').Value:=Trim(Order_Main10.fieldbyname('MprtCodeName').AsString);
//          FieldByName('P_Spec').Value:=Trim(Order_Main10.fieldbyname('MprtSpec').AsString);
//          FieldByName('P_color').Value:=Trim(Order_Main10.fieldbyname('PRTColor').AsString);
//          FieldByName('status').Value:='0';
//          Post;
//        end;
//      end
//      else
//      begin
//        YFID:=Trim(ADOQueryTemp.fieldbyname('YFID').AsString);
//      end;
//      IF uppercase(OrderUnit)='KG' then
//      begin
//        with ADOQueryCmd do
//        begin
//          Close;
//          sql.Clear;
//          sql.Add('update YF_Money_CR Set Qty=(select isnull(Sum(B.MJQty4),0) from CK_BanCP_CR A,WFB_MJJY B where A.MJID=B.MJID and  A.MainID=YF_Money_CR.MainID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') ');
//          sql.Add(',PS=(select isnull(count(A.mainID),0) from CK_BanCP_CR A where A.maiNID=YF_Money_CR.maiNID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'')  ');
//          sql.Add(' where YFID='''+Trim(YFID)+'''');
//          ExecSQL;
//        end;
//      end
//      else
//      IF (uppercase(OrderUnit)='Y') and (uppercase(Trim(Order_Main10.fieldbyname('QtyUnit').AsString))='M')  then
//      begin
//        with ADOQueryCmd do
//        begin
//          Close;
//          sql.Clear;
//          sql.Add('update YF_Money_CR Set Qty=(select cast(isnull(Sum(A.Qty),0)/0.9144 as decimal(18,1)) from CK_BanCP_CR A where A.MainID=YF_Money_CR.MainID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') ');
//          sql.Add(',PS=(select isnull(count(A.mainID),0) from CK_BanCP_CR A where A.maiNID=YF_Money_CR.maiNID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'')  ');
//          sql.Add(' where YFID='''+Trim(YFID)+'''');
//          ExecSQL;
//        end;
//      end
//      else
//      IF (uppercase(OrderUnit)='M') and (uppercase(Trim(Order_Main10.fieldbyname('QtyUnit').AsString))='Y')  then
//      begin
//        with ADOQueryCmd do
//        begin
//          Close;
//          sql.Clear;
//          sql.Add('update YF_Money_CR Set Qty=(select cast(isnull(Sum(A.Qty),0)*0.9144 as decimal(18,1)) from CK_BanCP_CR A where A.MainID=YF_Money_CR.MainID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') ');
//          sql.Add(',PS=(select isnull(count(A.mainID),0) from CK_BanCP_CR A where A.maiNID=YF_Money_CR.maiNID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'')  ');
//          sql.Add(' where YFID='''+Trim(YFID)+'''');
//          ExecSQL;
//        end;
//      end
//      else
//      begin
//        with ADOQueryCmd do
//        begin
//          Close;
//          sql.Clear;
//          sql.Add('update YF_Money_CR Set Qty=(select isnull(Sum(A.Qty),0) from CK_BanCP_CR A where A.MainID=YF_Money_CR.MainID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'') ');
//          sql.Add(',PS=(select isnull(count(A.mainID),0) from CK_BanCP_CR A where A.maiNID=YF_Money_CR.maiNID and A.subID=YF_Money_CR.subID and A.CRtime=YF_Money_CR.CRTime and A.CRType=''销售出库'')  ');
//          sql.Add(' where YFID='''+Trim(YFID)+'''');
//          ExecSQL;
//        end;
//      end;
//      with ADOQueryCmd do
//      begin
//        Close;
//        sql.Clear;
//        sql.Add('Update YF_Money_CR Set Money=Price*Qty,BBMoney=Price*Qty*HuiLv');
//        sql.Add(' where YFID='''+Trim(YFID)+'''');
//        ExecSQL;
//      end;
//      with ADOQueryTemp do
//      begin
//        Close;
//        sql.Clear;
//        sql.Add('select * from YF_Money_CR where YFId='''+Trim(YFID)+'''');
//        Open;
//      end;
//      if ADOQueryTemp.FieldByName('Qty').Value=0 then
//      begin
//        with ADOQueryCmd do
//        begin
//          Close;
//          sql.Clear;
//          sql.Add('delete from YF_Money_CR where YFID='''+Trim(YFID)+'''');
//          ExecSQL;
//        end;
//      end;
//      //Next;
//    end;
//  end;
//  Result:=True;
end;

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

procedure TfrmSQSMCK.FormDestroy(Sender: TObject);
begin
  frmSQSMCK := nil;
end;

procedure TfrmSQSMCK.FormShow(Sender: TObject);
begin
  BaoID.SetFocus;
  ReadCxGrid('扫描出库', Tv3, '坯布仓库');
  CRTime.DateTime := SGetServerDate(ADOQueryTemp);
  canshu1 := Trim(DParameters1);
  if canshu1 = 'GY' then
  begin
//    SQBatchNoHZ.ReadOnly := False;
    CarNoHZ.ReadOnly := False;
  end;
end;

procedure TfrmSQSMCK.TMPanDuan();
begin
  //判断扫描的是发货申请单，还是布匹条码 ，判断是否已经扫描过发货单 ，或者更改了发货单
  JXFlag := '';
  FSMStr := Trim(BaoID.Text);
  if Copy(FSMStr, 1, 2) = 'CK' then
  begin
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from FHSQ_Main where FSID=''' + Trim(FSMStr) + '''');
      Open;
    end;
    if ADOQueryTemp.IsEmpty then
    begin
      JXFlag := '999';
      PlaySound('申请单不存在暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
      Exit;
    end;
    with ADOQueryTemp do
    begin
      close;
      sql.Clear;
      sql.Add('select * from FHSQ_Main');
      sql.Add('where FSID=' + quotedstr(trim(FSMStr)));
      Open;
    end;
    if Trim(ADOQueryTemp.fieldbyname('YSID').AsString) <> '' then
    begin
      JXFlag := '999';
      PlaySound('已对账暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
      Exit;
    end;

    with ADOQueryTemp do
    begin
      close;
      sql.Clear;
      sql.Add('select * from YF_Money_CR_Sub');
      sql.Add('where YFPZNO=' + quotedstr(trim(FSMStr)));

      Open;
//      showmessage(sql.Text);
    end;
    if ADOQueryTemp.IsEmpty = False then
    begin
      JXFlag := '999';
      Application.MessageBox('已对账暂停发货!', '提示', 0);
//      PlaySound('已对账暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
      Exit;
    end;
    if Trim(CKOrdNo.Text) <> '' then
    begin
      FCKOrdNo := Trim(CKOrdNo.Text);
    end;
    CKOrdNo.Text := Trim(FSMStr);
    if FSMStr <> FCKOrdNo then
    begin
      with ADOQueryTemp do
      begin
        Close;
        sql.Clear;
        sql.Add('select B.* ');
        sql.Add(' from CK_PBCP_CR A');
        sql.Add(' inner join WFB_MJJY_PB B on A.MJID=B.MJID');
        sql.Add(' where A.CKOrdNO=''' + Trim(CKOrdNo.Text) + '''');
        Open;
      end;
      SCreateCDS20(ADOQueryTemp, CDS_MainSel);
      SInitCDSData20(ADOQueryTemp, CDS_MainSel);
      if CDS_MainSel.IsEmpty = False then
        Edit1.Text := IntToStr(Tv3.DataController.Summary.FooterSummaryValues[2])
      else
        Edit1.Text := '0';
    end;
    BaoID.Text := '';
    JXFlag := '888';
  end
  else
  begin
    if Trim(CKOrdNo.Text) = '' then
    begin
      JXFlag := '999';
      PlaySound('未扫描申请单暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
      Exit;
    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from WFB_MJJY_PB A  inner join Cloth_Sub B on A.SubId=B.SubId ');
      sql.Add('where exists (select * from  FHSQ_Main Y   where Y.PRTCode=B.C_Code and Y.FSId=' + quotedstr(Trim(CKOrdNo.Text)) + ')');
      sql.Add('and  A.MJID=' + quotedstr(Trim(FSMStr)));
      Open;
    end;
    if ADOQueryTemp.IsEmpty then
    begin
      JXFlag := '999';
      PlaySound('条码错误暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
      Exit;
    end
    else
    begin
      if Trim(SQBatchNoHZ.Text) <> '' then
      begin
        if Trim(ADOQueryTemp.fieldbyname('APBatchNo').AsString) <> Trim(SQBatchNoHZ.Text) then
        begin
          JXFlag := '999';
          PlaySound('批号不同暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
          Exit;
        end;
      end;

      if Trim(MJStr3.Text) <> '' then
      begin
        if Trim(ADOQueryTemp.fieldbyname('MJStr3').AsString) <> Trim(MJStr3.Text) then
        begin
          JXFlag := '999';
          PlaySound('色别不同暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
          Exit;
        end;
      end;

      if Trim(CarNoHZ.Text) <> '' then
      begin
        if Pos(Trim(ADOQueryTemp.fieldbyname('CarNo').AsString), Trim(CarNoHZ.Text)) <= 0 then
        begin
          JXFlag := '999';
          PlaySound('机台不同暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
          Exit;
        end;
      end;
    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select A.CKOrdNo from CK_PBCP_CR A  inner join Cloth_Sub B on A.SubId=B.SubId ');
      sql.Add('where exists (select * from   FHSQ_Main Y where Y.PRTCode=B.C_Code and Y.FSId=' + quotedstr(Trim(CKOrdNo.Text)) + ')');
      sql.Add(' and  A.MJID=' + quotedstr(Trim(FSMStr)));
      sql.Add(' and  A.CRFlag=''出库'' ');
      Open;
    end;
    if ADOQueryTemp.IsEmpty = False then
    begin
      if Trim(ADOQueryTemp.fieldbyname('CKOrdNo').AsString) = Trim(CKOrdNo.Text) then
      begin
        JXFlag := '999';
        PlaySound('已扫描.wav', 0, SND_FILENAME or SND_ASYNC);
        Exit;
      end
      else
      begin
        JXFlag := '999';
        PlaySound('已出库暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
        Exit;
      end;
    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select A.CKOrdNo from CK_PBCP_CR A  inner join Cloth_Sub B on A.SubId=B.SubId ');
      sql.Add('where exists (select * from   FHSQ_Main  Y where Y.PRTCode=B.C_Code and Y.FSId=' + quotedstr(Trim(CKOrdNo.Text)) + ')');
      sql.Add(' and  A.MJID=' + quotedstr(Trim(FSMStr)));
      sql.Add(' and  A.CRFlag=''入库'' ');
      Open;
    end;
    if ADOQueryTemp.IsEmpty then
    begin
      JXFlag := '999';
      PlaySound('未入库暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
      Exit;
    end;
    if Trim(Edit1.Text) <> '' then
    begin
      if StrToInt(Edit1.Text) >= StrToInt(CKPSQty.Text) then
      begin
        JXFlag := '999';
        PlaySound('超出发货上限暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
        Exit;
      end;
    end;

  end;
  //判断扫描的是发货申请单，还是布匹条码 ，判断是否已经扫描过发货单 ，或者更改了发货单    FHDate
end;

procedure TfrmSQSMCK.BaoIDKeyPress(Sender: TObject; var Key: Char);
var
  maxno, SMFlag, KYCKFlag, FMainId: string;
  FFQty: Integer;
begin
  if Key = #13 then
  begin
    if edtIsSMTH.Text = '' then
    begin
      TMPanDuan();
      if Trim(JXFlag) = '999' then
      begin
        BaoID.Text := '';
        Exit;
      end;
      if Trim(JXFlag) = '888' then
      begin
        with ADOQueryTemp do
        begin
          Close;
          sql.Clear;
          sql.Add('select A.*,MJStr3=A.SeBie,KHName=CustomerNoName,CKPSQty=A.SQPSHZ ');

          sql.Add(' from FHSQ_Main A');

          sql.Add(' where FSId=''' + Trim(CKOrdNo.Text) + ''' ');
          Open;
        end;
        SCSHDataNew(ADOQueryTemp, Panel2, 2);

//      SQBatchNoHZ.text := Trim(ADOQueryTemp.fieldbyname('FHBatchNo').AsString);

        Exit;
      end;

      with ADOQueryTemp do
      begin
        close;
        sql.Clear;
        sql.Add(' select A.*,B.CRID from WFB_MJJY_PB A');
        sql.Add(' inner join CK_PBCP_CR B on A.MJID=B.MJID and B.CRFlag=''入库'' ');
        sql.Add('  where A. MJID=''' + Trim(BaoID.Text) + '''');
        Open;
      end;
      SCreateCDS20(ADOQueryTemp, CDS_Main);
      SInitCDSData20(ADOQueryTemp, CDS_Main);
      try

        with ADOQueryTemp do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from CK_PBCp_KC where MJID=''' + Trim(BaoID.Text) + '''');
          sql.Add(' and KCKGQty>0');
          Open;
        end;
        if ADOQueryTemp.IsEmpty then
        begin
          KYCKFlag := '不能出库';
        end
        else
        begin
          KYCKFlag := '能出库';
        end;
        if Trim(KYCKFlag) = '能出库' then
        begin
          ADOQueryCmd.Connection.BeginTrans;
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            sql.Add('exec P_Do_PBCK @CRFlag=''直接出库'', @CKOrdNo=' + quotedstr(trim(CKOrdNo.Text)) + ', @MJID=' + quotedstr(trim(CDS_Main.fieldbyname('MJID').asstring)) + ', @DName=' + quotedstr(trim(DName)));
            ExecSQL;
          end;

          FMainId := Trim(CDS_Main.fieldbyname('MainID').AsString);

          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            sql.Add('exec P_Do_FHSQ ''' + Trim(CKOrdNo.Text) + '''');
            ExecSQL;
          end;

          ADOQueryCmd.Connection.CommitTrans;
          with CDS_MainSel do
          begin
            Append;
            FieldByName('Mainid').Value := Self.CDS_Main.fieldbyname('Mainid').Value;
            FieldByName('SubID').Value := Self.CDS_Main.fieldbyname('SubID').Value;
            FieldByName('MJMaoZ').Value := Self.CDS_Main.fieldbyname('MJMaoZ').Value;
            FieldByName('MJId').Value := Self.CDS_Main.fieldbyname('MJId').Value;
            FieldByName('APXH').Value := Self.CDS_Main.fieldbyname('APXH').Value;
            FieldByName('MJStr3').Value := Self.CDS_Main.fieldbyname('MJStr3').Value;
            FieldByName('CarNo').Value := Self.CDS_Main.fieldbyname('CarNo').Value;
            FieldByName('APBatchNo').Value := Self.CDS_Main.fieldbyname('APBatchNo').Value;
            Post;
          end;
          if CDS_MainSel.IsEmpty = False then
            Edit1.Text := IntToStr(Tv3.DataController.Summary.FooterSummaryValues[2])
          else
            Edit1.Text := '0';

          with ADOQueryTemp do
          begin
            Close;
            sql.Clear;
            sql.Add(' select COUNT(*) fhjs from CK_PBCP_CR where CKOrdNo= ''' + Trim(CKOrdNo.Text) + '''');
            Open;
          end;

          if StrToInt(Edit1.Text) <> ADOQueryTemp.FieldByName('fhjs').AsInteger then
          begin
            PlaySound('数据保存失败暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
            Application.MessageBox('出库异常,请重新选择申请单！', '提示', 0);
          end;
          BaoID.Text := '';
          PlaySound('正确.wav', 0, SND_FILENAME or SND_ASYNC);
          Exit;
        end;
      except
        BaoID.Text := '';
        PlaySound('数据保存失败暂停发货.wav', 0, SND_FILENAME or SND_ASYNC);
        ADOQueryCmd.Connection.RollbackTrans;
        Application.MessageBox('出库异常！', '提示', 0);
      end;
    end
    else
    begin
      FSMStr := baoid.Text;
      if JudgeJTMCX() then           //检测卷条码
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('exec P_Do_PBCK @CRFlag=''未出库'', @CKOrdNo=' + quotedstr(trim(CKOrdNo.Text)) + ', @MJID=' + quotedstr(trim(BaoID.Text)) + ', @DName=' + quotedstr(trim(DName)));
          ExecSQL;
        end;

//        FMainId := Trim(CDS_Main.fieldbyname('MainID').AsString);

        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('exec P_Do_FHSQ ''' + Trim(CKOrdNo.Text) + '''');
          ExecSQL;
        end;
        if FSMStr <> FCKOrdNo then
        begin
          with ADOQueryTemp do
          begin
            Close;
            sql.Clear;
            sql.Add('select B.* ');
            sql.Add(' from CK_PBCP_CR A');
            sql.Add(' inner join WFB_MJJY_PB B on A.MJID=B.MJID');
            sql.Add(' where A.CKOrdNO=''' + Trim(CKOrdNo.Text) + '''');
            Open;
          end;
          SCreateCDS20(ADOQueryTemp, CDS_MainSel);
          SInitCDSData20(ADOQueryTemp, CDS_MainSel);
          if CDS_MainSel.IsEmpty = False then
            Edit1.Text := IntToStr(Tv3.DataController.Summary.FooterSummaryValues[2])
          else
            Edit1.Text := '0';
        end;
        PlaySound('正确.wav', 0, SND_FILENAME or SND_ASYNC);
        BaoID.Text := '';
        Exit;
      end;

    end;

  end;
end;

function TfrmSQSMCK.JudgeJTMCX(): Boolean;
begin
  try
    if Trim(CKOrdNo.Text) = '' then
      raise Exception.Create('出库单号不能为空!');

    if CDS_MainSel.IsEmpty then
      raise Exception.Create('无可撤销的数据!');

    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('SELECT CKOrdNo FROM CK_PBCP_CR where CRFlag=''出库'' and MJID=' + quotedstr(FSMStr));
      Open;
    end;

    if ADOQueryTemp.IsEmpty then
      raise Exception.Create('无可撤销的数据!');

    Result := True;
  except
    Result := false;
//    MovePanel2.Visible := False;
    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
  end;
end;

procedure TfrmSQSMCK.Button2Click(Sender: TObject);
begin
  Close;
  WriteCxGrid('扫描出库', Tv3, '坯布仓库');
end;

procedure TfrmSQSMCK.Button1Click(Sender: TObject);
var
  MKey: Char;
begin
  MKey := #13;
  try
    frmFHSQListSel := TfrmFHSQListSel.Create(self);
    with frmFHSQListSel do
    begin
      if ShowModal = 1 then
      begin
        BaoID.Text := Trim(Order_Main.fieldbyname('FSID').AsString);
        BaoIDKeyPress(BaoID, MKey);
      end;
    end;
  finally
    frmFHSQListSel.Free;
  end;
end;

procedure TfrmSQSMCK.Button3Click(Sender: TObject);
var
  MKey: Char;
begin
  MKey := #13;
  try
    frmPBKCListSel := TfrmPBKCListSel.Create(Application);
    with frmPBKCListSel do
    begin
      FCKOrdNo := trim(CKOrdNo.text);
      FCarNoHZ := trim(CarNoHZ.text);
      if ShowModal = 1 then
      begin
        with frmPBKCListSel.CDS_Main do
        begin
          First;
          while not Eof do
          begin
            if Fieldbyname('ssel').AsBoolean then
            begin
              BaoID.Text := Trim(Fieldbyname('MJID').AsString);
              BaoIDKeyPress(BaoID, MKey);
              Sleep(200);
            end;
            Next;
          end;
        end;
      end;
    end;
  finally
    frmPBKCListSel.Free;
  end;
end;

procedure TfrmSQSMCK.SQBatchNoHZDropDown(Sender: TObject);
begin
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add('select B.* ');

    sql.Add(' from FHSQ_SUB B ');

    sql.Add(' where FSId=''' + Trim(CKOrdNo.Text) + ''' ');
    Open;
  end;
  SQBatchNoHZ.Items.Clear;
  while not ADOQueryTemp.eof do
  begin
    SQBatchNoHZ.Items.Add(ADOQueryTemp.fieldbyname('BATCHNO').AsString);
    ADOQueryTemp.next;
  end;
end;

procedure TfrmSQSMCK.edtIsSMTHClick(Sender: TObject);
begin
  BaoID.SetFocus;
  if edtIsSMTH.Text = '√' then
  begin
    edtIsSMTH.Text := '';
  end
  else
  begin
    if Application.MessageBox('确定要扫描退货吗？', '提示', 32 + 4) = IDYES then
      edtIsSMTH.Text := '√';
  end;
end;

end.

