konto usunięte
Temat: Mam tutaj maly dylemat
Jest to dosc obszerny skrypt,k tory dostalam do przeanalizowania i skrocenia na wstepie swojej pracy. Nigdy jednak nie mialam do czynienia z tak obszernym skryptem. Prosze o pomoc w zrozumieniu co ten skrypt robi. Ogolnie widze ze wyciaga informacje z poszczegolnych tabel w bazie danych, ale nie rozumiem do konca dynamicznej jego czesci. Male utrudnienie plik jest w jezyku holenderskim. POMOCY/*
*/
--delete work.dbo.InlezenWerkgever
--stap 1 maak import tabel en lees excel in
drop table work.dbo.InlezenWerkgever
create table work.dbo.InlezenWerkgever (
WA char(10)
, Debiteur varchar(8)
, WerkgeverNaam varchar(80)
, VestAdresStraat varchar(80)
, VestAdresNr varchar(80)
, VestAdresPostcode varchar(80)
, VestAdresPlaats varchar(80)
, PostAdresStraat varchar(80)
, PostAdresNr varchar(80)
, PostAdresPostcode varchar(80)
, PostAdresPlaats varchar(80)
, telefoon varchar(80)
, fax varchar(80)
, contactNaam varchar(80)
, email varchar(1000)
, regio varchar(80)
, UWVnr varchar(80)
, WerkgeverTeam varchar (44)
, AccountmanagerLoginCode varchar(80)
, WerkgevergroepEmeld varchar(100)
)
-- importeer via enterprizemanager de data
select * from Work..inlezenwerkgever
--stap 2 extra kolommen toevoegen (kan in 1 keer)
alter table Work.dbo.InlezenWerkgever add wgv_email varchar(60);
alter table work.dbo.InlezenWerkgever add bron char(1);
alter table work.dbo.InlezenWerkgever add Factuurlayoutcode char(2);
alter table work.dbo.InlezenWerkgever add vst_id int;
alter table work.dbo.InlezenWerkgever add tea_id int;
alter table work.dbo.InlezenWerkgever add AccountManager_MDW_ID int;
alter table work.dbo.InlezenWerkgever add wgv_debiteurnr varchar(8);
alter table work.dbo.InlezenWerkgever add wgv_id int;
GO
--stap 3 ontdubbel bron
select distinct
*
into #a
from work.dbo.InlezenWerkgever
delete work.dbo.InlezenWerkgever
insert work.dbo.InlezenWerkgever
select *
from #a
drop table #a
--4 email start
select
max(len(email))
from work.dbo.InlezenWerkgever
update a set
wgv_email = left(email,60)
from work.dbo.InlezenWerkgever a
update a set
wgv_email = substring(wgv_email,1,charindex(';',email)-1)
from work.dbo.InlezenWerkgever a
where charindex(';',email) > 0
--4 email end
--5 tel start
update work.dbo.InlezenWerkgever
set telefoon = replace(telefoon,' ','')
where len(telefoon) > 15
update work.dbo.InlezenWerkgever
set telefoon = left(telefoon,15)
where len(telefoon) > 15
--5 tel end
--6 fax start
update work.dbo.InlezenWerkgever
set fax = replace(fax,' ','')
where len(fax) > 15
update work.dbo.InlezenWerkgever
set fax = ''
where len(fax) > 15
--6 fax end
--7 bron
update a set
bron = 'M' --Maetis
from work.dbo.InlezenWerkgever a
where a.bron is null
--8 regio check
select distinct Regio
from work.dbo.InlezenWerkgever a
update a
set Regio = 'Hoofdkantoor'
from work.dbo.InlezenWerkgever a
where Regio = 'landelijk'
--select * from klantindelingjuli2007
update a
set Factuurlayoutcode = b.layoutcode
from work.dbo.InlezenWerkgever a
join klantindelingjuli2007 b on b.zone = a.Regio
and left(b.layoutcode,1) = '0'
where factuurlayoutcode is null
--8 regio toevoegen end
--9 wgv vestiging, wgv team, account manager toevoegen start
update a set tea_id = tea.tea_id
from work.dbo.InlezenWerkgever a
join promaetis..team tea on tea.naam = a.[WerkgeverTeam]
update a set AccountManager_MDW_ID = mdw.id
from work.dbo.InlezenWerkgever a
left outer join promaetis..medewerker mdw on mdw.code = a.accountmanagerlogincode
where AccountManager_MDW_ID is null
update work.dbo.InlezenWerkgever
set vst_id = 13
where Regio in ('Noord')
update work.dbo.InlezenWerkgever
set vst_id = 4
where Regio in ('NoordWest')
update work.dbo.InlezenWerkgever
set vst_id = 10
where Regio in ('NoordOost')
update work.dbo.InlezenWerkgever
set vst_id = 44
where Regio in ('Hoofdkantoor')
update work.dbo.InlezenWerkgever
set vst_id = 5
where regio in ('zuidwest')
update work.dbo.InlezenWerkgever
set vst_id = 24
where regio in ('zuidoost')
--9 wgv vestiging, wgv team, account manager toevoegen end
--10 len(deb) moet zijn 8. bedrijf bepaalt prefix, if any
update work.dbo.InlezenWerkgever
set wgv_debiteurnr = debiteur
where len(debiteur) = 8
and isnumeric(debiteur) = 1
--10 end
--11 ff de lege aansluitidentificatie vullen
update a set UWVnr = '<onbekend>'
from work.dbo.InlezenWerkgever a
where len(UWVnr) = 0
or UWVnr is null
--11 end
--12 check WerkgeverNaam dubbel geleverd?
select WerkgeverNaam
from work.dbo.InlezenWerkgever a
group by WerkgeverNaam
having count(1) > 1
--12 end
--13 werkgevernaam komt al voor start
--met actief contract start?
select *
from promaetis..contract
where wgv_id in (select wgv_id
from promaetis.dbo.werkgever
where wgv_naam in (select WerkgeverNaam
from work.dbo.InlezenWerkgever
where wgv_id is null)
)
order by wgv_id,cnt_periodevan
--zoja dan STOP
--komt sowiesovoor in prod?
select wgv.wgv_naam,wgv.wgv_debiteurnr, wgv.inserted,wgv.insertedauditcode
from prd.promaetis.dbo.werkgever wgv
join work.dbo.InlezenWerkgever a on a.WerkgeverNaam = wgv.wgv_naam
--zoja dan STOP
--13 werkgevernaam komt al voor end
--14 lege kolommen vullen start
update work.dbo.InlezenWerkgever
set email = ''
where email is null
update work.dbo.InlezenWerkgever
set wgv_email = ''
where wgv_email is null
update work.dbo.InlezenWerkgever
set fax = ''
where fax is null
update work.dbo.InlezenWerkgever
set telefoon = ''
where telefoon is null
update work.dbo.InlezenWerkgever
set contactnaam = ''
where contactnaam is null
update a
set PostAdresstraat = '', PostAdresnr = '',PostAdrespostcode = '',PostAdresplaats = ''
from work.dbo.InlezenWerkgever a
where PostAdresstraat is null
--14 end
--15 create script
set nocount on
print 'begin tran'
print '--commit'
print '--rollback'
print 'declare @wgv_id int, @VestigingsAdresId int, @AdresID int;'
select
'exec sp_GenerateUniqueNumber ''wgv_id'', @wgv_id output;
insert adres (code,Omschrijving,InsertedAuditCode,Adrestype,WerkgeverId
,Straatnaam,nummer,postcode,plaatsnaam,telefoonnummer,faxnummer,email,landid)
values ('''','''+replace(VestAdresstraat,char(39),char(39)+char(39))+' '+VestAdresNr+' '+replace(VestAdresplaats,char(39),char(39)+char(39))+''',''script'',''S'',1
,'''+replace(VestAdresstraat,char(39),char(39)+char(39))+''','''+VestAdresNr+''','''+left(VestAdrespostcode,4)+' '+right(VestAdrespostcode,2)+'''
,'''+replace(VestAdresplaats,char(39),char(39)+char(39))+''','''+isnull(telefoon,'')+''','''+isnull(fax,'')+''','''+isnull(email,'')+''',0);
select @VestigingsAdresId = @@identity;
INSERT [WERKGEVER]
([WGV_ID],[EGR_ID],[LND_ID],[WER_WGV_ID],[TEA_ID],[PLS_ID],[VST_ID]
,[WGV_AANSLUITIDENTIFICATIE],[WGV_NAAM],[WGV_FAX],[WGV_TELEFOON]
,WGV_verkorte_naam,[WGV_DEBITEURNR],[InsertedAuditCode],Inserted
,[WGC_ID]
,[AccountManager_MDW_ID],[HersteldEn13eWeekNaarUVI],[MMMGeactiveerd],[KlantTypeId]
,[AVSoort],[AVOpzegtermijnId],[AVAfwAfspaken],AVUpdated,MeldtHandmatig
,IsAutomatischProlongeren,IsBulkProlongatie,TerugkoppelingHomekantoor,MailingsGroep
,VestigingsAdresId,REC_STATUS,BVV_ID,eigenaar_id,Referentiecode,FactuurLayoutCode
,AVUpdatedAuditCode,WGV_MIS_KLANT,WGV_ArbouwDispensatie,WGV_EMAIL,BronOrganisatie,Bron
,wgv_straat,wgv_huisnummer,wgv_plaats,wgv_postcode
,wgv_poststraat,wgv_postnr,wgv_postplaats,wgv_postpostcode)
VALUES
(@WGV_ID,7,0,null,'+cast(tea_id as varchar)+', null,'+cast(vst_id as varchar)+'
,'''+UWVnr+''','''+replace(WerkgeverNaam,char(39),char(39)+char(39)) COLLATE SQL_Latin1_General_CP850_CI_AI+''','''+FAX+''','''+telefoon+'''
,'''+left(replace(WerkgeverNaam,char(39),''),30)+''','+''''+wgv_debiteurnr+''',''script'',getdate()
,'+case when regio = 'hoofdkantoor' then '7' else '6' end+'
,'+cast([AccountManager_MDW_ID] as varchar)+',''J'' /*HersteldEn13eWeekNaarUVI*/,0,''K''
,''A'',7,0,getdate(),''J''
,''J'',''J'',''J'',''J''
,@VestigingsAdresId,1, 202518815 /*UWV*/,''DTP_ASD1'',cast(@wgv_id as varchar),'''+FactuurLayoutCode+'''
,''-'',''J'',''N'','''+isnull(wgv_email,'')+''',1,'''+bron+'''
,'''+replace(a.VestAdresstraat,char(39),char(39)+char(39))+''','''+a.VestAdresNr+''','''+replace(a.VestAdresplaats,char(39),char(39)+char(39))+''','''+left(a.VestAdrespostcode,4)+' '+right(a.VestAdrespostcode,2)+''','''
+replace(a.PostAdresstraat,char(39),char(39)+char(39))+''','''+a.PostAdresNr+''','''+replace(a.PostAdresplaats,char(39),char(39)+char(39))+''','''+left(a.PostAdrespostcode,4)+' '+right(a.PostAdrespostcode,2)+''');
insert adres (code,Omschrijving,InsertedAuditCode,Adrestype,WerkgeverId
,Straatnaam,nummer,postcode,plaatsnaam,email,landid)
values ('''','''+replace(PostAdresstraat,char(39),char(39)+char(39))+' '+PostAdresNr+' '+replace(PostAdresplaats,char(39),char(39)+char(39))+''',''script'',''P'',@wgv_id
,'''+replace(PostAdresstraat,char(39),char(39)+char(39))+''','''+PostAdresNr+''','''+left(PostAdrespostcode,4)+' '+right(PostAdrespostcode,2)+'''
,'''+replace(PostAdresplaats,char(39),char(39)+char(39))+''','''+isnull(email,'')+''',0);
select @AdresId = @@identity;
update adres set werkgeverid = @wgv_id
where Id = @VestigingsAdresId;
insert bestemming (Code,Bestemmingstype, WerkgeverId, AdresId)
values('''',''A'',@wgv_id,@VestigingsAdresId);
insert bestemming (Code,Bestemmingstype, WerkgeverId, AdresId)
values('''',''C'',@wgv_id,@VestigingsAdresId);
insert bestemming (Code,Bestemmingstype, WerkgeverId, AdresId)
values('''',''U'',@wgv_id,@AdresId);
insert bestemming (Code,Bestemmingstype, WerkgeverId, AdresId)
values('''',''V'',@wgv_id,@VestigingsAdresId);'
from work.dbo.InlezenWerkgever a
where werkgevernaam <> 'Allianz 560480 Fleet'
set nocount off
--15 end
--16 bijwerken
update a set wgv_id = wgv.wgv_id
from work.dbo.InlezenWerkgever a
join prd.promaetis.dbo.werkgever wgv on wgv.wgv_debiteurnr = a.wgv_debiteurnr
and a.WerkgeverNaam = wgv.wgv_naam
where a.wgv_id is null
--16 end
--17 contactpersoon info bijvoegen start
--even kijken wat er is geleverd
select distinct a.contactNaam
from work.dbo.InlezenWerkgever a
join prd.promaetis.dbo.werkgever wgv on wgv.wgv_id = a.wgv_id
where contactNaam <> ''
and a.wgv_id not in (select werkgeverid from promaetis..contact)
order by 1
--drop table #contact
select distinct
replace(newid(),'-','') Code
, 'script' InsertedAuditCode
, case when a.contactNaam like 'afdeling%' or a.contactNaam in ('P & O','Personeelsadministratie','Personeelszaken')
then 'A'
else 'P' end Contacttype
, a.wgv_id Werkgeverid
, a.contactNaam Naam
into #contact
from work.dbo.InlezenWerkgever a -- on a.wgv_id = best.werkgeverid
where a.contactNaam <> ''
and a.wgv_id not in (select werkgeverid from promaetis..contact)
and a.wgv_id is not null
set nocount on
print 'begin tran'
print '--commit'
select distinct
'insert promaetis.dbo.contact (Code,InsertedAuditCode,Contacttype,Werkgeverid,Naam)
values ('''+code+''','''+InsertedAuditCode+''','''+Contacttype+''','+cast(Werkgeverid as varchar)+','''+naam+''');
update promaetis.dbo.bestemming
set contactid = @@identity
where Werkgeverid = '+cast(Werkgeverid as varchar)+';'
from #contact
set nocount off
--17 contactpersoon info bijvoegen end
--18 Hierarchie info toevoegen start
set nocount on
print 'begin tran'
print '--commit'
select distinct
'update dbo.werkgever
set wer_wgv_id = '+cast(b.wgv_id as varchar)+'
where wgv_id = '+cast(a.wgv_id as varchar)+';'
from work.dbo.InlezenWerkgever a -- on a.wgv_id = best.werkgeverid
join work.dbo.InlezenWerkgever b on b.Debiteur = a.Debiteur
and b.WA = 'W'
where a.WA = 'A'
and a.wgv_id not in (select wgv_id from promaetis..werkgever where wer_wgv_id is not null)
set nocount off
--18 hierarchie info end
--19 werkgevergroep Emeld maken start
--check if exists
select *
from promaetis..werkgevergroep
where WerkgeverGroepType = 'E'
and omschrijving like (select top 1 WerkgevergroepEmeld+'%(E)%' from work.dbo.InlezenWerkgever
where isnull(WerkgevergroepEmeld,'') <> '')
--zoja STOP
--19a aanmaken wgg
set nocount on
print 'begin tran'
print '--commit'
select
'INSERT [dbo].[WerkgeverGroep]
([Code], [Omschrijving], [InsertedAuditCode], [WerkgeverId], [WerkgeverGroepType])
values (replace(newid(),''-'',''''),'''+WerkgevergroepEmeld+' (E)'+''',''script''
,'+cast(wgv_id as varchar)+',''E'');'
from work.dbo.InlezenWerkgever
where wgv_id = (select min(wgv_id) from work.dbo.InlezenWerkgever
where isnull(WerkgevergroepEmeld,'') <> '')
set nocount off
--19b vullen wgg
declare @werkgevergroepId int
select @werkgevergroepId = id
from promaetis..werkgevergroep
where WerkgeverGroepType = 'E'
and omschrijving = (select top 1 WerkgevergroepEmeld+' (E)' from work.dbo.InlezenWerkgever
where isnull(WerkgevergroepEmeld,'') <> '')
set nocount on
print 'begin tran'
print '--commit'
select
'INSERT [dbo].[WerkgeverWerkgeverGroep]
([Code], [Omschrijving], [InsertedAuditCode], [WerkgeverId], [WerkgeverGroepId])
values (replace(newid(),''-'',''''),'''',''script''
,'+cast(wgv_id as varchar)+','+cast(@werkgevergroepId as varchar)+');'
from work.dbo.InlezenWerkgever
where WerkgevergroepEmeld = (select top 1 WerkgevergroepEmeld
from work.dbo.InlezenWerkgever
where isnull(WerkgevergroepEmeld,'') <> '')
set nocount off
--19 werkgevergroep Emeld maken end
--the end
select Debiteur, WerkgeverNaam, wgv_id
from work..inlezenwerkgever