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