用友ERP-NC精華實用SQL腳本之:快速複製公司的部門

本文作者:草上飛
網址:http://www.newbooks.com.cn
對於大多數集團化公司,每個公司的部門定義應該是統一定義的。譬如每個公司可能會有財務部、銷售部、IT部門等等。所以在用友ERP-NC30的實施或者維護過程中,我們通常會做這樣一件事情,我們在一個公司建好規範完整的一套部門檔案的時候,我們可能需要手工在另外一個公司錄入進去。試想,如果一個集團有幾十個分公司,而每個分公司有10來個部門,這個工作量是非常大的。鑑於這個原因,我寫了個一個通用的SQL,能快速複製公司的部門。你只需要在一個公司建立好完整的部門體系後,可以用該SQL將這個公司的部門複製到另外一個公司,相關SQL如下:
--注意,本SQL腳本在用友ERP-NC3.0上測試通過,其他版本沒有測試,請慎用。
select pk_corp,unitname from bd_corp
--1010 yaopin  1011 yimiao  1014 tongzhou
--
複製海南的部門到北京。 海南主鍵 1002 北京 1015


declare @sourcepkcorp char(4)
declare @topkcorp char(4)
declare @left4 char(4)
set @left4='AAAA'

set @sourcepkcorp='1002'


set @topkcorp='1015'

declare @nowtime char(19)
set @nowtime='2008-03-04 17:00:00'
--總體操作提示:先把沒有的deptcode寫進去,然後再來更新父部門主鍵
--
1.將海南中有的部門,但是在北京不存在的部門寫進去,是否存在根據部門編碼來判定。
insert into bd_deptdoc
select addr,canceldate,canceled,left(@nowtime,10),def1,def2,def3,def4,def5,deptattr,deptcode,deptduty,deptlevel,deptname
,dr,memo,orgtype,phone,pk_calbody,
@topkcorp,@left4+right(pk_deptdoc,16),
--case when pk_fathedept is null then null else @left4+right(pk_fathedept,16) end,
pk_fathedept,pk_psndoc,remcode,resposition,@nowtime,xtersysflag

from bd_deptdoc where pk_corp = @sourcepkcorp 
and deptcode not in (
select deptcode from bd_deptdoc where pk_corp=@topkcorp
)
--2.通常部門檔案都是樹形結構,所以我們需要更新父部門主鍵
update bd_deptdoc set pk_fathedept=b.pk_fathedept from bd_deptdoc a
inner join 
(
select a.pk_deptdoc,
(
select pk_deptdoc from bd_deptdoc where deptcode =select deptcode from bd_deptdoc where pk_deptdoc=a.pk_fathedept) and pk_corp=@topkcorp
as pk_fathedept from bd_deptdoc a where a.pk_corp=@topkcorp)
on a.pk_deptdoc=b.pk_deptdoc


select pk_deptdoc,a.pk_fathedept,
(
select pk_deptdoc from bd_deptdoc where deptcode =select deptcode from bd_deptdoc where pk_deptdoc=a.pk_fathedept) and pk_corp=@topkcorp
from bd_deptdoc a where a.pk_corp=@topkcorp


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章