Delphi语言实现专利年费记录在数据库中的构建
2013-12-19金立峰
金立峰 全 瑜
(绍兴市科技信息研究院,浙江 绍兴312000)
0 引言
专利年费是在专利权被授予后的期间内,专利权人为维持其专利权的有效性而在每年都应当缴纳的费用.
专利费用在专利权期限届满前终止.专利权人在其专利被授权之后,有缴纳专利年费的义务.而年费的数额是随着保护时间的增长而递增的,也就是说,每过一阶段(一般是几年),就要比前一阶段多缴纳一笔款.这样做的目的,是使年费在专利制度中起到经济杠杆的作用.如果专利权人认为他的专利权没有经济价值,他可以通过声明书面放弃专利权,提前终止专利权.若专利权人没有在规定期限内缴纳规定数额的年费,其专利权也会终止.专利权终止后,技术归入公知技术领域,成为社会公用技术,任何人都可以免费、自由使用.
专利年费的重要性是不言而喻的,而专利年费是专利事务所案件管理中最为复杂的环节,受案件类型、申请人、案件年限、年费分段及年费比例等诸多因素的影响.手工处理年费是非常繁琐及耗时的一件事情,特别是案件多的情况下,年费的计算、管理和查询往往要花费案件管理员非常多的时间和精力.因此实现专利事物管理系统工作电脑化,在专利事务所是非常必要的,是专利事务工作中的核心模块.
1 研究内容
专利年费功能是专利事物管理系统中的核心功能,在案件输入时根据各种案件信息自动生成年费数据.专利年费模块由前台应用软件和后台数据库构成,前台应用软件设计涉及年费部分主要有年费的生成、年费查询、年费列表预览、年费列表打印、相关年份年费通知等内容.后台数据库设计涉及年费部分主要由各种年费信息数据表单构成.本文研究内容只涉及年费记录的构建.
2 年费相关数据库表单设计
涉及年费的数据库表单有“年费比例表”“年费计算选项表”“年费列表”3个表单.
(1)年费比例表:该表单字段包括“案件类别”“阶段”(即年费时段)、“年费”(即年费额)、“始年份”和“终年份”.此表单为年费比例的参数表单,可以随着年费各项参数的变化进行适时改动.现今的年费比例各项参数设置如表1所示.
(2)年费计算选项表:该表单字段包括“案件类别”“申请人性质”“年数”(即专利年数)、“年费比例”“年费分段”(专利年限内不同时段费用不同,所以必须分段).此表单为年费计算的参数表单,可以随着专利缴费政策的改变而进行改变.现今年费计算的各项参数设置如表2所示.
(3)年费列表:该表单字段包括“申请案号”(即专利的申请案号)、“始日期”(专利年限内不同费用时期的开始时间)、“终日期”(专利年限内不同费用时期的结束时间)、“费用通知日期”(事务所用来通知专利权人交年费的时间,这里设置为提前30天)、“费用”“手续费(事务所每年代办手续的费用,这里设置为50元)”“年度”、“法律状态”(是指受理或授权等的状态).年费列表示例见表3.
3 案件年费计算
所谓的年费计算,主要是案件分年段的计算,即如何生成如表3所示的数据.分析年费表单可得,这里动态变化的字段是“始日期”“终日期”“费用通知日期”“费用”和“年数”.对于一个案件来讲,专利缴费年限一般为10年或者20年.因此对于一个案例在数据库中所占的记录也是10条或者是20条记录.
3.1 各动态字段的实现
3.1.1 yyyy-mm-dd格式的实现
表3所示,“始日期”“终日期”和“费用通知日期”都是yyyy-mm-dd格式,由于每台计算机操作系统的里面系统设置日期格式并不是都一样,需要统一格式转换成yyyy-mm-dd.
日期转换代码:
year1:=yearof(DateTimePicker1.Date);
month1:=inttostr(monthof(DateTimePicker1.Date));
day1:=inttostr(dayof(DateTimePicker1.Date));
if (strtoint(month1)<10)and(strtoint(day1)<10)then
else if (strtoint(month1)<10)and(strtoint(day1)>=10)then
else if (strtoint(month1)>=10)and(strtoint(day1)<10)then
else if (strtoint(month1)>=10)and(strtoint(day1)>=10)then
经过日期转换后,最终参数monthday值为“-mm-dd”格式,加上year1参数后实现了yyyy-mm-dd格式.
3.1.2 始日期、终日期、费用通知日期的实现
表3所示,终日期比始日期延迟一年,并提早1天.实现代码如下:
始日期字段值:inttostr(year1)+monthday;
终日期字段值:inttostr(strtoint(inttostr(year1+1)+monthday)-1);
费用通知日期比始日期提早30天,即费用通知日期字段值:始日期字段值-30.
3.1.3 费用的实现
表3所示,不同年份,费用的数额都在变化.对于费用的计算会涉及“年费比例表”和“年费计算选项表”这两个表单里面的参数.因此首先要弄清楚几个数据库控件与相应数据库表单之间的关系.
Query1:数据集query控件,连接“年费列表”表单.
Query2:数据集query控件,连接“年费比例表”表单.
Table1:数据集table控件,链接“年费计算选项表”表单.
费用的计算代码如下:
申报案件在1~3年内,政策规定只收取相应比例的费用:
Query1.FieldByName(‘费用’).AsFloat:=query2.FieldByName(‘年费’).Value * table1.FieldByName(‘年费比例’).Value;
申报案件超出3年,需收取全额费用:
Query1.FieldByName(‘费用’).AsFloat:=query2.FieldByName(‘年费’).Value.
3.1.4 年度的实现
表3所示,年份值随着记录递增.考虑专利类型不同,有10年或20年两种.年度的记录主要是通过“年费计算选项表”的“年数字段”使用for语句实现.
实现代码:
i:=table1.FieldByName(‘年数’).Value;
for j:=1 to i do
query1.FieldByName(‘年度’).value:= j;
3.2 年费列表记录构建
每个案件在年费列表中都以10条或者20条的记录表示,每条记录的字段实现在3.1中已经表述.在动态实现各字段的基础上,根据不同案件来实现记录的生成.实现过程如下:
通过table1数据集打开“提前通知选项表”,定位到案件对应的“案件类别”和“申请人性质”字段值.
设置整形参数i和j,其中i:=table1.FieldByName(‘年数’).Value;
通过query2数据集打开“年费比例表”,筛选出对应案件的记录,并以“阶段”字段的升序排列,并定位到第一条数据.
year1:=yearof(DateTimePicker1.Date);
for j:=1 to i do
begin
query1.insert;
…
(年度、申请案号、始日期、终日期、法律状态、手续费、通知费用日期字段填入相应的相对应的值.其中第一年的年费在申报专利时已经交掉,因此不需要记录对应的通知费用日期字段值,只需从第二年开始记录.)
…
if (j>=query2.FieldByName(‘始年份’).Value)and(j<=query2.FieldByName(‘终年份’).Value) then
begin
if j<=3 then
…
(收取相应比例的年费)
…
else
…
(收取相应全额年费)
…
end
else
begin
…
(进入年费比例表下一阶段,并进行年费全额年费记录)
…
end;
query1.Post;
year1:=year1+1;
end.
4 结束语
专利年费计算模块通过在数据库中创建“年费比例表”和“年费计算选项表”2个参数表单,结合程序代码,设置程序运行参数,用精简的语句实现专利年费的记录,有效提升了程序执行效率,解决了专利系统软件中核心模块功能的设计.