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

📄 acr500_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
  adsClone.CreateDataSet;
  adsClone.Clone(SYSDM.qryQuery);

  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('delete from ACR500B where A500B_001='+''''+ACode+'''');
  SYSDM.qryQuery.ExecSQL;

  adsClone.First;
  while not adsClone.Eof do
  begin
    UpdateORD510B(adsClone.fieldByName('FCode').Value,'DEL');
    if AType='ACR500B' then UpdateTAS533(adsClone.fieldByName('FCode').Value,'DEL');
    adsClone.Next;
  end;
  DeleteTableRecord(ADOQuery1,'ACR500A','A500A_001='+''''+ACode+'''');

end;

procedure TAcr500_02Form.GetDataInfo;
var
  ACustNo:integer;
begin
  inherited;
  //取得界面信息
  edtCode.Text:=ADOQuery1.fieldByName('A500A_001').AsString;
  edtDate.Date:=ADOQuery1.fieldByName('A500A_002').AsDateTime;
  edtPerson.Text:=ADOQuery1.fieldByName('H150_002').AsString;
  edtPersonName.Text:=ADOQuery1.fieldByName('H150_003').AsString;
  memRemark.Text:=ADOQuery1.fieldByName('A500A_006').AsString;
  cbStyle.ItemIndex:=ADOQuery1.fieldByName('A500A_013').AsInteger;
  if cbStyle.ItemIndex=0 Then
    AType:='ACR500A'
  else
    AType:='ACR500B';
  //币别编号
  qryGld100.Locate('G100_001',ADOQuery1.FieldByName('A500A_011').Value,[]);
  cbCurr.ItemIndex:=cbCurr.Items.IndexOf(qryGld100.FieldByName('G100_003').AsString);
  edtRate.Text:=ADOQuery1.FieldByName('A500A_012').AsString;  //币别汇率

  //明细表的内容
  GetDetailData;
  ACustNo:=ADOQuery1.FieldByName('A500A_005').Value;
  qryOrd150.Locate('O150_001',ACustNo,[]);  //客户编号
  GetCustPlaceInfo;  

  edtCreateDate.Text:=ADOQuery1.fieldByName('A500A_007').AsString;
  edtCreateBy.Text:=ADOQuery1.fieldByName('A500A_008').AsString;
  edtUpdateDate.Text:=ADOQuery1.fieldByName('A500A_009').AsString;
  edtUpdateBy.Text:=ADOQuery1.fieldByName('A500A_010').AsString;
end;

procedure TAcr500_02Form.InsertEvent;
var
  ADate:TDateTime;
begin
  inherited;
  ADate:=GetServerDate;
  edtCode.Text:='';
  edtPerson.Text:='';
  edtPersonName.Text:='';
  memRemark.Text:='';
  edtRate.Text:='';
  edtCust.Text:='';
  edtCustName.Text:='';
  edtPhone.Text:='';
  edtAddress.Text:='';
  edtContact.Text:='';
  adsAcr500B.Close;
  adsAcr500B.CreateDataSet;
  edtDate.Date:=ADate;
  cbStyle.ItemIndex:=0;
  AType:='ACR500A';
  cbCurrChange(cbCurr);
  SetDBGridA;
  edtCreateDate.Text:=FormatDateTime('yyyy-mm-dd hh:mm:ss',ADate);
  edtCreateBy.Text:=AUserName;
  edtUpdateDate.Text:=FormatDateTime('yyyy-mm-dd hh:mm:ss',ADate);
  edtUpdateBy.Text:=AUserName;  
end;

procedure TAcr500_02Form.ReportGetValue(const ParName: String;
  var ParValue: Variant);
begin
  inherited;

end;

procedure TAcr500_02Form.SetEmptyInit;
begin
  inherited;
  //取得界面信息
  edtCode.Text:='';
  edtDate.Date:=GetServerDate;
  edtPerson.Text:='';
  edtPersonName.Text:='';
  memRemark.Text:='';
  edtRate.Text:='';
  edtCust.Text:='';                 //客户编号
  edtCustName.Text:='';
  edtPhone.Text:='';                //电话号码
  edtAddress.Text:='';              //客户地址
  edtContact.Text:='';

  adsAcr500B.Close;
  adsAcr500B.CreateDataSet;

  edtCreateDate.Text:='';
  edtCreateBy.Text:='';
  edtUpdateDate.Text:='';
  edtUpdateBy.Text:='';

  cbCurr.ItemIndex:=5;
  edtRate.Text:='1';
  cbCurrChange(cbCurr);
  SetDBGridA;
  
  cbStyle.ItemIndex:=0;
  AType:='ACR500A';
end;

procedure TAcr500_02Form.TableAfterPost;
begin
  inherited;
  //保存的信息可以留下来..
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('delete * from ACR500B where A500B_001='+''''+edtCode.Text+'''');
  SYSDM.qryQuery.ExecSQL;

  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select * from ACR500B where A500B_001='+''''+edtCode.Text+''''+' order by A500B_002');
  SYSDM.qryQuery.Open;
  if adsAcr500B.State in [dsInsert,dsEdit] then adsAcr500B.Post;
  adsAcr500B.First;
  while not adsAcr500B.Eof do
  begin
    SYSDM.qryQuery.Append;
    SYSDM.qryQuery.FieldByName('A500B_001').Value:=edtCode.Text;                              //折扣单号
    SYSDM.qryQuery.FieldByName('A500B_002').Value:=adsAcr500B.FieldByName('FNo').Value;       //单据行号
    SYSDM.qryQuery.FieldByName('A500B_003').Value:=adsAcr500B.FieldByName('FOrder').Value;    //销售单号
    SYSDM.qryQuery.FieldByName('A500B_004').Value:=adsAcr500B.FieldByName('FLineNo').Value;   //销售单行
    SYSDM.qryQuery.FieldByName('A500B_005').Value:=adsAcr500B.FieldByName('FQty').Value;      //折扣数量
    SYSDM.qryQuery.FieldByName('A500B_006').Value:=adsAcr500B.FieldByName('FRate').Value;     //折扣比率
    SYSDM.qryQuery.FieldByName('A500B_007').Value:=adsAcr500B.FieldByName('FAmount').Value;   //折扣金额
    SYSDM.qryQuery.FieldByName('A500B_008').Value:=adsAcr500B.FieldByName('FRemark').Value;   //备注说明
    SYSDM.qryQuery.FieldByName('A500B_009').Value:=cbDisType.ItemIndex;                       //折扣类型
    SYSDM.qryQuery.FieldByName('A500B_010').Value:=adsAcr500B.FieldByName('FSourceOrder').Value;   //备注说明
    SYSDM.qryQuery.Post;
    //使用UpdateORD510B时需要判断折扣的类型
    UpdateORD510B(SYSDM.qryQuery.FieldByName('A500B_003').Value,'ADD');
    if AType='ACR500B' then  UpdateTAS533(SYSDM.qryQuery.FieldByName('A500B_003').Value,'ADD');
    adsAcr500B.Next;
  end;
end;

procedure TAcr500_02Form.TableBeforePost;
var
  ADate:TDateTime;
  ADisAmount:Double;
begin
  inherited;
  //判断输入的有效性
  if not qryHrm150.Locate('H150_002',edtPerson.Text,[]) then
  begin
    ShowMsg('UMS10000650');  //折扣人员无效,请重新输入
    edtPerson.SetFocus;
    Abort;
  end;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select A500B_003 as FCode from ACR500B where A500B_001='+''''+edtCode.Text+'''');
  SYSDM.qryQuery.open;
  SYSDM.qryQuery.First;
  adsClone.Close;
  adsClone.CreateDataSet;
  adsClone.Clone(SYSDM.qryQuery);
  ADisAmount:=StrToFloatA(wwDBGrid1.ColumnByName('FAmount').FooterValue);
  //更新主表信息
  if adsAcr500B.State in [dsInsert,dsEdit] then adsAcr500B.Post;
  qryAcr500B.Close;
  qryAcr500B.SQL.Clear;
  qryAcr500B.SQL.Add('delete from ACR500B where A500B_001='+''''+edtCode.Text+'''');
  qryAcr500B.ExecSQL;
  //删除从表后修正数据
  adsClone.First;
  while not adsClone.Eof do
  begin
    UpdateORD510B(adsClone.FieldByName('FCode').Value,'DEL');
    if AType='ACR500B' then  UpdateTAS533(adsClone.FieldByName('FCode').Value,'DEL');
    adsClone.Next;
  end;
  if AMode='ADD' then
  begin
    ADOQuery1.Append;
    ADOQuery1.FieldByName('A500A_007').AsString:=edtCreateBy.Text;    //制单人员
    ADOQuery1.FieldByName('A500A_008').AsString:=edtCreateDate.Text;  //制单日期
    ADOQuery1.FieldByName('A500A_009').AsString:=edtUpdateBy.Text;    //修改人员
    ADOQuery1.FieldByName('A500A_010').AsString:=edtUpdateDate.Text;  //修改日期
  end else
  begin
    ADate:=GetServerDate;
    ADOQuery1.Edit;
    ADOQuery1.FieldByName('A500A_009').AsString:=edtUpdateBy.Text;    //修改人员
    ADOQuery1.FieldByName('A500A_010').AsString:=FormatDateTime('yyyy-mm-dd hh:mm:ss',ADate);  //修改日期
  end;
  ADOQuery1.FieldByName('A500A_002').Value:=edtDate.Date;             // 折扣日期
  if qryHrm150.Locate('H150_002',edtPerson.Text,[]) then
  begin
    ADOQuery1.FieldByName('A500A_003').Value:=qryHrm150.FieldByName('H150_001').AsInteger;
  end;
  ADOQuery1.FieldByName('A500A_004').Value:=ADisAmount;        // 折扣金额
  ADOQuery1.FieldByName('A500A_006').Value:=memRemark.Text; // 备注说明

  ADOQuery1.FieldByName('A500A_005').Value:=qryOrd150.FieldByName('O150_001').Value;        //客户编号
  ADOQuery1.FieldByName('A500A_011').Value:=qryGld100.FieldByName('G100_001').Value;        //币别编号
  ADOQuery1.FieldByName('A500A_012').AsString:=edtRate.Text;        //币别汇率
  ADOQuery1.FieldByName('A500A_013').Value:=cbStyle.ItemIndex;      //折扣方式
end;

procedure TAcr500_02Form.UpdateEvent;
begin
  inherited;
  SetDBGridA;
end;

procedure TAcr500_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;
  end;
end;

procedure TAcr500_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;
  end else
  begin
    ShowMsg('UMS10000652');  //输入的折扣人员无效,请重新输入
    edtPerson.Text:='';
    edtPersonName.Text:='';
    edtPerson.SetFocus;
    Abort;
  end;
end;


procedure TAcr500_02Form.GetDetailData;
var
  ARate:double;
  ACode:string;
begin
  ALastNo:=0;
  adsAcr500B.DisableControls;
  adsAcr500B.Close;
  adsAcr500B.CreateDataSet;
//这是料品销售的做法,需要增加服务产品销售的做法
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select O510A_013 from Ord510A where O510A_001='+''''+ACode+'''');
  SYSDM.qryQuery.Open;
  ARate:=SYSDM.qryQuery.FieldByName('O510A_013').AsFloat;   //整张订单的折扣比率
  if AType='ACR500A' Then
  begin
    qryAcr500B.Close;
    qryAcr500B.SQL.Clear;
    qryAcr500B.SQL.Add('select A.*,B.O510B_002,B.O510B_003,B.O510B_004,B.O510B_005 as FOrderQty,B.O510B_006,B.O510B_013 as FOrderAmount,B.O510B_025 as FDisAmt');
    qryAcr500B.SQL.Add(' from ACR500B A,ORD510B B');
    qryAcr500B.SQL.Add(' where A.A500B_003=B.O510B_001 and  A.A500B_004=B.O510B_002 and A.A500B_001='+''''+edtCode.Text+'''');
    qryAcr500B.SQL.Add(' order by A500B_002');
    qryAcr500B.Open;
  end else
  begin
    qryAcr500B.Close;
    qryAcr500B.SQL.Clear;
    qryAcr500B.SQL.Add('select A.*,B.O510B_002,B.O510B_003,B.O510B_004,C.T533_004 as FOrderQty,B.O510B_006,B.O510B_013 * C.T533_004 as FOrderAmount,C.T533_009 as FDisAmt');
    qryAcr500B.SQL.Add(' from ACR500B A,ORD510B B,TAS533 C,TAS530 D');
    qryAcr500B.SQL.Add(' where A.A500B_003=B.O510B_001 and  A.A500B_004=B.O510B_002 and C.T533_001=D.T530_001 and D.T530_002=A.A500B_010 and C.T533_002=B.O510B_001 and C.T533_003=B.O510B_002 and A.A500B_001='+''''+edtCode.Text+'''');
    qryAcr500B.SQL.Add(' order by A500B_002');
    qryAcr500B.Open;
  end;
  //FOrderAmount:O510B_013 销售金额  FOrderQty: O510B_005 销售数量  FDisAmt:O510B_025 已折扣额
  while not qryAcr500B.Eof do
  begin
    adsAcr500B.Append;
    adsAcr500B.FieldByName('FItemID').Value:=qryAcr500B.FieldByName('I150_002').Value;       //产品编号
    adsAcr500B.FieldByName('FItemName').Value:=qryAcr500B.FieldByName('I150_003').Value;     //产品名称
    adsAcr500B.FieldByName('FItemSpec').Value:=qryAcr500B.FieldByName('I150_004').Value;     //规格型号
    adsAcr500B.FieldByName('FUnitName').Value:=qryAcr500B.FieldByName('I140_003').Value;     //单位名称
    adsAcr500B.FieldByName('FOrderQty').Value:=qryAcr500B.FieldByName('FOrderQty').Value;     //销售数量            重写 销售订单:来源于销售订单  任务工单:来源于任务汇报
    adsAcr500B.FieldByName('FOrderAmount').Value:=qryAcr500B.FieldByName('FOrderAmount').Value*(1-ARate);  //销售金额  重写 销售订单:销售金额=应收金额-订单总折扣  任务工单=服务工时*应收金额-订单总折扣
    adsAcr500B.FieldByName('FOrderPrice').Value:=adsAcr500B.FieldByName('FOrderAmount').Value/adsAcr500B.FieldByName('FOrderQty').Value;   //销售单价
    adsAcr500B.FieldByName('FQty').Value:=qryAcr500B.FieldByName('A500B_005').Value;          //折扣数量
    adsAcr500B.FieldByName('FRate').Value:=qryAcr500B.FieldByName('A500B_006').Value;         //折扣比率
    adsAcr500B.FieldByName('FAmount').Value:=qryAcr500B.FieldByName('A500B_007').Value;       //折扣金额
    adsAcr500B.FieldByName('FDisAmt').Value:=qryAcr500B.FieldByName('FDisAmt').Value;         //已折扣额             重写 销售订单:存放于销售订单  任务工单:存放于任务计划
    adsAcr500B.FieldByName('FAcrQty').Value:=adsAcr500B.FieldByName('FOrderQty').Value-adsAcr500B.FieldByName('FQty').Value;             //应收数量
    adsAcr500B.FieldByName('FAcrAmt').Value:=adsAcr500B.FieldByName('FOrderAmount').Value-adsAcr500B.FieldByName('FAmount').Value;       //应收金额
    adsAcr500B.FieldByName('FRemark').Value:=qryAcr500B.FieldByName('A500B_008').Value;       //备注说明
    adsAcr500B.FieldByName('FItemNo').Value:=qryAcr500B.FieldByName('O510B_003').Value;       //料品编号
    adsAcr500B.FieldByName('FOrder').Value:=qryAcr500B.FieldByName('A500B_003').Value;        //来源单号
    adsAcr500B.FieldByName('FLineNo').Value:=qryAcr500B.FieldByName('A500B_004').Value;       //来源行号
    cbDisType.ItemIndex:=qryAcr500B.FieldByName('A500B_009').Value;                           //折扣类型
    adsAcr500B.FieldByName('FDisType').Value:=cbDisType.Value;                                //折扣类型
    adsAcr500B.FieldByName('FSourceOrder').Value:=qryAcr500B.FieldByName('A500B_010').Value;  //来源编号
    adsAcr500B.Post;
    ALastNo:=qryAcr500B.FieldByName('A500B_002').AsInteger;
    qryAcr500B.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;
  cbDisTypeChange(cbDisType);
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');      //折扣数量不能大于销售数量,请重新输入

⌨️ 快捷键说明

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