📄 sbp_psagacct_tielu.~pas
字号:
unit sbp_psagacct_tielu;
interface
uses
SysUtils, Classes, DB, DBTables;
procedure psints_tielu(an_ps ,an_yearno :integer;var an_lypsprin ,an_lypsints,an_lycypsints ,an_lycpprin ,an_lycpints ,an_lycycpints:double ;var an_months :integer;Db:TDatabase);
procedure psagacct_tielu(ai_psseno ,ai_year :integer;Db:TDatabase);
implementation
uses commlist;
procedure psagacct_tielu(ai_psseno ,ai_year :integer;Db:TDatabase);
var
ln_months :integer;
ln_cypsfd :double;
ln_cypsints :double;
ln_lypscyints :double;
ln_lypsfd :double;
ln_lypsints :double;
ln_cycpfd :double;
ln_cycpints :double;
ln_lycpcyints :double;
ln_lycpfd :double;
ln_lycpints :double;
ln_year :integer;
ln_stwg:double;
ls_wgnotes :widestring;
ls_ftnotes :widestring;
ls_num :integer;
Query,temp,tmp:TQuery;
begin
/////////////////////////////////////
//try
tmp:=Tquery.Create(nil);
tmp.DatabaseName :=db.DatabaseName ;
with tmp do
begin
close;
sql.Clear ;
sql.Add('select stwg from sbdu_pswgcase where psseno=:p1 and yearno=:p2');
end;
temp:=TQuery.Create(nil);
//Db.StartTransaction ;
with temp do
begin
databasename:=db.DatabaseName ;
sql.Add('INSERT INTO SBDA_PSAGACCT (PSSENO,YEARNO,LYCPPRIN,LYPSPRIN,LYCPINTS,LYPSINTS,CYREWG,');
sql.Add('MONTHS,CYMONTHS,LYMONTHS,LYREMONTHS,CYARCPFD,CYRELYCPFD,CYARPSFD,CYRELYPSFD,');
sql.Add('CYFTCPFD,CYRELYCPAC,SPLYCPFD,CYCPACMONS,CYPSARAC,CYRELYPSARAC,CYRELYPSAC,CYPSACMONS,');
sql.Add('CYCPINTS,CYPSINTS,ACCPINUP,ACPSWGINUP,ACCPINUPINTS,ACPSWGINUPINTS,WGMONUP,DBCPFD,DBPSFD,');
sql.Add('CYDATE,PFLAG,DBFD,TOTFD,TOTPSFD,LYCYCPINTS,LYCYPSINTS,PAYIDX,WGNOTES,FTNOTES)');
sql.Add('values(');
SQL.Add(':param1,:param2,:param3,:param4,:param5,:param6,:param7,:param8,:param9,:param10');
SQL.Add(',:param11,:param12,:param13,:param14,:param15,:param16,:param17,:param18,:param19,:param20');
//SQL.Add(':param11,:param12,:param13,:param14,:param15,:param16,:param17,:param18,:param19,:param20');
SQL.Add(',:param21,:param22,:param23,:param24,:param25,:param26,:param27,:param28,:param29,:param30');
SQL.Add(',:param31,:param32,:param33,:param34,:param35,:param36,:param37,:param38,:param39,:param40');
SQL.Add(',:param41,:param42');
sql.Add(')');
end;
Query:=TQuery.Create(nil);
with Query do
begin
DatabaseName:=Db.DatabaseName ;
sql.Add('select psseno,yearno,rewage,ttwage,months ,stwg from sbdu_pswgcase where psseno=:param1 and yearno>=:param2 and yearno>=1996 and yearno<=2001');
parambyname('param1').AsInteger :=ai_psseno;
parambyname('param2').AsInteger :=ai_year;
{cursor cur_pswgcase(al_psseno number,al_year number) is
select psseno,yearno,rewage,ttwage,months from sbdu_pswgcase
where psseno=al_psseno and yearno>=al_year and yearno>=1996 and yearno<=2001;}
prepare;
open;
while not eof do
begin
ln_months :=0;
ln_cypsfd :=0;
ln_cypsints :=0;
ln_lypscyints :=0;
ln_lypsfd :=0;
ln_lypsints :=0;
ln_cycpfd :=0;
ln_cycpints :=0;
ln_lycpcyints :=0;
ln_lycpfd :=0;
ln_lycpints :=0;
ln_year :=0;
ls_wgnotes :='';
ls_ftnotes :='';
ls_num:=0;
//-----------第一年向后靠
if Fieldbyname('yearno').AsInteger=1996 then
begin
ln_cypsfd :=trunc(Fieldbyname('ttwage').AsFloat*0.04*10)/10;
if Fieldbyname('months').AsInteger=12 then
begin
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.04*0.1098/12*78;
ls_wgnotes :=Fieldbyname('rewage').AsString+':1-12';
ls_ftnotes :=fillchar('★',12);
end else if Fieldbyname('months').AsInteger=1 then
begin
ln_cypsints :=trunc(Fieldbyname('rewage').AsFloat*0.04*0.1098/12*10)/10;
ls_wgnotes :=Fieldbyname('rewage').AsString+':12-12';
ls_ftnotes :=fillchar('-',11)+fillchar('★',1);
end else
begin
ls_num :=13-Fieldbyname('months').AsInteger;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.04*0.1098/12*(Fieldbyname('months').AsFloat*Fieldbyname('months').AsInteger+Fieldbyname('months').AsInteger)/2;
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(ls_num)+'-12';
ls_ftnotes :=fillchar('-',13-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
end ;
end ;
if Fieldbyname('yearno').AsInteger=1997 then
begin
psints_tielu(Fieldbyname('psseno').AsInteger,1997,ln_lypsfd,ln_lypsints,ln_lypscyints,ln_lycpfd,ln_lycpints,ln_lycpcyints,ln_months,db);
with tmp do
begin
close;
parambyname('p1').AsInteger :=ai_psseno;
parambyname('p2').AsInteger :=1996;
prepare;
open;
ln_stwg:=Fields[0].AsFloat ;
end;
if ln_months>0 then
begin
if Fieldbyname('months').AsInteger>=6 then
begin // Fieldbyname('rewage').AsFloat
ln_cypsfd :=trunc(ln_stwg*6*0.04*10)/10+trunc((Fieldbyname('stwg').AsFloat*(Fieldbyname('months').AsInteger-6))*0.05*10)/10;
// Fieldbyname('rewage').AsFloat
ln_cypsints :=ln_stwg*0.04*0.0747/12*57+Fieldbyname('stwg').AsFloat*0.05*0.0747/12*(21-(12-Fieldbyname('months').AsInteger)*(13-Fieldbyname('months').AsInteger)/2);
// Fieldbyname('rewage').AsString
ls_wgnotes :=formatfloat('0.00',(fieldbyname('stwg').asfloat+ln_stwg)/2)+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end else
begin // Fieldbyname('ttwage').AsFloat
ln_cypsfd :=trunc((Fieldbyname('months').AsInteger*ln_stwg)*0.04*10)/10;
// Fieldbyname('rewage').AsFloat
ln_cypsints :=ln_stwg*0.04*0.0747/12*(25*Fieldbyname('months').AsInteger-Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger)/2;
// Fieldbyname('rewage').AsString
ls_wgnotes :=formatfloat('0.00',ln_stwg)+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end ;
end else
begin
if Fieldbyname('months').AsInteger>=6 then
begin
{
ln_cypsfd :=trunc(Fieldbyname('rewage').AsFloat*6*0.05*10)/10+trunc((Fieldbyname('rewage').AsFloat*(Fieldbyname('months').AsInteger-6))*0.04*10)/10;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.05*0.0747/12*21+Fieldbyname('rewage').AsFloat*0.04*0.0747/12*(Fieldbyname('months').AsInteger*(Fieldbyname('months').AsInteger+1)/2-21);
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);}
ln_cypsfd :=trunc(Fieldbyname('stwg').AsFloat*6*0.05*10)/10+trunc((ln_stwg*(Fieldbyname('months').AsInteger-6))*0.04*10)/10;
ln_cypsints :=Fieldbyname('stwg').AsFloat*0.05*0.0747/12*21+lN_stwg*0.04*0.0747/12*(Fieldbyname('months').AsInteger*(Fieldbyname('months').AsInteger+1)/2-21);
ls_wgnotes :=formatfloat('0.00',(fieldbyname('stwg').asfloat+ln_stwg)/2)+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
end else
begin
{
ln_cypsfd :=trunc(Fieldbyname('ttwage').AsFloat*0.05*10)/10;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.05*0.0747/12*(Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger+Fieldbyname('months').AsInteger)/2;
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger); }
ln_cypsfd :=trunc(Fieldbyname('stwg').AsFloat*Fieldbyname('months').AsInteger*0.05*10)/10;
ln_cypsints :=Fieldbyname('stwg').AsFloat*0.05*0.0747/12*(Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger+Fieldbyname('months').AsInteger)/2;
ls_wgnotes :=Fieldbyname('stwg').AsString+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
end ;
end ;
end ;
//-----------因为累积缴费从98起算,置ln_months:=0
if Fieldbyname('yearno').AsInteger=1998 then
begin
psints_tielu(Fieldbyname('psseno').AsInteger,1998,ln_lypsfd,ln_lypsints,ln_lypscyints,ln_lycpfd,ln_lycpints,ln_lycpcyints,ln_months,db);
with tmp do
begin
close;
parambyname('p1').AsInteger :=ai_psseno;
parambyname('p2').AsInteger :=1997;
prepare;
open;
ln_stwg:=Fields[0].AsFloat ;
end;
if ln_months>0 then
begin
if Fieldbyname('months').AsInteger>=6 then
begin // Fieldbyname('rewage').AsFloat
ln_cypsfd :=trunc(ln_stwg*6*0.05*10)/10+trunc((Fieldbyname('stwg').AsFloat*(Fieldbyname('months').AsInteger-6))*0.05*10)/10;
ln_cycpfd :=ln_stwg*6*0.06+(Fieldbyname('rewage').AsFloat*(Fieldbyname('months').AsInteger-6))*0.06;
// Fieldbyname('rewage').AsFloat
ln_cypsints :=ln_stwg*0.05*0.06/12*57+Fieldbyname('rewage').AsFloat*0.05*0.06/12*(21-(12-Fieldbyname('months').AsInteger)*(13-Fieldbyname('months').AsInteger)/2);
ln_cycpints :=ln_stwg*0.06*0.06/12*57+Fieldbyname('rewage').AsFloat*0.06*0.06/12*(21-(12-Fieldbyname('months').AsInteger)*(13-Fieldbyname('months').AsInteger)/2);
// Fieldbyname('rewage').AsString
ls_wgnotes :=formatfloat('0.00',(fieldbyname('stwg').asfloat+ln_stwg)/2)+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end else
begin // Fieldbyname('ttwage').AsFloat
ln_cypsfd :=trunc((Fieldbyname('months').AsInteger*ln_stwg)*0.05*10)/10;
ln_cycpfd :=Fieldbyname('months').AsInteger*ln_stwg*0.06;
// Fieldbyname('rewage').AsFloat
ln_cypsints :=ln_stwg*0.05*0.06/12*(25*Fieldbyname('months').AsInteger-Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger)/2;
ln_cycpints :=ln_stwg*0.06*0.06/12*(25*Fieldbyname('months').AsInteger-Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger)/2;
// Fieldbyname('rewage').AsString
ls_wgnotes :=formatfloat('0.00',ln_stwg)+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end ;
end else
begin
if Fieldbyname('months').AsInteger>=6 then
begin
{
ln_cypsfd :=trunc(Fieldbyname('rewage').AsFloat*6*0.05*10)/10+trunc((Fieldbyname('rewage').AsFloat*(Fieldbyname('months').AsInteger-6))*0.05*10)/10;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.05*0.06/12*21+Fieldbyname('rewage').AsFloat*0.05*0.06/12*(Fieldbyname('months').AsInteger*(Fieldbyname('months').AsInteger+1)/2-21);
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);}
ln_cypsfd :=trunc(Fieldbyname('stwg').AsFloat*6*0.05*10)/10+trunc((ln_stwg*(Fieldbyname('months').AsInteger-6))*0.05*10)/10;
ln_cycpfd :=Fieldbyname('stwg').AsFloat*6*0.06+(ln_stwg*(Fieldbyname('months').AsInteger-6))*0.06;
ln_cypsints :=Fieldbyname('stwg').AsFloat*0.05*0.06/12*21+lN_stwg*0.05*0.06/12*(Fieldbyname('months').AsInteger*(Fieldbyname('months').AsInteger+1)/2-21);
ln_cycpints :=Fieldbyname('stwg').AsFloat*0.06*0.06/12*21+lN_stwg*0.06*0.06/12*(Fieldbyname('months').AsInteger*(Fieldbyname('months').AsInteger+1)/2-21);
ls_wgnotes :=formatfloat('0.00',(fieldbyname('stwg').asfloat+ln_stwg)/2)+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
end else
begin
{
ln_cypsfd :=trunc(Fieldbyname('ttwage').AsFloat*0.05*10)/10;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.05*0.06/12*(Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger+Fieldbyname('months').AsInteger)/2;
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -