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

📄 agentlqfrm.pas.svn-base

📁 这个是个简单的关于出票申请的处理
💻 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 + -