⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 salebooking.~pas

📁 一个图书批发商的通用软件
💻 ~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 + -