#styles# #fonts#
Pantheon integracija se izvršava kroz SQL procedure. Omogućava insport i export definisanih podataka u dva smera.
Preporučeni model sinhronizacije je da se iz Pantheona sinhronizuju svi šifarnici. Dokumenti sinhronizuju kroz pravila na predmetima kako bi sinhronizacija bila u real-time-u, ili grupno sa liste dokumenata kada su grupna fakturisanja u pitanju. Identi, Subjekti i projekti takodje mogu biti sinhronizovani u real time-u kroz odgovarajuće procese.
Izabrati podešavanja
enter text
Potrebni preduslovi za uspostavljanje integracije Elastyc - Pantheon jeste definicija korisničkog naloga u Pantheonu putem kojeg će Elastyc vršiti razmenu podataka. Osnovne autorizacije potrebne ovom nalogu su čitanje iz Pantheonovih tabela kako bi se mogao nesmetano obavljati import podatka iz Pantheon-a. Potrebne autorizacije za pisanje u Pantheon bazi zavise od nivoa primene. Ove autorizacije su potrebne za sledeće slučajeve.
Ulistavanje novih subjekata kroz proces subjekata u Elastycu u koliko je to predvidjeno postavkom sistema. Potrebne autorizacije se odnose na tabelu the_setsubj
Ulistavanje novih nosioca troškova sa strane Elastyca kroz predvidjene procese ukoliko je to predvidjeno postavkom sistema. Autorizacije se odnose na tabele: the_setcostdrv
Autorizacije nad dokumentima narudžbina, prometa, kao i tabela veza dokumenata:
Tabele dokumenata
the_order, the_orderitem, the_move,the_moveitem, the_movecash
Tabele veza
tPA_Link, tHE_LinkCashRegCashReg, tHE_LinkFinReportMoveInstPay, tHE_LinkMove, tHE_LinkMoveIntrestRate, tHE_LinkMoveItem, tHE_LinkMoveItemMove, tHE_LinkMoveItemMoveItem, tHE_LinkMoveItemOrderItem, tHE_LinkMoveMove,tHE_LinkOrder, tHE_LinkOrderItem, tHE_LinkOrderItemOrderItem,tHE_LinkPayFgnTransMove, tHE_LinkPayOrderPayOrder, tHE_LinkSADItemMoveItem, tHE_LinkSADMove, tHE_LinkSADMoveItem, tHE_LinkSADSAD, tHE_LinkSetOffAcctTrans, tHF_LinkMoveWOEx, tHF_LinkMoveMove, tHF_LinkWOExWOEx, tHF_LinkMoveItemWOExItem, tHF_LinkMoveItemMoveItem
Osnovnim podešavanjima se pristupa iz developer setupa , izborom menija ERP integracija i odabirom taba Setup. U definiciji se inicijelno definišu osnovni šifarnici.
Neophodno je da se izvrši inicijelna razmena podataka šifarnika, kako bi bila formirana struktura poslovnih dogadjaja dokumenata, kako bi se dodatno definisala njihova razmena.
U tabeli definicija _el_ERP_Sync_API_Definitions su popunjene vrednosti iz setup-a import exporta za osnovne šifarnike i procedure koje će biti pozivane (kolona sqlProc) , kao i tip izvrašavanja Export/Import (kolona typeOfexec)
Kolona lastCH se popunjava nakon uspešne sinhronizacije sa vremenom kada je sinhronizacija pokrenuta, i prilikom sledeće sinhronizacije metode uzimaju to vreme za datume promene zapisa iz Pantheona , i sinhronizuju samo zapise od tog datuma.
Trajanje poziva jedne metode iz ručnog pokretanja import/exporta je vremenski ograničeno na 100 sekundi. Stoga je inicijelnu razmenu podataka pokrenuti direktno iz SQL-a, uz postvljanje automatskog job-a koji će raditi redovnu sinhronizaciju , a da ruča sinhronizacija služi kada ad-hoc treba pokre nuti import zbog nekih potrebnih izmena.
procedure [dbo].[_el_erp_pantheon_allformethod]
@method nvarchar(10)
Procedura izvršava kompletan importpodataka iz Pantheona na osnovu definicije.
U koliko je izvršavanje procedure sinhronizacije po ordredjenoj metodi bilo neuspešno , greške će se upisati u tabeli api_elastyc_error_log . Kada je sinhronizacija uspešna ona po toj metodi pobriše sve zapise iz ove tabele.
procedure [dbo].[erp_pantheon_CURR]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
Procedura izvršava import/export Valuta za definisani linkovani server i bazu podataka.
procedure [dbo].[erp_pantheon_AccountPlan]
@server varchar(100),
@database varchar(100),
@method varchar(10)
procedure [dbo].[erp_pantheon_AccountCode]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_acStatement]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_Drz]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure erp_pantheon_DocN
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10),
@posldog nchar(4)
procedure erp_pantheon_DocN_Idents
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10),
@acKeyDoc nchar(13),
@posldog nchar(4),
@userID int
procedure [dbo].[erp_pantheon_insertkontakt]
@kontakt int,
@subjekt nvarchar(50),
@prefix nvarchar(10),
@kontime nchar(30),
@kontprezime nchar(30),
@funkcija nchar(30),
@mob nvarchar(20),
@tel nvarchar(50),
@email nvarchar(50),
@adresa nvarchar(100),
@posta nchar(13),
@pol nvarchar(1),
@napomena nvarchar(500),
@drzava nvarchar(20),
@jmbg nvarchar(20),
@rodj datetime,
@skola nvarchar(100),
@status nvarchar(30),
@fieldnames nvarchar(2000),
@fieldvalues nvarchar(2000),
@username nvarchar(30),
@password nvarchar(30),
@grupa nvarchar(1),
@usergroup nvarchar(40),
@subjinformed nvarchar(1),
@genpass nvarchar(200),
@userid int,
@subjectprice nchar(30),
@contid int,
@jezik nvarchar(30),
@db nvarchar(max)
procedure [dbo].[erp_pantheon_KLASIF]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_MS]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_PM]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_posldog]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_posldog_stat]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_POST]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_PRSN]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10),
@acWorker nvarchar(30)
procedure [dbo].[erp_pantheon_SetAccount]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_SetParam]
@server varchar(100),
@database varchar(100),
@method varchar(10)
procedure [dbo].[erp_pantheon_SetTax]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_SUBJ]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
Procedura importuje subjekte iz Pantheona. Po importu će biti kreiran predmet subjekta u koliko se taj proces koristi iz Elastyca. U koliko je potrebno kreirati predmet za već postojećeg subjekta potrebno je pokrenuti i sledeću procedure
procedure _el_create_case_from_subjekt_21S01005014]
@client nvarchar(30), -- šifra subjekta
@userid int, -- user koji postavlja predmet
@skipupdate char(1) = "" -- obavezno "T"
procedure [dbo].[erp_pantheon_tHE_CostDrv]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_tHE_CostDrvStatus]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_ToP]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
create procedure [dbo].[erp_pantheon_UM]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
procedure [dbo].[erp_pantheon_VMS]
@server nvarchar(100),
@database nvarchar(100),
@method nvarchar(10)
Kako bi se ispravno koristili podaci koji neće biti importovani u Elastyc , neophodno je na Pantheon bayi kreirati sledeće procedure
create procedure [dbo].[_el_debt_subject] @subjekt nvarchar(30), @konta nvarchar(200)
as
set nocount on
declare @nasavaluta nvarchar(5),@valutakupca nvarchar(10),
@dospelo money, @nedospelo money,
@dana int, @ukupno money,
@limit float, @dnizaplac float, @konto nvarchar(15)
set @nasavaluta = (select nasavaluta from param)
select @limit=limit, @dnizaplac=dnizaplac, @valutakupca = valuta from subjekt where naziv=@subjekt
if @nasavaluta = @valutakupca
begin
select
(select sum(debet-KREDIT) from TEMEPOZ where SUBJEKT=@subjekt and KONTO in (select * from dbo.[CsvToInt](@konta))) as dugukupno,
(select sum(debet-KREDIT) from TEMEPOZ where SUBJEKT=@subjekt and KONTO in (select * from dbo.[CsvToInt](@konta))) as dugdospelo,
@limit as limit,
@dnizaplac as dnizaplac
end
else
begin
select VEZNIDOK, sum(valdebet-VALKREDIT), sum(valdebet-VALKREDIT),N"",N"",N"" from TEMEPOZ where SUBJEKT=@subjekt and KONTO in (select * from dbo.[CsvToInt](@konta))
group by VEZNIDOK
having sum(valdebet-valkredit) > 0
end
create procedure [dbo].[_elastyc_kontokartica] @subjekt nvarchar(30),@konto varchar(10)
as
declare @nasavaluta nvarchar(5) = (select nasavaluta from param),
@valutakupca nvarchar(10) = (select valuta from subjekt where naziv = @subjekt),
@datum date
set @datum = (SELECT [GKZACSTANJE] FROM PARAM)
if @nasavaluta = @valutakupca
begin
select teme.datum,temepoz.DATUMDOK,VEZNIDOK,DATUMVAL,temepoz.DEBET,temepoz.KREDIT, VALUTA, SUM(temepoz.debet-temepoz.kredit) OVER (ORDER BY datumdok) AS total
from temepoz,teme
where konto = @konto and subjekt = @subjekt and TEME.KLJUC=TEMEPOZ.kljuc
and teme.datum>=@datum
order by datum asc
end
else
begin
select teme.datum,temepoz.DATUMDOK,VEZNIDOK,DATUMVAL,temepoz.VALDEBET as DEBET,temepoz.VALKREDIT as KREDIT, VALUTA, SUM(temepoz.valdebet-temepoz.valkredit) OVER (ORDER BY datumdok) AS total
from temepoz,teme
where konto = @konto and subjekt = @subjekt and TEME.KLJUC=TEMEPOZ.kljuc
and teme.datum>=@datum
order by datum asc
end
create procedure _elastyc_otvorene_stavke @subjekt nvarchar(60), @konta nvarchar(200)
as
set nocount on;
declare @nasavaluta nvarchar(5),@valutakupca nvarchar(10)
set @nasavaluta = (select nasavaluta from param)
set @valutakupca = (select valuta from subjekt where naziv = @subjekt)
create table #tmpdug
(subjekt nvarchar(60),
dokument nvarchar(100),
debit float,
credit float,
suma float,
datum datetime,
datumdok datetime,
dana int)
if @nasavaluta = @valutakupca
begin
insert into #tmpdug
select @subjekt, VEZNIDOK collate database_default, sum(debet), sum(KREDIT), sum(debet-kredit),N"",N"",N""
from TEMEPOZ
where SUBJEKT collate database_default = @subjekt and KONTO collate database_default in (select * from dbo.[CsvToInt](@konta))
and DATUMDOK>=(select GKZACSTANJE from param)
group by VEZNIDOK
having sum(debet-kredit) > 0
end
else
begin
insert into #tmpdug
select @subjekt, VEZNIDOK collate database_default, sum(valdebet), sum(VALKREDIT), sum(valdebet-VALKREDIT),N"",N"",N""
from TEMEPOZ
where SUBJEKT collate database_default = @subjekt and KONTO collate database_default in (select * from dbo.[CsvToInt](@konta))
and DATUMDOK>=(select GKZACSTANJE from param)
group by VEZNIDOK
having sum(valdebet-valkredit) > 0
end
update #tmpdug set datum=(select top 1 DATUMVAL from temepoz where VEZNIDOK collate database_default=#tmpdug.dokument and DEBET>0 and KONTO collate database_default in (select * from dbo.[CsvToInt](@konta)) and DATUMDOK>=(select GKZACSTANJE from param) order by datum asc)
update #tmpdug set datumdok=(select top 1 datumdok from temepoz where VEZNIDOK collate database_default=#tmpdug.dokument and DEBET>0 and KONTO collate database_default in (select * from dbo.[CsvToInt](@konta)) and DATUMDOK>=(select GKZACSTANJE from param) order by datum asc)
update #tmpdug set dana=datediff(day,datum,getdate())
select @valutakupca as valuta,* from #tmpdug where suma<>0 order by datum
drop table #tmpdug