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

📄 pur500_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
  SetDBGrid;
  qryPur500B.Close;
  qryPur500B.SQL.Clear;
  qryPur500B.SQL.Add('select A.*,B.I150_002,B.I150_003,B.I150_008,B.I150_004,C.I140_002,C.I140_003');
  qryPur500B.SQL.Add('from (PUR500B A left join INV150 B on A.P500B_003=B.I150_001) left join INV140 C on A.P500B_004=C.I140_001');
  qryPur500B.SQL.Add('where A.P500B_001='+''''+edtCode.Text+'''');
  qryPur500B.SQL.Add('order by P500B_002');
  qryPur500B.Open;
  while not qryPur500B.Eof do
  begin
    adsPur500B.Append;
    adsPur500B.FieldByName('FNo').Value:=qryPur500B.FieldByName('P500B_002').Value;
    adsPur500B.FieldByName('FItemNo').Value:=qryPur500B.FieldByName('P500B_003').Value;
    adsPur500B.FieldByName('FItemID').Value:=qryPur500B.FieldByName('I150_002').Value;
    adsPur500B.FieldByName('FItemName').Value:=qryPur500B.FieldByName('I150_003').Value;
    adsPur500B.FieldByName('FEngItemName').Value:=qryPur500B.FieldByName('I150_008').Value;
    adsPur500B.FieldByName('FItemSpec').Value:=qryPur500B.FieldByName('I150_004').Value;
    adsPur500B.FieldByName('FUnitNo').Value:=qryPur500B.FieldByName('P500B_004').Value;
    adsPur500B.FieldByName('FUnitID').Value:=qryPur500B.FieldByName('I140_002').Value;
    adsPur500B.FieldByName('FUnitName').Value:=qryPur500B.FieldByName('I140_003').Value;
    adsPur500B.FieldByName('FQty').Value:=qryPur500B.FieldByName('P500B_005').Value;
    adsPur500B.FieldByName('FDate').Value:=qryPur500B.FieldByName('P500B_006').Value;
    adsPur500B.FieldByName('FPlace').Value:=qryPur500B.FieldByName('P500B_007').Value;
    adsPur500B.FieldByName('FRemark').Value:=qryPur500B.FieldByName('P500B_010').Value;
    adsPur500B.FieldByName('FUnitRate').Value:=qryPur500B.FieldByName('P500B_011').Value;
    adsPur500B.Post;
    ALastNo:=qryPur500B.FieldByName('P500B_002').AsInteger;
    qryPur500B.Next;
  end;
  adsPur500B.EnableControls;
end;

procedure TPur500_02Form.Action1Execute(Sender: TObject);
begin
  inherited;
//核准
  //0=新建,1=核准,2=完成,3=取消
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  if ADOQuery1P500A_004.Value<>0 then
  begin
    ShowMsg('UMS10000565');  //仅新建状态的采购申请可以核准
    Abort;
  end;
  ADOQuery1.Edit;
  ADOQuery1P500A_004.Value:=1;
  ADOQuery1.Post;
  ShowMsg('UMS10000566');  //采购申请已成功设置为核准状态
end;

procedure TPur500_02Form.Action2Execute(Sender: TObject);
begin
  inherited;
//取消
  //0=新建,1=核准,2=完成,3=取消
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  if ADOQuery1P500A_004.Value<>1 then
  begin
    ShowMsg('UMS10000567');  //仅核准状态的采购申请可以取消
    Abort;
  end;
  ADOQuery1.Edit;
  ADOQuery1P500A_004.Value:=2;
  ADOQuery1.Post;
  ShowMsg('UMS10000568');  //采购申请已成功设置为取消状态
end;

procedure TPur500_02Form.ADOQuery1P500A_004GetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  inherited;
  if ADOQuery1.IsEmpty then Exit;
  Text:=AStatus[Sender.AsInteger];
end;

procedure TPur500_02Form.ADOQuery1P500A_005GetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  inherited;
  if ADOQuery1.IsEmpty then Exit;
  Text:=AFrom[Sender.AsInteger];
end;

procedure TPur500_02Form.wwDBGrid1UpdateFooter(Sender: TObject);
var
  ASumQty:Double;
begin
  inherited;
  ASumQty:=0;
  ADODataSet1.Clone(adsPur500B);
  ADODataSet1.DisableControls;
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ASumQty:=ASumQty+ADODataSet1.FieldByName('FQty').AsFloat;
    ADODataSet1.Next;
  end;
  ADODataSet1.EnableControls;
  wwDBGrid1.ColumnByName('FItemID').FooterValue:=GetDBString('COM00004002')+FloatToStrF(ADODataSet1.RecordCount,ffNumber,10,0);  //记录总数
  wwDBGrid1.ColumnByName('FQty').FooterValue:=FloatToStrF(ASumQty,ffNumber,10,2);
end;

procedure TPur500_02Form.edtItemCustomDlg(Sender: TObject);
begin
  inherited;
//产品编号
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryInv150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    if not (adsPur500B.State in [dsInsert,dsEdit]) then
      if adsPur500B.IsEmpty then adsPur500B.Append else adsPur500B.Edit;
    adsPur500B.FieldByName('FItemNo').Value:=qryInv150.FieldByName('I150_001').Value;
    adsPur500B.FieldByName('FItemID').Value:=qryInv150.FieldByName('I150_002').Value;
    adsPur500B.FieldByName('FItemName').Value:=qryInv150.FieldByName('I150_003').Value;
    adsPur500B.FieldByName('FEngItemName').Value:=qryInv150.FieldByName('I150_008').Value;
    adsPur500B.FieldByName('FItemSpec').Value:=qryInv150.FieldByName('I150_004').Value;
    adsPur500B.FieldByName('FUnitNo').Value:=qryInv150.FieldByName('I140_001').Value;
    adsPur500B.FieldByName('FUnitID').Value:=qryInv150.FieldByName('I140_002').Value;
    adsPur500B.FieldByName('FUnitName').Value:=qryInv150.FieldByName('I140_003').Value;
    adsPur500B.FieldByName('FUnitRate').Value:=1;
    adsPur500B.FieldByName('FQty').Value:=1;
    adsPur500B.FieldByName('FDate').Value:=edtDate.Date;
    adsPur500B.FieldByName('FPlace').Value:=null;
    adsPur500B.FieldByName('FRemark').Value:=null;
    adsPur500B.Post;
  end;
end;

procedure TPur500_02Form.edtItemEnter(Sender: TObject);
begin
  inherited;
  if not ActSave.Enabled then Exit;
  if not (adsPur500B.State in [dsInsert,dsEdit]) then
    if adsPur500B.IsEmpty then adsPur500B.Append else adsPur500B.Edit;
end;

procedure TPur500_02Form.edtUnitCustomDlg(Sender: TObject);
var
  ACustNo,AItemNo,AUnitNo:Integer;
begin
  inherited;
//计算单位
  if not edtUnit.Focused then edtUnit.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryInv140,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    if qryInv140.IsEmpty then Exit;
    if not (adsPur500B.State in [dsInsert,dsEdit]) then
      if adsPur500B.IsEmpty then adsPur500B.Append else adsPur500B.Edit;
    adsPur500BFUnitNo.AsString:=qryInv140.FieldByName('I140_001').AsString;
    adsPur500BFUnitID.AsString:=qryInv140.FieldByName('I140_002').AsString;
    adsPur500BFUnitName.AsString:=qryInv140.FieldByName('I140_003').AsString;
    ACustNo:=0;
    AItemNo:=adsPur500B.FieldByName('FItemNo').AsInteger;
    AUnitNo:=qryInv140.FieldByName('I140_001').AsInteger;
    adsPur500BFUnitRate.Value:=GetUnitRate(ACustNo,AItemNo,AUnitNo);
  end;
end;

procedure TPur500_02Form.sbPersonClick(Sender: TObject);
begin
  inherited;
//请购人员
  if not edtPerson.Focused then edtPerson.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryHrm150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtPerson.Text:=qryHrm150.FieldByName('H150_002').AsString;
    edtPersonName.Text:=qryHrm150.FieldByName('H150_003').AsString;
    cbDept.Text:=qryHrm150.FieldByName('H100_002').AsString;
  end;
end;

procedure TPur500_02Form.edtPersonExit(Sender: TObject);
begin
  inherited;
//请购人员
  if trim(edtPerson.Text)='' then Exit;
  if qryHrm150.Locate('H150_002',edtPerson.Text,[]) then
  begin
    edtPerson.Text:=qryHrm150.FieldByName('H150_002').AsString;
    edtPersonName.Text:=qryHrm150.FieldByName('H150_003').AsString;
    cbDept.Text:=qryHrm150.FieldByName('H100_002').AsString;
  end else
  begin
    ShowMsg('UMS10000642');  //输入的请购人员无效
    edtPerson.Text:='';
    edtPersonName.Text:='';
    cbDept.Text:='';
    edtPerson.SetFocus;
    Abort;
  end;
end;

procedure TPur500_02Form.sbPlaceClick(Sender: TObject);
begin
  inherited;
//交货地点
  if not edtPlace.Focused then edtPlace.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryOrd152,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtPlace.Text:=qryOrd152.FieldByName('O152_002').AsString;
    edtRegion.Text:=qryOrd152.FieldByName('O120_002').AsString;
    edtPlacePhone.Text:=qryOrd152.FieldByName('O152_006').AsString;
    edtPlaceAddress.Text:=qryOrd152.FieldByName('O152_004').AsString;
    edtPlaceContact.Text:=qryOrd152.FieldByName('O151_002').AsString;
    edtPlaceDept.Text:=qryOrd152.FieldByName('O151_003').AsString;
    edtPlacePosit.Text:=qryOrd152.FieldByName('O151_004').AsString;
  end;
end;

procedure TPur500_02Form.edtPlaceExit(Sender: TObject);
begin
  inherited;
//交货地点
  if trim(edtPlace.Text)='' then Exit;
  if qryOrd152.Locate('O152_002',edtPlace.Text,[]) then
  begin
    edtPlace.Text:=qryOrd152.FieldByName('O152_002').AsString;
    edtRegion.Text:=qryOrd152.FieldByName('O120_002').AsString;
    edtPlacePhone.Text:=qryOrd152.FieldByName('O152_006').AsString;
    edtPlaceAddress.Text:=qryOrd152.FieldByName('O152_004').AsString;
    edtPlaceContact.Text:=qryOrd152.FieldByName('O151_002').AsString;
    edtPlaceDept.Text:=qryOrd152.FieldByName('O151_003').AsString;
    edtPlacePosit.Text:=qryOrd152.FieldByName('O151_004').AsString;
  end else
  begin
    ShowMsg('UMS10000420');  //输入的交货地点无效
    edtPlace.SetFocus;
    Abort;
  end;
end;

procedure TPur500_02Form.sbPlaceContactClick(Sender: TObject);
begin
  inherited;
//联系人员
  if not edtPlaceContact.Focused then edtPlaceContact.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryOrd151,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    if qryOrd151.IsEmpty then Exit;
    edtPlaceContact.Text:=qryOrd151.FieldByName('O151_002').AsString;
    edtPlaceDept.Text:=qryOrd151.FieldByName('O151_003').AsString;
    edtPlacePosit.Text:=qryOrd151.FieldByName('O151_004').AsString;
  end;
end;

procedure TPur500_02Form.edtPlaceContactExit(Sender: TObject);
begin
  inherited;
//联系人员
  if trim(edtPlaceContact.Text)='' then Exit;
  if qryOrd151.Locate('O151_002',edtPlaceContact.Text,[]) then
  begin
    edtPlaceContact.Text:=qryOrd151.FieldByName('O151_002').AsString;
    edtPlaceDept.Text:=qryOrd151.FieldByName('O151_003').AsString;
    edtPlacePosit.Text:=qryOrd151.FieldByName('O151_004').AsString;
  end else
  begin
    ShowMsg('UMS10000427');  //输入的联系人员无效
    edtPlaceContact.SetFocus;
    Abort;
  end;
end;

procedure TPur500_02Form.adsPur500BNewRecord(DataSet: TDataSet);
begin
  inherited;
  ALastNo:=ALastNo+1;
  adsPur500BFNo.Value:=ALastNo;
  adsPur500BFQty.Value:=1;
  adsPur500BFDate.Value:=edtDate.Date;
  adsPur500BFUnitRate.Value:=1;
end;

procedure TPur500_02Form.CheckItem;
begin
//产品编号
  if not ActSave.Enabled then Exit;
  if not qryInv150.Active then qryInv150.Open;
  if qryInv150.Locate('I150_002',adsPur500BFItemID.AsString,[]) then
  begin
    if not (adsPur500B.State in [dsInsert,dsEdit]) then
      if adsPur500B.IsEmpty then adsPur500B.Append else adsPur500B.Edit;
    adsPur500BFItemNo.AsInteger:=qryInv150.FieldByName('I150_001').AsInteger;
    adsPur500BFItemID.AsString:=qryInv150.FieldByName('I150_002').AsString;
    adsPur500BFItemName.AsString:=qryInv150.FieldByName('I150_003').AsString;
    adsPur500BFEngItemName.AsString:=qryInv150.FieldByName('I150_008').AsString;
    adsPur500BFItemSpec.AsString:=qryInv150.FieldByName('I150_004').AsString;
    adsPur500BFUnitNo.AsInteger:=qryInv150.FieldByName('I140_001').AsInteger;
    adsPur500BFUnitID.AsString:=qryInv150.FieldByName('I140_002').AsString;
    adsPur500BFUnitName.AsString:=qryInv150.FieldByName('I140_003').AsString;
  end else
  begin
    ShowMsg('UMS10000267');  //输入的产品编号无效
    if not (adsPur500B.State in [dsInsert,dsEdit]) then adsPur500B.Edit;
    adsPur500BFItemID.AsString:='';
    wwDBGrid1.SetActiveField('FItemID');
    Abort;
  end;
end;

procedure TPur500_02Form.CheckUnit;
begin
//计量单位
  if not ActSave.Enabled then Exit;
  if not qryInv150.Active then qryInv150.Open;
  if not qryInv150.Locate('I150_002',edtItem.Text,[]) then
  begin
    ShowMsg('UMS10000422');  //必须先输入正确的产品编号
    wwDBGrid1.SetActiveField('FItemID');
    Abort;
  end;
  if not qryInv140.Active then qryInv140.Open;
  if qryInv140.Locate('I140_002',adsPur500BFUnitID.AsString,[]) then
  begin
    if not (adsPur500B.State in [dsInsert,dsEdit]) then
      if adsPur500B.IsEmpty then adsPur500B.Append else adsPur500B.Edit;
    adsPur500BFUnitNo.AsString:=qryInv140.FieldByName('I140_001').AsString;
    adsPur500BFUnitID.AsString:=qryInv140.FieldByName('I140_002').AsString;
    adsPur500BFUnitName.AsString:=qryInv140.FieldByName('I140_003').AsString;
  end else
  begin
    ShowMsg('UMS10000411');  //输入的计量单位无效
    if not (adsPur500B.State in [dsInsert,dsEdit]) then adsPur500B.Edit;
    adsPur500BFUnitID.AsString:='';
    wwDBGrid1.SetActiveField('FUnitID');
    Abort;
  end;
end;

procedure TPur500_02Form.adsPur500BBeforePost(DataSet: TDataSet);
begin
  inherited;
  CheckItem;
  CheckUnit;
end;

procedure TPur500_02Form.wwDBGrid1Enter(Sender: TObject);
begin
  inherited;
  OnKeyDown:=nil;
end;

procedure TPur500_02Form.wwDBGrid1Exit(Sender: TObject);
begin
  inherited;
  OnKeyDown:=AKeyEvent;
end;

initialization
  RegisterClass(TPur500_02Form);

finalization
  UnRegisterClass(TPur500_02Form);

end.

⌨️ 快捷键说明

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