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

📄 acp500_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
procedure TAcp500_02Form.AddDetailData;
var
  ARate:double;
begin
  ALastNo:=0;
  qryPUR510B.DisableControls;
  adsAcp500B.Close;
  adsAcp500B.CreateDataSet;

  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select P510A_013 from Pur510A where P510A_001='+''''+edtOrder.Text+'''');
  SYSDM.qryQuery.Open;
  ARate:=SYSDM.qryQuery.FieldByName('P510A_013').Value;

  qryPUR510B.Close;
  qryPUR510B.SQL.Clear;
  qryPUR510B.SQL.Add('select P510B_001,B.P510B_002,B.P510B_003,B.P510B_004,B.P510B_005,B.P510B_006,B.P510B_013,B.P510B_025');
  qryPUR510B.SQL.Add(' from PUR510B B');
  qryPUR510B.SQL.Add(' where B.P510B_001='+''''+edtOrder.Text+'''');
  qryPUR510B.SQL.Add(' order by P510B_002');
  qryPUR510B.Open;
  while not qryPUR510B.Eof do
  begin
    adsAcp500B.Append;
    adsAcp500B.FieldByName('FItemID').Value:=qryPUR510B.FieldByName('I150_002').Value;        //产品编号
    adsAcp500B.FieldByName('FItemName').Value:=qryPUR510B.FieldByName('I150_003').Value;      //产品名称
    adsAcp500B.FieldByName('FItemSpec').Value:=qryPUR510B.FieldByName('I150_004').Value;      //规格型号
    adsAcp500B.FieldByName('FUnitName').Value:=qryPUR510B.FieldByName('I140_003').Value;      //单位名称
    adsAcp500B.FieldByName('FOrderQty').Value:=qryPUR510B.FieldByName('P510B_005').Value;     //销售数量
    adsAcp500B.FieldByName('FOrderAmount').Value:=qryPUR510B.FieldByName('P510B_013').Value*(1-ARate);  //销售金额
    adsAcp500B.FieldByName('FOrderPrice').Value:=adsAcp500B.FieldByName('FOrderAmount').Value/adsAcp500B.FieldByName('FOrderQty').Value;   //销售单价
    adsAcp500B.FieldByName('FDisAmt').Value:=qryPUR510B.FieldByName('P510B_025').Value;       //已折扣额
    // 需要计算
    adsAcp500B.FieldByName('FAcpQty').Value:=adsAcp500B.FieldByName('FOrderQty').Value-adsAcp500B.FieldByName('FQty').Value;             //应收数量
    adsAcp500B.FieldByName('FAcpAmt').Value:=adsAcp500B.FieldByName('FOrderAmount').Value-adsAcp500B.FieldByName('FAmount').Value;       //应收金额

    adsAcp500B.FieldByName('FItemNo').Value:=qryPUR510B.FieldByName('P510B_003').Value;         //料品电脑编号
    adsAcp500B.FieldByName('FOrder').Value:=qryPUR510B.FieldByName('P510B_001').Value;          //来源单号
    adsAcp500B.FieldByName('FLineNo').Value:=qryPUR510B.FieldByName('P510B_002').Value;         //来源行号
    adsAcp500B.Post;
    qryPUR510B.Next;
  end;
  adsAcp500B.EnableControls;
  AIsChanged:=True;
  wwDBGrid1UpdateFooter(wwDBGrid1);
  SetDBGridA;
end;

procedure TAcp500_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 TAcp500_02Form.adsAcp500BNewRecord(DataSet: TDataSet);
begin
  inherited;
  ALastNo:=ALastNo+1;
  adsAcp500B.FieldByName('FNo').Value:=ALastNo;
  adsAcp500B.FieldByName('FQty').Value:=0;
  adsAcp500B.FieldByName('FRate').Value:=0;
  adsAcp500B.FieldByName('FAmount').Value:=0;
  cbDisType.ItemIndex:=0;
end;

procedure TAcp500_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 TAcp500_02Form.SetDisQty;
begin
  if not (adsAcp500B.State in [dsInsert,dsEdit]) then Exit;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
  if adsAcp500BFQty.AsFloat<adsAcp500BFOrderQty.AsFloat then
  begin
    adsAcp500BFRate.AsFloat:=adsAcp500BFQty.AsFloat/adsAcp500BFOrderQty.AsFloat;
    adsAcp500BFAmount.AsFloat:=adsAcp500BFQty.AsFloat*adsAcp500BFOrderPrice.AsFloat;
    adsAcp500BFAcpQty.AsFloat:=adsAcp500BFOrderQty.AsFloat-adsAcp500BFQty.AsFloat;
    adsAcp500BFAcpAmt.AsFloat:=(adsAcp500BFAcpQty.AsFloat*adsAcp500BFOrderPrice.AsFloat);
  end else
  begin
     ShowMsg('UMS10000675');      //折扣数量不能大于采购数量,请重新输入
  end;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=True;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=True;
end;

procedure TAcp500_02Form.SetDisRate;
begin
  if not (adsAcp500B.State in [dsInsert,dsEdit]) then Exit;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
  if adsAcp500BFRate.AsFloat<1 then
  begin
    adsAcp500BFQty.AsFloat:=adsAcp500BFRate.AsFloat*adsAcp500BFOrderQty.AsFloat;
    adsAcp500BFAmount.AsFloat:=adsAcp500BFOrderAmount.AsFloat*adsAcp500BFRate.AsFloat;
    adsAcp500BFAcpQty.AsFloat:=adsAcp500BFOrderQty.AsFloat-adsAcp500BFQty.AsFloat;
    adsAcp500BFAcpAmt.AsFloat:=adsAcp500BFOrderAmount.AsFloat*(1-adsAcp500BFRate.AsFloat);
  end else
  begin
     ShowMsg('UMS10000676');      //折扣比率不能大于1,请重新输入
  end;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=True;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=True;
end;

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

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

procedure TAcp500_02Form.wwDBGrid1UpdateFooter(Sender: TObject);
var
  ASumQty,ALineDisRate,ALineSumAmt,AAcpQty,AAcpAmt:Double;
begin
  inherited;
  if not AIsChanged then Exit;
  ASumQty:=0;
  ALineDisRate:=0;
  ALineSumAmt:=0;
  AAcpQty:=0;
  AAcpAmt:=0;
  ADODataSet1.Clone(adsAcp500B);
  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));
    AAcpQty:=AAcpQty+StrToFloatA(FloatToStrF(ADODataSet1.FieldByName('FAcpQty').AsFloat,ffNumber,18,2));
    AAcpAmt:=AAcpAmt+StrToFloatA(FloatToStrF(ADODataSet1.FieldByName('FAcpAmt').AsFloat,ffNumber,18,2));
    ADODataSet1.Next;
  end;
  ADODataSet1.EnableControls;
  wwDBGrid1.ColumnByName('FItemID').FooterValue:=GetDBString('COM00004002')+FloatToStrF(adsAcp500B.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('FAcpQty').FooterValue:=FloatToStrF(AAcpQty,ffNumber,18,2);
  wwDBGrid1.ColumnByName('FAcpAmt').FooterValue:=FloatToStrF(AAcpAmt,ffNumber,18,2);
end;

procedure TAcp500_02Form.SetDisAmount;
begin
  if not (adsAcp500B.State in [dsInsert,dsEdit]) then Exit;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=False;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
  if adsAcp500BFAmount.AsFloat<adsAcp500BFOrderAmount.AsFloat then
  begin
    if adsAcp500BFOrderAmount.Value>0 then
    begin
      adsAcp500BFQty.AsFloat:=adsAcp500BFAmount.AsFloat/adsAcp500BFOrderAmount.Value*adsAcp500BFOrderQty.Value;
      adsAcp500BFRate.AsFloat:=adsAcp500BFAmount.AsFloat/adsAcp500BFOrderAmount.Value;
    end;
    adsAcp500BFAcpQty.AsFloat:=adsAcp500BFOrderQty.AsFloat-adsAcp500BFQty.AsFloat;
    adsAcp500BFAcpAmt.AsFloat:=adsAcp500BFOrderAmount.AsFloat*(1-adsAcp500BFRate.AsFloat);
  end else
  begin
     ShowMsg('UMS10000677');      //折扣金额不能大于采购金额,请重新输入
  end;
  wwDBGrid1.ColumnByName('FQty').ReadOnly:=True;
  wwDBGrid1.ColumnByName('FRate').ReadOnly:=True;
  wwDBGrid1.ColumnByName('FAmount').ReadOnly:=False;
end;

procedure TAcp500_02Form.edtOrderExit(Sender: TObject);
begin
  inherited;
  if trim(edtOrder.Text)='' then Exit;
  if qryPUR510A.Locate('P510A_001',edtOrder.Text,[]) then
  begin
    GetOrderInfo;
  end else
  begin
    ShowMsg('UMS10000678');    //输入的采购单号无效,请重新输入
    edtOrder.SetFocus;
    Abort;
  end;

end;

procedure TAcp500_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 TAcp500_02Form.adsAcp500BAfterScroll(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 TAcp500_02Form.mmiAddClick(Sender: TObject);
var
  ADataSet:TADODataSet;
begin
  inherited;
//新增
  ADataSet:=adsAcp500B;
  ADataSet.Append;
end;

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

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

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

initialization
  RegisterClass(TAcp500_02Form);

finalization
  UnRegisterClass(TAcp500_02Form);

end.

⌨️ 快捷键说明

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