📄 agentlqfrm.pas.svn-base
字号:
unit AgentLQFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BaseFrm, StdCtrls, ExtCtrls, ComCtrls;
type
TAgentLQTicket = record
AgentId: Integer;
StartPrintCode: string;
TicketCount: Integer;
LQDate: TDateTime;
end;
TFormAgentLQ = class(TFormBase)
pnlTop: TPanel;
Label1: TLabel;
EdtIdEntifyCode: TEdit;
PnlBottom: TPanel;
PnlClient: TPanel;
GroupBox1: TGroupBox;
btnFind: TButton;
Label9: TLabel;
EdtStarTicketNum: TEdit;
Label7: TLabel;
EdtDisTicket: TEdit;
BtnConfirmation: TButton;
Panel1: TPanel;
Label8: TLabel;
mmResult: TMemo;
Label4: TLabel;
EdtApplyTicket: TEdit;
EdtAgentId: TEdit;
Label2: TLabel;
EdtApplyDate: TEdit;
Label5: TLabel;
Label6: TLabel;
EdtAgentName: TEdit;
Label3: TLabel;
EdtSurplusTicket: TEdit;
cbAgree: TCheckBox;
GroupBox2: TGroupBox;
lvHistory: TListView;
procedure btnFindClick(Sender: TObject);
procedure BtnConfirmationClick(Sender: TObject);
procedure EdtDisTicketKeyPress(Sender: TObject; var Key: Char);
procedure EdtIdEntifyCodeKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
FExistIndentifyCode: Boolean;
function GetPrintCode: string;
procedure LoadAgentLQTicketInfo(AAgentId: Integer);
procedure InsertAgentLQTicketHistory(AAgentLQTicket: TAgentLQTicket; AIsHead: Boolean = False);
function GetExistInvalidTicketCount: Integer;
function GetCanLQTicketCount(AAgentId: integer): Integer;
public
{ Public declarations }
procedure InitComponentEditInfo;
end;
var
FormAgentLQ: TFormAgentLQ;
implementation
uses
systemPH, SystemDM, CommonFuncLib;
{$R *.dfm}
procedure TFormAgentLQ.btnFindClick(Sender: TObject);
var
sSqlStr: string;
nAgentId: Integer;
begin
inherited;
try
sSqlStr := 'SELECT IDENTIFYCODE, ISUSED FROM TICKET_APPLY WHERE IDENTIFYCODE = ' + #39 + EdtIdEntifyCode.Text + #39;
if DMSystem.SQL_Querys(DMSystem.Qry_Temp, sSqlStr) then
begin
if DMSystem.Qry_Temp.FieldByName('ISUSED').AsBoolean then
begin
ShowMessage('该识别码已经被使用!');
Exit;
end;
end;
sSqlStr := 'SELECT A.AGENTID, A.TICKETCOUNT, A.APPLYDATE, A.IDENTIFYCODE, A.ISDOAPPLY, A.ISAGREE, A.RESULTS, B.ID, B.USERNAME, B.TICKET_COUNT ' +
'FROM TICKET_APPLY A INNER JOIN SITE_USER B ON A.AGENTID = B.ID WHERE A.IDENTIFYCODE = ' + #39 + Trim(EdtIdEntifyCode.Text) + #39 + 'AND A.ISDOAPPLY = 1';
if DMSystem.SQL_Querys(DMSystem.Qry_Temp, sSqlStr) then
with DMSystem.Qry_Temp do
begin
nAgentId := FieldByName('AGENTID').AsInteger;
EdtAgentId.Text := IntToStr(nAgentId);
EdtAgentName.Text := FieldByName('USERNAME').AsString;
EdtApplyTicket.Text := FieldByName('TICKETCOUNT').AsString;
EdtSurplusTicket.Text := IntToStr(FieldByName('TICKET_COUNT').AsInteger - GetCanLQTicketCount(nAgentId));
EdtApplyDate.Text := FieldByName('APPLYDATE').AsString;
cbAgree.Checked := FieldByName('ISAGREE').AsBoolean;
mmResult.Text := FieldByName('RESULTS').AsString;
FExistIndentifyCode := True;
BtnConfirmation.Enabled := True;
EdtStarTicketNum.Text := GetPrintCode;
lvHistory.Clear;
LoadAgentLQTicketInfo(nAgentId);
end
else begin
ShowMessage('该识别码不存在或者该申请还没有被答复。');
Exit;
end;
except
end;
end;
procedure TFormAgentLQ.BtnConfirmationClick(Sender: TObject);
var
sSqlStr: string;
nDisTicket, I: Integer;
oAgentLQTicket: TAgentLQTicket;
StartTicketNo: Double;
bNoTicket: Boolean;
begin
inherited;
//更新Agent信息表;
// if StrToIntDef(EdtApplyTicket.Text, 0) > StrToIntDef(EdtSurplusTicket.Text, 0) then
// begin
// ShowMessage('申请的票数不能大于可领取的最大票数!');
// Exit;
// end;
bNoTicket := False;
if StrToIntDef(EdtDisTicket.Text, 0) = 0 then
begin
ShowMessage('分配的票数不能为零!');
Exit;
end;
if (StrToIntDef(EdtSurplusTicket.Text, 0) < StrToIntDef(EdtDisTicket.Text, 0)) then
begin
ShowMessage('分配的票数不能大于可领取的剩余票数!');
Exit;
end;
if (GetExistInvalidTicketCount - GLOBALYLTICKETCOUNT) <= StrToIntDef(EdtDisTicket.Text, 0) then
begin
ShowMessage('票号不足,不能进行分配!');
Exit;
end;
try
nDisTicket := StrToIntDef(EdtDisTicket.Text, 0);
// sSqlStr := 'UPDATE SITE_USER SET TICKET_COUNT = TICKET_COUNT + ' + IntToStr(nDisTicket) +
// 'WHERE ID = ' + Trim(EdtAgentId.Text);
// if not DMSystem.SQL_Exec(DMSystem.Qry_Temp,sSqlStr) then
// DMSystem.Qry_Temp.SQL.SaveToFile('LQ_SQL.TXT');
StartTicketNo := StrToFloatDef(Trim(EdtStarTicketNum.Text), 0);
for I := 0 to nDisTicket do
try
sSqlStr := 'UPDATE TICKET_NUMBER SET ISUSED = 1 WHERE PRINTCODE = ' + #39 + FloatToStr(StartTicketNo) + #39;
if DMSystem.SQL_Exec(DMSystem.Qry_Temp, sSqlStr) then
StartTicketNo := 1 + StartTicketNo
else begin //跳号
sSqlStr := 'SELECT TOP 1 PRINTCODE FROM TICKET_NUMBER WHERE ISUSED = 0 ORDER BY PRINTCODE';
if DMSystem.SQL_Querys(DMSystem.Qry_Temp, sSqlStr) then
begin
StartTicketNo := DMSystem.Qry_Temp.FieldByName('PRINTCODE').AsFloat;
sSqlStr := 'UPDATE TICKET_NUMBER SET ISUSED = 1 WHERE PRINTCODE = ' + #39 + FloatToStr(StartTicketNo) + #39;
DMSystem.SQL_Exec(DMSystem.Qry_Temp, sSqlStr);
StartTicketNo := 1 + StartTicketNo;
end else begin
bNoTicket := True;
Exit;
end;
end;
except
DMSystem.Qry_Temp.SQL.SaveToFile('UPDATE_TICKET_NUMBER_SQL.TXT');
end;
sSqlStr := 'INSERT INTO TICKET_NUMBER_HISTORY(AGENTID, STARTPRINTCODE, TICKETCOUNT, OPERATEDATE)' +
'VALUES(' + Trim(EdtAgentId.Text) + ','
+ #39 + Trim(EdtStarTicketNum.Text) + #39 + ','
+ Trim(EdtDisTicket.Text) + ','
+ #39 + DateTimeToStr(Now) + #39 + ')';
if not DMSystem.SQL_Exec(DMSystem.Qry_Temp, sSqlStr) then
DMSystem.Qry_Temp.SQL.SaveToFile('TICKET_NUMBER_HISTORY_SQL.TXT');
sSqlStr := 'UPDATE TICKET_APPLY SET ISUSED = 1 WHERE IDENTIFYCODE = ' + #39 + EdtIdEntifyCode.Text + #39;
DMSystem.SQL_Exec(DMSystem.Qry_Temp, sSqlStr);
finally
if not bNoTicket then
begin
ShowMessage('票号分配完毕!');
BtnConfirmation.Enabled := False;
oAgentLQTicket.StartPrintCode := Trim(EdtStarTicketNum.Text);
oAgentLQTicket.TicketCount := StrToIntDef(Trim(EdtDisTicket.Text), 0);
oAgentLQTicket.LQDate := Now;
InsertAgentLQTicketHistory(oAgentLQTicket);
end else
begin
BtnConfirmation.Enabled := False;
ShowMessage('分配票号时,产生跳号');
end;
end;
end;
procedure TFormAgentLQ.EdtDisTicketKeyPress(Sender: TObject;
var Key: Char);
begin
inherited;
if not (Key in ['0'..'9', #8]) then Key := #0;
end;
procedure TFormAgentLQ.InitComponentEditInfo;
begin
EdtIdEntifyCode.Text := '';
EdtAgentId.Text := '';
EdtAgentName.Text := '';
EdtSurplusTicket.Text := '0';
EdtApplyTicket.Text := '0';
EdtApplyDate.Text := '';
cbAgree.Checked := False;
EdtDisTicket.Text := '0';
mmResult.Text := '';
end;
function TFormAgentLQ.GetPrintCode: string;
var
sSqlStr: string;
begin
Result := '';
sSqlStr := 'SELECT TOP 1 PRINTCODE FROM TICKET_NUMBER WHERE ISUSED = 0';
if DMSystem.SQL_Querys(DMSystem.Qry_Temp, sSqlStr)then
Result := DMSystem.Qry_Temp.FieldByName('PRINTCODE').AsString;
end;
procedure TFormAgentLQ.LoadAgentLQTicketInfo(AAgentId: Integer);
var
I: Integer;
sSqlStr: string;
oAgentLQTIcket: TAgentLQTicket;
begin
sSqlStr := 'SELECT * FROM TICKET_NUMBER_HISTORY WHERE AGENTID = ' + IntToStr(AAgentId) +
' ORDER BY OPERATEDATE DESC';
if DMSystem.SQL_Querys(DMSystem.Qry_Temp, sSqlStr) then
with DMSystem.Qry_Temp do
try
First;
SendMessage(Application.MainForm.Handle, WM_STATUS_MSG, DEF_START_UPDATE, RecordCount);
for I := 1 to RecordCount do
begin
oAgentLQTIcket.AgentId := AAgentId;
oAgentLQTIcket.StartPrintCode := Trim(FieldByName('StartPrintCode').AsString);
oAgentLQTIcket.TicketCount := FieldByName('TicketCount').AsInteger;
oAgentLQTIcket.LQDate := FieldByName('OPERATEDATE').AsDateTime;
InsertAgentLQTicketHistory(oAgentLQTIcket);
SendMessage(Application.MainForm.Handle, WM_STATUS_MSG, DEF_PLAYING_UPDATE, I);
Next;
Application.ProcessMessages;
end;
finally
SendMessage(Application.MainForm.Handle, WM_STATUS_MSG, DEF_FINISHED_UPDATE, 0);
end
else
lvHistory.Clear;
end;
procedure TFormAgentLQ.InsertAgentLQTicketHistory(
AAgentLQTicket: TAgentLQTicket; AIsHead: Boolean = False);
var
oListItem: TListItem;
begin
oListItem := lvHistory.Items.Add;
oListItem.Caption := IntToStr(lvHistory.Items.Count);
oListItem.SubItems.Add(AAgentLQTicket.StartPrintCode);
oListItem.SubItems.Add(IntToStr(AAgentLQTicket.TicketCount));
oListItem.SubItems.Add(DateTimeToStr(AAgentLQTicket.LQDate));
end;
function TFormAgentLQ.GetExistInvalidTicketCount: Integer;
var
sSqlStr: string;
begin
Result := 0;
sSqlStr := 'SELECT COUNT(ID) AS TOTALTICKETCOUNT FROM TICKET_NUMBER WHERE ISUSED = 0';
if DMSystem.SQL_Querys(DMSystem.Qry_Temp, sSqlStr) then
Result := DMSystem.Qry_Temp.FieldByName('TOTALTICKETCOUNT').AsInteger
end;
function TFormAgentLQ.GetCanLQTicketCount(AAgentId: integer): Integer;
var
sSqlStr: string;
begin
Result := 0;
sSqlStr := 'SELECT SUM(NUM - USED) AS KUSEDTICKETCOUNT FROM PRINTCODE WHERE AGENT_ID = ' + IntToStr(AAgentId);
if DMSystem.SQL_Querys(DMSystem.Qry_Info, sSqlStr) then
Result := DMSystem.Qry_Info.FieldByName('KUSEDTICKETCOUNT').AsInteger;
end;
procedure TFormAgentLQ.EdtIdEntifyCodeKeyPress(Sender: TObject;
var Key: Char);
begin
inherited;
if Key = #13 then
btnFind.OnClick(nil);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -