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

📄 p_ck.pas

📁 超市系统超市系统超市系统超市系统超市系统超市系统超市系统超市系统超市系统超市系统超市系统超市系统超市系统超市系统
💻 PAS
字号:
unit p_ck;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,p_mc, DBCtrls, SUIDBCtrls, SUIEdit, Mask, Buttons, ExtCtrls,
  Grids, DBGrids, StdCtrls, SUIComboBox, ComCtrls;

type
  Tf_ck = class(Tf_mc)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DT: TDateTimePicker;
    CKDH: TEdit;
    Memo1: TMemo;
    cb_jbr: TsuiComboBox;
    cb_ck: TsuiComboBox;
    GroupBox2: TGroupBox;
    b_edit: TBitBtn;
    b_add: TBitBtn;
    b_del: TBitBtn;
    DBGrid1: TDBGrid;
    b_save: TBitBtn;
    b_cancel: TBitBtn;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Pan: TPanel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label15: TLabel;
    Label3: TLabel;
    Label16: TLabel;
    b_sp: TSpeedButton;
    sl: TsuiDBEdit;
    suiDBMemo1: TsuiDBMemo;
    GroupBox3: TGroupBox;
    Label11: TLabel;
    Label12: TLabel;
    c: TsuiDBEdit;
    hcl: TsuiDBEdit;
    GroupBox4: TGroupBox;
    Label13: TLabel;
    Label14: TLabel;
    szmd: TsuiDBEdit;
    sph: TsuiDBEdit;
    spm: TsuiEdit;
    spxh: TsuiEdit;
    Label10: TLabel;
    KH: TEdit;
    Label17: TLabel;
    Label18: TLabel;
    ZJJE: TEdit;
    YFJE: TEdit;
    SpeedButton1: TSpeedButton;
    Label19: TLabel;
    suiDBEdit1: TsuiDBEdit;
    suiDBEdit2: TsuiDBEdit;
    JG: TsuiDBEdit;
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure b_spClick(Sender: TObject);
    procedure b_addClick(Sender: TObject);
    procedure b_delClick(Sender: TObject);
    procedure b_saveClick(Sender: TObject);
    procedure b_editClick(Sender: TObject);
    procedure b_cancelClick(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure ckdbh;
    procedure BitBtn1Click(Sender: TObject);
    procedure JGKeyPress(Sender: TObject; var Key: Char);
    procedure slKeyPress(Sender: TObject; var Key: Char);
    procedure YFJEKeyPress(Sender: TObject; var Key: Char);
    procedure YFJEExit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  f_ck: Tf_ck;

implementation

uses p_dm,p_gl,p_gh,P_FFRY,p_xzsp;

{$R *.dfm}
procedure tf_ck.ckdbh;
var
 i,j:integer;
 s:string;
begin
  i:=0;
  DT.Date:=NOW;
  with dm do
  begin
    query.SQL.Clear;
    query.SQL.Add('select * from crkd_info where ddh like :ddh');
    query.Parameters[0].Value:='ck'+formatdatetime('yyyymmdd',dt.Date)+'%';
    query.Open;
    if query.RecordCount=0 then   //==============
    begin
      s:='000'+inttostr(i+1);
      ckdh.Text:='ck'+formatdatetime('yyyymmdd',dt.Date)+s;
    end else
    begin
      query.Last;
      s:=copy(query['ddh'],11,4);
      i:=strtoint(s);
      s:=inttostr(i+1);
      for j:=1 to 4-length(s) do     //=============
        s:='0'+s;
      Ckdh.Text:='ck'+formatdatetime('yyyymmdd',dt.Date)+s;
    end;    //if ... end
    query.Close;
  end;      //with .. end
end;

procedure Tf_ck.SpeedButton1Click(Sender: TObject);
begin
  inherited;
  application.CreateForm(tf_gh,f_gh);
  sjkh:=true;
  f_gh.b_exit.Caption:='选择';
  f_gh.Height:=530;
  f_gh.ShowModal;
  sjkh:=false;
  kh.Text:=pkhm;
end;

procedure Tf_ck.FormCreate(Sender: TObject);
begin
  inherited;
  WITH DM DO
  BEGIN
    f_ck.ckdbh;
    zjje.Text:='0';
    yfje.Text:='0';
    query.SQL.Clear;
    query.SQL.add('delete from tempck_info');
    query.ExecSQL;
    T_TEMPCK.Open;
    t_ffry.Open;
    t_ffry.Filtered:=false;
    if t_ffry.RecordCount=0 then
    begin
      application.MessageBox('没有本公司人员信息,请输入!','信息',mb_ok+mb_iconinformation);
      application.CreateForm(tf_ffry,f_ffry);
      f_ffry.ShowModal;
    end;
    t_ffry.First;
    while not t_ffry.Eof do
    begin
      cb_jbr.Items.Add(t_ffry['xm']);
      t_ffry.Next;
    end;
    cb_jbr.ItemIndex:=0;
    if t_tempCk.RecordCount=0 then exit;
    dbgrid1.OnCellClick(dbgrid1.Columns.Items[dbgrid1.SelectedRows.count]);
  END; //WITH .. END
end;

procedure Tf_ck.DBGrid1CellClick(Column: TColumn);
begin
  inherited;
  b_cancel.OnClick(self);
  with dm do
  begin
    if t_tempCk.RecordCount=0 then exit;
    query.SQL.Clear;
    query.SQL.Add('select sp_info.spm,spxh_info.xhm from spxh_info,sp_info where sp_info.sph=:a and spxh_info.xhh=sp_info.xhh');
    query.Parameters[0].Value:=sph.Text;
    query.Open;
    spm.Text:=query['spm'];
    spxh.text:=query['xhm'];    
  end;
end;

procedure Tf_ck.b_spClick(Sender: TObject);
begin
  inherited;
  application.CreateForm(tf_xzsp,f_xzsp);
  f_xzsp.ShowModal;
  with dm do
  begin
    query1.SQL.Clear;
    query1.SQL.Add('select * from tempck_info where rkdh=:ddh and sph=:sph and c=:c and hcl=:hcl and szmd=:szmd and ysx=:ysx');
    query1.Parameters[0].Value:=QUERY['ddh'];
    query1.Parameters[1].Value:=QUERY['sph'];
    query1.Parameters[2].value:=QUERY['c'];
    query1.Parameters[3].value:=QUERY['hcl'];
    query1.Parameters[4].value:=QUERY['szmd'];
    query1.Parameters[5].value:=QUERY['ysx'];
    query1.open;
    if query1.RecordCount<>0 then
    begin
      application.MessageBox('已有该批商品,请重新选择商品或修改该商品!','提示',mb_ok+mb_iconstop);
      b_cancel.OnClick(self);
      t_tempck.Requery;
      exit;
    end;
  end;
  if dm.Query.RecordCount=0 then
  begin
    application.MessageBox('没有库存信息!','提示',mb_ok+mb_iconinformation);
    b_cancel.OnClick(self);
    dm.t_tempck.Requery;
    exit;
  end;
  with dm do
  begin
    t_tempck['sph']:=query['sph'];
    t_tempck['rkdh']:=query['ddh'];
    t_tempck['c']:=query['c'];
    t_tempck['hcl']:=query['hcl'];
    t_tempck['szmd']:=query['szmd'];
    t_tempck['ysx']:=query['ysx'];
    t_tempck['dw']:=query['dw'];
    spm.Text:=query['spm'];
    spxh.Text:=query['xhm'];
    kc00:=query['sl'];
    query.Close;
  end;  //with .. end
end;

procedure Tf_ck.b_addClick(Sender: TObject);
begin
  inherited;
  with dm do
  begin
    t_tempck.Append;
    b_sp.OnClick(self);
    //if query.RecordCount=0 then exit;
    if query1.RecordCount<>0 then exit;
    dbgrid1.Enabled:=false;
    //dbgrid1.ReadOnly:=false;
    b_sp.Enabled:=true;
    b_add.Enabled:=false;
    b_edit.Enabled:=false;
    b_del.Enabled:=false;
    b_save.Enabled:=true;
    b_cancel.Enabled:=true;
    pan.Enabled:=true;
    b_sp.Enabled:=true;
    pan.Font.Color:=$00990000;
  end;  //with .. end
  sl.SetFocus;
end;

procedure Tf_ck.b_delClick(Sender: TObject);
begin
  inherited;
  if application.MessageBox('您确认删除该记录吗?','提问',mb_yesno+mb_iconquestion)=idno then
  begin
    exit;
  end;
  try
    dm.T_tempck.Delete;
  except
    application.MessageBox('数据库删除不成功!','数据删除失败',mb_ok+mb_iconstop);
  end;
  dm.Query.SQL.Clear;
  dm.Query.SQL.Add('select sum(cj*sl) as sl from tempck_info');
  dm.Query.Open;
  if dm.Query['SL']=NULL then
     zjje.Text:='0'
  else zjje.Text:=dm.Query['sl'];
  dm.T_tempck.Filtered:=false;
  dbgrid1.OnCellClick(dbgrid1.Columns.Items[dbgrid1.SelectedRows.count]);
end;

procedure Tf_ck.b_saveClick(Sender: TObject);
begin
  inherited;
  if (trim(sph.Text)='')or(trim(sl.Text)='')or(trim(sl.Text)='0')or(trim(jg.Text)='')or(trim(jg.Text)='0') then
  begin
    application.MessageBox('商品名称、数量、价格必须输入!','提示',mb_ok+mb_iconinformation);
    exit;
  end;
  //==================检测库存中该商品数量是否能满足
  with dm do
  begin
    {query.SQL.Clear;
    query.SQL.Add('select * from rk_info where ddh=:ddh and sph=:sph');
    query.Parameters[0].Value:=t_tempck['rkdh'];
    query.Parameters[1].Value:=t_tempck['sph'];
    query.Open;
    sl1:=query['sl'];
    query.SQL.Clear;
    query.SQL.Add('select sum(sl) as sl from ck_info where rkdh=:rkdh and sph=:sph');
    query.Parameters[0].Value:=t_tempck['rkdh'];
    query.Parameters[1].Value:=t_tempck['sph'];
    query.Open;
    if query['sl']=null then
       sl2:=0
    else sl2:=query['sl'];
    if (t_tempck['sl']>(sl1-sl2))or(sl1-sl2<=0) then   }
    if (kc00<strtofloat(sl.Text))or(kc00<=0) then
    begin
      application.MessageBox(pchar('商品数量不足,库存数量为:'+floattostr(kc00-strtofloat(sl.Text))+',请修改数量!'),'提示',mb_ok+mb_iconwarning);
      sl.SetFocus;
      exit;
    end;
  end;
  //==============================
    try
      dm.T_TEMPCK['scsl']:=trim(sl.Text);
      dm.T_tempck.post;
    except
      application.MessageBox('数据库增加或修改不成功!','提交数据失败',mb_ok+mb_iconstop);
    end;
    dm.Query.SQL.Clear;
    dm.Query.SQL.Add('select sum(cj*sl) as sl from tempck_info');
    dm.Query.Open;
    zjje.Text:=dm.Query['sl'];
    dbgrid1.Enabled:=true;
    //dbgrid1.ReadOnly:=true;
    b_add.Enabled:=true;
    b_edit.Enabled:=true;
    b_del.Enabled:=true;
    b_save.Enabled:=false;
    b_cancel.Enabled:=false;
    pan.Enabled:=false;
    b_sp.Enabled:=false;
    pan.Font.Color:=clwindowtext;
    dbgrid1.OnCellClick(dbgrid1.Columns.Items[dbgrid1.SelectedRows.count]);
end;

procedure Tf_ck.b_editClick(Sender: TObject);
begin
  inherited;
  dm.T_tempck.edit;
  dbgrid1.Enabled:=false;
  //dbgrid1.ReadOnly:=false;
  b_sp.Enabled:=false;
  b_edit.Enabled:=false;
  b_add.Enabled:=false;
  b_del.Enabled:=false;
  b_save.Enabled:=true;
  b_cancel.Enabled:=true;
  pan.Enabled:=true;
  b_sp.Enabled:=true;
  pan.Font.Color:=$00990000;
  sl.SetFocus;
end;

procedure Tf_ck.b_cancelClick(Sender: TObject);
begin
  inherited;
  dbgrid1.Enabled:=true;
  //dbgrid1.ReadOnly:=true;
  dm.T_tempck.cancel;
  b_add.Enabled:=true;
  b_edit.Enabled:=true;
  b_del.Enabled:=true;
  b_save.Enabled:=false;
  b_cancel.Enabled:=false;
  pan.Enabled:=false;
  b_sp.Enabled:=false;
  pan.Font.Color:=clwindowtext;
end;

procedure Tf_ck.BitBtn2Click(Sender: TObject);
begin
  inherited;
  close;
end;

procedure Tf_ck.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  dm.T_TEMPCK.Cancel;
  dm.T_TEMPCK.Close;
  dm.T_ffry.Close;
end;

procedure Tf_ck.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  inherited;
//  if b_save.Enabled then b_save.OnClick(self);
{  if b_save.Enabled then
    if application.MessageBox('是否要保存该记录?','保存',mb_yesno+mb_iconquestion)=idno then
      b_cancel.OnClick(self)
    else b_save.OnClick(self);    }
end;

procedure Tf_ck.BitBtn1Click(Sender: TObject);
begin
  inherited;
  if (trim(kh.Text)='')or(trim(cb_jbr.Text)='')or(trim(zjje.Text)='')or(trim(zjje.Text)='0') then
  begin
    application.MessageBox('客户名称、总计金额、经办人必须输入!','输入',mb_ok+mb_iconinformation);
    exit;
  end;
  if dm.T_TEMPCK.RecordCount=0 then
  begin
    application.MessageBox('请输入出库明细!','输入',mb_ok+mb_iconinformation);
    exit;
  end;
  with dm do
  begin
    query.SQL.Clear;
    query.SQL.Add('insert into crkd_info(ddh,ddrq,khh,zjje,yfje,jbr,ck,bz) values(:ddh,:ddrq,:khh,:zjje,:yfje,:jbr,:ck,:bz)');
    query.Parameters[0].Value:=trim(ckdh.Text);
    query.Parameters[1].Value:=formatdatetime('yyyy.mm.dd',dt.Date);
    query.Parameters[2].Value:=pkhh;
    query.Parameters[3].Value:=trim(zjje.Text);
    query.Parameters[4].Value:=trim(yfje.Text);
    query.Parameters[5].Value:=trim(cb_jbr.Text);
    query.Parameters[6].Value:=trim(cb_ck.Text);
    query.Parameters[7].Value:=trim(memo1.Text);
    query.ExecSQL;
    query.SQL.Clear;
    query.SQL.Add('update tempck_info set ddh=:ddh,cklx=:cklx,ckrq=:ckrq');
    query.Parameters[0].Value:=trim(ckdh.Text);
    query.Parameters[1].Value:='出库';
    query.Parameters[2].Value:=formatdatetime('yyyy.mm.dd',dt.Date);
    query.ExecSQL;
    t_tempck.Requery;
    t_tempck.First;
    while not t_tempck.Eof do
    begin
      query.SQL.Clear;
      query.SQL.Add('update kc_info set sl=sl-:cksl where ddh=:ddh and sph=:sph and c=:c and hcl=:hcl and szmd=:szmd and ysx=:ysx');
      query.Parameters[0].Value:=t_tempck['sl'];
      query.Parameters[1].value:=t_tempck['rkdh'];
      query.Parameters[2].value:=t_tempck['sph'];
      query.Parameters[3].value:=t_tempck['c'];
      query.Parameters[4].value:=t_tempck['hcl'];
      query.Parameters[5].value:=t_tempck['szmd'];
      query.Parameters[6].value:=t_tempck['ysx'];
      query.ExecSQL;
      t_tempck.Next;
    end;
    query.SQL.Clear;
    query.SQL.Add('insert into ck_info select * from tempck_info');
    query.ExecSQL;
    f_ck.ckdbh;
    query.SQL.Clear;
    query.SQL.Add('delete from tempck_info');
    query.ExecSQL;
    spm.Text:='';
    spxh.Text:='';
    zjje.Text:='0';
    yfje.Text:='0';
    t_tempck.Requery;
  end; //with .. end
end;

procedure Tf_ck.JGKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if not(key in['0'..'9',#8,'.']) then
  begin
    key:=#0;
  end;
end;

procedure Tf_ck.slKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if not(key in['0'..'9',#8,'.']) then
  begin
    key:=#0;
  end;
end;

procedure Tf_ck.YFJEKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if not(key in['0'..'9',#8,'.']) then
  begin
    key:=#0;
  end;
end;

procedure Tf_ck.YFJEExit(Sender: TObject);
begin
  inherited;
  if yfje.Text='' then
  begin
    yfje.Text:='0';
    exit;
  end;
  try
    strtofloat(trim(yfje.Text))
  except
    application.MessageBox('已付金额输入不合法,请重新输入!','错误',mb_ok+mb_iconstop);
    yfje.SetFocus;
    exit;
  end;
  yfje.Text:=floattostr(strtofloat(trim(yfje.Text)));
end;

end.

⌨️ 快捷键说明

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