📄 unitsell.pas
字号:
unit UnitSell;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, ADODB, Grids, DBGrids, StdCtrls, Mask, DBCtrls,unitlogin,
QRCtrls, QuickRpt, ComCtrls, jpeg;
type
TFrameSell = class(TFrame)
Image1: TImage;
Image2: TImage;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
Panel1: TPanel;
Image3: TImage;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit5: TDBEdit;
GroupBox1: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Image4: TImage;
Image5: TImage;
Image6: TImage;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
Image7: TImage;
DBEdit7: TDBEdit;
ADOQuery1txm: TWideStringField;
ADOQuery1user_name: TWideStringField;
ADOQuery1sell_prod_name: TWideStringField;
ADOQuery1sell_prod_price: TBCDField;
ADOQuery1sell_number: TIntegerField;
ADOQuery1sell_price: TBCDField;
Edit2: TEdit;
ADOQuery1sell_id: TAutoIncField;
ADOQuery1sell_prod_id: TIntegerField;
ADOQuery1sell_time: TDateTimeField;
ADOQuery1sell_pay: TBooleanField;
ADOQuery1leixin: TWideStringField;
DBEdit6: TDBEdit;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
rep1: TQuickRep;
ColumnHeaderBand1: TQRBand;
QRLabel2: TQRLabel;
QRLabel3: TQRLabel;
QRLabel4: TQRLabel;
QRLabel5: TQRLabel;
DetailBand1: TQRBand;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
TitleBand1: TQRBand;
QRLabel1: TQRLabel;
PageFooterBand1: TQRBand;
SummaryBand1: TQRBand;
QRLabel10: TQRLabel;
Edit3: TEdit;
Label8: TLabel;
QRSysData2: TQRSysData;
QRLabel6: TQRLabel;
QRLabel7: TQRLabel;
QRLabel8: TQRLabel;
Image8: TImage;
procedure Image2Click(Sender: TObject);
procedure DBEdit1KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit2KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit5KeyPress(Sender: TObject; var Key: Char);
procedure Image3Click(Sender: TObject);
procedure Image5Click(Sender: TObject);
procedure Image6Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure Image7Click(Sender: TObject);
procedure Image4Click(Sender: TObject);
function IsAllNum(s:string):bool;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Label7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
//uses UnitLogin;
var
MoneyTotal: Real;
aa: string;
{$R *.dfm}
//新建
procedure TFrameSell.Image2Click(Sender: TObject);
begin
DBEdit1.Color := clWhite;
DBEdit2.Color := clWhite;
DBEdit5.Color := clWhite;
DBEdit1.Enabled := True;
DBEdit2.Enabled := True;
DBEdit5.Enabled := True;
ADOQuery1.Active := True;
ADOQuery1.Append;
DBEdit1.SetFocus;
image2.Enabled := False;
image3.Visible := True;
image5.Visible := True;
image6.Visible := True;
end;
procedure TFrameSell.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then DBEdit2.SetFocus;
end;
//按添加
procedure TFrameSell.Image3Click(Sender: TObject);
var
i: Integer;
begin
//先不让打印及清0
Image4.visible := False;
label5.Visible := False;
label8.Visible := false;
if (DBEdit1.Text<>'') and (DBEdit2.Text<>'') then
begin
ADOQuery2:= TADOQuery.Create(self);
ADOQuery2.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataFile+';Persist Security Info=False;';
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from t_prod where txm = '''+DBEdit1.Text+'''');
ADOQuery2.Open;
if ADOQuery2.Eof then
begin
messagebox(handle,'数据库中没有该商品编号!','重新输入',mb_iconwarning+mb_ok);
DBEdit1.SelectAll;
DBEdit1.SetFocus;
exit;
end;
if ADOQuery2.FieldByName('prod_stock').AsInteger < strtoint(DBEdit2.Text) then
begin
messagebox(handle,pchar('应该商品当前库存为 '+ADOQuery2.FieldByName('prod_stock').AsString+' ,不足所输销售数量!'),'重新输入',mb_iconwarning+mb_ok);
DBEdit2.SelectAll;
DBEdit2.SetFocus;
exit;
end;
DBEdit3.Text := ADOQuery2.FieldByName('prod_name').AsString;
DBEdit4.Text := ADOQuery2.FieldByName('prod_price').AsString;
//为308用自加的,是此条码对应的商品号
// DBEdit1.Text := ADOQuery2.FieldByName('prod_id').AsString;
DBEdit7.Text := UserName ;
ADOQuery2.Free;
adoquery1.fieldvalues['user_name']:=username;
ADOQuery1.Post;
MoneyTotal := 0;
for i:=1 to ADOQuery1.RecordCount do
begin
MoneyTotal := MoneyTotal + ADOQuery1.FieldByName('sell_prod_Price').AsVariant * ADOQuery1.FieldByName('sell_number').asinteger;
MoneyTotal := MoneyTotal - ADOQuery1.FieldByName('sell_Price').AsVariant;
ADOQuery1.Prior;
end;
Label4.Caption := FloatToStr(MoneyTotal);
ADOQuery1.Append;
DBEdit1.SetFocus;
Edit1.Color := clWhite;
Edit1.Enabled := True;
Image4.Enabled := True;
//原可打true,现不让打印
// Label7.Enabled := false;
end
else
messagebox(handle,'您的输入不正确(空值)!','检查输入',mb_iconwarning+mb_ok)
end;
procedure TFrameSell.Image7Click(Sender: TObject);
var
i: integer;
begin
ADOQuery1.Edit;
ADOQuery1.Post;
Image7.Visible := False;
MoneyTotal := 0;
for i:=1 to ADOQuery1.RecordCount do
begin
MoneyTotal := MoneyTotal + ADOQuery1.FieldByName('sell_prod_Price').AsVariant * ADOQuery1.FieldByName('sell_number').asinteger;
MoneyTotal := MoneyTotal - ADOQuery1.FieldByName('sell_price').asinteger;
ADOQuery1.Prior;
end;
Label4.Caption := FloatToStr(MoneyTotal);
ADOQuery1.Append;
end;
//
procedure TFrameSell.Image5Click(Sender: TObject);
var
i: integer;
begin
ADOQuery1.Cancel;
for i:=1 to ADOQuery1.RecordCount do
ADOQuery1.delete;
DBEdit1.Color := $00FFF0DC;
DBEdit2.Color := $00FFF0DC;
DBEdit5.Color := $00FFF0DC;
DBEdit1.Enabled := False;
DBEdit2.Enabled := False;
DBEdit5.Enabled := False;
ADOQuery1.Active := False;
image2.Enabled := True;
image3.Visible := False;
image5.Visible := False;
image6.Visible := False;
Image7.Visible := False;
Edit1.Text := '';
Label4.Caption := '0';
Edit1.Color := $00FFF0DC;
Image4.Enabled := False;
//不让打印
Label8.Enabled := False;
Edit1.Enabled := False;
end;
procedure TFrameSell.DBEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then DBEdit5.SetFocus;
end;
procedure TFrameSell.DBEdit5KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then Image3Click(self);
end;
procedure TFrameSell.Image6Click(Sender: TObject);
var
i: integer;
begin
ADOQuery1.Cancel;
if ADOQuery1.RecordCount>0 then ADOQuery1.Delete;
if ADOQuery1.RecordCount<=0 then
begin
Edit1.Text := '';
Label4.Caption := '0';
Edit1.Color := $00FFF0DC;
Image4.Enabled := False;
Label8.Enabled := False;
Edit1.Enabled := False;
end;
MoneyTotal := 0;
for i:=1 to ADOQuery1.RecordCount do
begin
MoneyTotal := MoneyTotal + ADOQuery1.FieldByName('sell_prod_Price').AsVariant * ADOQuery1.FieldByName('sell_number').asinteger;
MoneyTotal := MoneyTotal - ADOQuery1.FieldByName('sell_Price').asinteger;
ADOQuery1.Prior;
end;
Label4.Caption := FloatToStr(MoneyTotal);
ADOQuery1.Append;
Image7.Visible := False;
end;
procedure TFrameSell.DBGrid1CellClick(Column: TColumn);
begin
Image7.Visible := True;
end;
//原确定, 现打钱数回车
procedure TFrameSell.Edit1KeyPress(Sender: TObject; var Key: Char);
var i: integer;
begin
if (Edit1.Text<>'') and (Key=#13) and IsAllNum(Edit1.Text) then
begin
if (StrToFloat(Edit1.Text)<MoneyTotal) then
begin messagebox(handle,pchar('应该收金额为 '+FloatToStr(MoneyTotal)+' 元,收款不足!'),'检查输入',mb_iconwarning+mb_ok);
exit;
end;
Messagebox(handle,pchar('找零 '+FloatToStr(StrToFloat(Edit1.Text)-MoneyTotal)+' 元,品种数为'+inttostr(ADOQuery1.RecordCount)),'谢谢光临',mb_iconwarning+mb_ok);
ADOQuery1.Cancel;
for i:=1 to ADOQuery1.RecordCount do
begin
ADOQuery2:= TADOQuery.Create(self);
ADOQuery2.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataFile+';Persist Security Info=False;';
ADOQuery2.SQL.Clear;
//各条记录减库存
aa:= ADOQuery1.FieldByName('txm').AsString;
//showmessage('各txm:'+aa);
ADOQuery2.SQL.Add('update t_prod set prod_stock=prod_stock-'+ADOQuery1.FieldByName('sell_number').AsString+',prod_sale=prod_sale+'+ADOQuery1.FieldByName('sell_number').AsString+' where txm = '''+aa+'''');
ADOQuery2.ExecSQL;
ADOQuery1.prior;
end;
//加已付标志
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('update t_sell set sell_pay = 1');
ADOQuery2.ExecSQL;
ADOQuery2.SQL.Clear;
//在底下显示内容
ADOQuery2.SQL.Add('select * from t_sell where not sell_pay');
Label8.visible :=True;
edit1.Visible :=false;
edit3.Visible :=false;
end
else
begin
//messagebox(handle,'您的输入不正确(空值或非数值)!','检查输入',mb_iconwarning+mb_ok);
Edit1.SetFocus;
end;
end;
//只清0,是原确定的下半
procedure TFrameSell.Image4Click(Sender: TObject);
begin
ADOQuery1.Active := False;
DBEdit1.Color := $00FFF0DC;
DBEdit2.Color := $00FFF0DC;
DBEdit5.Color := $00FFF0DC;
DBEdit1.Enabled := False;
DBEdit2.Enabled := False;
DBEdit5.Enabled := False;
Edit1.Text := '';
Label4.Caption := '0';
Edit1.Color := $00FFF0DC;
image2.Enabled := True;
image3.Visible := False;
image5.Visible := False;
image6.Visible := False;
Image7.Visible := False;
Image4.Enabled := False;
Label8.visible := False;
Edit1.Enabled := False;
edit1.Visible := True;
edit3.Visible := True;
end;
function TFrameSell.IsAllNum(s:string):bool;
var
i:integer;
begin
for i := 1 To Length(s) do
if (s[i] < '0') or (s[i] > '9') then
begin
IsAllNum := False;
Exit;
end;
IsAllNum := True;
end;
procedure TFrameSell.Label7Click(Sender: TObject);
begin
//1是商品名
qrlabel7.Caption :=FloatToStr(MoneyTotal);
qrlabel8.Caption := UserName ;
rep1.Preview ;
label5.Visible := True;
image4.Visible := True;
Label8.visible := false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -