...and I am very happy with the performance.
I attachmend sample script from applications - really hundereds powerful tool.
Regards,
Marek Horodyski
/*
Synchronizacja CENGUR z produkcj¥.
*/
#define RDDI_CONNECT 1001
#define RDDI_EXECUTE 1003
#define RDDI_ERROR 1004
* #define RDDI_ERRORNO 1005
#define RDDI_DISCONNECT 1002
#define STALA_DNI 0
// # define current_date '2015-01-31'
NoActive
local n, i, v := v(), ts, stk, nrp, lp := {}, pokow := 0 //, debug
local tabCENGUR := {,,}
local tabmt := {,,}
local syncDisplay := hb_MutexCreate()
dbCloseAll(), v[ 19] += '\noweprod\exe\zi-2445(CGR)\'
Cls
? 'podˆ¥czenie do ˜rodowisk'
for n := 1 to 3
tabCENGUR[ n] := RDDINFO( 1001, { "OCILIB", "CENGURUAT", "CENGUR", strtran( memoread( '\noweprod\cenGur\passFile.'), eol(), '')}, 'SQLMIX' )
if tabCENGUR[ n] == 0
? 'brak polaczenia z Cengur'
KodKlaw( 0)
Return
end
end
? 'Obci©cie tabeli po˜redniej (ma by†T !) ...', RDDINFO( 1003, "truncate table CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR", 'SQLMIX', tabCENGUR[ 1])
KodKlaw( 3)
ts := hb_DateTime() // synchronizacja wˆa˜ciwa.
* ###############################################
for n := 1 to 3 ; tabmt[ n] := hb_threadStart( @Boss(), 'SYNCSRODOW', tabCENGUR[ n], n, @pokow, syncDisplay)
end
* ###############################################
DispOutAt( MaxRow() - 2, 0, 'Proces gˆ¢wny - oczekiwanie na zakonczenie synchronizacji...')
aEval( tabMT, { |x| if( x != Nil, hb_threadJoin( x), )})
? 'Zakonczono - proces posynchoronizacji wˆa˜ciwej.'
kill( 'SYNCSRODOW')
DBUSEAREA( .T., 'SQLMIX', "select count(*) zostalo
from T_SLS_CGR_INTERF_GUR_ASI_POSR
where typ_komunikatu = 'x'", "xxx", ,,, tabCENGUR[ 1])
xxx->( i := int( zostalo), dbCloseArea())
if i > 0
? 'rozpoznanie nowych warunk¢w i nowych danych klienta.'
? '3. nowe warunki ubezpieczenia - zmienione lub skorygowane warunki ubezpieczenia klienta na bie¾¥cy lub nast©pny miesi¥c'
if !RDDINFO( 1003, "
insert into T_SLS_CGR_INTERF_GUR_ASI_POSR
( typ_komunikatu,
nr_polisy ,
id_klienta ,
kod_klienta ,
numer_karty ,
rola_klienta ,
imie ,
imie2 ,
nazwisko ,
data_ur ,
pesel ,
plec ,
ulica ,
nr_domu ,
nr_lokalu ,
kod_pocztowy ,
poczta ,
miejscowosc ,
kraj ,
dpw ,
dkw ,
dpd ,
kod_oddzialu ,
kod_owu_podst ,
kod_owu ,
kod_zmiany ,
status ,
kod_swiadczeniodawcy ,
kod_zakresu ,
suma_ubezpieczenia ,
procent_wspolplacenia )
select
'3' typ_komunikatu , -- VARCHAR2 (1) NOT NULL
-- p.miesiac_obowiazywania , -- DATE NOT NULL
-- p.data_wpisu , -- TIMESTAMP (6) NOT NULL
p.nr_polisy , -- VARCHAR2 (16)
p.id_klienta , -- NUMBER NOT NULL
p.kod_klienta , -- VARCHAR2 (43) NOT NULL
p.numer_karty , -- VARCHAR2 (32) NOT NULL
p.rola_klienta , -- VARCHAR2 (1) NOT NULL
p.imie , -- VARCHAR2 (40) NOT NULL
p.imie2 , -- VARCHAR2 (40)
p.nazwisko , -- VARCHAR2 (40) NOT NULL
p.data_ur , -- DATE NOT NULL
p.pesel , -- VARCHAR2 (11) NOT NULL
p.plec , -- VARCHAR2 (1) NOT NULL
p.ulica , -- VARCHAR2 (50)
p.nr_domu , -- VARCHAR2 (15) NOT NULL
p.nr_lokalu , -- VARCHAR2 (15)
p.kod_pocztowy , -- VARCHAR2 (5)
p.poczta , -- VARCHAR2 (32)
p.miejscowosc , -- VARCHAR2 (32) NOT NULL
p.kraj , -- VARCHAR2 (50)
p.dpw , -- DATE NOT NULL
p.dkw , -- DATE NOT NULL
p.dpd , -- VARCHAR2 (6) NOT NULL
p.kod_oddzialu , -- VARCHAR2 (4) NOT NULL
p.kod_owu_podst , -- VARCHAR2 (6) NOT NULL
p.kod_owu , -- VARCHAR2 (6) NOT NULL
p.kod_zmiany , -- VARCHAR2 (7)
p.status , -- VARCHAR2 (1) NOT NULL
p.kod_swiadczeniodawcy , -- VARCHAR2 (4) NOT NULL
p.kod_zakresu , -- VARCHAR2 (20) NOT NULL
p.suma_ubezpieczenia , -- NUMBER (9)
p.procent_wspolplacenia -- NUMBER (5)
from t_sls_cgr_interf_gur_asi_posr p
join t_sls_cgr_interf_gur_asi s on p.nr_polisy = s.nr_polisy and s.wersja = 0
where p.typ_komunikatu = 'x'
and ( p.dpw != s.dpw or
p.dkw != s.dkw or
p.dpd != s.dpd or
p.suma_ubezpieczenia != s.suma_ubezpieczenia or
p.procent_wspolplacenia != s.procent_wspolplacenia)
", 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
else
RDDINFO( 1003, 'Commit', 'SQLMIX', tabCENGUR[ 1])
end
? '4. nowe dane klienta - zmienione lub skorygowane dane osobowe klienta na bie¾¥cy miesi¥c'
if !RDDINFO( 1003, "
insert into T_SLS_CGR_INTERF_GUR_ASI_POSR
( typ_komunikatu,
nr_polisy ,
id_klienta ,
kod_klienta ,
numer_karty ,
rola_klienta ,
imie ,
imie2 ,
nazwisko ,
data_ur ,
pesel ,
plec ,
ulica ,
nr_domu ,
nr_lokalu ,
kod_pocztowy ,
poczta ,
miejscowosc ,
kraj ,
dpw ,
dkw ,
dpd ,
kod_oddzialu ,
kod_owu_podst ,
kod_owu ,
kod_zmiany ,
status ,
kod_swiadczeniodawcy ,
kod_zakresu ,
suma_ubezpieczenia ,
procent_wspolplacenia )
select
'4' typ_komunikatu , -- VARCHAR2 (1) NOT NULL
-- p.miesiac_obowiazywania , -- DATE NOT NULL
-- p.data_wpisu , -- TIMESTAMP (6) NOT NULL
p.nr_polisy , -- VARCHAR2 (16)
p.id_klienta , -- NUMBER NOT NULL
p.kod_klienta , -- VARCHAR2 (43) NOT NULL
p.numer_karty , -- VARCHAR2 (32) NOT NULL
p.rola_klienta , -- VARCHAR2 (1) NOT NULL
p.imie , -- VARCHAR2 (40) NOT NULL
p.imie2 , -- VARCHAR2 (40)
p.nazwisko , -- VARCHAR2 (40) NOT NULL
p.data_ur , -- DATE NOT NULL
p.pesel , -- VARCHAR2 (11) NOT NULL
p.plec , -- VARCHAR2 (1) NOT NULL
p.ulica , -- VARCHAR2 (50)
p.nr_domu , -- VARCHAR2 (15) NOT NULL
p.nr_lokalu , -- VARCHAR2 (15)
p.kod_pocztowy , -- VARCHAR2 (5)
p.poczta , -- VARCHAR2 (32)
p.miejscowosc , -- VARCHAR2 (32) NOT NULL
p.kraj , -- VARCHAR2 (50)
p.dpw , -- DATE NOT NULL
p.dkw , -- DATE NOT NULL
p.dpd , -- VARCHAR2 (6) NOT NULL
p.kod_oddzialu , -- VARCHAR2 (4) NOT NULL
p.kod_owu_podst , -- VARCHAR2 (6) NOT NULL
p.kod_owu , -- VARCHAR2 (6) NOT NULL
p.kod_zmiany , -- VARCHAR2 (7)
p.status , -- VARCHAR2 (1) NOT NULL
p.kod_swiadczeniodawcy , -- VARCHAR2 (4) NOT NULL
p.kod_zakresu , -- VARCHAR2 (20) NOT NULL
p.suma_ubezpieczenia , -- NUMBER (9)
p.procent_wspolplacenia -- NUMBER (5)
from t_sls_cgr_interf_gur_asi_posr p
join t_sls_cgr_interf_gur_asi s on p.nr_polisy = s.nr_polisy and s.wersja = 0
where p.typ_komunikatu = 'x'
and ( p.dpw = s.dpw and
p.dkw = s.dkw and
p.dpd = s.dpd and
p.suma_ubezpieczenia = s.suma_ubezpieczenia and
p.procent_wspolplacenia = s.procent_wspolplacenia)
", 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
else
RDDINFO( 1003, 'Commit', 'SQLMIX', tabCENGUR[ 1])
end
end
? 'Przepisanie z tabel poËœrednich do interfejsu :'
for i := 1 to 4
?? stk := PadC( i, 1) // string typ komunikatu (typ komunikatu jako string)
if !RDDINFO( 1003, "
update T_SLS_CGR_INTERF_GUR_ASI
set wersja = wersja + 1
where nr_polisy in
( select nr_polisy
from T_SLS_CGR_INTERF_GUR_ASI_POSR where TYP_KOMUNIKATU = '&stk')", 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
else
if !RDDINFO( 1003, "
insert into CENGUR.T_SLS_CGR_INTERF_GUR_ASI (
ID_KOMUNIKATU, TYP_KOMUNIKATU, MIESIAC_OBOWIAZYWANIA, DATA_WPISU, NR_POLISY,
ID_KLIENTA, KOD_KLIENTA, NUMER_KARTY, ROLA_KLIENTA, IMIE, IMIE2, NAZWISKO,
DATA_UR, PESEL, PLEC, ULICA, NR_DOMU, NR_LOKALU, KOD_POCZTOWY, POCZTA,
MIEJSCOWOSC, KRAJ, DPW, DKW, DPD, KOD_ODDZIALU, KOD_OWU_PODST, KOD_OWU,
KOD_ZMIANY, STATUS, KOD_SWIADCZENIODAWCY, KOD_ZAKRESU, SUMA_UBEZPIECZENIA, PROCENT_WSPOLPLACENIA)
select
ID_KOMUNIKATU, TYP_KOMUNIKATU, MIESIAC_OBOWIAZYWANIA, DATA_WPISU, NR_POLISY,
ID_KLIENTA, KOD_KLIENTA, NUMER_KARTY, ROLA_KLIENTA, IMIE, IMIE2, NAZWISKO,
DATA_UR, PESEL, PLEC, ULICA, NR_DOMU, NR_LOKALU, KOD_POCZTOWY, POCZTA,
MIEJSCOWOSC, KRAJ, DPW, DKW, DPD, KOD_ODDZIALU, KOD_OWU_PODST, KOD_OWU,
KOD_ZMIANY, STATUS, KOD_SWIADCZENIODAWCY, KOD_ZAKRESU, SUMA_UBEZPIECZENIA, PROCENT_WSPOLPLACENIA
from CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR where TYP_KOMUNIKATU = '&stk'", 'SQLMIX', tabCENGUR[ 1])
? 'Nie poszlo :('
? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
else
* if !RDDINFO( 1003, "
* delete from T_SLS_CGR_INTERF_GUR_ASI_POSR where TYP_KOMUNIKATU = '&stk'
* ", 'SQLMIX', tabCENGUR[ 1])
* else
RDDINFO( 1003, 'Commit', 'SQLMIX', tabCENGUR[ 1])
* end
end
end
end
// komunikat '6' - rocznica polisy.
/*
DBUSEAREA( .T., 'SQLMIX', ;
"select trunc( current_date + STALA_DNI, 'mm') - trunc( current_date, 'mm') zmiana from dual", "ZMIANA", ,,, tabCENGUR[ 1])
if zmiana->zmiana > 0 // zmienia si© miesiac za STALA_DNI dni.
if !RDDINFO( 1003, ;
"insert into T_SLS_CGR_ASS_POLISY_ROCZNICA
( TYP_KOMUNIKATU, MIESIAC_OBOWIAZYWANIA, NR_POLISY, DATA_POCZATKU_ODP, KOD_OWU, KOD_PRODUKTU)
select '6' TYP_KOMUNIKATU, trunc( current_date + STALA_DNI, 'mm') miesiac_obowiazywania, nr_polisy, to_date( substr( dpd, 3, 4)||'-'||substr( dpd, 1, 2)||'-01', 'yyyy-mm-dd') dpd,
KOD_OWU, to_char( SUMA_UBEZPIECZENIA, '999999999')||'|'||to_char( PROCENT_WSPOLPLACENIA, '99')||'|'||subStr( KOD_ZAKRESU, -2, 2)||'|0' KOD_ZAKRESU
--, MONTHS_BETWEEN( trunc( current_date + STALA_DNI, 'mm'), to_date( substr( dpd, 3, 4)||'-'||substr( dpd, 1, 2)||'-01')) mies
from T_SLS_CGR_INTERF_GUR_ASI
where wersja = 0 and status = 'C' and MONTHS_BETWEEN( trunc( current_date + 0, 'mm'), to_date( substr( dpd, 3, 4)||'-'||substr( dpd, 1, 2)||'-01')) = 12
minus
select TYP_KOMUNIKATU, MIESIAC_OBOWIAZYWANIA, NR_POLISY, DATA_POCZATKU_ODP, KOD_OWU, KOD_PRODUKTU
from T_SLS_CGR_ASS_POLISY_ROCZNICA
where miesiac_obowiazywania = trunc( current_date + STALA_DNI, 'mm')
", 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1004,, 'SQLMIX', tabCENGUR[ 1])
? RDDINFO( 1005,, 'SQLMIX', tabCENGUR[ 1])
else
RDDINFO( 1003, 'Commit', 'SQLMIX', tabCENGUR[ 1])
end
end
zmiana->( dbCloseArea())
*/
? '-'
DispOutAt( MaxRow(), 2, 'Zakonczono po czasie ' + hb_tstostr( hb_NtoT( hb_dateTime() - ts)), 'I')
aEval( tabCENGUR, { |x| if( x != Nil .and. x > 0, RDDINFO( 1002, x),)})
__Wait( hb_DateTime())
Return
*----------------------------
//---------------------------
* #define #define #define #define #define #define
* #define #define #define #define #define #define
//---------------------------
*----------------------------
STATIC SYNCSRODOW
parameters connect, n, pokow, syncDisplay
local i, poks := {}, dbLink := "@l2GGR2" + ntos( n), lp, pok
local insert, polisa_nr := "", pok_polisa_nr := "", mdkw, mmo
DBUSEAREA( .T., 'SQLMIX', "select substr( username, 5, 4) pok from all_users&dbLink where username like 'GRK_%' and substr( username, -1, 1) != 'R' order by 1", "GGR", ,,, connect)
while !ggr->( eof()) ; ggr->( aadd( poks, Pok), dbSkip( 1))
end
ggr->( lp := Len( poks), dbCloseArea())
for i := 1 To lp // dla ka¾dego POK w danym ˜rodowisku zsynchronizuj : 1 - wygasˆe, 2 - nowe.
pok := poks[ i], ++pokow
if hb_MutexLock( syncDisplay)
? n, i, pok, '/', lp, dbLink, pokow
hb_MutexUnLock( syncDisplay), inKey( .25)
end
Do SyncWygasle
Do SyncNowe
Do SyncZmienione // r¢¾nego powodu (x)
end
Return
*----------------------------
Procedure SyncWygasle
// 2, poka¾ te kt¢re miaˆy C/1 i "znikn©ˆy" i wpisz do tabeli po˜redniej ...
if !RDDINFO( 1003, "
insert into CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR (
TYP_KOMUNIKATU ,
NR_POLISY ,
ID_KLIENTA ,
KOD_KLIENTA ,
NUMER_KARTY ,
IMIE ,
IMIE2 ,
NAZWISKO ,
DATA_UR ,
PESEL ,
PLEC ,
ULICA ,
NR_DOMU ,
NR_LOKALU ,
KOD_POCZTOWY ,
POCZTA ,
MIEJSCOWOSC ,
KRAJ ,
DPW ,
DKW ,
DPD ,
KOD_ODDZIALU ,
KOD_OWU_PODST ,
KOD_OWU ,
KOD_ZMIANY ,
STATUS ,
KOD_SWIADCZENIODAWCY ,
KOD_ZAKRESU ,
SUMA_UBEZPIECZENIA ,
PROCENT_WSPOLPLACENIA)
select '2' typ, NR_POLISY, ID_KLIENTA, KOD_KLIENTA, NUMER_KARTY, IMIE, IMIE2, NAZWISKO, DATA_UR,
PESEL, PLEC, ULICA, NR_DOMU, NR_LOKALU, KOD_POCZTOWY, POCZTA, MIEJSCOWOSC, KRAJ,
DPW, DKW, DPD, KOD_ODDZIALU, KOD_OWU_PODST, KOD_OWU,
KOD_ZMIANY, STATUS, KOD_SWIADCZENIODAWCY, KOD_ZAKRESU,
SUMA_UBEZPIECZENIA, PROCENT_WSPOLPLACENIA
from T_SLS_CGR_INTERF_GUR_ASI c
left join grk_&pok..rd&dbLink rd on substr( c.nr_polisy, 6) = rd.rd_typ_pol||'/'||ltrim( to_char( rd_nr_pol, '099999')) and rd.rd_kod_owu = 'LAKP30' and rd.rd_ident != 0 and rd.is_deleted = 'N' and rd.rd_kod = 'C'
where c.kod_oddzialu = '&pok' and c.wersja = 0 and c.typ_komunikatu = '1' and rd.rd_ident is null
", 'SQLMIX', connect)
? 'Wygasle 0'
? RDDINFO( 1004,, 'SQLMIX', connect)
? RDDINFO( 1005,, 'SQLMIX', connect)
Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()))
else
RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
end
// dpisz dkw i miesiac_obowiazywania dla 2 - nie ma odpowiedzialnosci
dbUseArea( .T., 'SQLMIX', "
select nr_polisy, substr( nr_polisy, 1, 4) pok, substr( nr_polisy, 6) polisa
from t_sls_cgr_interf_gur_asi_posr
where substr( nr_polisy, 1, 4) = '&pok'
", "NIEMA", ,,, connect)
while !nieMa->( eof()) // wstaw dat© koäca i miesi¥c obowi¥zywania
nieMa->( m->polisa_nr := field->polisa, m->pok_polisa_nr := field->nr_polisy, dbSkip( 1))
dbUseArea( .T., 'SQLMIX', "
select to_char( rd_dataoDO, 'yyyy-mm-dd') dkw
from ( select rd_ident, rd_dataoDO, rd_nrkol, row_number() over( partition by rd_nr_pol, rd_typ_pol order by rd_nrkol desc) lp
from grk_&pok..rd&dbLink rd
where is_deleted = 'N' and rd_kod_owu = 'LAKP30' and rd_typ_pol||'/'||ltrim( to_char( rd_nr_pol, '099999')) = '&polisa_nr'
) where lp = 1", "DKW", ,,, connect) // drugie zapytanie na tym samym poˆ¥czeniu.
if !dkw->( eof())
mdkw := dkw->dkw
if !RDDINFO( 1003, "
update t_sls_cgr_interf_gur_asi_posr x
set dkw = '&mdkw'
, miesiac_obowiazywania = trunc( last_day( current_date), 'dd') + 1
where typ_komunikatu = 2 and nr_polisy = '&pok_polisa_nr'
", 'SQLMIX', connect)
? 'Wygasle 1'
? RDDINFO( 1004,, 'SQLMIX', connect)
? RDDINFO( 1005,, 'SQLMIX', connect)
Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()) + "mdkw
update t_sls_cgr_interf_gur_asi_posr x
set dkw = '&mdkw'
, miesiac_obowiazywania = trunc( last_day( current_date), 'dd') + 1
where typ_komunikatu = 2 and nr_polisy = '&pok_polisa_nr'")
? dkw->dkw, valtype( dkw->dkw), mdkw
dkw->( dbCloseArea())
exit
else
RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
end
else
if !RDDINFO( 1003, "
update t_sls_cgr_interf_gur_asi_posr x
set dkw = trunc( last_day( current_date), 'dd') + 1
, miesiac_obowiazywania = trunc( last_day( current_date), 'dd') + 2 // celowo bˆ©dnie 2 a nie jeden. TESTY!!!
where typ_komunikatu = 2 and nr_polisy = '&pok_polisa_nr'
", 'SQLMIX', connect)
? 'Wygasle 2'
? RDDINFO( 1004,, 'SQLMIX', connect)
? RDDINFO( 1005,, 'SQLMIX', connect)
Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()) + "Null
update t_sls_cgr_interf_gur_asi_posr x
set dkw = trunc( last_day( current_date), 'dd') + 1
, miesiac_obowiazywania = trunc( last_day( current_date), 'dd') + 1
where typ_komunikatu = 2 and nr_polisy = '&pok_polisa_nr'")
else
RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
end
end
dkw->( dbCloseArea())
end
nieMa->( dbCloseArea())
return
*----------------------------
Procedure SyncNowe
// 1, poka¾ te kt¢re nie miaˆy C/1 a si© pojawiˆy i wpisz do tabeli po˜redniej ...
if !RDDINFO( 1003, "
insert into CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR (
TYP_KOMUNIKATU ,
NR_POLISY ,
ID_KLIENTA ,
KOD_KLIENTA ,
NUMER_KARTY ,
IMIE ,
IMIE2 ,
NAZWISKO ,
DATA_UR ,
PESEL ,
PLEC ,
ULICA ,
NR_DOMU ,
NR_LOKALU ,
KOD_POCZTOWY ,
POCZTA ,
MIEJSCOWOSC ,
KRAJ ,
DPW ,
DKW ,
DPD ,
KOD_ODDZIALU ,
KOD_OWU_PODST ,
KOD_OWU ,
KOD_ZMIANY ,
STATUS ,
KOD_SWIADCZENIODAWCY ,
KOD_ZAKRESU ,
SUMA_UBEZPIECZENIA ,
PROCENT_WSPOLPLACENIA)
select '1' typ, do.insp||'/'||ru.typ||'/'||ltrim( to_char( ru.polisa, '099999')) polisa, kl.id_klienta, kl.kod_klient kod_klienta,
kl.karta_l nr_karty, replace( ru.u_imie1, chr( 39), '-') imie, replace( ru.u_imie2, chr( 39), '-') imie2, replace( ru.u_nazwisko, chr( 39), '-') nazwisko, ru.data_ur,
replace( ru.pesel, chr( 39), '-') pesel, ru.plec, replace( ru.kulica, chr( 39), '-') ulica, replace( ru.knr_domu, chr( 39), '-') nr_domu,
replace( ru.knr_lokalu, chr( 39), '-') nr_lokalu, replace( ru.kkod_pt, chr( 39), '-') kod_poczt, replace( ru.kpoczta, chr( 39), '-') poczta,
replace( ru.kmiejsc, chr( 39), '-') miejscowosc, replace( ru.kkraj, chr( 39), '-') kraj,
rd.rd_dataood dpw, rd.rd_dataodo dkw, rd.rd_dpu dpd,
do.insp, ta.warumowy kod_owu_podst, rd.rd_kod_owu kod_owu, rd.rd_kodzmia kod_zmiany, rd.rd_kod status, rd.rd_siec_sw kod_swiadczeniodawcy, rd.rd_zest_l kod_zakresu,
rd.rd_s_ubezp suma_ubezpieczenia, rd.rd_proc_w procent_wspolplacenia
from grk_&pok..rd&dbLink rd
join grk_&pok..do&dbLink do on 1=1 and do.is_deleted = 'N'
join grk_&pok..ru&dbLink ru on ru.polisa = rd_nr_pol and ru.typ = rd.rd_typ_pol and ru.is_deleted = 'N'
join grk_&pok..kl&dbLink kl on kl.rd_ident = rd.rd_ident and kl.is_deleted = 'N'
join grk_&pok..ta&dbLink ta on ta.rodz_t = ru.rodz_t and ta.typ = ru.typ and ta.is_deleted = 'N'
left join T_SLS_CGR_INTERF_GUR_ASI xx on do.insp||'/'||ru.typ||'/'||ltrim( to_char( ru.polisa, '099999')) = xx.nr_polisy and xx.wersja = 0
where rd.rd_kod_owu = 'LAKP30'
and rd.rd_ident != 0
and rd.is_deleted = 'N'
and rd.rd_kod = 'C'
and ( rd.rd_kodzmia <> 'MZ00003' or exists ( select 1
from grk_&pok..pt&dbLink pt
where pt.is_deleted='N'
and pt.status='N'
and pt.typ_nw=rd.rd_kod_dod
and pt.polisa_nw=rd.rd_ident ))
and ( rd.rd_dataood < current_date or current_date + 3 > rd.rd_dataood )
and ( xx.nr_polisy is null or xx.typ_komunikatu = 2)
", 'SQLMIX', connect)
? 'Nowe'
? RDDINFO( 1004,, 'SQLMIX', connect)
? RDDINFO( 1005,, 'SQLMIX', connect)
Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()))
else
RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
end
return
*----------------------------
Procedure SyncZmienione
if !RDDINFO( 1003, "
insert into CENGUR.T_SLS_CGR_INTERF_GUR_ASI_POSR (
TYP_KOMUNIKATU ,
NR_POLISY ,
ID_KLIENTA ,
KOD_KLIENTA ,
NUMER_KARTY ,
IMIE ,
IMIE2 ,
NAZWISKO ,
DATA_UR ,
PESEL ,
PLEC ,
ULICA ,
NR_DOMU ,
NR_LOKALU ,
KOD_POCZTOWY ,
POCZTA ,
MIEJSCOWOSC ,
KRAJ ,
DPW ,
DKW ,
DPD ,
KOD_ODDZIALU ,
KOD_OWU_PODST ,
KOD_OWU ,
KOD_ZMIANY ,
STATUS ,
KOD_SWIADCZENIODAWCY ,
KOD_ZAKRESU ,
SUMA_UBEZPIECZENIA ,
PROCENT_WSPOLPLACENIA)
select 'x' typ, do.insp||'/'||ru.typ||'/'||ltrim( to_char( ru.polisa, '099999')) polisa, kl.id_klienta, kl.kod_klient kod_klienta,
kl.karta_l nr_karty, replace( ru.u_imie1, chr( 39), '-') imie, replace( ru.u_imie2, chr( 39), '-') imie2, replace( ru.u_nazwisko, chr( 39), '-') nazwisko, ru.data_ur,
replace( ru.pesel, chr( 39), '-') pesel, ru.plec, replace( ru.kulica, chr( 39), '-') ulica, replace( ru.knr_domu, chr( 39), '-') nr_domu,
replace( ru.knr_lokalu, chr( 39), '-') nr_lokalu, replace( ru.kkod_pt, chr( 39), '-') kod_poczt, replace( ru.kpoczta, chr( 39), '-') poczta,
replace( ru.kmiejsc, chr( 39), '-') miejscowosc, replace( ru.kkraj, chr( 39), '-') kraj,
rd.rd_dataood dpw, rd.rd_dataodo dkw, rd.rd_dpu dpd,
do.insp, ta.warumowy kod_owu_podst, rd.rd_kod_owu kod_owu, rd.rd_kodzmia kod_zmiany, rd.rd_kod status, rd.rd_siec_sw kod_swiadczeniodawcy, rd.rd_zest_l kod_zakresu,
rd.rd_s_ubezp suma_ubezpieczenia, rd.rd_proc_w procent_wspolplacenia
from grk_&pok..rd&dbLink rd
join grk_&pok..do&dbLink do on 1=1 and do.is_deleted = 'N'
join grk_&pok..ru&dbLink ru on ru.polisa = rd_nr_pol and ru.typ = rd.rd_typ_pol and ru.is_deleted = 'N'
join grk_&pok..kl&dbLink kl on kl.rd_ident = rd.rd_ident and kl.is_deleted = 'N'
join grk_&pok..ta&dbLink ta on ta.rodz_t = ru.rodz_t and ta.typ = ru.typ and ta.is_deleted = 'N'
where rd.rd_kod_owu = 'LAKP30'
and rd.rd_ident != 0
and rd.is_deleted = 'N'
and rd.rd_kod = 'C'
and ( rd.rd_kodzmia <> 'MZ00003' or exists ( select 1
from grk_&pok..pt&dbLink pt
where pt.is_deleted='N'
and pt.status='N'
and pt.typ_nw=rd.rd_kod_dod
and pt.polisa_nw=rd.rd_ident ))
and ( rd.rd_dataood < current_date or current_date + 3 > rd.rd_dataood )
minus
select 'x' typ, NR_POLISY, ID_KLIENTA, KOD_KLIENTA, NUMER_KARTY, IMIE, IMIE2, NAZWISKO, DATA_UR,
PESEL, PLEC, ULICA, NR_DOMU, NR_LOKALU, KOD_POCZTOWY, POCZTA, MIEJSCOWOSC, KRAJ,
DPW, DKW, DPD, KOD_ODDZIALU, KOD_OWU_PODST, KOD_OWU,
KOD_ZMIANY, STATUS, KOD_SWIADCZENIODAWCY, KOD_ZAKRESU,
SUMA_UBEZPIECZENIA, PROCENT_WSPOLPLACENIA
from T_SLS_CGR_INTERF_GUR_ASI
where kod_oddzialu = '&pok' and wersja = 0
", 'SQLMIX', connect)
Na_Dysk( 'err_sync_asi', hb_tsTostr( hb_DateTime()))
? 'Zmienione'
? RDDINFO( 1004,, 'SQLMIX', connect)
? RDDINFO( 1005,, 'SQLMIX', connect)
else
RDDINFO( 1003, 'Commit', 'SQLMIX', connect)
end
return
*----------------------------
Saudações,
Itamar M. Lins Jr.