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

📄 u_order.pas

📁 这是一个用条码录入的数据的进销存(只对成品)---做童装的
💻 PAS
字号:
unit U_Order;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, U_Bill_Base, DB, ADODB, WinSkinData, Grids, DBGridEh, DBCtrls,
  Buttons, ExtCtrls, StdCtrls, Mask, DBGrids, DBSumLst;

type
  TF_Order = class(TF_Bill_Base)
    ADO_DetailProductTm: TStringField;
    ADO_DetailItemNO: TStringField;
    ADO_DetailOrderCount: TIntegerField;
    ADO_DetailhandCount: TIntegerField;
    ADO_DetailPerhandcount: TIntegerField;
    ADO_DetailOrderMoney: TBCDField;
    ADO_masterOrderNo: TStringField;
    ADO_masterCustno: TStringField;
    ADO_masterCustname: TStringField;
    ADO_masterFax: TStringField;
    ADO_masterTel: TStringField;
    ADO_masterDeliAddress: TStringField;
    ADO_masterEmail: TStringField;
    ADO_masterOrderDate: TDateTimeField;
    ADO_masterDeliDate: TDateTimeField;
    ADO_masterAllhandCount: TIntegerField;
    ADO_masterAllcount: TFloatField;
    ADO_masterAllmoney: TBCDField;
    ADO_masterZkRate: TFloatField;
    ADO_masterZkAllmoney: TBCDField;
    Label1: TLabel;
    ECustno: TDBEdit;
    Label2: TLabel;
    ECustname: TDBEdit;
    Label3: TLabel;
    Efax: TDBEdit;
    Label4: TLabel;
    ETel: TDBEdit;
    Label5: TLabel;
    EAdd: TDBEdit;
    Label6: TLabel;
    EOrderDate: TDBEdit;
    Label7: TLabel;
    EDelidate: TDBEdit;
    ADO_DetailOrderNo: TStringField;
    Label8: TLabel;
    EOrderno: TDBEdit;
    Label9: TLabel;
    EOperateman: TEdit;
    Label10: TLabel;
    EZkrate: TDBEdit;
    ADO_DetailOrderPrice: TFloatField;
    ADO_DetailGroupname: TStringField;
    ADO_DetailGroupNO: TStringField;
    Ado_MasterOperateMan: TStringField;
    Check: TCheckBox;
    CheckBox1: TCheckBox;
    procedure FormCreate(Sender: TObject);
    procedure btn_saveClick(Sender: TObject);
    procedure btn_deleteClick(Sender: TObject);
    procedure ECustnoKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure DBGridEhColExit(Sender: TObject);
    procedure ECustnoExit(Sender: TObject);
    procedure btn_insertClick(Sender: TObject);
    procedure ADO_DetailAfterInsert(DataSet: TDataSet);
    procedure ADO_DetailBeforePost(DataSet: TDataSet);
    procedure btn_editClick(Sender: TObject);
    procedure Ado_MasterBeforePost(DataSet: TDataSet);
    procedure btn_printClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  F_Order: TF_Order;

implementation

uses U_DM, U_Function, U_Report_Frame;

{$R *.dfm}

procedure TF_Order.FormCreate(Sender: TObject);
begin
  inherited;
  height := 470;
  width := 649;
  EOperateman.Text := Username;
end;

procedure TF_Order.btn_saveClick(Sender: TObject);
begin
  inherited;
  if MyTrim(ECustno.Text) = '' then
  begin
    Application.MessageBox('客户编号不能为空', '提示信息', MB_ICONInformation + MB_OK);
    ECustno.SetFocus;
    Exit;
  end;

  if MyTrim(EOrderDate.Text) = '' then
  begin
    Application.MessageBox('订货日期不能为空', '提示信息', MB_ICONInformation + MB_OK);
    EOrderDate.SetFocus;
    Exit;
  end;

//Ado_master.FieldByName('AllhandCount').AsInteger:=dbgrideh.fi
//Ado_master.FieldByName('Allcount').AsInteger:=
//Ado_master.FieldByName('Allmoney').AsInteger:=
//Ado_master.FieldByName('ZkAllmoney').AsInteger:=
//Ado_master.FieldByName('AllhandCount').AsInteger:=


  if Ado_Detail.State in [dsinsert, dsedit] then
  begin
    Ado_Detail.Post;
  end;

  Ado_Detail.UpdateBatch(Arall);

  opensql(F_dm.Temp, 'Select orderno,Sum(Isnull(Handcount,0)) Allhandcount,Sum(isnull(OrderCount,0)) Allcount,'
    + ' sum(Ordermoney) Allmoney from OrderDetail  where Orderno=''' + EOrderno.Text + ''' group by Orderno');
  if F_Dm.Temp.RecordCount = 1 then
  begin
    Ado_Master.Edit;
    Ado_Master.FieldByName('Allhandcount').AsInteger := F_Dm.Temp.fieldbyname('Allhandcount').AsInteger;
    Ado_Master.FieldByName('Allcount').AsInteger := F_Dm.Temp.fieldbyname('Allcount').AsInteger;
    Ado_Master.FieldByName('Allmoney').AsCurrency := F_Dm.Temp.fieldbyname('Allmoney').AsCurrency;
    Ado_Master.FieldByName('zkAllmoney').AsCurrency := F_Dm.Temp.fieldbyname('Allmoney').AsCurrency * Thecustomer.Zkrate / 10;
    Ado_Master.Post;
  end;

  Ado_Master.UpdateBatch(arall);



end;



procedure TF_Order.btn_deleteClick(Sender: TObject);
begin
  inherited;
  Execsql('Delete from OrderDetail where OrderNO=''' + EorderNo.Text + '''');
  Ado_Master.Delete;
  Ado_Detail.UpdateBatch(Arall);

end;

procedure TF_Order.ECustnoKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if key = #13 then
  begin
    Dbgrideh.SetFocus;
    if CheckBox1.Checked then
      Dbgrideh.SelectedIndex := 1
    else
      Dbgrideh.SelectedIndex := 0;
  end;
end;

procedure TF_Order.FormKeyPress(Sender: TObject; var Key: Char);
begin
//  inherited;
  if Key = #13 then //vk_return
  begin
   // Key := #0;
    if ActiveControl is TDbgrideh then
    begin
      if TDBGrideh(ActiveControl).SelectedIndex = dbgrideh.Columns.Count - 1 then
      begin
        if Checkbox1.Checked then
          TDBGrideh(ActiveControl).SelectedIndex := 1
        else
          TDBGrideh(ActiveControl).SelectedIndex := 0;
        Perform(CM_DialogKey, VK_TAB, 0);
      end
      else
      begin
        if (TDBGrideh(ActiveControl).SelectedIndex = 0) or (TDBGrideh(ActiveControl).SelectedIndex = 1) then //当是第一格时
        begin
          TDBGrideh(ActiveControl).SelectedIndex := TDBGrideh(ActiveControl).SelectedIndex + 3;
          exit;
        end
        else
        begin
          if TDBGrideh(ActiveControl).SelectedIndex = 3 then //当是第4格时
          begin
            if TDBGRIDEH(ActiveControl).DataSource.DataSet.Fields[0].AsString = '' then
            begin
              if checkbox1.Checked then
                TDBGrideh(ActiveControl).SelectedIndex := 1
              else
                TDBGrideh(ActiveControl).SelectedIndex := 0;
              exit;
            end
            else
//              if TDBGRIDEH(ActiveControl).Fields[3].AsInteger = 0 then
//              begin
////                Application.MessageBox('手数不能为空,请输入手数!', '提示信息', MB_ICONinformation + MB_OK);
////                TDBGrideh(ActiveControl).SelectedIndex :=3;
// //               exit;
//              end;
            begin
              keybd_event(VK_TAB, KEYEVENTF_KEYUP, 0, 0);
              if Checkbox1.Checked then
                dbgrideh.SelectedIndex := 1
              else
                dbgrideh.SelectedIndex := 0;
//           if Dbgrideh.DataSource.DataSet.Active then
//           Begin
////            Dbgrideh.DataSource.DataSet.Append;
//            Dbgrideh.SelectedIndex:=0;
              Exit;
            end;


          end
          else
          begin
          if Checkbox1.Checked  then
            TDBGrideh(ActiveControl).SelectedIndex := 1
          else
            TDBGrideh(ActiveControl).SelectedIndex := 0;
            exit;
          end;
        end;
      end;
    end
    else
      //Perform(CM_DialogKey, VK_TAB, 0);
  end;
end;

procedure TF_Order.DBGridEhColExit(Sender: TObject);
begin
  inherited;
//  if dbgrideh.Fields[dbgrideh.SelectedIndex].AsString='' then
//    dbgrideh.SelectedIndex:=0;
  if ado_Detail.ReadOnly then exit;
  if dbgrideh.DataSource.DataSet.State in [dsEdit, dsInsert] then
  begin
    if dbgrideh.SelectedIndex = 0 then
    begin
      Getiteminfo(dbgrideh.Fields[dbgrideh.SelectedIndex].AsString, theitem);
      Getgroupinfo(dbgrideh.Fields[dbgrideh.SelectedIndex].AsString, thegroup);

      Dbgrideh.DataSource.DataSet.FieldByName('Groupname').AsString := Thegroup.Groupname;
      Dbgrideh.DataSource.DataSet.FieldByName('Groupno').AsString := Thegroup.Groupno;
      Dbgrideh.DataSource.DataSet.FieldByName('Itemno').AsString := TheItem.ITemNO;
      Dbgrideh.DataSource.DataSet.FieldByName('Perhandcount').AsInteger := TheItem.HandCount;
      Dbgrideh.DataSource.DataSet.FieldByName('orderprice').AsFloat := TheItem.Price;
    end;

   // if dbgrideh.SelectedIndex = 1 then
//    begin
//      Getiteminfo(dbgrideh.Fields[dbgrideh.SelectedIndex].AsString, theitem);
//      //GetgroupinfoA(dbgrideh.Fields[dbgrideh.SelectedIndex].AsString, thegroup);
//      //Dbgrideh.DataSource.DataSet.FieldByName('Groupname').AsString := Thegroup.Groupname;
//      //Dbgrideh.DataSource.DataSet.FieldByName('Groupno').AsString := Thegroup.Groupno;
//      Dbgrideh.DataSource.DataSet.FieldByName('ItemNO').AsString := TheItem.ITemNO;
//      Dbgrideh.DataSource.DataSet.FieldByName('Perhandcount').AsInteger := TheItem.HandCount;
//      Dbgrideh.DataSource.DataSet.FieldByName('orderprice').AsFloat := TheItem.Price;
//    end;


  end;

end;

procedure TF_Order.ECustnoExit(Sender: TObject);
begin
  inherited;

  if ECustno.Text <> '' then
    if Ado_Master.State in [dsinsert, dsedit] then
    begin
      if getcustinfo('', TheCustomer, Ecustno.Text) then
      begin
        ECustname.Text := TheCustomer.Custname;
        Eadd.Text := Thecustomer.Address;
        EFax.Text := Thecustomer.Fax;
        ETel.Text := Thecustomer.Tel;
        EZkrate.Text := floattostr(Thecustomer.zkrate);
        if Eorderno.Text = '' then
          EOrderNo.text := CreateBillNo('order');
        Ado_master.Post;
      end
      else
      begin
        Application.MessageBox('没有这个客户的资料!', '提示信息', MB_ICONinformation + MB_OK);
        ECustno.SetFocus;
        exit;
      end;
    end;
end;

procedure TF_Order.btn_insertClick(Sender: TObject);
begin
  Ecustno.SetFocus;

  inherited;
  EORderdate.Text := FormatDatetime('YYYY-MM-DD', Date);
  EDelidate.Text := FormatDatetime('YYYY-MM-DD', Date + 15);
end;

procedure TF_Order.ADO_DetailAfterInsert(DataSet: TDataSet);
begin
  inherited;
  if Dataset.State in [dsinsert, dsedit] then
  begin
    if Eorderno.Text = '' then
    begin
      Application.MessageBox('请先输入客户编号!', '提示信息', MB_ICONINFORMATION + MB_OK);
      ECustno.SetFocus;
      Exit
    end
    else
      Dbgrideh.DataSource.DataSet.FieldByName('OrderNo').AsString := EOrderno.text;
    Dbgrideh.DataSource.DataSet.FieldByName('OrderCount').AsInteger := 0;
    Dbgrideh.DataSource.DataSet.FieldByName('OrderPrice').AsFloat := 0;
  end;
end;

procedure TF_Order.ADO_DetailBeforePost(DataSet: TDataSet);
begin
  inherited;
  Dbgrideh.DataSource.DataSet.FieldByName('OrderNo').AsString := EOrderno.text;
  Dbgrideh.DataSource.DataSet.FieldByName('OrderCount').AsInteger :=
    Dbgrideh.DataSource.DataSet.FieldByName('Perhandcount').AsInteger *
    Dbgrideh.DataSource.DataSet.FieldByName('Handcount').AsInteger;

  Dbgrideh.DataSource.DataSet.FieldByName('Ordermoney').AsCurrency :=
    Dbgrideh.DataSource.DataSet.FieldByName('OrderCount').AsInteger *
    Dbgrideh.DataSource.DataSet.FieldByName('Orderprice').AsFloat;
end;

procedure TF_Order.btn_editClick(Sender: TObject);
begin
  Ecustno.SetFocus;
  inherited;

end;

procedure TF_Order.Ado_MasterBeforePost(DataSet: TDataSet);
begin
  inherited;
  dataset.FieldByName('OperateMan').AsString := EOperateman.Text;
  dataset.FieldByName('Email').AsString := Thecustomer.Email;

end;

procedure TF_Order.btn_printClick(Sender: TObject);
//var F_Order_Report:TF_Order_Report;
begin
  inherited;
  if not Assigned(F_Order_Report) then
    Application.CreateForm(TF_Order_Report, F_Order_Report);
 // F_Order_Report:=tF_Order_Report.Create(self);
  F_Order_Report.ISPrintRate := Check.Checked;
  F_Order_Report.show;
  F_Order_Report.Preview;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -