PB生成XML文件与税务系统接口

chengdu2012 2011-06-16 10:26:40
因长度受限,代码部分省略。
long li_row,li_selectedrow,li_i
string ls_exepath
datetime ldt_sfrq_start,ldt_sfrq_end,ldt_bbrq
ldt_sfrq_start = datetime(Date(left(em_sfrq_start.text,10)),Time(right(em_sfrq_start.text,8)))
ldt_sfrq_end = datetime(Date(left(em_sfrq_end.text,10)),Time(right(em_sfrq_end.text,8)))
ldt_bbrq = gf_getdatetime()
setpointer(hourglass!)
ls_exepath = GetCurrentDirectory()

setpointer(hourglass!)
dw_1.settransobject(sqlca)
if dw_1.rowcount() < 1 then
messagebox('提示','没有收费数据! ')
setpointer(arrow!)
return
end if

long li_fileno
li_fileno = fileopen('D:\税务数据XML\NsrXsktFpsjSbb.xml',LineMode!, Write!, LockWrite!, Replace!)
if li_fileno = -1 then
messagebox('提示','创建文件NsrXsktFpsjSbb.xml失败,请检查是否其他程序正在使用该文件。')
return
end if

FileWrite(li_fileno , '<?xml version="1.0" encoding="GB2312"?>')
FileWrite(li_fileno , '<SCHEMA NAME="NsrXsktFpsjSbb" CNNAME="纳税人销售开填发票数据申报表" VERSION="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="model.xsd">')
FileWrite(li_fileno , '<HEAD>')
FileWrite(li_fileno , '<NSRSBH>530924748298822</NSRSBH>')
FileWrite(li_fileno , '<SSSQ_Q>' + string(ldt_sfrq_start,'yyyy-mm-dd') + '</SSSQ_Q>')
FileWrite(li_fileno , '<SSSQ_Z>' + string(ldt_sfrq_end,'yyyy-mm-dd') + '</SSSQ_Z>')
FileWrite(li_fileno , '<TBRQ>' + string(ldt_bbrq,'yyyy-mm-dd') + '</TBRQ>')
FileWrite(li_fileno , '<NSRMC>供水有限责任公司</NSRMC>')

FileWrite(li_fileno , '<DZ></DZ>')
FileWrite(li_fileno , '<DHHM></DHHM>')
FileWrite(li_fileno , '<JBR>罗桂芹</JBR>')
FileWrite(li_fileno , '<BZ></BZ>')
FileWrite(li_fileno , '</HEAD>')

FileWrite(li_fileno , '<HEAD_AFFIX>')
FileWrite(li_fileno , '<HYFL_DM>4610</HYFL_DM>')
FileWrite(li_fileno , '<HYFL_MC>自来水的生产和供应</HYFL_MC>')
FileWrite(li_fileno , '</HEAD_AFFIX>')

FileWrite(li_fileno , '<BODY>')
string yhh,updatetime,cbkh,qbbh,qblc,yyhh,pym,yhm,yhdz,lxdh,qjmc,pjh,fpdm,sfry,fpzt
string sczds,bczds,sscbb,cbbmc,cbxh,ls_id
string ls_line
long li_id
datetime sfrq

updatetime = string(gf_getdatetime())
for li_row = 1 to dw_1.rowcount()
yhh = dw_1.getitemstring(li_row,'yhh')
.......
fpzt = dw_1.getitemstring(li_row,'fpzt') //发票状态[10:正常,20:作废]
ls_line = '<FP ID = "' + string(li_row) + '" >'//发票信息,根据导出总份数1至发票n
FileWrite(li_fileno,ls_line)
ls_line = '<FPZL_DM>' + '26149' + '</FPZL_DM>'
FileWrite(li_fileno,ls_line)

ls_line = '<XXSL>' + '6' + '</XXSL>'
FileWrite(li_fileno,ls_line)

ls_line = '<GMBZ>' + 'y' + '</GMBZ>'
FileWrite(li_fileno,ls_line)

ls_line = '<DKBZ>' + '0' + '</DKBZ>'
FileWrite(li_fileno,ls_line)

ls_line = '<NCPBZ>' + 'n' + '</NCPBZ>'
FileWrite(li_fileno,ls_line)

ls_line = '<FP_DM>' + fpdm + '</FP_DM>'
FileWrite(li_fileno,ls_line)

ls_line = '<FPHM>' + pjh + '</FPHM>'
FileWrite(li_fileno,ls_line)

ls_line = '<KPRQ>' + string(datetime(sfrq),'yyyy-mm-dd hh:mm:ss') + '</KPRQ>'
FileWrite(li_fileno,ls_line)

ls_line = '<HYFL>' + '自来水的生产和供应' + '</HYFL>'
FileWrite(li_fileno,ls_line)

ls_line = '<FKMC>' + yhm + '</FKMC>'
FileWrite(li_fileno,ls_line)

ls_line = '<FKSBH>' + '</FKSBH>'
FileWrite(li_fileno,ls_line)

dw_2.settransobject(sqlca)
dw_2.retrieve(yhh,pjh)
for li_i = 1 to dw_2.rowcount()
ldec_id = dw_2.getitemnumber(li_i,'compute_1')
....// 中间代码为li_i = 1 到li_i = 6
end for

FileWrite(li_fileno,'<FPMX COUNT="6">')//项目最大为6行
FileWrite(li_fileno,'<mx1>')
ls_line = '<HLMC>' + '自来水的生产和供应' + '</HLMC>'
FileWrite(li_fileno,ls_line)
ls_line = '<GG>' + '' + '</GG>'
FileWrite(li_fileno,ls_line)
ls_line = '<DW>' + '立方' + '</DW>'
FileWrite(li_fileno,ls_line)
ls_line = '<DJ>' + string(ldec_sj1) + '</DJ>'
FileWrite(li_fileno,ls_line)
ls_line = '<SL>' + string(ldec_sl1) + '</SL>'
FileWrite(li_fileno,ls_line)
ls_line = '<JE>' + string(ldec_yssf1) + '</JE>'
FileWrite(li_fileno,ls_line)
ls_line = '<ZDY>' + '</ZDY>'
FileWrite(li_fileno,ls_line)
FileWrite(li_fileno,'</mx1>')

FileWrite(li_fileno,'<mx2>')
ls_line = '<HLMC>' + '自来水的生产和供应' + '</HLMC>'
FileWrite(li_fileno,ls_line)
ls_line = '<GG>' + '' + '</GG>'
FileWrite(li_fileno,ls_line)
ls_line = '<DW>' + '立方' + '</DW>'
FileWrite(li_fileno,ls_line)
ls_line = '<DJ>' + string(ldec_sj2) + '</DJ>'
FileWrite(li_fileno,ls_line)
ls_line = '<SL>' + string(ldec_sl2) + '</SL>'
FileWrite(li_fileno,ls_line)
ls_line = '<JE>' + string(ldec_yssf2) + '</JE>'
FileWrite(li_fileno,ls_line)
ls_line = '<ZDY>' + '</ZDY>'
FileWrite(li_fileno,ls_line)
FileWrite(li_fileno,'</mx2>')

.......//到mx6

FileWrite(li_fileno,'</FPMX>')

ls_line = '<HJDX>' + gf_jezh(yssf) + '</HJDX>'
FileWrite(li_fileno,ls_line)

ls_line = '<HJXX>' + string(yssf) + '</HJXX>'
FileWrite(li_fileno,ls_line)

ls_line = '<BZ>' + '</BZ>'
FileWrite(li_fileno,ls_line)

ls_line = '<WTSKMC>' + '</WTSKMC>'
FileWrite(li_fileno,ls_line)

ls_line = '<WTSKSBH>' + '</WTSKSBH>'
FileWrite(li_fileno,ls_line)

ls_line = '<NSRMC>' + '供水有限责任公司' + '</NSRMC>'
FileWrite(li_fileno,ls_line)

ls_line = '<NSRSBH>' + '530924748298822' + '</NSRSBH>'
FileWrite(li_fileno,ls_line)

ls_line = '<KPR_MC>' + sfry + '</KPR_MC>'
FileWrite(li_fileno,ls_line)

ls_line = '<SKZJLB>' + '</SKZJLB>'
FileWrite(li_fileno,ls_line)

ls_line = '<NSR_SWJG_DM>' + '15309240000' + '</NSR_SWJG_DM>'/
FileWrite(li_fileno,ls_line)

ls_line = '<FPZT>' + fpzt + '</FPZT>'
FileWrite(li_fileno,ls_line)

ls_line = '<KJLX>' + '2' + '</KJLX>'
FileWrite(li_fileno,ls_line)
FileWrite(li_fileno , '</FP>')
end for

FileWrite(li_fileno , '</BODY>')
FileWrite(li_fileno , '<BODY_AFFIX>')
FileWrite(li_fileno , '<SBFPZFS>' + string(dw_1.rowcount()) + '</SBFPZFS>')
FileWrite(li_fileno , '<SBFPZJE>' + string(hjqf) + '</SBFPZJE>')
FileWrite(li_fileno , '</BODY_AFFIX>')
FileWrite(li_fileno , '</SCHEMA>')
fileclose(li_fileno)
setpointer(arrow!)

//生成新的XML文件
if CopyFileA('D:\税务数据XML\NsrXsktFpsjSbb.xml','D:\税务数据XML\NsrXsktFpsjSbb_' + string(ldt_sfrq_start,'yyyy-mm-dd') +'_' + string(ldt_sfrq_end,'yyyy-mm-dd') + '_'+'530924748298822'+'_'+'V10'+'.xml',false) = false then
messagebox('提示','生成NsrXsktFpsjSbb.xml文件时出错,请检查data\NsrXsktFpsjSbb.xml是否在使用中。 ')
return -1
end if
messagebox('提示','已成功生成收费XML文件。 ')



...全文
667 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjlion 2011-06-21
  • 打赏
  • 举报
回复
想说明啥?
lao_bulls 2011-06-18
  • 打赏
  • 举报
回复
不错,有时间学习一下。
chengdu2012 2011-06-16
  • 打赏
  • 举报
回复
pbdom 用的少,不是很熟悉了。
pb8 2011-06-16
  • 打赏
  • 举报
回复
为什么不直接用pbdom对象呢?
chengdu2012 2011-06-16
  • 打赏
  • 举报
回复
详细信息可以Q聊
youzhi1007 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fxq0109 的回复:]
不用PDOM用XMLDOM也可以呀,自己一行行写文件这个办法也太笨了吧
[/Quote]

生成的话这个是很最灵活的。
非行列规律的xml数据窗口saveas也不如这个直接写。
凡爸 2011-06-16
  • 打赏
  • 举报
回复
不用PDOM用XMLDOM也可以呀,自己一行行写文件这个办法也太笨了吧

662

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder Web 应用
社区管理员
  • Web 应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧