private
    { Private declarations }
    ssss: string;
    shiftno: string;
    datetime: string;
  public
    { Public declarations }
    LoadCnt : integer;
    FirstRecord : boolean;
  end;var
  FaBarcodeInForm: TFaBarcodeInForm;
  SetfocusStage : String;
  SetfocusCell  : string;
  SavedCount : integer;
implementationuses ManufactureDm, PublicLib, Main, ErrMessageFrm, LoginSpecFrm;{$R *.dfm}
function TFaBarcodeInForm.CheckBCModel(BcNO:string):String;
begin
  Result := '';
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from DBCTicket where Bc_No ='''+BcNO+''' ');
  ADOQuery1.Open;
  if not ADOQuery1.Eof then
  begin
    Result := ADOQuery1.fieldbyname('BC_Model').AsString;
  end;
end;procedure TFaBarcodeInForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  CDS_BarcodeIn.Destroy;
  Action := caFree;
end;procedure TFaBarcodeInForm.FormCreate(Sender: TObject);
begin
  SetCapsLockKey( VK_CAPITAL, False );
  SetfocusStage := MainForm.SetfocusStage;
  SetfocusCell := Copy(MainForm.SetfocusStage,1,1);  Adq_CBar_F.Close;
  Adq_CBar_F.SQL.Add('and Processcode='''+SetfocusCell+''' ');  Adq_CBar_C.Close;
  Adq_CBar_C.SQL.Add('and Processcode='''+SetfocusCell+''' ');  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from DLine');
  ADOQuery1.SQL.Add(' Where Cell ='''+SetfocusCell+''' and OnLine=''Y''');
  ADOQuery1.Open;
  CBox_Line.Items.Clear;
  while not ADOQuery1.Eof do
  begin
    CBox_Line.Items.Add(ADOQuery1.fieldbyname('Line').AsString);
    ADOQuery1.Next;
  end;
  CDS_BarcodeIn.CreateDataSet;
  CDS_BarcodeIn.EmptyDataSet;  DateTimePicker1.DateTime := Now;
  LoadCnt := 0;
  FirstRecord := false;
end;procedure TFaBarcodeInForm.EdtFBarcodeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
  var i : integer;
      ChangeLine : boolean;
      repair,reworkstatus :integer;
      lockcell,lockline :string;
begin
  if Key = 13 then
  begin
     reworkstatus:=1;
     repair := 1  ;
    ManufactureDmod.AdoProduction.Connected := true;
    ChangeLine := false;
    if EdtFBarcode.Text <> '' then
         begin
      //modify by zhongxiang 2010/05/19 锁线别
            if Checklinelocked(SetfocusCell, CBox_Line.Text) then
              begin
                lockcell := SetfocusCell;
                lockline := CBox_Line.Text;
                ErrMessageForm.ErrMessage := '此线别已锁!请先解锁!';
                ErrMessageForm.ShowModal;
                EdtFBarcode.Text := '';
                EdtFBarcode.SetFocus;
                Abort;
              end;
      if CBox_Line.Text = '' then
      begin
        ErrMessageForm.ErrMessage := GetSysMessage(3,1);
        ErrMessageForm.ShowModal;
        CBox_Line.SetFocus;
        Abort;
      end;
      if EdtBcNo.Text = '' then
      begin
        ErrMessageForm.ErrMessage := GetSysMessage(4,1);
        ErrMessageForm.ShowModal;
        EdtBcNo.Text := '';
        EdtBcNo.SetFocus;
        Abort;
      end;
      EdtFBarcode.Text:=uppercase(EdtFBarcode.Text);    // modify  by smile hong  2010/03/08
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('Select * from DBCTicket Where Bc_no ='''+EdtBcNo.Text+''' ');
      ADOQuery1.Open;
      if ADOQuery1.Eof then
      begin
        ErrMessageForm.ErrMessage := GetSysMessage(4,2);
        ErrMessageForm.ShowModal;
        EdtBcNo.Text := '';
        EdtBcNo.SetFocus;
        Abort;
      end;
      if ADOQuery1.FieldByName('BC_sotype').AsString = 'R' then
      begin
        reworkstatus:=2;
      end;
      if ADOQuery1.FieldByName('BC_Closed').AsString = 'Y' then
      begin
        ErrMessageForm.ErrMessage := GetSysMessage(4,3);
        ErrMessageForm.ShowModal;
        EdtBcNo.Text := '';
        EdtBcNo.SetFocus;
        Abort;
      end;
      if MainForm.CheckTansQty then
      begin
        ADOQuery1.Close;
        ADOQuery1.SQL.Clear;
        ADOQuery1.SQL.Add('Select * from DFaPacking Where Bcno ='''+EdtBcNo.Text+''' ');
        ADOQuery1.SQL.Add('   and Processcode = '''+SetfocusStage+'''                ');
        ADOQuery1.Open;
        if ADOQuery1.Eof then
        begin
          ErrMessageForm.ErrMessage := GetSysMessage(4,4);
          ErrMessageForm.ShowModal;
          EdtBcNo.Text := '';
          EdtBcNo.SetFocus;
          Abort;
        end;
      end;
       if RG_PType.ItemIndex = 0 then
      begin
        {if Copy(EdtFBarcode.Text,1,length(EdtBcNo.Text)) <> Copy(EdtBcNo.Text,1,length(EdtBcNo.Text)) then
        begin
          ErrMessageForm.ErrMessage := GetSysMessage(4,7);
          ErrMessageForm.ShowModal;
          EdtFBarcode.Text := '';
          EdtFBarcode.SetFocus;
          Abort;
        end;
        }
        if CBox_CHKCUST.Checked then
          begin
            if not CheckCustCode(EdtBcNo.Text,EdtFBarcode.Text) then
             begin
             ErrMessageForm.ErrMessage := GetSysMessage(911071517,1)+GetSysMessage(3,5);
             ErrMessageForm.ShowModal;
             SetCapsLockKey( VK_CAPITAL, False );
             EdtFBarcode.Text := '';
             EdtFBarcode.SetFocus;
             Abort;
            end;
         end;
     end;
      Adq_repair.Close;
      Adq_repair.Parameters.ParamByName('Barcode').Value := EdtFBarcode.Text;
      Adq_repair.Open;
      while  not Adq_repair.Eof do
      begin
        if  Adq_repair.FieldByName('Status').AsString = 'P' then
            begin
                 if  Adq_Repair.FieldByName('Inputuser').AsString = 'QA' then
                     begin
                          ErrMessageForm.ErrMessage := GetSysMessage(1004122100,1);
                          ErrMessageForm.ShowModal;
                          EdtFBarcode.Text := '';
                          EdtNowBarcode.Text := '';
                          EdtFBarcode.SetFocus;
                          Abort;
                          end
                 else
                     begin
                          ErrMessageForm.ErrMessage := GetSysMessage(3,10);
                          ErrMessageForm.ShowModal;
                          EdtFBarcode.Text := '';
                          EdtNowBarcode.Text := '';
                          EdtFBarcode.SetFocus;
                          Abort;
                     end;
            end;
        if Adq_repair.FieldByName('Status').AsString = 'F'  then
        begin
          if  Adq_repair.FieldByName('rejected').AsString = 'Y' then
          begin
            ErrMessageForm.ErrMessage := GetSysMessage(3,9);
            ErrMessageForm.ShowModal;
            EdtFBarcode.Text := '';
            EdtNowBarcode.Text := '';
            EdtFBarcode.SetFocus;
            Abort;
          end;
        end;
        Adq_repair.Edit;
        Adq_repair.FieldByName('BarcodeInStatus').AsString := 'Y';
        Adq_repair.Post;
        repair := 2;
        Adq_repair.Next;
      end;      // ---Normal -------------------------------------------------------------
      if RG_PType.ItemIndex = 0 then
      begin
        if reworkstatus=2 then
        begin
         ErrMessageForm.ErrMessage := '此工单为返工单,请选择Rework工单sorting';
         ErrMessageForm.ShowModal;
         EdtFBarcode.Text := '';
         EdtNowBarcode.Text := '';
         EdtFBarcode.SetFocus;
         Abort;
        end;
        Adq_CBar_F.Close;
        Adq_CBar_F.Parameters.ParamByName('FBarcdode').Value := EdtFBarcode.Text;
        Adq_CBar_F.Parameters.ParamByName('bcno').Value := EdtBcNo.Text;
        Adq_CBar_F.Open;
        if Adq_CBar_F.Eof then
           begin
             Adq_CBar_F.Insert;
             Adq_CBar_F.FieldByName('Processcode').AsString := SetfocusCell;
             Adq_CBar_F.FieldByName('BcNo').AsString        := EdtBcNo.Text;
             Adq_CBar_F.FieldByName('Line').AsString        := CBox_Line.Text;
             Adq_CBar_F.FieldByName('Inptdate').AsString    := Get_ServerDateTime();
             Adq_CBar_F.FieldByName('FBarcode').AsString    := EdtFBarcode.Text;
             Adq_CBar_F.FieldByName('CBarcode').AsString    := '';             if Checklinefuntest(SetfocusCell, CBox_Line.Text) then
                Adq_CBar_F.FieldByName('FunTest').AsString := 'N'
             else
                Adq_CBar_F.FieldByName('FunTest').AsString := 'Y';
             if Checklinekeytest(SetfocusCell, CBox_Line.Text) then
                Adq_CBar_F.FieldByName('keyTest').AsString := 'N'
             else
                Adq_CBar_F.FieldByName('keyTest').AsString := 'Y';
             if Checklinemousetest(SetfocusCell, CBox_Line.Text) then
                Adq_CBar_F.FieldByName('mouseTest').AsString := 'N'
             else
                Adq_CBar_F.FieldByName('mouseTest').AsString := 'Y';
             if Checklinedarktest(SetfocusCell, CBox_Line.Text) then
                Adq_CBar_F.FieldByName('darkTest').AsString := 'N'
             else
                Adq_CBar_F.FieldByName('darkTest').AsString := 'Y';
             if Checklinevctest(SetfocusCell, CBox_Line.Text) then
                Adq_CBar_F.FieldByName('vcTest').AsString := 'N'
             else
                Adq_CBar_F.FieldByName('vcTest').AsString := 'Y';
             if Checklinebackvctest(SetfocusCell, CBox_Line.Text) then
                Adq_CBar_F.FieldByName('backvcTest').AsString := 'N'
             else
                Adq_CBar_F.FieldByName('backvcTest').AsString := 'Y';
             Adq_CBar_F.FieldByName('AOI').AsString := 'N';
             Adq_CBar_F.FieldByName('Rejected').AsString    := 'N';
             Adq_CBar_F.FieldByName('ProcessType').AsString := 'N'; // N:Nornal S:Sorting
             Adq_CBar_F.Post;
           end