?? sbp_psagacct_dianli.~pas
字號:
//電力行業計息方法
unit sbp_psagacct_dianli;
interface
uses
SysUtils, Classes, DB, DBTables;
procedure psagacct_dianli(ai_psseno ,ai_year :integer;Db:Tdatabase);
procedure psints_dianli(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);
implementation
uses commlist;
//計息過程
procedure psagacct_dianli(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;
ls_wgnotes :widestring;
ls_ftnotes :widestring;
Query,temp:TQuery;
begin
//////////////////////////////////////////////
//try
temp:=TQuery.Create(nil);
//db.StartTransaction ;
temp.DatabaseName :=db.DatabaseName ;
temp.SQL.Add('INSERT INTO SBDA_PSAGACCT (PSSENO,YEARNO,LYCPPRIN,LYPSPRIN,LYCPINTS,LYPSINTS,CYREWG,');
temp.SQL.Add('MONTHS,CYMONTHS,LYMONTHS,LYREMONTHS,CYARCPFD,CYRELYCPFD,CYARPSFD,CYRELYPSFD,CYFTCPFD,CYRELYCPAC,SPLYCPFD,CYCPACMONS,CYPSARAC,CYRELYPSARAC,CYRELYPSAC,CYPSACMONS,');
temp.SQL.Add('CYCPINTS,CYPSINTS,ACCPINUP,ACPSWGINUP,ACCPINUPINTS,ACPSWGINUPINTS,WGMONUP,DBCPFD,DBPSFD, CYDATE,PFLAG,DBFD,TOTFD,TOTPSFD,LYCYCPINTS,LYCYPSINTS,PAYIDX,WGNOTES,FTNOTES)');
temp.SQL.Add('values(');
temp.SQL.Add(':param1,:param2,:param3,:param4,:param5,:param6,:param7,:param8,:param9,:param10');
temp.SQL.Add(',:param11,:param12,:param13,:param14,:param15,:param16,:param17,:param18,:param19,:param20');
temp.SQL.Add(',:param21,:param22,:param23,:param24,:param25,:param26,:param27,:param28,:param29,:param30');
temp.SQL.Add(',:param31,:param32,:param33,:param34,:param35,:param36,:param37,:param38,:param39,:param40');
temp.SQL.Add(',:param41,:param42');
temp.sql.add(')');
Query:=TQuery.Create(nil);
with Query do
begin
DatabaseName :=Db.DatabaseName ;
SQL.Add('select psseno,yearno,rewage,ttwage,months from sbdu_pswgcase where psseno=:param1 and yearno>=:param2 and yearno>=1993 and yearno<=2001');
{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>=1993 and yearno<=2001; }
ParamByName('param1').AsInteger :=ai_psseno;
ParamByName('param2').AsInteger :=ai_year;
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 :='';
if Fieldbyname('yearno').AsInteger=1993 then
begin
ln_cypsfd :=Fieldbyname('ttwage').AsFloat*0.03;
ln_cycpfd :=Fieldbyname('ttwage').AsFloat *0.09;
ln_cypsints :=Fieldbyname('ttwage').AsFloat*0.03*0.06*Fieldbyname('months').AsInteger/12;
ln_cycpints :=Fieldbyname('ttwage').AsFloat*0.09*0.06*Fieldbyname('months').AsInteger/12;
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+Fieldbyname('months').AsString+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
end ;
if Fieldbyname('yearno').AsInteger=1994 then
begin
ln_cypsfd :=Fieldbyname('ttwage').AsFloat*0.03;
ln_cycpfd :=Fieldbyname('ttwage').AsFloat*0.09;
ln_cypsints :=Fieldbyname('ttwage').AsFloat*0.03*0.08*Fieldbyname('months').AsInteger/12;
ln_cycpints :=Fieldbyname('ttwage').AsFloat*0.09*0.08*Fieldbyname('months').AsInteger /12;
psints_dianli(Fieldbyname('psseno').AsInteger,1994,ln_lypsfd,ln_lypsints,ln_lypscyints,ln_lycpfd,ln_lycpints,ln_lycpcyints,ln_months,db);
if ln_months>0 then
begin
ls_wgnotes :=Fieldbyname('rewage').asstring+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end else
begin
ls_wgnotes :=Fieldbyname('rewage').asstring+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
end ;
end ;
if Fieldbyname('yearno').asinteger=1995 then
begin
ln_cypsfd :=Fieldbyname('ttwage').asfloat*0.03;
ln_cycpfd :=Fieldbyname('ttwage').asfloat*0.09;
ln_cypsints :=Fieldbyname('ttwage').asfloat*0.03*0.1*Fieldbyname('months').asinteger/12;
ln_cycpints :=Fieldbyname('ttwage').asfloat*0.09*0.1*Fieldbyname('months').asinteger/12;
psints_dianli(Fieldbyname('psseno').asinteger,1995,ln_lypsfd,ln_lypsints,ln_lypscyints,ln_lycpfd,ln_lycpints,ln_lycpcyints,ln_months,db);
if ln_months>0 then
begin
ls_wgnotes :=Fieldbyname('rewage').asstring+':1-'+Fieldbyname('months').asstring;
ls_ftnotes :=fillchar('★',Fieldbyname('months').asinteger)+fillchar('-',12-Fieldbyname('months').asinteger);
end else
begin
ls_wgnotes :=Fieldbyname('rewage').asstring+':'+inttostr(13-Fieldbyname('months').asinteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').asinteger)+fillchar('★',Fieldbyname('months').asinteger);
end ;
end ;
if Fieldbyname('yearno').AsInteger=1996 then
begin
ln_cypsfd :=Fieldbyname('ttwage').AsFloat*0.03;
ln_cycpfd :=Fieldbyname('ttwage').AsFloat*0.09;
ln_cypsints :=Fieldbyname('ttwage').AsFloat*0.03*0.06*Fieldbyname('months').AsInteger/12;
ln_cycpints :=Fieldbyname('ttwage').AsFloat*0.09*0.06*Fieldbyname('months').AsInteger/12;
psints_dianli(Fieldbyname('psseno').AsInteger,1996,ln_lypsfd,ln_lypsints,ln_lypscyints,ln_lycpfd,ln_lycpints,ln_lycpcyints,ln_months,db);
if ln_months>0 then
begin
ls_wgnotes :=Fieldbyname('rewage').AsString+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end else
begin
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
end ;
end ;
if Fieldbyname('yearno').AsInteger=1997 then
begin
ln_cypsfd :=Fieldbyname('ttwage').AsFloat*0.04;
ln_cycpfd :=Fieldbyname('ttwage').AsFloat*0.08;
ln_cypsints :=Fieldbyname('ttwage').AsFloat*0.04*0.06*Fieldbyname('months').AsInteger/12;
ln_cycpints :=Fieldbyname('ttwage').AsInteger*0.08*0.06*Fieldbyname('months').AsInteger/12;
psints_dianli(Fieldbyname('psseno').AsInteger,1997,ln_lypsfd,ln_lypsints,ln_lypscyints,ln_lycpfd,ln_lycpints,ln_lycpcyints,ln_months,db);
if ln_months>0 then
begin
ls_wgnotes :=Fieldbyname('rewage').AsString+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end else
begin
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger )+fillchar('★',Fieldbyname('months').AsInteger);
end;
end ;
//-----------因為累積繳費從98起算,置ln_months:=0
if Fieldbyname('yearno').AsInteger=1998 then
begin
ln_cypsfd :=Fieldbyname('ttwage').AsFloat*0.04;
ln_cycpfd :=Fieldbyname('ttwage').AsFloat*0.07;
ln_cypsints :=Fieldbyname('ttwage').AsFloat*0.04*0.05*Fieldbyname('months').AsInteger/12;
ln_cycpints :=Fieldbyname('ttwage').AsFloat*0.07*0.05*Fieldbyname('months').AsInteger/12;
psints_dianli(Fieldbyname('psseno').AsInteger,1998,ln_lypsfd,ln_lypsints,ln_lypscyints,ln_lycpfd,ln_lycpints,ln_lycpcyints,ln_months,db);
if ln_months>0 then
begin
ls_wgnotes :=Fieldbyname('rewage').AsString+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end else
begin
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(13-Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('-',12-Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
end ;
ln_months :=0;
end ;
if Fieldbyname('yearno').AsInteger=1999 then
begin
ln_cypsfd :=Fieldbyname('ttwage').AsFloat*0.04;
ln_cycpfd :=Fieldbyname('ttwage').AsFloat*0.07;
psints_dianli(Fieldbyname('psseno').AsInteger,1999,ln_lypsfd,ln_lypsints,ln_lypscyints,ln_lycpfd,ln_lycpints,ln_lycpcyints,ln_months,db);
if ln_months>0 then
begin
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.04*0.05/12*(25*Fieldbyname('months').AsFloat-Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger)/2;
ln_cycpints :=Fieldbyname('rewage').AsFloat*0.07*0.05/12*(25*Fieldbyname('months').AsFloat-Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger)/2;
ls_wgnotes :=Fieldbyname('rewage').AsString+':1-'+Fieldbyname('months').AsString;
ls_ftnotes :=fillchar('★',Fieldbyname('months').AsInteger)+fillchar('-',12-Fieldbyname('months').AsInteger);
end else
begin
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.04*0.05/12*(Fieldbyname('months').AsInteger+Fieldbyname('months').AsInteger*Fieldbyname('months').AsInteger)/2;
ln_cycpints :=Fieldbyname('rewage').AsFloat*0.07*0.05/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);
end ;
end ;
if Fieldbyname('yearno').AsInteger=2000 then
begin
ln_cypsfd :=Fieldbyname('ttwage').AsFloat*0.05;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -