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

📄 acr500_02.pas.svn-base

📁 一个用Delphi开发的ERP软件
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:

    adsAcr500B.FieldByName('FItemNo').Value:=qryOrd510B.FieldByName('O510B_003').Value;         //料品电脑编号
    adsAcr500B.FieldByName('FOrder').Value:=qryOrd510B.FieldByName('O510B_001').Value;          //来源单号
    adsAcr500B.FieldByName('FLineNo').Value:=qryOrd510B.FieldByName('O510B_002').Value;         //来源行号
    adsAcr500B.Post;
    qryOrd510B.Next;
  end;
  adsAcr500B.EnableControls;
  AIsChanged:=True;
  wwDBGrid1UpdateFooter(wwDBGrid1);
  SetDBGridA;
end;

procedure TAcr500_02Form.SetDBGridA;
var
  I:Integer;
begin
  for I:=0 to wwDBGrid1.Selected.Count-1 do
  begin
    wwDBGrid1.Columns[I].ReadOnly:=True;
  end;
  wwDBGrid1.ColumnByName('FDisType').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FRemark').ReadOnly:=False;
  wwDBGrid1.Refresh;
end;

procedure TAcr500_02Form.adsAcr500BNewRecord(DataSet: TDataSet);
begin
  inherited;
  ALastNo:=ALastNo+1;
  adsAcr500B.FieldByName('FNo').Value:=ALastNo;
  adsAcr500B.FieldByName('FQty').Value:=0;
  adsAcr500B.FieldByName('FRate').Value:=0;
  adsAcr500B.FieldByName('FAmount').Value:=0;
  cbDisType.ItemIndex:=0;
end;

procedure TAcr500_02Form.wwDBGrid1ColExit(Sender: TObject);
begin
  inherited;
  if wwDBGrid1.GetActiveField.FieldName='FQty' then
  begin
    SetDisQty;
  end else
  if wwDBGrid1.GetActiveField.FieldName='FRate' then
  begin
    SetDisRate;
  end else
  if wwDBGrid1.GetActiveField.FieldName='FAmount' then
  begin
    SetDisAmount;
  end;

end;

procedure TAcr500_02Form.SetDisQty;
begin
  if not (adsAcr500B.State in [dsInsert,dsEdit]) then Exit;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
  if adsAcr500BFQty.AsFloat<adsAcr500BFOrderQty.AsFloat then
  begin
    adsAcr500BFRate.AsFloat:=adsAcr500BFQty.AsFloat/adsAcr500BFOrderQty.AsFloat;
    adsAcr500BFAmount.AsFloat:=adsAcr500BFQty.AsFloat*adsAcr500BFOrderPrice.AsFloat;
    adsAcr500BFAcrQty.AsFloat:=adsAcr500BFOrderQty.AsFloat-adsAcr500BFQty.AsFloat;
    adsAcr500BFAcrAmt.AsFloat:=(adsAcr500BFAcrQty.AsFloat*adsAcr500BFOrderPrice.AsFloat);
  end else
  begin
     ShowMsg('UMS10000653');      //折扣数量不能大于销售数量,请重新输入
  end;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=True;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=True;
end;

procedure TAcr500_02Form.SetDisRate;
begin
  if not (adsAcr500B.State in [dsInsert,dsEdit]) then Exit;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
  if adsAcr500BFRate.AsFloat<1 then
  begin
    adsAcr500BFQty.AsFloat:=adsAcr500BFRate.AsFloat*adsAcr500BFOrderQty.AsFloat;
    adsAcr500BFAmount.AsFloat:=adsAcr500BFOrderAmount.AsFloat*adsAcr500BFRate.AsFloat;
    adsAcr500BFAcrQty.AsFloat:=adsAcr500BFOrderQty.AsFloat-adsAcr500BFQty.AsFloat;
    adsAcr500BFAcrAmt.AsFloat:=adsAcr500BFOrderAmount.AsFloat*(1-adsAcr500BFRate.AsFloat);
  end else
  begin
     ShowMsg('UMS10000654');      //折扣比率不能大于1,请重新输入
  end;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=True;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=True;
end;

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

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

procedure TAcr500_02Form.wwDBGrid1UpdateFooter(Sender: TObject);
var
  ASumQty,ALineDisRate,ALineSumAmt,AAcrQty,AAcrAmt:Double;
begin
  inherited;
  if not AIsChanged then Exit;
  ASumQty:=0;
  ALineDisRate:=0;
  ALineSumAmt:=0;
  AAcrQty:=0;
  AAcrAmt:=0;
  ADODataSet1.Clone(adsAcr500B);
  ADODataSet1.DisableControls;
  ADODataSet1.First;
  while not ADODataSet1.Eof do
  begin
    ASumQty:=ASumQty+ADODataSet1.FieldByName('FOrderQty').AsFloat;
    ALineDisRate:=ALineDisRate+StrToFloatA(FloatToStrF(ADODataSet1.FieldByName('FRate').AsFloat,ffNumber,18,2));
    ALineSumAmt:=ALineSumAmt+StrToFloatA(FloatToStrF(ADODataSet1.FieldByName('FQty').AsFloat,ffNumber,18,2));
    AAcrQty:=AAcrQty+StrToFloatA(FloatToStrF(ADODataSet1.FieldByName('FAcrQty').AsFloat,ffNumber,18,2));
    AAcrAmt:=AAcrAmt+StrToFloatA(FloatToStrF(ADODataSet1.FieldByName('FAcrAmt').AsFloat,ffNumber,18,2));
    ADODataSet1.Next;
  end;
  ADODataSet1.EnableControls;
  wwDBGrid1.ColumnByName('FItemID').FooterValue:=GetDBString('COM00004002')+FloatToStrF(adsAcr500B.RecordCount,ffNumber,18,0);  //记录总数
  wwDBGrid1.ColumnByName('FQty').FooterValue:=FloatToStrF(ASumQty,ffNumber,18,2);
  wwDBGrid1.ColumnByName('FRate').FooterValue:=FloatToStrF(ALineDisRate,ffNumber,18,2);
  wwDBGrid1.ColumnByName('FAmount').FooterValue:=FloatToStrF(ALineSumAmt,ffNumber,18,2);
  wwDBGrid1.ColumnByName('FAcrQty').FooterValue:=FloatToStrF(AAcrQty,ffNumber,18,2);
  wwDBGrid1.ColumnByName('FAcrAmt').FooterValue:=FloatToStrF(AAcrAmt,ffNumber,18,2);
end;

procedure TAcr500_02Form.SetDisAmount;
begin
  if not (adsAcr500B.State in [dsInsert,dsEdit]) then Exit;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
  if adsAcr500BFAmount.AsFloat<adsAcr500BFOrderAmount.AsFloat then
  begin
    if adsAcr500BFOrderAmount.Value>0 then
    begin
      adsAcr500BFQty.AsFloat:=adsAcr500BFAmount.AsFloat/adsAcr500BFOrderAmount.Value*adsAcr500BFOrderQty.Value;
      adsAcr500BFRate.AsFloat:=adsAcr500BFAmount.AsFloat/adsAcr500BFOrderAmount.Value;
    end;
    adsAcr500BFAcrQty.AsFloat:=adsAcr500BFOrderQty.AsFloat-adsAcr500BFQty.AsFloat;
    adsAcr500BFAcrAmt.AsFloat:=adsAcr500BFOrderAmount.AsFloat*(1-adsAcr500BFRate.AsFloat);
  end else
  begin
     ShowMsg('UMS10000655');      //折扣金额不能大于销售金额,请重新输入
  end;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=True;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=True;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
end;

procedure TAcr500_02Form.cbDisTypeChange(Sender: TObject);
begin
  inherited;
  if cbDisType.ItemIndex=0 then
  begin
    wwDBGrid1.ColumnByName('FQty').ReadOnly:=False;
    wwDBGrid1.ColumnByName('FRate').ReadOnly:=True;
    wwDBGrid1.ColumnByName('FAmount').ReadOnly:=True;
  end;
  if cbDisType.ItemIndex=1 then
  begin
    wwDBGrid1.ColumnByName('FQty').ReadOnly:=True;
    wwDBGrid1.ColumnByName('FRate').ReadOnly:=False;
    wwDBGrid1.ColumnByName('FAmount').ReadOnly:=True;
  end;
  if cbDisType.ItemIndex=2 then
  begin
    wwDBGrid1.ColumnByName('FQty').ReadOnly:=True;
    wwDBGrid1.ColumnByName('FRate').ReadOnly:=True;
    wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
  end;
end;

procedure TAcr500_02Form.adsAcr500BAfterScroll(DataSet: TDataSet);
begin
  inherited;
  if cbDisType.ItemIndex=0 then
  begin
    wwDBGrid1.ColumnByName('FQty').ReadOnly:=False;
    wwDBGrid1.ColumnByName('FRate').ReadOnly:=True;
    wwDBGrid1.ColumnByName('FAmount').ReadOnly:=True;
  end;
  if cbDisType.ItemIndex=1 then
  begin
    wwDBGrid1.ColumnByName('FQty').ReadOnly:=True;
    wwDBGrid1.ColumnByName('FRate').ReadOnly:=False;
    wwDBGrid1.ColumnByName('FAmount').ReadOnly:=True;
  end;
  if cbDisType.ItemIndex=2 then
  begin
    wwDBGrid1.ColumnByName('FQty').ReadOnly:=True;
    wwDBGrid1.ColumnByName('FRate').ReadOnly:=True;
    wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
  end;
end;

procedure TAcr500_02Form.sbCustClick(Sender: TObject);
begin
  inherited;
//客户编号
  if not edtCust.Focused then edtCust.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryOrd150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    if qryOrd150.IsEmpty then Exit;
    GetCustPlaceInfo;
  end;
end;

procedure TAcr500_02Form.GetCustPlaceInfo;
var
  ACustNo:Integer;
begin
  if qryOrd150.IsEmpty then Exit;
  edtCust.Text:=qryOrd150.FieldByName('O150_002').AsString;
  edtCustName.Text:=qryOrd150.FieldByName('O150_003').AsString;
  edtPhone.Text:=qryOrd150.FieldByName('O150_005').AsString;
  edtAddress.Text:=qryOrd150.FieldByName('O150_012').AsString;
  edtContact.Text:=qryOrd150.FieldByName('O151_002').AsString;
  edtDept.Text:=qryOrd150.FieldByName('O151_003').AsString;
  edtPosit.Text:=qryOrd150.FieldByName('O151_004').AsString;
  ACustNo:=qryOrd150.FieldByName('O150_001').AsInteger;
end;

procedure TAcr500_02Form.edtCustExit(Sender: TObject);
begin
  inherited;
//客户编号
  if trim(edtCust.Text)='' then Exit;
  if qryOrd150.Locate('O150_002',edtCust.Text,[]) then
  begin
    GetCustPlaceInfo;
  end else
  begin
    ShowMsg('UMS10000264');  //输入的客户编号无效
    edtCust.SetFocus;
    Abort;
  end
end;

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

procedure TAcr500_02Form.edtItemCustomDlg(Sender: TObject);
var
  ACustNo:integer;
  ACurrNo:integer;
begin
  inherited;
//产品编号
  if not qryOrd150.Locate('O150_002',edtCust.Text,[]) then
  begin
    ShowMsg('UMS10000266');  //必须先输入正确的客户编号
    edtCust.SetFocus;
    Abort;
  end;
  if cbCurr.ItemIndex=-1 then
  begin
    ShowMsg('UMS10000***');  //必须先选择币别
    Abort;
  end;
  ACustNo:=qryOrd150.fieldByName('O150_001').Value;
  ACurrNo:=qryGld100.fieldByName('G100_001').Value;

  HwSelDataAForm:=THwSelDataAForm.Create(Application);
  //AType:
  //AType='ORD510'   //采用销售订单来进行折扣并开销售发票
  //AType='TAS533'   //采用任务工单来进行折扣并开销售发票
  HwSelDataAForm.OpenData(AType,0,ACustNo,0);
  if HwSelDataAForm.ShowModal=1 then
  begin
    Update;
    ABusy:=True;
    Screen.Cursor:=crHourGlass;
    wwDBGrid1.OnUpdateFooter:=nil;
    with HwSelDataAForm do
    begin
      adsInv150.DisableControls;
      adsInv150.First;
      while adsInv150.Locate('FSel',-1,[]) do
      begin
        //begin  取得料品信息
        //AItemInfo.ItemNo:=adsInv150.FieldByName('FItemNo').AsInteger;
        //AItemInfo.ItemID:=adsInv150.FieldByName('FItemID').AsString;
        //AItemInfo.ItemName:=adsInv150.FieldByName('FItemName').AsString;
        //AItemInfo.ItemSpec:=adsInv150.FieldByName('FItemSpec').AsString;
        //AItemInfo.UnitNo:=adsInv150.FieldByName('FUnitNo').AsInteger;
        //AItemInfo.UnitID:=adsInv150.FieldByName('FUnitID').AsString;
        //AItemInfo.UnitName:=adsInv150.FieldByName('FUnitName').AsString;

        //GetOrderInfo(AItemInfo.ItemNo,AItemInfo.UnitNo,AQty,AOrderInfo);
        //AddItemLine(AOrderInfo,AItemInfo,adsOrd510B,'ADD');
        //AOldItem:=adsOrd510B.FieldByName('FItemID').AsString;
        //AOldUnit:=adsOrd510B.FieldByName('FUnitID').AsString;
        //AOldQty:=adsOrd510B.FieldByName('FQty').AsFloat;
        //--end
        adsInv150.Edit;
        adsInv150.FieldByName('FSel').Value:=0;
        adsInv150.Post;
      end;
      adsInv150.EnableControls;
    end;
    wwDBGrid1.OnUpdateFooter:=wwDBGrid1UpdateFooter;
    AIsChanged:=True;
    ABusy:=False;
    wwDBGrid1UpdateFooter(wwDBGrid1);
    Screen.Cursor:=crDefault;
  end;
  ABusy:=False;
end;

procedure TAcr500_02Form.cbCurrChange(Sender: TObject);
begin
  inherited;
  qryGld100.Locate('G100_003',cbCurr.Text,[]);
  edtRate.Text:=qryGld100.FieldByName('G100_005').AsString;

end;

initialization
  RegisterClass(TAcr500_02Form);

finalization
  UnRegisterClass(TAcr500_02Form);

end.

⌨️ 快捷键说明

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