2024年6月11日发(作者:)
U8知识库文档
U8快速开发工具-凭证生成
摘要
在U8 的客户化开发中经常会遇到客户化的单需要生成凭证,标准单据生成凭证,本文
即介绍如何使用U8 快速开发工具完成两种参照生单的开发。
目标
本文主要介绍基于快速开发工具,通过脚本预置+插件开发的方式完成生成凭证功能。
客户化开发单据生成凭证
1. 添加自定义按钮
操作步骤详见《U8产业链_快速开发工具_基础介绍.docx》中的“增加自定义按钮”章
节。
本文接续之前的介绍
在
UA_Menu
表加记录
在
ufsystem..ua_idt
表加记录
在
sa_menuconfig
表加记录
在
sa_toolbarconfig
表加记录
--BEGIN 创建菜单脚本
delete UA_Menu where cmenu_name = '发货单制单' and csub_id ='AR'
GO
insert into UA_Menu
([cMenu_Id],[cMenu_Name],[cMenu_Eng],[cSub_Id],[IGrade],[cSupMenu
_Id],[bEndGrade],[cAuth_Id],
[iOrder],[iImgIndex],[Paramters],[Depends],[Flag],[IsWebFlag])
values('AR109','发货单制单
',Null,'AR',1,'AR','0',Null,900,2,Null,Null,Null,Null)
delete UA_Menu where cmenu_name = '发货单制单处理' and csub_id ='AR'
GO
insert into UA_Menu
([cMenu_Id],[cMenu_Name],[cMenu_Eng],[cSub_Id],[IGrade],[cSupMenu
U8知识库文档
_Id],[bEndGrade],[cAuth_Id],
[iOrder],[iImgIndex],[Paramters],[Depends],[Flag],[IsWebFlag])
values('AR10901','发货单制单处理
',Null,'AR',2,'AR109','1','AR10901',910,4,Null,Null,Null,Null)
--------------------------------当前工具版本V4.00.0011 脚本创建时
间:2012-09-18 9:34:52-----
-- 创建菜单脚本
GO
--END
delete from ufsystem..ua_idt where id ='AR10901'
GO
insert into ufsystem..ua_idt
([id],[assembly],[catalogtype],[type],[class],[entrypoint],[param
eter],[reserved])
values('AR10901','ductFacade',0,0,Null,Null,Null,Nul
l)
--
delete from sa_menuconfig where parameters='AR10901'
GO
insert into sa_menuconfig
([menuid],[helpid],[functionid],[parameters],[toolbarname],[authi
d],[defaultstr],[condition])
values('AR10901',Null,'voucherlist','AR10901','AR10901_list',Null
,Null,Null)
--
delete from sa_toolbarconfig where tblkey='AR10901_list'
GO
insert into sa_toolbarconfig
([tblkey],[imageid],[keydownapplytask],[keyupfreetask],[buttonkey
],[buttoncaptionresid],[tooltiptextresid],[buttonstyle],[inivisib
le],[inienable],[buttonindex],[subindex],[hotshift],[hotkeycode],
[hotkeystate],[editenable],[buttonparas],[downstatus],[upstatus],
[errstatus],[buttontag],[grouptype])
values('AR10901_list','16',Null,Null,'refresh','l.01.
frmbillvouch.00290','lvouch.00291','0',1,1
,22,Null,2,'82','Ctrl+R','0',Null,'0',Null,Null,'Refresh','iAssis
tant')
insert into sa_toolbarconfig
([tblkey],[imageid],[keydownapplytask],[keyupfreetask],[buttonkey
U8知识库文档
],[buttoncaptionresid],[tooltiptextresid],[buttonstyle],[inivisib
le],[inienable],[buttonindex],[subindex],[hotshift],[hotkeycode],
[hotkeystate],[editenable],[buttonparas],[downstatus],[upstatus],
[errstatus],[buttontag],[grouptype])
values('AR10901_list','36',Null,Null,'help','
billvouch.00293','lvouch.00294','0',1,1,23
,Null,0,'112',Null,'0',Null,'0',Null,Null,'Help','iAssistant')
--
--生成凭证
insert into sa_toolbarconfig
([tblkey],[imageid],[keydownapplytask],[keyupfreetask],[buttonkey
],[buttoncaptionresid],[tooltiptextresid],[buttonstyle],[inivisib
le],[inienable],[buttonindex],[subindex],[hotshift],[hotkeycode],
[hotkeystate],[editenable],[buttonparas],[downstatus],[upstatus],
[errstatus],[buttontag],[grouptype])
values('AR10901_list','13',Null,Null,'SendCreatePZ','生成凭证','生
成凭证
','0',1,1,13,Null,0,'112',Null,'0',Null,'0',Null,Null,'incomplete
_tsk','iAssistant')
--
参考附件:参照生单按钮.sql
2. 创建发货单制单列表
创建只有单据列表的操作参考《U8产业链_快速开发工具_基础介绍.docx》中的“创建
单据列表”章节。
本文以“发货单制单列表”为例。
领料申请单参照列表
---删除栏目缓存信息begin --
U8知识库文档
delete AA_ColumnDicCache_Main where ckey ='AR10901'
GO
delete AA_ColumnDicCache_Detail where ckey ='AR10901'
GO
delete aa_columnset_base where ckey ='AR10901'
GO
---删除栏目缓存信息end –
delete sa_voucherlistconfig where ckey ='AR10901'
GO
insert into sa_voucherlistconfig
([ckey],[listfrom],[defaultfilter],[filtername],[subsysid],[colum
nkey],[menuid],[maintbl],[detailtbl],[mainkey],[detailkey],[shows
umoption],[canmodify])
values('AR10901','Sales_FHDPZ_T inner join Sales_FHDPZ_W on
Sales_FHDPZ_=Sales_FHDPZ_',Null,'SA[AddPZ]01','','AR1
0901',Null,'Sales_FHDPZ_T','Sales_FHDPZ_W',NULL,NULL,'1','0')
--Insert into the Table aa_busobject_base
delete aa_busobject_base where cbusobid='AR10901'
GO
insert into aa_busobject_base
([cBusObId],[cBusObName],[iAuthType],[bAuthControl],[cSub_Id],[cM
ark],[iFuncType],[langid],[iOrder],[bLocked],[cLockedBy],[bNoAuth
])
values('AR10901','list of delivery
document',1,'0','SA',Null,2,'en-US',1,'0',Null,'0')
insert into aa_busobject_base
([cBusObId],[cBusObName],[iAuthType],[bAuthControl],[cSub_Id],[cM
ark],[iFuncType],[langid],[iOrder],[bLocked],[cLockedBy],[bNoAuth
])
values('AR10901','发货单制单处理
',1,'0','SA',Null,2,'zh-CN',1,'0',Null,'0')
insert into aa_busobject_base
([cBusObId],[cBusObName],[iAuthType],[bAuthControl],[cSub_Id],[cM
ark],[iFuncType],[langid],[iOrder],[bLocked],[cLockedBy],[bNoAuth
])
values('AR10901','發貨單制單处理
',1,'0','SA',Null,2,'zh-TW',1,'0',Null,'0')
--Insert into the Table aa_columndic_base
U8知识库文档
delete aa_columndic_base where ckey ='AR10901'
GO
insert into aa_columndic_base
([cKey],[cFld],[cQryField],[iColPos],[cCaption],[cCaptionPar],[bF
ixed],[bDisp],[iColWidth],[iAlign],[cOrder],[bLock],[iMergeCols],
[bMustSel],[bNeedSum],[LocaleID],[IsEnum],[EnumType],[EnumTypeStr
ing],[bFilter],[bMerge],[CanModify],[ReferType],[bHideInColSet],[
cSumType])
values('AR10901','selcol','selcol',1,'选择
',Null,'1','1',800,4,Null,'1',0,'1','0','zh-CN','0',Null,Null,'0'
,'0','0',Null,'0',Null)
insert into aa_columndic_base
([cKey],[cFld],[cQryField],[iColPos],[cCaption],[cCaptionPar],[bF
ixed],[bDisp],[iColWidth],[iAlign],[cOrder],[bLock],[iMergeCols],
[bMustSel],[bNeedSum],[LocaleID],[IsEnum],[EnumType],[EnumTypeStr
ing],[bFilter],[bMerge],[CanModify],[ReferType],[bHideInColSet],[
cSumType],[iFieldType],[bExtended])
values('AR10901','ccusabbname','',310,'客户简称
','','0','1',1200,1,'','0',0,'0','0','zh-CN','0',Null,Null,'0','0
','0',Null,'0',Null,Null,'0')
insert into aa_columndic_base
([cKey],[cFld],[cQryField],[iColPos],[cCaption],[cCaptionPar],[bF
ixed],[bDisp],[iColWidth],[iAlign],[cOrder],[bLock],[iMergeCols],
[bMustSel],[bNeedSum],[LocaleID],[IsEnum],[EnumType],[EnumTypeStr
ing],[bFilter],[bMerge],[CanModify],[ReferType],[bHideInColSet],[
cSumType],[iFieldType],[bExtended])
values('AR10901','ccuscode','',300,'客户编码
','','0','0',1200,1,'','0',0,'0','0','zh-CN','0',Null,Null,'0','0
','0',Null,'0',Null,Null,'0')
参考附件:Data_Voucherlist_EFKPZY_DispatchList_AR10901_
3. 配置参照信息
配置“发货单制单处理”列表的过虑条件“领料申请单”
参考附件:参照生单配置脚本.sql
其中:'
AR10901
' :发货单制单处理的单据号;
'
SA[AddPZ]01
'为发货单制单处理列表界面的过滤条件key值;
'
Sales_FHDPZ_T
、
Sales_FHDPZ_W
' 为客户化的发货单列表主子表视图。
U8知识库文档
获取菜单id如下图所示:
获取过滤界面的key值如下图所示:
4. 创建发货单列表视图
‘
Sales_FHDPZ_T、Sales_FHDPZ_W
’为发货单列表界面对应的视图,在此视图
中需要将数据源字段 as 到目标单据字段,如下图所示:
-----
----创建发货单生成凭证视图
/****** Object: View [dbo].[Sales_FHDPZ_T] Script Date: 09/25/2012
15:56:01 ******/
IF EXISTS (SELECT * FROM WHERE object_id =
OBJECT_ID(N'[dbo].[Sales_FHDPZ_T]'))
DROP VIEW [dbo].[Sales_FHDPZ_T]
GO
/****** Object: View [dbo].[Sales_FHDPZ_T] Script Date: 09/25/2012
15:56:02 ******/
U8知识库文档
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Sales_FHDPZ_T]
AS
GO
/****** Object: View [dbo].[Sales_FHDPZ_W] Script Date: 09/25/2012
15:56:39 ******/
IF EXISTS (SELECT * FROM WHERE object_id =
OBJECT_ID(N'[dbo].[Sales_FHDPZ_W]'))
DROP VIEW [dbo].[Sales_FHDPZ_W]
GO
/****** Object: View [dbo].[Sales_FHDPZ_W] Script Date: 09/25/2012
15:56:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Sales_FHDPZ_W]
AS
select
,sum(itax) as itax --税额
,sum(isum) as isum --价税合计
from [Sales_FHD_W] w inner join [Sales_FHD_T] t on =
where isnull(ier,'')<>'' and isnull(e22,'')=''
group by
GO
/****** Object: View [dbo].[Sales_FHDPZ_W2] Script Date: 09/25/2012
15:56:39 ******/
IF EXISTS (SELECT * FROM WHERE object_id =
select * from [Sales_FHD_T] --where isnull(cCloser,'')=''
U8知识库文档
OBJECT_ID(N'[dbo].[Sales_FHDPZ_W2]'))
DROP VIEW [dbo].[Sales_FHDPZ_W2]
GO
/****** Object: View [dbo].[Sales_FHDPZ_W2] Script Date: 09/25/2012
15:56:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Sales_FHDPZ_W2]
AS
select
,sum(itax) as itax --税额
,sum(isum) as isum --价税合计
,cdefine22 --凭证线索号
,cdefine23 --凭证号
,cdefine36 --制单日期
from [Sales_FHD_W] w inner join [Sales_FHD_T] t on =
where isnull(ier,'')<>'' and isnull(e22,'')<>''
group by ,cdefine22,cdefine23,cdefine36
GO
参考附件:Data_View_EFKPZY_DispatchList_AR109_
5. 生成凭证按钮插件功能开发
在接口方法中补充生成凭证功能逻辑
U8知识库文档
参照按钮逻辑
Private WithEvents m_objPz As clsPZ
'首先需要实现凭证控件的保存事件
'rstCurrentVouch 当前凭证数据记录集
' IsSuccess 只有返回true的时候凭证才可以保存
Private Sub m_objPz_Save(rstCurrentVouch As set,
IsSuccess As Boolean)
Dim objCon As tion
Set objCon = Connection '当前数据库连接
Dim coutno_id As String '线索号
Dim csignino_id As String '凭证号
Dim dbill_date As String '制单日期
Dim ccode As String '销售收入科目
csignino_id = "记-"
ccode = kzkm
If Trim(("ino_id")) <> "" Then
coutno_id = Trim(("coutno_id").Value)
csignino_id
dbill_date
Trim(("dbill_date").Value)
''凭证保存回写发货单信息 cDefine22[表体自定义项1]为凭证线索号
coutno_id,cDefine23[表体自定义项2]为凭证号,cDefine24[表体自定义项3]为收
入科目,就是应收单位款的会计科目,cDefine36[表体自定义项15]制单日期
e "update DispatchLists set cDefine22='" &
coutno_id & "',cDefine23='" & csignino_id & "',cDefine24='" & ccode
= csignino_id & Right("0000" &
=
Trim(("ino_id").Value), 4)
U8知识库文档
& "',cDefine36='" & dbill_date & "' where dlid in (" & dlids & ")"
End If
IsSuccess = True
Exit Sub
End Sub
'Voucher 当前单据对象
'ButtonKey 按扭关键字
'strUserErr 错误信息
'bSuc =true 表示成功并终止系统流程 =false表示失败并继续系统流程
Public Sub Before_ButtonClick(Voucher As Object, ButtonKey As String,
strUserErr As String, bSuc As Boolean)
Select Case LCase(StrCardNum)
Case LCase("AR10901")
''凭证
Dim UfDb As New base
Dim sql As String
Dim dbc As New tion
tabase m_me
'总账公用函数实例化
Set m_ZwPub = New clsPub
' m_bs m_emDb, m_me,
m__Id, m_, m_d, m_e,
m_sword
Set m_ = m_login
' Set m_ZwPub.g_business = g_busines1 ''这个注释了会弹出模
态对话框
m_bs2
m__Id,
"AR", m_emDb, UfDb,
m_, m_ame,
m_e, m_sword
'调用凭证对象
Set m_objPz = New clsPZ
Set m_n = m_login
Set m_ = m_ZwPub
If <> 0 Then
m_me
e "delete " & m_eName
U8知识库文档
sqlstr = "insert into " & m_eName &
"([csign],[ino_id],[inid],[cbill],[doutbilldate],[ccashier],[idoc
],[ctext1],[ctext2],[cexch_name],[cdigest],[ccode],[md],[mc],[md_
f],[mc_f],[nfrat],[nd_s],[nc_s],[csettle],[cn_id],[dt_date],[cdep
t_id],[cperson_id],[ccus_id],[csup_id],[citem_id],[citem_class],[
cname],[ccode_equal],[bvouchedit],[bvouchaddordele],[bvouchmoneyh
old],[bvalueedit],[bcodeedit],[ccodecontrol],[bPCSedit],[bDeptedi
t],[bItemedit],[bCusSupInput],[coutaccset],[ioutyear],[coutsysnam
e],[coutsysver],[ioutperiod],[coutsign],[coutno_id],[doutdate],[c
outbillsign],[coutid],[iflag],[cDefine1],[cDefine2],[cDefine3],[c
Define4],[cDefine5],[cDefine6],[cDefine7],[cDefine8],[cDefine9],[
cDefine10],[cDefine11],[cDefine12],[cDefine13],[cDefine14],[cDefi
ne15],[cDefine16],[iBG_ControlResult],[daudit_date])" & _
" values('记',Null," & calcI & ",'" & m_ame &
"','" & m_e & "',Null," & idoc & ",Null,Null,Null,'" &
cdigest & "','" & kzkm & "'," & iSum & ",0,0,0,0," & iQuantity &
",0,Null,Null,Null,'" & cdepCode & "','" & cPersonCode & "','" &
cCusCode & "',Null,Null,Null,'" & cPersonName &
& "',Null,'1','1','0','0','1','AR','0','1','1','0','"
m__Id & "'," & m_ & ",'AR',Null," &
m_ & ",'AR','" & guid & "','" & m_e &
"','05','" & cDLCode & spaceStr & calcI &
"',Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Nu
ll,Null,Null,Null,Null,0,Null);"
e sqlstr
Case Else
bSuc = False
End Select
'自定义逻辑结束
bSuc = False
End Sub
特别提示:以上代码在调试状态下保存凭证“会提示外部系统错误!”这时一般直接把工
程编译后直接运行就可以了。
参考附件:Interface_kangpu工程
注册插件XML文件
U8知识库文档
运行代码,启动U8
标准产品单据参照客户化开发单据
以下以材料出库单参照“DEMO业务单1”生单为例进行讲解。
1. 增加自定义按钮
增加自定义按钮
and
-----------材料出库单上增加客户化按钮"DEMO业务单1"
delete [aa_customerbutton] where [cvoucherkey]='0412'
[cButtonKey]='EF_0201'
GO
insert into [aa_customerbutton]
([cButtonID],[cButtonKey],[cButtonType],[cProjectNO],[cFormKey],[
cVoucherKey],[cKeyBefore],[iOrder],[cGroup],[cCustomerObjectName]
,[cCaption],[cLocaleID],[cImage],[cToolTip],[cHotKey],[bInneralCo
mmand],[cVariant],[cVisibleAsKey],[cEnableAsKey],[cSubID],[Depend
enceSubIdList])
values(newid(),'EF_0201','PortalToolbar','U870','0412','0412','tl
bAdd','12','ST_Voucher_P_2','Interface__aa_customerbutt
on','参照DEMO1','ZH-CN','','参照
DEMO1','tlbAdd','tlbAdd','ST','ST')
DEMO1','Ctrl+N',1,'参照
参考附件:材料出库单参照生单按钮.sql
U8知识库文档
在材料出库单上出现“参照DEMO1”按钮,如下图所示
2. 创建参照DEMO1的列表
DEMO业务单1 的参照列表
略。
参考附件:DEMO1参照列表.sql
3. 配置参照列表过滤界面
U8知识库文档
DEMO1参照列表过滤界面
--------DEMO1 参照列表界面过滤
delete from flt_definemeta_base where filterid='EF0306'
delete from flt_definemeta_lang where filterid='EF0306'
delete from flt_definemeta_cache where filterid='EF0306'
------基础过滤SQL语句!------
insert
into ..flt_definemeta_base(FilterID,ProjectNO,XMLExpression,SubNO
,FilterName,FilterDesc,IsUpgrade,bLocked,cLockedBy)
values(N'EF0306',N'U8CUSTDEF',N' title="" caption="ccode" reftype="0" refid="" commonlogic="eq" pointbit="-1" fieldname="ccode" rangeinput="0" orlogic="0" fieldclass="" multselect="0" iscommon="1" mustinput="0" allowupdatecomparelogic="1" displayinportalview="0" isfacilitycondition="0" behaviorclass="" cancelseconddev="0"> canceladvanceitemlist="" hasadvance="0" hasgroupby="0" showstyle="0" ispara="0" autodisplaytext="0" isjoinfulltextquery="0" descvalue="[####]"/> fieldname="ccode" fieldclass="" iscommon="1" mustinput="0" rangeinput="0" orlogic="0" multselect="0" allowupdatecomparelogic="1" displayinportalview="0" isfacilitycondition="0" showstyle="0" ispara="0" autodisplaytext="0" isjoinfulltextquery="0" descvalue="[####]"/> fieldname="ddate" fieldclass="" iscommon="1" mustinput="0" rangeinput="0" orlogic="0" multselect="0" allowupdatecomparelogic="1" displayinportalview="0" isfacilitycondition="0" showstyle="0" ispara="0" autodisplaytext="0" ',N'',null,null,0,null,null) isjoinfulltextquery="0" format=""/>
参考附件:DEMO1 参照列表界面过滤.sql
4. 配置参照信息
材料出库单参照DEMO1 脚本
---材料出库单参照DEMO1列表
delete sa_refervoucherconfig where cardnum ='0412'
U8知识库文档
insert into sa_refervoucherconfig
([cardnum],[referkey],[maincolumnkey],[detailcolumnkey],[toolbark
ey],[subsysid],[filtername],[maindatasource],[detaildatasource],[
selecttype],[fillkey],[mainuniquekey],[pagesize],[defaultfilter],
[filltype],[captionresid],[detailuniquekey],[buttonspara],[unique
flds],[condition],[setdetailvalues])
values('0412','EF0306','EF0306',Null,Null,'1Z','EF0306','V_List_E
F_TABLE_MO',Null,Null,Null,Null,50,'
',Null,Null,Null,Null,Null,Null,Null)
GO
cvouchtype =''EF0201''
参考附件:参照生单配置脚本.sql
5. 创建列表视图
DEMO业务单1参照列表视图
略
参考附件:DEMO1参照列表视图.sql
6. 参照生单按钮功能开发
插件代码
略。
U8知识库文档
参考附件:Interface_EFMO工程
执行上述脚本,运行vb,启动U8
U8知识库文档
相关知识
参见有关数据库脚本。
发布评论