📄 inhouseunit.~pas
字号:
unit InHouseUnit;
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
TfrmInHouseUnit = 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;
qryInHouseSubs: TADOQuery;
dxDBGrid1: TdxDBGrid;
Panel3: TPanel;
bbtnAdd: TBitBtn;
bbtnDelete: TBitBtn;
dxDBGrid1BookName: TdxDBGridColumn;
dxDBGrid1BookEdition: TdxDBGridColumn;
dxDBGrid1BookCount: TdxDBGridMaskColumn;
dxDBGrid1Bundles: TdxDBGridColumn;
dsPublish: TDataSource;
qryPublish: TADOQuery;
qryInHouseUnit: 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;
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 qryInHouseSubsBeforePost(DataSet: TDataSet);
procedure FormDestroy(Sender: TObject);
procedure edtOtherMoneyKeyPress(Sender: TObject; var Key: Char);
procedure qryInHouseSubsAfterOpen(DataSet: TDataSet);
procedure dxDBGrid1BookIdChange(Sender: TObject);
procedure qryInHouseSubsAfterPost(DataSet: TDataSet);
procedure bbtnEditClick(Sender: TObject);
procedure dxBarLargeButton6Click(Sender: TObject);
procedure qryInHouseUnitAfterPost(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmInHouseUnit: TfrmInHouseUnit;
implementation
uses Data, unSystPublic, InhouseEdit;
{$R *.dfm}
procedure frmSaleBookingShow;
begin
end;
procedure TfrmInHouseUnit.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if (qryInHouseUnit.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 tbInHouseSubs where InHouseId='''+edtNumber.Text+'''';
ExecSQL;
end;
end;
qryInhouseUnit.Close;
qryInhouseSubs.Close;
Action :=caFree;
frmInHouseUnit :=nil;
end;
procedure TfrmInHouseUnit.FormShow(Sender: TObject);
begin
dtpDateNow.DateTime :=now;
with qryPublish do
begin
Close;
SQL.Text :='Select * From tbPublish';
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 TfrmInHouseUnit.bbtnAddClick(Sender: TObject);
begin
qryInHouseSubs.Append;
frmInHouseEdit :=TfrmInHouseEdit.Create(self);
with frmInHouseEdit do
begin
try
Tag :=1; //增加标志
ShowModal;
finally
Free;
end;
end;
end;
procedure TfrmInHouseUnit.bbtnDeleteClick(Sender: TObject);
begin
if Application.MessageBox('真的要删除吗?',Title,MB_ICONQUESTION+MB_YESNO)=Idyes then
qryInHouseSubs.Delete;
end;
procedure TfrmInHouseUnit.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 qryInHouseUnit do
begin
Close;
SQL.Text :='Select Max(InHouseId) From tbInHouseUnit ';
Open;
if Fields[0].Value=Null then
edtNumber.Text :=StartSaleId
else
edtNumber.Text :=Inttostr(Fields[0].asInteger+1);
close;
SQL.Text :='Select * From tbInHouseUnit ';
Open;
Append;
end;
with qryInHouseSubs do
begin
Close;
SQL.Text :='Select * From tbInHouseSubs where InHouseId='''+edtNumber.Text+'''';
Open;
end;
end;
procedure TfrmInHouseUnit.dxBarLargeButton2Click(Sender: TObject);
begin
if (qryInHouseUnit.State in[dsEdit,dsInsert]) and(cxlcbSaleBookingId.Text<>'') and(edtNumber.Text<>'') then
with qryInHouseUnit do
begin
FieldByName('InHouseId').AsString :=edtNumber.Text;
FieldByName('WholeSaling').AsString :=cbWholeBooking.Text;
FieldByName('InHouseDate').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 (qryInHouseSubs.State in[dsEdit,dsInsert]) then
qryInHouseSubs.Post;
end;
end;
procedure TfrmInHouseUnit.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 tbInHouseUnit where InHouseId='''+tempstr+'''';
ExecSQL;
dsdbEdit.DataSet :=nil;
edtNumber.Text :='';
GetPH(cbWholeBooking);
cxlcbSaleBookingId.Text :='';
end;
with qryInHouseSubs do
begin
First;
while not Eof do
Delete;
end;
end;
procedure TfrmInHouseUnit.cxlcbSaleBookingIdPropertiesChange(
Sender: TObject);
begin
if qryPublish.Locate('ClientId',cxlcbSaleBookingId.Text,[loCaseInsensitive]) then
dsdbEdit.DataSet :=qryPublish;
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 TfrmInHouseUnit.dxBarLargeButton4Click(Sender: TObject);
begin
Close;
end;
procedure TfrmInHouseUnit.qryInHouseSubsBeforePost(DataSet: TDataSet);
begin
with qryInHouseSubs do
begin
if FieldByName('UnitId').AsString='' then
FieldByName('UnitId').AsString :=cxlcbSaleBookingId.Text;
if FieldByName('InHouseId').AsString ='' then
FieldByName('InHouseId').AsString :=edtNumber.Text;
end;
end;
procedure TfrmInHouseUnit.FormDestroy(Sender: TObject);
begin
qryPublish.Close;
end;
procedure TfrmInHouseUnit.edtOtherMoneyKeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in['0'..'9','.',#8]) then
Key :=#0;
end;
procedure TfrmInHouseUnit.qryInHouseSubsAfterOpen(DataSet: TDataSet);
begin
//qryInHouseSubs.FieldByName('BookCount').OnSetText :=SetBookCount;
//qryBookingSubs.FieldByName('Discount').OnValidate :=GetRealMoney;
end;
procedure TfrmInHouseUnit.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 TfrmInHouseUnit.qryInHouseSubsAfterPost(DataSet: TDataSet);
var AVgDiscount,AvgBookPrice,SumBookCount,SumRealMoney,SumTotalMoney :Real;
begin
with dmData.qryTemp do
begin
Close;
Sql.Text :='Select Avg(BookPrice),Sum(BookCount),Sum(TotalMoney) From tbInHouseSubs Where InHouseId='''+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);
edtNotax.Text :=floattostr(SumTotalMoney-strtofloat(edtTaxMoney.Text));
//edtzkMoney.Text := FloatToStr(SumTotalMoney-SumRealMoney);
end;
end;
procedure TfrmInHouseUnit.bbtnEditClick(Sender: TObject);
var HouseName :string;
begin
if qryInHouseSubs.IsEmpty then Abort;
frmInHouseEdit :=TfrmInHouseEdit.Create(self);
with frmInHouseEdit do
begin
try
Tag :=0; //修改标志
qryInHouseSubs.Edit;
frmInHouseEdit.cxlcbBookId.Text :=qryInhouseSubs.fieldbyname('BookId').AsString;
HouseName :=qryInHouseSubs.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 TfrmInHouseUnit.dxBarLargeButton6Click(Sender: TObject);
begin
if not qryInHouseSubs.IsEmpty then
with frReport1,qrypublish 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['TotalMoneys'] :=edtSumTotalMoney.Text ;
frVariables['RealMoney'] :=edtSumRealMoney.Text ;
frVariables['OtherMoney'] := edtOtherMoney.Text;
frVariables['GetMoney'] := edtGetMoney.Text;
frVariables['MoneyCode'] :=fieldbyname('MoneyCode').AsString ;
//frVariables[''] :=dbedtAddress.Text ;
frVariables['SumSort'] :=qryInHouseSubs.RecordCount;
frVariables['CreatMan'] :='';
ShowReport;
end;
end;
procedure TfrmInHouseUnit.qryInHouseUnitAfterPost(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;
qryInHouseSubs.DisableControls;
Try
qryInHouseSubs.First;
for i:=0 to qryInHouseSubs.RecordCount-1 do
begin
if not DmData.qryHouseSave.Locate('BookId;HousePos',VarArrayOf([qryInHouseSubs.fieldbyname('BookId').AsString,qryInHouseSubs.fieldbyname('HousePos').AsString]),[loCaseInsensitive]) then
begin
With DmData.qryHouseSave do
begin
Append;
FieldByName('BookId').AsString :=qryInHouseSubs.fieldbyname('BookId').AsString;
FieldByName('BookName').AsString :=qryInHouseSubs.fieldbyname('BookName').AsString;
FieldByName('BookEdition').AsString :=qryInHouseSubs.fieldbyname('BookEdition').AsString;
FieldByName('BookCount').AsInteger :=qryInHouseSubs.fieldbyname('BookCount').AsInteger;
FieldByName('BookPrice').AsString :=qryInHouseSubs.fieldbyname('BookPrice').AsString;
FieldByName('AddBook').AsInteger :=qryInHouseSubs.fieldbyname('AddBook').AsInteger;
FieldByName('TotalMoney').AsFloat :=qryInHouseSubs.fieldbyname('TotalMoney').AsFloat;
FieldByName('HousePos').AsString :=qryInHouseSubs.fieldbyname('HousePos').AsString;
//FieldByName('').AsString :=qrySaleSubs.fieldbyname('').AsString;
end;
end else
With DmData.qryHouseSave do
begin
Edit;
FieldByName('BookCount').AsInteger :=FieldByName('BookCount').AsInteger + qryInHouseSubs.fieldbyname('BookCount').AsInteger;
FieldByName('AddBook').AsInteger := FieldByName('AddBook').AsInteger + qryInHouseSubs.fieldbyname('AddBook').AsInteger;
FieldByName('TotalMoney').AsFloat :=FieldByName('TotalMoney').AsFloat + qryInHouseSubs.fieldbyname('TotalMoney').AsFloat;
end;
qryInHouseSubs.Next;
end;
if DmData.qryHouseSave.State in [dsInsert,dsEdit] then
DmData.qryHouseSave.Post;
finally
qryInHouseSubs.EnableControls;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -