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

📄 buygoodsunit.pas

📁 安装完成后
💻 PAS
字号:
unit BuyGoodsUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, ComCtrls,  ExtCtrls, DB, DBTables;

type
  TBuyGoodsForm = class(TForm)
    P_back: TPanel;
    P_main: TPanel;
    Panel_down: TPanel;
    Bevel_bass: TBevel;
    L_count: TLabel;
    Panel_button: TPanel;
    OKBtn: TButton;
    CancelBtn: TButton;
    PageScroller_input: TPageScroller;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DTP_date: TDateTimePicker;
    CB_ywy: TComboBox;
    CB_depot: TComboBox;
    IMPSG_DATA: TStringGrid;
    Query_data: TQuery;
    function User_save:boolean;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure OKBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure Panel_downClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  BuyGoodsForm: TBuyGoodsForm;

implementation
Uses FunctionUnit,MainUnit;
{$R *.dfm}

procedure TBuyGoodsForm.FormCreate(Sender: TObject);
begin
   self.Caption :='商场进货数据录入';
//   impsg_data.ColWidths[6]:=-1;
//   impsg_data.ColWidths[8]:=-1;
end;

procedure TBuyGoodsForm.FormShow(Sender: TObject);
begin
 with query_data do
   begin
      close;
      sql.Clear ;
      sql.Text :='select name from depot where  and type="外部"';
      open;
      cb_depot.Items.Clear ;
      cb_depot.Style:=csDropDownList;
      while not eof do
      begin
         CB_depot.Items.add(fieldbyname('name').asstring);
         next;
      end;
      close;
   end;
end;

procedure TBuyGoodsForm.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
var
   T_temp:TModalResult;
begin
  inherited;
   if OKBtn.Enabled then
   begin
      T_temp:=messagedlg(Askmsg0001,mtConfirmation,mbYesnoCancel,0);
      if T_temp=mrYes then
      begin
         if not user_save then
         begin
            messagedlg('【'+cb_depot.text+'】的进货'+Infmsg0004,mtError,[mbok],0);
            canclose:=false;
         end
         else
         begin
            messagedlg(Infmsg0001,mtInformation,[mbok],0);
            canclose:=true;
         end;
      end
      else if T_temp=mrNo then
         canclose:=true
      else
         canclose:=false;
   end
   else
      canclose:=true;
end;

procedure TBuyGoodsForm.OKBtnClick(Sender: TObject);

var
   T_temp:TModalResult;
begin
 T_temp:=messagedlg(Askmsg0002+' - 【'+cb_depot.text+'】的进货数据',mtConfirmation,mbOKCancel,0);
  if T_temp=mrOk then
  begin
   if not user_save then
   begin
      messagedlg('【'+cb_depot.text+'】的进货'+Infmsg0004,mtError,[mbok],0);
   end
   else
   begin
      messagedlg(Infmsg0001,mtInformation,[mbok],0);
      okbtn.Enabled :=false;
      self.close;
   end;
  end;
end;


procedure TBuyGoodsForm.CancelBtnClick(Sender: TObject);
begin
self.close;
end;
function TBuyGoodsForm.User_save:boolean;
var
   I_errordb,I_temp,I_count,I_number,I_recordcount:integer;
   S_depotid,S_tempid,S_id:string;
begin
   I_errordb:=0;
   I_count:=0;
   S_depotid:='';
   if not Checkrights(USERRIGHTS,'增加') then
   begin
      messagedlg(Errormsg0006+'0007',mterror,[mbok],0);
      result:=false;
      exit;
   end;
   if CB_depot.Text ='' then
   begin
      messagedlg(Errormsg0002+'0002',mtwarning,[mbok],0);
      cb_depot.SetFocus ;
      result:=false;
   end
   else
      result:=true;
   if result then
   begin
      for I_temp:=1 to 99 do              //逐行检测进货记录是否有效
      begin
         if IMPSG_DATA.Cells[1,I_temp]<>'' then           //有效记录
         begin
            inc(I_count);
            if (IMPSG_DATA.cells[4,I_temp]='') or (IMPSG_DATA.cells[5,I_temp]='') then
            begin
               messagedlg('第'+inttostr(I_temp)+
                  '行记录的'+Errormsg0002+'0015',mtError,[mbok],0);
               IMPSG_DATA.Row :=I_temp;
               IMPSG_DATA.Col :=4;
               IMPSG_DATA.SetFocus ;
               result:=false;
               exit;
            end;
            try
               strtofloat(IMPSG_DATA.Cells[4,I_temp]);
               strtofloat(IMPSG_DATA.Cells[5,I_temp]);
            except
               messagedlg('第'+inttostr(I_temp)+
                  '行记录的'+Errormsg0002+'0015',mtError,[mbok],0);
               IMPSG_DATA.Row :=I_temp;
               IMPSG_DATA.Col :=4;
               IMPSG_DATA.SetFocus ;
               result:=false;
               exit;
            end;
         end;
      end;
      if I_count<1 then
      begin
         result:=false;
         messagedlg(Errormsg0008,mtwarning,[mbok],0);
      end;
   end;
   if result then
   begin
      with Query_data do
      begin
         try
            close;
            sql.Clear ;
            sql.Text :='select id from depot where name="'+ cb_depot.Text+'"';
            open;
            S_depotid:=fieldbyname('id').AsString ;
            close;
            //检查主仓库是否有库存,即外部仓库数量是否合法
            for I_temp:=1 to 99 do
            begin
               if IMPSG_DATA.Cells[1,I_temp]<>'' then           //有效记录
               begin
                  I_errordb:=1;
                  close;
                  sql.Clear ;
                  sql.text:='select id,number from kccount where depotid=(select Id from depot'
                           +' where type="内部") and goodsid="'+ IMPSG_DATA.Cells[1,I_temp]+'"';
                  open;
                  S_id:=fieldbyname('id').asstring;
                  I_number:=fieldbyname('number').AsInteger-strtoint(IMPSG_DATA.cells[4,I_temp]);
                  if (recordcount<= 0) or (s_id='') then   //本行商品没有进货记录
                  begin
                     messagedlg('在【内部仓库(主仓库)】内'+Errormsg0009,mtwarning,[mbok],0);
                     impsg_data.Row :=I_temp;
                     impsg_data.Col :=1;
                     result:=false;
                     close;
                     exit;
                  end
                  else if I_number<0 then    //进货数量小于销售数量
                  begin
                     messagedlg('在【内部仓库(主仓库)】内'+Errormsg0010,mtwarning,[mbok],0);
                     impsg_data.Row :=I_temp;
                     impsg_data.Col :=4;
                     result:=false;
                     close;
                     exit;
                  end;
               end;
            end;
            for I_temp:=1 to 99 do
            begin
               if IMPSG_DATA.Cells[1,I_temp]<>'' then           //有效记录
               begin
                  I_errordb:=2;
                  close;
                  sql.clear;
                  //记录进货记录
                  sql.text:='insert into stockrecord (depotid,goodsid,number,mydate,id,memo,price)'+
                         'values ("'+S_depotid+'","'+IMPSG_DATA.Cells[1,I_temp]+'",'
                         +IMPSG_DATA.cells[4,I_temp]+',"'+formatdatetime('yyyy-mm-dd',DTP_date.DateTime)
                         +'","'+Nowindex+'-'+inttostr(I_temp)+'","'
                         + IMPSG_DATA.cells[9,i_temp]+'",'+IMPSG_DATA.cells[5,I_temp]+')';
                  execsql;
                  close;
                  I_errordb:=1;
                  sql.clear;

                  sql.text:='select id,number from kccount where depotid='''+
                              S_depotid+''' and goodsid='''+ IMPSG_DATA.Cells[1,I_temp]+'''';
                  open;
                  //进货仓库统计
                  S_tempid:=fieldbyname('id').asstring;
                  I_count:=fieldbyname('number').AsInteger+strtoint(IMPSG_DATA.cells[4,I_temp]);
                  I_recordcount:=recordcount;
                  close;
                  sql.Clear ;
                  sql.Text :='select id,number from kccount where depotid=(select Id from depot'
                           +' where type="内部") and goodsid="'+ IMPSG_DATA.Cells[1,I_temp]+'"';
                  open;
                  //主仓库统计
                  S_id:=fieldbyname('id').AsString ;
                  I_number:=fieldbyname('number').AsInteger-strtoint(IMPSG_DATA.cells[4,I_temp]);
                  close;
                  //更新数据
                  I_errordb:=3;
                  sql.Clear ;
                  if (I_recordcount>0) and (S_tempid<> '') then
                     sql.text:='update kccount set number='+inttostr(I_count)+',price='+IMPSG_DATA.cells[5,I_temp]
                              +' where id='''+s_tempid+''''
                  else
                     sql.text:='insert into kccount (depotid,goodsid,number,price,id,memo)'
                            +' values ("'+S_depotid+'","'
                            +IMPSG_DATA.Cells[1,I_temp]+'",'+IMPSG_DATA.cells[4,I_temp]+','
                            +IMPSG_DATA.cells[5,I_temp]+',"'+Nowindex+'-'+inttostr(I_temp)+'","'
                            + IMPSG_DATA.cells[9,i_temp]+'")';
                  execsql;
                  close;
                  sql.clear;
                  sql.Text :='update kccount set number='+inttostr(I_number)
                              +' where id="'+S_id+'"';
                  execsql;
                  close;
                  I_errordb:=4;
                  sql.Clear ;
                  sql.Text :='update goodsmessage set price='+IMPSG_DATA.cells[5,I_temp]+' where id='''+IMPSG_DATA.Cells[1,I_temp]+'''';
                  execsql;
                  close;
               end;
            end;
         except
            result:=false;
            if I_errordb=1 then
               messagedlg(Errormsg0001+'0019',mtwarning,[mbok],0)
            else if I_errordb=2 then
               messagedlg(Errormsg0004+'0021',mtwarning,[mbok],0)
            else if I_errordb=3 then
               messagedlg(Errormsg0004+'0016',mtwarning,[mbok],0)
            else if I_errordb=4 then
               messagedlg(Errormsg0004+'0013',mtwarning,[mbok],0)
            else
               messagedlg(Errormsg0001+'0000',mtwarning,[mbok],0);
            close;
            exit;
         end;
         close;
      end;
   end;
end;
procedure TBuyGoodsForm.Panel_downClick(Sender: TObject);
begin
//Okbtn.Enabled:=Not okbtn.Enabled;
end;

end.

⌨️ 快捷键说明

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