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

📄 depotthunit.pas

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

interface

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

type
  TDepotthForm = class(TMainInputTYfrm)
    CB_Depot: TComboBox;
    function User_save: boolean;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure OKBtnClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DepotthForm: TDepotthForm;

implementation

uses FunctionUnit, MainUnit;

{$R *.dfm}

function TDepotthForm.User_save: boolean;
var
  I_errordb, I_temp, I_count, I_number: 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 Storagerecord where depotid="'
              + S_depotid + '" 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('在【' + cb_depot.Text + '】内' + 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('在【' + cb_depot.Text + '】内' + 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 := 1;
            close;
            sql.clear;
                  //记录进货退货记录
            sql.text := 'insert into threcord (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 := 2;
            sql.clear;
            sql.text := 'select id,number from Storagerecord 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]);
            close;
            I_errordb := 3;
                  //更新数据
            sql.clear;
            sql.Text := 'update Storagerecord set number=' + inttostr(I_count)
              + ' where id="' + S_tempid + '"';
            execsql;
            close;
          end;
        end;
      except
        result := false;
        if I_errordb = 1 then
          messagedlg(Errormsg0004 + '0021', mtwarning, [mbok], 0)
        else if I_errordb = 2 then
          messagedlg(Errormsg0001 + '0019', mtwarning, [mbok], 0)
        else if I_errordb = 3 then
          messagedlg(Errormsg0004 + '0019', mtwarning, [mbok], 0)
        else
          messagedlg(Errormsg0001 + '0000', mtwarning, [mbok], 0);
        close;
        exit;
      end;
      close;
    end;
  end;
end;


procedure TDepotthForm.FormCreate(Sender: TObject);
begin
  inherited;
  self.Caption := '仓库进货退货数据录入';
  impsg_data.ColWidths[6] := -1;
  impsg_data.ColWidths[8] := -1;
end;

procedure TDepotthForm.FormShow(Sender: TObject);
begin
  inherited;
  with query_data do
  begin
    close;
    sql.Clear;
    sql.Text := 'select name from depot where 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 TDepotthForm.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 TDepotthForm.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;

end.

⌨️ 快捷键说明

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