📄 backunit.~pas
字号:
unit BackUnit;
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
TfrmBackUnit = 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;
Label7: TLabel;
edtAVgDiscount: TEdit;
Label8: TLabel;
edtSumBookCount: TEdit;
Label9: TLabel;
edtSumTotalMoney: TEdit;
Label10: TLabel;
edtAvgBookPrice: TEdit;
Label11: TLabel;
edtzkMoney: TEdit;
Label12: TLabel;
edtSumRealMoney: TEdit;
Label13: TLabel;
edtTaxMoney: TEdit;
Label14: TLabel;
edtNotax: TEdit;
Label15: TLabel;
edtOtherMoney: TEdit;
Label16: TLabel;
edtGetMoney: TEdit;
Label23: TLabel;
Panel2: TPanel;
dssubs: TDataSource;
qryBackSubs: TADOQuery;
dxDBGrid1: TdxDBGrid;
Panel3: TPanel;
bbtnAdd: TBitBtn;
bbtnDelete: TBitBtn;
dxDBGrid1BookName: TdxDBGridColumn;
dxDBGrid1BookEdition: TdxDBGridColumn;
dxDBGrid1BookCount: TdxDBGridMaskColumn;
dxDBGrid1Discount: TdxDBGridMaskColumn;
dxDBGrid1Bundles: TdxDBGridColumn;
dsCient: TDataSource;
qryClient: TADOQuery;
qryBackUnit: TADOQuery;
cxlcbSaleBookingId: TcxLookupComboBox;
dsdbEdit: TDataSource;
edtUnitName: TDBEdit;
dxDBGrid1BookId: TdxDBGridExtLookupColumn;
dxDBGrid1HousePos: TdxDBGridExtLookupColumn;
dxBarLargeButton5: TdxBarLargeButton;
edtMemo: TEdit;
bbtnEdit: TBitBtn;
dxBarLargeButton6: TdxBarLargeButton;
frReport1: TfrReport;
frDBDataSet1: TfrDBDataSet;
dxDBGrid1addBook: TdxDBGridMaskColumn;
cbWholeBooking: TComboBox;
dxDBGrid1BookPrice: TdxDBGridCurrencyColumn;
dxDBGrid1TotalMoney: TdxDBGridCurrencyColumn;
dxDBGrid1RealMoney: TdxDBGridCurrencyColumn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure bbtnAddClick(Sender: TObject);
procedure bbtnDeleteClick(Sender: TObject);
procedure dxBarLargeButton1Click(Sender: TObject);
procedure dxBarLargeButton2Click(Sender: TObject);
procedure dxBarLargeButton3Click(Sender: TObject);
procedure cxlcbSaleBookingIdPropertiesChange(Sender: TObject);
procedure dxBarLargeButton4Click(Sender: TObject);
procedure qryBackSubsBeforePost(DataSet: TDataSet);
procedure FormDestroy(Sender: TObject);
procedure edtOtherMoneyKeyPress(Sender: TObject; var Key: Char);
procedure qryBackSubsAfterOpen(DataSet: TDataSet);
procedure dxDBGrid1BookIdChange(Sender: TObject);
procedure qryBackSubsAfterPost(DataSet: TDataSet);
procedure bbtnEditClick(Sender: TObject);
procedure dxBarLargeButton6Click(Sender: TObject);
procedure qryBackUnitAfterPost(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmBackUnit: TfrmBackUnit;
implementation
uses Data, unSystPublic, Client,BackEdit;
{$R *.dfm}
procedure frmSaleBookingShow;
begin
end;
procedure TfrmBackUnit.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if (qryBackUnit.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 tbBackSubs where SaleId='''+edtNumber.Text+''' and BackType=''1''';
ExecSQL;
end;
end;
qryBackUnit.Close;
qryBackSubs.Close;
Action :=caFree;
frmBackUnit :=nil;
end;
procedure TfrmBackUnit.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 TfrmBackUnit.bbtnAddClick(Sender: TObject);
begin
qryBackSubs.Append;
frmBackEdit :=TfrmBackEdit.Create(self);
with frmBackEdit do
begin
try
Tag :=1; //增加标志
ShowModal;
finally
Free;
end;
end;
end;
procedure TfrmBackUnit.bbtnDeleteClick(Sender: TObject);
begin
if Application.MessageBox('真的要删除吗?',Title,MB_ICONQUESTION+MB_YESNO)=Idyes then
qryBackSubs.Delete;
end;
procedure TfrmBackUnit.dxBarLargeButton1Click(Sender: TObject);
begin
dxBarLargeButton2Click(Sender);//保存
dsdbEdit.DataSet :=nil;
edtNumber.Text :='';
GetPH(cbWholeBooking);
cxlcbSaleBookingId.Text :='';
edtAVgDiscount.Text :='0';
edtAvgBookPrice.Text :='0';
edtSumBookCount.Text :='0';
edtSumTotalMoney.Text :='0';
edtSumRealMoney.Text :='0';
edtzkMoney.Text := '0';
with qryBackUnit do
begin
Close;
SQL.Text :='Select Max(SaleId) From tbBackUnit where BackType=''1''';
Open;
if Fields[0].Value=Null then
edtNumber.Text :=StartSaleId
else
edtNumber.Text :=Inttostr(Fields[0].asInteger+1);
close;
SQL.Text :='Select * From tbBackUnit where BackType=''1''';
Open;
Append;
end;
with qryBackSubs do
begin
Close;
SQL.Text :='Select * From tbBackSubs where SaleId='''+edtNumber.Text+''' and BackType=''1''';
Open;
end;
end;
procedure TfrmBackUnit.dxBarLargeButton2Click(Sender: TObject);
begin
if (qryBackUnit.State in[dsEdit,dsInsert]) and(cxlcbSaleBookingId.Text<>'') and(edtNumber.Text<>'') then
with qryBackUnit do
begin
FieldByName('SaleId').AsString :=edtNumber.Text;
FieldByName('WholeSaling').AsString :=cbWholeBooking.Text;
FieldByName('SaleDate').AsDateTime :=dtpDateNow.DateTime;
FieldByName('Unitid').AsString :=cxlcbSaleBookingId.Text;
FieldByName('UnitName').AsString :=edtUnitName.Text;
FieldByName('OtherFee').AsString :=edtOtherMoney.Text;
FieldByName('BackType').AsString :='1';
FieldByName('Memo').AsString :=edtMemo.Text;
Post;
if (qryBackSubs.State in[dsEdit,dsInsert]) then
qryBackSubs.Post;
end;
end;
procedure TfrmBackUnit.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 tbBackUnit where (SaleId='''+tempstr+''') and (BackType=''1'')';
ExecSQL;
dsdbEdit.DataSet :=nil;
edtNumber.Text :='';
GetPH(cbWholeBooking);
cxlcbSaleBookingId.Text :='';
end;
with qryBackSubs do
begin
First;
while not Eof do
Delete;
end;
end;
procedure TfrmBackUnit.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 TfrmBackUnit.dxBarLargeButton4Click(Sender: TObject);
begin
Close;
end;
procedure TfrmBackUnit.qryBackSubsBeforePost(DataSet: TDataSet);
begin
with qryBackSubs do
begin
if FieldByName('UnitId').AsString='' then
FieldByName('UnitId').AsString :=cxlcbSaleBookingId.Text;
if FieldByName('SaleId').AsString ='' then
FieldByName('SaleId').AsString :=edtNumber.Text;
end;
end;
procedure TfrmBackUnit.FormDestroy(Sender: TObject);
begin
qryClient.Close;
end;
procedure TfrmBackUnit.edtOtherMoneyKeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in['0'..'9','.',#8]) then
Key :=#0;
end;
procedure TfrmBackUnit.qryBackSubsAfterOpen(DataSet: TDataSet);
begin
//qryBookingSubs.FieldByName('BookCount').OnValidate :=GetTotalMoney;
//qryBookingSubs.FieldByName('Discount').OnValidate :=GetRealMoney;
end;
procedure TfrmBackUnit.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 TfrmBackUnit.qryBackSubsAfterPost(DataSet: TDataSet);
var AVgDiscount,AvgBookPrice,SumBookCount,SumRealMoney,SumTotalMoney :Real;
begin
with dmData.qryTemp do
begin
Close;
Sql.Text :='Select Avg(Discount),Avg(BookPrice),Sum(BookCount),Sum(TotalMoney),Sum(RealMoney) From tbBackSubs Where SaleId='''+edtNumber.text+''' and BackType=''1''';
Open;
AVgDiscount :=Fields[0].AsFloat;
AvgBookPrice:=Fields[1].AsFloat;
SumBookCount:=Fields[2].AsFloat;
SumTotalMoney:=Fields[3].AsFloat;
SumRealMoney:=Fields[4].AsFloat;
edtAVgDiscount.Text :=Floattostr(AVgDiscount);
edtAvgBookPrice.Text :=FloatToStr(AvgBookPrice);
edtSumBookCount.Text :=FloatToStr(SumBookCount);
edtSumTotalMoney.Text :=FloatToStr(SumTotalMoney);
edtSumRealMoney.Text :=FloatToStr(SumRealMoney);
edtTaxMoney.Text := FormatFloat('0.00',SumRealMoney/1.13*0.13);
edtNotax.Text :=floattostr(SumRealMoney-strtofloat(edtTaxMoney.Text));
edtzkMoney.Text := FloatToStr(SumTotalMoney-SumRealMoney);
end;
end;
procedure TfrmBackUnit.bbtnEditClick(Sender: TObject);
var HouseName :string;
begin
if qryBackSubs.IsEmpty then Abort;
frmBackEdit :=TfrmBackEdit.Create(self);
with frmBackEdit do
begin
try
Tag :=0; //修改标志
qryBackSubs.Edit;
frmBackEdit.cxlcbBookId.Text :=qryBackSubs.fieldbyname('BookId').AsString;
HouseName :=qryBackSubs.fieldbyname('HousePos').AsString;
if not qryHouse.Active then qryHouse.Open;
//cxcbPosHouse.Text :=HouseName;//qryHouse.Lookup('HouseName',HouseName,'HouseId');
ShowModal;
finally
Free;
end;
end;
end;
procedure TfrmBackUnit.dxBarLargeButton6Click(Sender: TObject);
begin
if not qryBackSubs.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['Discount'] :=edtAVgDiscount.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['DisCountMoney'] :=edtzkMoney.Text ;
frVariables['NOTaxMoney'] :=edtNotax.Text ;
frVariables['TaxNumber'] :=fieldbyname('ClientTax').AsString;
frVariables['Telphonel'] :=fieldbyname('Telphone').AsString;
frVariables['TotalMoney'] :=edtSumTotalMoney.Text ;
frVariables['RealMoney'] :=edtSumRealMoney.Text ;
frVariables['OtherMoney'] := edtOtherMoney.Text;
frVariables['GetMoney'] := edtGetMoney.Text;
frVariables['MoneyCode'] :=fieldbyname('MoneyCode').AsString ;
//frVariables[''] :=dbedtAddress.Text ;
frVariables['SumSort'] :=qryBackSubs.RecordCount;
frVariables['CreatMan'] :='';
frVariables['PageMemo'] :=strmemo;;
ShowReport;
end;
end;
procedure TfrmBackUnit.qryBackUnitAfterPost(DataSet: TDataSet);
var i:integer ;
begin
if not DmData.qryHouseSave.Active then
begin
DmData.qryHouseSave.Close;
DmData.qryHouseSave.SQL.Text :='Select * From tbHouseSave';
DmData.qryHouseSave.Open;
end;
qryBackSubs.DisableControls;
Try
qryBackSubs.First;
for i:=0 to qryBackSubs.RecordCount-1 do
begin
if not DmData.qryHouseSave.Locate('BookId;HousePos',VarArrayOf([qryBackSubs.fieldbyname('BookId').AsString,qryBackSubs.fieldbyname('HousePos').AsString]),[loCaseInsensitive]) then
begin
With DmData.qryHouseSave do
begin
Append;
FieldByName('BookId').AsString :=qryBackSubs.fieldbyname('BookId').AsString;
FieldByName('BookName').AsString :=qryBackSubs.fieldbyname('BookName').AsString;
FieldByName('BookEdition').AsString :=qryBackSubs.fieldbyname('BookEdition').AsString;
FieldByName('BookCount').AsInteger :=qryBackSubs.fieldbyname('BookCount').AsInteger;
FieldByName('BookPrice').AsString :=qryBackSubs.fieldbyname('BookPrice').AsString;
FieldByName('AddBook').AsInteger :=qryBackSubs.fieldbyname('AddBook').AsInteger;
FieldByName('TotalMoney').AsFloat :=qryBackSubs.fieldbyname('TotalMoney').AsFloat;
FieldByName('HousePos').AsString :=qryBackSubs.fieldbyname('HousePos').AsString;
//FieldByName('').AsString :=qrySaleSubs.fieldbyname('').AsString;
end;
end else
With DmData.qryHouseSave do
begin
Edit;
FieldByName('BookCount').AsInteger :=FieldByName('BookCount').AsInteger + qryBackSubs.fieldbyname('BookCount').AsInteger;
FieldByName('AddBook').AsInteger := FieldByName('AddBook').AsInteger+ qryBackSubs.fieldbyname('AddBook').AsInteger;
FieldByName('TotalMoney').AsFloat :=FieldByName('TotalMoney').AsFloat + qryBackSubs.fieldbyname('TotalMoney').AsFloat;
end;
qryBackSubs.Next;
end;
if DmData.qryHouseSave.State in [dsInsert,dsEdit] then
DmData.qryHouseSave.Post;
finally
qryBackSubs.EnableControls;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -