📄 sbp_psagacct_tielu_tl.pas
字号:
unit sbp_psagacct_tielu_tl;
interface
uses
SysUtils, Classes, DB, DBTables,Math;
procedure tielu_tl(ai_psseno ,ai_year :integer;Db:TDatabase);
implementation
uses commlist, sbp_psagacct_tielu;
procedure tielu_tl(ai_psseno ,ai_year :integer;Db:TDatabase);
var
// --99年开始为自然年度
ln_mon :integer;
ln_re :double;
ln_tt :double;
ln_yjs :integer;
ln_yjs1 :integer;
ln_months :integer;
ln_months1 :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;
ls_num :integer;
Query,temp,Qry:TQuery;
temp_i:integer;
begin
/////////////////////////////////////////////////////
//try
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;
Qry:=TQuery.Create(nil);
Qry.DatabaseName :=db.DatabaseName ;
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>=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
ln_mon :=0;
ln_re :=0;
ln_tt :=0;
ln_yjs :=0;
ln_yjs1 :=0;
ln_months :=0;
ln_months1 :=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=1996 then
begin
Qry.SQL.Add('select rewage,ttwage,months from sbdu_pswgcase where psseno=:param1 and yearno=:param2');
Qry.ParamByName('param1').AsInteger :=Fieldbyname('psseno').AsInteger ;
Qry.ParamByName('param2').AsInteger :=1995;
Qry.Prepare ;
Qry.Open ;
ln_re:=Qry.Fields[0].AsFloat ;
ln_tt:=Qry.Fields[1].AsFloat ;
ln_mon:=Qry.Fields[2].AsInteger;
{select rewage,ttwage,months into ln_re,ln_tt,ln_mon from sbdu_pswgcase
where psseno=c_pswgcase.psseno and yearno=1995; }
if Fieldbyname('months').AsInteger=12 then
begin
ln_cypsfd :=ceil(Fieldbyname('rewage').AsFloat*6*0.04*10)/10+ceil(ln_re*ln_mon*0.04*10)/10;
{select decode(ln_mon,1,7,2,15,3,24,4,34,5,45,6,57) into ln_yjs from dual;}
case ln_mon of
1: ln_yjs:=7;
2: ln_yjs:=15;
3: ln_yjs:=24;
4: ln_yjs:=34;
5: ln_yjs:=45;
6: ln_yjs:=57;
end;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.04*0.1098/6*21+ln_re*0.04*0.1098/ln_mon*ln_yjs;
ls_wgnotes :=formatfloat('0.00',ln_re)+':'+inttostr(7 - ln_mon)+'-6----'+Fieldbyname('rewage').AsString+':7-12';
ls_ftnotes :=fillchar('-',6 - ln_mon)+fillchar('★',6 + ln_mon);
ln_months1 :=6 + ln_mon;
end else if (Fieldbyname('months').AsInteger>6) and (Fieldbyname('months').AsInteger<12) then
begin
ln_cypsfd :=ceil((Fieldbyname('ttwage').AsFloat - Fieldbyname('rewage').AsFloat*6)*0.04*10)/10;
temp_i:=Fieldbyname('months').AsInteger-6 ;
{select decode(c_pswgcase.months - 6,1,1,2,3,3,6,4,10,5,15) into ln_yjs from dual; }
case temp_i of
1: ln_yjs:=1;
2: ln_yjs:=3;
3: ln_yjs:=6;
4: ln_yjs:=10;
5: ln_yjs:=15;
end;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.04*0.1098/(Fieldbyname('months').AsInteger - 6)*ln_yjs;
ls_wgnotes :=Fieldbyname('rewage').AsString+':'+inttostr(19 - Fieldbyname('months').asinteger)+'-12';
ls_ftnotes :=fillchar('-',18 - Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger - 6);
ln_months1 :=Fieldbyname('months').AsInteger - 6;
{--ln_cypsfd :=ceil((c_pswgcase.ttwage - c_pswgcase.rewage*6)*0.04*10)/10+ceil(ln_tt*0.04*10)/10;
--select decode(c_pswgcase.months - 6,1,1,2,3,3,6,4,10,5,15) into ln_yjs from dual;
--select decode(c_pswgcase.months - 6,1,7,2,15,3,24,4,34,5,45,6,57) into ln_yjs1 from dual;
--ln_cypsints :=c_pswgcase.rewage*0.04*0.1098/(c_pswgcase.months - 6)*ln_yjs+ln_re*0.04*0.1098/ln_mon*ln_yjs1;
--ls_wgnotes :=to_char(ln_re)||':'||1||'-'||to_char(ln_mon)||'----'||c_pswgcase.rewage||':'||to_char(19 - c_pswgcase.months)||'-'||12;
--ls_ftnotes :=fillchar('★',ln_mon)||fillchar('-',6 - ln_mon)||fillchar('-',12 - c_pswgcase.months)||fillchar('★',c_pswgcase.months - 6);
--ln_months1 :=c_pswgcase.months - 6 + ln_mon;}
end else if (Fieldbyname('months').AsInteger>=1) and (Fieldbyname('months').AsInteger<7) then
begin
ln_cypsfd :=ceil((Fieldbyname('ttwage').AsFloat)*0.04*10)/10 + ceil(ln_tt*0.04*10)/10;
temp_i:=Fieldbyname('months').AsInteger-6;
case temp_i of
1: ln_yjs:=1;
2: ln_yjs:=3;
3: ln_yjs:=6;
4: ln_yjs:=10;
5: ln_yjs:=15;
end;
{select decode(c_pswgcase.months - 6,1,1,2,3,3,6,4,10,5,15) into ln_yjs from dual;
select decode(c_pswgcase.months - 6,1,7,2,15,3,24,4,34,5,45,6,57) into ln_yjs1 from dual;}
case temp_i of
1: ln_yjs1:=7;
2: ln_yjs1:=15;
3: ln_yjs1:=24;
4: ln_yjs1:=34;
5: ln_yjs1:=45;
6: ln_yjs1:=57;
end;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.04*0.1098/(Fieldbyname('months').AsInteger)*ln_yjs+ln_tt*0.04*0.1098/ln_mon*ln_yjs1;
ls_wgnotes :=formatfloat('0.00',ln_re)+':1-'+inttostr(ln_mon)+'----'+Fieldbyname('rewage').AsString+':'+inttostr(13 - Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('★',ln_mon)+fillchar('-',6 - ln_mon)+fillchar('-',6 - Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
ln_months1 :=Fieldbyname('months').AsInteger + ln_mon;
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);
Qry.Close ;
Qry.SQL.Clear ;
Qry.SQL.Add('select rewage,ttwage,months from sbdu_pswgcase where psseno=:param1 and yearno=:param2');
Qry.ParamByName('param1').AsInteger:=Fieldbyname('psseno').AsInteger ;
Qry.ParamByName('param2').AsInteger:=1996;
Qry.Prepare ;
Qry.Open ;
ln_re:=Qry.Fields[0].AsFloat;
ln_tt:=Qry.Fields[1].AsFloat;
ln_mon:=Qry.Fields[2].AsInteger ;
{select rewage,ttwage,months into ln_re,ln_tt,ln_mon from sbdu_pswgcase
where psseno=c_pswgcase.psseno and yearno=1996; }
if ln_mon>6 then
begin
if Fieldbyname('months').AsInteger=12 then
begin
ln_cypsfd :=ceil(Fieldbyname('ttwage').AsInteger/2*0.05*10)/10+ceil(ln_re*6*0.04*10)/10;
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.05*0.0747/6*21+ln_re*0.04*0.1098/6*57;
ls_wgnotes :=formatfloat('0.00',ln_re)+':1-6----'+Fieldbyname('rewage').AsString+':7-12';
ls_ftnotes :=fillchar('★',12);
ln_months1 :=12;
end else if (Fieldbyname('months').AsInteger>6) and (Fieldbyname('months').AsInteger<12) then
begin
ln_cypsfd :=ceil((Fieldbyname('ttwage').AsFloat - Fieldbyname('rewage').AsFloat*6)*0.05*10)/10 + ceil(ln_re*(ln_mon - 6)*0.04*10)/10;
temp_i:=Fieldbyname('months').AsInteger-6;
case temp_i of
1: ln_yjs:=1;
2: ln_yjs:=3;
3: ln_yjs:=6;
4: ln_yjs:=10;
5: ln_yjs:=15;
end;
case temp_i of
1: ln_yjs1:=7;
2: ln_yjs1:=15;
3: ln_yjs1:=24;
4: ln_yjs1:=34;
5: ln_yjs1:=45;
6: ln_yjs1:=57;
end;
{select decode(c_pswgcase.months - 6,1,1,2,3,3,6,4,10,5,15) into ln_yjs from dual;
select decode(c_pswgcase.months - 6,1,7,2,15,3,24,4,34,5,45,6,57) into ln_yjs1 from dual; }
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.05*0.0747/(Fieldbyname('months').AsInteger - 6)*ln_yjs+ln_re*0.04*0.1098/(ln_mon - 6)*ln_yjs1;
ls_wgnotes :=formatfloat('0.00',ln_re)+':1-'+inttostr(ln_mon - 6)+'----'+Fieldbyname('rewage').asstring+':'+inttostr(19 - Fieldbyname('months').asinteger)+'-12';
ls_ftnotes :=fillchar('★',ln_mon - 6)+fillchar('-',12 - ln_mon)+fillchar('-',12 - Fieldbyname('months').asinteger)+fillchar('★',Fieldbyname('months').asinteger - 6);
ln_months1 :=Fieldbyname('months').asinteger - 6 + ln_mon - 6;
end else if (Fieldbyname('months').AsInteger>=1) and (Fieldbyname('months').AsInteger<7) then
begin
ln_cypsfd :=ceil((Fieldbyname('ttwage').AsFloat)*0.05*10)/10 + ceil(ln_re*(ln_mon - 6)*0.04*10)/10;
temp_i:=Fieldbyname('months').AsInteger-6;
case temp_i of
1: ln_yjs:=1;
2: ln_yjs:=3;
3: ln_yjs:=6;
4: ln_yjs:=10;
5: ln_yjs:=15;
end;
case temp_i of
1: ln_yjs1:=7;
2: ln_yjs1:=15;
3: ln_yjs1:=24;
4: ln_yjs1:=34;
5: ln_yjs1:=45;
6: ln_yjs1:=57;
end;
{select decode(c_pswgcase.months - 6,1,1,2,3,3,6,4,10,5,15) into ln_yjs from dual;
select decode(c_pswgcase.months - 6,1,7,2,15,3,24,4,34,5,45,6,57) into ln_yjs1 from dual;}
ln_cypsints :=Fieldbyname('rewage').AsFloat*0.05*0.0747/(Fieldbyname('months').AsInteger)*ln_yjs+ln_re*0.04*0.1098/(ln_mon - 6)*ln_yjs1;
ls_wgnotes :=formatfloat('0.00',ln_re)+':1-'+inttostr(ln_mon - 6)+'----'+Fieldbyname('rewage').AsString+':'+inttostr(13 - Fieldbyname('months').AsInteger)+'-12';
ls_ftnotes :=fillchar('★',ln_mon - 6)+fillchar('-',12 - ln_mon)+fillchar('-',6 - Fieldbyname('months').AsInteger)+fillchar('★',Fieldbyname('months').AsInteger);
ln_months1 :=Fieldbyname('months').AsInteger + ln_mon - 6;
end
else
if Fieldbyname('months').AsInteger=12 then
begin
ln_cypsfd :=ceil(Fieldbyname('ttwage').AsFloat/2*0.05*10)/10+ceil(ln_tt*0.04*10)/10;
{select decode(ln_mon,1,7,2,15,3,24,4,34,5,45,6,57) into ln_yjs from dual;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -