📄 acp500_02.pas.svn-base
字号:
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 + -