接口函数说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
票据接口函数说明
一、接口概述
a.概述
为了执行黑龙江省财政厅发布的“财政票据电子化”即自动导入票据,电脑开票,自动核销票据,资金解缴等的方针,由各单位现有软件提供票据相关信息通过博思转入开票接口来进行自动开票。
b.原理简述
单位端现有软件生成票据相关信息转成文本格式,再通过调用dll文件的相关函数把信息转入博思开票软件中,而后自动进行开票
二、接口实现
a.操作过程
1.启动单位端现有软件与博思开票端软件
2.单位端现有软件提供票据相关信息
3.单位端现有软件进行开票
b.软件实现过程
1.业务软件凋用Dll(Pconnect或PAdvConnect)函数联接开票软件;
2. 业务软件生成票面信息(需按接口规范格式);
3. 业务软件凋用Dll(PZrPjXX)函数转入票据信息,票据软件接收票据信息,并返回生成票据号、数据指纹等信息;
4. 转入成功时,业务软件打印出票据。
c、Dll函数说明
1、Function PConnect:integer;StdCall;
联接博思开票软件,必须先调用此联接才能执行转入开票的操作
返回值int:成功 1 不成功 0
注:只用于联接一般开票软件
2.Function PConnectSoft(aSys:PChar):integer;StdCall;
联接博思开票软件,必须先调用此联接才能执行转入开票的操作,有针对系统而言
参数:aSys:系统名
高速开票系统:GS
大型网络开票系统:NK
返回值int: 成功 1 不成功 0
3.Function
PAdvConnectSoft(aUser,aMm,aTzh,aSys:PChar):integer;S tdcall;
联接博思开票软件并且能自动登录,有针对系统而言
参数:aUser:登录用户号
aMm:登录密码
aTzh:登录套帐号(为空时取默认套帐)
aSys:系统名
返回值 int :成功 1 不成功 0
4.Function
PAdvConnect(aUser,aMm,aTzh:PChar):intger;StdCall;
联接博思开票软件并且能自动登录
参数:aUser:登录用户号
aMm:登录密码
aTzh:登录套帐号(为空时取默认套帐)
注:只用于联接一般开票软件
5、Function PDisConnect:integer;StdCall;
断开博思开票软件的联接
返回值int:成功 1 不成功 0
6. Function PZrPj(ZrTxt:PChar;IsPrn:integer; PjLx,Bz,Res:PChar):integer;StdCall;
执行转入开票动作
参数: ZrTxt : 票据数据
(格式详见:数据格式说明.txt 文件)
IsPrn : 0 表示显示转入票据信息后再进行开票
1 表示直接开票并打印
2 表示直接开票但不打印
PjLx : 票据类型
(传空表示取默认当前的票据类型开票,
不为空则指定类型)
Bz : 单据的备注 (可选的参数,可不传则转入无备注)
Res: 只作为存储返回字符
成功:票据类型号,票据号,金额,注册号(以,分格)
错误:(错误信息)
返回值: 参数Res的长度
示例1:var vRes:pChar;
SetLength(vRes,500);
//vRes变量宽度,请定义足够大以返回完整错误信息
PZrPj(SomeString,1,’001001’,’’,vRes)
返回值:25
vRes返回值:’成功:001001,085256,1200.3,闽财2004票’
表示:传入开票内容为SomeString,票据类型为’001001’,
备注为空
返回值长度为25
开票成功,返回值为票据类型为001001
票据号为085256
金额为1200.3元
注册号闽财2004票
示例2:var vRes:pChar;
PZrPj(SomeString,1,’’,’张三’,vRes)
返回值:31 vRes返回值:’错误:请先上报核销后才能开票据。
’
表示:传入开票内容为SomeString,票据类型为默认值,
备注为’张三’
返回值长度为31
开票不成功,返回值为不成功的错误信息
7. Function PDelPj(Flag:PChar;Res:PChar):integer;StdCall;
作废一张票据
参数: Flag 接口以该要素去定位该欲作废的票据,可选传入如票
据类型、票据号、唯一号、流水号、受理号等,根据
传入的内容查找定位票据,再作废该票据。
如果找到
的票据不唯一,报错,不能作废
参数应以=分格,如果有须多个参数定位一张票据,参
数间以|分格各参数,如’票据类型=001001|票据
号=085256’参数等号左边为定位依据,右边为因子
其中“票据类型”“票据号”为关键字,其余可以为开
票设置里的自定义项内容
Res: 只作为存储返回字符
成功:票据类型号,票据号(以,分格)
错误:(错误信息)
返回值:参数Res的长度
示例1:var vRes:pChar;
SetLength(vRes,500);
//vRes变量宽度,请定义足够大以返回完整错误信息
PDelPj(’票据类型=001001|票据号=085256’,vRes)
返回值:18 vRes返回值:’成功:001001,085256’
表示:作废票据类型为’001001’票据号为085256的一张票据
返回值长度为18
作废票据成功,返回值为票据类型为001001
票据号为085256
示例2:var vRes:pChar;
PDelPj(’流水号=300124567’,vRes)
返回值:25 vRes返回值:’错误:找不到符合条件的票据’
表示:作废流水号为’ 300124567’的一张票据
(以假设流水号是唯一标志去定位一张票据)
返回值长度为25
作废票据不成功,返回值为错误信息,没有定位到该票据
8. Function PGetPjMc(Res:PChar):integer;StdCall;
取所有票据类型
参数: Res 只作为存储返回编号和名称
格式为:票据编码1 票据名称1|票据编码2 票据名称2|...
其中'|'表示Tab字符 ...表示省略
返回值:参数Res的长度
9. Function PGetCurPj(Pj: PChar;Res:PChar):integer;StdCall;
取当前开票的票据类型
参数: Pj 票据类型
Res 只作为存储返回编号和名称
返回值:参数Res的长度
10、Function PGetCardh(Res:PChar):integer;StdCall;
取当前开票卡卡号
参数: Res 只作为存储系统返回开票软件第一个本地开票卡的卡号
返回值: 参数Res的长度
11、Function PGetCurPh(Pj:PChar;Res:PChar):integer;StdCall;
取当前开票卡可用的第一张票据号
参数:Pj 票据类型
''表示取默认票据类型的当前开票卡可用的第一张票据号
不为空表示取指定票据类型的第一张票据号
Res 只作为存储取当前开票卡可用的第一张票据号
返回值: 参数Res的长度
12、Function PGetKpr(Res:PChar):integer;StdCall;
取得当前开票软件的开票人名称
参数: Res 只作为存储取得当前开票软件的开票人名称
返回值: 参数Res的长度
13、Function PGetTzh(Res:PChar):integer;StdCall;
取得开票系统的当前帐套号
参数: Res 只作为存储取得当前帐套号
返回值: 参数Res的长度
14、Function PSetTzh(aTzh:PChar;Res:PChar):integer;StdCall;
设置开票系统的当前帐套号
参数: aTzh 须要改变的帐套号
成功则PgetTzh取得的帐套号变为aTzh
15、Function PLoginSuccess:integer;StdCall;
判断是否已完全登录博思软件
返回值int:成功 1 不成功 0
16. Function PZrPjXX(ZrTxt:PChar;sPrn:integer; PjLx,Bz,Res:PChar):integer;StdCall;
执行转入开票信息(与PZrPj区别,多返回数字指纹)
参数: ZrTxt : 票据数据
(格式详见:数据格式说明.txt 文件)
IsPrn : 0 表示显示转入票据信息后再进行开票
1 表示直接开票并打印
2 表示直接开票但不打印
PjLx : 票据类型
(传空表示取默认当前的票据类型开票,
不为空则指定类型)
Bz : 单据的备注 (可选的参数,可不传则转入无备注)
Res: 只作为存储返回字符
成功:票据类型号,票据号,金额,注册号,数字指
纹(以,分格)
错误:(错误信息)
返回值: 参数Res的长度
示例1:var vRes:pChar;
SetLength(vRes,500);
//vRes变量宽度,请定义足够大以返回完整错误信息
PZrPj(SomeString,1,’001001’,’’,vRes)
返回值:25
vRes返回值:’成功:001001,085256,1200.3,闽财2004票,
00ABCDEFG012456789’
表示:传入开票内容为SomeString,票据类型为’001001’,
备注为空
返回值长度为34
开票成功,返回值为票据类型为001001
票据号为085256
金额为1200.3元
注册号闽财2004票
数字指纹:00ABCDEFG012456789 示例2:var vRes:pChar;
PZrPj(SomeString,1,’’,’张三’,vRes)
返回值:31 vRes返回值:’错误:请先上报核销后才能开票据。
’
表示:传入开票内容为SomeString,票据类型为默认值,
备注为’张三’
返回值长度为31
开票不成功,返回值为不成功的错误信息
17. Function PZrfzf (Flag:PChar;Res:PChar):integer;StdCall;
反作废一张票据
参数: Flag 接口以该要素去定位该欲作废的票据,可选传入如票
据类型、票据号、唯一号、流水号、受理号等,根据
传入的内容查找定位票据,再作废该票据。
如果找到
的票据不唯一,报错,不能作废
参数应以=分格,如果有须多个参数定位一张票据,参
数间以|分格各参数,如’票据类型=001001|票据
号=085256’参数等号左边为定位依据,右边为因子
其中“票据类型”“票据号”为关键字,其余可以为开
票设置里的自定义项内容
Res: 只作为存储返回字符
成功:票据类型号,票据号(以,分格)
错误:(错误信息)
返回值:参数Res的长度
示例1:var vRes:pChar;
SetLength(vRes,500);
//vRes变量宽度,请定义足够大以返回完整错误信息
PZrFzf(’票据类型=001001|票据号=085256’,vRes)
返回值:18 vRes返回值:’成功:001001,085256’
表示:作废票据类型为’001001’票据号为085256的一张票据
返回值长度为18
作废票据成功,返回值为票据类型为001001
票据号为085256
示例2:var vRes:pChar;
PDelPj(’流水号=300124567’,vRes)
返回值:25 vRes返回值:’错误:找不到符合条件的票据’
表示:作废流水号为’ 300124567’的一张票据
(以假设流水号是唯一标志去定位一张票据)
返回值长度为25
作废票据不成功,返回值为错误信息,没有定位到该票据
18、Function PZrHandPj(ZrTxt:
PChar;PjLx,Qsh,Zzh,Res:PChar):in
teger;StdCall;
执行手工开票动作
参数: ZrTxt : 票据数据
(格式详见:数据格式说明.txt 文件)
PjLx : 票据类型
(传空表示取默认当前的票据类型开票,
不为空则指定类型)
Qsh : 起始号
Zzh: 终止号
Res: 只作为存储返回字符
成功:票据类型号,票据号,金额,注册号(以,分格)
错误:(错误信息)
返回值: 参数Res的长度
示例1:var vRes:pChar;
SetLength(vRes,500);
//vRes变量宽度,请定义足够大以返回完整错误信息
PZrPj(SomeString,’001007’,’001001’,’001002’,vRes)
返回值:25
vRes返回值:’成功:001001,085256,1200.3,闽财2004票’
表示:传入开票内容为SomeString,票据类型为’001001’,
备注为空
返回值长度为25
开票成功,返回值为票据类型为001001
票据号为085256
金额为1200.3元
注册号闽财2004票
示例2:var vRes:pChar;
PZrPj(SomeString,’001007’,’001001’,’001002’,vRes)
返回值:31 vRes返回值:’错误:请先上报核销后才能开票据。
’
表示:传入开票内容为SomeString,票据类型为默认值,
备注为’张三’
返回值长度为31
开票不成功,返回值为不成功的错误信息
19、
Function PGetKyPjd(aPj:PChar;aNum:integer;Res:PChar):integer;StdCall;
根据票据以及所需票据号个数来取可用票据段
参数: aPj 票据编码
aNum 票据号个数
Res 只是做为返回的票据段
20、Function PGetKyPj(aPj:PChar;Res:PChar):integer;StdCall;
根据票据来取可用票据段
参数: aPj 票据编码
Res 只是做为返回的票据段
注:
1、在接口软件的适当位置,如生成票据并打印票据时接入本接口函数。
2、(Pconnect或AdvPconnect)、PDisConnect 与 (PZrPj或PZrPjXX) 函数为必须调用的
函数。
在转入前先用(Pconnect或PAdvPconnect)联接票
据软件,组织要开票的数据形成字符串ZrTxt参数由(PZrPj或
PZrPjXX) 函数转入开一张票据,可连续调用本函数,所有开票完毕可
PDisConnect 断开与开票软件的联接。
3、开票卡、电脑票据的领用与票据号控制、开票人的权限等诸因素,由
开票软件可设置控制
4、其它的函数为非必须的辅助函数,可适当调用,起如提示作用等。
三、编程语言调用方法
一、Delphi调用Dll接口
Dephil 调用 DLL 函数定义方法
//联接博思开票软件返回值int:成功 1 不成功 0
Function ConnectKp:integer;StdCall;external 'KpJk.dll' name 'PConnect';
//断开博思开票软件返回值int:成功 1 不成功 0
Function DisConnectKp:integer;StdCall;external 'KpJk.dll' name 'PDisConnect'; //取当前开票卡卡号系统返回开票软件第一个本地开票卡的卡号
Function PGetCardh(Res:PChar):integer;StdCall;external 'KpJk.dll';
//取当前开票人名称
Function PGetKpr(Res:PChar):integer;StdCall;external 'KpJk.dll';
//取所有票据类型,返回编号和名称
Function PGetPjMc(Res:PChar):integer;StdCall;external 'KpJk.dll'
//取当前开票的票据类型,返回编号和名称
Function PGetCurPj(Pj,Res:PChar):integer;StdCall;external 'KpJk.dll';
//取当前开票卡可用的第一张票据号
Function PGetCurPh(Pj,Res:PChar):integer;StdCall;external 'KpJk.dll';
//执行转入开票动作
Function
PZrPj(ZrTxt:PChar;IsPrn:integer;PjLx,Bz:PChar;Res:PChar):integer;StdCall;externa l 'KpJk.dll';
//执行转入开票信息
Function
PZrPjXX(ZrTxt:PChar;IsPrn:integer;PjLx,Bz:PChar;Res:PChar):integer;StdCall;exter nal 'KpJk.dll';
//作废一张票据
Function PDelPj(Flag,Res:PChar):integer;StdCall;external 'KpJk.dll';
//取得开票系统的当前帐套号
Function PGetTzh(Res:PChar):integer;StdCall;external 'KpJk.dll';
//设置开票系统的当前帐套号
Function PSetTzh(aTzh:PChar;Res:PChar):integer;StdCall;external 'KpJk.dll';
调用时特别声明:
必须为Res参数开辟空间且取Res结果要根据字符长度截取
例:取卡号
var vStr:string;
vLen:integer;
begin
//取当前开票卡卡号系统返回开票软件第一个本地开票卡的卡号
SetLength(vStr,500); //必须为Res参数开辟足够空间
vLen:=PGetCardh(PChar(vStr));
BTxtf_Kh.text:=Copy(vStr,1,vLen); //取Res结果要根据字符长度截取end;
附二:1、Dephil 调用接口单元应引用 ComObj
2、调用程序(如Project1.exe)应与dll在同一目录,如:Project1.exe 应与 KpJk.dll
在同一目录
3、开票程序 Bskp.exe 与 KpServer.exe 应与 Project1.exe 在同一系统运行
二、PowerBuilder 调用Dll接口
PowerBuilder调用 DLL 函数定义方法
//在声明(DeClare)中定义为全局外部函数(Global ExterNal Function)
//联接博思开票软件返回值int:成功 1 不成功 0
Function int ConnectKp() LIBRARY "KpJk.dll" ALIAS FOR "PConnect"
//断开博思开票软件返回值int:成功 1 不成功 0
Function int DisConnectKp() LIBRARY "KpJk.dll" ALIAS FOR "PDisConnect"
//自动登录
Function int AdvConnectKp(String User,String Mm,String Tzh) LIBRARY "KpJk.dll" ALIAS FOR "PAdvConnect"
//执行转入开票动作
Function int PZrPj(string ZrTxt,int IsPrn,string PjLx,string Bz,Ref string Res ) LIBRARY "KpJk.dll"
Function int PZrPjXX(string ZrTxt,int IsPrn,string PjLx,string Bz,Ref string Res ) LIBRARY "KpJk.dll"
//取当前开票卡卡号系统返回开票软件第一个本地开票卡的卡号
Function int PGetCardh(Ref String Res) LIBRARY "KpJk.dll"
//取当前开票卡可用的第一张票据号
Function int PGetCurPh(string Pj,Ref String Res) LIBRARY "KpJk.dll"
//取当前开票的票据类型,返回编号和名称
Function int PGetCurPj(string Pj,Ref string Res) LIBRARY "KpJk.dll"
//取当前开票人名称
Function int PGetKpr(Ref string Res) LIBRARY "KpJk.dll"
//取所有票据类型,返回编号和名称
Function int PGetPjMc(Ref string Res) LIBRARY "KpJk.dll"
//作废一张票据
Function int PDelPj(string Flag,Ref string Res) LIBRARY "KpJk.dll"
//判断是否已完全登录
Function int LoginSuccess() LIBRARY "KpJk.dll" ALIAS FOR "PLoginSuccess"
调用时特别声明:
必须为Res参数开辟空间且取Res结果要根据字符长度截取
例:取卡号
String vStr
int vLen
vStr=space(50) //必须为Res参数开辟空间
vLen=PGetCardh(vStr)
St_1.text=Left(vStr,vLen) //取Res结果要根据字符长度截取
三、Visual FoxPro 调用Dll接口
FoxPro调用Dll函数定义方法
//联接博思开票软件返回值int:成功 1 不成功 0
DECLARE integer PConnect in KpJk.dll as ConnectKp
//断开博思开票软件返回值int:成功 1 不成功 0
DECLARE integer PDisConnect in KpJk.dll as DisConnectKp
//执行转入开票动作
DECLARE integer PZrPj in KpJk.dll as PZrPj string,integer,string,string,string
DECLARE integer PZrPjXX in KpJk.dll as PZrPj string,integer,string,string,string
//取当前开票卡卡号系统返回开票软件第一个本地开票卡的卡号
DECLARE integer PGetCardh in KpJk.dll as PGetCardh string
//取当前开票卡可用的第一张票据号
DECLARE integer PGetCurPh in KpJk.dll as PGetCurPh string
//取当前开票的票据类型,返回编号和名称
DECLARE integer PGetCurPj in KpJk.dll as PGetCurPj string,string
//取当前开票人名称
DECLARE integer PGetKpr in KpJk.dll as PGetKpr string,string
//取所有票据类型,返回编号和名称
DECLARE integer PGetPjMc in KpJk.dll as PGetPjmc string,string
//作废一张票据
DECLARE integer PDelPj in KpJk.dll as PDelPj string,string
调用时特别声明:
必须为Res参数开辟空间且取Res结果要根据字符长度截取
例:取卡号
vStr=space(50) //必须为Res参数开辟空间
vLen=PGetCardh(@vStr)
bel8.caption=Left(vStr,vLen) //取Res结果要根据字符长度截取附注
一、调用程序(如Project1.exe)应与dll在同一目录
如:Project1.exe 应与 KpJk.dll 在同一目录
二、开票程序 Bskp.exe 与 KpServer.exe 应与 Project1.exe 在同一系统运行。