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

📄 frmcreaterequestorder.pas

📁 物流供应链管理系统
💻 PAS
字号:
unit frmCreateRequestOrder;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, Mask, DBCtrls, ComCtrls, DBDateTimePicker,
  ExtCtrls, LCDBOperatTool, Grids, DBGrids, DBClient, Provider;

type
  TFormCreateRequestOrder = class(TForm)
    BtnBegin: TButton;
    BtnEnd: TButton;
    ADOCon: TADOConnection;
    ADOQMaster: TADOQuery;
    ADOQSlave: TADOQuery;
    DSMaster: TDataSource;
    DSSlave: TDataSource;
    Label1: TLabel;
    Label2: TLabel;
    DBEdtId: TDBEdit;
    DBEdtOperatorId: TDBEdit;
    Button3: TButton;
    GroupBox1: TGroupBox;
    LCDBOperatTool1: TLCDBOperatTool;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DBEdtBarCode: TDBEdit;
    DBEdit2: TDBEdit;
    DBDateTimePicker1: TDBDateTimePicker;
    DBGrid1: TDBGrid;
    Button1: TButton;
    ADOQInfo: TADOQuery;
    BtnPrint: TButton;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure LCDBOperatTool1ModeChange(AMode: TBtnMode);
    procedure FormCreate(Sender: TObject);
    procedure BtnBeginClick(Sender: TObject);
    procedure BtnEndClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure BtnPrintClick(Sender: TObject);
  private
    { Private declarations }
    FMasterId: string;
    function GenerateRequestOrderId: string;//产生一个请购单号
    procedure CreateRequestOrder;//新建请购单
    function IsBarCodeExist(ABarCode: string): Boolean;//条形码是否存在
  public
    { Public declarations }
    //将信息查询中的查询结果转化成请购单
    procedure ConvertQueryToRequestOrder(ADataSet: TDataSet);
  end;

var
  FormCreateRequestOrder: TFormCreateRequestOrder;

implementation
uses CommonFunc, untConfig, StrUtils, qrRequestOrder;
{$R *.dfm}

procedure TFormCreateRequestOrder.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
  Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TFormCreateRequestOrder.LCDBOperatTool1ModeChange(
  AMode: TBtnMode);
begin
  if AMode = bmAdd then
    ADOQSlave.FieldByName('MasterId').AsString := FMasterId;
end;

procedure TFormCreateRequestOrder.FormCreate(Sender: TObject);
begin
  ADOCon.Close;
  ADOCon.ConnectionString := GetConnectionString;
  try
    ADOCon.Open;
  except
    raise;
  end;
end;

function TFormCreateRequestOrder.GenerateRequestOrderId: string;
var
  LNew, LOld, s: string;
  i: integer;
begin
  ADOQInfo.Close;
  ADOQInfo.SQL.Clear;
  ADOQInfo.SQL.Add('select id from t_RequestOrderListMaster ');
  ADOQInfo.SQL.Add('order by id desc');
  ADOQInfo.Open;
  if ADOQInfo.RecordCount > 0 then
    LOld := ADOQInfo.FieldByName('id').AsString;
  s := RightStr(LOld,8);
  i := StrToIntDef(s,0);
  Inc(i);
  LNew := 'QG'+FormatFloat('00000000',i);
  result := LNew;
end;

procedure TFormCreateRequestOrder.CreateRequestOrder;
begin
  FMasterId := GenerateRequestOrderId;
  try
    ADOQMaster.Close;
    ADOQMaster.SQL.Clear;
    ADOQMaster.SQL.Add('select * from t_RequestOrderListMaster where 1=2');
    ADOQMaster.Open;
    ADOQMaster.Insert;
    ADOQMaster.FieldByName('Id').AsString := FMasterId;
    ADOQMaster.FieldByName('RequestDate').AsDateTime := Now();
    ADOQMaster.FieldByName('RequestDepartId').AsString := GetWareHouseDepartId;

    ADOQSlave.Close;
    ADOQSlave.SQL.Clear;
    ADOQSlave.SQL.Add('select * from t_RequestOrderListSlave where 1=2');
    ADOQSlave.Open;

    BtnEnd.Enabled := true;
    BtnPrint.Enabled := true;
    LCDBOperatTool1.Enabled := true;
    DBEdtBarCode.Enabled := true;
    Button1.Enabled := true;
    DBEdit2.Enabled := true;
    DBDateTimePicker1.Enabled := true;
    DBGrid1.Enabled := true;
    BtnBegin.Enabled := false;
  except
    LCShowMessage('创建新请购单错误!');
  end;

end;

procedure TFormCreateRequestOrder.BtnBeginClick(Sender: TObject);
begin
  CreateRequestOrder;
end;

procedure TFormCreateRequestOrder.BtnEndClick(Sender: TObject);
var
  i, n: integer;
  LBC: string;
begin
  try
    n := ADOQSlave.RecordCount - 1;
    for i := 0 to n do
    begin
      LBC := ADOQSlave.FieldByName('BarCode').AsString;
      if not IsBarCodeExist(LBC) then
      begin
        LCShowMessage(Format('条形码%s不存在!',[LBC]));
        Exit;
      end;
    end;

    ADOCon.BeginTrans;
    ADOQMaster.Open;
    if (ADOQMaster.State=dsInsert) or (ADOQMaster.State=dsEdit) then
      ADOQMaster.Post;
    ADOQMaster.UpdateBatch();
    ADOQSlave.Open;
    if (ADOQSlave.State=dsInsert) or (ADOQSlave.State=dsEdit) then
    ADOQSlave.Post;
    ADOQSlave.UpdateBatch();
    ADOCon.CommitTrans;
    BtnEnd.Enabled := false;
    BtnPrint.Enabled := true;
  except
    ADOCon.RollbackTrans;
    LCShowMessage('保存请购单过程中发生错误!请重试或保存后稍后再试!');
  end;
end;

procedure TFormCreateRequestOrder.Button1Click(Sender: TObject);
begin
  if (ADOQSlave.State=dsEdit) or (ADOQSlave.State=dsInsert) then
    ADOQSlave.FieldByName('BarCode').AsString :=
      ShowFieldSelectDlg(ADOCon.ConnectionString, 't_GoodsMaster','Name','BarCode');
end;

procedure TFormCreateRequestOrder.Button3Click(Sender: TObject);
begin
  if (ADOQMaster.State=dsEdit) or (ADOQMaster.State=dsInsert) then
    ADOQMaster.FieldByName('RequestOperatorId').AsString :=
      ShowFieldSelectDlg(ADOCon.ConnectionString, 't_Employee');
end;

procedure TFormCreateRequestOrder.ConvertQueryToRequestOrder(ADataSet: TDataSet);
var
  i,n: integer;
begin
  CreateRequestOrder;
  ADOQSlave.Open;
  n := ADataSet.RecordCount - 1;
  for i := 0 to n do
  begin
    ADOQSlave.Insert;
    ADOQSlave.FieldByName('MasterId').AsString := FMasterId;
    ADOQSlave.FieldByName('BarCode').AsString :=
      ADataSet.FieldByName('BarCode').AsString;
    ADOQSlave.FieldByName('Amount').AsInteger :=
      ADataSet.FieldByName('EOQ').AsInteger;
  end;
end;

function TFormCreateRequestOrder.IsBarCodeExist(ABarCode: string): Boolean;
begin
  ADOQInfo.Close;
  ADOQInfo.SQL.Clear;
  ADOQInfo.SQL.Add('select BarCode from t_GoodsMaster where Barcode=:BarCode');
  ADOQInfo.Parameters.ParamByName('BarCode').Value := ABarCode;
  ADOQInfo.Open;
  if ADOQInfo.RecordCount > 0 then
    result := true
  else
    result := false;
end;

procedure TFormCreateRequestOrder.BtnPrintClick(Sender: TObject);
var
  LQR: TRequestOrderQR;
begin
  LQR := TRequestOrderQR.Create(nil);
  LQR.PreviewModal;
  LQR.Free;
end;

end.

⌨️ 快捷键说明

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