📄 usaleorder.pas
字号:
Exit;
end;
if BillHandData.FieldByName('BillDate').AsString='' then
begin
Application.MessageBox('订货日期不能为空,请输入。',Hintinfo,$30);
BillDateDBEdit.SetFocus;
Exit;
end;
if BillHandData.FieldByName('ForecastDveDate').AsString<>'' then
begin
if BillHandData.FieldByName('ForecastDveDate').AsDateTime<
BillHandData.FieldByName('BillDate').AsDateTime then
begin
Application.MessageBox('计划日期不可大于预计收货日期。','提示依靠',$30);
ForecastDveDateDBEdit.SetFocus;
Exit;
end;
end;
if not isEdit then
begin
BillHandData.Edit;
BillHandData.Fieldbyname('BILLCode').asstring:=ComDepotCode+'-'+'XD'+'-'+
GetBillID('21', BillHandData.Fieldbyname('BILLDATE').asstring);
end;
with BillBodyData do
begin
First;
while not Eof do
begin
if Fieldbyname('PartCode').asstring<>'' then
begin
Edit;
Fieldbyname('ID').asinteger:=i+1;
Fieldbyname('BILLCode').asstring:=BillHandData.Fieldbyname('BILLCode').asstring;
Fieldbyname('ReceiptQur').asfloat:=0;
Fieldbyname('isExecute').asfloat:=0;
i:=i+1;
Next;
end
else
begin
BillHandData.Edit;
BillHandData.FieldByName('TOTALSUM').asfloat:=
BillHandData.FieldByName('TOTALSUM').asfloat-
Fieldbyname('TOTALSUM').AsFloat;
Sum:=BillHandData.FieldByName('TOTALSUM').asfloat;
Delete;
if BillBodyData.RecNo=BillBodyData.RecordCount then
Next;
end;
end;
end;
if BillBodyData.IsEmpty then
begin
Application.MessageBox(NotPartsOfSave,Hintinfo,$30);
Exit;
end;
Try
BillBodyData.ApplyUpdates(-1);
BillHandData.ApplyUpDates(-1);
Application.MessageBox(DataSaveOfSucceed,Hintinfo,$30);
except
Application.MessageBox(DataSaveOfFail, Errorinfo,$10);
BillBodyData.CancelUpdates;
BillHandData.CancelUpdates;
end;
BillBodyData.First;
Sum:=0;
isStateEdit:=False;
SetView;
BillBodyData.ReadOnly:=True;
BillHandData.ReadOnly:=True;
Action5Execute(Sender);
end;
procedure TfrmSaleOrder.Action9Execute(Sender: TObject);
begin
DBCtrlGrid.SetFocus;
BillBodyData.CancelUpdates;
BillHandData.CancelUpdates;
BillBodyData.First;
Sum:=0;
isStateEdit:=False;
SetView;
BillBodyData.ReadOnly:=True;
BillHandData.ReadOnly:=True;
end;
procedure TfrmSaleOrder.ClientDBEditExit(Sender: TObject);
begin
if (Trim(ClientDBEdit.Text)<>'') and (isStateEdit) and
(Trim(ClientDBEdit.Text)<>OldProviderCode) then
begin
OpenData('select Code, ClientName from Clientinfo where Code='+
#39+Trim(ClientDBEdit.Text)+#39, dmData.sdsPublic);
if dmData.sdsPublic.IsEmpty then
begin
Application.MessageBox(PChar('没有编号为“'+Trim(ClientDBEdit.Text)+
'”的客户,请重新输入。'), HintInfo, $30);
BillHandData.Edit;
BillHandData.FieldByName('ProviderCode').asstring:=OldProviderCode;
ClientDBEdit.SetFocus;
Exit;
end;
BillHandData.Edit;
BillHandData.FieldByName('Provider').asstring:=
dmData.sdsPublic.FieldByName('ClientName').asstring
end
else
if (Trim(ClientDBEdit.Text)='') and
(Trim(ClientDBEdit.Text)<>OldProviderCode) then
begin
BillHandData.Edit;
BillHandData.FieldByName('Provider').asstring:='';
end;
ClientDBEdit.DataField:='Provider';
end;
procedure TfrmSaleOrder.ClientDBEditEnter(Sender: TObject);
begin
if isStateEdit then
begin
ClientDBEdit.DataField:='ProviderCode';
OldProviderCode:=Trim(ClientDBEdit.Text);
end;
end;
procedure TfrmSaleOrder.ClientDBEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and( Key=13) then
begin
LBEditButton1Click(Nil);
Exit;
end;
if key=13 then Perform(WM_NEXTDLGCTL,0,0);
end;
procedure TfrmSaleOrder.DBCtrlGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
key:=0;
end;
procedure TfrmSaleOrder.PartCodeDBEditDblClick(Sender: TObject);
begin
if not isStateEdit then Exit;
BillSum:=BillHandData.Fieldbyname('TOTALSUM').asfloat;
PartSum:=BillBodyData.Fieldbyname('TOTALSUM').asfloat;
OpposingCode:=BillHandData.Fieldbyname('PROVIDERCODE').asstring;
SelectPartType:=4;
SelectPartCds:=BillBodyData;
SelectParts;
IPartCode:=Trim(PartCodeDBEdit.Text);
OldCode:=Trim(PartCodeDBEdit.Text);
Sum:=BillSum;
BillHandData.Edit;
BillHandData.Fieldbyname('TOTALSUM').asfloat:=Sum;
BillHandData.FieldByName('BigSum').asstring:=
SumSmallTOBig(BillHandData.FieldByName('TotalSum').Asfloat);
end;
procedure TfrmSaleOrder.LBSpeecButton3Click(Sender: TObject);
var
BillCode: string;
begin
if BillHandData.IsEmpty then
begin
Application.MessageBox('没有可删除的采购订货单。',Hintinfo,$30);
Exit;
end;
if BillHandData.FieldByName('isAuditing').asstring='1' then
begin
Application.MessageBox('此采购订货单已审核,不可删除。',Hintinfo,$30);
Exit;
end;
if Application.MessageBox('确定在要删除当前订货单吗?',Hintinfo,$24)=idYes then
begin
BillHandData.ReadOnly:=False;
BillCode:=BillHandData.Fieldbyname('BillCode').asstring;
try
BillHandData.Delete;
BillHandData.ApplyUpdates(-1);
DeleteBillBody('Delete From OrderBillBody where BillCode='+#39+BillCode+#39);
OpenData('select * from OrderBillHand Order by BillCode DESC',
BillHandData);
except
Application.MessageBox('删除数据不成功。',Errorinfo,$10);
end;
BillHandData.ReadOnly:=True;
end;
end;
procedure TfrmSaleOrder.LBEditButton1Click(Sender: TObject);
begin
if not isStateEdit then Exit;
ClientDBEdit.SetFocus;
SelectClient;
if OpposingCode<>'' then
begin
BillHandData.Edit;
BillHandData.FieldByName('ProviderCode').asstring :=OpposingCode;
ClientDBEdit.Text:=OpposingCode;
end;
end;
procedure TfrmSaleOrder.LBEditButton2Click(Sender: TObject);
begin
if not isStateEdit then Exit;
GetXoY(LBEditButton2);
if BillHandData.Fieldbyname('BillDate').asDateTime>0 then
sDate:=BillHandData.Fieldbyname('BillDate').asDateTime
else
sDate:=Date;
SelectDate;
BillHandData.Edit;
BillHandData.FieldByName('BillDate').AsDateTime:=SDate;
end;
procedure TfrmSaleOrder.LBEditButton3Click(Sender: TObject);
begin
if not isStateEdit then Exit;
GetXoY(LBEditButton3);
if BillHandData.Fieldbyname('ForecastDveDate').asDateTime>0 then
sDate:=BillHandData.Fieldbyname('ForecastDveDate').asDateTime
else
sDate:=Date;
SelectDate;
BillHandData.Edit;
BillHandData.FieldByName('ForecastDveDate').AsDateTime:=SDate;
end;
procedure TfrmSaleOrder.PartCodeDBEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if KEY=VK_INSERT then
begin
BillAddPart(BillBodyData);
PartCodeDBEditDblClick(Nil);
end;
if Key=VK_DELETE then BillDeletePart(BillHandData, BillBodyData);
if (key=VK_F2) then PartCodeDBEditDblClick(Nil);
if key=13 then
begin
DBCtrlGrid.SetFocus;
PartNameDBEdit.SetFocus;
end;
BillKeyDown(Key, BillBodyData, 15);
end;
procedure TfrmSaleOrder.PartNameDBEditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if KEY=VK_INSERT then
begin
BillAddPart(BillBodyData);
PartCodeDBEditDblClick(Nil);
end;
if Key=VK_DELETE then BillDeletePart(BillHandData, BillBodyData);
if (key=VK_F2) then PartCodeDBEditDblClick(Nil);
if key=13 then
begin
DBCtrlGrid.SetFocus;
ProducingDBEdit.SetFocus;
end;
BillKeyDown(Key, BillBodyData, 15);
end;
procedure TfrmSaleOrder.ProducingDBEditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=13 then
begin
DBCtrlGrid.SetFocus;
UnitDBEdit.SetFocus;
end;
BillKeyDown(Key, BillBodyData, 15);
end;
procedure TfrmSaleOrder.UnitDBEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
DBCtrlGrid.SetFocus;
DepotPlaceDBEdit.SetFocus;
end;
BillKeyDown(Key, BillBodyData, 15);
end;
procedure TfrmSaleOrder.DepotPlaceDBEditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=13 then
begin
DBCtrlGrid.SetFocus;
QuantityDBEdit.SetFocus;
end;
BillKeyDown(Key, BillBodyData, 15);
end;
procedure TfrmSaleOrder.QuantityDBEditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=13 then
begin
DBCtrlGrid.SetFocus;
PriceDBEdit.SetFocus;
end;
BillKeyDown(Key, BillBodyData, 15);
end;
procedure TfrmSaleOrder.PriceDBEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
DBCtrlGrid.SetFocus;
AgioDBEdit.SetFocus;
end;
BillKeyDown(Key, BillBodyData, 15);
end;
procedure TfrmSaleOrder.AgioDBEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
DBCtrlGrid.SetFocus;
CessDBEdit.SetFocus;
end;
BillKeyDown(Key, BillBodyData, 15);
end;
procedure TfrmSaleOrder.CessDBEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
BillKeyDown(Key, BillBodyData, 15);
if key=13 then
begin
DBCtrlGrid.SetFocus;
if BillBodyData.Fieldbyname('PartCode').asstring='' then
begin
PartCodeDBEdit.SetFocus;
Exit;
end;
if not isStateEdit then
begin
if BillBodyData.RecordCount>BillBodyData.RecNo then
BillBodyData.Next;
PartCodeDBEdit.SetFocus;
Exit;
end;
BillBodyData.Next;
PartCodeDBEdit.SetFocus;
if BillBodyData.Eof then
begin
BillBodyData.Append;
BillBodyData.Fieldbyname('BillCode').asstring:='新单据';
BillBodyData.Fieldbyname('ID').asinteger:=BillBodyData.RecordCount+1;
BillBodyData.Post;
end;
end;
end;
procedure TfrmSaleOrder.QuantityDBEditExit(Sender: TObject);
begin
if isStateEdit then GetSum;
end;
procedure TfrmSaleOrder.AgioDBEditExit(Sender: TObject);
begin
if isStateEdit then
begin
if Trim(AgioDBEdit.Text)='' then
begin
BillBodyData.Edit;
BillBodyData.Fieldbyname('Agio').asfloat:=0;
end;
if (StrToFloat(AgioDBEdit.Text)>=10)or(StrToFloat(AgioDBEdit.Text)<0) then
begin
Application.MessageBox('折扣率只能是小于“10”和大于“0”之间的数字。',Hintinfo,$30);
BillBodyData.Edit;
BillBodyData.Fieldbyname('Agio').asfloat:=0;
end;
GetSum;
end;
end;
procedure TfrmSaleOrder.CessDBEditExit(Sender: TObject);
begin
if isStateEdit then
begin
if Trim(CessDBEdit.Text)='' then
begin
BillBodyData.Edit;
BillBodyData.Fieldbyname('Cess').asfloat:=0;
end;
if StrToFloat(CessDBEdit.Text)<0 then
begin
Application.MessageBox('税率只能是大于“0”的数字。',Hintinfo,$30);
BillBodyData.Edit;
BillBodyData.Fieldbyname('Cess').asfloat:=0;
end;
GetSum;
end;
end;
procedure TfrmSaleOrder.BillNextButtonClick(Sender: TObject);
begin
if isStateEdit then Exit;
BillHandData.Next;
if BillHandData.RecNo=1 then
BillHandData.Next;
if BillHandData.RecordCount=BillHandData.RecNo then
begin
if BillHandData.GetNextPacket=0 then
BillInfoLabel.Caption:='已经是移到第一张单据了!'
else
BillInfoLabel.Caption:='';
BillHandData.Next;
end
else
BillInfoLabel.Caption:='';
end;
procedure TfrmSaleOrder.BillPriorButtonClick(Sender: TObject);
begin
if isStateEdit then Exit;
BillHandData.Prior;
if BillHandData.RecNo=1 then
BillHandData.Prior;
if BillHandData.Bof then
BillInfoLabel.Caption:='已经是移到最后一张单据了!'
else
BillInfoLabel.Caption:='';
end;
procedure TfrmSaleOrder.ForecastDveDateDBEditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key=13) then
begin
LBEditButton3Click(Nil);
Exit;
end;
if key=13 then PartCodeDBEdit.SetFocus;
end;
procedure TfrmSaleOrder.ORDERMANDBEditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key=13 then Perform(WM_NEXTDLGCTL,0,0);
end;
procedure TfrmSaleOrder.BillDateDBEditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key=13) then
begin
LBEditButton2Click(Nil);
Exit;
end;
if key=13 then Perform(WM_NEXTDLGCTL,0,0);
end;
procedure TfrmSaleOrder.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=27 then Close;
if not isStateEdit then
begin
if key=VK_LEFT then BillNextButtonClick(Sender);
if key=VK_RIGHT then BillPriorButtonClick(Sender);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -