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