⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ubill_base.~pas

📁 相关的销售服务管理行业的一个软件
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
    Else
      BtnAuditing.Caption:='审弃';

    with QryDetail do
    begin
      Close;
      sql.Clear;
      SQL.Text:=tmpSQL;
      SQL.Add(' Where nBillID='''+Trim(DBEdit1.Text)+'''');
      Open;
    end;
  end;
end;

procedure TfrmBill_Base.FormShow(Sender: TObject);     //Pass
begin
  Panel2.Enabled:=false;
end;

procedure TfrmBill_Base.FormClose(Sender: TObject; //Pass
  var Action: TCloseAction);
begin
  SaveCol(RepOrder.Caption,DBGridEh1,1,trim(DBEdit3.text));
  if frmMain.MDIChildCount=1 then
    frmMain.Panel1.Visible:=True
  else
    frmMain.Panel1.Visible:=False;
  Action:=CaFree;
  frmBill_Base:=nil;
end;

procedure TfrmBill_Base.FormActivate(Sender: TObject);
begin
  WindowState:=wsMaximized;
  frmMain.Panel1.Visible:=False;
end;

procedure TfrmBill_Base.FormCloseQuery(Sender: TObject;  //Pass
  var CanClose: Boolean);
var
  i:integer;
begin
  if DS<>dsNone then
  begin
    i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
    if i=6 then
    begin
      BtnSaveClick(Sender);
      if DS<>dsNone then    //保存出错
      begin
        CanClose:=false;
        Exit;
      end;
    end
    else if i=7 then
    begin
      BtnCancelClick(Sender);
    end else
      CanClose:=False;
  end;
end;

procedure TfrmBill_Base.SpeedButton5Click(Sender: TObject);
begin
  SelFromTree(Edit5,DBEdit12,frmSel_Kh);
end;

procedure TfrmBill_Base.Edit5Exit(Sender: TObject);
begin
  HaveError(DBEdit12,Edit5);
end;

procedure TfrmBill_Base.Edit5Change(Sender: TObject);
begin
  Full_Back_Edit(DBEdit12,Edit5,frmSel_Kh);
end;

procedure TfrmBill_Base.DBEdit12Change(Sender: TObject);
begin
  Full_Front_Edit(DBEdit12,Edit5,frmSel_Kh);
end;

procedure TfrmBill_Base.BtnExitClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmBill_Base.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
    keybd_event(VK_TAB,0,KEYEVENTF_EXTENDEDKEY,0);
end;

procedure TfrmBill_Base.BtnFirstClick(Sender: TObject);
var
  i:integer;
begin
  if DS<>dsNone then
  begin
    i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
    if i=6 then
    begin
      BtnSaveClick(Sender);
      if DS<>dsNone then    //保存出错
      begin
        Exit;
      end;
    QryMaster.First;
    end
    else if i=7 then
    begin
      BtnCancelClick(Sender);
      QryMaster.First;
    end else
      Exit;
  end else
    QryMaster.First;
end;

procedure TfrmBill_Base.BtnPreviousClick(Sender: TObject);
var
  i:integer;
begin
  if DS<>dsNone then
  begin
    i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
    if i=6 then
    begin
      BtnSaveClick(Sender);
      if DS<>dsNone then    //保存出错
      begin
        Exit;
      end;
    QryMaster.Prior;
    end
    else if i=7 then
    begin
      BtnCancelClick(Sender);
      QryMaster.Prior;
    end else
      Exit;
  end else
    QryMaster.Prior;

end;

procedure TfrmBill_Base.BtnNextClick(Sender: TObject);
var
  i:integer;
begin
  if DS<>dsNone then
  begin
    i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
    if i=6 then
    begin
      BtnSaveClick(Sender);
      if DS<>dsNone then    //保存出错
      begin
        Exit;
      end;
    QryMaster.Next;
    end
    else if i=7 then
    begin
      BtnCancelClick(Sender);
      QryMaster.Next;
    end else
      Exit;
  end else
    QryMaster.Next;
end;

procedure TfrmBill_Base.BtnLastClick(Sender: TObject);
var
  i:integer;
begin
  if DS<>dsNone then
  begin
    i:=Application.MessageBox('还有数据没有保存,是否保存?','提示',35);
    if i=6 then
    begin
      BtnSaveClick(Sender);
      if DS<>dsNone then    //保存出错
      begin
        Exit;
      end;
    QryMaster.Last;
    end
    else if i=7 then
    begin
      BtnCancelClick(Sender);
      QryMaster.Last;
    end else
      Exit;
  end else
    QryMaster.Last;
end;

function TfrmBill_Base.NoError: Boolean;
var
  i:integer;
  j:integer;
  k:integer;
  tmpBool:Boolean;
  ckPosition:boolean;
begin
  i:=0;
  Result:=true;
  ErrorField:=-1;
  with DM.ADOQckPosition do
  begin
    close;
    sql.Add('select ncktcode,bCKPos from S_ck where  ncktcode='+#39+DBEdit3.text+#39);
    open;
    ckPosition := DM.ADOQckPosition.fieldbyname('bCKPos').asboolean;
    DM.ADOQckPosition.close;
  end;
  if (DS=dsNone) then Exit;

  try
  if (QryDetail.FieldByName('nGoodCode').AsString='') and
     (QryDetail.FieldByName('nGoodName').AsString='') and
     (QryDetail.FieldByName('nFSCount').AsString='') then
    Exit;
  Except
    Exit;
  end;

  With QryDetail do
  begin
    if FieldByName('nGoodName').AsString='' then
    begin
      Application.MessageBox('物品编号有误','提示',64);
      ErrorField:=0;
      Result:=False;
      Exit;
    end;

    if (FieldByName('nFSCount').AsString='') then
    begin
      for i:=0 to Fields.Count-1 do
      begin
        if trim(Fields[i].FieldName)='nFsCount' then
        begin
          Application.MessageBox('数量不能为空','提示',64);
          ErrorField:=i;
          Break;
        end;
      end;
      Result:=False;
      Exit;
    end;

    if (FieldByName('nFSPrice').AsString='') then
    begin
      for i:=0 to Fields.Count-1 do
      begin
        if Fields[i].FieldName='nfsprice' then
        begin
          ErrorField:=i;
          Application.MessageBox('单价不能为空','提示',64);
          Break;
        end;
      end;
      Result:=False;
      Exit;
    end;
    
    if FieldByName('bBatch').AsBoolean then
    begin
        for i:=0 to Fields.Count-1 do
          if Fields[i].FieldName='nbatch' then    //DataSet 的列
            Break;

        for j:=0 to DBGridEh1.Columns.Count-1 do
          if DBGridEh1.Columns[j].FieldName='nbatch' then     //Grid 的列
            Break;

        if FieldByName('nBatch').AsString='' then
        begin
          Result:=False;
          ErrorField:=i;
          Application.MessageBox('批次不能为空','提示',64);
          Exit;
        end;
      end;


  //=====================
    for j:=0 to DBGridEh1.Columns.Count-1 do
    begin
      if DBGridEh1.Columns[j].FieldName='nPosition' then
        break;
    end;

    if ckPosition then
    begin
     if DBGridEh1.Columns[j].PickList.Count>0 then
     begin
      if (FieldByName('nPosition').AsString='') then
      begin
        for i:=0 to Fields.Count-1 do
          if trim(Fields[i].FieldName)='nPosition' then
            Break;
        ErrorField:=i;
        Application.MessageBox('货位有误','提示',64);
        Result:=False;
        Exit;
      end else
      begin //已经录入,看是否有误
        tmpBool:=true;
        for k:=0 to DBGridEh1.Columns[j].Picklist.Count-1 do
        begin
          if DBGridEh1.Columns[j].PickList.Strings[k]=FieldbyName('nPosition').AsString then
          begin
            tmpBool:=false;
            Break;
          end;
        end;
        if tmpBool then
        begin
          Result:=false;
          Application.MessageBox('货位录入有误','提示',64);
          ErrorField:=i;
          Exit;
        end;
      end;
     end;
    end;
  //=====================
    for j:=0 to DBGridEh1.Columns.Count-1 do
    begin
      if DBGridEh1.Columns[j].FieldName='nFSCount' then
        break;
    end;

    if not(bHaveEnough) then
    begin
      for i:=0 to FieldCount-1 do
      begin
        if QryDetail.Fields[i].FieldName='nFsCount' then
        begin
          ErrorField:=i;
          Break;
        end;
      end;
      result:=false;
      Exit;
    end;
  //========为后续准备   ????????????/
    if ckPosition then
    begin
      if Caption='调拨业务' then
      begin
        tmpBool:=true;
        for j:=0 to DBGridEh1.Columns.Count-1 do
        begin
          if DBGridEh1.Columns[j].FieldName='nPosition2' then
          begin
            tmpBool:=false;
            break;
          end;
        end;

        if tmpBool then Exit;

        if DBGridEh1.Columns[j].PickList.Count>0 then
        begin
          if (FieldByName('nPosition2').Asstring='') then
          begin
            for i:=0 to Fields.Count-1 do
              if trim(Fields[i].FieldName)='nPosition2' then
                Break;
            ErrorField:=i;
            Application.MessageBox('货位有误','提示',64);
            Result:=False;
            Exit;
          end;
        end;
      end;
    end;
  end; {With}

end;

procedure TfrmBill_Base.QryDetailBeforePost(DataSet: TDataSet);
begin
  QryDetail.FieldByName('nBillID').AsString:=QryMaster.FieldByName('nBillID').AsString;
end;

procedure TfrmBill_Base.QryDetailAfterOpen(DataSet: TDataSet);
var
  rs_:_RecordSet;
  pty:property_;
  Pties:Properties;
  function GetCriteria:Property_;
  var
    iCount:Integer;
  begin
    rs_:=QryDetail.Recordset;
    Pties:=rs_.Properties;
    for iCount:=0 to Pties.Count-1 do
    begin
      pty:=pties.Item[iCount];
      if (pty.Name='Update Criteria') then
      begin
        Result:=pty;
        Break;
      end;
    end;
  end;
begin
  pty:=getCriteria;
  pty.Value:=0;
end;

function TfrmBill_Base.bHaveEnough: Boolean;
var
  tmpStr:String;
begin                                                                         
  Result:=true;
  tmpStr:=Copy(DBEdit1.Text,0,2);
  if (((tmpStr='01') or (tmpStr='02') or (tmpStr='03') or (tmpStr='07') )
     and (DBCheckBox1.Checked )) or (tmpStr='08')
     or (((tmpStr='04') or (tmpStr='05') or (tmpStr='06')) and
     (not(DBCheckBox1.Checked))) then
  begin      { TODO : To see wether the bill is out bill,just like Red In Bill or Blue out Bill or DB }
    With DM.ADOProc do
    begin
      Close;
      Parameters.ParamByName('@nGDCode').value:=QryDetail.FieldByName('nGoodCode').AsString;
      Parameters.ParamByName('@nCK').value:=DBEdit3.Text;
      Parameters.ParamByName('@nPosition').value:=QryDetail.FieldByName('nPosition').AsString;
      Parameters.ParamByName('@nBatch').value:=QryDetail.FieldByName('nBatch').AsString;
      Parameters.ParamByName('@Stocks').Value:=0;
      ExecProc;
      if QryDetail.FieldByName('nFsCount').AsFloat>Parameters.ParamByName('@Stocks').Value then
      begin
        //Application.MessageBox('目前没有这么多货物','提示',64);
        //Result:=false;
        result := true;
      end;
    end;   { TODO : with }
  end;
end;

procedure TfrmBill_Base.QryMasterAfterOpen(DataSet: TDataSet);
var
  rs_:_RecordSet;
  pty:property_;
  Pties:Properties;
  function GetCriteria:Property_;
  var
    iCount:Integer;
  begin
    rs_:=QryMaster.Recordset;
    Pties:=rs_.Properties;
    for iCount:=0 to Pties.Count-1 do
    begin
      pty:=pties.Item[iCount];
      if (pty.Name='Update Criteria') then
      begin
        Result:=pty;
        Break;
      end;
    end;
  end;
begin
  pty:=getCriteria;
  pty.Value:=0;
end;

procedure TfrmBill_Base.btnDeleteClick(Sender: TObject);
begin
//  if DS=dsAdd then
  if trim(QryMaster.FieldByName('nShMan').AsString)<>'' then
  begin
    Application.MessageBox('该单据已审核,不能删除','提示',64);
    Exit;                         
  end;
  QryDetail.Delete;
end;

procedure TfrmBill_Base.Button1999Click(Sender: TObject);
var
  iCount:integer;
begin
  for iCount:=0 to DBGrideh1.Columns.Count-1 do
  begin
    with DM.ADOQueryN do
    begin
      Close;
      SQL.Text:='insert into s_Qrdetail (reporder,dispname,dispfield) values('''+
        Label9.Caption+''','''+DBGridEh1.Columns[icount].Title.Caption+
        ''','''+DBGridEh1.Columns[icount].FieldName+''')';
      ExecSQL;
    end;
  end;
end;

procedure TfrmBill_Base.BtnSetClick(Sender: TObject);
begin
//ncw19770107
  SetItem(QryLoadField);
  FormShow(Sender);
  if trim(Edit1.Text)<>'' then begin
    FullGd(QryLoadField,DBGridEh1,RepOrder.Caption,1,DBEdit3.Text);
  end;
end;

procedure TfrmBill_Base.QryDetailnFsJineSetText(Sender: TField;
  const Text: String);
begin
  if RepOrder.Caption = '7' then
  begin
    if QryDetail.FieldByName('nFsCount').AsFloat<>0 then
      if text='' then
        QryDetail.FieldByName('nfsprice').Value:=0
      else
        QryDetail.FieldByName('nfsprice').Value:=StrToFloat(Text)/QryDetail.FieldByName('nFsCount').AsFloat;
//    QryDetail.FieldByName('nFsJine').Value:=formatfloat('#0.00',
//      StrToFloat(Text)*QryDetail.FieldByName('nFsCount').AsFloat);
    QryDetail.FieldByName('nFsJine').AsString:=Text;
  end;
end;

procedure TfrmBill_Base.DBGridEh1ColumnMoved(Sender: TObject; FromIndex,
  ToIndex: Integer);
begin
  if QryLoadField.Active then
    setDBGridEhTile(QryLoadField,FromIndex,ToIndex);
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -