📄 frmcreaterequestorder.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 + -