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

📄 backunit.~pas

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