📄 salebooking.~pas
字号:
unit SaleBooking;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, dxBar, dxBarExtItems, ComCtrls, ExtCtrls, dxExEdtr,
dxCntner, dxTL, dxDBCtrl, dxDBGrid, Buttons, DB, ADODB, dxDBTLCl,
dxGrClms, Mask, DBCtrls, dxEditor, dxEdLib, dxDBELib, cxControls,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit,
cxLookupEdit, cxDBLookupEdit, dxGrClEx, dxLayout, cxGridCustomPopupMenu,
cxGridPopupMenu, FR_Class, FR_E_TXT, FR_DSet, FR_DBSet;
type
TfrmSaleBooking = class(TForm)
dxBarManager1: TdxBarManager;
dxBarLargeButton1: TdxBarLargeButton;
dxBarLargeButton2: TdxBarLargeButton;
dxBarLargeButton3: TdxBarLargeButton;
dxBarLargeButton4: TdxBarLargeButton;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
edtNumber: TEdit;
Label3: TLabel;
Label4: TLabel;
dtpDateNow: TDateTimePicker;
GroupBox1: TGroupBox;
Label5: TLabel;
Label6: TLabel;
Label8: TLabel;
edtSumBookCount: TEdit;
Label9: TLabel;
edtSumTotalMoney: TEdit;
Label10: TLabel;
edtAvgBookPrice: TEdit;
Label13: TLabel;
edtTaxMoney: TEdit;
Label15: TLabel;
edtOtherMoney: TEdit;
Label16: TLabel;
edtGetMoney: TEdit;
Label23: TLabel;
Panel2: TPanel;
dssubs: TDataSource;
qryBookingSubs: TADOQuery;
dxDBGrid1: TdxDBGrid;
Panel3: TPanel;
bbtnAdd: TBitBtn;
bbtnDelete: TBitBtn;
dxDBGrid1BookName: TdxDBGridColumn;
dxDBGrid1BookEdition: TdxDBGridColumn;
dsCient: TDataSource;
qryClient: TADOQuery;
qryBookingUnit: TADOQuery;
cxlcbSaleBookingId: TcxLookupComboBox;
dsdbEdit: TDataSource;
edtUnitName: TDBEdit;
dxDBGrid1UnitId: TdxDBGridColumn;
dxDBGrid1BookId: TdxDBGridExtLookupColumn;
dxBarLargeButton5: TdxBarLargeButton;
edtMemo: TEdit;
bbtnEdit: TBitBtn;
dxBarLargeButton6: TdxBarLargeButton;
frReport1: TfrReport;
frDBDataSet1: TfrDBDataSet;
cbWholeBooking: TComboBox;
qryBookClass: TADOQuery;
dsBookClass: TDataSource;
dxDBGrid1BookPrice: TdxDBGridCurrencyColumn;
dxDBGrid1TotalMoney: TdxDBGridCurrencyColumn;
dxDBGrid1BookCount: TdxDBGridColumn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure bbtnAddClick(Sender: TObject);
procedure bbtnDeleteClick(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure dxBarLargeButton1Click(Sender: TObject);
procedure dxBarLargeButton2Click(Sender: TObject);
procedure dxBarLargeButton3Click(Sender: TObject);
procedure cxlcbSaleBookingIdPropertiesChange(Sender: TObject);
procedure dxBarLargeButton4Click(Sender: TObject);
procedure qryBookingSubsBeforePost(DataSet: TDataSet);
procedure FormDestroy(Sender: TObject);
procedure edtOtherMoneyKeyPress(Sender: TObject; var Key: Char);
procedure qryBookingSubsAfterOpen(DataSet: TDataSet);
procedure dxDBGrid1BookIdChange(Sender: TObject);
procedure qryBookingSubsAfterPost(DataSet: TDataSet);
procedure bbtnEditClick(Sender: TObject);
procedure dxBarLargeButton6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmSaleBooking: TfrmSaleBooking;
procedure frmSaleBookingShow;
implementation
uses Data, unSystPublic, Client, BookingEdit;
{$R *.dfm}
procedure frmSaleBookingShow;
begin
end;
procedure TfrmSaleBooking.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if (qryBookingUnit.State in[dsEdit,dsInsert]) and(cxlcbSaleBookingId.Text<>'') and(edtNumber.Text<>'') then
if Application.MessageBox('保存新加的订货单吗?',Title,MB_ICONQUESTION+MB_YESNO)=idyes then
dxBarLargeButton2Click(Sender)//保存
else
begin
with dmData.qryTemp do
begin
SQL.Text :='Delete From tbBookingSubs where BookingId='''+edtNumber.Text+'''';
ExecSQL;
end;
end;
qryBookingUnit.Close;
qryBookingSubs.Close;
Action :=caFree;
frmSaleBooking :=nil;
end;
procedure TfrmSaleBooking.FormShow(Sender: TObject);
begin
dtpDateNow.DateTime :=now;
with qryClient do
begin
Close;
SQL.Text :='Select * From tbClient';
Open;
end;
{with qryBookingSubs do
begin
Close;
SQL.Text :='Select * From tbBookingSubs';
Open;
end;}
{with qryBookClass do
begin
Close;
SQL.Text :='Select * From tbBookClass';
Open;
end;
with qryHouse do
begin
Close;
SQL.Text :='Select * From tbHouse';
Open;
end; }
GetPH(cbWholeBooking);
end;
procedure TfrmSaleBooking.bbtnAddClick(Sender: TObject);
begin
qryBookingSubs.Append;
frmBookingEdit :=TfrmBookingEdit.Create(self);
with frmBookingEdit do
begin
try
Tag :=1; //增加标志
ShowModal;
finally
Free;
end;
end;
end;
procedure TfrmSaleBooking.bbtnDeleteClick(Sender: TObject);
begin
if Application.MessageBox('真的要删除吗?',Title,MB_ICONQUESTION+MB_YESNO)=Idyes then
qryBookingSubs.Delete;
end;
procedure TfrmSaleBooking.BitBtn3Click(Sender: TObject);
begin
if qryClient.State in[dsEdit,dsInsert] then
qryBookingSubs.Post;
end;
procedure TfrmSaleBooking.dxBarLargeButton1Click(Sender: TObject);
begin
dxBarLargeButton2Click(Sender);//保存
dsdbEdit.DataSet :=nil;
edtNumber.Text :='';
GetPH(cbWholeBooking);
cxlcbSaleBookingId.Text :='';
edtAvgBookPrice.Text :='0.00';
edtSumBookCount.Text :='0';
edtSumTotalMoney.Text :='0.00';
with qryBookingUnit do
begin
Close;
SQL.Text :='Select Max(BookingId) From tbBookingUnit';
Open;
if Fields[0].Value=Null then
edtNumber.Text :=StartSaleId
else
edtNumber.Text :=Inttostr(Fields[0].asInteger+1);
close;
SQL.Text :='Select * From tbBookingUnit';
Open;
Append;
with qryBookingSubs do
begin
Close;
SQL.Text :='Select * From tbBookingSubs where BookingId='''+edtNumber.Text+'''';
Open;
end;
end;
end;
procedure TfrmSaleBooking.dxBarLargeButton2Click(Sender: TObject);
begin
if (qryBookingUnit.State in[dsEdit,dsInsert]) and(cxlcbSaleBookingId.Text<>'') and(edtNumber.Text<>'') then
with qryBookingUnit do
begin
FieldByName('BookingId').AsString :=edtNumber.Text;
FieldByName('WholeBooking').AsString :=cbWholeBooking.Text;
FieldByName('BookingDate').AsDateTime :=dtpDateNow.DateTime;
FieldByName('Unitid').AsString :=cxlcbSaleBookingId.Text;
FieldByName('UnitName').AsString :=edtUnitName.Text;
FieldByName('OtherFee').AsString :=edtOtherMoney.Text;
FieldByName('Memo').AsString :=edtMemo.Text;
Post;
if (qryBookingSubs.State in[dsEdit,dsInsert]) then
qryBookingSubs.Post;
end;
end;
procedure TfrmSaleBooking.dxBarLargeButton3Click(Sender: TObject);
var tempstr:string;
begin
if edtNumber.Text<>'' then
if Application.MessageBox('真的要删除销售订单吗?',Title,MB_ICONQUESTION+MB_YESNO)=Idyes then
with dmData.qryTemp do
begin
tempstr :=edtNumber.Text;
Close;
SQL.Text :='Delete From tbBookingUnit where BookingId='''+tempstr+'''';
ExecSQL;
dsdbEdit.DataSet :=nil;
edtNumber.Text :='';
GetPH(cbWholeBooking);
cxlcbSaleBookingId.Text :='';
end;
with qryBookingSubs do
begin
First;
while not Eof do
Delete;
end;
end;
procedure TfrmSaleBooking.cxlcbSaleBookingIdPropertiesChange(
Sender: TObject);
begin
if qryClient.Locate('ClientId',cxlcbSaleBookingId.Text,[loCaseInsensitive]) then
dsdbEdit.DataSet :=qryClient;
if (edtNumber.Text ='') or(cxlcbSaleBookingId.Text='') then
begin
dxDBGrid1.Enabled :=False;
bbtnAdd.Enabled :=False;
bbtnDelete.Enabled :=False;
bbtnEdit.Enabled :=False;
end else
begin
dxDBGrid1.Enabled :=True;
bbtnAdd.Enabled :=True;
bbtnDelete.Enabled :=True;
bbtnEdit.Enabled :=True;
end;
end;
procedure TfrmSaleBooking.dxBarLargeButton4Click(Sender: TObject);
begin
Close;
end;
procedure TfrmSaleBooking.qryBookingSubsBeforePost(DataSet: TDataSet);
begin
with qryBookingSubs do
begin
if FieldByName('UnitId').AsString='' then
FieldByName('UnitId').AsString :=cxlcbSaleBookingId.Text;
if FieldByName('BookingId').AsString ='' then
FieldByName('BookingId').AsString :=edtNumber.Text;
end;
end;
procedure TfrmSaleBooking.FormDestroy(Sender: TObject);
begin
qryClient.Close;
end;
procedure TfrmSaleBooking.edtOtherMoneyKeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in['0'..'9','.',#8]) then
Key :=#0;
end;
procedure TfrmSaleBooking.qryBookingSubsAfterOpen(DataSet: TDataSet);
begin
//qryBookingSubs.FieldByName('BookCount').OnValidate :=GetTotalMoney;
//qryBookingSubs.FieldByName('Discount').OnValidate :=GetRealMoney;
end;
procedure TfrmSaleBooking.dxDBGrid1BookIdChange(Sender: TObject);
begin
//qryBookingSubs.FieldByName('BookName').AsString :=qryBookClass.fieldbyname('BookName').AsString;
//qryBookingSubs.FieldByName('BookEdition').AsString :=qryBookClass.fieldbyname('BookEdition').AsString;
//qryBookingSubs.FieldByName('BookPrice').AsString :=qryBookClass.fieldbyname('BookPrice').AsString;
end;
procedure TfrmSaleBooking.qryBookingSubsAfterPost(DataSet: TDataSet);
var AvgBookPrice,SumBookCount,SumTotalMoney :Real;
begin
with dmData.qryTemp do
begin
Close;
Sql.Text :='Select Avg(BookPrice),Sum(BookCount),Sum(TotalMoney) From tbBookingSubs Where BookingId='''+edtNumber.text+'''';
Open;
AvgBookPrice:=Fields[0].AsFloat;
SumBookCount:=Fields[1].AsFloat;
SumTotalMoney:=Fields[2].AsFloat;
edtAvgBookPrice.Text :=FloatToStr(AvgBookPrice);
edtSumBookCount.Text :=FloatToStr(SumBookCount);
edtSumTotalMoney.Text :=FloatToStr(SumTotalMoney);
edtGetMoney.Text :=edtSumTotalMoney.Text;
edtTaxMoney.Text := FormatFloat('0.00',SumTotalMoney/1.13*0.13);
end;
end;
procedure TfrmSaleBooking.bbtnEditClick(Sender: TObject);
var HouseName :string;
begin
if qryBookingSubs.IsEmpty then Abort;
frmBookingEdit :=TfrmBookingEdit.Create(self);
with frmBookingEdit do
begin
try
Tag :=0; //修改标志
qryBookingSubs.Edit;
frmBookingEdit.cxlcbBookId.Text :=qryBookingSubs.fieldbyname('BookId').AsString;
HouseName :=qryBookingSubs.fieldbyname('HousePos').AsString;
ShowModal;
finally
Free;
end;
end;
end;
procedure TfrmSaleBooking.dxBarLargeButton6Click(Sender: TObject);
begin
if not qryBookingSubs.IsEmpty then
with frReport1,qryClient do
begin
frVariables['BookingId'] :=edtNumber.Text;
frVariables['WholeBooking'] :=cbWholeBooking.Text ;
frVariables['DATE'] :=dtpDateNow.Date ;
frVariables['publish'] :=sysname ;
frVariables['Address'] :=sysaddress ;
frVariables['telphone'] :=systl ;
frVariables['UnitId'] :=cxlcbSaleBookingId.Text ;
frVariables['AvgPrice'] :=edtAvgBookPrice.Text; ;
frVariables['TaxMoney'] :=edtTaxMoney.Text ;
frVariables['Bank'] :=fieldbyname('ClientBank').AsString;
frVariables['BondMan'] := fieldbyname('BondMan').AsString;
frVariables['Memo'] :=edtMemo.Text ;
frVariables['UnitName'] :=edtUnitName.Text ;
frVariables['TotalCount'] :=edtSumBookCount.Text ;
frVariables['TaxNumber'] :=fieldbyname('ClientTax').AsString;
frVariables['Telphonel'] :=fieldbyname('Telphone').AsString;
frVariables['TotalMoneys'] :=edtSumTotalMoney.Text ;
frVariables['OtherMoney'] := edtOtherMoney.Text;
frVariables['GetMoney'] := edtGetMoney.Text;
frVariables['MoneyCode'] :=fieldbyname('MoneyCode').AsString ;
//frVariables[''] :=dbedtAddress.Text ;
frVariables['SumSort'] :=qryBookingSubs.RecordCount;
frVariables['CreatMan'] :='';
ShowReport;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -