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

📄 acr500_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
  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;
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;
  AItemInfo:TItemInfo;
  APriceInfo:TPriceInfo;
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('UMS10000695');  //必须先选择币别
    Abort;
  end
  else
  begin
    qryGld100.Locate('G100_003',cbCurr.text,[]);
  end;
  ACustNo:=qryOrd150.fieldByName('O150_001').Value;
  ACurrNo:=qryGld100.fieldByName('G100_001').Value;
  HwSelDataAForm:=THwSelDataAForm.Create(Application);
  HwSelDataAForm.OpenData(AType,0,ACustNo,0,'',ACurrNo);
  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
        //取得料品信息
        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;
        AItemInfo.ItemNum:=adsInv150.FieldByName('FQty').AsFloat;
        AItemInfo.OrderNo:=adsInv150.FieldByName('FCode').AsString;
        AItemInfo.LineNo:=adsInv150.FieldByName('FNo').AsInteger;
        AItemInfo.OtherNo:=adsInv150.FieldByName('FSourceOrder').AsString;
        APriceInfo.StdPrice:=adsInv150.FieldByName('FPrice').AsInteger;  //标准价格
        APriceInfo.OrderAmt:=adsInv150.FieldByName('FAmount').AsInteger;  //定单金额

        // 应该把以前的折扣信息都显示出来
        GetOrderInfo(AItemInfo,APriceInfo);
        //将料品明细添加到表格里面
        AddItemLine(AItemInfo,APriceInfo,adsAcr500B,'ADD');

        //AOldItem:=adsOrd510B.FieldByName('FItemID').AsString;
        //AOldUnit:=adsOrd510B.FieldByName('FUnitID').AsString;
        //AOldQty:=adsOrd510B.FieldByName('FQty').AsFloat;
        
        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;

procedure TAcr500_02Form.GetOrderInfo(var AItemInfo: TItemInfo;
  var APriceInfo: TPriceInfo);
begin
//取得销售折扣的其他信息




end;

procedure TAcr500_02Form.AddItemLine(AItemInfo: TItemInfo;
  APriceInfo: TPriceInfo; ADataSet: TADODataSet; AType: string);
begin
  if not (ADataSet.State in [dsInsert,dsEdit]) then
    if (ADataSet.IsEmpty) or (AType='ADD') then ADataSet.Append else ADataSet.Edit;
  ADataSet.FieldByName('FItemNo').Value:=AItemInfo.ItemNo;
  ADataSet.FieldByName('FItemID').Value:=AItemInfo.ItemID;
  ADataSet.FieldByName('FItemName').Value:=AItemInfo.ItemName;
  ADataSet.FieldByName('FItemSpec').Value:=AItemInfo.ItemSpec;
//  ADataSet.FieldByName('FUnitNo').Value:=AItemInfo.UnitNo;
//  ADataSet.FieldByName('FUnitID').Value:=AItemInfo.UnitID;
  ADataSet.FieldByName('FUnitName').Value:=AItemInfo.UnitName;
  ADataSet.FieldByName('FOrderQty').Value:=AItemInfo.ItemNum;
  ADataSet.FieldByName('FOrder').Value:=AItemInfo.OrderNo;
  ADataSet.FieldByName('FLineNo').Value:=AItemInfo.LineNo;
  ADataSet.FieldByName('FSourceOrder').Value:=AItemInfo.OtherNo;
  ADataSet.FieldByName('FOrderPrice').Value:=APriceInfo.StdPrice;
  ADataSet.FieldByName('FOrderAmount').Value:=APriceInfo.OrderAmt;
  ADataSet.FieldByName('FQty').Value:=0;
  ADataSet.FieldByName('FRate').Value:=0;
  ADataSet.FieldByName('FAmount').Value:=0;
  ADataSet.FieldByName('FAcrQty').Value:=AItemInfo.ItemNum;
  ADataSet.FieldByName('FAcrAmt').Value:=APriceInfo.OrderAmt;
  if AType='UPD' then Exit;
  ADataSet.Post;
end;

procedure TAcr500_02Form.cbStyleChange(Sender: TObject);
begin
  inherited;
  if cbStyle.ItemIndex=0 Then
    AType:='ACR500A'    //销售定单
  else
    AType:='ACR500B';   //任务工单
end;

procedure TAcr500_02Form.mmiAddClick(Sender: TObject);
var
  ADataSet:TADODataSet;
begin
  inherited;
//新增
  ADataSet:=adsAcr500B;
  ADataSet.Append;
end;

procedure TAcr500_02Form.mmiEditClick(Sender: TObject);
var
  ADataSet:TADODataSet;
begin
  inherited;
//修改
  ADataSet:=adsAcr500B;
  if ADataSet.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  ADataSet.Edit;
end;

procedure TAcr500_02Form.mmiDelClick(Sender: TObject);
var
  ADataSet:TADODataSet;
begin
  inherited;
//删除
  ADataSet:=adsAcr500B;
  if ADataSet.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;
  if ShowDialog('UMS10000008')=IDNO then Abort;  //确定要删除此记录吗?
  ADataSet.Delete;
  AIsChanged:=True;
  wwDBGrid1UpdateFooter(wwDBGrid1);
end;

procedure TAcr500_02Form.pmAcr500BPopup(Sender: TObject);
var
  I:Integer;
begin
  inherited;
  for I:=0 to pmAcr500B.Items.Count-1 do
  begin
    pmAcr500B.Items.Items[I].Enabled:=ActSave.Enabled;
  end;
end;

initialization
  RegisterClass(TAcr500_02Form);

finalization
  UnRegisterClass(TAcr500_02Form);

end.

⌨️ 快捷键说明

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