📄 payout.pas
字号:
unit Payout;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Mask, DBCtrls, ComCtrls, ExtCtrls, Grids,
DBGrids, Buttons, RpCon, RpConDS, RpBase, RpSystem, RpDefine, RpRave;
type
TForm_Payout = class(TForm)
ADOQ_Payout: TADOQuery;
ADOQ_Payoutpayout_id: TAutoIncField;
ADOQ_Payoutrec_date: TDateTimeField;
ADOQ_Payouttmp_id: TIntegerField;
ADOQ_Payoutflag: TStringField;
ADOQ_Operator: TADOQuery;
DS_Payout: TDataSource;
ADOQ_Operatortmp_id: TAutoIncField;
ADOQ_Operatoroperid: TStringField;
ADOQ_Operatoropername: TStringField;
ADOQ_Operatorpassword: TStringField;
ADOQ_Operatorteam_id: TIntegerField;
ADOQ_Payoutoperid: TStringField;
ADOQ_Payoutopername: TStringField;
DBGrid1: TDBGrid;
Panel1: TPanel;
Label2: TLabel;
DBE_event: TDBEdit;
Label3: TLabel;
DBE_money: TDBEdit;
Panel2: TPanel;
Bevel1: TBevel;
ADOQ_Payoutmoney: TBCDField;
Panel3: TPanel;
Label1: TLabel;
Label14: TLabel;
Bevel2: TBevel;
Label24: TLabel;
Label28: TLabel;
Btnserch: TBitBtn;
EndBtn: TBitBtn;
GroupBox6: TGroupBox;
Label31: TLabel;
Label32: TLabel;
Sdate: TDateTimePicker;
Edate: TDateTimePicker;
Edit_event: TEdit;
ComBox_opeid: TComboBox;
ADOQtmp: TADOQuery;
AddBtn: TBitBtn;
EdtBtn: TBitBtn;
DelBtn: TBitBtn;
SaveBtn: TBitBtn;
CancelBtn: TBitBtn;
LocateBtn: TBitBtn;
PrtBtn: TBitBtn;
ExtBtn: TBitBtn;
Bevel3: TBevel;
Bevel4: TBevel;
Bevel5: TBevel;
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
Edit1: TEdit;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
Edit2: TEdit;
ADOQ_Payouttjflag: TBooleanField;
ADOQ_Payoutevent: TStringField;
RvProject1: TRvProject;
RvSystem1: TRvSystem;
Rv_Etp_Payout: TRvDataSetConnection;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure AddBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure EdtBtnClick(Sender: TObject);
procedure DelBtnClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure DS_PayoutStateChange(Sender: TObject);
procedure ADOQ_PayoutAfterInsert(DataSet: TDataSet);
procedure LocateBtnClick(Sender: TObject);
procedure EndBtnClick(Sender: TObject);
procedure BtnserchClick(Sender: TObject);
procedure PrtBtnClick(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure ADOQ_PayoutAfterPost(DataSet: TDataSet);
private
{ Private declarations }
s_date, e_date:string;
procedure refreshdb;
public
{ Public declarations }
end;
var
Form_Payout: TForm_Payout;
implementation
uses sharevar, sharefun, data;
{$R *.dfm}
procedure TForm_Payout.refreshdb;
begin
with ADOQ_Operator do begin close; open; end;
with ADOQ_Payout do
begin
sql.Strings[1]:='';
sql.Strings[2]:='order by rec_date';
try
execsql; open;
except
msgErr(handle,'刷新数据库失败!(Payout_Q)');
end;
end;
end;
procedure TForm_Payout.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if ADOQ_Operator.Active then ADOQ_Operator.Close;
if ADOQ_Payout.Active then ADOQ_Payout.Close;
action:=cafree;
end;
procedure TForm_Payout.AddBtnClick(Sender: TObject);
begin
if not ADOQ_Payout.Active then exit;
if ADOQ_Payout.State in [dsinsert, dsedit] then exit;
ADOQ_Payout.Append;
end;
procedure TForm_Payout.EdtBtnClick(Sender: TObject);
begin
if not ADOQ_Payout.Active then exit;
if ADOQ_Payout.State in [dsinsert, dsedit] then exit;
if ADOQ_Payout.RecordCount<1 then exit;
if ADOQ_Payout.FieldValues['Flag']='T' then
begin
msgok(handle,'该条记录为系统自动生成致不可进行编辑!(以确保数据的安全性)');
exit;
end;
if ADOQ_Payout.FieldValues['tjflag'] then
begin
MsgErr(handle,'该条记录已统计入总账表,致不可进行编辑!(以确保数据的安全性)');
exit;
end;
ADOQ_Payout.edit;
end;
procedure TForm_Payout.DelBtnClick(Sender: TObject);
var
tmp_event: string;
begin
if not ADOQ_Payout.Active then exit;
with ADOQ_Payout do
begin
if RecordCount<1 then exit;
if State in [dsinsert, dsedit] then exit;
if FieldValues['Flag']='T' then
begin
msgok(handle,'该条记录为系统自动生成致不可删除!(以确保数据的安全性)');
exit;
end;
if FieldValues['tjflag'] then
begin
MsgErr(handle,'该条记录已统计入总账表,致不可进行编辑!(以确保数据的安全性)');
exit;
end;
tmp_event:=fieldvalues['event'];
if MsgQst(handle,'确定删除事由: [ '+tmp_event+' ] 相关的企业的支出记录吗?') =IDNO then exit;
try
delete;
except
MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
exit;
end;
end;
end;
procedure TForm_Payout.SaveBtnClick(Sender: TObject);
var
tmp_id:integer;
info: string;
begin
if not ADOQ_Payout.Active then exit;
if not (ADOQ_Payout.State in [dsinsert, dsedit]) then exit;
if dbe_event.Text='' then
begin
msgok(handle,'消费事由不能为空!');
dbe_event.SetFocus;
exit;
end;
if ADOQ_Payout.fieldvalues['money']<=0 then
begin
msgok(handle,'请输入正确的消费金额!');
dbe_money.SetFocus;
exit;
end;
if not ToMoney(floattostr(ADOQ_Payout.fieldvalues['money']),info) then
begin
MsgErr(handle,'金额格式不对[0.00]!');
dbe_money.SetFocus; abort; exit;
end;
if adoq_payout.State in [dsedit] then
begin
if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
begin
MsgOk(handle,'操作失败,请重试!');
exit;
end;
adoq_payout.FieldValues['tmp_id']:=tmp_id;
end;
if adoq_payout.State in [dsinsert] then
begin
if not get_oper_tmpid(curAdmin.user_id , tmp_id) then
begin
MsgOk(handle,'操作失败,请重试!');
exit;
end;
adoq_payout.FieldValues['tmp_id']:=tmp_id;
adoq_payout.FieldValues['flag']:='F';
end;
try
adoq_payout.Post;
except
msgErr(handle, '数据库操作失败!(Payout_Q)');
exit;
end;
end;
procedure TForm_Payout.CancelBtnClick(Sender: TObject);
begin
if not ADOQ_Payout.Active then exit;
if not (ADOQ_Payout.State in [dsinsert, dsedit]) then exit;
ADOQ_Payout.Cancel;
end;
procedure TForm_Payout.DS_PayoutStateChange(Sender: TObject);
begin
if (Sender as Tdatasource).DataSet.State in [dsinsert,dsedit] then
begin
panel1.Height:=135;
DBE_event.Enabled:=true;
DBE_Money.Enabled:=true;
AddBtn.Enabled:=false;
EdtBtn.Enabled:=false;
DelBtn.Enabled:=false;
DBGrid1.Enabled:=FALSE;
Panel3.Visible:=false;
Panel3.Enabled:=true;
LocateBtn.Enabled:=false;
DBE_event.SetFocus;
end;
if (Sender as Tdatasource).DataSet.State in [dsbrowse] then
begin
Panel1.Height:=43;
DBE_event.Enabled:=false;
DBE_Money.Enabled:=false;
AddBtn.Enabled:=true;
EdtBtn.Enabled:=true;
DelBtn.Enabled:=true;
DBGrid1.Enabled:=TRUE;
LocateBtn.Enabled:=true;
end;
end;
procedure TForm_Payout.ADOQ_PayoutAfterInsert(DataSet: TDataSet);
begin
DataSet.FieldValues['money']:=0.00;
end;
procedure TForm_Payout.LocateBtnClick(Sender: TObject);
var
tmpdatetime:Tdatetime;
begin
if panel3.Visible then exit;
with ADOQtmp do
begin
close; sql.Clear;
sql.Add('select opername from operator');
open; first;
ComBox_opeid.Clear;
ComBox_opeid.Items.Add(' ');
while not eof do
begin
ComBox_opeid.items.Add(fieldvalues['opername']);
next;
end;
close;
end;
if panel1.Height=135 then panel1.Height:=43;
if not panel3.Visible then
begin
panel3.Enabled:=true;
panel3.Visible:=true;
//得到下单日期
GetHostDateTime(datamod.ADOCon,tmpdatetime);
edate.DateTime:=tmpdatetime;
Edit_event.Clear; ComBox_opeid.ItemIndex:=0;
Edit1.Clear; Edit2.Clear;
ExtBtn.Cancel:=false;
EndBtn.cancel:=true;
end;
end;
procedure TForm_Payout.EndBtnClick(Sender: TObject);
begin
Panel3.Enabled:=false;
Panel3.Visible:=false;
ExtBtn.Cancel:=true;
EndBtn.cancel:=false;
end;
//查找对应的支出记录
procedure TForm_Payout.BtnserchClick(Sender: TObject);
var
tmpnum, tmpevent, tmp_operid, strwhere: string;
tmp_id:integer;
begin
if not ADOQ_Operator.Active then ADOQ_Operator.Open;
tmpevent:=trim(Edit_event.text);
tmp_operid:=trim(ComBox_opeid.Text);
tmpnum:=Getquery_char(ComboBox1.Text,trim(Edit1.Text),trim(ComboBox2.Text),ComboBox3.Text,trim(Edit2.Text),'money');
//得到查询的条件语句
begin
strwhere:='where (rec_date between :TmpStart and :TmpEnd )';
if tmp_operid<>'' then
begin
ADOQ_Operator.Locate('opername',tmp_operid,[]);
tmp_id:=adoq_operator.FieldValues['tmp_id'];
strwhere:=strwhere+' and (tmp_id=:tmp_id)';
end;
if tmpevent<>'' then
strwhere:=strwhere+' and (event like '+''''+'%'+tmp_operid+'%'+''''+')';
strwhere:=strwhere + tmpnum;
end;
with ADOQ_Payout do
begin
try
close;
sql.Strings[1]:=strwhere;
sql.Strings[2]:='order by rec_date,tmp_id,flag';
if tmp_operid<>'' then parameters.ParamValues['tmp_id']:=tmp_id;
parameters.ParamValues['TmpStart']:=strtodatetime(formatdatetime('yyyy-mm-dd',sdate.Date)+' 00:00:00');
parameters.ParamValues['TmpEnd']:=strtodatetime(formatdatetime('yyyy-mm-dd',edate.Date)+' 23:59:59');
open;
except
MsgErr(handle,'数据库检索失败(Fin_product_CK_Q)!');
refreshdb;
exit;
end;
PrtBtn.Enabled:=recordcount>0;
if recordcount>0 then
begin
s_date:=formatdatetime('yyyy-mm-dd',sdate.Date);
e_date:=formatdatetime('yyyy-mm-dd',edate.Date);
end;
end;
Panel3.Enabled:=false;
Panel3.Visible:=false;
ExtBtn.Cancel:=true;
EndBtn.cancel:=false;
end;
procedure TForm_Payout.PrtBtnClick(Sender: TObject);
begin
if not ADOQ_Payout.Active then exit;
if ADOQ_Payout.RecordCount=0 then exit;
InitPage(RvProject1,RvSystem1,apppath+'\'+ReportName,apppath+'\'+ReportNdrName,0);
SelectPage(RvProject1,'Report1',6);
//传递参数
AddParameter(RvProject1,'sdate',s_date);
AddParameter(RvProject1,'edate',e_date);
AddParameter(RvProject1,'UserName',curAdmin.user_name);
AddParameter(RvProject1,'companyname',sysconfig.COMPANYANME);
//显示页
PageShow(RvProject1);
end;
procedure TForm_Payout.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9','.',#13,#8,#46]) then abort;
end;
procedure TForm_Payout.ADOQ_PayoutAfterPost(DataSet: TDataSet);
var
payout_id:integer;
begin
with dataset do
begin
payout_id:=fieldvalues['payout_id'];
close; open;
end;
ADOQ_Operator.close; ADOQ_Operator.Open;
dataset.Locate('payout_id',payout_id,[]);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -