· 6 years ago · Sep 03, 2019, 04:50 PM
1SET DEFINE OFF;
2-- Lock Database
3UPDATE FMBANK_CHANGE_LOG_LOCKS SET LOCKED = 1, LOCKEDBY = '172.17.0.1 (172.17.0.1)', LOCKGRANTED = to_timestamp('2019-09-03 18:35:54.968', 'YYYY-MM-DD HH24:MI:SS.FF') WHERE ID = 1 AND LOCKED = 0;
4-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-4252-addExternalApplication::slawomir.surkont
5insert into dynamic_routing_configs (
6 id,
7 version,
8 bank_id,
9 service_operation_name,
10 operation_type,
11 address_uri,
12 core_endpoint,
13 creation_date,
14 modification_date
15)
16(
17 select
18 E_ID_SEQ.nextval,
19 version,
20 bank_id,
21 substr(service_operation_name, 1, instr(c.service_operation_name, '.', -1)) || 'addExternalApplication',
22 operation_type,
23 address_uri,
24 core_endpoint,
25 sysdate,
26 sysdate
27 from dynamic_routing_configs c
28 where c.service_operation_name = 'core.CustomerOrders.ApplicationManagementService.1.0.closeApplicationFrame'
29);
30commit;
31INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-4252-addExternalApplication', 'slawomir.surkont', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1700, '7:2c71ce0be18436dbdac8799ea3138a83', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
32-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::NESTBANKDU-222_Obsluga_czasow_autoryzacyjnych_wymaganych_przez_mCommerce::radoslaw.klimek
33ALTER TABLE AUTH_AUTHORIZATION_CODES ADD AUTHORIZATION_TIMEOUT_SEC NUMBER(19, 0);
34INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NESTBANKDU-222_Obsluga_czasow_autoryzacyjnych_wymaganych_przez_mCommerce', 'radoslaw.klimek', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1701, '7:8e7a3ba0adb18576b5dc208486e897eb', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
35-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-4250-findNewBimClient::msinica
36insert into dynamic_routing_configs (
37 id,
38 version,
39 bank_id,
40 service_operation_name,
41 operation_type,
42 address_uri,
43 core_endpoint,
44 creation_date,
45 modification_date
46)
47(
48 select
49 E_ID_SEQ.nextval,
50 version,
51 bank_id,
52 substr(service_operation_name, 1, instr(c.service_operation_name, '.', -1)) || 'findNewBimClient',
53 operation_type,
54 address_uri,
55 core_endpoint,
56 sysdate,
57 sysdate
58 from dynamic_routing_configs c
59 where c.service_operation_name = 'core.CustomerOrders.ApplicationManagementService.1.0.closeApplicationFrame'
60);
61INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-4250-findNewBimClient', 'msinica', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1702, '7:94afcc6ae3f85ddefb40879022cf6835', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
62-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-4710-lock_unlock_card::slawek.surkont
63insert into dynamic_routing_configs (
64 id,
65 version,
66 bank_id,
67 service_operation_name,
68 operation_type,
69 address_uri,
70 core_endpoint,
71 creation_date,
72 modification_date
73)
74(
75 select
76 E_ID_SEQ.nextval,
77 t.version,
78 t.bank_id,
79 substr(t.service_operation_name, 1, instr(t.service_operation_name, '.', -1)) || 'lockUnlockCard',
80 t.operation_type,
81 t.address_uri,
82 t.core_endpoint,
83 sysdate,
84 sysdate
85 from dynamic_routing_configs t
86 where t.service_operation_name ='core.Cards.CardManagementService.1.0.restrictCard'
87 and t.operation_type = 'BZWBK'
88);
89insert into dynamic_routing_configs (
90 id,
91 version,
92 bank_id,
93 service_operation_name,
94 operation_type,
95 address_uri,
96 core_endpoint,
97 creation_date,
98 modification_date
99)
100(
101 select
102 E_ID_SEQ.nextval,
103 t.version,
104 t.bank_id,
105 substr(t.service_operation_name, 1, instr(t.service_operation_name, '.', -1)) || 'lockUnlockCard',
106 t.operation_type,
107 t.address_uri,
108 'jca://eis/DB/DEF3000_200',
109 sysdate,
110 sysdate
111 from dynamic_routing_configs t
112 where t.service_operation_name ='core.Cards.CardManagementService.1.0.restrictCard'
113 and t.operation_type = 'DEF'
114);
115INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-4710-lock_unlock_card', 'slawek.surkont', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1703, '7:a88a2784bd6f9a7af8ecf937f26085ea', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
116-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-4710-add_column_BLOCKADE_REASON_to_CARDS::slawek.surkont
117ALTER TABLE CARDS ADD BLOCKADE_REASON VARCHAR2(200);
118ALTER TABLE LC_WD_BIM_CARDS ADD BLOCKADE_REASON VARCHAR2(200);
119ALTER TYPE REC_CARDS ADD ATTRIBUTE Blockade_Reason VARCHAR2(200) CASCADE;
120COMMENT ON COLUMN CARDS.BLOCKADE_REASON IS 'Przyczyna czasowego zablokowania karty';
121INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-4710-add_column_BLOCKADE_REASON_to_CARDS', 'slawek.surkont', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1704, '7:f6a9208420440004905fc5dab0db7ec8', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
122-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-4710-bdy_synch_kartoteczne::slawek.surkont
123/
124INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-4710-bdy_synch_kartoteczne', 'slawek.surkont', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1705, '7:bc4106fafae62f386e18f64dbb527a35', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
125-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ_3443_add_pad_account_column::msinica
126ALTER TABLE ACC_ACCOUNT_TYPES ADD IS_PAD NUMBER(1) DEFAULT 0 NOT NULL;
127COMMENT ON COLUMN ACC_ACCOUNT_TYPES.IS_PAD IS 'Czy konto jest PAD?';
128INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ_3443_add_pad_account_column', 'msinica', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1706, '7:09dbf40cd7c99ad0c583c99ed53d0f94', 'sqlFile', '', 'EXECUTED', 'prod, test', NULL, '3.5.4', '7528571049');
129-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-4645-swb-stmt-headers::dkuzma
130CREATE OR REPLACE FORCE VIEW "CA_PENDING_STMT_HEADERS" ("WD_ID", "EXTORE_ACCOUNT_ID", "STMT_DATE", "DATE_FROM",
131"DATE_TO", "DESCRIPTION", "STATEMENT_TYPE")
132AS
133 (SELECT To_Char(CAST(Wd.Id AS NUMBER(19))) WD_ID
134 ,Cai.Extore_Id EXTORE_ACCOUNT_ID
135 ,CAST(Wd.Creation_Date AS TIMESTAMP) STMT_DATE
136 ,CAST(Wd.Date_From AS DATE) DATE_FROM
137 ,CAST(Wd.Date_To AS DATE) DATE_TO
138 ,CAST(Wd.Title AS VARCHAR2(50 CHAR)) DESCRIPTION ,
139 Wd.Statement_Type
140 FROM Wd_Swb_Statement_Headers Wd
141 LEFT JOIN Statement_Header_Identifiers Shi
142 ON Shi.Key = 'SWB_ID'
143 AND Shi.Bank_Id = 200
144 AND Shi.Value = To_Char(CAST(Wd.Id AS NUMBER(19)))
145 JOIN Current_Account_Identifiers Cai
146 ON Cai.Key = 'DEF_ID_3K'
147 AND Cai.Bank_Id = 200
148 AND Cai.Value = Wd.Account_Id
149 AND Shi.Id IS NULL)
150/
151CREATE OR REPLACE FORCE VIEW "CC_PENDING_STMT_HEADERS" ("WD_ID", "CARD_PRODUCT_ID", "STMT_DATE", "DATE_FROM", "DATE_TO", "DESCRIPTION") AS
152 (SELECT To_Char(CAST(Wd.Id AS NUMBER(19))) WD_ID
153 ,Cps.Id CARD_PRODUCT_ID
154 ,CAST(Wd.Creation_Date AS TIMESTAMP) STMT_DATE
155 ,CAST(Wd.Date_From AS DATE) DATE_FROM
156 ,CAST(Wd.Date_To AS DATE) DATE_TO
157 ,CAST(Wd.Title AS VARCHAR2(50 CHAR)) DESCRIPTION
158 FROM Wd_Swb_Statement_Headers Wd
159 JOIN Card_Product_Source Cps
160 ON Cps.Bank_Id = 200
161 AND Cps.Product_Source_Id = CAST(Wd.Account_Id AS NUMBER(19))
162 LEFT JOIN Credit_Card_Sh_Identifiers Ccshi
163 ON Ccshi.Key = 'SWB_ID'
164 AND Ccshi.Bank_Id = 200
165 AND Ccshi.Value = To_Char(CAST(Wd.Id AS NUMBER(19)))
166 WHERE Upper(Wd.Statement_Type) = 'CC' AND Ccshi.Id IS NULL)
167/
168DELETE FROM EXION.SYNCH_STEPS_DICT WHERE STEP_NAME IN ('SYNCH_KARTOTECZNE.Prc_Wyciagi_Ca', 'SYNCH_KARTOTECZNE.Prc_Wyciagi_Cc')
169/
170INSERT INTO EXOA_CONFIG(NAME, VALUE, BANK_ID, IS_CACHE) VALUES ('quartz.cronexpression.caStatementHeadersConfJob', '* 0/12 * * * ?', 0, 0)
171/
172INSERT INTO EXOA_CONFIG(NAME, VALUE, BANK_ID, IS_CACHE) VALUES ('quartz.cronexpression.ccStatementHeadersConfJob', '* 0/12 * * * ?', 0, 0)
173/
174INSERT INTO EXOA_CONFIG(NAME, VALUE, BANK_ID, IS_CACHE) VALUES ('exoa.synchronization.swb.statement.header.fetch.days', '1', 0, 0)
175/
176INSERT INTO EXOA_CONFIG(NAME, VALUE, BANK_ID, IS_CACHE) VALUES ('exoa.synchronization.swb.statement.chunkSize', '1', 0, 0)
177/
178INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-4645-swb-stmt-headers', 'dkuzma', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1707, '7:31725591bc13701e2d6cb08a83e2484b', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
179-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-3877_optimum_card_change.sql::dkuzma
180alter table CRD_CARD_TYPES add(IS_OPTIMUM NUMBER(1,0) DEFAULT 0 NOT NULL);
181alter table CRD_CARD_TYPES add(EXTERNAL_TRANSFER_AVAILABLE NUMBER(1,0) DEFAULT 1 NOT NULL);
182alter table CRD_CARD_TYPES add(OWN_TRANSFER_AVAILABLE NUMBER(1,0) DEFAULT 1 NOT NULL);
183alter table CRD_CARD_TYPES add(CHANGE_ATM_LIMITS NUMBER(1,0) DEFAULT 1 NOT NULL);
184alter table CARDS add(ATM_BALANCE_LIMIT VARCHAR2(100) DEFAULT 0 NOT NULL);
185alter table CARDS add(ATM_LIMIT_AVAILABLE VARCHAR2(100) DEFAULT 0 NOT NULL);
186INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-3877_optimum_card_change.sql', 'dkuzma', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1708, '7:f7056d1c45fcaea05d3f3234438f4d96', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
187-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-3877_optimum_card_bdy_synch_kartoteczne::dkuzma
188ALTER TYPE REC_CARDS ADD ATTRIBUTE Atm_Balance_Limit VARCHAR2(100 CHAR) CASCADE
189ALTER TYPE REC_CARDS ADD ATTRIBUTE Atm_Limit_Available VARCHAR2 (100 CHAR) CASCADE
190/
191INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-3877_optimum_card_bdy_synch_kartoteczne', 'dkuzma', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1709, '7:4edfa9335857d88475ddbe24610a78a1', 'sqlFile', '', 'EXECUTED', 'prod,test,synch', NULL, '3.5.4', '7528571049');
192-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::ZZ-4645-update-swb-stmt-headers::dkuzma
193create or replace procedure SYNC_LC_WD_STATEMENTS
194(
195 days in number default 2
196) as
197begin
198 insert into LC_Wd_Swb_Statement_Headers (select Wd.* from Wd_Swb_Statement_Headers Wd LEFT JOIN LC_Wd_Swb_Statement_Headers Lcwd ON Lcwd.id=Wd.id WHERE Wd.Modification_Date >= (CURRENT_DATE-days) AND lcwd.id IS NULL);
199end SYNC_LC_WD_STATEMENTS;
200/
201CREATE OR REPLACE FORCE VIEW "CA_PENDING_STMT_HEADERS" ("WD_ID", "EXTORE_ACCOUNT_ID", "STMT_DATE", "DATE_FROM",
202"DATE_TO", "DESCRIPTION", "STATEMENT_TYPE")
203AS
204 (SELECT To_Char(CAST(Wd.Id AS NUMBER(19))) WD_ID
205 ,Cai.Extore_Id EXTORE_ACCOUNT_ID
206 ,CAST(Wd.Creation_Date AS TIMESTAMP) STMT_DATE
207 ,CAST(Wd.Date_From AS DATE) DATE_FROM
208 ,CAST(Wd.Date_To AS DATE) DATE_TO
209 ,CAST(Wd.Title AS VARCHAR2(50 CHAR)) DESCRIPTION ,
210 Wd.Statement_Type
211 FROM Lc_Wd_Swb_Statement_Headers Wd
212 LEFT JOIN Statement_Header_Identifiers Shi
213 ON Shi.Key = 'SWB_ID'
214 AND Shi.Bank_Id = 200
215 AND Shi.Value = To_Char(CAST(Wd.Id AS NUMBER(19)))
216 JOIN Current_Account_Identifiers Cai
217 ON Cai.Key = 'DEF_ID_3K'
218 AND Cai.Bank_Id = 200
219 AND Cai.Value = Wd.Account_Id
220 AND Shi.Id IS NULL)
221/
222CREATE OR REPLACE FORCE VIEW "CC_PENDING_STMT_HEADERS" ("WD_ID", "CARD_PRODUCT_ID", "STMT_DATE", "DATE_FROM", "DATE_TO", "DESCRIPTION") AS
223 (SELECT To_Char(CAST(Wd.Id AS NUMBER(19))) WD_ID
224 ,Cps.Id CARD_PRODUCT_ID
225 ,CAST(Wd.Creation_Date AS TIMESTAMP) STMT_DATE
226 ,CAST(Wd.Date_From AS DATE) DATE_FROM
227 ,CAST(Wd.Date_To AS DATE) DATE_TO
228 ,CAST(Wd.Title AS VARCHAR2(50 CHAR)) DESCRIPTION
229 FROM Lc_Wd_Swb_Statement_Headers Wd
230 JOIN Card_Product_Source Cps
231 ON Cps.Bank_Id = 200
232 AND Cps.Product_Source_Id = CAST(Wd.Account_Id AS NUMBER(19))
233 LEFT JOIN Credit_Card_Sh_Identifiers Ccshi
234 ON Ccshi.Key = 'SWB_ID'
235 AND Ccshi.Bank_Id = 200
236 AND Ccshi.Value = To_Char(CAST(Wd.Id AS NUMBER(19)))
237 WHERE Upper(Wd.Statement_Type) = 'CC' AND Ccshi.Id IS NULL)
238/
239BEGIN
240 DBMS_SCHEDULER.CREATE_JOB (
241 job_name => 'SWB_SYNC',
242 job_type => 'STORED_PROCEDURE',
243 job_action => 'SYNC_LC_WD_STATEMENTS',
244 number_of_arguments => 0,
245 start_date => NULL,
246 repeat_interval => 'FREQ=MINUTELY;INTERVAL=12',
247 end_date => NULL,
248 enabled => FALSE,
249 auto_drop => FALSE,
250 comments => 'SWB Oracle Job');
251 DBMS_SCHEDULER.SET_ATTRIBUTE(
252 name => 'SWB_SYNC',
253 attribute => 'job_priority', value => 1);
254 DBMS_SCHEDULER.SET_ATTRIBUTE(
255 name => 'SWB_SYNC',
256 attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);
257 DBMS_SCHEDULER.enable(name => 'SWB_SYNC');
258END;
259/
260INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-4645-update-swb-stmt-headers', 'dkuzma', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1710, '7:f974c7ea1751c3477b777e211bd6575d', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
261-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::FDS-integration_with_FDS::slawek.surkont
262create table ORDERS_FDS
263(
264 id number(19) not null,
265 order_id number(19) not null,
266 message_id varchar2(25) not null,
267 status_fds varchar2(20),
268 error_fds varchar2(512),
269 version number(5),
270 bank_id varchar2(256),
271 creation_date timestamp(6),
272 modification_date timestamp(6)
273);
274alter table ORDERS_FDS
275 add constraint PK_FDS_ID primary key (ID);
276comment on table ORDERS_FDS
277 is 'EXOA - audit FDS';
278comment on column ORDERS_FDS.id
279 is 'Identifier';
280comment on column ORDERS_FDS.order_id
281 is 'Order identifier';
282comment on column ORDERS_FDS.message_id
283 is 'Message identifier from ORDER_LINE.PAYLOAD sent fo FDS';
284comment on column ORDERS_FDS.status_fds
285 is 'Status received from FDS';
286comment on column ORDERS_FDS.error_fds
287 is 'Error received from FDS or error occured during communication with FDS';
288comment on column ORDERS_FDS.version
289 is 'Version';
290comment on column ORDERS_FDS.bank_id
291 is 'Bank identifier';
292comment on column ORDERS_FDS.creation_date
293 is 'Creation date';
294comment on column ORDERS_FDS.modification_date
295 is 'Modification date';
296create index ORDER_FDS_IFK1 on ORDERS_FDS (order_id);
297alter table ORDERS_FDS
298 add constraint FK_OF_OR foreign key (ORDER_ID)
299 references orders (ID);
300INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('FDS-integration_with_FDS', 'slawek.surkont', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1711, '7:3a77826554e0b0d81c3eccefae2e1cfd', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
301-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::FDS-dynamic_routig_config::slawek.surkont
302insert into dynamic_routing_configs (
303 id,
304 version,
305 bank_id,
306 service_operation_name,
307 operation_type,
308 address_uri,
309 core_endpoint,
310 creation_date,
311 modification_date
312)
313values (
314 E_ID_SEQ.nextval,
315 0,
316 200,
317 'core.FDS.TransferManagementService.1.0.checkTransfer',
318 '',
319 'adapter.FDS.TransferManagementService/1.0/adapter.FDS.TransferManagementService',
320 '${fdsHost}/api/VerificationTransfer/checkTransfer',
321 sysdate,
322 sysdate
323);
324INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('FDS-dynamic_routig_config', 'slawek.surkont', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1712, '7:6181492ff314cdb60865946ac5176168', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
325-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::FDS-mapowanie_bledow::slawek.surkont
326insert into exoa_config(name, value, bank_id)
327values('FDS_TIMEOUT_FOR_DEFINITIVE_STATUS', 'PT60M', 200);
328insert into exoa_config(name, value, bank_id)
329values('FDS_ACTIVE', '1', 200);
330insert into error_registry (error_code, error_description, error_type, system, creation_date, modification_date)
331values ('8914', 'Przelew odrzucony przez FDS', 'B', 'EXOA', sysdate, sysdate);
332insert into error_registry (error_code, error_description, error_type, system, creation_date, modification_date)
333values ('7222', 'Przelew w trakcie weryfikacji przez FDS', 'T', 'EXOA', sysdate, sysdate);
334insert into error_registry (error_code, error_description, error_type, system, creation_date, modification_date)
335values ('REJECTED_FDS', 'Przelew odrzucony przez FDS', 'B', 'FDS', sysdate, sysdate);
336insert into error_registry (error_code, error_description, error_type, system, creation_date, modification_date)
337values ('VERIFICATION_FDS', 'Przelew w trakcie weryfikacji przez FDS', 'B', 'FDS', sysdate, sysdate);
338insert into operation_registry(service_name, operation, service_version, service_operation_name, service_layer, modification_date, creation_date)
339values('adapter.CoreBanking.FDSTransferManagementService', 'checkTransfer', '1.0', 'adapter.CoreBanking.FDSTransferManagementService.1.0.checkTransfer', 'ADAPTER', sysdate, sysdate);
340insert into operation_errors(service_operation_name, error_code, system, modification_date, creation_date)
341values('adapter.CoreBanking.FDSTransferManagementService.1.0.checkTransfer', '7222', 'EXOA', sysdate, sysdate);
342insert into operation_errors(service_operation_name, error_code, system, modification_date, creation_date)
343values('adapter.CoreBanking.FDSTransferManagementService.1.0.checkTransfer', '8914', 'EXOA', sysdate, sysdate);
344insert into operation_registry(service_name, operation, service_version, service_operation_name, service_layer, modification_date, creation_date)
345values('FDSAdapter', 'invoke', '1.0', 'FDSAdapter.1.0.invoke', 'PROVIDER', sysdate, sysdate);
346insert into operation_errors(service_operation_name, error_code, system, modification_date, creation_date)
347values('FDSAdapter.1.0.invoke', 'VERIFICATION_FDS', 'FDS', sysdate, sysdate);
348insert into operation_errors(service_operation_name, error_code, system, modification_date, creation_date)
349values('FDSAdapter.1.0.invoke', 'REJECTED_FDS', 'FDS', sysdate, sysdate);
350insert into operation_error_mappings(source_service_operation_name, target_service_operation_name, source_error_code, target_error_code, modification_date, creation_date)
351values('FDSAdapter.1.0.invoke', 'adapter.CoreBanking.FDSTransferManagementService.1.0.checkTransfer', 'VERIFICATION_FDS', '7222', sysdate, sysdate);
352insert into operation_error_mappings(source_service_operation_name, target_service_operation_name, source_error_code, target_error_code, modification_date, creation_date)
353values('FDSAdapter.1.0.invoke', 'adapter.CoreBanking.FDSTransferManagementService.1.0.checkTransfer', 'REJECTED_FDS', '8914', sysdate, sysdate);
354INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('FDS-mapowanie_bledow', 'slawek.surkont', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1713, '7:963bd572ae1bcaa813bac8487edbd557', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
355-- Changeset src/main/resources/liquibase/1.x/db.changelog.xml::FDS-sekwencja_E_ORDER_FDS_ID_SEQ::slawek.surkont
356create sequence E_ORDER_FDS_ID_SEQ
357minvalue 1
358maxvalue 9999999999999999999999999999
359start with 1
360increment by 1;
361INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('FDS-sekwencja_E_ORDER_FDS_ID_SEQ', 'slawek.surkont', 'src/main/resources/liquibase/1.x/db.changelog.xml', SYSTIMESTAMP, 1714, '7:557c1cc1df7620cb9f7d5b97cdf78070', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
362-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-3820_alter_CRD_CARD_DETAILS::paw_sal
363ALTER TABLE crd_card_details ADD psd2_caf_consent_status VARCHAR2(15 CHAR);
364COMMENT ON COLUMN crd_card_details.psd2_caf_consent_status IS 'Status zgody CAF psd2';
365INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-3820_alter_CRD_CARD_DETAILS', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1715, '7:d1e2f5b6b42d6f0a66b49ecb08b44307', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
366-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-1111_alter_psd2_session_redirect_uri::paw_sal
367ALTER TABLE psd2_session MODIFY redirect_uri VARCHAR2(512 CHAR);
368INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-1111_alter_psd2_session_redirect_uri', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1716, '7:a29c8ecfdff543c9710ffed52244301b', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
369-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-4860_fix::paw_sal
370ALTER TABLE acc_account_types DROP COLUMN psd2_caf_allowed;
371INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4860_fix', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1717, '7:ef9c5b4669ea7ebbbd4ffb93289d8f58', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
372-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-4416_fix::paw_sal
373alter table psd2_session add consent_type varchar2(16 CHAR);
374comment on column psd2_session.consent_type is 'Typ zgody';
375INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4416_fix', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1718, '7:66d3703663eef149befcf2bda59fcedb', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
376-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-2397_psd2_fallback::paw_sal
377-- Create table
378CREATE TABLE PSD2_FALLBACK_SESSION
379(
380 id NUMBER(19) not null,
381 version NUMBER(19),
382 session_uuid VARCHAR2(128 CHAR),
383 tpp_id VARCHAR2(128 CHAR),
384 tpp_name VARCHAR2(128 CHAR),
385 service_type VARCHAR2(3 CHAR),
386 status VARCHAR2(16 CHAR),
387 last_activity_date TIMESTAMP(6),
388 state VARCHAR2(128 CHAR),
389 creation_date TIMESTAMP(6) default sysdate,
390 modification_date TIMESTAMP(6),
391 lock_time DATE,
392 lock_expire DATE,
393 lock_count NUMBER(4),
394 lock_owner_id NUMBER(19)
395);
396comment on table PSD2_FALLBACK_SESSION
397 is 'Tabela przechowująca dane sessji fallback';
398comment on column PSD2_FALLBACK_SESSION.id
399 is 'Identyfikator';
400comment on column PSD2_FALLBACK_SESSION.version
401 is 'Wersja rekordu';
402comment on column PSD2_FALLBACK_SESSION.session_uuid
403 is 'UUID sesji';
404comment on column PSD2_FALLBACK_SESSION.tpp_id
405 is 'Identyfikator Tpp';
406comment on column PSD2_FALLBACK_SESSION.tpp_name
407 is 'Nazwa Tpp';
408comment on column PSD2_FALLBACK_SESSION.service_type
409 is 'Typ usługi AIS/PIS';
410comment on column PSD2_FALLBACK_SESSION.status
411 is 'Status sesji';
412comment on column PSD2_FALLBACK_SESSION.state
413 is 'Losowa, unikalna w ramach TPP wartość – zabezpieczenie przed atakiem Cross-Site Request Forgery';
414comment on column PSD2_FALLBACK_SESSION.last_activity_date
415 is 'Ostatnia zarejestrowana aktywność sesji';
416comment on column PSD2_FALLBACK_SESSION.creation_date
417 is 'Data utworzenia rekordu';
418comment on column PSD2_FALLBACK_SESSION.modification_date
419 is 'Data modyfikacji rekordu';
420ALTER TABLE PSD2_FALLBACK_SESSION
421 ADD CONSTRAINT PK_PSD2_FALLBACK_SESSION PRIMARY KEY (ID);
422INSERT INTO CFG_SYSTEM_PARAMETER
423(ID, DESCRIPTION, NAME, GROUP_PARAMETER, STATUS, TYPE, LAST_UPDATE_DATE, LAST_UPDATE_USER_ID, PARAMETER_VERSION,
424 VERSION, SORT_PRIO, BANK_ID, BANK_SPECIFIC, SYSTEM_PARAMETER_TAB)
425VALUES (
426 ID_SEQ.NEXTVAL, 'PSD2 fallback, czas ważności sessji fallback w sekundach','psd2.fallback.session.expiration.time', null, 'default', 'number',
427 null, 0, 0, 0, 1000103, 200, 1, 'MAIN');
428INSERT INTO CFG_SYSTEM_PARAM_VALUES VALUES (
429 (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE NAME = 'psd2.fallback.session.expiration.time'),
430 '1800', 0);
431CREATE TABLE PSD2_FALLBACK_PAYMENT (
432 ID NUMBER(19) NOT NULL,
433 VERSION NUMBER(19),
434 PAYMENT_TYPE VARCHAR2(32 CHAR ),
435 PAYMENT_ID VARCHAR2(50 CHAR),
436 RECIPIENT_ACCOUNT_NUMBER VARCHAR2(50 CHAR),
437 RECIPIENT_NAME VARCHAR2(150 CHAR),
438 RECIPIENT_ADDRESS VARCHAR2(150 CHAR),
439 SENDER_ACCOUNT_NUMBER VARCHAR2(50 CHAR),
440 SENDER_NAME VARCHAR2(150 CHAR),
441 SENDER_ADDRESS VARCHAR2(150 CHAR),
442 DESCRIPTION VARCHAR2(146 CHAR),
443 AMOUNT NUMBER(19,2),
444 EXECUTION_DATE TIMESTAMP(6),
445 CURRENCY VARCHAR2(3 CHAR),
446 BANK_BIC_OR_SWIFT VARCHAR2(12 CHAR),
447 BANK_NAME VARCHAR2(205 CHAR),
448 BANK_CODE VARCHAR2(4 CHAR),
449 BANK_COUNTRY_CODE VARCHAR2(2 CHAR),
450 BANK_ADDRESS VARCHAR2(150 CHAR),
451 US_PAYOR_ID VARCHAR2(20 CHAR),
452 US_PAYOR_ID_TYPE VARCHAR2(2 CHAR),
453 US_FORM_CODE VARCHAR2(7 CHAR),
454 US_PERIOD_ID VARCHAR2(7 CHAR),
455 US_PERIOD_TYPE VARCHAR2(7 CHAR),
456 US_YEAR VARCHAR2(4 CHAR),
457 US_OBLIGATION_ID VARCHAR2(40),
458 TRANSFER_CHARGES VARCHAR2(3),
459 TPP_TRANSACTION_ID VARCHAR2(64),
460 DELIVERY_MODE VARCHAR2(16),
461 SYSTEM VARCHAR2(16),
462 HOLD NUMBER(1) DEFAULT 0,
463 EXECUTION_MODE VARCHAR2(16),
464 SEND_CONFIRMATION NUMBER(1) DEFAULT 0,
465 CONFIRMATION_EMAIL VARCHAR2(320 CHAR),
466 FEE_ACCOUNT_NUMBER VARCHAR2(50 CHAR),
467 CREATION_DATE TIMESTAMP(6),
468 MODIFICATION_DATE TIMESTAMP(6),
469 LOCK_TIME TIMESTAMP(6),
470 LOCK_EXPIRE TIMESTAMP(6),
471 LOCK_OWNER_ID NUMBER(19,0),
472 LOCK_COUNT NUMBER(4,0),
473 SESSION_ID NUMBER(19) NOT NULL,
474 RECURRENCE_START_DATE DATE,
475 RECURRENCE_PERIOD_TYPE VARCHAR2(10 CHAR),
476 RECURRENCE_PERIOD_VALUE NUMBER(2),
477 RECURRENCE_END_DATE DATE,
478 RECURRENCE_DAY_OFF_OFFSET_TYPE VARCHAR2(30 CHAR));
479comment on table PSD2_FALLBACK_PAYMENT
480 is 'Tabela przechowująca dane przelewu dostarczone przez Tpp';
481comment on column PSD2_FALLBACK_PAYMENT.id
482 is 'Identyfikator';
483comment on column PSD2_FALLBACK_PAYMENT.version
484 is 'Wersja rekordu';
485ALTER TABLE PSD2_FALLBACK_PAYMENT
486 ADD CONSTRAINT PK_PSD2_FALLBACK_PAYMENT PRIMARY KEY(ID);
487ALTER TABLE PSD2_FALLBACK_PAYMENT
488 ADD CONSTRAINT PSD2_FALLBACK_PAY_SESSION_FK FOREIGN KEY (SESSION_ID)
489 REFERENCES PSD2_FALLBACK_SESSION (ID);
490ALTER TABLE ORD_ORDERS ADD PSD2_FALLBACK_PAYMENT_ID NUMBER(19);
491COMMENT ON COLUMN ORD_ORDERS.PSD2_FALLBACK_PAYMENT_ID IS 'Identyfikator płatności PSD2 fallback';
492ALTER TABLE ORD_ORDERS
493 ADD CONSTRAINT ORD_ORDERS_PSD2_FAL_PAY_ID_FK FOREIGN KEY (PSD2_FALLBACK_PAYMENT_ID)
494 REFERENCES PSD2_FALLBACK_PAYMENT (ID);
495ALTER TABLE USR_EMPLOYEE_AS_USER_SESSION ADD PSD2_FALLBACK_SESSION_ID NUMBER(19);
496ALTER TABLE USR_EMPLOYEE_AS_USER_SESSION
497 ADD CONSTRAINT USR_EMP_AS_USR_PSD2_FAL_SE_FK FOREIGN KEY (PSD2_FALLBACK_SESSION_ID)
498 REFERENCES PSD2_FALLBACK_SESSION (ID);
499INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-2397_psd2_fallback', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1719, '7:086db24aef7648c72a3f22774ce8f3ea', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
500-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-2397_psd2_fallback_session_trigger::paw_sal
501CREATE OR REPLACE TRIGGER "PSD2_FALLBACK_SESS_INS_UP_TRG"
502BEFORE INSERT OR UPDATE
503ON PSD2_FALLBACK_SESSION
504REFERENCING OLD AS OLD NEW AS NEW
505FOR EACH ROW
506BEGIN
507 IF INSERTING THEN
508 :NEW.CREATION_DATE := SYSDATE;
509 END IF;
510 :NEW.MODIFICATION_DATE := SYSDATE;
511END;
512/
513INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-2397_psd2_fallback_session_trigger', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1720, '7:65c4bb4696b9f756b2467f030f7e9b91', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
514-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-2397_psd2_fallback_payment_trigger::paw_sal
515CREATE OR REPLACE TRIGGER "PSD2_FALLBACK_PAY_INS_UP_TRG"
516BEFORE INSERT OR UPDATE
517ON PSD2_FALLBACK_PAYMENT
518REFERENCING OLD AS OLD NEW AS NEW
519FOR EACH ROW
520BEGIN
521 IF INSERTING THEN
522 :NEW.CREATION_DATE := SYSDATE;
523 END IF;
524 :NEW.MODIFICATION_DATE := SYSDATE;
525END;
526/
527INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-2397_psd2_fallback_payment_trigger', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1721, '7:5468afe1262f6025f23852163ae76022', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
528-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-4389_insert_cfg_system_parameter_revert_revert::paw_sal
529INSERT INTO CFG_SYSTEM_PARAMETER (ID, DESCRIPTION, NAME, GROUP_PARAMETER, STATUS, TYPE, LAST_UPDATE_DATE, LAST_UPDATE_USER_ID, PARAMETER_VERSION, VERSION, SORT_PRIO, BANK_ID, BANK_SPECIFIC, SYSTEM_PARAMETER_TAB) VALUES (ID_SEQ.nextval, null, 'user.roles.tab', null, 'default', 'text', to_date(sysdate,'DD-MM-RR'), null, 0, 0, 0, 200, 0, 'MAIN');
530INSERT INTO CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID, "VALUE", IDX) VALUES (
531 (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE rownum = 1 AND name = 'user.roles.tab' AND STATUS = 'default' ),
532 'OWNER,AIS,true|OWNER,PIS,true|OWNER,CAF,true|CO_OWNER,AIS,true|CO_OWNER,PIS,true|CO_OWNER,CAF,true|REPRESENTATIVE,AIS,false|REPRESENTATIVE,PIS,false|REPRESENTATIVE,CAF,false|JUNIOR,AIS,false|JUNIOR,PIS,false|JUNIOR,CAF,false',
533 '0');
534INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4389_insert_cfg_system_parameter_revert_revert', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1722, '7:741e4433e1a253793ba73a173f3ad350', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
535-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-4603_add_redirect_uri::paw_sal
536ALTER TABLE psd2_fallback_session ADD REDIRECT_URI VARCHAR2(512 CHAR);
537COMMENT ON COLUMN psd2_fallback_session.redirect_uri IS 'URI na który zostanie przekierowany klient po autoryzacji';
538INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4603_add_redirect_uri', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1723, '7:93897a09a08ba06abaa80271830a043e', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
539-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-4645_fallback_on_off_parameter::paw_sal
540Insert into CFG_SYSTEM_PARAMETER (ID,DESCRIPTION,NAME,GROUP_PARAMETER,STATUS,TYPE,LAST_UPDATE_DATE,LAST_UPDATE_USER_ID,PARAMETER_VERSION,VERSION,SORT_PRIO,BANK_ID,BANK_SPECIFIC,SYSTEM_PARAMETER_TAB) values (ID_SEQ.NEXTVAL,'Interfejs fallback','radioButtonList.psd2.fallback',null, 'default', 'radio_button_list', null, null, 0, 0, 1000104, 200, 1, 'MAIN');
541Insert into CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID,VALUE,IDX) values ((SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE NAME = 'radioButtonList.psd2.fallback'),'radioButtonList.psd2.fallback|on|true', 0);
542Insert into CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID,VALUE,IDX) values ((SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE NAME = 'radioButtonList.psd2.fallback'),'radioButtonList.psd2.fallback|off|false', 1);
543INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4645_fallback_on_off_parameter', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1724, '7:259bcb7b3503f5ffd5768fa1168f244d', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
544-- Changeset src/main/resources/liquibase/1.x/faza1/db.changelog.xml::NEST-4389_hide_parameter::paw_sal
545update cfg_system_parameter c
546 set c.system_parameter_tab = 'HIDDEN'
547 where c.name = 'user.roles.tab';
548INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4389_hide_parameter', 'paw_sal', 'src/main/resources/liquibase/1.x/faza1/db.changelog.xml', SYSTIMESTAMP, 1725, '7:e36201da2b8730cc877714bfa6af2223', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
549-- Changeset src/main/resources/liquibase/1.x/data_def/db.changelog.xml::NEST-4120_alter_sca_limits::mac_kom
550DELETE FROM SCA_LIMITS;
551ALTER TABLE SCA_LIMITS ADD CHANNEL VARCHAR2(15) NOT NULL;
552ALTER TABLE SCA_LIMITS ADD CURRENT_CONSECUTIVE_AMOUNT NUMBER(19,2) DEFAULT 0;
553ALTER TABLE SCA_LIMITS ADD CURRENT_CONSECUTIVE_NUMBER NUMBER(19,0) DEFAULT 0;
554ALTER TABLE SCA_LIMITS ADD EDITED_BY_USER NUMBER(1,0) DEFAULT 0;
555ALTER TABLE SCA_LIMITS ADD SCA_DISABLED NUMBER(1,0) DEFAULT 0;
556ALTER TABLE SCA_LIMITS ADD ID NUMBER(19,0) NOT NULL;
557COMMENT ON COLUMN SCA_LIMITS.CHANNEL IS 'Kanał dostępu';
558COMMENT ON COLUMN SCA_LIMITS.CURRENT_CONSECUTIVE_AMOUNT IS 'Aktualna sumaryczna wartosc kolejnych transakcji niewymagajacych silnego uwierzytelnienia';
559COMMENT ON COLUMN SCA_LIMITS.CURRENT_CONSECUTIVE_NUMBER IS 'Aktualna liczba nastepujacych po sobie transakcji niewymagajacych silnego uwierzytelnienia';
560COMMENT ON COLUMN SCA_LIMITS.EDITED_BY_USER IS 'Czy edytowane przez użytkownika?';
561COMMENT ON COLUMN SCA_LIMITS.SCA_DISABLED IS 'Czy SCA wyłączone?';
562COMMENT ON COLUMN SCA_LIMITS.ID IS 'Identyfikator';
563RENAME SCA_LIMITS TO SCA_LIMITS_OLD;
564CREATE TABLE SCA_LIMITS AS
565(SELECT id, user_context_id, channel, creation_date, modification_date, LIMIT_TRANSACTION, LIMIT_CONSECUTIVE_AMOUNT, LIMIT_CONSECUTIVE_NUMBER, CURRENT_CONSECUTIVE_AMOUNT,
566CURRENT_CONSECUTIVE_NUMBER, EDITED_BY_USER, SCA_DISABLED, VERSION
567FROM SCA_LIMITS_OLD);
568DROP TABLE SCA_LIMITS_OLD;
569ALTER TABLE SCA_LIMITS ADD CONSTRAINT SCA_LIMITS_PK PRIMARY KEY (ID);
570ALTER TABLE SCA_LIMITS ADD CONSTRAINT SCA_LIMITS_USR_CONTEXT_FK FOREIGN KEY (USER_CONTEXT_ID) REFERENCES USR_USER_CONTEXTS(ID);
571CREATE UNIQUE INDEX SCA_LIMITS_UNIQUE ON SCA_LIMITS(USER_CONTEXT_ID, CHANNEL);
572INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4120_alter_sca_limits', 'mac_kom', 'src/main/resources/liquibase/1.x/data_def/db.changelog.xml', SYSTIMESTAMP, 1726, '7:308d8ede4b7122f51f7959ef48e32e87', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
573-- Changeset src/main/resources/liquibase/1.x/data_def/db.changelog.xml::NEST-4282_alter_cfg_security::mac_kom
574ALTER TABLE CFG_SECURITY ADD CHANNEL VARCHAR2(15);
575COMMENT ON COLUMN CFG_SECURITY.CHANNEL IS 'Kanał dostępu';
576ALTER TABLE CFG_SECURITY DROP CONSTRAINT UNIQUE_TYPE_CUST_GROUP_PAIR;
577ALTER TABLE CFG_SECURITY ADD CONSTRAINT UNIQUE_TYPE_CUST_GROUP_PAIR UNIQUE (TYPE, TARGET_GROUP, CF, CHANNEL);
578INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4282_alter_cfg_security', 'mac_kom', 'src/main/resources/liquibase/1.x/data_def/db.changelog.xml', SYSTIMESTAMP, 1727, '7:ff702a37514c53050db67d179aa152af', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
579-- Changeset src/main/resources/liquibase/1.x/data_def/db.changelog.xml::NEST-4641_alter_usr_users::mac_kom
580ALTER TABLE USR_USERS ADD DASHBOARD_AUTHORIZED NUMBER(1,0) default 0;
581COMMENT ON COLUMN USR_USERS.DASHBOARD_AUTHORIZED IS 'Czy zautoryzowano dashboard?';
582INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4641_alter_usr_users', 'mac_kom', 'src/main/resources/liquibase/1.x/data_def/db.changelog.xml', SYSTIMESTAMP, 1728, '7:b6ab6c2210f6bc68d088cf2d65f09488', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
583-- Changeset src/main/resources/liquibase/1.x/data_def/db.changelog.xml::NEST-4826_alter_sca_limits::mac_kom
584ALTER TABLE SCA_LIMITS MODIFY (USER_CONTEXT_ID NULL);
585INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4826_alter_sca_limits', 'mac_kom', 'src/main/resources/liquibase/1.x/data_def/db.changelog.xml', SYSTIMESTAMP, 1729, '7:c8cc425a49c9a7078d2a058432cbd7e6', 'sql', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
586-- Changeset src/main/resources/liquibase/1.x/main/db.changelog.xml::NEST-4119_new_param_values.sql::mac_kom
587DELETE FROM CFG_SYSTEM_PARAM_VALUES
588WHERE SYSTEM_PARAMETER_ID = (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE rownum = 1 AND name = 'orders.sca.limits' AND STATUS = 'default' );
589INSERT INTO CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID, VALUE, IDX) VALUES (
590 (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE rownum = 1 AND name = 'orders.sca.limits' AND STATUS = 'default' ), 'PRIVATE|mobile|300|2000|10|false', '0');
591INSERT INTO CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID, VALUE, IDX) VALUES (
592 (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE rownum = 1 AND name = 'orders.sca.limits' AND STATUS = 'default' ), 'PRIVATE|www|300|2000|10|true', '1');
593INSERT INTO CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID, VALUE, IDX) VALUES (
594 (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE rownum = 1 AND name = 'orders.sca.limits' AND STATUS = 'default' ), 'JUNIOR|mobile|300|2000|10|false', '2');
595INSERT INTO CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID, VALUE, IDX) VALUES (
596 (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE rownum = 1 AND name = 'orders.sca.limits' AND STATUS = 'default' ), 'JUNIOR|www|300|2000|10|false', '3');
597INSERT INTO CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID, VALUE, IDX) VALUES (
598 (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE rownum = 1 AND name = 'orders.sca.limits' AND STATUS = 'default' ), 'CORPORATE|mobile|300|2000|10|true', '4');
599INSERT INTO CFG_SYSTEM_PARAM_VALUES (SYSTEM_PARAMETER_ID, VALUE, IDX) VALUES (
600 (SELECT ID FROM CFG_SYSTEM_PARAMETER WHERE rownum = 1 AND name = 'orders.sca.limits' AND STATUS = 'default' ), 'CORPORATE|www|300|2000|10|true', '5');
601INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NEST-4119_new_param_values.sql', 'mac_kom', 'src/main/resources/liquibase/1.x/main/db.changelog.xml', SYSTIMESTAMP, 1730, '7:b1d412e0db1ac6dbe6dfd8219513cdc3', 'sqlFile', '', 'EXECUTED', 'test,prod', NULL, '3.5.4', '7528571049');
602-- Changeset src/main/resources/liquibase/1.x/main/db.changelog.xml::NBANK-1409-synch_kartoteczne_fix::mkomorowski_bluesoft
603/
604INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NBANK-1409-synch_kartoteczne_fix', 'mkomorowski_bluesoft', 'src/main/resources/liquibase/1.x/main/db.changelog.xml', SYSTIMESTAMP, 1731, '7:050762fa97397d47f6d5e5374cfc3228', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
605-- Changeset src/main/resources/liquibase/1.x/main/db.changelog.xml::ZZ-4417-widget::msinica
606--Stworzenie tabeli MOB_WIDGET_CONFIG
607CREATE TABLE MOB_WIDGET_CONFIG (
608 ID NUMBER(19,0) NOT NULL PRIMARY KEY,
609 USER_ID NUMBER(19,0) NOT NULL,
610 APP_ID NUMBER(19,0) NOT NULL
611);
612COMMENT ON COLUMN MOB_WIDGET_CONFIG.ID IS 'Identyfikator';
613COMMENT ON COLUMN MOB_WIDGET_CONFIG.USER_ID IS 'Identyfikator użytkownika';
614COMMENT ON COLUMN MOB_WIDGET_CONFIG.APP_ID IS 'Identyfikator aplikacjia mobilnej';
615--Stworzenie tabeli MOB_WIDGET_PREFERENCES
616CREATE TABLE MOB_WIDGET_PREFERENCES (
617 ID NUMBER(19,0) NOT NULL PRIMARY KEY,
618 CONFIG_ID NUMBER(19,0) NOT NULL,
619 KEY VARCHAR2(256 CHAR) NOT NULL,
620 WIDGET_TYPE VARCHAR2(256 CHAR) NOT NULL,
621 VALUE VARCHAR2(256 CHAR),
622 DELETED NUMBER(1, 0) DEFAULT 0 NOT NULL,
623 MODIFICATION_DATE TIMESTAMP DEFAULT SYSDATE NOT NULL
624);
625COMMENT ON COLUMN MOB_WIDGET_PREFERENCES.ID IS 'Identyfikator';
626COMMENT ON COLUMN MOB_WIDGET_PREFERENCES.CONFIG_ID IS 'Identyfikator konfiguracji MOB_WIDGET_CONFIG';
627COMMENT ON COLUMN MOB_WIDGET_PREFERENCES.KEY IS 'Klucz - nazwa preferencji';
628COMMENT ON COLUMN MOB_WIDGET_PREFERENCES.WIDGET_TYPE IS 'Typ widgetu';
629COMMENT ON COLUMN MOB_WIDGET_PREFERENCES.VALUE IS 'Wartość';
630COMMENT ON COLUMN MOB_WIDGET_PREFERENCES.DELETED IS 'Czy wartość jest usunięta';
631COMMENT ON COLUMN MOB_WIDGET_PREFERENCES.MODIFICATION_DATE IS 'Data ostatniej modyfikacji';
632--Stworzenie constraintow
633ALTER TABLE "MOB_WIDGET_CONFIG" ADD CONSTRAINT "MOB_WIDG_USR_FK" FOREIGN KEY ("USER_ID") REFERENCES "USR_USERS" ("ID") ENABLE;
634ALTER TABLE "MOB_WIDGET_CONFIG" ADD CONSTRAINT "MOB_WIDG_APP_FK" FOREIGN KEY ("APP_ID") REFERENCES "MOB_PHONE" ("ID") ENABLE;
635ALTER TABLE "MOB_WIDGET_CONFIG" ADD CONSTRAINT "MOB_WIDG_UNIQUE" UNIQUE ("USER_ID", "APP_ID");
636ALTER TABLE "MOB_WIDGET_PREFERENCES" ADD CONSTRAINT "MOB_WIDG_CFG_FK" FOREIGN KEY ("CONFIG_ID") REFERENCES
637"MOB_WIDGET_CONFIG" ("ID") ENABLE;
638--Stworzenie indexow
639CREATE INDEX IDX_APP_ID_MOB_WIDG_CONFG on MOB_WIDGET_CONFIG("APP_ID");
640CREATE INDEX IDX_USER_ID_MOB_WIDG_CONFG on MOB_WIDGET_CONFIG("USER_ID");
641CREATE INDEX IDX_CONFIG_ID_MOB_WIDG_CONFG on MOB_WIDGET_PREFERENCES("CONFIG_ID");
642CREATE INDEX IDX_KEY_MOB_WIDG_CONFG on MOB_WIDGET_PREFERENCES("KEY");
643CREATE INDEX IDX_TYPE_MOB_WIDG_CONFG on MOB_WIDGET_PREFERENCES("WIDGET_TYPE");
644CREATE INDEX IDX_DELETED_MOB_WIDG_PRF on MOB_WIDGET_PREFERENCES("DELETED");
645INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('ZZ-4417-widget', 'msinica', 'src/main/resources/liquibase/1.x/main/db.changelog.xml', SYSTIMESTAMP, 1732, '7:2cc5842e3171cb12ae5be1902bfcf78d', 'sqlFile', '', 'EXECUTED', 'prod,test', 'zz-4417', '3.5.4', '7528571049');
646-- Changeset src/main/resources/liquibase/1.x/main/db.changelog.xml::0315_insert_dynamic_routing::rob_slo
647Insert into DYNAMIC_ROUTING_CONFIGS (ID,VERSION,BANK_ID,SERVICE_OPERATION_NAME,OPERATION_TYPE,ADDRESS_URI,CORE_ENDPOINT,CREATION_DATE,MODIFICATION_DATE) values (E_ID_SEQ.nextval,'0','200','utils.NotificationService.1.0.fundsTransferStatusNotification','SBE','core.P24.FundTransfers.TransferStatusService/1.0/core.P24.FundTransfers.TransferStatusService','jms://eb-prv-prod-1.winad.bankpbp.pl:7071,eb-prv-prod-2.winad.bankpbp.pl:7071/jms.JMS_QCF/fundsTransferStatusNotificationOutboundQueue',SYSDATE,SYSDATE);
648INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('0315_insert_dynamic_routing', 'rob_slo', 'src/main/resources/liquibase/1.x/main/db.changelog.xml', SYSTIMESTAMP, 1733, '7:b1201176f238ddbf399dba2d7f2bf3d3', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
649-- Changeset src/main/resources/liquibase/1.x/main/db.changelog.xml::0318_update_dynamic_routing::rob_slo
650update DYNAMIC_ROUTING_CONFIGS set ADDRESS_URI = 'adapter.SBE.NotificationManagementService/1.0/adapter.SBE.NotificationManagementService'
651where SERVICE_OPERATION_NAME = 'utils.NotificationService.1.0.fundsTransferStatusNotification';
652INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('0318_update_dynamic_routing', 'rob_slo', 'src/main/resources/liquibase/1.x/main/db.changelog.xml', SYSTIMESTAMP, 1734, '7:387891a268c27cf1a933cbbe8861e883', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
653-- Changeset src/main/resources/liquibase/1.x/main/db.changelog.xml::0319_update_dynamic_routing::rob_slo
654update DYNAMIC_ROUTING_CONFIGS set CORE_ENDPOINT = 'jms://eb-prv-prod-1.winad.bankpbp.pl:7071,eb-prv-prod-2.winad.bankpbp.pl:7071/jms.JMS_QCF/jms.fundsTransferStatusNotificationOutboundQueue'
655where SERVICE_OPERATION_NAME = 'utils.NotificationService.1.0.fundsTransferStatusNotification';
656INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('0319_update_dynamic_routing', 'rob_slo', 'src/main/resources/liquibase/1.x/main/db.changelog.xml', SYSTIMESTAMP, 1735, '7:17cb2c489420ce161a435081c5b0e8d7', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
657-- Changeset src/main/resources/liquibase/1.x/main/db.changelog.xml::NBANK-1409-REC_CARDS_fix::msinica
658ALTER TYPE REC_CARDS DROP ATTRIBUTE Blockade_Reason CASCADE;
659ALTER TYPE REC_CARDS ADD ATTRIBUTE Blockade_Reason VARCHAR2(200) CASCADE;
660INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NBANK-1409-REC_CARDS_fix', 'msinica', 'src/main/resources/liquibase/1.x/main/db.changelog.xml', SYSTIMESTAMP, 1736, '7:23155ca3babfc9eb951232ea8f2e887c', 'sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
661-- Changeset src/main/resources/liquibase/1.x/main/db.changelog.xml::NBANK-1409_full_fix::paw_sal
662DROP TYPE Tab_Cards
663/
664DROP TYPE Rec_Cards
665/
666CREATE OR REPLACE TYPE Rec_Cards AS OBJECT
667(
668 Id NUMBER,
669 Modification_Date DATE,
670 Account_Number VARCHAR2(30 CHAR),
671 Current_Balance NUMBER,
672 Debit_Nr_Prev_Period NUMBER,
673 Debit_r_Prev_Period NUMBER,
674 Debit_Sum NUMBER,
675 Due_Amt_Prev_Period NUMBER,
676 Holds_Sum NUMBER,
677 Card_Code VARCHAR2(100 CHAR),
678 Cash_Interest_Rate NUMBER,
679 Purchase_Interest_Rate NUMBER,
680 Card_Name VARCHAR2(60 CHAR),
681 Card_Number VARCHAR2(16 CHAR),
682 Card_Owner_Name VARCHAR2(30 CHAR),
683 Card_Owner_Surname VARCHAR2(30 CHAR),
684 Card_Role NUMBER,
685 Card_Type VARCHAR2(9 CHAR),
686 Payment_Date DATE,
687 Start_Date DATE,
688 End_Date DATE,
689 Currency_Code_a VARCHAR2(3 CHAR),
690 Status VARCHAR2(3 CHAR),
691 Credit_Limit VARCHAR2(100 CHAR),
692 Related_External_Id NUMBER,
693 Instalment_Interest_Rate NUMBER,
694 Settlement_Start_Date TIMESTAMP(6),
695 Settlement_End_Date TIMESTAMP(6),
696 Contract_Ref_Number VARCHAR2(20 CHAR),
697 Contract_Start_Date DATE,
698 Contract_End_Date DATE,
699 Residue_Amt_Prev_Period NUMBER(19, 2),
700 Residue_Prev_Period NUMBER(19, 2),
701 Reservation_Date DATE,
702 Atm_Balance_Limit VARCHAR2(750 CHAR),
703 Atm_Limit_Available VARCHAR2 (300 CHAR),
704 Blockade_Reason VARCHAR2 (200 CHAR)
705)
706/
707CREATE OR REPLACE TYPE Tab_Cards As Table Of Rec_Cards
708/
709CREATE OR REPLACE PACKAGE BODY "SYNCH_KARTOTECZNE" IS
710 -- Author : A579813
711 -- Created : 2017-01-21 18:23:27
712 -- Purpose : WD_BIM_LOAN_TYPES, WD_BIM_LOAN_TYPE_FEES
713 -- Jira : https://jira.amg.net.pl/browse/FMBANK-4838
714 -- ZMIANY:
715 -- Versja_Pkg Data Autor Powod Opis
716 -- FMBANK-33183 2018-01-08 A.Makuch CR06 Widocznosc produktow w BIM - DEV
717 -- FMBANK-37096 2018-02-02 A.Makuch Pkt 1. 1.Trzeba poprawic mapowanie: Wd_Bim_Loan_Types.ID -> loan_types.PRODUCT_TYPE_ID ; e_id_seq.nextval -> loan_types.id
718 -- FMBANK-41839 2018-06-20 R.Grabek dodanie unikalnosci sepa/bic w Prc_Swift_Sepa_Config
719 -- FMBANK-41789 2018-07-16 R.Grabek brak odswiezania Deposit_types
720 -- FMBANK-36627 2018-07-16 R.Grabek Nowe Pole Cards.Reservation_Date
721 -- FMBANK-40432 2018-07-17 R.Grabek brak odswiezania account_types,card_types,loan_types
722 -- FMBANK-42898 2018-07-23 R.Grabek Deposit_types_treshold usuniecie Driving_Site blad orcl ora 600 ora 2063
723 -- FMBANK-42898 2018-07-23 D.Pietrzykowski Prc_Swift_Sepa_Config usuniecie parallel z kursora c_Insert
724 -- FMBANK-43118 2018-08-06 R.Grabek Usuniecie Parallel z calego pakietu
725 -- FMBANK-41839 2018-08-21 R.Grabek usunieto unikalnosci sepa/bic w Prc_Swift_Sepa_Config
726 -- FMBANK-43335 2018-08-27 R.Grabek Usuniecie hint?w Driving_site
727 -- FMBANK-43489 2018-08-28 R.Grabek Prc_Deposit_treshold dla termx number(10)-> number(12,2)
728 -- FMBANK-43744 2018-09-28 R.Grabek usuni?cie joina w rachunkach
729 -- FMBANK-43942 2018-09-28 R.Grabek usuni?cie joina dla kredyt?w i warunku dla lokat
730 -- FMBANK-4449 2018-11-14 R.Grabek blad z ustawianiem kart na inactive
731 -- NESTBANKDU-37 2018-11-13 R.Grabek duplikaty lokat (poprawa zapobiegajaca dodawaniu nowych dupliktow)
732 -- FMBANK-44207 2018-11-14 R.Grabek usuniecie duplikat?w w def_config
733 -- FMBANK-44535 2018-11-22 R.Grabek poprawki
734 -- FMBANK-xxxx1 2018-11-22 R.Grabek card_customers blad ?adowania tabeli lokalnej
735 -- FMBANK-xxxx2 2018-11-22 R.Grabek card_customers blad owner/contract_owner
736 -- NESTBANKDU-264 2018-01-23 R.Grabek Brak synchronizacji danych lokat
737 -- NESTBANKDU-267 2018-03-15 R.Grabek Brak synchronizacji danych kart(brak dodawania nowych)
738 -- ZZ-4710 2018-05-28 S.Surkont Nowe pole Cards.Blockade_Reason
739 -- NESTBANK-44 2019-07-03 P.Witkowski Brak wyciągów dla KK do pobrania w BIM
740 ------------------------------------------------------------------------------------
741 l_Pkg VARCHAR2(100) := $$PLSQL_UNIT; -- odczyt nazwy biezacego pakietu $$plsql_line - numer biezacej linii
742 Proc_Time TIMESTAMP;
743 Part_Time TIMESTAMP;
744 PROCEDURE Prc_Curr_Acc_Types AS
745 l_Proc VARCHAR2(100) := 'PRC_CURR_ACC_TYPES';
746 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
747 Last_Synch_Date DATE;
748 l_Start_Time DATE;
749 Operation VARCHAR2(100);
750 Ln_Buff_Len NUMBER := 0;
751 l_Range_a NUMBER := 0;
752 l_Range_b NUMBER := 0;
753 v_Seq_From Integer;
754 v_Seq_To Integer;
755 vsql varchar2(4000);
756 synch_d varchar2(100);
757 cnt number;
758 CURSOR c_Update IS
759 WITH Wd AS
760 (---SELECT /*+DRIVING_SITE(Wd_Bim_Current_Acc_Types) */
761 SELECT
762 To_Char(CAST(Id AS NUMBER)) Product_Type_Id
763 ,CAST(Modification_Date AS TIMESTAMP) Modification_Date
764 ,CAST(Product_Name AS VARCHAR2(60 CHAR)) Product_Name
765 ,Synch.Get_Dict('PRODUCT_STATUS', Status) Status
766 ,To_Char(CAST(Product_Subtype AS NUMBER)) Product_Subtype
767 ,CAST(Product_Description AS VARCHAR2(200 CHAR)) Product_Description
768 ,CAST(Product_Symbol AS VARCHAR2(15 CHAR)) Product_Type
769 ,To_Char(CAST(Bim_Visible AS NUMBER)) Bim_Visible
770 ,To_Char(CAST(Bim_Share AS NUMBER)) Bim_Share
771 ,Synch.Get_Dict('CUSTOMER_TYPE', Customer_Type) Customer_Type
772 FROM LC_Wd_Bim_Current_Acc_Types
773 WHERE Modification_Date >= Last_Synch_Date
774 AND Modification_Date < l_Start_Time)
775 SELECT /*+ USE_HASH(Wd, c) */
776 Wd.Product_Type_Id
777 ,Wd.Product_Name
778 ,Wd.Status
779 ,Wd.Product_Subtype
780 ,Wd.Product_Description
781 ,Wd.Product_Type
782 ,Wd.Bim_Visible
783 ,Wd.Bim_Share
784 ,Wd.Customer_Type
785 FROM Wd
786 JOIN Current_Account_Types c
787 ON c.Product_Type_Id = Wd.Product_Type_Id
788 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
789 --- AND Wd.Modification_Date > c.Modification_Date;---FMBANK-40432
790 -- NESTBANKDU-264 AND c.Modification_Date>= Last_Synch_Date;---FMBANK-40432
791 AND Wd.Modification_Date>= Last_Synch_Date; -- NESTBANKDU-264
792 CURSOR c_Insert IS
793 WITH Wd AS
794 (--SELECT /*+DRIVING_SITE(Wd_Bim_Current_Acc_Types) */
795 SELECT
796 To_Char(CAST(Id AS NUMBER)) Product_Type_Id
797 ,CAST(Modification_Date AS TIMESTAMP) Modification_Date
798 ,CAST(Product_Name AS VARCHAR2(60 CHAR)) Product_Name
799 ,Synch.Get_Dict('PRODUCT_STATUS', Status) Status
800 ,To_Char(CAST(Product_Subtype AS NUMBER)) Product_Subtype
801 ,CAST(Product_Description AS VARCHAR2(200 CHAR)) Product_Description
802 ,CAST(Product_Symbol AS VARCHAR2(15 CHAR)) Product_Type
803 ,To_Char(CAST(Bim_Visible AS NUMBER)) Bim_Visible
804 ,To_Char(CAST(Bim_Share AS NUMBER)) Bim_Share
805 ,Synch.Get_Dict('CUSTOMER_TYPE', Customer_Type) Customer_Type
806 FROM LC_Wd_Bim_Current_Acc_Types
807 WHERE Modification_Date >= Last_Synch_Date
808 AND Modification_Date < l_Start_Time)
809 SELECT /*+ */
810 0 seq
811 ,Wd.Product_Type_Id
812 ,Wd.Product_Name
813 ,Wd.Status
814 ,Wd.Product_Subtype
815 ,Wd.Product_Description
816 ,Wd.Product_Type
817 ,Wd.Bim_Visible
818 ,Wd.Bim_Share
819 ,Wd.Customer_Type
820 FROM Wd
821 WHERE NOT EXISTS (SELECT 1
822 FROM Current_Account_Types c
823 WHERE c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
824 AND Wd.Product_Type_Id = c.Product_Type_Id);
825 CURSOR c_Delete IS
826 SELECT
827 c.Id, c.Product_Type_Id
828 FROM Current_Account_Types c
829 WHERE NOT EXISTS (--SELECT /*+DRIVING_SITE(Wd)*/ 1
830 SELECT 1
831 FROM lc_Wd_Bim_Current_Acc_Types Wd
832 WHERE Wd.Id = c.Product_Type_Id)
833 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id;
834 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
835 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
836 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
837 Lupdate_Array Tupdate_Table;
838 Linsert_Array Tinsert_Table;
839 Ldelete_Array Tdelete_Table;
840 BEGIN
841 Proc_Time := Current_Timestamp;
842 Synch_Restart.Start_Step;
843 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program); -- data z synch_config
844 l_Start_Time := Synch_Restart.Get_Start_Time(); --
845 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
846 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
847 begin
848 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Current_Acc_Types');
849 vsql:='truncate table lc_Wd_Bim_Current_Acc_Types';
850 execute immediate vsql;
851 commit;
852 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Current_Acc_Types');
853 end;
854 begin
855 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_CURR_ACC_TYPES';
856 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Current_Acc_Types ');
857 vsql:='insert into lc_Wd_Bim_Current_Acc_Types
858 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Current_Acc_Types Wd)';
859 execute immediate vsql;
860 commit;
861 Synch_Restart.Log('wykonano:'||vsql);
862 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Current_Acc_Types');
863 vsql:='select count(*) from lc_Wd_Bim_Current_Acc_Types';
864 execute immediate vsql into cnt;
865 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Current_Acc_Types pobrano:'||cnt||' rekord?w');
866 end;
867 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
868 Operation := l_Proc || '_UPDATE';
869 Part_Time := Current_Timestamp;
870 OPEN c_Update;
871 LOOP
872 FETCH c_Update BULK COLLECT
873 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
874 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
875 l_Range_a := 0;
876 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
877 WHILE l_Range_a IS NOT NULL
878 LOOP
879 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
880 UPDATE Current_Account_Types c
881 SET c.Product_Name = Lupdate_Array(i).Product_Name
882 ,c.Status = Lupdate_Array(i).Status
883 ,c.Product_Subtype = Lupdate_Array(i).Product_Subtype
884 ,c.Product_Description = Lupdate_Array(i).Product_Description
885 ,c.Product_Type = Lupdate_Array(i).Product_Type
886 ,c.Bim_Visible = Lupdate_Array(i).Bim_Visible
887 ,c.Bim_Share = Lupdate_Array(i).Bim_Share
888 ,c.Customer_Type = Lupdate_Array(i).Customer_Type
889 ,c.Modification_Date = l_Start_Time
890 ,c.Version = c.Version + 1
891 WHERE c.Product_Type_Id = Lupdate_Array(i).Product_Type_Id;
892 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
893 l_Range_a := l_Range_b + 1;
894 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
895 END LOOP;
896 EXIT WHEN c_Update%NOTFOUND;
897 END LOOP;
898 CLOSE c_Update;
899 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
900 Part_Time := Current_Timestamp;
901 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
902 Operation := l_Proc || '_INSERT';
903 OPEN c_Insert;
904 LOOP
905 FETCH c_Insert BULK COLLECT
906 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
907 If Linsert_Array.Count > 0 Then
908 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
909 For i In 1..Linsert_Array.Count
910 Loop
911 Linsert_Array(i).Seq := v_Seq_From + (i-1);
912 End Loop;
913 End If;
914 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
915 l_Range_a := 0;
916 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
917 WHILE l_Range_a IS NOT NULL
918 LOOP
919 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
920 INSERT /* APPEND_VALUES*/ INTO Current_Account_Types c
921 (Id
922 ,Bank_Id
923 ,Modification_Date
924 ,Creation_Date
925 ,Version
926 ,Product_Type_Id
927 ,Product_Name
928 ,Status
929 ,Product_Subtype
930 ,Product_Description
931 ,Product_Type
932 ,Bim_Visible
933 ,Bim_Share
934 ,Customer_Type)
935 VALUES
936 (Linsert_Array(i).Seq --e_Id_Seq.Nextval /*Id*/
937 ,Synch_Restart.Current_Job_Row.Bank_Id /*Bank_Id*/
938 ,l_Start_Time /*MODIFICATION_DATE*/
939 ,l_Start_Time /*CREATION_DATE*/
940 ,0 /*VERSION*/
941 ,Linsert_Array(i).Product_Type_Id
942 ,Linsert_Array(i).Product_Name
943 ,Linsert_Array(i).Status
944 ,Linsert_Array(i).Product_Subtype
945 ,Linsert_Array(i).Product_Description
946 ,Linsert_Array(i).Product_Type
947 ,Linsert_Array(i).Bim_Visible
948 ,Linsert_Array(i).Bim_Share
949 ,Linsert_Array(i).Customer_Type);
950 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
951 l_Range_a := l_Range_b + 1;
952 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
953 END LOOP;
954 EXIT WHEN c_Insert%NOTFOUND;
955 END LOOP;
956 CLOSE c_Insert;
957 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
958 Part_Time := Current_Timestamp;
959 --
960 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
961 Operation := l_Proc || '_DELETE';
962 OPEN c_Delete;
963 LOOP
964 FETCH c_Delete BULK COLLECT
965 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
966 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
967 l_Range_a := 0;
968 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
969 WHILE l_Range_a IS NOT NULL
970 LOOP
971 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
972 UPDATE Current_Account_Types c SET c.Status = 'INACTIVE' WHERE c.Id = Ldelete_Array(i).Id;
973 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
974 l_Range_a := l_Range_b + 1;
975 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
976 END LOOP;
977 EXIT WHEN c_Delete%NOTFOUND;
978 END LOOP;
979 CLOSE c_Delete;
980 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
981 Operation := l_Proc || '_After_Loops';
982 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
983 Synch.Set_Last_Synch_Date(l_Program);
984 Synch_Restart.End_Step;
985 EXCEPTION
986 WHEN OTHERS THEN
987 IF SQL%Bulk_Exceptions.Count > 0 THEN
988 IF Operation = l_Proc || '_INSERT' THEN
989 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
990 LOOP
991 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' || Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index)
992 .Product_Type_Id || ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
993 END LOOP;
994 ELSIF Operation = l_Proc || '_UPDATE' THEN
995 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
996 LOOP
997 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' || Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index)
998 .Product_Type_Id || ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
999 END LOOP;
1000 ELSIF Operation = l_Proc || '_DELETE' THEN
1001 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
1002 LOOP
1003 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' || Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index)
1004 .Product_Type_Id || ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
1005 END LOOP;
1006 END IF;
1007 END IF;
1008 Synch_Restart.Error_Log(l_Program, Operation);
1009 ROLLBACK;
1010 END Prc_Curr_Acc_Types;
1011 PROCEDURE Prc_Loan_Types AS
1012 l_Proc VARCHAR2(100) := 'PRC_LOAN_TYPES';
1013 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
1014 Last_Synch_Date DATE;
1015 l_Start_Time DATE;
1016 Operation VARCHAR2(100);
1017 Ln_Buff_Len NUMBER := 0;
1018 l_Range_a NUMBER := 0;
1019 l_Range_b NUMBER := 0;
1020 v_Seq_From Integer;
1021 v_Seq_To Integer;
1022 vsql varchar2(4000);
1023 synch_d varchar2(100);
1024 cnt number;
1025 CURSOR c_Update IS
1026 WITH Wd AS
1027 (--SELECT /*+ DRIVING_SITE(Wd_Bim_Loan_Types) */
1028 SELECT
1029 CAST(To_Char(Id) As Varchar2(256 Char)) Product_Type_Id
1030 ,CAST(Modification_Date AS TIMESTAMP(6)) Modification_Date
1031 ,CAST(Product_Type AS VARCHAR2(15 CHAR)) Product_Type
1032 ,CAST(Product_Name AS VARCHAR2(40 CHAR)) Product_Name
1033 ,CAST(Currency_Code AS VARCHAR2(3 CHAR)) Currency_Code
1034 ,CAST(Schedule_Type AS VARCHAR2(60 CHAR)) Schedule_Type
1035 ,CAST(Interest_Fixed AS NUMBER(1)) Interest_Fixed
1036 ,To_Char(CAST(Calculation_Mode AS NUMBER)) Calculation_Mode
1037 ,To_Char(CAST(Not_Required_Capital_Table AS NUMBER)) Not_Required_Capital_Table
1038 ,CAST(Not_Required_Capital_Rate AS NUMBER(10, 6)) Not_Required_Capital_Rate
1039 ,CAST(Required_Capital_Table AS VARCHAR2(5 CHAR)) Required_Capital_Table
1040 ,CAST(Required_Capital_Rate AS NUMBER(10, 6)) Required_Capital_Rate
1041 ,CAST(Synch.Get_Dict('PRODUCT_STATUS', To_Char(Status)) AS VARCHAR2(15 CHAR)) Status
1042 ,CAST(Product_Description AS VARCHAR2(256 CHAR)) Product_Description
1043 ,To_Char(CAST(Product_Subtype AS NUMBER)) Product_Subtype
1044 ,CAST(Bim_Visible AS VARCHAR2(1 CHAR)) Bim_Visible
1045 ,CAST(Bim_Share AS VARCHAR2(1 CHAR)) Bim_Share
1046 ,CAST(Synch.Get_Dict('CUSTOMER_TYPE', To_Char(Customer_Type)) as varchar2(10 char)) Customer_Type
1047 FROM lc_Wd_Bim_Loan_Types
1048 WHERE Modification_Date >= Last_Synch_Date
1049 AND Modification_Date < l_Start_Time)
1050 SELECT /*+ USE_HASH( Wd, c ) */
1051 Wd.Product_Type_Id
1052 ,Wd.Product_Type
1053 ,Wd.Product_Name
1054 ,Wd.Currency_Code
1055 ,Wd.Schedule_Type
1056 ,Wd.Interest_Fixed
1057 ,Wd.Calculation_Mode
1058 ,Wd.Not_Required_Capital_Table
1059 ,Wd.Not_Required_Capital_Rate
1060 ,Wd.Required_Capital_Table
1061 ,Wd.Required_Capital_Rate
1062 ,Wd.Status
1063 ,Wd.Product_Description
1064 ,Wd.Product_Subtype
1065 ,Wd.Bim_Visible
1066 ,Wd.Bim_Share
1067 ,Wd.Customer_Type
1068 FROM Wd
1069 JOIN Loan_Types c
1070 ON Wd.Product_Type_Id = c.Product_Type_Id
1071 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
1072 --- AND Wd.Modification_Date > c.Modification_Date;---FMBANK-40432
1073 -- NESTBANKDU-264AND c.Modification_Date>= Last_Synch_Date;---FMBANK-40432
1074 AND Wd.Modification_Date>= Last_Synch_Date; -- NESTBANKDU-264
1075 CURSOR c_Insert IS
1076 WITH Wd AS
1077 (--SELECT /*+ DRIVING_SITE(Wd_Bim_Loan_Types) */
1078 SELECT
1079 CAST(To_Char(Id) As Varchar2(256 Char)) Product_Type_Id
1080 ,CAST(Modification_Date AS TIMESTAMP(6)) Modification_Date
1081 ,CAST(Product_Type AS VARCHAR2(15 CHAR)) Product_Type
1082 ,CAST(Product_Name AS VARCHAR2(40 CHAR)) Product_Name
1083 ,CAST(Currency_Code AS VARCHAR2(3 CHAR)) Currency_Code
1084 ,CAST(Schedule_Type AS VARCHAR2(60 CHAR)) Schedule_Type
1085 ,CAST(Interest_Fixed AS NUMBER(1)) Interest_Fixed
1086 ,To_Char(CAST(Calculation_Mode AS NUMBER)) Calculation_Mode
1087 ,To_Char(CAST(Not_Required_Capital_Table AS NUMBER)) Not_Required_Capital_Table
1088 ,CAST(Not_Required_Capital_Rate AS NUMBER(10, 6)) Not_Required_Capital_Rate
1089 ,CAST(Required_Capital_Table AS VARCHAR2(5 CHAR)) Required_Capital_Table
1090 ,CAST(Required_Capital_Rate AS NUMBER(10, 6)) Required_Capital_Rate
1091 ,CAST(Synch.Get_Dict('PRODUCT_STATUS', To_Char(Status)) AS VARCHAR2(15 CHAR)) Status
1092 ,CAST(Product_Description AS VARCHAR2(256 CHAR)) Product_Description
1093 ,To_Char(CAST(Product_Subtype AS NUMBER)) Product_Subtype
1094 ,CAST(Bim_Visible AS VARCHAR2(1 CHAR)) Bim_Visible
1095 ,CAST(Bim_Share AS VARCHAR2(1 CHAR)) Bim_Share
1096 ,CAST(Synch.Get_Dict('CUSTOMER_TYPE', To_Char(Customer_Type)) AS VARCHAR2(10 CHAR)) Customer_Type
1097 FROM lc_Wd_Bim_Loan_Types
1098 WHERE Modification_Date >= Last_Synch_Date
1099 AND Modification_Date < l_Start_Time)
1100 SELECT /*+ */
1101 0 Seq
1102 ,Wd.Product_Type_Id
1103 ,Wd.Product_Type
1104 ,Wd.Product_Name
1105 ,Wd.Currency_Code
1106 ,Wd.Schedule_Type
1107 ,Wd.Interest_Fixed
1108 ,Wd.Calculation_Mode
1109 ,Wd.Not_Required_Capital_Table
1110 ,Wd.Not_Required_Capital_Rate
1111 ,Wd.Required_Capital_Table
1112 ,Wd.Required_Capital_Rate
1113 ,Wd.Status
1114 ,Wd.Product_Description
1115 ,Wd.Product_Subtype
1116 ,Wd.Bim_Visible
1117 ,Wd.Bim_Share
1118 ,Wd.Customer_Type
1119 FROM Wd
1120 WHERE NOT EXISTS (SELECT 1
1121 FROM Loan_Types c
1122 WHERE Wd.Product_Type_Id = c.Product_Type_Id
1123 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id);
1124 CURSOR c_Delete IS
1125 SELECT c.Id
1126 FROM Loan_Types c
1127 WHERE NOT EXISTS (--SELECT /*+ DRIVING_SITE(Wd)*/1
1128 SELECT 1
1129 FROM lc_Wd_Bim_Loan_Types Wd
1130 WHERE To_Char(Wd.Id) = c.Product_Type_Id
1131 )
1132 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id;
1133 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
1134 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
1135 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
1136 Lupdate_Array Tupdate_Table;
1137 Linsert_Array Tinsert_Table;
1138 Ldelete_Array Tdelete_Table;
1139 BEGIN
1140 Proc_Time := Current_Timestamp;
1141 Synch_Restart.Start_Step;
1142 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
1143 l_Start_Time := Synch_Restart.Get_Start_Time();
1144 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
1145 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
1146 begin
1147 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loan_Types');
1148 vsql:='truncate table lc_Wd_Bim_Loan_Types';
1149 execute immediate vsql;
1150 commit;
1151 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loan_Types');
1152 end;
1153 begin
1154 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_LOAN_TYPES';
1155 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loan_Types ');
1156 vsql:='insert into lc_Wd_Bim_Loan_Types
1157 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Loan_Types Wd)';
1158 execute immediate vsql;
1159 commit;
1160 Synch_Restart.Log('wykonano:'||vsql);
1161 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Loan_Types');
1162 vsql:='select count(*) from lc_Wd_Bim_Loan_Types';
1163 execute immediate vsql into cnt;
1164 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loan_Types pobrano:'||cnt||' rekord?w');
1165 end;
1166 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
1167 Operation := l_Proc || '_UPDATE';
1168 Part_Time := Current_Timestamp;
1169 OPEN c_Update;
1170 LOOP
1171 FETCH c_Update BULK COLLECT
1172 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
1173 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
1174 l_Range_a := 0;
1175 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
1176 WHILE l_Range_a IS NOT NULL
1177 LOOP
1178 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
1179 UPDATE Loan_Types c
1180 SET c.Modification_Date = l_Start_Time --Lupdate_Array(i).Modification_Date
1181 ,c.Product_Type = Lupdate_Array(i).Product_Type
1182 ,c.Product_Name = Lupdate_Array(i).Product_Name
1183 ,c.Currency_Code = Lupdate_Array(i).Currency_Code
1184 ,c.Schedule_Type = Lupdate_Array(i).Schedule_Type
1185 ,c.Interest_Fixed = Lupdate_Array(i).Interest_Fixed
1186 ,c.Calculation_Mode = Lupdate_Array(i).Calculation_Mode
1187 ,c.Not_Required_Capital_Table = Lupdate_Array(i).Not_Required_Capital_Table
1188 ,c.Not_Required_Capital_Rate = Lupdate_Array(i).Not_Required_Capital_Rate
1189 ,c.Required_Capital_Table = Lupdate_Array(i).Required_Capital_Table
1190 ,c.Required_Capital_Rate = Lupdate_Array(i).Required_Capital_Rate
1191 ,c.Status = Lupdate_Array(i).Status
1192 ,c.Product_Description = Lupdate_Array(i).Product_Description
1193 ,c.Product_Subtype = Lupdate_Array(i).Product_Subtype
1194 ,c.Bim_Visible = Lupdate_Array(i).Bim_Visible
1195 ,c.Bim_Share = Lupdate_Array(i).Bim_Share
1196 ,c.Customer_Type = Lupdate_Array(i).Customer_Type
1197 ,c.Version = c.Version + 1
1198 WHERE c.Product_Type_Id = Lupdate_Array(i).Product_Type_Id;
1199 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
1200 l_Range_a := l_Range_b + 1;
1201 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
1202 END LOOP;
1203 EXIT WHEN c_Update%NOTFOUND;
1204 END LOOP;
1205 CLOSE c_Update;
1206 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
1207 Part_Time := Current_Timestamp;
1208 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
1209 Operation := l_Proc || '_INSERT';
1210 OPEN c_Insert;
1211 LOOP
1212 FETCH c_Insert BULK COLLECT
1213 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
1214 If Linsert_Array.Count > 0 Then
1215 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
1216 For i In 1..Linsert_Array.Count
1217 Loop
1218 Linsert_Array(i).Seq := v_Seq_From + (i-1);
1219 End Loop;
1220 End If;
1221 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
1222 l_Range_a := 0;
1223 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
1224 WHILE l_Range_a IS NOT NULL
1225 LOOP
1226 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
1227 INSERT /* APPEND_VALUES*/ INTO Loan_Types c
1228 (Id
1229 ,Product_Type_Id
1230 ,Product_Type
1231 ,Product_Name
1232 ,Modification_Date
1233 ,Creation_Date
1234 ,Bank_Id
1235 ,Version
1236 ,Currency_Code
1237 ,Schedule_Type
1238 ,Interest_Fixed
1239 ,Calculation_Mode
1240 ,Not_Required_Capital_Table
1241 ,Not_Required_Capital_Rate
1242 ,Required_Capital_Table
1243 ,Required_Capital_Rate
1244 ,Status
1245 ,Product_Description
1246 ,Product_Subtype
1247 ,Bim_Visible
1248 ,Bim_Share
1249 ,Customer_Type)
1250 VALUES
1251 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
1252 ,Linsert_Array(i).Product_Type_Id
1253 ,Linsert_Array(i).Product_Type
1254 ,Linsert_Array(i).Product_Name
1255 ,l_Start_Time --Linsert_Array(i).Modification_Date
1256 ,l_Start_Time --Linsert_Array(i).Modification_Date
1257 ,Synch_Restart.Current_Job_Row.Bank_Id /*Bank_Id*/
1258 ,0 /*VERSION*/
1259 ,Linsert_Array(i).Currency_Code
1260 ,Linsert_Array(i).Schedule_Type
1261 ,Linsert_Array(i).Interest_Fixed
1262 ,Linsert_Array(i).Calculation_Mode
1263 ,Linsert_Array(i).Not_Required_Capital_Table
1264 ,Linsert_Array(i).Not_Required_Capital_Rate
1265 ,Linsert_Array(i).Required_Capital_Table
1266 ,Linsert_Array(i).Required_Capital_Rate
1267 ,Linsert_Array(i).Status
1268 ,Linsert_Array(i).Product_Description
1269 ,Linsert_Array(i).Product_Subtype
1270 ,Linsert_Array(i).Bim_Visible
1271 ,Linsert_Array(i).Bim_Share
1272 ,Linsert_Array(i).Customer_Type);
1273 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
1274 l_Range_a := l_Range_b + 1;
1275 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
1276 END LOOP;
1277 EXIT WHEN c_Insert%NOTFOUND;
1278 END LOOP;
1279 CLOSE c_Insert;
1280 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
1281 Part_Time := Current_Timestamp;
1282 --
1283 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
1284 Operation := l_Proc || '_DELETE';
1285 OPEN c_Delete;
1286 LOOP
1287 FETCH c_Delete BULK COLLECT
1288 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
1289 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
1290 l_Range_a := 0;
1291 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
1292 WHILE l_Range_a IS NOT NULL
1293 LOOP
1294 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
1295 UPDATE Loan_Types c SET c.Status = 'INACTIVE' WHERE c.Id = Ldelete_Array(i).Id;
1296 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
1297 l_Range_a := l_Range_b + 1;
1298 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
1299 END LOOP;
1300 EXIT WHEN c_Delete%NOTFOUND;
1301 END LOOP;
1302 CLOSE c_Delete;
1303 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
1304 Operation := l_Proc || '_After_Loops';
1305 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
1306 Synch.Set_Last_Synch_Date(l_Program);
1307 Synch_Restart.End_Step;
1308 EXCEPTION
1309 WHEN OTHERS THEN
1310 IF SQL%Bulk_Exceptions.Count > 0 THEN
1311 IF Operation = l_Proc || '_INSERT' THEN
1312 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
1313 LOOP
1314 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' || Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Product_Type_Id ||
1315 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
1316 END LOOP;
1317 ELSIF Operation = l_Proc || '_UPDATE' THEN
1318 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
1319 LOOP
1320 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' || Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Product_Type_Id ||
1321 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
1322 END LOOP;
1323 ELSIF Operation = l_Proc || '_DELETE' THEN
1324 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
1325 LOOP
1326 Synch_Restart.Error_Log(l_Program,Operation || ', Id: ' || Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
1327 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
1328 END LOOP;
1329 END IF;
1330 END IF;
1331 Synch_Restart.Error_Log(l_Program, Operation);
1332 ROLLBACK;
1333 END Prc_Loan_Types;
1334 PROCEDURE Prc_Deposit_Types AS
1335 l_Proc VARCHAR2(100) := 'PRC_DEPOSIT_TYPES';
1336 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
1337 Last_Synch_Date DATE;
1338 l_Start_Time DATE;
1339 Operation VARCHAR2(100);
1340 Ln_Buff_Len NUMBER := 0;
1341 l_Range_a NUMBER := 0;
1342 l_Range_b NUMBER := 0;
1343 Tmp_Id NUMBER;
1344 v_Seq_From Integer;
1345 v_Seq_To Integer;
1346 vsql varchar2(4000);
1347 synch_d varchar2(100);
1348 cnt number;
1349 CURSOR c_Update IS
1350 WITH Wd AS
1351 (--SELECT /*+ DRIVING_SITE(Wd_Bim_Deposit_Types) */
1352 SELECT
1353 To_Char(CAST(Id AS NUMBER)) Product_Type_Id
1354 ,CAST(Modification_Date AS TIMESTAMP) Modification_Date
1355 ,To_Char(CAST(Cust_Classification AS NUMBER)) Cust_Classification
1356 ,CAST(Min_Amount AS NUMBER(19, 4)) Min_Amount
1357 ,CAST(Max_Amount AS NUMBER(19, 4)) Max_Amount
1358 ,CAST(Renewable AS NUMBER(1)) Renewable
1359 ,CAST(Product_Description AS VARCHAR2(255 CHAR)) Product_Description
1360 ,CAST(Product_Symbol AS VARCHAR2(15 CHAR)) Product_Type
1361 ,CAST(Deposit_Max_Length AS NUMBER(10)) Deposit_Max_Length
1362 ,CAST(Deposit_Min_Length AS NUMBER(10)) Deposit_Min_Length
1363 ,CAST(Period_Type AS VARCHAR2(1 CHAR)) Period_Type
1364 ,CAST(Currency_Code AS VARCHAR2(3 CHAR)) Currency_Code
1365 ,CAST(Interest_Type_Fixed AS NUMBER(1)) Interest_Type_Fixed
1366 ,CAST(Interest_Rate AS NUMBER(12, 4)) Interest_Rate
1367 ,Synch.Get_Dict('PRODUCT_STATUS', To_Char(Status)) Status
1368 ,CAST(Product_Modulo_Quantity AS NUMBER(3)) Product_Modulo_Quantity
1369 ,CAST(Bim_Visible AS VARCHAR2(1 CHAR)) Bim_Visible
1370 ,CAST(Bim_Visible_Date_From AS TIMESTAMP) Bim_Visible_Date_From
1371 ,CAST(Bim_Visible_Date_To AS TIMESTAMP) Bim_Visible_Date_To
1372 ,CAST(Bim_Share AS VARCHAR2(1 CHAR)) Bim_Share
1373 ,CAST(Bim_Share_Date_From AS TIMESTAMP) Bim_Share_Date_From
1374 ,CAST(Bim_Share_Date_To AS TIMESTAMP) Bim_Share_Date_To
1375 ,CAST(Capitalization_Freq AS VARCHAR2(20 CHAR)) Capitalization_Freq
1376 ,Synch.Get_Dict('CUSTOMER_TYPE', To_Char(Customer_Type)) Customer_Type
1377 FROM lc_Wd_Bim_Deposit_Types
1378 WHERE CAST(Modification_Date AS DATE) >= Last_Synch_Date
1379 AND CAST(Modification_Date AS DATE) < l_Start_Time)
1380 SELECT /*+ USE_HASH(Wd,c,Dcc) */
1381 Wd.Product_Type_Id
1382 ,Wd.Cust_Classification
1383 ,Wd.Min_Amount
1384 ,Wd.Max_Amount
1385 ,Wd.Renewable
1386 ,Wd.Product_Description
1387 ,Wd.Product_Type
1388 ,Wd.Deposit_Max_Length
1389 ,Wd.Deposit_Min_Length
1390 ,Wd.Period_Type
1391 ,Wd.Currency_Code
1392 ,Wd.Interest_Type_Fixed
1393 ,Wd.Interest_Rate
1394 ,Wd.Status
1395 ,Wd.Product_Modulo_Quantity
1396 ,Wd.Bim_Visible
1397 ,Wd.Bim_Visible_Date_From
1398 ,Wd.Bim_Visible_Date_To
1399 ,Wd.Bim_Share
1400 ,Wd.Bim_Share_Date_From
1401 ,Wd.Bim_Share_Date_To
1402 ,Wd.Capitalization_Freq
1403 ,Wd.Customer_Type
1404 ,c.Id Dt_Id
1405 FROM Wd
1406 JOIN Deposit_Types c
1407 ON c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
1408 AND ( Wd.Product_Type_Id = c.Product_Type_Id
1409 OR Wd.Product_Type_Id IS Null
1410 AND c.Product_Type_Id IS Null
1411 )
1412 AND ( Wd.Currency_Code = c.Currency_Code
1413 OR Wd.Currency_Code IS Null
1414 AND c.Currency_Code IS Null
1415 )
1416 JOIN Deposit_Cust_Classification Dcc
1417 ON Dcc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
1418 AND ( c.Currency_Code = Dcc.Currency_Code
1419 OR c.Currency_Code IS Null
1420 AND Dcc.Currency_Code IS Null
1421 )
1422 AND ( c.Product_Type_Id = Dcc.Product_Type_Id
1423 OR c.Product_Type_Id IS Null
1424 AND Dcc.Product_Type_Id IS Null
1425 )
1426 AND ( Wd.Cust_Classification = Dcc.Cust_Classification
1427 OR Wd.Cust_Classification IS Null
1428 AND Dcc.Cust_Classification IS Null
1429 )
1430 WHERE ---Wd.Modification_Date > c.Modification_Date; ---FMBANK-41789
1431 -- NESTBANKDU-264c.Modification_Date>= Last_Synch_Date;---FMBANK-41789
1432 Wd.Modification_Date>= Last_Synch_Date; -- NESTBANKDU-264
1433 CURSOR c_Insert IS
1434 WITH Wd AS
1435 (---SELECT /*+ DRIVING_SITE(Wd_Bim_Deposit_Types) */
1436 SELECT
1437 To_Char(CAST(Id AS NUMBER)) Product_Type_Id
1438 ,CAST(Modification_Date AS TIMESTAMP) Modification_Date
1439 ,To_Char(CAST(Cust_Classification AS NUMBER)) Cust_Classification
1440 ,CAST(Min_Amount AS NUMBER(19, 4)) Min_Amount
1441 ,CAST(Max_Amount AS NUMBER(19, 4)) Max_Amount
1442 ,CAST(Renewable AS NUMBER(1)) Renewable
1443 ,CAST(Product_Description AS VARCHAR2(255 CHAR)) Product_Description
1444 ,CAST(Product_Symbol AS VARCHAR2(15 CHAR)) Product_Type
1445 ,CAST(Deposit_Max_Length AS NUMBER(10)) Deposit_Max_Length
1446 ,CAST(Deposit_Min_Length AS NUMBER(10)) Deposit_Min_Length
1447 ,CAST(Period_Type AS VARCHAR2(1 CHAR)) Period_Type
1448 ,CAST(Currency_Code AS VARCHAR2(3 CHAR)) Currency_Code
1449 ,CAST(Interest_Type_Fixed AS NUMBER(1)) Interest_Type_Fixed
1450 ,CAST(Interest_Rate AS NUMBER(12, 4)) Interest_Rate
1451 ,Synch.Get_Dict('PRODUCT_STATUS', To_Char(Status)) Status
1452 ,CAST(Product_Modulo_Quantity AS NUMBER(3)) Product_Modulo_Quantity
1453 ,CAST(Bim_Visible AS VARCHAR2(1 CHAR)) Bim_Visible
1454 ,CAST(Bim_Visible_Date_From AS TIMESTAMP) Bim_Visible_Date_From
1455 ,CAST(Bim_Visible_Date_To AS TIMESTAMP) Bim_Visible_Date_To
1456 ,CAST(Bim_Share AS VARCHAR2(1 CHAR)) Bim_Share
1457 ,CAST(Bim_Share_Date_From AS TIMESTAMP) Bim_Share_Date_From
1458 ,CAST(Bim_Share_Date_To AS TIMESTAMP) Bim_Share_Date_To
1459 ,CAST(Capitalization_Freq AS VARCHAR2(20 CHAR)) Capitalization_Freq
1460 ,Synch.Get_Dict('CUSTOMER_TYPE', To_Char(Customer_Type)) Customer_Type
1461 FROM lc_Wd_Bim_Deposit_Types
1462 WHERE CAST(Modification_Date AS DATE) >= Last_Synch_Date
1463 AND CAST(Modification_Date AS DATE) < l_Start_Time)
1464 SELECT 0 Seq
1465 ,Wd.Product_Type_Id
1466 ,Wd.Cust_Classification
1467 ,Wd.Min_Amount
1468 ,Wd.Max_Amount
1469 ,Wd.Renewable
1470 ,Wd.Product_Description
1471 ,Wd.Product_Type
1472 ,Wd.Deposit_Max_Length
1473 ,Wd.Deposit_Min_Length
1474 ,Wd.Period_Type
1475 ,Wd.Currency_Code
1476 ,Wd.Interest_Type_Fixed
1477 ,Wd.Interest_Rate
1478 ,Wd.Status
1479 ,Wd.Product_Modulo_Quantity
1480 ,Wd.Bim_Visible
1481 ,Wd.Bim_Visible_Date_From
1482 ,Wd.Bim_Visible_Date_To
1483 ,Wd.Bim_Share
1484 ,Wd.Bim_Share_Date_From
1485 ,Wd.Bim_Share_Date_To
1486 ,Wd.Capitalization_Freq
1487 ,Wd.Customer_Type
1488 FROM Wd
1489 WHERE NOT EXISTS
1490 (SELECT 1
1491 FROM Deposit_Types c
1492 JOIN Deposit_Cust_Classification Dcc
1493 ON Dcc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
1494 AND ( c.Currency_Code = Dcc.Currency_Code
1495 OR c.Currency_Code IS Null
1496 AND Dcc.Currency_Code IS NULL
1497 )
1498 AND ( c.Product_Type_Id = Dcc.Product_Type_Id
1499 OR c.Product_Type_Id IS Null
1500 AND Dcc.Product_Type_Id IS Null
1501 )
1502 AND ( Wd.Cust_Classification = Dcc.Cust_Classification
1503 OR Wd.Cust_Classification IS Null
1504 AND Dcc.Cust_Classification IS Null
1505 )
1506 WHERE c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
1507 AND ( Wd.Product_Type_Id = c.Product_Type_Id
1508 OR Wd.Product_Type_Id IS Null
1509 AND c.Product_Type_Id IS Null
1510 )
1511 AND ( Wd.Currency_Code = c.Currency_Code
1512 OR Wd.Currency_Code IS Null
1513 AND c.Currency_Code IS Null
1514 )
1515 );
1516 CURSOR c_Delete IS
1517 SELECT c.Id, Dcc.Id Dcc_Id
1518 FROM Deposit_Types c
1519 LEFT JOIN Deposit_Cust_Classification Dcc
1520 ON c.Bank_Id = Dcc.Bank_Id
1521 AND (c.Currency_Code = Dcc.Currency_Code OR c.Currency_Code IS NULL AND Dcc.Currency_Code IS NULL)
1522 AND (c.Product_Type_Id = Dcc.Product_Type_Id OR c.Product_Type_Id IS NULL AND Dcc.Product_Type_Id IS NULL)
1523 WHERE NOT EXISTS
1524 (SELECT 1
1525 FROM lc_Wd_Bim_Deposit_Types Wd
1526 WHERE (Wd.Id = c.Product_Type_Id OR Wd.Id IS NULL AND c.Product_Type_Id IS NULL)
1527 AND (Wd.Cust_Classification = Dcc.Cust_Classification OR
1528 Wd.Cust_Classification IS NULL AND Dcc.Cust_Classification IS NULL)
1529 AND (Wd.Currency_Code = c.Currency_Code OR Wd.Currency_Code IS NULL AND c.Currency_Code IS NULL))
1530 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id;
1531 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
1532 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
1533 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
1534 Lupdate_Array Tupdate_Table;
1535 Linsert_Array Tinsert_Table;
1536 Ldelete_Array Tdelete_Table;
1537 PROCEDURE Ins(i NUMBER) AS
1538 Vn_Deposit_Types_Id NUMBER;
1539 --Vn_Deposit_Cust_Class NUMBER := e_Id_Seq.Nextval;
1540 Vn_Rows NUMBER := 0;
1541 Dep_Type_Rec Deposit_Types%ROWTYPE;
1542 BEGIN
1543 BEGIN
1544 SELECT *
1545 INTO Dep_Type_Rec
1546 FROM Deposit_Types
1547 WHERE Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
1548 AND (Currency_Code = Linsert_Array(i).Currency_Code OR Currency_Code IS NULL)
1549 AND (Product_Type_Id = Linsert_Array(i).Product_Type_Id OR Product_Type_Id IS NULL);
1550 Vn_Deposit_Types_Id := Dep_Type_Rec.Id;
1551 EXCEPTION
1552 WHEN No_Data_Found THEN
1553 Vn_Deposit_Types_Id := e_Id_Seq.Nextval;
1554 INSERT /* APPEND_VALUES*/ INTO Deposit_Types c
1555 (c.Product_Type_Id
1556 ,c.Modification_Date
1557 --,c.Cust_Classification
1558 ,c.Min_Amount
1559 ,c.Max_Amount
1560 ,c.Renewable
1561 ,c.Product_Description
1562 ,c.Product_Type
1563 ,c.Deposit_Max_Length
1564 ,c.Deposit_Min_Length
1565 ,c.Period_Type
1566 ,c.Currency_Code
1567 ,c.Interest_Type_Fixed
1568 ,c.Interest_Rate
1569 ,c.Status
1570 ,c.Product_Modulo_Quantity
1571 ,c.Bim_Visible
1572 ,c.Bim_Visible_Date_From
1573 ,c.Bim_Visible_Date_To
1574 ,c.Bim_Share
1575 ,c.Bim_Share_Date_From
1576 ,c.Bim_Share_Date_To
1577 ,c.Capitalization_Freq
1578 ,c.Customer_Type
1579 ,c.Creation_Date
1580 ,c.Version
1581 ,c.Id
1582 ,c.Bank_Id)
1583 VALUES
1584 (Linsert_Array(i).Product_Type_Id
1585 ,l_Start_Time
1586 --,Linsert_Array(i).Cust_Classification
1587 ,Linsert_Array(i).Min_Amount
1588 ,Linsert_Array(i).Max_Amount
1589 ,Linsert_Array(i).Renewable
1590 ,Linsert_Array(i).Product_Description
1591 ,Linsert_Array(i).Product_Type
1592 ,Linsert_Array(i).Deposit_Max_Length
1593 ,Linsert_Array(i).Deposit_Min_Length
1594 ,Linsert_Array(i).Period_Type
1595 ,Linsert_Array(i).Currency_Code
1596 ,Linsert_Array(i).Interest_Type_Fixed
1597 ,Linsert_Array(i).Interest_Rate
1598 ,Linsert_Array(i).Status
1599 ,Linsert_Array(i).Product_Modulo_Quantity
1600 ,Linsert_Array(i).Bim_Visible
1601 ,Linsert_Array(i).Bim_Visible_Date_From
1602 ,Linsert_Array(i).Bim_Visible_Date_To
1603 ,Linsert_Array(i).Bim_Share
1604 ,Linsert_Array(i).Bim_Share_Date_From
1605 ,Linsert_Array(i).Bim_Share_Date_To
1606 ,Linsert_Array(i).Capitalization_Freq
1607 ,Linsert_Array(i).Customer_Type
1608 ,l_Start_Time --Linsert_Array(i).Modification_Date
1609 ,0
1610 ,Vn_Deposit_Types_Id
1611 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
1612 );
1613 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
1614 END;
1615 INSERT /* APPEND_VALUES*/ INTO Deposit_Cust_Classification Dcc
1616 (Dcc.Id
1617 ,Dcc.Deposit_Type_Id
1618 ,Dcc.Bank_Id
1619 ,Dcc.Currency_Code
1620 ,Dcc.Product_Type_Id
1621 ,Dcc.Cust_Classification
1622 ,Dcc.Version
1623 ,Dcc.Status)
1624 VALUES
1625 (Linsert_Array(i).Seq --Vn_Deposit_Cust_Class
1626 ,Vn_Deposit_Types_Id
1627 ,Synch_Restart.Current_Job_Row.Bank_Id
1628 ,Linsert_Array(i).Currency_Code
1629 ,Linsert_Array(i).Product_Type_Id
1630 ,Linsert_Array(i).Cust_Classification
1631 ,0
1632 ,'ACTIVE');
1633 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
1634 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
1635 EXCEPTION
1636 WHEN OTHERS THEN
1637 Dbms_Output.Put_Line(Vn_Deposit_Types_Id || ' ' || Linsert_Array(i).Seq || ' ' ||
1638 To_Char(Linsert_Array(i).Product_Type_Id) || ' Error: ' || SQLERRM);
1639 END Ins;
1640 PROCEDURE Upd(i NUMBER) AS
1641 Vn_Rows NUMBER := 0;
1642 BEGIN
1643 UPDATE Deposit_Types c
1644 SET c.Modification_Date = l_Start_Time
1645 --,c.Cust_Classification = Lupdate_Array(i).Cust_Classification
1646 ,c.Min_Amount = Lupdate_Array(i).Min_Amount
1647 ,c.Max_Amount = Lupdate_Array(i).Max_Amount
1648 ,c.Renewable = Lupdate_Array(i).Renewable
1649 ,c.Product_Description = Lupdate_Array(i).Product_Description
1650 ,c.Product_Type = Lupdate_Array(i).Product_Type
1651 ,c.Deposit_Max_Length = Lupdate_Array(i).Deposit_Max_Length
1652 ,c.Deposit_Min_Length = Lupdate_Array(i).Deposit_Min_Length
1653 ,c.Period_Type = Lupdate_Array(i).Period_Type
1654 --,c.Currency_Code = Lupdate_Array(i).Currency_Code
1655 ,c.Interest_Type_Fixed = Lupdate_Array(i).Interest_Type_Fixed
1656 ,c.Interest_Rate = Lupdate_Array(i).Interest_Rate
1657 ,c.Status = Lupdate_Array(i).Status
1658 ,c.Product_Modulo_Quantity = Lupdate_Array(i).Product_Modulo_Quantity
1659 ,c.Bim_Visible = Lupdate_Array(i).Bim_Visible
1660 ,c.Bim_Visible_Date_From = Lupdate_Array(i).Bim_Visible_Date_From
1661 ,c.Bim_Visible_Date_To = Lupdate_Array(i).Bim_Visible_Date_To
1662 ,c.Bim_Share = Lupdate_Array(i).Bim_Share
1663 ,c.Bim_Share_Date_From = Lupdate_Array(i).Bim_Share_Date_From
1664 ,c.Bim_Share_Date_To = Lupdate_Array(i).Bim_Share_Date_To
1665 ,c.Capitalization_Freq = Lupdate_Array(i).Capitalization_Freq
1666 ,c.Customer_Type = Lupdate_Array(i).Customer_Type
1667 ,c.Version = c.Version + 1
1668 WHERE c.Id = Lupdate_Array(i).Dt_Id;
1669 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
1670 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
1671 END Upd;
1672 PROCEDURE Del(i NUMBER) AS
1673 Active_Cust_Slass NUMBER;
1674 BEGIN
1675 UPDATE Deposit_Cust_Classification Dcc SET Dcc.Status = 'INACTIVE' WHERE Dcc.Id = Ldelete_Array(i).Dcc_Id;
1676 SELECT COUNT(*)
1677 INTO Active_Cust_Slass
1678 FROM Deposit_Cust_Classification Dcc
1679 WHERE Dcc.Deposit_Type_Id = Ldelete_Array(i).Id
1680 AND Status = 'ACTIVE';
1681 IF Active_Cust_Slass = 0 THEN
1682 UPDATE Deposit_Types c SET c.Status = 'INACTIVE' WHERE c.Id = Ldelete_Array(i).Id;
1683 END IF;
1684 END;
1685 BEGIN
1686 Proc_Time := Current_Timestamp;
1687 Synch_Restart.Start_Step;
1688 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
1689 l_Start_Time := Synch_Restart.Get_Start_Time();
1690 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
1691 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
1692 begin
1693 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Deposit_Types');
1694 vsql:='truncate table lc_Wd_Bim_Deposit_Types';
1695 execute immediate vsql;
1696 commit;
1697 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Deposit_Types');
1698 end;
1699 begin
1700 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_DEPOSIT_TYPES';
1701 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Deposit_Types ');
1702 vsql:='insert into lc_Wd_Bim_Deposit_Types
1703 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Deposit_Types Wd)';
1704 execute immediate vsql;
1705 commit;
1706 Synch_Restart.Log('wykonano:'||vsql);
1707 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Deposit_Types');
1708 vsql:='select count(*) from lc_Wd_Bim_Deposit_Types';
1709 execute immediate vsql into cnt;
1710 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Deposit_Types pobrano:'||cnt||' rekord?w');
1711 end;
1712 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
1713 Operation := l_Proc || '_UPDATE';
1714 Part_Time := Current_Timestamp;
1715 OPEN c_Update;
1716 LOOP
1717 FETCH c_Update BULK COLLECT
1718 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
1719 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
1720 l_Range_a := 0;
1721 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
1722 WHILE l_Range_a IS NOT NULL
1723 LOOP
1724 FOR i IN l_Range_a .. l_Range_b
1725 LOOP
1726 Upd(i);
1727 END LOOP;
1728 --Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
1729 l_Range_a := l_Range_b + 1;
1730 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
1731 END LOOP;
1732 EXIT WHEN c_Update%NOTFOUND;
1733 END LOOP;
1734 CLOSE c_Update;
1735 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
1736 Part_Time := Current_Timestamp;
1737 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
1738 Operation := l_Proc || '_INSERT';
1739 OPEN c_Insert;
1740 LOOP
1741 FETCH c_Insert BULK COLLECT
1742 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
1743 If Linsert_Array.Count > 0 Then
1744 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
1745 For i In 1..Linsert_Array.Count
1746 Loop
1747 Linsert_Array(i).Seq := v_Seq_From + (i-1);
1748 End Loop;
1749 End If;
1750 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
1751 l_Range_a := 0;
1752 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
1753 WHILE l_Range_a IS NOT NULL
1754 LOOP
1755 FOR i IN l_Range_a .. l_Range_b
1756 LOOP
1757 Tmp_Id := Linsert_Array(i).Product_Type_Id;
1758 Ins(i);
1759 END LOOP;
1760 --Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
1761 l_Range_a := l_Range_b + 1;
1762 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
1763 END LOOP;
1764 EXIT WHEN c_Insert%NOTFOUND;
1765 END LOOP;
1766 CLOSE c_Insert;
1767 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
1768 Part_Time := Current_Timestamp;
1769 --
1770 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
1771 Operation := l_Proc || '_DELETE';
1772 OPEN c_Delete;
1773 LOOP
1774 FETCH c_Delete BULK COLLECT
1775 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
1776 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
1777 l_Range_a := 0;
1778 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
1779 WHILE l_Range_a IS NOT NULL
1780 LOOP
1781 --FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
1782 FOR i IN l_Range_a .. l_Range_b
1783 LOOP
1784 Del(i);
1785 END LOOP;
1786 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
1787 l_Range_a := l_Range_b + 1;
1788 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
1789 END LOOP;
1790 EXIT WHEN c_Delete%NOTFOUND;
1791 END LOOP;
1792 CLOSE c_Delete;
1793 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
1794 --
1795 Operation := l_Proc || '_After_Loops';
1796 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
1797 Synch.Set_Last_Synch_Date(l_Program);
1798 Synch_Restart.End_Step;
1799 EXCEPTION
1800 WHEN OTHERS THEN
1801 IF Operation = l_Proc || '_INSERT' THEN
1802 Synch_Restart.Error_Log(l_Program, Operation || ', Product_Type_Id: ' || Tmp_Id || ', ERROR_CODE: ' || SQLERRM);
1803 ELSIF Operation = l_Proc || '_UPDATE' THEN
1804 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
1805 ', ERROR_CODE: ' || SQLERRM);
1806 ELSIF Operation = l_Proc || '_DELETE' THEN
1807 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
1808 ', ERROR_CODE: ' || SQLERRM);
1809 END IF;
1810 Synch_Restart.Error_Log(l_Program, Operation);
1811 ROLLBACK;
1812 END Prc_Deposit_Types;
1813 PROCEDURE Prc_Deposit_Threshold AS
1814 l_Proc VARCHAR2(100) := 'PRC_DEPOSIT_THRESHOLD';
1815 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
1816 Last_Synch_Date DATE;
1817 l_Start_Time DATE;
1818 Operation VARCHAR2(100);
1819 Ln_Buff_Len NUMBER := 0;
1820 l_Range_a NUMBER := 0;
1821 l_Range_b NUMBER := 0;
1822 v_Seq_From Integer;
1823 v_Seq_To Integer;
1824 vsql varchar2(4000);
1825 synch_d varchar2(100);
1826 cnt number;
1827 CURSOR c_Insert IS
1828 SELECT
1829 0 Seq
1830 ,CAST(Deposit_Type_Id AS NUMBER(19)) Product_Type_Id
1831 ,CAST(Modification_Date AS TIMESTAMP) Modification_Date
1832 ,CAST(Table_Number_Id AS NUMBER(19)) Table_Number_Id
1833 ,CAST(Table_Matrix_Id AS NUMBER(19)) Table_Matrix_Id
1834 ,CAST(Table_Description AS VARCHAR2(255 CHAR)) Table_Description
1835 ,CAST(Version_Date AS TIMESTAMP) Version_Date
1836 ,CAST(Row_Type AS VARCHAR2(15 CHAR)) Row_Type
1837 ,CAST(Period_Type AS VARCHAR2(1 CHAR)) Period_Type
1838 ,CAST(Currency_Code AS VARCHAR2(3 CHAR)) Currency_Code
1839 ,CAST(Threshold AS NUMBER(19, 2)) Threshold
1840 ,CAST(Term_1 AS NUMBER(12,2)) Term_1
1841 ,CAST(Term_2 AS NUMBER(12,2)) Term_2
1842 ,CAST(Term_3 AS NUMBER(12,2)) Term_3
1843 ,CAST(Term_4 AS NUMBER(12,2)) Term_4
1844 ,CAST(Term_5 AS NUMBER(12,2)) Term_5
1845 ,CAST(Term_6 AS NUMBER(12,2)) Term_6
1846 ,CAST(Term_7 AS NUMBER(12,2)) Term_7
1847 ,CAST(Term_8 AS NUMBER(12,2)) Term_8
1848 ,CAST(Term_9 AS NUMBER(12,2)) Term_9
1849 ,CAST(Term_10 AS NUMBER(12,2)) Term_10
1850 ,CAST(Term_11 AS NUMBER(12,2)) Term_11
1851 ,CAST(Term_12 AS NUMBER(12,2)) Term_12
1852 ,(SELECT /*+ INDEX(dtl UK_DEPOSIT_TYPE) */Id
1853 FROM Deposit_Types Dt1
1854 WHERE Dt1.Product_Type_Id = Wd.Deposit_Type_Id
1855 AND Dt1.Currency_Code = Wd.Currency_Code
1856 AND Dt1.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id) Deposit_Type_Id
1857 FROM lc_Wd_Bim_Dep_Threshold Wd
1858 WHERE (Wd.Deposit_Type_Id, Wd.Table_Number_Id, Wd.Table_Matrix_Id) IN
1859 (Select /*+ use_hash(wdb,dt) index(dt UK_DEPOSIT_TYPE )*/
1860 DISTINCT Wdb.Deposit_Type_Id, Wdb.Table_Number_Id, Wdb.Table_Matrix_Id
1861 FROM lc_Wd_Bim_Dep_Threshold Wdb
1862 JOIN Deposit_Types Dt
1863 ON Dt.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
1864 AND Dt.Product_Type_Id = Wdb.Deposit_Type_Id
1865 WHERE Wdb.Modification_Date >= Last_Synch_Date
1866 AND Wdb.Modification_Date < l_Start_Time)
1867 ORDER BY Wd.Deposit_Type_Id, Wd.Table_Number_Id, Wd.Table_Matrix_Id, Wd.Threshold;
1868 CURSOR c_Delete IS
1869 -- do skasowania jesli
1870 SELECT Dti.Id
1871 FROM Deposit_Type_Interest Dti
1872 -- nie ma typu w typach
1873 WHERE (NOT EXISTS (SELECT 1
1874 FROM Deposit_Types Dt
1875 WHERE Dti.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
1876 AND Dti.Bank_Id = Dt.Bank_Id
1877 --AND Dt.Product_Type_Id = Dti.Product_Type_Id
1878 AND Dti.Deposit_Type_Id = Dt.Id
1879 )
1880 -- lub krotka jest wsrod modyfikowanych
1881 OR (Dti.Product_Type_Id, Dti.Table_Number_Id, Dti.Table_Matrix_Id) IN
1882 (SELECT
1883 DISTINCT Deposit_Type_Id, Table_Number_Id, Table_Matrix_Id
1884 FROM lc_Wd_Bim_Dep_Threshold
1885 WHERE Modification_Date >= Last_Synch_Date
1886 AND Modification_Date < l_Start_Time
1887 )
1888 Or (Dti.Product_Type_Id, Dti.Table_Number_Id, Dti.Table_Matrix_Id) NOT IN
1889 (SELECT
1890 DISTINCT Deposit_Type_Id, Table_Number_Id, Table_Matrix_Id
1891 FROM lc_Wd_Bim_Dep_Threshold
1892 )
1893 )
1894 AND Dti.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id;
1895 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
1896 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
1897 Linsert_Array Tinsert_Table;
1898 Ldelete_Array Tdelete_Table;
1899 BEGIN
1900 Proc_Time := Current_Timestamp;
1901 Synch_Restart.Start_Step;
1902 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
1903 l_Start_Time := Synch_Restart.Get_Start_Time();
1904 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
1905 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
1906 begin
1907 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Dep_Threshold');
1908 vsql:='truncate table lc_Wd_Bim_Dep_Threshold';
1909 execute immediate vsql;
1910 commit;
1911 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Dep_Threshold');
1912 end;
1913 begin
1914 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_DEPOSIT_THRESHOLD';
1915 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Dep_Threshold');
1916 vsql:='insert into lc_Wd_Bim_Dep_Threshold
1917 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Dep_Threshold Wd)';
1918 execute immediate vsql;
1919 commit;
1920 Synch_Restart.Log('wykonano:'||vsql);
1921 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Dep_Threshold');
1922 vsql:='select count(*) from lc_Wd_Bim_Dep_Threshold';
1923 execute immediate vsql into cnt;
1924 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Dep_Threshold pobrano:'||cnt||' rekord?w');
1925 end;
1926 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
1927 Operation := l_Proc || '_DELETE';
1928 Part_Time := Current_Timestamp;
1929 OPEN c_Delete;
1930 LOOP
1931 FETCH c_Delete BULK COLLECT
1932 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
1933 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
1934 l_Range_a := 0;
1935 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
1936 WHILE l_Range_a IS NOT NULL
1937 LOOP
1938 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
1939 DELETE FROM Deposit_Type_Interest Dti WHERE Dti.Id = Ldelete_Array(i).Id;
1940 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
1941 l_Range_a := l_Range_b + 1;
1942 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
1943 END LOOP;
1944 EXIT WHEN c_Delete%NOTFOUND;
1945 END LOOP;
1946 CLOSE c_Delete;
1947 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
1948 Part_Time := Current_Timestamp;
1949 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
1950 Operation := l_Proc || '_INSERT';
1951 OPEN c_Insert;
1952 LOOP
1953 FETCH c_Insert BULK COLLECT
1954 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
1955 If Linsert_Array.Count > 0 Then
1956 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
1957 For i In 1..Linsert_Array.Count
1958 Loop
1959 Linsert_Array(i).Seq := v_Seq_From + (i-1);
1960 End Loop;
1961 End If;
1962 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
1963 l_Range_a := 0;
1964 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
1965 WHILE l_Range_a IS NOT NULL
1966 LOOP
1967 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
1968 INSERT /* APPEND_VALUES*/ INTO Deposit_Type_Interest Dti
1969 (Dti.Id
1970 ,Dti.Version
1971 ,Dti.Bank_Id
1972 ,Dti.Creation_Date
1973 ,Dti.Modification_Date
1974 ,Dti.Product_Type_Id
1975 ,Dti.Table_Number_Id
1976 ,Dti.Table_Matrix_Id
1977 ,Dti.Table_Description
1978 ,Dti.Version_Date
1979 ,Dti.Row_Type
1980 ,Dti.Period_Type
1981 ,Dti.Currency_Code
1982 ,Dti.Threshold
1983 ,Dti.Term_1
1984 ,Dti.Term_2
1985 ,Dti.Term_3
1986 ,Dti.Term_4
1987 ,Dti.Term_5
1988 ,Dti.Term_6
1989 ,Dti.Term_7
1990 ,Dti.Term_8
1991 ,Dti.Term_9
1992 ,Dti.Term_10
1993 ,Dti.Term_11
1994 ,Dti.Term_12
1995 ,Dti.Deposit_Type_Id)
1996 VALUES
1997 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
1998 ,0
1999 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
2000 ,l_Start_Time
2001 ,l_Start_Time
2002 ,Linsert_Array(i).Product_Type_Id
2003 ,Linsert_Array(i).Table_Number_Id
2004 ,Linsert_Array(i).Table_Matrix_Id
2005 ,Linsert_Array(i).Table_Description
2006 ,Linsert_Array(i).Version_Date
2007 ,Linsert_Array(i).Row_Type
2008 ,Linsert_Array(i).Period_Type
2009 ,Linsert_Array(i).Currency_Code
2010 ,Linsert_Array(i).Threshold
2011 ,Linsert_Array(i).Term_1
2012 ,Linsert_Array(i).Term_2
2013 ,Linsert_Array(i).Term_3
2014 ,Linsert_Array(i).Term_4
2015 ,Linsert_Array(i).Term_5
2016 ,Linsert_Array(i).Term_6
2017 ,Linsert_Array(i).Term_7
2018 ,Linsert_Array(i).Term_8
2019 ,Linsert_Array(i).Term_9
2020 ,Linsert_Array(i).Term_10
2021 ,Linsert_Array(i).Term_11
2022 ,Linsert_Array(i).Term_12
2023 ,Linsert_Array(i).Deposit_Type_Id);
2024 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
2025 l_Range_a := l_Range_b + 1;
2026 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
2027 END LOOP;
2028 EXIT WHEN c_Insert%NOTFOUND;
2029 END LOOP;
2030 CLOSE c_Insert;
2031 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2032 --
2033 Operation := l_Proc || '_After_Loops';
2034 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
2035 Synch.Set_Last_Synch_Date(l_Program);
2036 Synch_Restart.End_Step;
2037 EXCEPTION
2038 WHEN OTHERS THEN
2039 IF SQL%Bulk_Exceptions.Count > 0 THEN
2040 IF Operation = l_Proc || '_INSERT' THEN
2041 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2042 LOOP
2043 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2044 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2045 END LOOP;
2046 ELSIF Operation = l_Proc || '_UPDATE' THEN
2047 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2048 LOOP
2049 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2050 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2051 END LOOP;
2052 ELSIF Operation = l_Proc || '_DELETE' THEN
2053 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2054 LOOP
2055 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2056 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2057 END LOOP;
2058 END IF;
2059 END IF;
2060 Synch_Restart.Error_Log(l_Program, Operation);
2061 ROLLBACK;
2062 END Prc_Deposit_Threshold;
2063 PROCEDURE Prc_Dict_Entry AS
2064 l_Proc VARCHAR2(100) := 'PRC_DICT_ENTRY';
2065 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
2066 Last_Synch_Date DATE;
2067 l_Start_Time DATE;
2068 Operation VARCHAR2(100);
2069 Ln_Buff_Len NUMBER := 0;
2070 l_Range_a NUMBER := 0;
2071 l_Range_b NUMBER := 0;
2072 v_Seq_From Integer;
2073 v_Seq_To Integer;
2074 vsql varchar2(4000);
2075 synch_d varchar2(100);
2076 cnt number;
2077 CURSOR c_Update IS
2078 WITH Wd AS
2079 (--SELECT /*+driving_site(Wd_Bim_Dict_Entry)*/
2080 SELECT
2081 Synch.Get_Dict('DICTIONARY_NAME', NAME) Code
2082 ,CAST(Key AS VARCHAR2(50 CHAR)) Key
2083 ,CAST(VALUE AS VARCHAR2(255 CHAR)) VALUE
2084 ,Synch.Get_Dict('DICTIONARY_STATUS', To_Char(Status)) Status
2085 ,CAST(Modification_Date AS TIMESTAMP) Modification_Date
2086 FROM lc_Wd_Bim_Dict_Entry
2087 WHERE Upper(NAME) IN ('DIC_CUST_CLASSES', 'DIC_COUNTRIES')
2088 AND Modification_Date < l_Start_Time
2089 AND Modification_Date >= Last_Synch_Date)
2090 SELECT /*+use_hash(Wd, Cd, Ce) */
2091 Wd.Code, Wd.Key, Wd.Value, Wd.Status, Ce.Id Entry_Id
2092 FROM Wd
2093 JOIN Dict_Dictionaries Cd
2094 ON Wd.Code = Cd.Code
2095 AND Cd.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
2096 JOIN Dict_Entry Ce
2097 ON Ce.Dict_Header_Id = Cd.Id
2098 AND Ce.Bank_Id = Cd.Bank_Id
2099 AND Wd.Key = Ce.Key
2100 AND Wd.Modification_Date > Ce.Modification_Date;
2101 CURSOR c_Insert IS
2102 WITH Wd AS
2103 (--SELECT /*+driving_site(Wd_Bim_Dict_Entry)*/
2104 SELECT
2105 Synch.Get_Dict('DICTIONARY_NAME', NAME) Code
2106 ,CAST(Key AS VARCHAR2(50 CHAR)) Key
2107 ,CAST(VALUE AS VARCHAR2(255 CHAR)) VALUE
2108 ,Synch.Get_Dict('DICTIONARY_STATUS', To_Char(Status)) Status
2109 ,CAST(Modification_Date AS TIMESTAMP) Modification_Date
2110 FROM lc_Wd_Bim_Dict_Entry
2111 WHERE Upper(NAME) IN ('DIC_CUST_CLASSES', 'DIC_COUNTRIES')
2112 AND Modification_Date < l_Start_Time
2113 AND Modification_Date >= Last_Synch_Date)
2114 SELECT /*+use_hash(Wd, Cd, Ce) */
2115 0 Seq, Wd.Code, Wd.Key, Wd.Value, Wd.Status, Cd.Id Code_Id
2116 FROM Wd
2117 JOIN Dict_Dictionaries Cd
2118 ON Wd.Code = Cd.Code
2119 AND Cd.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
2120 LEFT JOIN Dict_Entry Ce
2121 ON Ce.Dict_Header_Id = Cd.Id
2122 AND Ce.Bank_Id = Cd.Bank_Id
2123 AND Wd.Key = Ce.Key
2124 WHERE Ce.Id IS NULL;
2125 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
2126 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
2127 Lupdate_Array Tupdate_Table;
2128 Linsert_Array Tinsert_Table;
2129 BEGIN
2130 Proc_Time := Current_Timestamp;
2131 Synch_Restart.Start_Step;
2132 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
2133 l_Start_Time := Synch_Restart.Get_Start_Time();
2134 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
2135 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
2136 Synch_Restart.Log('Start pobierania danych ');
2137 begin
2138 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Bim_Customer_Invol');
2139 vsql:='truncate table lc_Bim_Customer_Invol';
2140 execute immediate vsql;
2141 commit;
2142 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Bim_Customer_Invol');
2143 end;
2144 -----lc_Bim_Customer_Invol
2145 begin
2146 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_DICT_ENTRY';
2147 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Dict_Entry');
2148 vsql:='insert into lc_Wd_Bim_Dict_Entry
2149 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Dict_Entry Wd
2150 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
2151 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
2152 execute immediate vsql;
2153 commit;
2154 Synch_Restart.Log('wykonano:'||vsql);
2155 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Dict_Entry');
2156 vsql:='select count(*) from lc_Wd_Bim_Dict_Entry';
2157 execute immediate vsql into cnt;
2158 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Dict_Entry pobrano:'||cnt||' rekord?w');
2159 end;
2160 Synch_Restart.Log('Rozpoczynam weryfikacje naglowkow slownikow ' || l_Proc);
2161 Operation := l_Proc || '_DICT_HEADER';
2162 Part_Time := Current_Timestamp;
2163 MERGE INTO Dict_Dictionaries d
2164 USING (SELECT Synch_Restart.Current_Job_Row.Bank_Id Bank_Id
2165 ,'CLASSIFICATION_TYPES' Code
2166 ,'Slownik typow klasyfikacji klientow' Description
2167 FROM Dual
2168 UNION ALL
2169 SELECT Synch_Restart.Current_Job_Row.Bank_Id, 'COUNTRIES', 'Slownik krajow'
2170 FROM Dual) s
2171 ON (d.Bank_Id = s.Bank_Id AND d.Code = s.Code)
2172 WHEN NOT MATCHED THEN
2173 INSERT
2174 (d.Id, d.Bank_Id, d.Creation_Date, d.Modification_Date, d.Version, d.Code, d.Description, d.Status)
2175 VALUES
2176 (e_Id_Seq.Nextval, s.Bank_Id, l_Start_Time, l_Start_Time, 0, s.Code, s.Description, 'ACTIVE');
2177 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2178 Part_Time := Current_Timestamp;
2179 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
2180 Operation := l_Proc || '_UPDATE';
2181 OPEN c_Update;
2182 LOOP
2183 FETCH c_Update BULK COLLECT
2184 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
2185 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
2186 l_Range_a := 0;
2187 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
2188 WHILE l_Range_a IS NOT NULL
2189 LOOP
2190 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2191 UPDATE Dict_Entry Ce
2192 SET Ce.Version = Ce.Version + 1
2193 ,Ce.Modification_Date = l_Start_Time --Lupdate_Array(i).Modification_Date
2194 ,Ce.Value = Lupdate_Array(i).Value
2195 ,Ce.Status = Lupdate_Array(i).Status
2196 WHERE Ce.Id = Lupdate_Array(i).Entry_Id;
2197 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
2198 l_Range_a := l_Range_b + 1;
2199 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
2200 END LOOP;
2201 EXIT WHEN c_Update%NOTFOUND;
2202 END LOOP;
2203 CLOSE c_Update;
2204 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2205 Part_Time := Current_Timestamp;
2206 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
2207 Operation := l_Proc || '_INSERT';
2208 OPEN c_Insert;
2209 LOOP
2210 FETCH c_Insert BULK COLLECT
2211 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
2212 If Linsert_Array.Count > 0 Then
2213 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
2214 For i In 1..Linsert_Array.Count
2215 Loop
2216 Linsert_Array(i).Seq := v_Seq_From + (i-1);
2217 End Loop;
2218 End If;
2219 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
2220 l_Range_a := 0;
2221 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
2222 WHILE l_Range_a IS NOT NULL
2223 LOOP
2224 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2225 INSERT /* APPEND_VALUES*/ INTO Dict_Entry Ce
2226 (Ce.Id
2227 ,Ce.Bank_Id
2228 ,Ce.Version
2229 ,Ce.Creation_Date
2230 ,Ce.Modification_Date
2231 ,Ce.Dict_Header_Id
2232 ,Ce.Key
2233 ,Ce.Value
2234 ,Ce.Status
2235 ,Ce.Is_Processable)
2236 VALUES
2237 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
2238 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
2239 ,0 --VERSION
2240 ,l_Start_Time --Linsert_Array(i).Modification_Date
2241 ,l_Start_Time --Linsert_Array(i).Modification_Date
2242 ,Linsert_Array(i).Code_Id
2243 ,Linsert_Array(i).Key
2244 ,Linsert_Array(i).Value
2245 ,Linsert_Array(i).Status
2246 ,0 --ce.Is_Processable -- -- NUMBER(1)default 0
2247 );
2248 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
2249 l_Range_a := l_Range_b + 1;
2250 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
2251 END LOOP;
2252 EXIT WHEN c_Insert%NOTFOUND;
2253 END LOOP;
2254 CLOSE c_Insert;
2255 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2256 Operation := l_Proc || '_After_Loops';
2257 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
2258 Synch.Set_Last_Synch_Date(l_Program);
2259 Synch_Restart.End_Step;
2260 EXCEPTION
2261 WHEN OTHERS THEN
2262 IF SQL%Bulk_Exceptions.Count > 0 THEN
2263 IF Operation = l_Proc || '_INSERT' THEN
2264 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2265 LOOP
2266 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2267 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2268 END LOOP;
2269 ELSIF Operation = l_Proc || '_UPDATE' THEN
2270 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2271 LOOP
2272 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2273 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2274 END LOOP;
2275 END IF;
2276 END IF;
2277 Synch_Restart.Error_Log(l_Program, Operation);
2278 ROLLBACK;
2279 END Prc_Dict_Entry;
2280 PROCEDURE Prc_Bluecash_Participants AS
2281 l_Proc VARCHAR2(100) := 'PRC_BLUECASH_PARTICIPANTS';
2282 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
2283 Last_Synch_Date DATE;
2284 Operation VARCHAR2(100);
2285 l_Start_Time DATE;
2286 vsql varchar2(4000);
2287 synch_d varchar2(100);
2288 cnt number;
2289 BEGIN
2290 Proc_Time := Current_Timestamp;
2291 Synch_Restart.Start_Step;
2292 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
2293 l_Start_Time := Synch_Restart.Get_Start_Time();
2294 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
2295 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
2296 Synch_Restart.Log('Start pobierania danych ');
2297 begin
2298 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Bluecash_Particip');
2299 vsql:='truncate table lc_Wd_Bim_Bluecash_Particip';
2300 execute immediate vsql;
2301 commit;
2302 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Bluecash_Particip');
2303 end;
2304 -----lc_Bim_Customer_Invol
2305 begin
2306 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_BLUECASH_PARTICIPANTS';
2307 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Bluecash_Particip');
2308 vsql:='insert into lc_Wd_Bim_Bluecash_Particip
2309 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Bluecash_Participants Wd)';
2310 execute immediate vsql;
2311 commit;
2312 Synch_Restart.Log('wykonano:'||vsql);
2313 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Bluecash_Particip');
2314 vsql:='select count(*) from lc_Wd_Bim_Bluecash_Particip';
2315 execute immediate vsql into cnt;
2316 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Bluecash_Particip pobrano:'||cnt||' rekord?w');
2317 end;
2318 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
2319 Operation := l_Proc || '_REPLACE';
2320 Part_Time := Current_Timestamp;
2321 DELETE FROM Dict_Bluecash_Participants;
2322 Insert Into Dict_Bluecash_Participants
2323 (Id
2324 ,Bank_Id
2325 ,Version
2326 ,Creation_Date
2327 ,Modification_Date
2328 ,Source_Bank_Id
2329 ,Bank_Name
2330 ,Realization_Day_Type
2331 ,Date_From
2332 ,Date_To
2333 ,Clearing_Number
2334 ,Bank_Status
2335 )
2336 Select e_Id_Seq.Nextval
2337 ,0
2338 ,0
2339 ,l_Start_Time
2340 ,l_Start_Time
2341 ,CAST(c.Bank_Id AS NUMBER(10))
2342 ,CAST(c.Bank_Name AS VARCHAR2(35 CHAR))
2343 ,CAST(c.Realization_Day_Type AS VARCHAR2(11 CHAR))
2344 ,CAST(c.Date_From AS TIMESTAMP)
2345 ,CAST(c.Date_To AS TIMESTAMP)
2346 ,CAST(c.Clearing_Number AS VARCHAR2(8 CHAR))
2347 ,Synch.Get_Dict('BLUECASH_STATUS', To_Char(c.Bank_Status))
2348 FROM lc_Wd_Bim_Bluecash_Particip c;
2349/*
2350 FOR c IN (SELECT * FROM Wd_Bim_Bluecash_Participants)
2351 LOOP
2352 INSERT INTO Dict_Bluecash_Participants Dbp
2353 (Id
2354 ,Bank_Id
2355 ,Version
2356 ,Source_Bank_Id
2357 ,Bank_Name
2358 ,Bank_Status
2359 ,Realization_Day_Type
2360 ,Date_From
2361 ,Date_To
2362 ,Clearing_Number
2363 ,Creation_Date
2364 ,Modification_Date)
2365 VALUES
2366 (e_Id_Seq.Nextval
2367 ,0
2368 ,0
2369 ,CAST(c.Bank_Id AS NUMBER(10))
2370 ,CAST(c.Bank_Name AS VARCHAR2(35 CHAR))
2371 ,Synch.Get_Dict('BLUECASH_STATUS', To_Char(c.Bank_Status))
2372 ,CAST(c.Realization_Day_Type AS VARCHAR2(11 CHAR))
2373 ,CAST(c.Date_From AS TIMESTAMP)
2374 ,CAST(c.Date_To AS TIMESTAMP)
2375 ,CAST(c.Clearing_Number AS VARCHAR2(8 CHAR))
2376 ,l_Start_Time
2377 ,l_Start_Time);
2378 END LOOP;
2379*/
2380 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2381 Operation := l_Proc || '_After_Replace';
2382 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
2383 Synch.Set_Last_Synch_Date(l_Program);
2384 Synch_Restart.End_Step;
2385 EXCEPTION
2386 WHEN OTHERS THEN
2387 Synch_Restart.Error_Log(l_Program, Operation);
2388 ROLLBACK;
2389 END Prc_Bluecash_Participants;
2390 PROCEDURE Prc_Calendars AS
2391 l_Proc VARCHAR2(100) := 'PRC_CALENDARS';
2392 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
2393 Last_Synch_Date DATE;
2394 l_Start_Time DATE;
2395 Operation VARCHAR2(100);
2396 Ln_Buff_Len NUMBER := 0;
2397 l_Range_a NUMBER := 0;
2398 l_Range_b NUMBER := 0;
2399 vsql varchar2(4000);
2400 synch_d varchar2(100);
2401 cnt number;
2402 CURSOR c_Update IS
2403 WITH Wd AS
2404 (--SELECT /*+ driving_site(Wd_Bim_Calendars)*/
2405 SELECT
2406 CAST(Id AS NUMBER(19)) Id
2407 ,CAST(Calendar_Type AS VARCHAR2(12 CHAR)) Calendar_Type
2408 ,CAST(Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
2409 ,CAST(Country_Code AS VARCHAR2(2 CHAR)) Country_Code
2410 ,CAST(Date_Calendar AS DATE) Date_Calendar
2411 ,CAST(Day_Type AS VARCHAR2(10 CHAR)) Day_Type
2412 FROM lc_Wd_Bim_Calendars
2413 WHERE Modification_Date < l_Start_Time
2414 AND Modification_Date >= Last_Synch_Date)
2415 SELECT /*+ use_hash(wd,c) */
2416 Wd.Id, Wd.Calendar_Type, Wd.Currency_Code_a, Wd.Country_Code, Wd.Date_Calendar, Wd.Day_Type
2417 FROM Wd
2418 JOIN Dict_Calendar c
2419 ON Wd.Id = c.Id
2420 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id;
2421 CURSOR c_Insert IS
2422 WITH Wd AS
2423 (---SELECT /*+ driving_site(Wd_Bim_Calendars)*/
2424 SELECT
2425 CAST(Id AS NUMBER(19)) Id
2426 ,CAST(Calendar_Type AS VARCHAR2(12 CHAR)) Calendar_Type
2427 ,CAST(Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
2428 ,CAST(Country_Code AS VARCHAR2(2 CHAR)) Country_Code
2429 ,CAST(Date_Calendar AS DATE) Date_Calendar
2430 ,CAST(Day_Type AS VARCHAR2(10 CHAR)) Day_Type
2431 FROM lc_Wd_Bim_Calendars
2432 WHERE Modification_Date < l_Start_Time
2433 AND Modification_Date >= Last_Synch_Date)
2434 SELECT /*+ use_hash(wd,c) */
2435 Wd.Id, Wd.Calendar_Type, Wd.Currency_Code_a, Wd.Country_Code, Wd.Date_Calendar, Wd.Day_Type
2436 FROM Wd
2437 LEFT JOIN Dict_Calendar c
2438 ON Wd.Id = c.Id
2439 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
2440 WHERE c.Id IS NULL;
2441 CURSOR c_Delete IS
2442 SELECT c.Id
2443 FROM Dict_Calendar c
2444 WHERE NOT EXISTS (--Select /*+ driving_site(wd)*/ 1
2445 SELECT 1
2446 FROM LC_Wd_Bim_Calendars Wd
2447 WHERE Wd.Id = c.Id)
2448 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id;
2449 --AND c.Date_Calendar >= SYSDATE;
2450 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
2451 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
2452 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
2453 Lupdate_Array Tupdate_Table;
2454 Linsert_Array Tinsert_Table;
2455 Ldelete_Array Tdelete_Table;
2456 BEGIN
2457 Proc_Time := Current_Timestamp;
2458 Synch_Restart.Start_Step;
2459 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
2460 l_Start_Time := Synch_Restart.Get_Start_Time();
2461 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
2462 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
2463 Synch_Restart.Log('Start pobierania danych ');
2464 begin
2465 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Calendars');
2466 vsql:='truncate table lc_Wd_Bim_Calendars';
2467 execute immediate vsql;
2468 commit;
2469 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Calendars');
2470 end;
2471 -----lc_Bim_Customer_Invol
2472 begin
2473 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_CALENDARS';
2474 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Calendars');
2475---FMBANK-44535
2476 /* vsql:='insert into lc_Wd_Bim_Calendars
2477 (select \*+ DRIVING_SITE(Wd)*\ Wd.* from Wd_Bim_Calendars Wd
2478 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
2479 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';*/
2480 --------------
2481 vsql:='insert into lc_Wd_Bim_Calendars
2482 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Calendars Wd'||')';
2483----------- FMBANK-44535
2484 execute immediate vsql;
2485 commit;
2486 Synch_Restart.Log('wykonano:'||vsql);
2487 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Calendars');
2488 vsql:='select count(*) from lc_Wd_Bim_Calendars';
2489 execute immediate vsql into cnt;
2490 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Calendars pobrano:'||cnt||' rekord?w');
2491 end;
2492 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
2493 Operation := l_Proc || '_UPDATE';
2494 Part_Time := Current_Timestamp;
2495 OPEN c_Update;
2496 LOOP
2497 FETCH c_Update BULK COLLECT
2498 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
2499 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
2500 l_Range_a := 0;
2501 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
2502 WHILE l_Range_a IS NOT NULL
2503 LOOP
2504 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2505 UPDATE Dict_Calendar c
2506 SET c.Modification_Date = l_Start_Time --Lupdate_Array(i).Modification_Date
2507 ,c.Calendar_Type = Lupdate_Array(i).Calendar_Type
2508 ,c.Currency_Code_a = Lupdate_Array(i).Currency_Code_a
2509 ,c.Country_Code = Lupdate_Array(i).Country_Code
2510 ,c.Date_Calendar = Lupdate_Array(i).Date_Calendar
2511 ,c.Day_Type = Lupdate_Array(i).Day_Type
2512 ,c.Version = c.Version + 1
2513 WHERE c.Id = Lupdate_Array(i).Id;
2514 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
2515 l_Range_a := l_Range_b + 1;
2516 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
2517 END LOOP;
2518 EXIT WHEN c_Update%NOTFOUND;
2519 END LOOP;
2520 CLOSE c_Update;
2521 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2522 Part_Time := Current_Timestamp;
2523 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
2524 Operation := l_Proc || '_INSERT';
2525 OPEN c_Insert;
2526 LOOP
2527 FETCH c_Insert BULK COLLECT
2528 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
2529 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
2530 l_Range_a := 0;
2531 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
2532 WHILE l_Range_a IS NOT NULL
2533 LOOP
2534 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2535 INSERT /* APPEND_VALUES*/ INTO Dict_Calendar c
2536 (c.Id
2537 ,c.Modification_Date
2538 ,c.Calendar_Type
2539 ,c.Currency_Code_a
2540 ,c.Country_Code
2541 ,c.Date_Calendar
2542 ,c.Day_Type
2543 ,c.Bank_Id
2544 ,c.Version
2545 ,c.Creation_Date)
2546 VALUES
2547 (Linsert_Array(i).Id
2548 ,l_Start_Time --Linsert_Array(i).Modification_Date
2549 ,Linsert_Array(i).Calendar_Type
2550 ,Linsert_Array(i).Currency_Code_a
2551 ,Linsert_Array(i).Country_Code
2552 ,Linsert_Array(i).Date_Calendar
2553 ,Linsert_Array(i).Day_Type
2554 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
2555 ,0 --VERSION
2556 ,l_Start_Time --Linsert_Array(i).Modification_Date
2557 );
2558 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
2559 l_Range_a := l_Range_b + 1;
2560 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
2561 END LOOP;
2562 EXIT WHEN c_Insert%NOTFOUND;
2563 END LOOP;
2564 CLOSE c_Insert;
2565 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2566 Part_Time := Current_Timestamp;
2567 Synch_Restart.Log('Rozpoczynam usuwanie nadmiarowych dni wolnych ' || l_Proc);
2568 Operation := l_Proc || '_DELETE';
2569 OPEN c_Delete;
2570 LOOP
2571 FETCH c_Delete BULK COLLECT
2572 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
2573 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
2574 l_Range_a := 0;
2575 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
2576 WHILE l_Range_a IS NOT NULL
2577 LOOP
2578 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2579 DELETE FROM Dict_Calendar c WHERE c.Id = Ldelete_Array(i).Id;
2580 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
2581 l_Range_a := l_Range_b + 1;
2582 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
2583 END LOOP;
2584 EXIT WHEN c_Delete%NOTFOUND;
2585 END LOOP;
2586 CLOSE c_Delete;
2587 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2588 Operation := l_Proc || '_After_Loops';
2589 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
2590 Synch.Set_Last_Synch_Date(l_Program);
2591 Synch_Restart.End_Step;
2592 EXCEPTION
2593 WHEN OTHERS THEN
2594 IF SQL%Bulk_Exceptions.Count > 0 THEN
2595 IF Operation = l_Proc || '_INSERT' THEN
2596 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2597 LOOP
2598 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2599 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2600 END LOOP;
2601 ELSIF Operation = l_Proc || '_UPDATE' THEN
2602 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2603 LOOP
2604 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2605 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2606 END LOOP;
2607 END IF;
2608 END IF;
2609 Synch_Restart.Error_Log(l_Program, Operation);
2610 ROLLBACK;
2611 END Prc_Calendars;
2612 PROCEDURE Prc_Sorb_Participants AS
2613 l_Proc VARCHAR2(100) := 'PRC_SORB_PARTICIPANTS';
2614 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
2615 Last_Synch_Date DATE;
2616 l_Start_Time DATE;
2617 Operation VARCHAR2(100);
2618 Ln_Buff_Len NUMBER := 0;
2619 l_Range_a NUMBER := 0;
2620 l_Range_b NUMBER := 0;
2621 v_Seq_From Integer;
2622 v_Seq_To Integer;
2623 vsql varchar2(4000);
2624 synch_d varchar2(100);
2625 cnt number;
2626 CURSOR c_Update IS
2627 -- SELECT /*+ driving_site(wd) use_hash(wd,dsp) */
2628 SELECT
2629 CAST(Wd.Id AS NUMBER(19)) Id
2630 ,CAST(Wd.Clearing_Number AS VARCHAR2(8 CHAR)) Clearing_Number
2631 ,CAST(Wd.Participant_Bic AS VARCHAR2(11 CHAR)) Participant_Bic
2632 ,CAST(Wd.Representant_Number AS VARCHAR2(8 CHAR)) Representant_Number
2633 ,CAST(Wd.Representant_Bic AS VARCHAR2(11 CHAR)) Representant_Bic
2634 ,CAST(Wd.Date_From AS DATE) Date_From
2635 ,CAST(Wd.Date_To AS DATE) Date_To
2636 ,CAST(Wd.Is_Active AS NUMBER(1)) Is_Active
2637 ,Dsp.Id Dsp_Id
2638 FROM lc_Wd_Bim_Sorb_Participants Wd
2639 JOIN Dict_Sorbnet2_Participant Dsp
2640 ON Dsp.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
2641 AND Dsp.Sorbnet2_Participant_Id = Wd.Id
2642 AND (Dsp.Clearing_Number != CAST(Wd.Clearing_Number AS VARCHAR2(8 CHAR)) OR
2643 Dsp.Participant_Bic != CAST(Wd.Participant_Bic AS VARCHAR2(11 CHAR)) OR
2644 Dsp.Representant_Number != CAST(Wd.Representant_Number AS VARCHAR2(8 CHAR)) OR
2645 Dsp.Representant_Bic != CAST(Wd.Representant_Bic AS VARCHAR2(11 CHAR)) OR
2646 Dsp.Date_From != CAST(Wd.Date_From AS DATE) OR Dsp.Date_To != CAST(Wd.Date_To AS DATE) OR
2647 Dsp.Is_Active != CAST(Wd.Is_Active AS NUMBER(1)));
2648 CURSOR c_Insert IS
2649 -- SELECT /*+ driving_site(wd) use_hash(wd,dsp) */
2650 SELECT
2651 0 Seq
2652 ,CAST(Wd.Id AS NUMBER(19)) Id
2653 ,CAST(Wd.Clearing_Number AS VARCHAR2(8 CHAR)) Clearing_Number
2654 ,CAST(Wd.Participant_Bic AS VARCHAR2(11 CHAR)) Participant_Bic
2655 ,CAST(Wd.Representant_Number AS VARCHAR2(8 CHAR)) Representant_Number
2656 ,CAST(Wd.Representant_Bic AS VARCHAR2(11 CHAR)) Representant_Bic
2657 ,CAST(Wd.Date_From AS DATE) Date_From
2658 ,CAST(Wd.Date_To AS DATE) Date_To
2659 ,CAST(Wd.Is_Active AS NUMBER(1)) Is_Active
2660 FROM lc_Wd_Bim_Sorb_Participants Wd
2661 LEFT JOIN Dict_Sorbnet2_Participant Dsp
2662 ON Dsp.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
2663 AND Dsp.Sorbnet2_Participant_Id = Wd.Id
2664 WHERE Dsp.Id IS NULL;
2665 CURSOR c_Delete IS
2666 SELECT Dsp.Id
2667 FROM Dict_Sorbnet2_Participant Dsp
2668 WHERE Dsp.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
2669 AND NOT EXISTS (--SELECT /*+ driving_site(wd)*/1
2670 SELECT 1
2671 FROM lc_Wd_Bim_Sorb_Participants Wd
2672 WHERE Dsp.Sorbnet2_Participant_Id = Wd.Id);
2673 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
2674 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
2675 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
2676 Lupdate_Array Tupdate_Table;
2677 Linsert_Array Tinsert_Table;
2678 Ldelete_Array Tdelete_Table;
2679 BEGIN
2680 Proc_Time := Current_Timestamp;
2681 Synch_Restart.Start_Step;
2682 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
2683 l_Start_Time := Synch_Restart.Get_Start_Time();
2684 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
2685 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
2686 Synch_Restart.Log('Start pobierania danych ');
2687 begin
2688 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Sorb_Participants');
2689 vsql:='truncate table lc_Wd_Bim_Sorb_Participants';
2690 execute immediate vsql;
2691 commit;
2692 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Sorb_Participants');
2693 end;
2694 -----lc_Bim_Customer_Invol
2695 begin
2696 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Sorb_Participants');
2697 vsql:='insert into lc_Wd_Bim_Sorb_Participants
2698 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Sorb_Participants Wd)';
2699 execute immediate vsql;
2700 commit;
2701 Synch_Restart.Log('wykonano:'||vsql);
2702 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Sorb_Participants');
2703 vsql:='select count(*) from lc_Wd_Bim_Sorb_Participants';
2704 execute immediate vsql into cnt;
2705 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Sorb_Participants pobrano:'||cnt||' rekord?w');
2706 end;
2707 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
2708 Operation := l_Proc || '_UPDATE';
2709 Part_Time := Current_Timestamp;
2710 OPEN c_Update;
2711 LOOP
2712 FETCH c_Update BULK COLLECT
2713 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
2714 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
2715 l_Range_a := 0;
2716 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
2717 WHILE l_Range_a IS NOT NULL
2718 LOOP
2719 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2720 UPDATE Dict_Sorbnet2_Participant Dsp
2721 SET Dsp.Version = Dsp.Version + 1
2722 ,Dsp.Modification_Date = l_Start_Time
2723 ,Dsp.Clearing_Number = Lupdate_Array(i).Clearing_Number
2724 ,Dsp.Participant_Bic = Lupdate_Array(i).Participant_Bic
2725 ,Dsp.Representant_Number = Lupdate_Array(i).Representant_Number
2726 ,Dsp.Representant_Bic = Lupdate_Array(i).Representant_Bic
2727 ,Dsp.Date_From = Lupdate_Array(i).Date_From
2728 ,Dsp.Date_To = Lupdate_Array(i).Date_To
2729 ,Dsp.Is_Active = Lupdate_Array(i).Is_Active
2730 WHERE Dsp.Id = Lupdate_Array(i).Dsp_Id;
2731 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
2732 l_Range_a := l_Range_b + 1;
2733 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
2734 END LOOP;
2735 EXIT WHEN c_Update%NOTFOUND;
2736 END LOOP;
2737 CLOSE c_Update;
2738 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2739 Part_Time := Current_Timestamp;
2740 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
2741 Operation := l_Proc || '_INSERT';
2742 OPEN c_Insert;
2743 LOOP
2744 FETCH c_Insert BULK COLLECT
2745 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
2746 If Linsert_Array.Count > 0 Then
2747 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
2748 For i In 1..Linsert_Array.Count
2749 Loop
2750 Linsert_Array(i).Seq := v_Seq_From + (i-1);
2751 End Loop;
2752 End If;
2753 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
2754 l_Range_a := 0;
2755 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
2756 WHILE l_Range_a IS NOT NULL
2757 LOOP
2758 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2759 INSERT /* APPEND_VALUES*/ INTO Dict_Sorbnet2_Participant Dsp
2760 (Dsp.Id
2761 ,Dsp.Bank_Id
2762 ,Dsp.Version
2763 ,Dsp.Clearing_Number
2764 ,Dsp.Participant_Bic
2765 ,Dsp.Representant_Number
2766 ,Dsp.Representant_Bic
2767 ,Dsp.Date_From
2768 ,Dsp.Date_To
2769 ,Dsp.Is_Active
2770 ,Dsp.Creation_Date
2771 ,Dsp.Modification_Date
2772 ,Dsp.Sorbnet2_Participant_Id)
2773 VALUES
2774 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
2775 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
2776 ,0 --VERSION
2777 ,Linsert_Array(i).Clearing_Number
2778 ,Linsert_Array(i).Participant_Bic
2779 ,Linsert_Array(i).Representant_Number
2780 ,Linsert_Array(i).Representant_Bic
2781 ,Linsert_Array(i).Date_From
2782 ,Linsert_Array(i).Date_To
2783 ,Linsert_Array(i).Is_Active
2784 ,l_Start_Time
2785 ,l_Start_Time
2786 ,Linsert_Array(i).Id);
2787 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
2788 l_Range_a := l_Range_b + 1;
2789 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
2790 END LOOP;
2791 EXIT WHEN c_Insert%NOTFOUND;
2792 END LOOP;
2793 CLOSE c_Insert;
2794 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2795 Part_Time := Current_Timestamp;
2796 --
2797 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
2798 Operation := l_Proc || '_DELETE';
2799 OPEN c_Delete;
2800 LOOP
2801 FETCH c_Delete BULK COLLECT
2802 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
2803 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
2804 l_Range_a := 0;
2805 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
2806 WHILE l_Range_a IS NOT NULL
2807 LOOP
2808 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2809 UPDATE Dict_Sorbnet2_Participant Dsp
2810 SET Dsp.Is_Active = 0, Dsp.Modification_Date = l_Start_Time, Dsp.Version = Dsp.Version + 1
2811 WHERE Dsp.Id = Ldelete_Array(i).Id;
2812 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
2813 l_Range_a := l_Range_b + 1;
2814 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
2815 END LOOP;
2816 EXIT WHEN c_Delete%NOTFOUND;
2817 END LOOP;
2818 CLOSE c_Delete;
2819 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2820 Operation := l_Proc || '_After_Loops';
2821 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
2822 Synch.Set_Last_Synch_Date(l_Program);
2823 Synch_Restart.End_Step;
2824 EXCEPTION
2825 WHEN OTHERS THEN
2826 IF SQL%Bulk_Exceptions.Count > 0 THEN
2827 IF Operation = l_Proc || '_INSERT' THEN
2828 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2829 LOOP
2830 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2831 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2832 END LOOP;
2833 ELSIF Operation = l_Proc || '_UPDATE' THEN
2834 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2835 LOOP
2836 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2837 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2838 END LOOP;
2839 ELSIF Operation = l_Proc || '_DELETE' THEN
2840 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
2841 LOOP
2842 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
2843 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
2844 END LOOP;
2845 END IF;
2846 END IF;
2847 Synch_Restart.Error_Log(l_Program, Operation);
2848 ROLLBACK;
2849 END Prc_Sorb_Participants;
2850 PROCEDURE Prc_Iban_Conf AS
2851 l_Proc VARCHAR2(100) := 'PRC_IBAN_CONF';
2852 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
2853 Last_Synch_Date DATE;
2854 Operation VARCHAR2(100);
2855 Ln_Buff_Len NUMBER := 0;
2856 l_Range_a NUMBER := 0;
2857 l_Range_b NUMBER := 0;
2858 l_Start_Time DATE;
2859 v_Seq_From Integer;
2860 v_Seq_To Integer;
2861 vsql varchar2(4000);
2862 synch_d varchar2(100);
2863 cnt number;
2864 CURSOR c_Update IS
2865 -- SELECT /*+ driving_site(wd) use_hash(wd,Isc) */
2866 SELECT
2867 CAST(Wd.Country_Code AS VARCHAR2(2 CHAR)) Country_Code
2868 ,CAST(Wd.Country_Name AS VARCHAR2(60 CHAR)) Country_Name
2869 ,CAST(Wd.Use_Iban AS NUMBER(1)) Use_Iban
2870 ,CAST(Wd.Iban_Length AS NUMBER(2)) Iban_Length
2871 ,Synch.Get_Dict('IBAN_CONF_STATUS', To_Char(Wd.Status)) Status
2872 ,CAST(Wd.Eog_Member AS NUMBER(1)) Eog_Member
2873 ,Isc.Id
2874 FROM lc_Wd_Bim_Iban_Conf Wd
2875 JOIN Iban_Sepa_Configurations Isc
2876 ON Wd.Country_Code = Isc.Country_Code
2877 AND Isc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
2878 WHERE Wd.Status = '2'
2879 AND ( Wd.Country_Name <> Isc.Country_Name
2880 OR Nvl(Wd.Use_Iban, -1) <> Nvl(Isc.Use_Iban, -1)
2881 OR Nvl(Wd.Iban_Length, 0) <> Nvl(Isc.Iban_Lenght, 0)
2882 OR Synch.Get_Dict('IBAN_CONF_STATUS', To_Char(Wd.Status)) <> Isc.Status
2883 OR Wd.Eog_Member <> Isc.Eog_Member
2884 );
2885 CURSOR c_Insert IS
2886 --SELECT /*+ driving_site(wd) use_hash(wd,Isc) */
2887 SELECT
2888 0 Seq
2889 ,CAST(Wd.Country_Code AS VARCHAR2(2 CHAR)) Country_Code
2890 ,CAST(Wd.Country_Name AS VARCHAR2(60 CHAR)) Country_Name
2891 ,CAST(Wd.Use_Iban AS NUMBER(1)) Use_Iban
2892 ,CAST(Wd.Iban_Length AS NUMBER(2)) Iban_Length
2893 ,Synch.Get_Dict('IBAN_CONF_STATUS', To_Char(Wd.Status)) Status
2894 ,CAST(Wd.Eog_Member AS NUMBER(1)) Eog_Member
2895 FROM lc_Wd_Bim_Iban_Conf Wd
2896 LEFT JOIN Iban_Sepa_Configurations Isc
2897 ON Wd.Country_Code = Isc.Country_Code
2898 AND Isc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
2899 WHERE Isc.Id IS NULL
2900 AND Wd.Status = '2';
2901 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
2902 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
2903 Lupdate_Array Tupdate_Table;
2904 Linsert_Array Tinsert_Table;
2905 BEGIN
2906 Proc_Time := Current_Timestamp;
2907 Synch_Restart.Start_Step;
2908 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
2909 l_Start_Time := Synch_Restart.Get_Start_Time();
2910 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
2911 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
2912 Synch_Restart.Log('Start pobierania danych ');
2913 begin
2914 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Iban_Conf');
2915 vsql:='truncate table lc_Wd_Bim_Iban_Conf';
2916 execute immediate vsql;
2917 commit;
2918 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Iban_Conf');
2919 end;
2920 -----lc_Bim_Customer_Invol
2921 begin
2922 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Iban_Conf');
2923 vsql:='insert into lc_Wd_Bim_Iban_Conf
2924 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Iban_Conf Wd)';
2925 execute immediate vsql;
2926 commit;
2927 Synch_Restart.Log('wykonano:'||vsql);
2928 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Iban_Conf');
2929 vsql:='select count(*) from lc_Wd_Bim_Iban_Conf';
2930 execute immediate vsql into cnt;
2931 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Iban_Conf pobrano:'||cnt||' rekord?w');
2932 end;
2933 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
2934 Operation := l_Proc || '_UPDATE';
2935 Part_Time := Current_Timestamp;
2936 OPEN c_Update;
2937 LOOP
2938 FETCH c_Update BULK COLLECT
2939 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
2940 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
2941 l_Range_a := 0;
2942 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
2943 WHILE l_Range_a IS NOT NULL
2944 LOOP
2945 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2946 UPDATE Iban_Sepa_Configurations Isc
2947 SET Isc.Version = Isc.Version + 1
2948 ,Isc.Modification_Date = l_Start_Time
2949 ,Isc.Use_Iban = Lupdate_Array(i).Use_Iban
2950 ,Isc.Iban_Lenght = Lupdate_Array(i).Iban_Length
2951 ,Isc.Country_Name = Lupdate_Array(i).Country_Name
2952 ,Isc.Status = Lupdate_Array(i).Status
2953 ,Isc.Eog_Member = Lupdate_Array(i).Eog_Member
2954 WHERE Isc.Id = Lupdate_Array(i).Id;
2955 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
2956 l_Range_a := l_Range_b + 1;
2957 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
2958 END LOOP;
2959 EXIT WHEN c_Update%NOTFOUND;
2960 END LOOP;
2961 CLOSE c_Update;
2962 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
2963 Part_Time := Current_Timestamp;
2964 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
2965 Operation := l_Proc || '_INSERT';
2966 OPEN c_Insert;
2967 LOOP
2968 FETCH c_Insert BULK COLLECT
2969 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
2970 If Linsert_Array.Count > 0 Then
2971 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
2972 For i In 1..Linsert_Array.Count
2973 Loop
2974 Linsert_Array(i).Seq := v_Seq_From + (i-1);
2975 End Loop;
2976 End If;
2977 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
2978 l_Range_a := 0;
2979 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
2980 WHILE l_Range_a IS NOT NULL
2981 LOOP
2982 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
2983 INSERT /* APPEND_VALUES*/ INTO Iban_Sepa_Configurations Isc
2984 (Isc.Id
2985 ,Isc.Version
2986 ,Isc.Bank_Id
2987 ,Isc.Country_Code
2988 ,Isc.Country_Name
2989 ,Isc.Use_Iban
2990 ,Isc.Iban_Lenght
2991 ,Isc.Status
2992 -- , isc.USE_SEPA
2993 ,Isc.Eog_Member
2994 ,Isc.Creation_Date
2995 ,Isc.Modification_Date)
2996 VALUES
2997 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
2998 ,0
2999 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
3000 ,Linsert_Array(i).Country_Code
3001 ,Linsert_Array(i).Country_Name
3002 ,Linsert_Array(i).Use_Iban
3003 ,Linsert_Array(i).Iban_Length
3004 ,Linsert_Array(i).Status
3005 -- , Linsert_Array(i).USE_SEPA
3006 ,Linsert_Array(i).Eog_Member
3007 ,l_Start_Time
3008 ,l_Start_Time);
3009 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
3010 l_Range_a := l_Range_b + 1;
3011 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
3012 END LOOP;
3013 EXIT WHEN c_Insert%NOTFOUND;
3014 END LOOP;
3015 CLOSE c_Insert;
3016 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
3017 Part_Time := Current_Timestamp;
3018 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
3019 Operation := l_Proc || '_After_Loops';
3020 Synch.Set_Last_Synch_Date(l_Program);
3021 Synch_Restart.End_Step;
3022 commit;
3023 EXCEPTION
3024 WHEN OTHERS THEN
3025 IF SQL%Bulk_Exceptions.Count > 0 THEN
3026 IF Operation = l_Proc || '_INSERT' THEN
3027 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
3028 LOOP
3029 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
3030 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
3031 END LOOP;
3032 ELSIF Operation = l_Proc || '_UPDATE' THEN
3033 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
3034 LOOP
3035 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
3036 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
3037 END LOOP;
3038 ELSIF Operation = l_Proc || '_DELETE' THEN
3039 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
3040 LOOP
3041 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
3042 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
3043 END LOOP;
3044 END IF;
3045 END IF;
3046 Synch_Restart.Error_Log(l_Program, Operation);
3047 ROLLBACK;
3048 END Prc_Iban_Conf;
3049 PROCEDURE Prc_Swift_Sepa_Config AS
3050 l_Proc VARCHAR2(100) := 'PRC_SWIFT_SEPA_CONFIG';
3051 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
3052 Last_Synch_Date DATE;
3053 l_Start_Time DATE;
3054 Operation VARCHAR2(100);
3055 Ln_Buff_Len NUMBER := 0;
3056 l_Range_a NUMBER := 0;
3057 l_Range_b NUMBER := 0;
3058 v_Seq_From Integer;
3059 v_Seq_To Integer;
3060 vsql varchar2(4000);
3061 synch_d varchar2(100);
3062 cnt number;
3063 CURSOR c_Update IS
3064 --SELECT /*+ driving_site(wd) use_hash(wd,dsb) */
3065 SELECT
3066 CAST(Wd.Bic AS VARCHAR2( 12 CHAR)) Bic
3067 ,CAST(Wd.Use_Sepa AS NUMBER(1)) Use_Sepa
3068 ,CAST(Wd.Bank_Code AS VARCHAR2( 4 CHAR)) Bank_Code
3069 ,CAST(Wd.Branch_Code AS VARCHAR2( 3 CHAR)) Branch_Code
3070 ,CAST(Wd.Country_Code AS VARCHAR2( 2 CHAR)) Country_Code
3071 ,CAST(Wd.Start_Date AS DATE) Start_Date
3072 --, wd.NAME
3073 ,CAST(Wd.Name1 AS VARCHAR2(140 CHAR)) Name1
3074 ,CAST(Wd.Name2 AS VARCHAR2( 35 CHAR)) Name2
3075 ,CAST(Wd.Name3 AS VARCHAR2( 35 CHAR)) Name3
3076 ,CAST(Wd.Address_1 AS VARCHAR2( 35 CHAR)) Address_1
3077 ,CAST(Wd.Address_2 AS VARCHAR2( 35 CHAR)) Address_2
3078 ,CAST(Wd.Address_3 AS VARCHAR2( 35 CHAR)) Address_3
3079 ,CAST(Wd.Location_1 AS VARCHAR2( 35 CHAR)) Location_1
3080 ,CAST(Wd.Location_2 AS VARCHAR2( 35 CHAR)) Location_2
3081 ,CAST(Wd.Location_3 AS VARCHAR2( 35 CHAR)) Location_3
3082 ,Synch.Get_Dict('SWIFT_SEPA_CONF_STATUS', To_Char(CAST(Wd.Is_Active AS NUMBER(1)))) Status
3083 ,Dsb.Id
3084 FROM lc_Wd_Bim_Swift_Sepa_Config Wd
3085 JOIN Dict_Swift_Banks Dsb
3086 ON Dsb.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
3087 AND Dsb.Bic = Wd.Bic
3088 ----- dodano unikalnosc na sepa/bic 20.06.2018 FMBANK-41839
3089 --- AND Wd.USe_Sepa=Dsb.Is_Sepa
3090 ----- dodano unikalnosc na sepa/bic 21.08.2018 FMBANK-41839
3091 -----------------------------------------------------------
3092 WHERE Wd.Use_Sepa <> Dsb.Is_Sepa
3093 OR Wd.Bank_Code <> Dsb.Bank_Code
3094 OR Wd.Branch_Code <> Dsb.Branch_Code
3095 OR Wd.Country_Code <> Dsb.Country_Code
3096 OR ( Wd.Start_Date <> Dsb.Start_Date
3097 OR Wd.Start_Date IS Null
3098 AND Dsb.Start_Date IS NOT Null
3099 OR Wd.Start_Date IS NOT Null
3100 AND Dsb.Start_Date IS NULL)
3101 OR ( Wd.Name1 <> Dsb.Name_1
3102 OR Wd.Name1 IS Null
3103 AND Dsb.Name_1 IS NOT Null
3104 Or Wd.Name1 IS NOT NULL
3105 AND Dsb.Name_1 IS NULL)
3106 OR (Wd.Name2 <> Dsb.Name_2 OR Wd.Name2 IS NULL AND Dsb.Name_2 IS NOT NULL OR
3107 Wd.Name2 IS NOT NULL AND Dsb.Name_2 IS NULL)
3108 OR (Wd.Name3 <> Dsb.Name_3 OR Wd.Name3 IS NULL AND Dsb.Name_3 IS NOT NULL OR
3109 Wd.Name3 IS NOT NULL AND Dsb.Name_3 IS NULL)
3110 OR (Wd.Address_1 <> Dsb.Address_1 OR Wd.Address_1 IS NULL AND Dsb.Address_1 IS NOT NULL OR
3111 Wd.Address_1 IS NOT NULL AND Dsb.Address_1 IS NULL)
3112 OR (Wd.Address_2 <> Dsb.Address_2 OR Wd.Address_2 IS NULL AND Dsb.Address_2 IS NOT NULL OR
3113 Wd.Address_2 IS NOT NULL AND Dsb.Address_2 IS NULL)
3114 OR (Wd.Address_3 <> Dsb.Address_3 OR Wd.Address_3 IS NULL AND Dsb.Address_3 IS NOT NULL OR
3115 Wd.Address_3 IS NOT NULL AND Dsb.Address_3 IS NULL)
3116 OR (Wd.Location_1 <> Dsb.Location_1 OR Wd.Location_1 IS NULL AND Dsb.Location_1 IS NOT NULL OR
3117 Wd.Location_1 IS NOT NULL AND Dsb.Location_1 IS NULL)
3118 OR (Wd.Location_2 <> Dsb.Location_2 OR Wd.Location_2 IS NULL AND Dsb.Location_2 IS NOT NULL OR
3119 Wd.Location_2 IS NOT NULL AND Dsb.Location_2 IS NULL)
3120 OR (Wd.Location_3 <> Dsb.Location_3 OR Wd.Location_3 IS NULL AND Dsb.Location_3 IS NOT NULL OR
3121 Wd.Location_3 IS NOT NULL AND Dsb.Location_3 IS NULL)
3122 OR (Synch.Get_Dict('SWIFT_SEPA_CONF_STATUS', To_Char(CAST(Wd.Is_Active AS NUMBER(1)))) <> Dsb.Status OR
3123 Synch.Get_Dict('SWIFT_SEPA_CONF_STATUS', To_Char(CAST(Wd.Is_Active AS NUMBER(1)))) IS NULL AND
3124 Dsb.Status IS NOT NULL OR
3125 Synch.Get_Dict('SWIFT_SEPA_CONF_STATUS', To_Char(CAST(Wd.Is_Active AS NUMBER(1)))) IS NOT NULL AND
3126 Dsb.Status IS NULL);
3127 CURSOR c_Insert IS
3128 --SELECT /*+ driving_site(wd) use_hash(wd,dsb) */
3129 SELECT
3130 0 Seq
3131 ,CAST(Wd.Bic AS VARCHAR2( 12 CHAR)) Bic
3132 ,CAST(Wd.Use_Sepa AS NUMBER(1)) Use_Sepa
3133 ,CAST(Wd.Bank_Code AS VARCHAR2( 4 CHAR)) Bank_Code
3134 ,CAST(Wd.Branch_Code AS VARCHAR2( 3 CHAR)) Branch_Code
3135 ,CAST(Wd.Country_Code AS VARCHAR2( 2 CHAR)) Country_Code
3136 ,CAST(Wd.Start_Date AS DATE) Start_Date
3137 --, wd.NAME
3138 ,CAST(Wd.Name1 AS VARCHAR2(140 CHAR)) Name1
3139 ,CAST(Wd.Name2 AS VARCHAR2( 35 CHAR)) Name2
3140 ,CAST(Wd.Name3 AS VARCHAR2( 35 CHAR)) Name3
3141 ,CAST(Wd.Address_1 AS VARCHAR2( 35 CHAR)) Address_1
3142 ,CAST(Wd.Address_2 AS VARCHAR2( 35 CHAR)) Address_2
3143 ,CAST(Wd.Address_3 AS VARCHAR2( 35 CHAR)) Address_3
3144 ,CAST(Wd.Location_1 AS VARCHAR2( 35 CHAR)) Location_1
3145 ,CAST(Wd.Location_2 AS VARCHAR2( 35 CHAR)) Location_2
3146 ,CAST(Wd.Location_3 AS VARCHAR2( 35 CHAR)) Location_3
3147 ,Synch.Get_Dict('SWIFT_SEPA_CONF_STATUS', To_Char(CAST(Wd.Is_Active AS NUMBER(1)))) Status
3148 ,Dsb.Id
3149 FROM lc_Wd_Bim_Swift_Sepa_Config Wd
3150 LEFT JOIN Dict_Swift_Banks Dsb
3151 ON Dsb.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
3152 AND Dsb.Bic = Wd.Bic
3153 ----- dodano unikalnosc na sepa/bic 20.06.2018 FMBANK-41839
3154 --AND Wd.USe_Sepa=Dsb.Is_Sepa
3155 ----- dodano unikalnosc na sepa/bic 21.08.2018 FMBANK-41839
3156 -----------------------------------------------------------
3157 WHERE Dsb.Id IS NULL;
3158 CURSOR c_delete IS
3159 SELECT
3160 Dsb.Id Id
3161 from Dict_Swift_Banks Dsb where not exists
3162 (select 1
3163 FROM lc_Wd_Bim_Swift_Sepa_Config Wd where Wd.Bic=Dsb.Bic);
3164 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
3165 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
3166 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
3167 Lupdate_Array Tupdate_Table;
3168 Linsert_Array Tinsert_Table;
3169 Ldelete_Array Tdelete_Table;
3170 BEGIN
3171 Proc_Time := Current_Timestamp;
3172 Synch_Restart.Start_Step;
3173 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
3174 l_Start_Time := Synch_Restart.Get_Start_Time();
3175 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
3176 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
3177 Synch_Restart.Log('Start pobierania danych ');
3178 begin
3179 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Swift_Sepa_Config');
3180 vsql:='truncate table lc_Wd_Bim_Swift_Sepa_Config';
3181 execute immediate vsql;
3182 commit;
3183 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Swift_Sepa_Config');
3184 end;
3185 -----lc_Bim_Customer_Invol
3186 begin
3187 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Swift_Sepa_Config');
3188 vsql:='insert into lc_Wd_Bim_Swift_Sepa_Config
3189 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Swift_Sepa_Config Wd)';
3190 execute immediate vsql;
3191 commit;
3192 Synch_Restart.Log('wykonano:'||vsql);
3193 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Swift_Sepa_Config');
3194 vsql:='select count(*) from lc_Wd_Bim_Swift_Sepa_Config';
3195 execute immediate vsql into cnt;
3196 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Swift_Sepa_Config pobrano:'||cnt||' rekord?w');
3197 end;
3198 Synch_Restart.Log('Rozpoczynam usuwanie ' || l_Proc);
3199 Operation := l_Proc || '_DELETE';
3200 Part_Time := Current_Timestamp;
3201 ----------------
3202 OPEN c_Delete;
3203 LOOP
3204 FETCH c_Delete BULK COLLECT
3205 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
3206 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
3207 l_Range_a := 0;
3208 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
3209 WHILE l_Range_a IS NOT NULL
3210 LOOP
3211 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
3212 UPDATE Dict_Swift_Banks Dsb
3213 SET Dsb.Status = 'INACTIVE'
3214 WHERE Dsb.Id = Ldelete_Array(i).Id;
3215 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
3216 l_Range_a := l_Range_b + 1;
3217 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
3218 END LOOP;
3219 EXIT WHEN C_Delete%NOTFOUND;
3220 END LOOP;
3221 CLOSE C_Delete;
3222 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
3223 Part_Time := Current_Timestamp;
3224 -------------------
3225 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
3226 Operation := l_Proc || '_UPDATE';
3227 Part_Time := Current_Timestamp;
3228 OPEN c_Update;
3229 LOOP
3230 FETCH c_Update BULK COLLECT
3231 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
3232 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
3233 l_Range_a := 0;
3234 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
3235 WHILE l_Range_a IS NOT NULL
3236 LOOP
3237 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
3238 UPDATE Dict_Swift_Banks Dsb
3239 SET Dsb.Version = Dsb.Version + 1
3240 ,Dsb.Modification_Date = l_Start_Time
3241 ,Dsb.Is_Sepa = Lupdate_Array(i).Use_Sepa
3242 ,Dsb.Bank_Code = Lupdate_Array(i).Bank_Code
3243 ,Dsb.Branch_Code = Lupdate_Array(i).Branch_Code
3244 ,Dsb.Country_Code = Lupdate_Array(i).Country_Code
3245 ,Dsb.Start_Date = Lupdate_Array(i).Start_Date
3246 ,Dsb.Name_1 = Lupdate_Array(i).Name1
3247 ,Dsb.Name_2 = Lupdate_Array(i).Name2
3248 ,Dsb.Name_3 = Lupdate_Array(i).Name3
3249 ,Dsb.Address_1 = Lupdate_Array(i).Address_1
3250 ,Dsb.Address_2 = Lupdate_Array(i).Address_2
3251 ,Dsb.Address_3 = Lupdate_Array(i).Address_3
3252 ,Dsb.Location_1 = Lupdate_Array(i).Location_1
3253 ,Dsb.Location_2 = Lupdate_Array(i).Location_2
3254 ,Dsb.Location_3 = Lupdate_Array(i).Location_3
3255 ,Dsb.Status = Lupdate_Array(i).Status
3256 WHERE Dsb.Id = Lupdate_Array(i).Id;
3257 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
3258 l_Range_a := l_Range_b + 1;
3259 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
3260 END LOOP;
3261 EXIT WHEN c_Update%NOTFOUND;
3262 END LOOP;
3263 CLOSE c_Update;
3264 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
3265 Part_Time := Current_Timestamp;
3266 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
3267 Operation := l_Proc || '_INSERT';
3268 OPEN c_Insert;
3269 LOOP
3270 FETCH c_Insert BULK COLLECT
3271 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
3272 If Linsert_Array.Count > 0 Then
3273 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
3274 For i In 1..Linsert_Array.Count
3275 Loop
3276 Linsert_Array(i).Seq := v_Seq_From + (i-1);
3277 End Loop;
3278 End If;
3279 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
3280 l_Range_a := 0;
3281 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
3282 WHILE l_Range_a IS NOT NULL
3283 LOOP
3284 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
3285 INSERT /* APPEND_VALUES*/ INTO Dict_Swift_Banks Dsb
3286 (Dsb.Id
3287 ,Dsb.Bank_Id
3288 ,Dsb.Version
3289 ,Dsb.Creation_Date
3290 ,Dsb.Modification_Date
3291 ,Dsb.Bic
3292 ,Dsb.Is_Sepa
3293 ,Dsb.Bank_Code
3294 ,Dsb.Branch_Code
3295 ,Dsb.Country_Code
3296 ,Dsb.Start_Date
3297 ,Dsb.Name_1
3298 ,Dsb.Name_2
3299 ,Dsb.Name_3
3300 ,Dsb.Address_1
3301 ,Dsb.Address_2
3302 ,Dsb.Address_3
3303 ,Dsb.Location_1
3304 ,Dsb.Location_2
3305 ,Dsb.Location_3
3306 ,Dsb.Status)
3307 VALUES
3308 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
3309 ,Synch_Restart.Current_Job_Row.Bank_Id
3310 ,0
3311 ,l_Start_Time
3312 ,l_Start_Time
3313 ,Linsert_Array(i).Bic
3314 ,Linsert_Array(i).Use_Sepa
3315 ,Linsert_Array(i).Bank_Code
3316 ,Linsert_Array(i).Branch_Code
3317 ,Linsert_Array(i).Country_Code
3318 ,Linsert_Array(i).Start_Date
3319 ,Linsert_Array(i).Name1
3320 ,Linsert_Array(i).Name2
3321 ,Linsert_Array(i).Name3
3322 ,Linsert_Array(i).Address_1
3323 ,Linsert_Array(i).Address_2
3324 ,Linsert_Array(i).Address_3
3325 ,Linsert_Array(i).Location_1
3326 ,Linsert_Array(i).Location_2
3327 ,Linsert_Array(i).Location_3
3328 ,Linsert_Array(i).Status);
3329 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
3330 l_Range_a := l_Range_b + 1;
3331 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
3332 END LOOP;
3333 EXIT WHEN c_Insert%NOTFOUND;
3334 END LOOP;
3335 CLOSE c_Insert;
3336 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
3337 Part_Time := Current_Timestamp;
3338 Operation := l_Proc || '_After_Loops';
3339 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
3340 Synch.Set_Last_Synch_Date(l_Program);
3341 Synch_Restart.End_Step;
3342 EXCEPTION
3343 WHEN OTHERS THEN
3344 IF SQL%Bulk_Exceptions.Count > 0 THEN
3345 IF Operation = l_Proc || '_INSERT' THEN
3346 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
3347 LOOP
3348 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
3349 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
3350 END LOOP;
3351 ELSIF Operation = l_Proc || '_UPDATE' THEN
3352 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
3353 LOOP
3354 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
3355 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
3356 END LOOP;
3357 ELSIF Operation = l_Proc || '_DELETE' THEN
3358 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
3359 LOOP
3360 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
3361 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
3362 END LOOP;
3363 END IF;
3364 END IF;
3365 Synch_Restart.Error_Log(l_Program, Operation);
3366 ROLLBACK;
3367 END Prc_Swift_Sepa_Config;
3368 PROCEDURE Prc_Def_Config AS
3369 l_Proc VARCHAR2(100) := 'PRC_DEF_CONFIG';
3370 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
3371 Last_Synch_Date DATE;
3372 l_Start_Time DATE;
3373 l_Tab varchar_tab;
3374 l_Value Varchar2(4000 Char);
3375 vsql varchar2(4000);
3376 synch_d varchar2(100);
3377 cnt number;
3378 FUNCTION Comma_To_Table(p_Src IN VARCHAR2) RETURN varchar_tab IS
3379 Idx NUMBER;
3380 Src VARCHAR2(4000) := p_Src;
3381 Tab varchar_tab := varchar_tab();
3382 BEGIN
3383 LOOP
3384 Src := TRIM(',' FROM Src);
3385 EXIT WHEN Src IS NULL;
3386 Idx := Instr(Src, ',');
3387 IF Idx = 0 THEN
3388 Idx := Length(Src) + 1;
3389 END IF;
3390 Tab.Extend;
3391 Tab(Tab.Count) := Substr(Src, 1, Idx - 1);
3392 Src := Substr(Src, Idx + 1);
3393 END LOOP;
3394 RETURN Tab;
3395 END Comma_To_Table;
3396 BEGIN
3397 Proc_Time := Current_Timestamp;
3398 Synch_Restart.Start_Step;
3399 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
3400 l_Start_Time := Synch_Restart.Get_Start_Time();
3401 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
3402 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
3403 Synch_Restart.Log('Start pobierania danych ');
3404 begin
3405 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Def_Config');
3406 vsql:='truncate table lc_Wd_Bim_Def_Config';
3407 execute immediate vsql;
3408 commit;
3409 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Def_Config');
3410 end;
3411 -----lc_Bim_Customer_Invol
3412 begin
3413 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Def_Config');
3414 vsql:='insert into lc_Wd_Bim_Def_Config
3415 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Def_Config Wd)';
3416 execute immediate vsql;
3417 commit;
3418 Synch_Restart.Log('wykonano:'||vsql);
3419 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Def_Config');
3420 vsql:='select count(*) from lc_Wd_Bim_Def_Config';
3421 execute immediate vsql into cnt;
3422 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Def_Config pobrano:'||cnt||' rekord?w');
3423 end;
3424 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
3425 Part_Time := Current_Timestamp;
3426 -- MERGE INTO Def_Config d
3427 -- USING LC_Wd_Bim_Def_Config s
3428 -- ON (s.Key = d.Key AND d.Key = 'BOOKING_DATE')
3429 -- FMBANK-44207
3430 MERGE INTO Def_Config d
3431 USING (select * from Wd_Bim_Def_Config where Key = 'BOOKING_DATE') s
3432 ON (s.Key = d.Key )
3433 WHEN MATCHED THEN
3434 UPDATE
3435 SET d.Version = d.Version + 1
3436 ,d.Modification_Date = l_Start_Time
3437 ,d.Value = To_Char(To_Date(s.Value, 'yyyy-mm-dd'), 'yyyy-mm-dd')
3438 WHERE To_Date(d.Value, 'yyyy-mm-dd') <> To_Date(s.Value, 'yyyy-mm-dd')
3439 WHEN NOT MATCHED THEN
3440 INSERT
3441 (d.Id, d.Bank_Id, d.Version, d.Creation_Date, d.Modification_Date, d.Key, d.Value)
3442 VALUES
3443 (e_Id_Seq.Nextval, Synch_Restart.Current_Job_Row.Bank_Id, 0, l_Start_Time, l_Start_Time, s.Key, s.Value);
3444 BEGIN
3445 -- SELECT /*+driving_site(Wd_Bim_Def_Config ) */
3446 SELECT
3447 VALUE
3448 INTO l_Value
3449 FROM LC_Wd_Bim_Def_Config
3450 WHERE Key = 'ZUS_CLEARING_NUMBER';
3451 EXCEPTION
3452 WHEN No_Data_Found THEN
3453 l_Value := NULL;
3454 WHEN Too_Many_Rows THEN
3455 Synch_Restart.Error_Log(l_Program, ' ERROR_CODE: ' || SQLERRM);
3456 ROLLBACK;
3457 RETURN;
3458 WHEN OTHERS THEN
3459 Synch_Restart.Error_Log(l_Program, ' ERROR_CODE: ' || SQLERRM);
3460 ROLLBACK;
3461 RETURN;
3462 END;
3463 l_tab := Comma_To_Table( l_value );
3464 -- delete rows not included in list
3465 DELETE FROM Dict_Zus_Clearing_Numbers WHERE Clearing_Number NOT IN (SELECT Column_Value FROM TABLE(l_Tab));
3466 -- update existing and insert new
3467 MERGE INTO Dict_Zus_Clearing_Numbers d
3468 USING (SELECT Column_Value Id FROM TABLE(l_Tab)) s
3469 ON (d.Clearing_Number = s.Id)
3470 WHEN MATCHED THEN
3471 UPDATE SET d.Version = d.Version + 1, d.Modification_Date = l_Start_Time
3472 WHEN NOT MATCHED THEN
3473 INSERT
3474 (d.Id, d.Bank_Id, d.Version, d.Clearing_Number, d.Creation_Date, d.Modification_Date)
3475 VALUES
3476 (e_Id_Seq.Nextval, 0, 1, s.Id, l_Start_Time, l_Start_Time);
3477 Synch_Restart.Log(3, 'czas aktualizacji: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
3478 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
3479 Synch.Set_Last_Synch_Date(l_Program);
3480 Synch_Restart.End_Step;
3481 EXCEPTION
3482 WHEN OTHERS THEN
3483 Synch_Restart.Error_Log(l_Program, ' ERROR_CODE: ' || SQLERRM);
3484 ROLLBACK;
3485 END Prc_Def_Config;
3486 PROCEDURE Prc_Curr_Accounts AS
3487 l_Proc VARCHAR2(100) := 'PRC_CURR_ACCOUNTS';
3488 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
3489 Last_Synch_Date DATE;
3490 l_Start_Time DATE;
3491 Operation VARCHAR2(100);
3492 Ln_Buff_Len NUMBER := 0;
3493 l_Range_a NUMBER := 0;
3494 l_Range_b NUMBER := 0;
3495 Tmp_Wd_Id NUMBER;
3496 v_Seq_From Integer;
3497 v_Seq_To Integer;
3498 vsql varchar2(4000);
3499 synch_d varchar2(100);
3500 cnt number;
3501 CURSOR c_Update IS
3502 -- SELECT /*+ driving_site(wd) use_hash(wd,Cai, Ca, Lir, Cir, Dir, Eir ) */
3503 SELECT
3504 Cai.Extore_Id Extore_Account_Id
3505 ,CAST(Wd.Limit_Amount AS NUMBER(19, 2)) Limit_Amount
3506 ,CAST(Wd.Limit_Auto_Renew AS VARCHAR2(128 CHAR)) Limit_Auto_Renew
3507 ,CAST(Wd.Limit_End_Date AS TIMESTAMP) Limit_End_Date
3508 ,CAST(Wd.Limit_Type AS VARCHAR2(32 CHAR)) Limit_Type
3509 ,CAST(Wd.Limit_Interest_Rate AS NUMBER(19, 6)) Limit_Interest_Rate
3510 ,Lir.Interest_Rate Ca_Limit_Interest_Rate
3511 ,Ca.Account_Limit_Interest_Id
3512 ,CAST(Wd.Start_Date AS TIMESTAMP) Start_Date
3513 ,CAST(Wd.End_Date AS TIMESTAMP) End_Date
3514 -- ,CAST(Wd.Blocked_Funds_Indicator AS NUMBER(1)) Blocked_Funds_Indicator
3515 ,Ca.Credit_Interest_Id
3516 ,CAST(Wd.Credit_Interest_Rate AS NUMBER(19, 6)) Credit_Interest_Rate
3517 ,Cir.Interest_Rate Ca_Credit_Interest_Rate
3518 ,To_Char(Wd.Credit_Interest_Rate_Period_Nr) ||
3519 Synch.Get_Dict('INTEREST_PERIOD_TYPE', To_Char(Wd.Credit_Interest_Rate_Period)) Credit_Interest_Rate_Type
3520 ,Cir.Interest_Rate_Type Ca_Credit_Interest_Rate_Type
3521 ,Ca.Debit_Interest_Id
3522 ,CAST(Wd.Debit_Interest_Rate AS NUMBER(19, 6)) Debit_Interest_Rate
3523 ,Dir.Interest_Rate Ca_Debit_Interest_Rate
3524 ,To_Char(Wd.Debit_Interest_Rate_Period_Nr) ||
3525 Synch.Get_Dict('INTEREST_PERIOD_TYPE', To_Char(Wd.Debit_Interest_Rate_Period)) Debit_Interest_Rate_Type
3526 ,Dir.Interest_Rate_Type Ca_Debit_Interest_Rate_Type
3527 ,CAST(Wd.Nrb AS VARCHAR2(26 CHAR)) Nrb
3528 ,CAST(Wd.Modulo AS VARCHAR2(50 CHAR)) Modulo
3529 ,CAST(Wd.Prod_Type AS VARCHAR2(20 CHAR)) Prod_Type
3530 ,CAST(Wd.Description AS VARCHAR2(1024 CHAR)) Description
3531 ,CAST(Wd.Contract_Ref_Number AS VARCHAR2(50 CHAR)) Contract_Ref_Number
3532 ,CAST(Wd.Contract_Number AS VARCHAR2(50 CHAR)) Contract_Number
3533 ,CAST(Wd.Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
3534 ,Synch.Get_Dict('CURRENT_ACCOUNT_STATUS', Wd.Status) Status
3535 ,CAST(Wd.Org_Unit AS VARCHAR2(64 CHAR)) Org_Unit
3536 ,CAST(Wd.Prod_Type_Id AS VARCHAR2(64 CHAR)) Prod_Type_Id
3537 ,CAST(Wd.Exchange_Rate_Table_Id AS NUMBER(19)) Exchange_Rate_Table_Id
3538 ,Ca.Effective_Interest_Id
3539 ,CAST(Wd.Effective_Interest_Rate AS NUMBER(19, 6)) Effective_Interest_Rate
3540 ,Eir.Interest_Rate Ca_Effective_Interest_Rate
3541 ,CAST(Wd.Loan_Nrb AS VARCHAR2(30 CHAR)) Loan_Nrb
3542 ,Cast(Wd.Vat_Account_NRB As Varchar2(26 Char)) VAT_ACCOUNT_NRB
3543 ,Cai.Id
3544 FROM LC_WD_BIM_CURRENT_ACCOUNTS Wd
3545 JOIN Current_Account_Identifiers Cai
3546 ON Cai.Key = SYNCH.gv_identifiers_key_value
3547 AND Cai.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
3548 AND To_Char(Wd.Id) = Cai.Value
3549 JOIN Current_Accounts Ca
3550 ON Cai.Extore_Id = Ca.Id
3551 AND Ca.Bank_Id = Cai.Bank_Id
3552 AND CAST(Wd.Modification_Date AS TIMESTAMP(6)) > Ca.Modification_Date
3553 LEFT JOIN Interests Lir
3554 ON Lir.Id = Ca.Account_Limit_Interest_Id
3555 AND Lir.Bank_Id = Cai.Bank_Id
3556 LEFT JOIN Interests Cir
3557 ON Cir.Id = Ca.Credit_Interest_Id
3558 AND Cir.Bank_Id = Cai.Bank_Id
3559 LEFT JOIN Interests Dir
3560 ON Dir.Id = Ca.Debit_Interest_Id
3561 AND Dir.Bank_Id = Cai.Bank_Id
3562 LEFT JOIN Interests Eir
3563 ON Eir.Id = Ca.Effective_Interest_Id
3564 AND Eir.Bank_Id = Cai.Bank_Id
3565 WHERE Wd.Modification_Date >= Last_Synch_Date
3566 AND Wd.Modification_Date < l_Start_Time;
3567 CURSOR c_Insert Is
3568 WITH Cai AS
3569 (SELECT VALUE
3570 FROM Current_Account_Identifiers
3571 WHERE Key = Synch.Gv_Identifiers_Key_Value
3572 AND Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id),
3573 Cust AS
3574 (SELECT Ci.Value
3575 FROM Customer_Identifiers Ci, Customers c
3576 WHERE Ci.Key = Synch.Gv_Identifiers_Key_Value
3577 AND Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
3578 AND c.Id = Ci.Extore_Id
3579 AND c.Bank_Id = Ci.Bank_Id
3580 AND c.Status = 'ACTIVE')
3581 --SELECT /*+ driving_site(wd) driving_site(ab) driving_site(ac) use_hash(wd,ab,ac,cai,cust)
3582 -- */
3583 SELECT
3584 DISTINCT 0 Seq
3585 ,CAST(Wd.Id AS NUMBER(19)) Id
3586 ,CAST(Wd.Limit_Amount AS NUMBER(19, 2)) Limit_Amount
3587 ,CAST(Wd.Limit_Auto_Renew AS VARCHAR2(128 CHAR)) Limit_Auto_Renew
3588 ,CAST(Wd.Limit_End_Date AS TIMESTAMP) Limit_End_Date
3589 ,CAST(Wd.Limit_Type AS VARCHAR2(32 CHAR)) Limit_Type
3590 ,CAST(Wd.Limit_Interest_Rate AS NUMBER(19, 6)) Limit_Interest_Rate
3591 ,CAST(Wd.Start_Date AS TIMESTAMP) Start_Date
3592 ,CAST(Wd.End_Date AS TIMESTAMP) End_Date
3593 ,CAST(Wd.Credit_Interest_Rate AS NUMBER(19, 6)) Credit_Interest_Rate
3594 ,To_Char(Wd.Credit_Interest_Rate_Period_Nr) ||
3595 Synch.Get_Dict('INTEREST_PERIOD_TYPE', To_Char(Wd.Credit_Interest_Rate_Period)) Credit_Interest_Rate_Type
3596 ,CAST(Wd.Debit_Interest_Rate AS NUMBER(19, 6)) Debit_Interest_Rate
3597 ,To_Char(Wd.Debit_Interest_Rate_Period_Nr) ||
3598 Synch.Get_Dict('INTEREST_PERIOD_TYPE', To_Char(Wd.Debit_Interest_Rate_Period)) Debit_Interest_Rate_Type
3599 ,CAST(Wd.Nrb AS VARCHAR2(26 CHAR)) Nrb
3600 ,CAST(Wd.Modulo AS VARCHAR2(50 CHAR)) Modulo
3601 ,CAST(Wd.Prod_Type AS VARCHAR2(20 CHAR)) Prod_Type
3602 ,CAST(Wd.Description AS VARCHAR2(1024 CHAR)) Description
3603 ,CAST(Wd.Contract_Ref_Number AS VARCHAR2(50 CHAR)) Contract_Ref_Number
3604 ,CAST(Wd.Contract_Number AS VARCHAR2(50 CHAR)) Contract_Number
3605 ,CAST(Wd.Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
3606 ,Synch.Get_Dict('CURRENT_ACCOUNT_STATUS', Wd.Status) Status
3607 ,CAST(Wd.Org_Unit AS VARCHAR2(64 CHAR)) Org_Unit
3608 ,CAST(Wd.Prod_Type_Id AS VARCHAR2(64 CHAR)) Prod_Type_Id
3609 ,CAST(Wd.Exchange_Rate_Table_Id AS NUMBER(19)) Exchange_Rate_Table_Id
3610 ,CAST(Wd.Effective_Interest_Rate AS NUMBER(19, 6)) Effective_Interest_Rate
3611 ,CAST(Wd.Loan_Nrb AS VARCHAR2(30 CHAR)) Loan_Nrb
3612 ,CAST(Wd.Vat_Account_NRB AS VARCHAR2(26 CHAR)) VAT_Account_Nrb
3613 FROM LC_WD_BIM_CURRENT_ACCOUNTS Wd
3614 /*JOIN LC_Wd_Bim_Acc_Balances Ab
3615 ON Ab.Account_Id = Wd.Id*/
3616 JOIN lc_Wd_Bim_Acc_Customers Ac
3617 ON Ac.Account_Id = Wd.Id
3618 AND Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', Ac.Role) = 'OWNER'
3619 JOIN Cust
3620 ON Cust.Value = To_Char(Ac.Customer_Id)
3621 Left Join Cai
3622 On Cai.Value = To_Char(Wd.Id)
3623 WHERE Cai.Value Is Null
3624 AND Wd.Modification_Date >= Last_Synch_Date
3625 AND Wd.Modification_Date < l_Start_Time;
3626 CURSOR c_Delete IS
3627 SELECT 1 FROM Dual WHERE 1 = 2;
3628 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
3629 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
3630 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
3631 Lupdate_Array Tupdate_Table;
3632 Linsert_Array Tinsert_Table;
3633 Ldelete_Array Tdelete_Table;
3634 PROCEDURE p_Upd(p_Upd_Cur c_Update%ROWTYPE) AS
3635 r_Ca Current_Accounts%ROWTYPE;
3636 r_In Interests%ROWTYPE;
3637 Vn_Rows NUMBER := 0;
3638 BEGIN
3639 -- pobranie rekordu aktualnego
3640 BEGIN
3641 SELECT * INTO r_Ca FROM Current_Accounts Ca WHERE Ca.Id = p_Upd_Cur.Extore_Account_Id;
3642 EXCEPTION
3643 WHEN No_Data_Found THEN
3644 RETURN;
3645 END;
3646 -- UID Limit_Interest_Id
3647 IF p_Upd_Cur.Limit_Interest_Rate IS NULL
3648 AND p_Upd_Cur.Account_Limit_Interest_Id IS NOT NULL THEN
3649 -- kasowanie rekordu interests dla LIMIT
3650 DELETE FROM Interests i WHERE i.Id = p_Upd_Cur.Account_Limit_Interest_Id;
3651 r_Ca.Account_Limit_Interest_Id := NULL;
3652 ELSIF p_Upd_Cur.Limit_Interest_Rate IS NOT NULL
3653 AND p_Upd_Cur.Account_Limit_Interest_Id IS NULL THEN
3654 -- insert INTERESTS dla LIMIT
3655 INSERT /* APPEND_VALUES*/ INTO Interests i
3656 (Id
3657 ,Version
3658 ,Bank_Id
3659 ,Creation_Date
3660 ,Modification_Date
3661 ,Interest_Rate
3662 ,Interest_Rate_Kind
3663 ,Interest_Rate_Type
3664 ,Is_Fixed
3665 ,Is_Referenced
3666 ,Currency_Code_a
3667 ,Status
3668 ,Interest_Rate_Change
3669 ,Calculation_Method)
3670 VALUES
3671 (e_Id_Seq.Nextval
3672 ,0
3673 ,Synch_Restart.Current_Job_Row.Bank_Id
3674 ,l_Start_Time
3675 ,l_Start_Time
3676 ,p_Upd_Cur.Limit_Interest_Rate
3677 ,NULL
3678 ,NULL
3679 ,NULL
3680 ,NULL
3681 ,p_Upd_Cur.Currency_Code_a
3682 ,NULL
3683 ,NULL
3684 ,NULL)
3685 RETURNING Id INTO r_Ca.Account_Limit_Interest_Id;
3686 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3687 ELSIF p_Upd_Cur.Limit_Interest_Rate IS NOT NULL
3688 AND p_Upd_Cur.Account_Limit_Interest_Id IS NOT NULL THEN
3689 BEGIN
3690 SELECT * INTO r_In FROM Interests i WHERE i.Id = p_Upd_Cur.Account_Limit_Interest_Id;
3691 r_In.Interest_Rate := p_Upd_Cur.Limit_Interest_Rate;
3692 r_In.Version := r_In.Version + 1;
3693 r_In.Modification_Date := l_Start_Time; --p_Upd_Cur.Modification_Date;
3694 EXCEPTION
3695 WHEN No_Data_Found THEN
3696 INSERT /* APPEND_VALUES*/ INTO Interests i
3697 (Id
3698 ,Version
3699 ,Bank_Id
3700 ,Creation_Date
3701 ,Modification_Date
3702 ,Interest_Rate
3703 ,Interest_Rate_Kind
3704 ,Interest_Rate_Type
3705 ,Is_Fixed
3706 ,Is_Referenced
3707 ,Currency_Code_a
3708 ,Status
3709 ,Interest_Rate_Change
3710 ,Calculation_Method)
3711 VALUES
3712 (p_Upd_Cur.Account_Limit_Interest_Id
3713 ,0
3714 ,Synch_Restart.Current_Job_Row.Bank_Id
3715 ,l_Start_Time
3716 ,l_Start_Time
3717 ,p_Upd_Cur.Limit_Interest_Rate
3718 ,NULL
3719 ,NULL
3720 ,NULL
3721 ,NULL
3722 ,p_Upd_Cur.Currency_Code_a
3723 ,NULL
3724 ,NULL
3725 ,NULL);
3726 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3727 SELECT * INTO r_In FROM Interests i WHERE i.Id = p_Upd_Cur.Account_Limit_Interest_Id;
3728 END;
3729 UPDATE Interests i SET ROW = r_In WHERE i.Id = r_In.Id;
3730 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3731 END IF;
3732 -- UID Effective_Interest_Id
3733 IF p_Upd_Cur.Effective_Interest_Rate IS NULL
3734 AND p_Upd_Cur.Effective_Interest_Id IS NOT NULL THEN
3735 -- kasowanie rekordu interests dla Effective
3736 DELETE FROM Interests i WHERE i.Id = p_Upd_Cur.Effective_Interest_Id;
3737 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3738 r_Ca.Effective_Interest_Id := NULL;
3739 ELSIF p_Upd_Cur.Effective_Interest_Rate IS NOT NULL
3740 AND p_Upd_Cur.Effective_Interest_Id IS NULL THEN
3741 -- insert INTERESTS dla Effective
3742 INSERT /* APPEND_VALUES*/ INTO Interests i
3743 (Id
3744 ,Version
3745 ,Bank_Id
3746 ,Creation_Date
3747 ,Modification_Date
3748 ,Interest_Rate
3749 ,Interest_Rate_Kind
3750 ,Interest_Rate_Type
3751 ,Is_Fixed
3752 ,Is_Referenced
3753 ,Currency_Code_a
3754 ,Status
3755 ,Interest_Rate_Change
3756 ,Calculation_Method)
3757 VALUES
3758 (e_Id_Seq.Nextval
3759 ,0
3760 ,Synch_Restart.Current_Job_Row.Bank_Id
3761 ,l_Start_Time
3762 ,l_Start_Time
3763 ,p_Upd_Cur.Effective_Interest_Rate
3764 ,NULL
3765 ,NULL
3766 ,NULL
3767 ,NULL
3768 ,p_Upd_Cur.Currency_Code_a
3769 ,NULL
3770 ,NULL
3771 ,NULL)
3772 RETURNING Id INTO r_Ca.Effective_Interest_Id;
3773 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3774 ELSIF p_Upd_Cur.Effective_Interest_Rate IS NOT NULL
3775 AND p_Upd_Cur.Effective_Interest_Id IS NOT NULL THEN
3776 BEGIN
3777 SELECT * INTO r_In FROM Interests i WHERE i.Id = p_Upd_Cur.Effective_Interest_Id;
3778 r_In.Interest_Rate := p_Upd_Cur.Effective_Interest_Rate;
3779 r_In.Version := r_In.Version + 1;
3780 r_In.Modification_Date := l_Start_Time;
3781 EXCEPTION
3782 WHEN No_Data_Found THEN
3783 INSERT /* APPEND_VALUES*/ INTO Interests i
3784 (Id
3785 ,Version
3786 ,Bank_Id
3787 ,Creation_Date
3788 ,Modification_Date
3789 ,Interest_Rate
3790 ,Interest_Rate_Kind
3791 ,Interest_Rate_Type
3792 ,Is_Fixed
3793 ,Is_Referenced
3794 ,Currency_Code_a
3795 ,Status
3796 ,Interest_Rate_Change
3797 ,Calculation_Method)
3798 VALUES
3799 (p_Upd_Cur.Effective_Interest_Id
3800 ,0
3801 ,Synch_Restart.Current_Job_Row.Bank_Id
3802 ,l_Start_Time
3803 ,l_Start_Time
3804 ,p_Upd_Cur.Effective_Interest_Rate
3805 ,NULL
3806 ,NULL
3807 ,NULL
3808 ,NULL
3809 ,p_Upd_Cur.Currency_Code_a
3810 ,NULL
3811 ,NULL
3812 ,NULL);
3813 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3814 SELECT * INTO r_In FROM Interests i WHERE i.Id = p_Upd_Cur.Effective_Interest_Id;
3815 END;
3816 UPDATE Interests i SET ROW = r_In WHERE i.Id = r_In.Id;
3817 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3818 END IF;
3819 -- UID Credit_Interest_Id
3820 IF p_Upd_Cur.Credit_Interest_Rate IS NULL
3821 AND p_Upd_Cur.Credit_Interest_Rate_Type IS NULL
3822 AND p_Upd_Cur.Credit_Interest_Id IS NOT NULL THEN
3823 -- kasowanie rekordu interests dla LIMIT
3824 DELETE FROM Interests i WHERE i.Id = p_Upd_Cur.Credit_Interest_Id;
3825 r_Ca.Credit_Interest_Id := NULL;
3826 ELSIF (p_Upd_Cur.Credit_Interest_Rate IS NOT NULL OR p_Upd_Cur.Credit_Interest_Rate_Type IS NOT NULL)
3827 AND p_Upd_Cur.Credit_Interest_Id IS NULL THEN
3828 -- insert INTERESTS dla LIMIT
3829 INSERT /* APPEND_VALUES*/ INTO Interests i
3830 (Id
3831 ,Version
3832 ,Bank_Id
3833 ,Creation_Date
3834 ,Modification_Date
3835 ,Interest_Rate
3836 ,Interest_Rate_Kind
3837 ,Interest_Rate_Type
3838 ,Is_Fixed
3839 ,Is_Referenced
3840 ,Currency_Code_a
3841 ,Status
3842 ,Interest_Rate_Change
3843 ,Calculation_Method)
3844 VALUES
3845 (e_Id_Seq.Nextval
3846 ,0
3847 ,Synch_Restart.Current_Job_Row.Bank_Id
3848 ,l_Start_Time
3849 ,l_Start_Time
3850 ,p_Upd_Cur.Credit_Interest_Rate
3851 ,NULL
3852 ,p_Upd_Cur.Credit_Interest_Rate_Type
3853 ,NULL
3854 ,NULL
3855 ,p_Upd_Cur.Currency_Code_a
3856 ,NULL
3857 ,NULL
3858 ,NULL)
3859 RETURNING Id INTO r_Ca.Credit_Interest_Id;
3860 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3861 ELSIF (p_Upd_Cur.Credit_Interest_Rate IS NOT NULL OR p_Upd_Cur.Credit_Interest_Rate_Type IS NOT NULL)
3862 AND p_Upd_Cur.Credit_Interest_Id IS NULL THEN
3863 BEGIN
3864 SELECT * INTO r_In FROM Interests i WHERE i.Id = p_Upd_Cur.Credit_Interest_Rate_Type;
3865 r_In.Interest_Rate := p_Upd_Cur.Credit_Interest_Rate;
3866 r_In.Interest_Rate_Type := p_Upd_Cur.Credit_Interest_Rate_Type;
3867 r_In.Version := r_In.Version + 1;
3868 r_In.Modification_Date := l_Start_Time;
3869 EXCEPTION
3870 WHEN No_Data_Found THEN
3871 INSERT /* APPEND_VALUES*/ INTO Interests i
3872 (Id
3873 ,Version
3874 ,Bank_Id
3875 ,Creation_Date
3876 ,Modification_Date
3877 ,Interest_Rate
3878 ,Interest_Rate_Kind
3879 ,Interest_Rate_Type
3880 ,Is_Fixed
3881 ,Is_Referenced
3882 ,Currency_Code_a
3883 ,Status
3884 ,Interest_Rate_Change
3885 ,Calculation_Method)
3886 VALUES
3887 (p_Upd_Cur.Credit_Interest_Id
3888 ,0
3889 ,Synch_Restart.Current_Job_Row.Bank_Id
3890 ,l_Start_Time
3891 ,l_Start_Time
3892 ,p_Upd_Cur.Credit_Interest_Rate
3893 ,NULL
3894 ,p_Upd_Cur.Credit_Interest_Rate_Type
3895 ,NULL
3896 ,NULL
3897 ,p_Upd_Cur.Currency_Code_a
3898 ,NULL
3899 ,NULL
3900 ,NULL);
3901 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3902 SELECT * INTO r_In FROM Interests i WHERE i.Id = p_Upd_Cur.Credit_Interest_Id;
3903 END;
3904 UPDATE Interests i SET ROW = r_In WHERE i.Id = r_In.Id;
3905 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3906 END IF;
3907 -- UID Debit_Interest_Id
3908 IF p_Upd_Cur.Debit_Interest_Rate IS NULL
3909 AND p_Upd_Cur.Debit_Interest_Rate_Type IS NULL
3910 AND p_Upd_Cur.Debit_Interest_Id IS NOT NULL THEN
3911 -- kasowanie rekordu interests dla LIMIT
3912 DELETE FROM Interests i WHERE i.Id = p_Upd_Cur.Debit_Interest_Id;
3913 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3914 r_Ca.Debit_Interest_Id := NULL;
3915 ELSIF (p_Upd_Cur.Debit_Interest_Rate IS NOT NULL OR p_Upd_Cur.Debit_Interest_Rate_Type IS NOT NULL)
3916 AND p_Upd_Cur.Debit_Interest_Id IS NULL THEN
3917 -- insert INTERESTS dla LIMIT
3918 INSERT /* APPEND_VALUES*/ INTO Interests i
3919 (Id
3920 ,Version
3921 ,Bank_Id
3922 ,Creation_Date
3923 ,Modification_Date
3924 ,Interest_Rate
3925 ,Interest_Rate_Kind
3926 ,Interest_Rate_Type
3927 ,Is_Fixed
3928 ,Is_Referenced
3929 ,Currency_Code_a
3930 ,Status
3931 ,Interest_Rate_Change
3932 ,Calculation_Method)
3933 VALUES
3934 (e_Id_Seq.Nextval
3935 ,0
3936 ,Synch_Restart.Current_Job_Row.Bank_Id
3937 ,l_Start_Time
3938 ,l_Start_Time
3939 ,p_Upd_Cur.Debit_Interest_Rate
3940 ,NULL
3941 ,p_Upd_Cur.Debit_Interest_Rate_Type
3942 ,NULL
3943 ,NULL
3944 ,p_Upd_Cur.Currency_Code_a
3945 ,NULL
3946 ,NULL
3947 ,NULL)
3948 RETURNING Id INTO r_Ca.Debit_Interest_Id;
3949 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3950 ELSIF (p_Upd_Cur.Debit_Interest_Rate IS NOT NULL OR p_Upd_Cur.Debit_Interest_Rate_Type IS NOT NULL)
3951 AND p_Upd_Cur.Debit_Interest_Id IS NULL THEN
3952 BEGIN
3953 SELECT * INTO r_In FROM Interests i WHERE i.Id = p_Upd_Cur.Debit_Interest_Rate_Type;
3954 r_In.Interest_Rate := p_Upd_Cur.Debit_Interest_Rate;
3955 r_In.Interest_Rate_Type := p_Upd_Cur.Debit_Interest_Rate_Type;
3956 r_In.Version := r_In.Version + 1;
3957 r_In.Modification_Date := l_Start_Time;
3958 EXCEPTION
3959 WHEN No_Data_Found THEN
3960 INSERT /* APPEND_VALUES*/ INTO Interests i
3961 (Id
3962 ,Version
3963 ,Bank_Id
3964 ,Creation_Date
3965 ,Modification_Date
3966 ,Interest_Rate
3967 ,Interest_Rate_Kind
3968 ,Interest_Rate_Type
3969 ,Is_Fixed
3970 ,Is_Referenced
3971 ,Currency_Code_a
3972 ,Status
3973 ,Interest_Rate_Change
3974 ,Calculation_Method)
3975 VALUES
3976 (p_Upd_Cur.Debit_Interest_Id
3977 ,0
3978 ,Synch_Restart.Current_Job_Row.Bank_Id
3979 ,l_Start_Time
3980 ,l_Start_Time
3981 ,p_Upd_Cur.Debit_Interest_Rate
3982 ,NULL
3983 ,p_Upd_Cur.Debit_Interest_Rate_Type
3984 ,NULL
3985 ,NULL
3986 ,p_Upd_Cur.Currency_Code_a
3987 ,NULL
3988 ,NULL
3989 ,NULL);
3990 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3991 SELECT * INTO r_In FROM Interests i WHERE i.Id = p_Upd_Cur.Debit_Interest_Id;
3992 END;
3993 UPDATE Interests i SET ROW = r_In WHERE i.Id = r_In.Id;
3994 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
3995 END IF;
3996 -- reszta kolumn wiersza
3997 r_Ca.Modification_Date := l_Start_Time;
3998 r_Ca.Limit_Amount := p_Upd_Cur.Limit_Amount;
3999 r_Ca.Limit_Auto_Renew := p_Upd_Cur.Limit_Auto_Renew;
4000 r_Ca.Limit_End_Date := p_Upd_Cur.Limit_End_Date;
4001 r_Ca.Limit_Type := p_Upd_Cur.Limit_Type;
4002 r_Ca.Start_Date := p_Upd_Cur.Start_Date;
4003 r_Ca.End_Date := p_Upd_Cur.End_Date;
4004 -- r_Ca.Blocked_Funds_Indicator := p_Upd_Cur.Blocked_Funds_Indicator;
4005 -- r_ca.PENALTHY_INTEREST_ID := p_upd_cur.PENALTHY_INTEREST_ID ;
4006 r_Ca.Nrb := p_Upd_Cur.Nrb;
4007 r_Ca.Modulo := p_Upd_Cur.Modulo;
4008 -- r_ca.PROD_GROUP_TYPE := p_upd_cur.PROD_GROUP_TYPE ;
4009 r_Ca.Prod_Type := p_Upd_Cur.Prod_Type;
4010 -- r_ca.PROD_SUB_TYPE := p_upd_cur.PROD_SUB_TYPE ;
4011 r_Ca.Description := p_Upd_Cur.Description;
4012 r_Ca.Contract_Ref_Number := p_Upd_Cur.Contract_Ref_Number;
4013 r_Ca.Contract_Number := p_Upd_Cur.Contract_Number;
4014 r_Ca.Currency_Code_a := p_Upd_Cur.Currency_Code_a;
4015 r_Ca.Status := p_Upd_Cur.Status;
4016 r_Ca.Org_Unit := p_Upd_Cur.Org_Unit;
4017 -- r_ca.OPERATION_SYNC_BOOKING_DATE:= p_upd_cur.OPERATION_SYNC_BOOKING_DATE ;
4018 r_Ca.Prod_Type_Id := p_Upd_Cur.Prod_Type_Id;
4019 -- r_ca.CONTRACT_DATE := p_upd_cur.CONTRACT_DATE ;
4020 -- r_ca.SEQ := p_upd_cur.SEQ ;
4021 -- r_ca.IBAN := p_upd_cur.IBAN ;
4022 -- r_ca.PROD_NAME := p_upd_cur.PROD_NAME ;
4023 -- r_ca.SIZURE_INDICATOR := p_upd_cur.SIZURE_INDICATOR ;
4024 -- r_ca.FULL_BLOCKADE := p_upd_cur.FULL_BLOCKADE ;
4025 r_Ca.Exchange_Rate_Table_Source_Id := p_Upd_Cur.Exchange_Rate_Table_Id;
4026 r_Ca.Loan_Nrb := p_Upd_Cur.Loan_Nrb;
4027 r_Ca.VAT_Account_Nrb := p_Upd_Cur.VAT_Account_Nrb;
4028 r_Ca.Version := r_Ca.Version + 1;
4029 -- r_ca.Bank_Id := r_ca.Bank_Id ;
4030 -- r_ca.Creation_Date := r_ca.Creation_Date ;
4031 -- r_ca.MASS_ACCOUNT := r_ca. ;
4032 -- r_ca.ACCOUNT := r_ca.ACCOUNT ;
4033 -- r_ca.REMARK := r_ca.REMARK ;
4034 -- r_ca.AUXILLIARY_ACCOUNT := r_ca.AUXILLIARY_ACCOUNT ;
4035 UPDATE Current_Accounts Ca SET ROW = r_Ca WHERE Ca.Id = r_Ca.Id;
4036 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
4037 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
4038 END p_Upd;
4039 PROCEDURE p_Ins(p_Ins_Cur c_Insert%ROWTYPE) AS
4040 r_Ca Current_Accounts%ROWTYPE;
4041 Vn_Rows NUMBER := 0;
4042 FUNCTION p_Interests_Ins(p_Rate NUMBER
4043 ,p_Rate_Type VARCHAR2) RETURN NUMBER IS
4044 Vn_Interests_Id NUMBER := e_Id_Seq.Nextval;
4045 BEGIN
4046 INSERT /* APPEND_VALUES*/ INTO Interests
4047 (Id
4048 ,Version
4049 ,Bank_Id
4050 ,Creation_Date
4051 ,Modification_Date
4052 ,Interest_Rate
4053 ,Interest_Rate_Kind
4054 ,Interest_Rate_Type
4055 ,Is_Fixed
4056 ,Is_Referenced
4057 ,Currency_Code_a
4058 ,Status
4059 ,Interest_Rate_Change
4060 ,Calculation_Method)
4061 VALUES
4062 (Vn_Interests_Id
4063 ,0
4064 ,Synch_Restart.Current_Job_Row.Bank_Id
4065 ,l_Start_Time
4066 ,l_Start_Time
4067 ,p_Rate
4068 ,NULL
4069 ,p_Rate_Type
4070 ,NULL
4071 ,NULL
4072 ,p_Ins_Cur.Currency_Code_a
4073 ,NULL
4074 ,NULL
4075 ,NULL);
4076 RETURN Vn_Interests_Id;
4077 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
4078 END p_Interests_Ins;
4079 BEGIN
4080 r_Ca.Id := p_Ins_Cur.Seq; --e_Id_Seq.Nextval;
4081 r_Ca.Version := 0;
4082 r_Ca.Bank_Id := Synch_Restart.Current_Job_Row.Bank_Id;
4083 r_Ca.Creation_Date := l_Start_Time;
4084 r_Ca.Modification_Date := l_Start_Time;
4085 r_Ca.Limit_Amount := p_Ins_Cur.Limit_Amount;
4086 r_Ca.Limit_Auto_Renew := p_Ins_Cur.Limit_Auto_Renew;
4087 r_Ca.Limit_End_Date := p_Ins_Cur.Limit_End_Date;
4088 r_Ca.Limit_Type := p_Ins_Cur.Limit_Type;
4089 r_Ca.Start_Date := p_Ins_Cur.Start_Date;
4090 r_Ca.End_Date := p_Ins_Cur.End_Date;
4091 -- r_Ca.Blocked_Funds_Indicator := p_Ins_Cur.Blocked_Funds_Indicator;
4092 r_Ca.Credit_Interest_Id := p_Interests_Ins(p_Ins_Cur.Credit_Interest_Rate, p_Ins_Cur.Credit_Interest_Rate_Type);
4093 r_Ca.Debit_Interest_Id := p_Interests_Ins(p_Ins_Cur.Debit_Interest_Rate, p_Ins_Cur.Debit_Interest_Rate_Type);
4094 -- r_ca.PENALTHY_INTEREST_ID := p_Ins_Cur
4095 -- r_ca.MASS_ACCOUNT := p_Ins_Cur
4096 r_Ca.Nrb := p_Ins_Cur.Nrb;
4097 r_Ca.Modulo := p_Ins_Cur.Modulo;
4098 -- r_ca.ACCOUNT := p_Ins_Cur
4099 -- r_ca.REMARK := p_Ins_Cur
4100 -- r_ca.AUXILLIARY_ACCOUNT := p_Ins_Cur
4101 -- r_ca.PROD_GROUP_TYPE := p_Ins_Cur
4102 r_Ca.Prod_Type := p_Ins_Cur.Prod_Type;
4103 -- r_ca.PROD_SUB_TYPE := p_Ins_Cur
4104 r_Ca.Contract_Ref_Number := p_Ins_Cur.Contract_Ref_Number;
4105 r_Ca.Contract_Number := p_Ins_Cur.Contract_Number;
4106 r_Ca.Currency_Code_a := p_Ins_Cur.Currency_Code_a;
4107 r_Ca.Status := p_Ins_Cur.Status;
4108 r_Ca.Org_Unit := p_Ins_Cur.Org_Unit;
4109 -- r_ca.OPERATION_SYNC_BOOKING_DATE := p_Ins_Cur
4110 r_Ca.Prod_Type_Id := p_Ins_Cur.Prod_Type_Id;
4111 -- r_ca.CONTRACT_DATE := p_Ins_Cur
4112 -- r_ca.SEQ := p_Ins_Cur
4113 -- r_ca.IBAN := p_Ins_Cur
4114 -- r_ca.PROD_NAME := p_Ins_Cur
4115 -- r_ca.SIZURE_INDICATOR := p_Ins_Cur
4116 -- r_ca.FULL_BLOCKADE := p_Ins_Cur
4117 r_Ca.Description := p_Ins_Cur.Description;
4118 r_Ca.Exchange_Rate_Table_Source_Id := p_Ins_Cur.Exchange_Rate_Table_Id;
4119 r_Ca.Account_Limit_Interest_Id := p_Interests_Ins(p_Ins_Cur.Limit_Interest_Rate, NULL);
4120 r_Ca.Loan_Nrb := p_Ins_Cur.Loan_Nrb;
4121 r_Ca.VAT_Account_Nrb := p_Ins_Cur.VAT_Account_Nrb;
4122 r_Ca.Effective_Interest_Id := p_Interests_Ins(p_Ins_Cur.Effective_Interest_Rate, NULL);
4123 INSERT /* APPEND_VALUES*/ INTO Current_Accounts Ca VALUES r_Ca;
4124 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
4125 INSERT /* APPEND_VALUES*/ INTO Current_Account_Identifiers
4126 (Id, Key, VALUE, Bank_Id, Extore_Id, Version, Modification_Date, Creation_Date)
4127 VALUES
4128 (p_Ins_Cur.Seq+1 --e_Id_Seq.Nextval
4129 ,SYNCH.gv_identifiers_key_value
4130 ,To_Char(p_Ins_Cur.Id)
4131 ,Synch_Restart.Current_Job_Row.Bank_Id
4132 ,r_Ca.Id
4133 ,0
4134 ,l_Start_Time
4135 ,l_Start_Time);
4136 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
4137 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
4138 END p_Ins;
4139 BEGIN
4140 Proc_Time := Current_Timestamp;
4141 Synch_Restart.Start_Step;
4142 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
4143 l_Start_Time := Synch_Restart.Get_Start_Time();
4144 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
4145 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
4146 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
4147 --- pobranie
4148 ----lc_Wd_Bim_Acc_Balances
4149 /* Synch_Restart.Log('Start pobierania danych ');
4150 begin
4151 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Acc_Balances');
4152 vsql:='truncate table lc_Wd_Bim_Acc_Balances';
4153 execute immediate vsql;
4154 commit;
4155 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Acc_Balances');
4156 end;*/
4157 ----lc_Wd_Bim_Acc_Customers
4158 Synch_Restart.Log('Start pobierania danych ');
4159 begin
4160 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Acc_Customers');
4161 vsql:='truncate table lc_Wd_Bim_Acc_Customers';
4162 execute immediate vsql;
4163 commit;
4164 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Acc_Customers');
4165 end;
4166 ----LC_WD_BIM_CURRENT_ACCOUNTS
4167 Synch_Restart.Log('Start pobierania danych ');
4168 begin
4169 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'LC_WD_BIM_CURRENT_ACCOUNTS');
4170 vsql:='truncate table LC_WD_BIM_CURRENT_ACCOUNTS';
4171 execute immediate vsql;
4172 commit;
4173 Synch_Restart.Log('KOniec czyszczenie ' || 'LC_WD_BIM_CURRENT_ACCOUNTS');
4174 end;
4175 -----LC_WD_BIM_CURRENT_ACCOUNTS
4176 begin
4177 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'LC_WD_BIM_CURRENT_ACCOUNTS');
4178 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_CURR_ACCOUNTS';
4179 vsql:='insert into LC_WD_BIM_CURRENT_ACCOUNTS
4180 (select /*+ DRIVING_SITE(wd)*/
4181 CAST(Wd.Id AS NUMBER(19)) Id
4182 ,CAST(Wd.Limit_Amount AS NUMBER(19, 2)) Limit_Amount
4183 ,CAST(Wd.Limit_Auto_Renew AS VARCHAR2(128 CHAR)) Limit_Auto_Renew
4184 ,CAST(Wd.Limit_End_Date AS TIMESTAMP) Limit_End_Date
4185 ,CAST(Wd.Limit_Type AS VARCHAR2(32 CHAR)) Limit_Type
4186 ,CAST(Wd.Limit_Interest_Rate AS NUMBER(19, 6)) Limit_Interest_Rate
4187 ,CAST(Wd.Start_Date AS TIMESTAMP) Start_Date
4188 ,CAST(Wd.End_Date AS TIMESTAMP) End_Date
4189 ,CAST(Wd.Credit_Interest_Rate AS NUMBER(19, 6)) Credit_Interest_Rate
4190 ,Wd.Credit_Interest_Rate_Period_Nr
4191 ,Wd.Credit_Interest_Rate_Period
4192 ,CAST(Wd.Debit_Interest_Rate AS NUMBER(19, 6)) Debit_Interest_Rate
4193 ,Wd.Debit_Interest_Rate_Period_Nr
4194 ,Wd.Debit_Interest_Rate_Period
4195 ,CAST(Wd.Nrb AS VARCHAR2(26 CHAR)) Nrb
4196 ,CAST(Wd.Modulo AS VARCHAR2(50 CHAR)) Modulo
4197 ,CAST(Wd.Prod_Type AS VARCHAR2(20 CHAR)) Prod_Type
4198 ,CAST(Wd.Description AS VARCHAR2(1024 CHAR)) Description
4199 ,CAST(Wd.Contract_Ref_Number AS VARCHAR2(50 CHAR)) Contract_Ref_Number
4200 ,CAST(Wd.Contract_Number AS VARCHAR2(50 CHAR)) Contract_Number
4201 ,CAST(Wd.Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
4202 ,Wd.Status
4203 ,CAST(Wd.Org_Unit AS VARCHAR2(64 CHAR)) Org_Unit
4204 ,CAST(Wd.Prod_Type_Id AS VARCHAR2(64 CHAR)) Prod_Type_Id
4205 ,CAST(Wd.Exchange_Rate_Table_Id AS NUMBER(19)) Exchange_Rate_Table_Id
4206 ,CAST(Wd.Effective_Interest_Rate AS NUMBER(19, 6)) Effective_Interest_Rate
4207 ,CAST(Wd.Loan_Nrb AS VARCHAR2(30 CHAR)) Loan_Nrb
4208 ,Cast(Wd.Vat_Account_NRB As Varchar2(26 Char)) VAT_ACCOUNT_NRB
4209 ,Wd.Modification_Date
4210 from WD_BIM_CURRENT_ACCOUNTS wd
4211 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
4212 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')'
4213 ;
4214 execute immediate vsql;
4215 commit;
4216 Synch_Restart.Log('wykonano:'||vsql);
4217 dbms_stats.gather_table_stats(user,'LC_WD_BIM_CURRENT_ACCOUNTS');
4218 vsql:='select count(*) from LC_WD_BIM_CURRENT_ACCOUNTS';
4219 execute immediate vsql into cnt;
4220 Synch_Restart.Log('Koniec dodawanie ' || 'LC_WD_BIM_CURRENT_ACCOUNTS pobrano:'||cnt||' rekord?w');
4221 end;
4222 -----lc_Wd_Bim_Acc_Balances
4223 /* begin
4224 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Acc_Balances');
4225 vsql:='insert into lc_Wd_Bim_Acc_Balances
4226 (select \*+ DRIVING_SITE(Wd,Ab)*\ Ab.* from WD_BIM_CURRENT_ACCOUNTS Wd
4227 JOIN Wd_Bim_Acc_Balances Ab
4228 ON Ab.Account_Id = Wd.Id
4229 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
4230 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
4231 execute immediate vsql;
4232 commit;
4233 dbms_stats.gather_table_stats('EXION','lc_Wd_Bim_Acc_Balances');
4234 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Acc_Balances');
4235 end;*/
4236 -----lc_Wd_Bim_Acc_Balances
4237 begin
4238 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Acc_Customers');
4239 vsql:='insert into lc_Wd_Bim_Acc_Customers
4240 (select /*+ DRIVING_SITE(Wd,Ac)*/ Ac.* from WD_BIM_CURRENT_ACCOUNTS Wd
4241 JOIN Wd_Bim_Acc_Customers Ac
4242 ON Ac.Account_Id = Wd.Id
4243 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
4244 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
4245 execute immediate vsql;
4246 commit;
4247 Synch_Restart.Log('wykonano:'||vsql);
4248 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Acc_Customers');
4249 vsql:='select count(*) from lc_Wd_Bim_Acc_Customers';
4250 execute immediate vsql into cnt;
4251 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Acc_Customers pobrano:'||cnt||' rekord?w');
4252 end;
4253 Synch_Restart.Log('Koniec pobierania danych ');
4254 -----
4255 Operation := l_Proc || '_UPDATE';
4256 Part_Time := Current_Timestamp;
4257 OPEN c_Update;
4258 LOOP
4259 FETCH c_Update BULK COLLECT
4260 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
4261 Synch_Restart.Log('c_Update cursor fetch ' || Lupdate_Array.Count || ' rows');
4262 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
4263 l_Range_a := 0;
4264 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
4265 WHILE l_Range_a IS NOT NULL
4266 LOOP
4267 FOR i IN l_Range_a .. l_Range_b
4268 LOOP
4269 Tmp_Wd_Id := Lupdate_Array(i).Id;
4270 p_Upd(Lupdate_Array(i));
4271 END LOOP;
4272 -- Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
4273 l_Range_a := l_Range_b + 1;
4274 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
4275 END LOOP;
4276 EXIT WHEN c_Update%NOTFOUND;
4277 END LOOP;
4278 CLOSE c_Update;
4279 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4280 Part_Time := Current_Timestamp;
4281 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
4282 Operation := l_Proc || '_INSERT';
4283 OPEN c_Insert;
4284 LOOP
4285 FETCH c_Insert BULK COLLECT
4286 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
4287 If Linsert_Array.Count > 0 Then
4288 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count*2, v_Seq_From, v_Seq_To );
4289 For i In 1..Linsert_Array.Count
4290 Loop
4291 Linsert_Array(i).Seq := v_Seq_From + (i-1)*2;
4292 End Loop;
4293 End If;
4294 Synch_Restart.Log('c_Insert cursor fetch ' || Linsert_Array.Count || ' rows');
4295 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
4296 l_Range_a := 0;
4297 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
4298 WHILE l_Range_a IS NOT NULL
4299 LOOP
4300 FOR i IN l_Range_a .. l_Range_b
4301 LOOP
4302 Tmp_Wd_Id := Linsert_Array(i).Id;
4303 p_Ins(Linsert_Array(i));
4304 END LOOP;
4305 -- Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
4306 l_Range_a := l_Range_b + 1;
4307 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
4308 END LOOP;
4309 EXIT WHEN c_Insert%NOTFOUND;
4310 END LOOP;
4311 CLOSE c_Insert;
4312 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4313 Part_Time := Current_Timestamp;
4314 --
4315 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
4316 Operation := l_Proc || '_DELETE';
4317 OPEN c_Delete;
4318 LOOP
4319 FETCH c_Delete BULK COLLECT
4320 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
4321 Synch_Restart.Log('c_Delete cursor fetch ' || Ldelete_Array.Count || ' rows');
4322 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
4323 l_Range_a := 0;
4324 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
4325 WHILE l_Range_a IS NOT NULL
4326 LOOP
4327 l_Range_a := l_Range_b + 1;
4328 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
4329 END LOOP;
4330 EXIT WHEN c_Delete%NOTFOUND;
4331 END LOOP;
4332 CLOSE c_Delete;
4333 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4334 --
4335 Operation := l_Proc || '_After_Loops';
4336 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
4337 Synch.Set_Last_Synch_Date(l_Program);
4338 Synch_Restart.End_Step;
4339 EXCEPTION
4340 WHEN OTHERS THEN
4341 Synch_Restart.Error_Log(l_Program
4342 ,Operation || ', Curr_Account_Id: ' || Tmp_Wd_Id || ', ERROR_CODE: ' || SQLERRM);
4343 Synch_Restart.Error_Log(l_Program, Operation);
4344 ROLLBACK;
4345 END Prc_Curr_Accounts;
4346 PROCEDURE Prc_Curr_Acc_Customers AS
4347 l_Proc VARCHAR2(100) := 'PRC_CURR_ACC_CUSTOMERS';
4348 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
4349 Last_Synch_Date DATE;
4350 l_Start_Time DATE;
4351 Operation VARCHAR2(100);
4352 Ln_Buff_Len NUMBER := 0;
4353 l_Range_a NUMBER := 0;
4354 l_Range_b NUMBER := 0;
4355 v_Seq_From Integer;
4356 v_Seq_To Integer;
4357 vsql varchar2(4000);
4358 synch_d varchar2(100);
4359 cnt number;
4360 CURSOR c_Update IS
4361 -- SELECT /*+ driving_site(wd) use_hash(wd,ci,c,ai,cac) */
4362 SELECT
4363 Ai.Extore_Id Account_Id
4364 ,Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', Wd.Role) Role
4365 ,Ci.Extore_Id Customer_Id
4366 ,Cac.Id
4367 FROM LC_Wd_Bim_Acc_Customers Wd
4368 JOIN Customer_Identifiers Ci
4369 ON Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
4370 AND Ci.Key = SYNCH.gv_identifiers_key_value
4371 AND Ci.Value = To_Char(Wd.Customer_Id)
4372 JOIN Customers c
4373 ON c.Bank_Id = Ci.Bank_Id
4374 AND c.Id = Ci.Extore_Id
4375 JOIN Current_Account_Identifiers Ai
4376 ON Ai.Bank_Id = Ci.Bank_Id
4377 AND Ai.Key = SYNCH.gv_identifiers_key_value
4378 AND Ai.Value = To_Char(Wd.Account_Id)
4379 JOIN Current_Account_Customers Cac
4380 ON Cac.Bank_Id = Ci.Bank_Id
4381 AND Cac.Extore_Id = Ai.Extore_Id
4382 AND CAST(Wd.Modification_Date AS TIMESTAMP) > Cac.Modification_Date
4383 WHERE Wd.Modification_Date >= Last_Synch_Date
4384 AND Wd.Modification_Date < l_Start_Time
4385 AND Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', Wd.Role) = 'OWNER';
4386 CURSOR c_Insert IS
4387 -- SELECT /*+ driving_site(wd) use_hash(wd,ci,c,ai,cac) */
4388 SELECT
4389 0 Seq, Ai.Extore_Id Account_Id, 'OWNER' Role, Ci.Extore_Id Customer_Id
4390 FROM LC_Wd_Bim_Acc_Customers Wd
4391 JOIN Customer_Identifiers Ci
4392 ON Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
4393 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
4394 AND Ci.Value = To_Char(Wd.Customer_Id)
4395 JOIN Customers c
4396 ON c.Bank_Id = Ci.Bank_Id
4397 AND c.Id = Ci.Extore_Id
4398 AND c.Status = 'ACTIVE'
4399 JOIN Current_Account_Identifiers Ai
4400 ON Ai.Bank_Id = Ci.Bank_Id
4401 AND Ai.Key = Synch.Gv_Identifiers_Key_Value
4402 AND Ai.Value = To_Char(Wd.Account_Id)
4403 LEFT JOIN Current_Account_Customers Cac
4404 ON Cac.Bank_Id = Ci.Bank_Id
4405 AND Cac.Extore_Id = Ai.Extore_Id
4406 And Cac.Customer_Extore_Id = Ci.Extore_Id
4407 WHERE Wd.Modification_Date >= Last_Synch_Date
4408 AND Wd.Modification_Date < l_Start_Time
4409 AND Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', Wd.Role) = 'OWNER'
4410 AND Cac.Id IS NULL;
4411 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
4412 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
4413 Lupdate_Array Tupdate_Table;
4414 Linsert_Array Tinsert_Table;
4415 BEGIN
4416 Proc_Time := Current_Timestamp;
4417 Synch_Restart.Start_Step;
4418 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
4419 l_Start_Time := Synch_Restart.Get_Start_Time();
4420 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
4421 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
4422 begin
4423 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'LC_Wd_Bim_Acc_Customers');
4424 vsql:='truncate table LC_Wd_Bim_Acc_Customers';
4425 execute immediate vsql;
4426 commit;
4427 Synch_Restart.Log('KOniec czyszczenie ' || 'LC_Wd_Bim_Acc_Customers');
4428 end;
4429 begin
4430 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_CURR_ACC_CUSTOMERS';
4431 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'LC_Wd_Bim_Acc_Customers od:'||synch_d);
4432 vsql:='insert into LC_Wd_Bim_Acc_Customers
4433 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Acc_Customers Wd
4434 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
4435 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
4436 execute immediate vsql;
4437 commit;
4438 Synch_Restart.Log('wykonano:'||vsql);
4439 dbms_stats.gather_table_stats(user,'LC_Wd_Bim_Acc_Customers');
4440 vsql:='select count(*) from LC_Wd_Bim_Acc_Customers';
4441 execute immediate vsql into cnt;
4442 Synch_Restart.Log('Koniec dodawanie ' || 'LC_Wd_Bim_Acc_Customers pobrano:'||cnt||' rekord?w');
4443 end;
4444 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
4445 Operation := l_Proc || '_UPDATE';
4446 Part_Time := Current_Timestamp;
4447 OPEN c_Update;
4448 LOOP
4449 FETCH c_Update BULK COLLECT
4450 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
4451 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
4452 l_Range_a := 0;
4453 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
4454 WHILE l_Range_a IS NOT NULL
4455 LOOP
4456 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
4457 UPDATE Current_Account_Customers c
4458 SET c.Version = c.Version + 1
4459 ,c.Modification_Date = l_Start_Time --Lupdate_Array(i).Modification_Date
4460 ,c.Role = Lupdate_Array(i).Role
4461 WHERE c.Id = Lupdate_Array(i).Id
4462 And c.Role != Lupdate_Array(i).Role
4463 And c.customer_extore_id = Lupdate_Array(i).customer_id;
4464 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
4465 l_Range_a := l_Range_b + 1;
4466 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
4467 END LOOP;
4468 EXIT WHEN c_Update%NOTFOUND;
4469 END LOOP;
4470 CLOSE c_Update;
4471 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4472 Part_Time := Current_Timestamp;
4473 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
4474 Operation := l_Proc || '_INSERT';
4475 OPEN c_Insert;
4476 LOOP
4477 FETCH c_Insert BULK COLLECT
4478 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
4479 If Linsert_Array.Count > 0 Then
4480 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
4481 For i In 1..Linsert_Array.Count
4482 Loop
4483 Linsert_Array(i).Seq := v_Seq_From + (i-1);
4484 End Loop;
4485 End If;
4486 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
4487 l_Range_a := 0;
4488 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
4489 WHILE l_Range_a IS NOT NULL
4490 LOOP
4491 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
4492 INSERT /* APPEND_VALUES*/ INTO Current_Account_Customers c
4493 (c.Id
4494 ,c.Bank_Id
4495 ,c.Version
4496 ,c.Creation_Date
4497 ,c.Modification_Date
4498 ,c.Role
4499 ,c.Extore_Id
4500 ,c.Customer_Extore_Id)
4501 VALUES
4502 (Linsert_Array(i).Seq --e_Id_Seq.Nextval -- ID
4503 ,Synch_Restart.Current_Job_Row.Bank_Id -- BANK_ID
4504 ,0 -- VERSION
4505 ,l_Start_Time --Linsert_Array(i).Modification_Date -- CREATION_DATE
4506 ,l_Start_Time --Linsert_Array(i).Modification_Date -- MODIFICATION_DATE
4507 ,Linsert_Array(i).Role -- ROLE
4508 ,Linsert_Array(i).Account_Id -- EXTORE_ID
4509 ,Linsert_Array(i).Customer_Id -- CUSTOMER_EXTORE_ID
4510 );
4511 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
4512 l_Range_a := l_Range_b + 1;
4513 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
4514 END LOOP;
4515 EXIT WHEN c_Insert%NOTFOUND;
4516 END LOOP;
4517 CLOSE c_Insert;
4518 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4519 Operation := l_Proc || '_After_Loops';
4520 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
4521 Synch.Set_Last_Synch_Date(l_Program);
4522 Synch_Restart.End_Step;
4523 EXCEPTION
4524 WHEN OTHERS THEN
4525 IF SQL%Bulk_Exceptions.Count > 0 THEN
4526 IF Operation = l_Proc || '_INSERT' THEN
4527 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
4528 LOOP
4529 Synch_Restart.Error_Log(l_Program
4530 ,Operation || ', Product_Type_Id: ' || --Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
4531 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
4532 END LOOP;
4533 ELSIF Operation = l_Proc || '_UPDATE' THEN
4534 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
4535 LOOP
4536 Synch_Restart.Error_Log(l_Program
4537 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
4538 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
4539 END LOOP;
4540 END IF;
4541 END IF;
4542 Synch_Restart.Error_Log(l_Program, Operation);
4543 ROLLBACK;
4544 END Prc_Curr_Acc_Customers;
4545 --/* tablicowanie
4546 PROCEDURE Prc_Curr_Acc_Balances AS
4547 l_Proc VARCHAR2(100) := 'PRC_CURR_ACC_BALANCES';
4548 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
4549 Last_Synch_Date DATE;
4550 l_Start_Time DATE;
4551 Operation VARCHAR2(100);
4552 Ln_Buff_Len NUMBER := 0;
4553 Read_Cnt NUMBER := 0;
4554 l_Range_a NUMBER := 0;
4555 l_Range_b NUMBER := 0;
4556 Vn_Updated NUMBER := 0;
4557 Vn_Inserted NUMBER := 0;
4558 Lmain_Array Tab_Acc_Balances := Tab_Acc_Balances();
4559 Vn_Tmp NUMBER;
4560 v_Seq_From Integer;
4561 v_Seq_To Integer;
4562 vsql varchar2(4000);
4563 synch_d varchar2(100);
4564 cnt number;
4565 CURSOR c_Main IS
4566 -- SELECT /*+ driving_site(wd) */
4567 SELECT
4568 Rec_Acc_Balances(To_Char(Wd.Account_Id)
4569 ,Wd.Modification_Date
4570 ,Wd.Available_Balance_Amount
4571 ,Wd.Available_Limit
4572 ,Wd.Balance_Amount
4573 ,Wd.Limit_Assigned
4574 ,Wd.Overdue_Fee_Amount
4575 ,Wd.Hold_Amount
4576 ,Wd.Doc_Auth
4577 ,Wd.Card_Auth
4578 ,Wd.Limit_Exceeded
4579 ,Wd.Limit_Used
4580 )
4581 FROM LC_Wd_Bim_Acc_Balances Wd
4582 WHERE Wd.Modification_Date >= Last_Synch_Date;
4583 CURSOR c_Update IS
4584 SELECT /*+ use_hash(wd,cai,cab) */
4585 Wd.*, Cab.Id Extore_Curr_Acc_Bal_Id, Cai.Extore_Id Extore_Current_Account_Id
4586 FROM TABLE(Lmain_Array) Wd
4587 , Current_Account_Identifiers Cai
4588 , Current_Account_Balances Cab
4589 WHERE Cai.Value = Wd.Account_Id
4590 AND Cai.Key = SYNCH.gv_identifiers_key_value
4591 AND Cai.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
4592 AND Cab.Current_Account_Id = Cai.Extore_Id
4593 AND Cab.Bank_Id = Cai.Bank_Id
4594 AND Cab.Modification_Date < Wd.Modification_Date
4595 AND Wd.Modification_Date < l_Start_Time
4596 AND CAST(Wd.Modification_Date AS TIMESTAMP) > Cab.Modification_Date;
4597 CURSOR c_Insert IS
4598 SELECT /*+ use_hash(wd,cai,cab) */
4599 0 Seq, Wd.*, Cai.Extore_Id Extore_Current_Account_Id
4600 FROM TABLE(Lmain_Array) Wd
4601 JOIN Current_Account_Identifiers Cai
4602 ON Cai.Value = Wd.Account_Id
4603 AND Cai.Key = SYNCH.gv_identifiers_key_value
4604 AND Cai.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
4605 LEFT JOIN Current_Account_Balances Cab
4606 ON Cab.Current_Account_Id = Cai.Extore_Id
4607 AND Cab.Bank_Id = Cai.Bank_Id
4608 WHERE Cab.Id IS NULL
4609 AND Wd.Modification_Date < l_Start_Time;
4610 TYPE Tupdate_Array IS TABLE OF c_Update%ROWTYPE;
4611 TYPE Tinsert_Array IS TABLE OF c_Insert%ROWTYPE;
4612 Lupdate_Array Tupdate_Array;
4613 Linsert_Array Tinsert_Array;
4614 BEGIN
4615 Proc_Time := Current_Timestamp;
4616 Synch_Restart.Start_Step;
4617 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
4618 l_Start_Time := Synch_Restart.Get_Start_Time();
4619 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc || ' RANGE From: ' ||
4620 To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
4621 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
4622 begin
4623 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'LC_Wd_Bim_Acc_Balances');
4624 vsql:='truncate table LC_Wd_Bim_Acc_Balances';
4625 execute immediate vsql;
4626 commit;
4627 Synch_Restart.Log('KOniec czyszczenie ' || 'LC_Wd_Bim_Acc_Balances');
4628 end;
4629 begin
4630 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_CURR_ACC_BALANCES';
4631 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'LC_Wd_Bim_Acc_Balances od:'||synch_d);
4632 vsql:='insert into LC_Wd_Bim_Acc_Balances
4633 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Acc_Balances Wd
4634 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
4635 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
4636 execute immediate vsql;
4637 commit;
4638 Synch_Restart.Log('wykonano:'||vsql);
4639 dbms_stats.gather_table_stats(user,'LC_Wd_Bim_Acc_Balances');
4640 vsql:='select count(*) from LC_Wd_Bim_Acc_Balances';
4641 execute immediate vsql into cnt;
4642 Synch_Restart.Log('Koniec dodawanie ' || 'LC_Wd_Bim_Acc_Balances pobrano:'||cnt||' rekord?w');
4643 end;
4644 Operation := l_Proc || '_MAIN';
4645 Part_Time := Current_Timestamp;
4646 Ln_Buff_Len := 0;
4647 OPEN c_Main;
4648 LOOP
4649 FETCH c_Main BULK COLLECT
4650 INTO Lmain_Array LIMIT 100000;
4651 Read_Cnt := Read_Cnt + Lmain_Array.Count;
4652 Synch_Restart.Log(3
4653 ,l_Proc || '_MAIN' || ' Readed: ' || Read_Cnt || ' Updated: ' || Vn_Updated || ' Inserted: ' ||
4654 Vn_Inserted || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4655 Part_Time := Current_Timestamp;
4656 Synch_Restart.Counter_Log(0, Lmain_Array.Count, 0);
4657 Operation := l_Proc || '_UPDATE';
4658 OPEN c_Update;
4659 LOOP
4660 FETCH c_Update BULK COLLECT
4661 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
4662 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
4663 l_Range_a := 0;
4664 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
4665 WHILE l_Range_a IS NOT NULL
4666 LOOP
4667 BEGIN
4668 SELECT 1 INTO Vn_Tmp FROM Dual WHERE 1 = 2;
4669 EXCEPTION
4670 WHEN OTHERS THEN
4671 NULL;
4672 END;
4673 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
4674 UPDATE Current_Account_Balances c
4675 SET c.Current_Account_Id = Lupdate_Array(i).Extore_Current_Account_Id
4676 ,c.Modification_Date = l_Start_Time --Lupdate_Array(i).Modification_Date
4677 ,c.Available_Balance_Amount = Lupdate_Array(i).Available_Balance_Amount
4678 -- ,c.Total_Auth_Amount = Lupdate_Array(i).Total_Auth_Amount
4679 ,c.Available_Limit = Lupdate_Array(i).Available_Limit
4680 ,c.Balance_Amount = Lupdate_Array(i).Balance_Amount
4681 ,c.Limit_Assigned = Lupdate_Array(i).Limit_Assigned
4682 ,c.Overdue_Fee_Amount = Lupdate_Array(i).Overdue_Fee_Amount
4683 ,c.Hold_Amount = Lupdate_Array(i).Hold_Amount
4684 ,c.Doc_Auth = Lupdate_Array(i).Doc_Auth
4685 ,c.Card_Auth = Lupdate_Array(i).Card_Auth
4686 ,c.Limit_Exceeded = Lupdate_Array(i).Limit_Exceeded
4687 ,c.Limit_Used = Lupdate_Array(i).Limit_Used
4688 ,c.Version = c.Version + 1
4689 WHERE c.Id = Lupdate_Array(i).Extore_Curr_Acc_Bal_Id;
4690 Vn_Updated := Vn_Updated + SQL%ROWCOUNT;
4691 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
4692 l_Range_a := l_Range_b + 1;
4693 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
4694 END LOOP;
4695 EXIT WHEN c_Update%NOTFOUND;
4696 END LOOP;
4697 CLOSE c_Update;
4698 Synch_Restart.Log(3
4699 ,Operation || ' Readed: ' || Lmain_Array.Count || ' Updated: ' || Vn_Updated ||
4700 ' Inserted: ' || Vn_Inserted || ' czas: ' ||
4701 Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4702 Part_Time := Current_Timestamp;
4703 Operation := l_Proc || '_INSERT';
4704 OPEN c_Insert;
4705 LOOP
4706 FETCH c_Insert BULK COLLECT
4707 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
4708 If Linsert_Array.Count > 0 Then
4709 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
4710 For i In 1..Linsert_Array.Count
4711 Loop
4712 Linsert_Array(i).Seq := v_Seq_From + (i-1);
4713 End Loop;
4714 End If;
4715 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
4716 l_Range_a := 0;
4717 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
4718 WHILE l_Range_a IS NOT NULL
4719 LOOP
4720 BEGIN
4721 SELECT 1 INTO Vn_Tmp FROM Dual WHERE 1 = 2;
4722 EXCEPTION
4723 WHEN OTHERS THEN
4724 NULL;
4725 END;
4726 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
4727 INSERT /* APPEND_VALUES*/ INTO Current_Account_Balances c
4728 (c.Current_Account_Id
4729 ,c.Modification_Date
4730 ,c.Available_Balance_Amount
4731 ,c.Available_Limit
4732 ,c.Balance_Amount
4733 ,c.Limit_Assigned
4734 ,c.Overdue_Fee_Amount
4735 ,c.Hold_Amount
4736 ,c.Doc_Auth
4737 ,c.Card_Auth
4738 ,c.Limit_Exceeded
4739 ,c.Limit_Used
4740 ,c.Id
4741 ,c.Version
4742 ,c.Bank_Id
4743 ,c.Creation_Date)
4744 VALUES
4745 (Linsert_Array(i).Extore_Current_Account_Id
4746 ,l_Start_Time
4747 ,Linsert_Array(i).Available_Balance_Amount
4748 ,Linsert_Array(i).Available_Limit
4749 ,Linsert_Array(i).Balance_Amount
4750 ,Linsert_Array(i).Limit_Assigned
4751 ,Linsert_Array(i).Overdue_Fee_Amount
4752 ,Linsert_Array(i).Hold_Amount
4753 ,Linsert_Array(i).Doc_Auth
4754 ,Linsert_Array(i).Card_Auth
4755 ,Linsert_Array(i).Limit_Exceeded
4756 ,Linsert_Array(i).Limit_Used
4757 ,Linsert_Array(i).Seq --e_Id_Seq.Nextval
4758 ,0
4759 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
4760 ,l_Start_Time);
4761 Vn_Inserted := Vn_Inserted + SQL%ROWCOUNT;
4762 Synch_Restart.Counter_Log(0, 0, Vn_Inserted);
4763 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
4764 l_Range_a := l_Range_b + 1;
4765 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
4766 END LOOP;
4767 EXIT WHEN c_Insert%NOTFOUND;
4768 END LOOP;
4769 CLOSE c_Insert;
4770 Synch_Restart.Log(3
4771 ,Operation || ' Readed: ' || Lmain_Array.Count || ' Updated: ' || Vn_Updated ||
4772 ' Inserted: ' || Vn_Inserted || ' czas: ' ||
4773 Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4774 Part_Time := Current_Timestamp;
4775 EXIT WHEN c_Main%NOTFOUND;
4776 END LOOP;
4777 COMMIT;
4778 CLOSE c_Main;
4779 Operation := l_Proc || '_MAIN';
4780 Synch_Restart.Log(3
4781 ,Operation || 'Readed: ' || Read_Cnt || ' Updated: ' || Vn_Updated || ' Inserted: ' ||
4782 Vn_Inserted || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4783 --
4784 Operation := l_Proc || '_After_Loops';
4785 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
4786 Synch.Set_Last_Synch_Date(l_Program);
4787 Synch_Restart.End_Step;
4788 EXCEPTION
4789 WHEN OTHERS THEN
4790 Synch_Restart.Error_Log(l_Program, Operation || ', ERROR_CODE: ' || SQLERRM);
4791 IF SQL%Bulk_Exceptions.Count > 0 THEN
4792 IF Operation = l_Proc || '_INSERT' THEN
4793 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
4794 LOOP
4795 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
4796 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
4797 END LOOP;
4798 ELSIF Operation = l_Proc || '_UPDATE' THEN
4799 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
4800 LOOP
4801 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
4802 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
4803 END LOOP;
4804 ELSIF Operation = l_Proc || '_DELETE' THEN
4805 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
4806 LOOP
4807 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
4808 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
4809 END LOOP;
4810 END IF;
4811 END IF;
4812 Synch_Restart.Error_Log(l_Program, Operation);
4813 ROLLBACK;
4814 END Prc_Curr_Acc_Balances;
4815 --*/
4816 PROCEDURE Prc_Curr_Acc_Statement_Params AS
4817 l_Proc VARCHAR2(100) := 'PRC_CURR_ACC_STATEMENT_PARAMS';
4818 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
4819 Last_Synch_Date DATE;
4820 l_Start_Time DATE;
4821 Operation VARCHAR2(100);
4822 Ln_Buff_Len NUMBER := 0;
4823 l_Range_a NUMBER := 0;
4824 l_Range_b NUMBER := 0;
4825 v_Seq_From Integer;
4826 v_Seq_To Integer;
4827 vsql varchar2(4000);
4828 synch_d varchar2(100);
4829 cnt number;
4830 CURSOR c_Update IS
4831 -- SELECT /*+ driving_site(wd) use_hash(wd,cai,Sp) */
4832 SELECT
4833 Cai.Extore_Id Extore_Account_Id
4834 ,CAST(CASE
4835 WHEN Decode(Nvl(To_Char(Wd.Is_Www_Statement), 'NULL') || ' ' ||
4836 Nvl(To_Char(Wd.Way_Of_Stmt_Receive), 'NULL')
4837 ,'0 NULL','NONE'
4838 ,'0 1' ,'NONE'
4839 ,'other') = 'NONE' THEN NULL
4840 ELSE
4841 Decode(Nvl(To_Char(Wd.Statement_Frequency), 'NULL') || ' ' ||
4842 Nvl(To_Char(Wd.Statement_Period_Type), 'NULL')
4843 ,'1 NULL','DAILY'
4844 ,'2 1' ,'DAILY'
4845 ,'2 2' ,'MONTHLY'
4846 ,NULL)
4847 END AS VARCHAR2(32 CHAR)) Period_Type
4848 ,CAST(Wd.Statement_Period_Count AS NUMBER(2)) Statement_Period_Count
4849 ,CAST(Decode(Nvl(To_Char(Wd.Is_Www_Statement), 'NULL') || ' ' ||
4850 Nvl(To_Char(Wd.Way_Of_Stmt_Receive), 'NULL')
4851 ,'0 NULL','NONE'
4852 ,'0 1' ,'NONE'
4853 ,'0 2' ,'MAIL'
4854 ,'1 2' ,'MAIL'
4855 ,'1 NULL','ONLINE'
4856 ,'1 1' ,'ONLINE'
4857 ,NULL) AS VARCHAR2(32 CHAR)) Distribution_Channel
4858 ,Sp.Id
4859 FROM LC_Wd_Bim_Ca_Statement_Params Wd
4860 JOIN Current_Account_Identifiers Cai
4861 ON To_Char(Wd.Account_Id) = Cai.Value
4862 AND Cai.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
4863 AND Cai.Key = SYNCH.gv_identifiers_key_value
4864 JOIN Statement_Params Sp
4865 ON Cai.Extore_Id = Sp.Product_Id
4866 AND Sp.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
4867 AND CAST(Wd.Modification_Date AS TIMESTAMP(6)) > Sp.Modification_Date
4868 WHERE Wd.Modification_Date >= Last_Synch_Date
4869 AND Wd.Modification_Date < l_Start_Time;
4870 CURSOR c_Insert IS
4871 -- SELECT /*+ driving_site(wd) use_hash(wd,cai,Sp) */
4872 SELECT
4873 0 Seq
4874 ,Cai.Extore_Id Extore_Account_Id
4875 ,CAST(CASE
4876 WHEN Decode(Nvl(To_Char(Wd.Is_Www_Statement), 'NULL') || ' ' ||
4877 Nvl(To_Char(Wd.Way_Of_Stmt_Receive), 'NULL')
4878 ,'0 NULL' ,'NONE'
4879 ,'0 1' ,'NONE'
4880 ,'other') = 'NONE' THEN
4881 NULL
4882 ELSE
4883 Decode(Nvl(To_Char(Wd.Statement_Frequency), 'NULL') || ' ' ||
4884 Nvl(To_Char(Wd.Statement_Period_Type), 'NULL')
4885 ,'1 NULL' ,'DAILY'
4886 ,'2 1' ,'DAILY'
4887 ,'2 2' ,'MONTHLY'
4888 ,NULL)
4889 END AS VARCHAR2(32 CHAR)) Period_Type
4890 ,CAST(Wd.Statement_Period_Count AS NUMBER(2)) Statement_Period_Count
4891 ,CAST(Decode(Nvl(To_Char(Wd.Is_Www_Statement), 'NULL') || ' ' ||
4892 Nvl(To_Char(Wd.Way_Of_Stmt_Receive), 'NULL')
4893 ,'0 NULL' ,'NONE'
4894 ,'0 1' ,'NONE'
4895 ,'0 2' ,'MAIL'
4896 ,'1 2' ,'MAIL'
4897 ,'1 NULL' ,'ONLINE'
4898 ,'1 1' ,'ONLINE'
4899 ,NULL) AS VARCHAR2(32 CHAR)) Distribution_Channel
4900 FROM LC_Wd_Bim_Ca_Statement_Params Wd
4901 JOIN Current_Account_Identifiers Cai
4902 ON To_Char(Wd.Account_Id) = Cai.Value
4903 AND Cai.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
4904 AND Cai.Key = SYNCH.gv_identifiers_key_value
4905 LEFT JOIN Statement_Params Sp
4906 ON Cai.Extore_Id = Sp.Product_Id
4907 AND Sp.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
4908 WHERE Sp.Id IS NULL;
4909 CURSOR c_Delete IS
4910 SELECT 1 FROM Dual c WHERE 1 = 2;
4911 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
4912 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
4913 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
4914 Lupdate_Array Tupdate_Table;
4915 Linsert_Array Tinsert_Table;
4916 Ldelete_Array Tdelete_Table;
4917 BEGIN
4918 Proc_Time := Current_Timestamp;
4919 Synch_Restart.Start_Step;
4920 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
4921 l_Start_Time := Synch_Restart.Get_Start_Time();
4922 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
4923 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
4924 begin
4925 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Ca_Statement_Params');
4926 vsql:='truncate table lc_Wd_Bim_Ca_Statement_Params';
4927 execute immediate vsql;
4928 commit;
4929 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Ca_Statement_Params');
4930 end;
4931 begin
4932 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_CURR_ACC_STATEMENT_PARAMS';
4933 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Ca_Statement_Params od:'||synch_d);
4934 vsql:='insert into lc_Wd_Bim_Ca_Statement_Params
4935 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Ca_Statement_Params Wd
4936 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
4937 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
4938 execute immediate vsql;
4939 commit;
4940 Synch_Restart.Log('wykonano:'||vsql);
4941 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Ca_Statement_Params');
4942 vsql:='select count(*) from lc_Wd_Bim_Ca_Statement_Params';
4943 execute immediate vsql into cnt;
4944 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Ca_Statement_Params pobrano:'||cnt||' rekord?w');
4945 end;
4946 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
4947 Operation := l_Proc || '_UPDATE';
4948 Part_Time := Current_Timestamp;
4949 OPEN c_Update;
4950 LOOP
4951 FETCH c_Update BULK COLLECT
4952 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
4953 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
4954 l_Range_a := 0;
4955 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
4956 WHILE l_Range_a IS NOT NULL
4957 LOOP
4958 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
4959 UPDATE Statement_Params c
4960 SET c.Product_Id = Lupdate_Array(i).Extore_Account_Id
4961 ,c.Modification_Date = l_Start_Time --Lupdate_Array(i).Modification_Date
4962 ,c.Period_Type = Lupdate_Array(i).Period_Type
4963 ,c.Period_Count = Lupdate_Array(i).Statement_Period_Count
4964 -- ,c.Statement_Frequency = Lupdate_Array(i).Statement_Frequency
4965 ,c.Distribution_Channel = Lupdate_Array(i).Distribution_Channel
4966 ,c.Version = c.Version + 1
4967 WHERE c.Id = Lupdate_Array(i).Id;
4968 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
4969 l_Range_a := l_Range_b + 1;
4970 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
4971 END LOOP;
4972 EXIT WHEN c_Update%NOTFOUND;
4973 END LOOP;
4974 CLOSE c_Update;
4975 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
4976 Part_Time := Current_Timestamp;
4977 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
4978 Operation := l_Proc || '_INSERT';
4979 OPEN c_Insert;
4980 LOOP
4981 FETCH c_Insert BULK COLLECT
4982 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
4983 If Linsert_Array.Count > 0 Then
4984 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
4985 For i In 1..Linsert_Array.Count
4986 Loop
4987 Linsert_Array(i).Seq := v_Seq_From + (i-1);
4988 End Loop;
4989 End If;
4990 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
4991 l_Range_a := 0;
4992 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
4993 WHILE l_Range_a IS NOT NULL
4994 LOOP
4995 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
4996 INSERT /* APPEND_VALUES*/ INTO Statement_Params c
4997 (c.Product_Id
4998 ,c.Modification_Date
4999 ,c.Period_Type
5000 ,c.Period_Count
5001 -- ,c.Statement_Frequency
5002 ,c.Distribution_Channel
5003 ,c.Id
5004 ,c.Version
5005 ,c.Bank_Id
5006 ,c.Creation_Date)
5007 VALUES
5008 (Linsert_Array(i).Extore_Account_Id
5009 ,l_Start_Time
5010 ,Linsert_Array(i).Period_Type
5011 ,Linsert_Array(i).Statement_Period_Count
5012 -- ,Linsert_Array(i).Statement_Frequency
5013 ,Linsert_Array(i).Distribution_Channel
5014 ,Linsert_Array(i).Seq --e_Id_Seq.Nextval
5015 ,0 --VERSION
5016 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
5017 ,l_Start_Time);
5018 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
5019 l_Range_a := l_Range_b + 1;
5020 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
5021 END LOOP;
5022 EXIT WHEN c_Insert%NOTFOUND;
5023 END LOOP;
5024 CLOSE c_Insert;
5025 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
5026 Part_Time := Current_Timestamp;
5027 --
5028 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
5029 Operation := l_Proc || '_DELETE';
5030 OPEN c_Delete;
5031 LOOP
5032 FETCH c_Delete BULK COLLECT
5033 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
5034 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
5035 l_Range_a := 0;
5036 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
5037 WHILE l_Range_a IS NOT NULL
5038 LOOP
5039 l_Range_a := l_Range_b + 1;
5040 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
5041 END LOOP;
5042 EXIT WHEN c_Delete%NOTFOUND;
5043 END LOOP;
5044 CLOSE c_Delete;
5045 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
5046 --
5047 Operation := l_Proc || '_After_Loops';
5048 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
5049 Synch.Set_Last_Synch_Date(l_Program);
5050 Synch_Restart.End_Step;
5051 EXCEPTION
5052 WHEN OTHERS THEN
5053 IF SQL%Bulk_Exceptions.Count > 0 THEN
5054 IF Operation = l_Proc || '_INSERT' THEN
5055 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
5056 LOOP
5057 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
5058 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
5059 END LOOP;
5060 ELSIF Operation = l_Proc || '_UPDATE' THEN
5061 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
5062 LOOP
5063 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
5064 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
5065 END LOOP;
5066 ELSIF Operation = l_Proc || '_DELETE' THEN
5067 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
5068 LOOP
5069 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
5070 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
5071 END LOOP;
5072 END IF;
5073 END IF;
5074 Synch_Restart.Error_Log(l_Program, Operation);
5075 ROLLBACK;
5076 END Prc_Curr_Acc_Statement_Params;
5077 PROCEDURE Prc_Loans AS
5078 l_Proc VARCHAR2(100) := 'PRC_LOANS';
5079 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
5080 Last_Synch_Date DATE;
5081 l_Start_Time DATE;
5082 Operation VARCHAR2(100);
5083 Ln_Buff_Len NUMBER := 0;
5084 l_Range_a NUMBER := 0;
5085 l_Range_b NUMBER := 0;
5086 Tmp_Wd_Id NUMBER;
5087 v_Seq_From Integer;
5088 v_Seq_To Integer;
5089vsql varchar2(4000);
5090 synch_d varchar2(100);
5091 cnt number;
5092 CURSOR c_Update Is
5093 With Lns As (
5094 SELECT /*+use_hash( li,l) */
5095 Li.Value, Li.Extore_Id, l.Modification_Date
5096 FROM Loan_Identifiers Li
5097 , Loans l
5098 WHERE Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5099 AND Li.Key = Synch.Gv_Identifiers_Key_Value
5100 AND l.Bank_Id = Li.Bank_Id
5101 AND l.Id = Li.Extore_Id
5102 )
5103 , Cust As (
5104 SELECT /*+use_hash( ci,c) */
5105 Ci.Value, Ci.Extore_Id
5106 FROM Customer_Identifiers Ci
5107 , Customers c
5108 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5109 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
5110 AND c.Bank_Id = Ci.Bank_Id
5111 AND c.Id = Ci.Extore_Id
5112 )
5113 --SELECT /*+ driving_site(wd) use_hash(wd,lns) */
5114 SELECT
5115 Distinct
5116 CAST(Wd.Loan_Id AS NUMBER(19)) Loan_Id
5117 ,Lns.Extore_Id Extore_Loan_Id
5118 ,CAST(Wd.Modification_Date AS TIMESTAMP) Modification_Date
5119 ,CAST(Wd.Total_Amount AS NUMBER(12, 2)) Total_Amount
5120 ,Synch.Get_Dict('LOAN_STATUS', Wd.Status) Status
5121 ,CAST(Wd.Prod_Type AS VARCHAR2(64 CHAR)) Prod_Type
5122 ,CAST(Wd.Description AS VARCHAR2(40 CHAR)) Description
5123 ,Synch.Get_Dict('LOAN_TYPE', Wd.Prod_Group_Type) Prod_Group_Type
5124 ,CAST(Wd.Contract_Ref_Number AS VARCHAR2(20 CHAR)) Contract_Ref_Number
5125 ,CAST(Wd.Contract_Number AS VARCHAR2(50 CHAR)) Contract_Number
5126 ,CAST(Wd.Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
5127 ,CAST(Wd.Interest_Rate AS NUMBER(12, 2)) Interest_Rate
5128 ,CAST(Wd.Nrb AS VARCHAR2(26 CHAR)) Nrb
5129 ,CAST(Wd.Is_Fixed AS VARCHAR2(1 CHAR)) Is_Fixed
5130 ,CAST(Wd.Modulo AS VARCHAR2(8 CHAR)) Modulo
5131 ,CAST(Wd.Prod_Type_Id AS VARCHAR2(64 CHAR)) Prod_Type_Id
5132 ,CAST(Wd.Prod_Name AS VARCHAR2(64 CHAR)) Prod_Name
5133 ,CAST(Wd.Is_Excluded AS NUMBER(1)) Is_Excluded
5134 ,CAST(Wd.Expected_End_Date AS TIMESTAMP) Expected_End_Date
5135 ,CAST(Wd.Start_Date AS TIMESTAMP) Start_Date
5136 ,CAST(Wd.End_Date AS TIMESTAMP) End_Date
5137 ,CAST(Wd.Cycle_Length AS NUMBER(5)) Cycle_Length
5138 ,CAST(Wd.Cycle_Unit AS VARCHAR2(32 CHAR)) Cycle_Unit
5139 ,CAST(Wd.Capital_Cycle_Length AS NUMBER(5)) Capital_Cycle_Length
5140 ,CAST(Wd.Capital_Cycle_Unit AS VARCHAR2(32 CHAR)) Capital_Cycle_Unit
5141 ,CAST(Wd.Interest_Cycle_Length AS NUMBER(5)) Interest_Cycle_Length
5142 ,CAST(Wd.Interest_Cycle_Unit AS VARCHAR2(32 CHAR)) Interest_Cycle_Unit
5143 ,CAST(Wd.Capital_Instalment_Date AS TIMESTAMP) Capital_Instalment_Date
5144 ,CAST(Wd.Capital_Amount AS NUMBER(12, 2)) Org_Capital_Amount
5145 ,CAST(Wd.Interest_Instalment_Date AS TIMESTAMP) Interest_Instalment_Date
5146 ,CAST(Wd.Interest_Amount AS NUMBER(12, 2)) Org_Interest_Amount
5147 ,CAST(Wd.Fee_Date AS TIMESTAMP) Fee_Date
5148 ,CAST(Wd.Fee_Amount AS NUMBER(12, 2)) Org_Fee_Amount
5149 ,CAST(Wd.Instalment_Amount AS NUMBER(17, 2)) Org_Instalment_Amount
5150 ,Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) Instalment_Date
5151 ,CAST(CASE
5152 WHEN Wd.Capital_Instalment_Date IS NOT NULL
5153 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) =
5154 Wd.Capital_Instalment_Date Then Wd.Capital_Amount
5155 Else NULL
5156 END AS NUMBER(12, 2)) Capital_Amount
5157 ,CAST(CASE
5158 WHEN Wd.Interest_Instalment_Date IS NOT NULL
5159 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) =
5160 Wd.Interest_Instalment_Date Then Wd.Interest_Amount
5161 Else NULL
5162 END AS NUMBER(12, 2)) Interest_Amount
5163 ,CAST(CASE
5164 WHEN Wd.Fee_Date IS NOT NULL
5165 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) = Wd.Fee_Date
5166 Then Wd.Fee_Amount
5167 Else NULL
5168 END AS NUMBER(12, 2)) Fee_Amount
5169 ,CAST(CASE
5170 WHEN Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) IS NOT NULL THEN
5171 CASE
5172 WHEN Wd.Capital_Instalment_Date IS NOT NULL
5173 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) =
5174 Wd.Capital_Instalment_Date Then Wd.Capital_Amount
5175 Else 0
5176 END + CASE
5177 WHEN Wd.Interest_Instalment_Date IS NOT NULL
5178 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) =
5179 Wd.Interest_Instalment_Date Then Wd.Interest_Amount
5180 Else 0
5181 END + CASE
5182 WHEN Wd.Fee_Amount IS NOT NULL
5183 AND Greatest(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) = Wd.Fee_Date
5184 Then Wd.Fee_Amount
5185 Else 0
5186 END
5187 Else NULL
5188 END AS NUMBER(17, 2)) Instalment_Amount
5189 ,CAST(Wd.Tranche_Amount AS NUMBER(12, 2)) Tranche_Amount
5190 ,CAST(Wd.Tranche_Date AS TIMESTAMP) Tranche_Date
5191 FROM lc_Wd_Bim_Loans Wd
5192 JOIN Lns
5193 ON Lns.Value = To_Char(Wd.Loan_Id)
5194 AND Lns.Modification_Date < CAST(Wd.Modification_Date AS TIMESTAMP)
5195-- JOIN Wd_Bim_Loan_Customers Wdlc
5196-- ON Wd.Loan_Id = Wdlc.Loan_Id
5197-- AND Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', To_Char(Wdlc.Role)) = 'OWNER'
5198-- JOIN Cust
5199-- ON Cust.Value = To_Char(Wdlc.Customer_Id)
5200 WHERE Wd.Status IN (2, 5)
5201 AND Wd.Prod_Group_Type NOT IN ('1', '4')
5202 AND Wd.Modification_Date >= Last_Synch_Date
5203 AND Wd.Modification_Date < l_Start_Time;
5204 CURSOR c_Insert IS
5205 With Cust As (
5206 SELECT /*+ USE_HASH(CI,C) */
5207 Ci.Value
5208 FROM Customer_Identifiers Ci
5209 , Customers c
5210 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5211 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
5212 AND c.Bank_Id = Ci.Bank_Id
5213 AND c.Id = Ci.Extore_Id
5214 And c.Status = 'ACTIVE'
5215 ), Li As (
5216 SELECT VALUE
5217 FROM Loan_Identifiers
5218 WHERE Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5219 AND Key = Synch.Gv_Identifiers_Key_Value
5220 )
5221 --SELECT /*+ driving_site(wd) driving_site(blb) driving_site(lc) use_hash(wd,li,Cust, Blb.lc) */
5222 SELECT
5223 Distinct
5224 0 Seq
5225 ,CAST(Wd.Loan_Id AS NUMBER(19)) Loan_Id
5226 ,CAST(Wd.Modification_Date AS TIMESTAMP) Modification_Date
5227 ,CAST(Wd.Total_Amount AS NUMBER(12, 2)) Total_Amount
5228 ,Synch.Get_Dict('LOAN_STATUS', Wd.Status) Status
5229 ,CAST(Wd.Prod_Type AS VARCHAR2(64 CHAR)) Prod_Type
5230 ,CAST(Wd.Description AS VARCHAR2(40 CHAR)) Description
5231 ,Synch.Get_Dict('LOAN_TYPE', Wd.Prod_Group_Type) Prod_Group_Type
5232 ,CAST(Wd.Contract_Ref_Number AS VARCHAR2(20 CHAR)) Contract_Ref_Number
5233 ,CAST(Wd.Contract_Number AS VARCHAR2(50 CHAR)) Contract_Number
5234 ,CAST(Wd.Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
5235 ,CAST(Wd.Interest_Rate AS NUMBER(12, 2)) Interest_Rate
5236 ,CAST(Wd.Nrb AS VARCHAR2(26 CHAR)) Nrb
5237 ,CAST(Wd.Is_Fixed AS VARCHAR2(1 CHAR)) Is_Fixed
5238 ,CAST(Wd.Modulo AS VARCHAR2(8 CHAR)) Modulo
5239 ,CAST(Wd.Prod_Type_Id AS VARCHAR2(64 CHAR)) Prod_Type_Id
5240 ,CAST(Wd.Prod_Name AS VARCHAR2(64 CHAR)) Prod_Name
5241 ,CAST(Wd.Is_Excluded AS NUMBER(1)) Is_Excluded
5242 ,CAST(Wd.Expected_End_Date AS TIMESTAMP) Expected_End_Date
5243 ,CAST(Wd.Start_Date AS TIMESTAMP) Start_Date
5244 ,CAST(Wd.End_Date AS TIMESTAMP) End_Date
5245 ,CAST(Wd.Cycle_Length AS NUMBER(5)) Cycle_Length
5246 ,CAST(Wd.Cycle_Unit AS VARCHAR2(32 CHAR)) Cycle_Unit
5247 ,CAST(Wd.Capital_Cycle_Length AS NUMBER(5)) Capital_Cycle_Length
5248 ,CAST(Wd.Capital_Cycle_Unit AS VARCHAR2(32 CHAR)) Capital_Cycle_Unit
5249 ,CAST(Wd.Interest_Cycle_Length AS NUMBER(5)) Interest_Cycle_Length
5250 ,CAST(Wd.Interest_Cycle_Unit AS VARCHAR2(32 CHAR)) Interest_Cycle_Unit
5251 ,CAST(Wd.Capital_Instalment_Date AS TIMESTAMP) Capital_Instalment_Date
5252 ,CAST(Wd.Capital_Amount AS NUMBER(12, 2)) Org_Capital_Amount
5253 ,CAST(Wd.Interest_Instalment_Date AS TIMESTAMP) Interest_Instalment_Date
5254 ,CAST(Wd.Interest_Amount AS NUMBER(12, 2)) Org_Interest_Amount
5255 ,CAST(Wd.Fee_Date AS TIMESTAMP) Fee_Date
5256 ,CAST(Wd.Fee_Amount AS NUMBER(12, 2)) Org_Fee_Amount
5257 ,CAST(Wd.Instalment_Amount AS NUMBER(17, 2)) Org_Instalment_Amount
5258 ,Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) Instalment_Date
5259 ,CAST(CASE
5260 WHEN Wd.Capital_Instalment_Date IS NOT NULL
5261 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) =
5262 Wd.Capital_Instalment_Date
5263 Then Wd.Capital_Amount
5264 Else NULL
5265 END AS NUMBER(12, 2)
5266 ) Capital_Amount
5267 ,CAST(CASE
5268 WHEN Wd.Interest_Instalment_Date IS NOT NULL
5269 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) =
5270 Wd.Interest_Instalment_Date
5271 Then Wd.Interest_Amount
5272 Else NULL
5273 END AS NUMBER(12, 2)
5274 ) Interest_Amount
5275 ,CAST(CASE
5276 WHEN Wd.Fee_Date IS NOT NULL
5277 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) = Wd.Fee_Date
5278 Then Wd.Fee_Amount
5279 Else NULL
5280 END AS NUMBER(12, 2)
5281 ) Fee_Amount
5282 ,CAST(CASE
5283 WHEN Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) IS NOT NULL THEN
5284 CASE
5285 WHEN Wd.Capital_Instalment_Date IS NOT NULL
5286 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) =
5287 Wd.Capital_Instalment_Date Then Wd.Capital_Amount
5288 Else 0
5289 End
5290 + CASE
5291 WHEN Wd.Interest_Instalment_Date IS NOT NULL
5292 AND Synch.Nleast(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) =
5293 Wd.Interest_Instalment_Date Then Wd.Interest_Amount
5294 Else 0
5295 END
5296 + CASE
5297 WHEN Wd.Fee_Amount IS NOT NULL
5298 AND Greatest(Wd.Capital_Instalment_Date, Wd.Interest_Instalment_Date, Wd.Fee_Date) = Wd.Fee_Date
5299 Then Wd.Fee_Amount
5300 Else 0
5301 END
5302 ELSE NULL
5303 END AS NUMBER(17, 2)
5304 ) Instalment_Amount
5305 ,CAST(Wd.Tranche_Amount AS NUMBER(12, 2)) Tranche_Amount
5306 ,CAST(Wd.Tranche_Date AS TIMESTAMP) Tranche_Date
5307 FROM lc_Wd_Bim_Loans Wd
5308 /* Join lc_Wd_Bim_Loan_Balances Blb
5309 On Blb.Loan_Id = Wd.Loan_Id*/
5310 Join lc_Wd_Bim_Loan_Customers Lc
5311 On Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', To_Char(Lc.Role)) = 'OWNER'
5312 AND Lc.Loan_Id = Wd.Loan_Id
5313 Join Cust
5314 On Cust.Value = To_Char(Lc.Customer_Id)
5315 WHERE Not EXISTS( Select 1 From Li Where Li.Value = To_Char(Wd.Loan_Id ) )
5316 And Wd.Status IN (2, 5)
5317 AND Wd.Prod_Group_Type NOT IN ('1', '4')
5318 AND Wd.Modification_Date >= Last_Synch_Date
5319 AND Wd.Modification_Date < l_Start_Time;
5320 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
5321 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
5322 Lupdate_Array Tupdate_Table;
5323 Linsert_Array Tinsert_Table;
5324 PROCEDURE p_Upd(r c_Update%ROWTYPE) AS
5325 Vn_Schedule_Id e_Loan_Schedules.Id%TYPE;
5326 Vn_Rows NUMBER := 0;
5327 BEGIN
5328 UPDATE Loans l
5329 SET l.Version = l.Version + 1
5330 ,l.Modification_Date = l_Start_Time
5331 ,l.Total_Amount = r.Total_Amount
5332 ,l.Status = r.Status
5333 ,l.Prod_Type = r.Prod_Type
5334 ,l.Description = r.Description
5335 ,l.Prod_Group_Type = r.Prod_Group_Type
5336 ,l.Contract_Ref_Number = r.Contract_Ref_Number
5337 ,l.Contract_Number = r.Contract_Number
5338 ,l.Currency_Code_a = r.Currency_Code_a
5339 ,l.Interest_Rate = r.Interest_Rate
5340 ,l.Nrb = r.Nrb
5341 ,l.Is_Fixed = r.Is_Fixed
5342 ,l.Modulo = r.Modulo
5343 ,l.Prod_Type_Id = r.Prod_Type_Id
5344 ,l.Prod_Name = r.Prod_Name
5345 ,l.Is_Excluded = r.Is_Excluded
5346 WHERE l.Id = r.Extore_Loan_Id;
5347 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5348 MERGE INTO e_Loan_Schedules Ls
5349 USING (SELECT '1' FROM Dual) s
5350 ON (Ls.Loan_Id = r.Extore_Loan_Id AND Ls.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id)
5351 WHEN MATCHED THEN
5352 UPDATE
5353 SET Ls.Version = Ls.Version + 1
5354 ,Ls.Modification_Date = l_Start_Time
5355 ,Ls.Expected_End_Date = r.Expected_End_Date
5356 ,Ls.Start_Date = r.Start_Date
5357 ,Ls.End_Date = r.End_Date
5358 ,Ls.Cycle_Length = r.Cycle_Length
5359 ,Ls.Cycle_Unit = r.Cycle_Unit
5360 ,Ls.Capital_Cycle_Length = r.Capital_Cycle_Length
5361 ,Ls.Capital_Cycle_Unit = r.Capital_Cycle_Unit
5362 ,Ls.Interest_Cycle_Length = r.Interest_Cycle_Length
5363 ,Ls.Interest_Cycle_Unit = r.Interest_Cycle_Unit
5364 WHEN NOT MATCHED THEN
5365 INSERT
5366 (Ls.Id
5367 ,Ls.Version
5368 ,Ls.Bank_Id
5369 ,Ls.Loan_Id
5370 ,Ls.Creation_Date
5371 ,Ls.Modification_Date
5372 ,Ls.Start_Date
5373 ,Ls.End_Date
5374 ,Ls.Schedule_Type
5375 ,Ls.Instalment_Day
5376 ,Ls.Cycle_Length
5377 ,Ls.Cycle_Unit
5378 ,Ls.Capital_Cycle_Length
5379 ,Ls.Capital_Cycle_Unit
5380 ,Ls.Interest_Cycle_Length
5381 ,Ls.Interest_Cycle_Unit
5382 ,Ls.Expected_End_Date)
5383 VALUES
5384 (e_Id_Seq.Nextval
5385 ,0
5386 ,Synch_Restart.Current_Job_Row.Bank_Id
5387 ,r.Extore_Loan_Id
5388 ,l_Start_Time
5389 ,l_Start_Time
5390 ,r.Start_Date
5391 ,r.End_Date
5392 ,NULL
5393 ,NULL
5394 ,r.Cycle_Length
5395 ,r.Cycle_Unit
5396 ,r.Capital_Cycle_Length
5397 ,r.Capital_Cycle_Unit
5398 ,r.Interest_Cycle_Length
5399 ,r.Interest_Cycle_Unit
5400 ,r.Expected_End_Date);
5401 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5402 SELECT Ls.Id
5403 INTO Vn_Schedule_Id
5404 FROM e_Loan_Schedules Ls
5405 WHERE Ls.Loan_Id = r.Extore_Loan_Id
5406 AND Ls.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id;
5407 MERGE INTO Loan_Nearest_Instalments Lni
5408 USING (SELECT '1' FROM Dual) s
5409 ON (Lni.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id AND Lni.Schedule_Id = Vn_Schedule_Id)
5410 WHEN MATCHED THEN
5411 UPDATE
5412 SET Lni.Version = Lni.Version + 1
5413 ,Lni.Modification_Date = l_Start_Time
5414 ,Lni.Instalment_Date = r.Instalment_Date
5415 ,Lni.Capital_Amount = r.Capital_Amount
5416 ,Lni.Interest_Amount = r.Interest_Amount
5417 ,Lni.Fee_Amount = r.Fee_Amount
5418 ,Lni.Instalment_Amount = r.Instalment_Amount
5419 WHEN NOT MATCHED THEN
5420 INSERT
5421 (Lni.Id
5422 ,Lni.Version
5423 ,Lni.Bank_Id
5424 ,Lni.Schedule_Id
5425 ,Lni.Creation_Date
5426 ,Lni.Modification_Date
5427 ,Lni.Instalment_Date
5428 ,Lni.Capital_Amount
5429 ,Lni.Interest_Amount
5430 ,Lni.Fee_Amount
5431 ,Lni.Instalment_Amount)
5432 VALUES
5433 (e_Id_Seq.Nextval
5434 ,0
5435 ,Synch_Restart.Current_Job_Row.Bank_Id
5436 ,Vn_Schedule_Id
5437 ,l_Start_Time
5438 ,l_Start_Time
5439 ,r.Instalment_Date
5440 ,r.Capital_Amount
5441 ,r.Interest_Amount
5442 ,r.Fee_Amount
5443 ,r.Instalment_Amount);
5444 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5445 MERGE INTO Loan_Nearest_Tranches Lnt
5446 USING (SELECT '1' FROM Dual) s
5447 ON (Lnt.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id AND Lnt.Schedule_Id = Vn_Schedule_Id)
5448 WHEN MATCHED THEN
5449 UPDATE
5450 SET Lnt.Version = Lnt.Version + 1
5451 ,Lnt.Modification_Date = l_Start_Time
5452 ,Lnt.Tranche_Amount = r.Tranche_Amount
5453 ,Lnt.Tranche_Date = r.Tranche_Date
5454 WHEN NOT MATCHED THEN
5455 INSERT
5456 (Lnt.Id
5457 ,Lnt.Version
5458 ,Lnt.Bank_Id
5459 ,Lnt.Schedule_Id
5460 ,Lnt.Creation_Date
5461 ,Lnt.Modification_Date
5462 ,Lnt.Tranche_Amount
5463 ,Lnt.Tranche_Date)
5464 VALUES
5465 (e_Id_Seq.Nextval
5466 ,0
5467 ,Synch_Restart.Current_Job_Row.Bank_Id
5468 ,Vn_Schedule_Id
5469 ,l_Start_Time
5470 ,l_Start_Time
5471 ,r.Tranche_Amount
5472 ,r.Tranche_Date);
5473 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5474 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
5475 END p_Upd;
5476 PROCEDURE p_Ins(r c_Insert%ROWTYPE) AS
5477 r_l Loans%ROWTYPE;
5478 r_Li Loan_Identifiers%ROWTYPE;
5479 r_Ls e_Loan_Schedules%ROWTYPE;
5480 r_Lni Loan_Nearest_Instalments%ROWTYPE;
5481 r_Lnt Loan_Nearest_Tranches%ROWTYPE;
5482 Vn_Rows NUMBER := 0;
5483 vv_Step Varchar2(100);
5484 vv_Error Varchar2(4000);
5485 Begin
5486 vv_Step := 'Insert InTo Loans';
5487 r_l.Id := r.seq; --e_Id_Seq.Nextval;
5488 r_l.Version := 0;
5489 r_l.Bank_Id := Synch_Restart.Current_Job_Row.Bank_Id;
5490 r_l.Creation_Date := l_Start_Time;
5491 r_l.Modification_Date := l_Start_Time;
5492 r_l.Total_Amount := r.Total_Amount;
5493 r_l.Status := r.Status;
5494 r_l.Prod_Type := r.Prod_Type;
5495 r_l.Description := r.Description;
5496 r_l.Prod_Group_Type := r.Prod_Group_Type;
5497 r_l.Contract_Ref_Number := r.Contract_Ref_Number;
5498 r_l.Contract_Number := r.Contract_Number;
5499 r_l.Currency_Code_a := r.Currency_Code_a;
5500 r_l.Interest_Rate := r.Interest_Rate;
5501 r_l.Nrb := r.Nrb;
5502 r_l.Is_Fixed := r.Is_Fixed;
5503 r_l.Modulo := r.Modulo;
5504 r_l.Prod_Type_Id := r.Prod_Type_Id;
5505 r_l.Prod_Name := r.Prod_Name;
5506 r_l.Is_Excluded := r.Is_Excluded;
5507 INSERT /* APPEND_VALUES*/ INTO Loans VALUES r_l;
5508 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5509 vv_Step := 'Insert InTo Loan_Identifiers';
5510 r_Li.Id := r.Seq + 1; --e_Id_Seq.Nextval;
5511 r_Li.Key := SYNCH.gv_identifiers_key_value;
5512 r_Li.Value := To_Char(r.Loan_Id);
5513 r_Li.Bank_Id := Synch_Restart.Current_Job_Row.Bank_Id;
5514 r_Li.Extore_Id := r_l.Id;
5515 r_Li.Version := 0;
5516 r_Li.Modification_Date := NULL;
5517 r_Li.Creation_Date := l_Start_Time;
5518 INSERT /* APPEND_VALUES*/ INTO Loan_Identifiers VALUES r_Li;
5519 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5520 vv_Step := 'Insert InTo e_Loan_Schedules';
5521 r_Ls.Id := r.Seq + 2; --e_Id_Seq.Nextval;
5522 r_Ls.Version := 0;
5523 r_Ls.Bank_Id := Synch_Restart.Current_Job_Row.Bank_Id;
5524 r_Ls.Loan_Id := r_l.Id;
5525 r_Ls.Creation_Date := l_Start_Time;
5526 r_Ls.Modification_Date := l_Start_Time;
5527 r_Ls.Start_Date := r.Start_Date;
5528 r_Ls.End_Date := r.End_Date;
5529 r_Ls.Schedule_Type := NULL;
5530 r_Ls.Instalment_Day := NULL;
5531 r_Ls.Cycle_Length := r.Cycle_Length;
5532 r_Ls.Cycle_Unit := r.Cycle_Unit;
5533 r_Ls.Capital_Cycle_Length := r.Capital_Cycle_Length;
5534 r_Ls.Capital_Cycle_Unit := r.Capital_Cycle_Unit;
5535 r_Ls.Interest_Cycle_Length := r.Interest_Cycle_Length;
5536 r_Ls.Interest_Cycle_Unit := r.Interest_Cycle_Unit;
5537 r_Ls.Expected_End_Date := r.Expected_End_Date;
5538 INSERT /* APPEND_VALUES*/ INTO e_Loan_Schedules VALUES r_Ls;
5539 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5540 vv_Step := 'Insert InTo Loan_Nearest_Instalments';
5541 r_Lni.Id := r.Seq + 3; --e_Id_Seq.Nextval;
5542 r_Lni.Version := 0;
5543 r_Lni.Bank_Id := Synch_Restart.Current_Job_Row.Bank_Id;
5544 r_Lni.Schedule_Id := r_Ls.Id;
5545 r_Lni.Creation_Date := l_Start_Time;
5546 r_Lni.Modification_Date := l_Start_Time;
5547 r_Lni.Instalment_Date := r.Instalment_Date;
5548 r_Lni.Capital_Amount := r.Capital_Amount;
5549 r_Lni.Interest_Amount := r.Interest_Amount;
5550 r_Lni.Fee_Amount := r.Fee_Amount;
5551 r_Lni.Instalment_Amount := r.Instalment_Amount;
5552 INSERT /* APPEND_VALUES*/ INTO Loan_Nearest_Instalments VALUES r_Lni;
5553 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5554 vv_Step := 'Insert InTo Loan_Nearest_Tranches';
5555 r_Lnt.Id := r.Seq + 4; --e_Id_Seq.Nextval;
5556 r_Lnt.Version := 0;
5557 r_Lnt.Bank_Id := Synch_Restart.Current_Job_Row.Bank_Id;
5558 r_Lnt.Schedule_Id := r_Ls.Id;
5559 r_Lnt.Creation_Date := l_Start_Time;
5560 r_Lnt.Modification_Date := l_Start_Time;
5561 r_Lnt.Tranche_Amount := r.Tranche_Amount;
5562 r_Lnt.Tranche_Date := r.Tranche_Date;
5563 INSERT /* APPEND_VALUES*/ INTO Loan_Nearest_Tranches VALUES r_Lnt;
5564 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
5565 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
5566 Exception
5567 When Others Then
5568 vv_Error := SubStr( vv_Step || ', Loan_Id: ' || To_Char(r.Loan_Id) || ', ERROR_CODE: ' || SQLERRM,1,4000);
5569 Synch_Restart.Error_Log(l_Program, vv_Error);
5570 raise_application_Error(-20001, vv_Error );
5571 END p_Ins;
5572 BEGIN
5573 Proc_Time := Current_Timestamp;
5574 Synch_Restart.Start_Step;
5575 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
5576 l_Start_Time := Synch_Restart.Get_Start_Time();
5577 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
5578 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
5579 begin
5580 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loans');
5581 vsql:='truncate table lc_Wd_Bim_Loans';
5582 execute immediate vsql;
5583 commit;
5584 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loans');
5585 end;
5586 ---loans
5587 begin
5588 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_LOANS';
5589 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loans');
5590 vsql:='insert into lc_Wd_Bim_Loans
5591 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Loans Wd
5592 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
5593 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
5594 execute immediate vsql;
5595 commit;
5596 Synch_Restart.Log('wykonano:'||vsql);
5597 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Loans');
5598 vsql:='select count(*) from lc_Wd_Bim_Loans';
5599 execute immediate vsql into cnt;
5600 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loans pobrano:'||cnt||' rekord?w');
5601 end;
5602 ---loans balances
5603 /* begin
5604 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loan_Balances');
5605 vsql:='truncate table lc_Wd_Bim_Loan_Balances';
5606 execute immediate vsql;
5607 commit;
5608 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loan_Balances');
5609 end;*/
5610 /* begin
5611 -- select value||':00' into synch_d from synch_config where name='SYNCH_CUSTOMERS.PRC_LOAN_BALANCES';
5612 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loan_Balances');
5613 vsql:='insert into lc_Wd_Bim_Loan_Balances
5614 (select \*+ DRIVING_SITE(Wd1)*\ Wd1.Loan_id from Wd_Bim_Loan_Balances Wd1
5615 where loan_id in (select \*+ DRIVING_SITE(Wd)*\ Wd.loan_id from Wd_Bim_Loans Wd
5616 WHERE
5617 Wd.Modification_Date >=to_date('||''''||synch_d||''''||
5618 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||'))';
5619 execute immediate vsql;
5620 commit;
5621 dbms_stats.gather_table_stats('EXION','lc_Wd_Bim_Loan_Balances');
5622 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loan_Balances');
5623 end; */
5624 begin
5625 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loan_Customers');
5626 vsql:='truncate table lc_Wd_Bim_Loan_Customers';
5627 execute immediate vsql;
5628 commit;
5629 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loan_Customers');
5630 end;
5631 ----
5632 begin
5633 -- select value||':00' into synch_d from synch_config where name='SYNCH_CUSTOMERS.PRC_LOAN_BALANCES';
5634 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loan_Customers');
5635 vsql:='insert into lc_Wd_Bim_Loan_Customers(Loan_Id ,Role,Customer_Id)
5636 (select /*+ DRIVING_SITE(Wd1)*/ Loan_Id ,Role,Customer_Id from Wd_Bim_Loan_Customers Wd1
5637 where loan_id in (select /*+ DRIVING_SITE(Wd)*/ Wd.loan_id from Wd_Bim_Loans Wd
5638 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
5639 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||'))';
5640 execute immediate vsql;
5641 commit;
5642 Synch_Restart.Log('wykonano:'||vsql);
5643 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Loan_Customers');
5644 vsql:='select count(*) from lc_Wd_Bim_Loan_Customers';
5645 execute immediate vsql into cnt;
5646 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loan_Customers pobrano:'||cnt||' rekord?w');
5647 end;
5648 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
5649 Operation := l_Proc || '_UPDATE';
5650 Part_Time := Current_Timestamp;
5651 OPEN c_Update;
5652 LOOP
5653 FETCH c_Update BULK COLLECT
5654 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
5655 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
5656 l_Range_a := 0;
5657 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
5658 WHILE l_Range_a IS NOT NULL
5659 LOOP
5660 FOR i IN l_Range_a .. l_Range_b
5661 LOOP
5662 Tmp_Wd_Id := Lupdate_Array(i).Loan_Id;
5663 p_Upd(Lupdate_Array(i));
5664 END LOOP;
5665 -- Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
5666 l_Range_a := l_Range_b + 1;
5667 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
5668 END LOOP;
5669 EXIT WHEN c_Update%NOTFOUND;
5670 END LOOP;
5671 CLOSE c_Update;
5672 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
5673 Part_Time := Current_Timestamp;
5674 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
5675 Operation := l_Proc || '_INSERT';
5676 OPEN c_Insert;
5677 LOOP
5678 FETCH c_Insert BULK COLLECT
5679 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
5680 If Linsert_Array.Count > 0 Then
5681 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count*5, v_Seq_From, v_Seq_To );
5682 For i In 1..Linsert_Array.Count
5683 Loop
5684 Linsert_Array(i).Seq := v_Seq_From + (i-1)*5;
5685 End Loop;
5686 End If;
5687 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
5688 l_Range_a := 0;
5689 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
5690 WHILE l_Range_a IS NOT NULL
5691 LOOP
5692 FOR i IN l_Range_a .. l_Range_b
5693 LOOP
5694 Tmp_Wd_Id := Linsert_Array(i).Loan_Id;
5695 p_Ins(Linsert_Array(i));
5696 END LOOP;
5697 -- Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
5698 l_Range_a := l_Range_b + 1;
5699 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
5700 END LOOP;
5701 EXIT WHEN c_Insert%NOTFOUND;
5702 END LOOP;
5703 CLOSE c_Insert;
5704 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
5705 Part_Time := Current_Timestamp;
5706 Operation := l_Proc || '_After_Loops';
5707 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
5708 Synch.Set_Last_Synch_Date(l_Program);
5709 Synch_Restart.End_Step;
5710 EXCEPTION
5711 WHEN OTHERS THEN
5712 Synch_Restart.Error_Log(l_Program, Operation || ', Loan_Id: ' || Tmp_Wd_Id || ', ERROR_CODE: ' || SQLERRM);
5713 Synch_Restart.Error_Log(l_Program, Operation);
5714 ROLLBACK;
5715 END Prc_Loans;
5716 --/* z tablicowaniem
5717 PROCEDURE Prc_Loan_Balances AS
5718 l_Proc VARCHAR2(100) := 'PRC_LOAN_BALANCES';
5719 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
5720 Last_Synch_Date DATE;
5721 l_Start_Time DATE;
5722 Operation VARCHAR2(100);
5723 Ln_Buff_Len NUMBER := 0;
5724 l_Range_a NUMBER := 0;
5725 l_Range_b NUMBER := 0;
5726 Tab_Main Tab_Loan_Balances := Tab_Loan_Balances();
5727 v_Seq_From Integer;
5728 v_Seq_To Integer;
5729 vsql varchar2(4000);
5730 synch_d varchar2(100);
5731 cnt number;
5732 CURSOR c_Main IS
5733 --SELECT /*+ driving_site(wd)*/
5734 SELECT
5735 Rec_Loan_Balances(To_Char(CAST(Wd.Loan_Id AS NUMBER))
5736 ,CAST(Wd.Modification_Date AS DATE)
5737 ,CAST(Wd.Overdue_Interest AS NUMBER(12, 2))
5738 ,CAST(Wd.Penalty_Interest AS NUMBER(12, 2))
5739 ,CAST(Wd.Overdue_Capital AS NUMBER(12, 2))
5740 ,CAST(Wd.Available_Balance_Amount AS NUMBER(12, 2))
5741 ,CAST(Wd.Total_Overpaid_Amount AS NUMBER(17, 2))
5742 ,CAST(Wd.Overdue_Fee_Amount AS NUMBER(17, 2))
5743 ,CAST(Wd.Cost_Vind_Amount AS NUMBER(17, 2)))
5744 FROM lc_Wd_Bim_Loan_Balances2 Wd
5745 WHERE Wd.Modification_Date >= Last_Synch_Date;
5746 CURSOR c_Update IS
5747 SELECT /*+ use_hash(wd,Li,Lb) */
5748 Wd.Overdue_Interest
5749 ,Wd.Penalty_Interest
5750 ,Wd.Overdue_Capital
5751 ,Wd.Available_Balance_Amount
5752 ,Wd.Total_Overpaid_Amount
5753 ,Wd.Overdue_Fee_Amount
5754 ,Wd.Cost_Vind_Amount
5755 ,Lb.Id
5756 FROM TABLE(Tab_Main) Wd
5757 JOIN Loan_Identifiers Li
5758 ON Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5759 AND Li.Key = SYNCH.gv_identifiers_key_value
5760 AND Li.Value = Wd.Loan_Id
5761 JOIN Loan_Balances Lb
5762 ON Lb.Loan_Id = Li.Extore_Id
5763 AND CAST(Wd.Modification_Date AS TIMESTAMP) > Lb.Modification_Date
5764 WHERE Wd.Modification_Date < l_Start_Time;
5765 CURSOR c_Insert IS
5766 SELECT /*+ use_hash(wd,Li,Lb) */
5767 0 Seq
5768 ,Wd.Overdue_Interest
5769 ,Wd.Penalty_Interest
5770 ,Wd.Overdue_Capital
5771 ,Wd.Available_Balance_Amount
5772 ,Wd.Total_Overpaid_Amount
5773 ,Wd.Overdue_Fee_Amount
5774 ,Wd.Cost_Vind_Amount
5775 ,Li.Extore_Id Ext_Loan_Id
5776 FROM TABLE(Tab_Main) Wd
5777 JOIN Loan_Identifiers Li
5778 ON Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5779 AND Li.Key = SYNCH.gv_identifiers_key_value
5780 AND Li.Value = Wd.Loan_Id
5781 LEFT JOIN Loan_Balances Lb
5782 ON Lb.Loan_Id = Li.Extore_Id
5783 WHERE Lb.Id IS NULL
5784 AND Wd.Modification_Date < l_Start_Time;
5785 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
5786 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
5787 Lupdate_Array Tupdate_Table;
5788 Linsert_Array Tinsert_Table;
5789 BEGIN
5790 Proc_Time := Current_Timestamp;
5791 Synch_Restart.Start_Step;
5792 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
5793 l_Start_Time := Synch_Restart.Get_Start_Time();
5794 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
5795 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
5796 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
5797 Synch_Restart.Log('Start pobierania danych ');
5798 begin
5799 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loan_Balances2');
5800 vsql:='truncate table lc_Wd_Bim_Loan_Balances2';
5801 execute immediate vsql;
5802 commit;
5803 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loan_Balances2');
5804 end;
5805 -----lc_Bim_Customer_Invol
5806 begin
5807 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_LOAN_BALANCES';
5808 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loan_Balances2');
5809 vsql:='insert into lc_Wd_Bim_Loan_Balances2
5810 (select /*+ DRIVING_SITE(Wd) USE_HASH(Wd) PARALLEL(Wd,4)*/ Wd.Loan_Id
5811 ,Wd.Modification_Date
5812 ,Wd.Overdue_Interest
5813 ,Wd.Penalty_Interest
5814 ,Wd.Overdue_Capital
5815 ,Wd.Available_Balance_Amount
5816 ,Wd.Total_Overpaid_Amount
5817 ,Wd.Overdue_Fee_Amount
5818 ,Wd.Cost_Vind_Amount from Wd_Bim_Loan_Balances Wd
5819 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
5820 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
5821 execute immediate vsql;
5822 commit;
5823 Synch_Restart.Log('wykonano:'||vsql);
5824 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Loan_Balances2');
5825 vsql:='select count(*) from lc_Wd_Bim_Loan_Balances2';
5826 execute immediate vsql into cnt;
5827 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loan_Balances2 pobrano:'||cnt||' rekord?w');
5828 end;
5829 OPEN c_Main;
5830 LOOP
5831 Operation := l_Proc || '_MAIN';
5832 Part_Time := Current_Timestamp;
5833 FETCH c_Main BULK COLLECT
5834 INTO Tab_Main LIMIT Synch.l_Bulk_Limit;
5835 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
5836 Operation := l_Proc || '_UPDATE';
5837 Part_Time := Current_Timestamp;
5838 OPEN c_Update;
5839 LOOP
5840 FETCH c_Update BULK COLLECT
5841 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
5842 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
5843 l_Range_a := 0;
5844 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
5845 WHILE l_Range_a IS NOT NULL
5846 LOOP
5847 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
5848 UPDATE Loan_Balances Lb
5849 SET Lb.Version = Lb.Version + 1
5850 ,Lb.Modification_Date = l_Start_Time
5851 -- ,Lb.Balance_Date = Lupdate_Array(i).Balance_Date
5852 ,Lb.Overdue_Interest = Lupdate_Array(i).Overdue_Interest
5853 ,Lb.Penalty_Interest = Lupdate_Array(i).Penalty_Interest
5854 ,Lb.Overdue_Capital = Lupdate_Array(i).Overdue_Capital
5855 ,Lb.Available_Balance_Amount = Lupdate_Array(i).Available_Balance_Amount
5856 ,Lb.Total_Overpaid_Amount = Lupdate_Array(i).Total_Overpaid_Amount
5857 ,Lb.Overdue_Fee_Amount = Lupdate_Array(i).Overdue_Fee_Amount
5858 ,Lb.Cost_Vind_Amount = Lupdate_Array(i).Cost_Vind_Amount
5859 WHERE Lb.Id = Lupdate_Array(i).Id;
5860 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
5861 l_Range_a := l_Range_b + 1;
5862 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
5863 END LOOP;
5864 EXIT WHEN c_Update%NOTFOUND;
5865 END LOOP;
5866 CLOSE c_Update;
5867 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
5868 Part_Time := Current_Timestamp;
5869 Operation := l_Proc || '_INSERT';
5870 OPEN c_Insert;
5871 LOOP
5872 FETCH c_Insert BULK COLLECT
5873 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
5874 If Linsert_Array.Count > 0 Then
5875 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
5876 For i In 1..Linsert_Array.Count
5877 Loop
5878 Linsert_Array(i).Seq := v_Seq_From + (i-1);
5879 End Loop;
5880 End If;
5881 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
5882 l_Range_a := 0;
5883 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
5884 WHILE l_Range_a IS NOT NULL
5885 LOOP
5886 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
5887 INSERT /* APPEND_VALUES*/ INTO Loan_Balances Lb
5888 (Lb.Id
5889 ,Lb.Version
5890 ,Lb.Bank_Id
5891 ,Lb.Loan_Id
5892 ,Lb.Creation_Date
5893 ,Lb.Modification_Date
5894 -- ,Lb.Balance_Date
5895 ,Lb.Overdue_Interest
5896 ,Lb.Penalty_Interest
5897 ,Lb.Overdue_Capital
5898 ,Lb.Available_Balance_Amount
5899 ,Lb.Total_Overpaid_Amount
5900 ,Lb.Overdue_Fee_Amount
5901 ,Lb.Cost_Vind_Amount)
5902 VALUES
5903 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
5904 ,0
5905 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
5906 ,Linsert_Array(i).Ext_Loan_Id
5907 ,l_Start_Time
5908 ,l_Start_Time
5909 -- ,Linsert_Array(i).Balance_Date
5910 ,Linsert_Array(i).Overdue_Interest
5911 ,Linsert_Array(i).Penalty_Interest
5912 ,Linsert_Array(i).Overdue_Capital
5913 ,Linsert_Array(i).Available_Balance_Amount
5914 ,Linsert_Array(i).Total_Overpaid_Amount
5915 ,Linsert_Array(i).Overdue_Fee_Amount
5916 ,Linsert_Array(i).Cost_Vind_Amount);
5917 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
5918 l_Range_a := l_Range_b + 1;
5919 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
5920 END LOOP;
5921 EXIT WHEN c_Insert%NOTFOUND;
5922 END LOOP;
5923 CLOSE c_Insert;
5924 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
5925 Part_Time := Current_Timestamp;
5926 EXIT WHEN c_Main%NOTFOUND;
5927 END LOOP;
5928 CLOSE c_Main;
5929 --
5930 Operation := l_Proc || '_After_Loops';
5931 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
5932 Synch.Set_Last_Synch_Date(l_Program);
5933 Synch_Restart.End_Step;
5934 EXCEPTION
5935 WHEN OTHERS THEN
5936 IF SQL%Bulk_Exceptions.Count > 0 THEN
5937 IF Operation = l_Proc || '_INSERT' THEN
5938 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
5939 LOOP
5940 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
5941 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
5942 END LOOP;
5943 ELSIF Operation = l_Proc || '_UPDATE' THEN
5944 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
5945 LOOP
5946 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
5947 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
5948 END LOOP;
5949 ELSIF Operation = l_Proc || '_DELETE' THEN
5950 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
5951 LOOP
5952 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
5953 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
5954 END LOOP;
5955 END IF;
5956 END IF;
5957 Synch_Restart.Error_Log(l_Program, Operation);
5958 ROLLBACK;
5959 END Prc_Loan_Balances;
5960 --*/
5961 PROCEDURE Prc_Loan_Customers AS
5962 l_Proc VARCHAR2(100) := 'PRC_LOAN_CUSTOMERS_';
5963 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
5964 Last_Synch_Date DATE;
5965 l_Start_Time DATE;
5966 Operation VARCHAR2(100);
5967 Ln_Buff_Len NUMBER := 0;
5968 l_Range_a NUMBER := 0;
5969 l_Range_b NUMBER := 0;
5970 v_Seq_From Integer;
5971 v_Seq_To Integer;
5972 vsql varchar2(4000);
5973 synch_d varchar2(100);
5974 cnt number;
5975 CURSOR c_Update Is
5976 With Lns As (
5977 SELECT /*+ use_hash(Li,L) */
5978 Li.Value, Li.Extore_Id
5979 FROM Loan_Identifiers Li
5980 , Loans l
5981 WHERE Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5982 AND Li.Key = Synch.Gv_Identifiers_Key_Value
5983 AND l.Bank_Id = Li.Bank_Id
5984 AND l.Id = Li.Extore_Id
5985 )
5986 , Cust As (
5987 SELECT /*+ use_hash(Ci,C) */
5988 Ci.Value, Ci.Extore_Id
5989 FROM Customer_Identifiers Ci
5990 , Customers c
5991 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5992 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
5993 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
5994 AND c.Id = Ci.Extore_Id
5995 )
5996 --SELECT /*+ driving_site(wd) use_hash(wd,Lns,Cust,Lc) */
5997 SELECT
5998 'OWNER' Role
5999 ,lns.Extore_Id Extore_Loan_Id
6000 ,cust.Extore_Id Extore_Customer_Id
6001 ,Lc.Id
6002 FROM lc_Wd_Bim_Loan_Customers Wd
6003 JOIN Lns
6004 ON Lns.Value = To_Char(Wd.Loan_Id)
6005 JOIN Cust
6006 ON Cust.Value = To_Char(Wd.Customer_Id)
6007 JOIN Loan_Customers Lc
6008 ON Lc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6009 AND Lc.Extore_Id = lns.Extore_Id
6010 AND Lc.Customer_Extore_Id = cust.Extore_Id
6011 AND Lc.Modification_Date < CAST(Wd.Modification_Date AS TIMESTAMP(6))
6012 WHERE Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', Wd.Role) = 'OWNER'
6013 AND Wd.Modification_Date >= Last_Synch_Date
6014 AND Wd.Modification_Date < l_Start_Time;
6015 CURSOR c_Insert IS
6016 With Lns As (
6017 SELECT /*+ use_hash(Li,L) */
6018 Li.Value, Li.Extore_Id
6019 FROM Loan_Identifiers Li
6020 , Loans l
6021 WHERE Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6022 AND Li.Key = Synch.Gv_Identifiers_Key_Value
6023 AND l.Bank_Id = Li.Bank_Id
6024 AND l.Id = Li.Extore_Id
6025 )
6026 , Cust As (
6027 SELECT /*+ use_hash(Ci,C) */
6028 Ci.Value, Ci.Extore_Id
6029 FROM Customer_Identifiers Ci
6030 , Customers c
6031 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6032 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
6033 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6034 AND c.Id = Ci.Extore_Id
6035 AND c.Status = 'ACTIVE'
6036 )
6037 --SELECT /*+ driving_site(wd) use_hash(wd,Lns,Cust,Lc) */
6038 SELECT
6039 0 Seq
6040 , 'OWNER' Role
6041 , lns.Extore_Id Extore_Loan_Id
6042 , cust.Extore_Id Extore_Customer_Id
6043 FROM lc_Wd_Bim_Loan_Customers Wd
6044 JOIN Lns
6045 ON Lns.Value = To_Char(Wd.Loan_Id)
6046 JOIN Cust
6047 ON Cust.Value = To_Char(Wd.Customer_Id)
6048 LEFT JOIN Loan_Customers Lc
6049 ON Lc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6050 AND Lc.Extore_Id = lns.Extore_Id
6051 AND Lc.Customer_Extore_Id = cust.Extore_Id
6052 WHERE Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', Wd.Role) = 'OWNER'
6053 AND Lc.Id IS NULL;
6054 CURSOR c_Delete IS
6055 SELECT 1 FROM Dual c WHERE 1 = 2;
6056 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
6057 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
6058 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
6059 Lupdate_Array Tupdate_Table;
6060 Linsert_Array Tinsert_Table;
6061 Ldelete_Array Tdelete_Table;
6062 BEGIN
6063 Proc_Time := Current_Timestamp;
6064 Synch_Restart.Start_Step;
6065 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
6066 l_Start_Time := Synch_Restart.Get_Start_Time();
6067 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
6068 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
6069 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
6070 begin
6071 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loan_Customers');
6072 vsql:='truncate table lc_Wd_Bim_Loan_Customers';
6073 execute immediate vsql;
6074 commit;
6075 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loan_Customers');
6076 end;
6077 ----
6078 begin
6079 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_LOAN_CUSTOMERS_';
6080 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loan_Customers');
6081 vsql:='insert into lc_Wd_Bim_Loan_Customers
6082 (select /*+ DRIVING_SITE(Wd1)*/ Loan_Id ,Role,Customer_Id,modification_date from Wd_Bim_Loan_Customers Wd1
6083 WHERE Wd1.Modification_Date >=to_date('||''''||synch_d||''''||
6084 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
6085 execute immediate vsql;
6086 commit;
6087 Synch_Restart.Log('wykonano:'||vsql);
6088 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Loan_Customers');
6089 vsql:='select count(*) from lc_Wd_Bim_Loan_Customers';
6090 execute immediate vsql into cnt;
6091 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loan_Customers pobrano:'||cnt||' rekord?w');
6092 end;
6093 Operation := l_Proc || '_UPDATE';
6094 Part_Time := Current_Timestamp;
6095 OPEN c_Update;
6096 LOOP
6097 FETCH c_Update BULK COLLECT
6098 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
6099 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
6100 l_Range_a := 0;
6101 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
6102 WHILE l_Range_a IS NOT NULL
6103 LOOP
6104 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
6105 UPDATE Loan_Customers Lc
6106 SET Lc.Version = Lc.Version + 1
6107 ,Lc.Modification_Date = l_Start_Time
6108 ,Lc.Role = Lupdate_Array(i).Role
6109 ,Lc.Extore_Id = Lupdate_Array(i).Extore_Loan_Id
6110 ,Lc.Customer_Extore_Id = Lupdate_Array(i).Extore_Customer_Id
6111 WHERE Lc.Id = Lupdate_Array(i).Id;
6112 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
6113 l_Range_a := l_Range_b + 1;
6114 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
6115 END LOOP;
6116 EXIT WHEN c_Update%NOTFOUND;
6117 END LOOP;
6118 CLOSE c_Update;
6119 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
6120 Part_Time := Current_Timestamp;
6121 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
6122 Operation := l_Proc || '_INSERT';
6123 OPEN c_Insert;
6124 LOOP
6125 FETCH c_Insert BULK COLLECT
6126 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
6127 If Linsert_Array.Count > 0 Then
6128 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
6129 For i In 1..Linsert_Array.Count
6130 Loop
6131 Linsert_Array(i).Seq := v_Seq_From + (i-1);
6132 End Loop;
6133 End If;
6134 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
6135 l_Range_a := 0;
6136 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
6137 WHILE l_Range_a IS NOT NULL
6138 LOOP
6139 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
6140 INSERT /* APPEND_VALUES*/ INTO Loan_Customers Lc
6141 (Lc.Id
6142 ,Lc.Bank_Id
6143 ,Lc.Version
6144 ,Lc.Role
6145 ,Lc.Extore_Id
6146 ,Lc.Customer_Extore_Id
6147 ,Lc.Creation_Date
6148 ,Lc.Modification_Date)
6149 VALUES
6150 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
6151 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
6152 ,0
6153 ,Linsert_Array(i).Role
6154 ,Linsert_Array(i).Extore_Loan_Id
6155 ,Linsert_Array(i).Extore_Customer_Id
6156 ,l_Start_Time
6157 ,l_Start_Time);
6158 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
6159 l_Range_a := l_Range_b + 1;
6160 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
6161 END LOOP;
6162 EXIT WHEN c_Insert%NOTFOUND;
6163 END LOOP;
6164 CLOSE c_Insert;
6165 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
6166 Part_Time := Current_Timestamp;
6167 --
6168 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
6169 Operation := l_Proc || '_DELETE';
6170 OPEN c_Delete;
6171 LOOP
6172 FETCH c_Delete BULK COLLECT
6173 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
6174 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
6175 l_Range_a := 0;
6176 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
6177 WHILE l_Range_a IS NOT NULL
6178 LOOP
6179 l_Range_a := l_Range_b + 1;
6180 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
6181 END LOOP;
6182 EXIT WHEN c_Delete%NOTFOUND;
6183 END LOOP;
6184 CLOSE c_Delete;
6185 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
6186 --
6187 Operation := l_Proc || '_After_Loops';
6188 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
6189 Synch.Set_Last_Synch_Date(l_Program);
6190 Synch_Restart.End_Step;
6191 EXCEPTION
6192 WHEN OTHERS THEN
6193 IF SQL%Bulk_Exceptions.Count > 0 THEN
6194 IF Operation = l_Proc || '_INSERT' THEN
6195 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6196 LOOP
6197 Synch_Restart.Error_Log(l_Program
6198 ,Operation || ', Product_Type_Id: ' || --Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
6199 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6200 END LOOP;
6201 ELSIF Operation = l_Proc || '_UPDATE' THEN
6202 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6203 LOOP
6204 Synch_Restart.Error_Log(l_Program
6205 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
6206 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6207 END LOOP;
6208 ELSIF Operation = l_Proc || '_DELETE' THEN
6209 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6210 LOOP
6211 Synch_Restart.Error_Log(l_Program
6212 ,Operation || ', Product_Type_Id: ' || --Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
6213 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6214 END LOOP;
6215 END IF;
6216 END IF;
6217 Synch_Restart.Error_Log(l_Program, Operation);
6218 ROLLBACK;
6219 END Prc_Loan_Customers;
6220 PROCEDURE Prc_Loan_Instalments AS
6221 l_Proc VARCHAR2(100) := 'PRC_LOAN_INSTALMENTS';
6222 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
6223 Last_Synch_Date DATE;
6224 l_Start_Time DATE;
6225 Operation VARCHAR2(100);
6226 Ln_Buff_Len NUMBER := 0;
6227 l_Range_a NUMBER := 0;
6228 l_Range_b NUMBER := 0;
6229 Main_Array Tab_Loan_Instalments := Tab_Loan_Instalments();
6230 v_Seq_From Integer;
6231 v_Seq_To Integer;
6232 vsql varchar2(4000);
6233 synch_d varchar2(100);
6234 cnt number;
6235 CURSOR c_Main IS
6236 --SELECT /*+ driving_site(wd)*/
6237 SELECT
6238 Rec_Loan_Instalments(CAST(To_Char(Loan_Id) AS VARCHAR2(20 CHAR))
6239 ,CAST(Wd.Capital_Amount AS NUMBER(12, 2))
6240 ,CAST(Wd.Interest_Amount AS NUMBER(12, 2))
6241 ,CAST(Wd.Fee_Amount AS NUMBER(12, 2))
6242 ,CAST(Wd.Instalment_Date AS TIMESTAMP)
6243 ,CAST(Wd.Instalment_Amount AS NUMBER(17, 2))
6244 ,CAST(Wd.Remaining_Capital_Amount AS NUMBER(17, 2))
6245 ,CAST(Wd.Modification_Date AS DATE)
6246 )
6247 FROM LC_Wd_Bim_Loan_Installments Wd
6248 WHERE Wd.Modification_Date >= Last_Synch_Date;
6249 CURSOR c_Update IS
6250 SELECT /*+ use_hash(wd,Li,L,I) use_hash(wd,Li,L,I) */
6251 l.Id Extore_Loan_Id
6252 ,Wd.Capital_Amount
6253 ,Wd.Interest_Amount
6254 ,Wd.Fee_Amount
6255 ,Wd.Instalment_Date
6256 ,Wd.Instalment_Amount
6257 ,Wd.Remaining_Capital_Amount
6258 ,i.Id
6259 FROM TABLE(Main_Array) Wd
6260 JOIN Loan_Identifiers Li
6261 ON Li.Key = SYNCH.gv_identifiers_key_value
6262 AND Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6263 AND Wd.Loan_Id = Li.Value
6264 JOIN Loans l
6265 ON l.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6266 AND l.Id = Li.Extore_Id
6267 JOIN e_Loan_Instalments i
6268 ON i.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6269 AND i.Loan_Id = l.Id
6270 AND Trunc(i.Instalment_Date) = Trunc(Wd.Instalment_Date)
6271 AND CAST(Wd.Modification_Date AS TIMESTAMP) > i.Modification_Date
6272 WHERE Wd.Modification_Date < l_Start_Time;
6273 CURSOR c_Insert IS
6274 SELECT /*+ use_hash(wd,Li,L,I) use_hash(wd,Li,L,I) */
6275 0 Seq
6276 ,l.Id Extore_Loan_Id
6277 ,Wd.Capital_Amount
6278 ,Wd.Interest_Amount
6279 ,Wd.Fee_Amount
6280 ,Wd.Instalment_Date
6281 ,Wd.Instalment_Amount
6282 ,Wd.Remaining_Capital_Amount
6283 FROM TABLE(Main_Array) Wd
6284 JOIN Loan_Identifiers Li
6285 ON Li.Key = SYNCH.gv_identifiers_key_value
6286 AND Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6287 AND Wd.Loan_Id = Li.Value
6288 JOIN Loans l
6289 ON l.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6290 AND l.Id = Li.Extore_Id
6291 LEFT JOIN e_Loan_Instalments i
6292 ON i.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6293 AND i.Loan_Id = l.Id
6294 AND Trunc(i.Instalment_Date) = Trunc(Wd.Instalment_Date)
6295 WHERE i.Id IS NULL
6296 AND Wd.Modification_Date < l_Start_Time;
6297 CURSOR c_Delete IS
6298 SELECT /*+ use_hash(i,li) */i.Id
6299 FROM e_Loan_Instalments i
6300 JOIN Loan_Identifiers Li
6301 ON Li.Key = SYNCH.gv_identifiers_key_value
6302 AND Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6303 AND Li.Extore_Id = i.Loan_Id
6304 WHERE i.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6305 AND i.Instalment_Date > l_Start_Time
6306 AND NOT EXISTS (
6307 --SELECT /*+ driving_site(wd) */1
6308 SELECT 1
6309 FROM LC_Wd_Bim_Loan_Installments2 Wd
6310 WHERE To_Number(Li.Value) = Wd.Loan_Id
6311 AND Trunc(Wd.Instalment_Date) = Trunc(i.Instalment_Date));
6312 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
6313 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
6314 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
6315 Lupdate_Array Tupdate_Table;
6316 Linsert_Array Tinsert_Table;
6317 Ldelete_Array Tdelete_Table;
6318 BEGIN
6319 Proc_Time := Current_Timestamp;
6320 Synch_Restart.Start_Step;
6321 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
6322 l_Start_Time := Synch_Restart.Get_Start_Time();
6323 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
6324 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
6325 begin
6326 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loan_Installments');
6327 vsql:='truncate table lc_Wd_Bim_Loan_Installments';
6328 execute immediate vsql;
6329 commit;
6330 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loan_Installments');
6331 end;
6332 begin
6333 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_LOAN_INSTALMENTS';
6334 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loan_Installments od:'||synch_d);
6335 vsql:='insert into lc_Wd_Bim_Loan_Installments
6336 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Loan_Installments Wd
6337 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
6338 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
6339 execute immediate vsql;
6340 commit;
6341 Synch_Restart.Log('wykonano:'||vsql);
6342 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Loan_Installments');
6343 vsql:='select count(*) from lc_Wd_Bim_Loan_Installments';
6344 execute immediate vsql into cnt;
6345 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loan_Installments pobrano:'||cnt||' rekord?w');
6346 end;
6347 begin
6348 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loan_Installments2');
6349 vsql:='truncate table lc_Wd_Bim_Loan_Installments2';
6350 execute immediate vsql;
6351 commit;
6352 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loan_Installments2');
6353 end;
6354 begin
6355 --- select value||':00' into synch_d from synch_config where name='SYNCH_CUSTOMERS.CUST_PHONE';
6356 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loan_Installments2 ');
6357 vsql:='insert into lc_Wd_Bim_Loan_Installments2
6358 (select /*+ DRIVING_SITE(Wd)*/ Wd.Loan_Id,Wd.Instalment_Date from Wd_Bim_Loan_Installments Wd)';
6359 execute immediate vsql;
6360 commit;
6361 Synch_Restart.Log('wykonano:'||vsql);
6362 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Loan_Installments2');
6363 vsql:='select count(*) from lc_Wd_Bim_Loan_Installments2';
6364 execute immediate vsql into cnt;
6365 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loan_Installments2 pobrano:'||cnt||' rekord?w');
6366 end;
6367 Synch_Restart.Log('Rozpoczynam zbieranie danych odleglych ' || l_Proc);
6368 Operation := l_Proc || '_MAIN';
6369 Part_Time := Current_Timestamp;
6370 OPEN c_Main;
6371 LOOP
6372 FETCH c_Main BULK COLLECT
6373 INTO Main_Array LIMIT Synch.l_Bulk_Limit;
6374 OPEN c_Update;
6375 LOOP
6376 FETCH c_Update BULK COLLECT
6377 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
6378 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
6379 l_Range_a := 0;
6380 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
6381 WHILE l_Range_a IS NOT NULL
6382 LOOP
6383 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
6384 UPDATE e_Loan_Instalments Li
6385 SET Li.Version = Li.Version + 1
6386 ,Li.Modification_Date = l_Start_Time
6387 ,Li.Capital_Amount = Lupdate_Array(i).Capital_Amount
6388 ,Li.Interest_Amount = Lupdate_Array(i).Interest_Amount
6389 ,Li.Fee_Amount = Lupdate_Array(i).Fee_Amount
6390 ,Li.Instalment_Date = Lupdate_Array(i).Instalment_Date
6391 ,Li.Instalment_Amount = Lupdate_Array(i).Instalment_Amount
6392 ,Li.Remaining_Capital_Amount = Lupdate_Array(i).Remaining_Capital_Amount
6393 WHERE Li.Id = Lupdate_Array(i).Id;
6394 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
6395 l_Range_a := l_Range_b + 1;
6396 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
6397 END LOOP;
6398 EXIT WHEN c_Update%NOTFOUND;
6399 END LOOP;
6400 CLOSE c_Update;
6401 OPEN c_Insert;
6402 LOOP
6403 FETCH c_Insert BULK COLLECT
6404 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
6405 If Linsert_Array.Count > 0 Then
6406 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
6407 For i In 1..Linsert_Array.Count
6408 Loop
6409 Linsert_Array(i).Seq := v_Seq_From + (i-1);
6410 End Loop;
6411 End If;
6412 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
6413 l_Range_a := 0;
6414 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
6415 WHILE l_Range_a IS NOT NULL
6416 LOOP
6417 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
6418 INSERT /* APPEND_VALUES*/ INTO e_Loan_Instalments Li
6419 (Li.Id
6420 ,Li.Version
6421 ,Li.Bank_Id
6422 ,Li.Loan_Id
6423 ,Li.Capital_Amount
6424 ,Li.Interest_Amount
6425 ,Li.Fee_Amount
6426 ,Li.Instalment_Date
6427 ,Li.Instalment_Amount
6428 ,Li.Remaining_Capital_Amount
6429 ,Li.Creation_Date
6430 ,Li.Modification_Date)
6431 VALUES
6432 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
6433 ,0 --VERSION
6434 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
6435 ,Linsert_Array(i).Extore_Loan_Id
6436 ,Linsert_Array(i).Capital_Amount
6437 ,Linsert_Array(i).Interest_Amount
6438 ,Linsert_Array(i).Fee_Amount
6439 ,Linsert_Array(i).Instalment_Date
6440 ,Linsert_Array(i).Instalment_Amount
6441 ,Linsert_Array(i).Remaining_Capital_Amount
6442 ,l_Start_Time
6443 ,l_Start_Time);
6444 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
6445 l_Range_a := l_Range_b + 1;
6446 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
6447 END LOOP;
6448 EXIT WHEN c_Insert%NOTFOUND;
6449 END LOOP;
6450 CLOSE c_Insert;
6451 EXIT WHEN c_Main%NOTFOUND;
6452 END LOOP;
6453 CLOSE c_Main;
6454 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
6455 Part_Time := Current_Timestamp;
6456 --
6457 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
6458 Operation := l_Proc || '_DELETE';
6459 OPEN c_Delete;
6460 LOOP
6461 FETCH c_Delete BULK COLLECT
6462 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
6463 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
6464 l_Range_a := 0;
6465 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
6466 WHILE l_Range_a IS NOT NULL
6467 LOOP
6468 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
6469 DELETE FROM e_Loan_Instalments Li WHERE Li.Id = Ldelete_Array(i).Id;
6470 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
6471 l_Range_a := l_Range_b + 1;
6472 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
6473 END LOOP;
6474 EXIT WHEN c_Delete%NOTFOUND;
6475 END LOOP;
6476 CLOSE c_Delete;
6477 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
6478 --
6479 Operation := l_Proc || '_After_Loops';
6480 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
6481 Synch.Set_Last_Synch_Date(l_Program);
6482 Synch_Restart.End_Step;
6483 EXCEPTION
6484 WHEN OTHERS THEN
6485 IF SQL%Bulk_Exceptions.Count > 0 THEN
6486 IF Operation = l_Proc || '_INSERT' THEN
6487 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6488 LOOP
6489 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
6490 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6491 END LOOP;
6492 ELSIF Operation = l_Proc || '_UPDATE' THEN
6493 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6494 LOOP
6495 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
6496 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6497 END LOOP;
6498 ELSIF Operation = l_Proc || '_DELETE' THEN
6499 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6500 LOOP
6501 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
6502 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6503 END LOOP;
6504 END IF;
6505 END IF;
6506 Synch_Restart.Error_Log(l_Program, Operation);
6507 ROLLBACK;
6508 END Prc_Loan_Instalments;
6509 PROCEDURE Prc_Loan_Insurances AS
6510 l_Proc VARCHAR2(100) := 'PRC_LOAN_INSURANCES';
6511 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
6512 Last_Synch_Date DATE;
6513 l_Start_Time DATE;
6514 Operation VARCHAR2(100);
6515 Ln_Buff_Len NUMBER := 0;
6516 l_Range_a NUMBER := 0;
6517 l_Range_b NUMBER := 0;
6518 v_Seq_From Integer;
6519 v_Seq_To Integer;
6520 vsql varchar2(4000);
6521 synch_d varchar2(100);
6522 cnt number;
6523 CURSOR c_Update IS
6524 SELECT 1 FROM Dual WHERE 1 = 2;
6525 CURSOR c_Insert IS
6526 WITH Lns AS
6527 (--SELECT /*+ driving_site(wd) using_hash(wd,li) */
6528 SELECT
6529 DISTINCT Wd.Loan_Id, Li.Extore_Id Extore_Loan_Id
6530 FROM lc_Wd_Bim_Loan_Insurances Wd
6531 , Loan_Identifiers Li
6532 WHERE Wd.Modification_Date >= Last_Synch_Date
6533 AND Wd.Modification_Date < l_Start_Time
6534 AND Li.Value = To_Char(Wd.Loan_Id)
6535 AND Li.Key = SYNCH.gv_identifiers_key_value
6536 AND Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id)
6537 --SELECT /*+ driving_site(wd) use_hash(wd,lns) */
6538 SELECT
6539 0 Seq
6540 ,Lns.Extore_Loan_Id
6541 ,CAST(Wd.Insurance_Number AS VARCHAR2(200 CHAR)) Insurance_Number
6542 ,CAST(Wd.Insurance_Name AS VARCHAR2(200 CHAR)) Insurance_Name
6543 FROM LC_Wd_Bim_Loan_Insurances Wd, Lns
6544 WHERE Wd.Loan_Id = Lns.Loan_Id
6545 ORDER BY 1;
6546 CURSOR c_Delete IS
6547 SELECT Ins.Id
6548 FROM Loan_Insurances Ins
6549 WHERE EXISTS (
6550 --SELECT /*+ driving_site(wd) use_hash(wd,Li) */ 1
6551 SELECT 1
6552 FROM lc_Wd_Bim_Loan_Insurances Wd
6553 , Loan_Identifiers Li
6554 WHERE Ins.Loan_Id = Li.Extore_Id
6555 AND Li.Key = SYNCH.gv_identifiers_key_value
6556 AND Li.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6557 AND Li.Value = To_Char(Wd.Loan_Id)
6558 AND Wd.Modification_Date >= Last_Synch_Date
6559 AND Wd.Modification_Date < l_Start_Time
6560 AND CAST(Wd.Modification_Date AS TIMESTAMP) > Ins.Modification_Date);
6561 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
6562 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
6563 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
6564 Lupdate_Array Tupdate_Table;
6565 Linsert_Array Tinsert_Table;
6566 Ldelete_Array Tdelete_Table;
6567 BEGIN
6568 Proc_Time := Current_Timestamp;
6569 Synch_Restart.Start_Step;
6570 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
6571 l_Start_Time := Synch_Restart.Get_Start_Time();
6572 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
6573 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
6574 begin
6575 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Loan_Insurances');
6576 vsql:='truncate table lc_Wd_Bim_Loan_Insurances';
6577 execute immediate vsql;
6578 commit;
6579 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Loan_Insurances');
6580 end;
6581 ----
6582 begin
6583 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_LOAN_INSURANCES';
6584 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Loan_Insurances');
6585 vsql:='insert into lc_Wd_Bim_Loan_Insurances
6586 (select /*+ DRIVING_SITE(Wd1)*/ * from Wd_Bim_Loan_Insurances Wd1
6587 WHERE Wd1.Modification_Date >=to_date('||''''||synch_d||''''||
6588 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
6589 execute immediate vsql;
6590 commit;
6591 Synch_Restart.Log('wykonano:'||vsql);
6592 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Loan_Insurances');
6593 vsql:='select count(*) from lc_Wd_Bim_Loan_Insurances';
6594 execute immediate vsql into cnt;
6595 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Loan_Insurances pobrano:'||cnt||' rekord?w');
6596 end;
6597 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
6598 Operation := l_Proc || '_DELETE';
6599 Part_Time := Current_Timestamp;
6600 OPEN c_Delete;
6601 LOOP
6602 FETCH c_Delete BULK COLLECT
6603 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
6604 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
6605 l_Range_a := 0;
6606 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
6607 WHILE l_Range_a IS NOT NULL
6608 LOOP
6609 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
6610 DELETE FROM Loan_Insurances Ins WHERE Ins.Id = Ldelete_Array(i).Id;
6611 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
6612 l_Range_a := l_Range_b + 1;
6613 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
6614 END LOOP;
6615 EXIT WHEN c_Delete%NOTFOUND;
6616 END LOOP;
6617 CLOSE c_Delete;
6618 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
6619 Part_Time := Current_Timestamp;
6620 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
6621 Operation := l_Proc || '_UPDATE';
6622 OPEN c_Update;
6623 LOOP
6624 FETCH c_Update BULK COLLECT
6625 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
6626 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
6627 l_Range_a := 0;
6628 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
6629 WHILE l_Range_a IS NOT NULL
6630 LOOP
6631 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
6632 l_Range_a := l_Range_b + 1;
6633 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
6634 END LOOP;
6635 EXIT WHEN c_Update%NOTFOUND;
6636 END LOOP;
6637 CLOSE c_Update;
6638 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
6639 Part_Time := Current_Timestamp;
6640 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
6641 Operation := l_Proc || '_INSERT';
6642 OPEN c_Insert;
6643 LOOP
6644 FETCH c_Insert BULK COLLECT
6645 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
6646 If Linsert_Array.Count > 0 Then
6647 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
6648 For i In 1..Linsert_Array.Count
6649 Loop
6650 Linsert_Array(i).Seq := v_Seq_From + (i-1);
6651 End Loop;
6652 End If;
6653 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
6654 l_Range_a := 0;
6655 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
6656 WHILE l_Range_a IS NOT NULL
6657 LOOP
6658 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
6659 INSERT /* APPEND_VALUES*/ INTO Loan_Insurances Ins
6660 (Ins.Id
6661 ,Ins.Version
6662 ,Ins.Bank_Id
6663 ,Ins.Loan_Id
6664 ,Ins.Creation_Date
6665 ,Ins.Modification_Date
6666 ,Ins.Insurance_Number
6667 ,Ins.Insurance_Name)
6668 VALUES
6669 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
6670 ,0 --VERSION
6671 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
6672 ,Linsert_Array(i).Extore_Loan_Id
6673 ,l_Start_Time
6674 ,l_Start_Time
6675 ,Linsert_Array(i).Insurance_Number
6676 ,Linsert_Array(i).Insurance_Name);
6677 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
6678 l_Range_a := l_Range_b + 1;
6679 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
6680 END LOOP;
6681 EXIT WHEN c_Insert%NOTFOUND;
6682 END LOOP;
6683 CLOSE c_Insert;
6684 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
6685 --
6686 Operation := l_Proc || '_After_Loops';
6687 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
6688 Synch.Set_Last_Synch_Date(l_Program);
6689 Synch_Restart.End_Step;
6690 EXCEPTION
6691 WHEN OTHERS THEN
6692 IF SQL%Bulk_Exceptions.Count > 0 THEN
6693 IF Operation = l_Proc || '_INSERT' THEN
6694 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6695 LOOP
6696 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
6697 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6698 END LOOP;
6699 ELSIF Operation = l_Proc || '_UPDATE' THEN
6700 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6701 LOOP
6702 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
6703 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6704 END LOOP;
6705 ELSIF Operation = l_Proc || '_DELETE' THEN
6706 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
6707 LOOP
6708 Synch_Restart.Error_Log(l_Program,Operation || ', Product_Type_Id: ' ||
6709 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
6710 END LOOP;
6711 END IF;
6712 END IF;
6713 Synch_Restart.Error_Log(l_Program, Operation);
6714 ROLLBACK;
6715 END Prc_Loan_Insurances;
6716 PROCEDURE Prc_Deposits AS
6717 l_Proc VARCHAR2(100) := 'PRC_DEPOSITS';
6718 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
6719 Last_Synch_Date DATE;
6720 l_Start_Time DATE;
6721 Operation VARCHAR2(100);
6722 Ln_Buff_Len NUMBER := 0;
6723 l_Range_a NUMBER := 0;
6724 l_Range_b NUMBER := 0;
6725 Tmp_Wd_Id NUMBER;
6726 v_Seq_From Integer;
6727 v_Seq_To Integer;
6728 vsql varchar2(4000);
6729 synch_d varchar2(100);
6730 cnt number;
6731 CURSOR c_Update Is
6732 With Dep As (
6733 Select /*+ use_hash(Di,D) */
6734 Di.Id, Di.Value, Di.Extore_Id, d.Modification_Date
6735 From Deposit_Identifiers Di, Deposits d
6736 Where Di.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6737 AND Di.Key = Synch.Gv_Identifiers_Key_Value
6738 AND d.Id = Di.Extore_Id
6739 AND d.Bank_Id = Di.Bank_Id
6740 )
6741 -- SELECT /*+ driving_site(wd) use_hash(wd,dep) */
6742 SELECT
6743 CAST(Wd.Contract_Number AS VARCHAR2(50 CHAR)) Contract_Number
6744 ,CAST(Wd.Contract_Ref_Number AS VARCHAR2(50 CHAR)) Contract_Ref_Number
6745 ,CAST(Wd.Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
6746 ,CAST(Wd.Current_Period_End_Date AS DATE) Current_Period_End_Date
6747 ,CAST(Wd.Current_Period_Start_Date AS DATE) Current_Period_Start_Date
6748 ,CAST(Wd.Description AS VARCHAR2(1000 CHAR)) Description
6749 ,CAST(Wd.End_Date AS TIMESTAMP) End_Date
6750 ,CAST(Wd.Interest_Rate AS NUMBER(17, 3)) Interest_Rate
6751 ,CAST(To_Number(Wd.Is_Fixed) AS NUMBER(1)) Is_Fixed
6752 ,CAST(Wd.Last_Capitalization_Date AS DATE) Last_Capitalization_Date
6753 ,CAST(Wd.Next_Capitalization_Date AS TIMESTAMP) Next_Capitalization_Date
6754 ,CAST(To_Char(Wd.Modulo) AS VARCHAR2(50 CHAR)) Modulo
6755 ,CAST(Wd.Nrb AS VARCHAR2(120 CHAR)) Nrb
6756 ,CAST(Wd.Nrb_Capital AS VARCHAR2(26 CHAR)) Nrb_Capital
6757 ,CAST(Wd.Nrb_Interest AS VARCHAR2(26 CHAR)) Nrb_Interest
6758 ,CAST(Wd.Opening_Account AS VARCHAR2(26 CHAR)) Opening_Account
6759 ,CAST(Synch.Get_Dict('DEPOSIT_INCOME_PAYMENT_TYPE', CAST(Wd.Opening_Account_Type AS VARCHAR2(255 CHAR))) AS
6760 VARCHAR2(1 CHAR)) Opening_Account_Type
6761 ,CAST(To_Char(Wd.Org_Unit) AS VARCHAR2(64 CHAR)) Org_Unit
6762 ,CAST(Wd.Period_Length AS NUMBER(19)) Period_Length
6763 ,Synch.Get_Dict('DEPOSIT_PERIOD_TYPE', To_Char(Wd.Period_Type)) Period_Type
6764 ,CAST(Wd.Prod_Type AS VARCHAR2(15 CHAR)) Prod_Type
6765 ,CAST(To_Char(Wd.Prod_Type_Id) AS VARCHAR2(64 CHAR)) Prod_Type_Id
6766 ,CAST(Wd.Renewable AS NUMBER(1)) Renewable
6767 ,CAST(CASE Upper(Synch.Get_Dict('DEPOSIT_RENEWABLE_INDICATOR', Wd.Return_Capital))
6768 WHEN 'TRUE' Then 1
6769 WHEN 'FALSE' Then 0
6770 Else NULL
6771 END AS NUMBER(1)) Return_Capital
6772 ,CAST(CASE Upper(Synch.Get_Dict('DEPOSIT_RENEWABLE_INDICATOR', Wd.Return_Interest))
6773 WHEN 'TRUE' Then 1
6774 WHEN 'FALSE' Then 0
6775 Else NULL
6776 END AS NUMBER(1)) Return_Interest
6777 ,CAST(Wd.Start_Date AS TIMESTAMP) Start_Date
6778 ,CAST(Wd.Start_Date_Amount AS NUMBER(19, 2)) Start_Date_Amount
6779 ,Synch.Get_Dict('DEPOSIT_STATUS', To_Char(Wd.Status)) Status
6780 ,dep.Extore_Id Extore_Deposit_Id
6781 FROM lc_Wd_Bim_Deposits Wd
6782 JOIN Dep
6783 ON Dep.Value = To_Char(Wd.Id)
6784 AND dep.Modification_Date < CAST(Wd.Modification_Date AS TIMESTAMP)
6785 WHERE Wd.Modification_Date >= Last_Synch_Date
6786 AND Wd.Modification_Date < l_Start_Time;
6787 CURSOR c_Insert IS
6788 With Cust As (
6789 SELECT /*+ use_hash(Ci,C) */
6790 Ci.Id, Ci.Value, Ci.Extore_Id
6791 FROM Customer_Identifiers Ci, Customers c
6792 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6793 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
6794 AND c.Id = Ci.Extore_Id
6795 AND c.Bank_Id = Ci.Bank_Id
6796 AND c.Status = 'ACTIVE'
6797 )
6798 , Dep As (
6799 Select /*+ use_hash(Di,D) */
6800 Di.Id, Di.Value, Di.Extore_Id, d.Modification_Date
6801 From Deposit_Identifiers Di, Deposits d
6802 Where Di.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
6803 AND Di.Key = Synch.Gv_Identifiers_Key_Value
6804 AND d.Id = Di.Extore_Id
6805 AND d.Bank_Id = Di.Bank_Id
6806 )
6807 SELECT
6808 0 Seq
6809 ,CAST(Wd.Id AS NUMBER) Id
6810 ,CAST(Wd.Modification_Date AS TIMESTAMP) Modification_Date
6811 ,CAST(Wd.Contract_Number AS VARCHAR2(50 CHAR)) Contract_Number
6812 ,CAST(Wd.Contract_Ref_Number AS VARCHAR2(50 CHAR)) Contract_Ref_Number
6813 ,CAST(Wd.Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
6814 ,CAST(Wd.Current_Period_End_Date AS DATE) Current_Period_End_Date
6815 ,CAST(Wd.Current_Period_Start_Date AS DATE) Current_Period_Start_Date
6816 ,CAST(Wd.Description AS VARCHAR2(1000 CHAR)) Description
6817 ,CAST(Wd.End_Date AS TIMESTAMP) End_Date
6818 ,CAST(Wd.Interest_Rate AS NUMBER(17, 3)) Interest_Rate
6819 ,CAST(To_Number(Wd.Is_Fixed) AS NUMBER(1)) Is_Fixed
6820 ,CAST(Wd.Last_Capitalization_Date AS DATE) Last_Capitalization_Date
6821 ,CAST(Wd.Next_Capitalization_Date AS TIMESTAMP) Next_Capitalization_Date
6822 ,CAST(To_Char(Wd.Modulo) AS VARCHAR2(50 CHAR)) Modulo
6823 ,CAST(Wd.Nrb AS VARCHAR2(120 CHAR)) Nrb
6824 ,CAST(Wd.Nrb_Capital AS VARCHAR2(26 CHAR)) Nrb_Capital
6825 ,CAST(Wd.Nrb_Interest AS VARCHAR2(26 CHAR)) Nrb_Interest
6826 ,CAST(Wd.Opening_Account AS VARCHAR2(26 CHAR)) Opening_Account
6827 ,CAST(Synch.Get_Dict('DEPOSIT_INCOME_PAYMENT_TYPE', CAST(Wd.Opening_Account_Type AS VARCHAR2(255 CHAR))) AS
6828 VARCHAR2(1 CHAR)) Opening_Account_Type
6829 ,CAST(To_Char(Wd.Org_Unit) AS VARCHAR2(64 CHAR)) Org_Unit
6830 ,CAST(Wd.Period_Length AS NUMBER(19)) Period_Length
6831 ,Synch.Get_Dict('DEPOSIT_PERIOD_TYPE', To_Char(Wd.Period_Type)) Period_Type
6832 ,CAST(Wd.Prod_Type AS VARCHAR2(15 CHAR)) Prod_Type
6833 ,CAST(To_Char(Wd.Prod_Type_Id) AS VARCHAR2(64 CHAR)) Prod_Type_Id
6834 ,CAST(Wd.Renewable AS NUMBER(1)) Renewable
6835 ,CAST(CASE Upper(Synch.Get_Dict('DEPOSIT_RENEWABLE_INDICATOR', Wd.Return_Capital))
6836 WHEN 'TRUE' Then 1
6837 WHEN 'FALSE' Then 0
6838 Else NULL
6839 END AS NUMBER(1)) Return_Capital
6840 ,CAST(CASE Upper(Synch.Get_Dict('DEPOSIT_RENEWABLE_INDICATOR', Wd.Return_Interest))
6841 WHEN 'TRUE' Then 1
6842 WHEN 'FALSE' Then 0
6843 Else NULL
6844 END AS NUMBER(1)) Return_Interest
6845 ,CAST(Wd.Start_Date AS TIMESTAMP) Start_Date
6846 ,CAST(Wd.Start_Date_Amount AS NUMBER(19, 2)) Start_Date_Amount
6847 ,Synch.Get_Dict('DEPOSIT_STATUS', To_Char(Wd.Status)) Status
6848-- ,Di.Id Ident_Id
6849 FROM lc_Wd_Bim_Deposits Wd
6850 LEFT JOIN Dep
6851 ON Dep.Value = To_Char(Wd.Id)
6852 AND dep.Modification_Date < CAST(Wd.Modification_Date AS TIMESTAMP)
6853 WHERE Wd.Modification_Date >= Last_Synch_Date
6854 AND Wd.Modification_Date < l_Start_Time
6855 AND EXISTS (
6856 SELECT 1
6857 FROM lc_Wd_Bim_Deposit_Customers Dc, Cust
6858 WHERE Wd.Id = Dc.Deposit_Id
6859 AND To_Char(Dc.Customer_Id) = Cust.Value
6860 AND Upper(Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', To_Char(Dc.Role))) = 'OWNER')
6861 /*And Exists (
6862 SELECT 1
6863 FROM lc_Wd_Bim_Deposit_Balances Bdb
6864 WHERE Bdb.Deposit_Id = Wd.Id )*/
6865 AND dep.Id IS Null
6866 -- NESTBANKDU-37
6867 and not exists (select 1 from deposit_identifiers s where s.value=to_char(wd.id));
6868 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
6869 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
6870 Lupdate_Array Tupdate_Table;
6871 Linsert_Array Tinsert_Table;
6872 PROCEDURE Ins(i NUMBER) AS
6873 Vn_Deposit_Id NUMBER := Linsert_Array(i).Seq; --e_Id_Seq.Nextval;
6874 Vn_Deposit_Identifier_Id NUMBER := Linsert_Array(i).Seq+1; --e_Id_Seq.Nextval;
6875 Vn_Rows NUMBER := 0;
6876 BEGIN
6877 INSERT /* APPEND_VALUES*/ INTO Deposits d
6878 (Id
6879 ,Version
6880 ,Bank_Id
6881 ,Creation_Date
6882 ,Modification_Date
6883 ,Contract_Number
6884 ,Contract_Ref_Number
6885 ,Currency_Code_a
6886 ,Current_Period_End_Date
6887 ,Current_Period_Start_Date
6888 ,Description
6889 ,End_Date
6890 ,Interest_Rate
6891 ,Is_Fixed
6892 ,Last_Capitalization_Date
6893 ,Next_Capitalization_Date
6894 ,Modulo
6895 ,Nrb
6896 ,Nrb_Capital
6897 ,Nrb_Interest
6898 ,Opening_Account
6899 ,Opening_Account_Type
6900 ,Org_Unit
6901 ,Period_Length
6902 ,Period_Type
6903 ,Prod_Type
6904 ,Prod_Type_Id
6905 ,Renewable
6906 ,Return_Capital
6907 ,Return_Interest
6908 ,Start_Date
6909 ,Start_Date_Amount
6910 ,Status)
6911 VALUES
6912 (Vn_Deposit_Id
6913 ,0
6914 ,Synch_Restart.Current_Job_Row.Bank_Id
6915 ,l_Start_Time
6916 ,l_Start_Time
6917 ,Linsert_Array(i).Contract_Number
6918 ,Linsert_Array(i).Contract_Ref_Number
6919 ,Linsert_Array(i).Currency_Code_a
6920 ,Linsert_Array(i).Current_Period_End_Date
6921 ,Linsert_Array(i).Current_Period_Start_Date
6922 ,Linsert_Array(i).Description
6923 ,Linsert_Array(i).End_Date
6924 ,Linsert_Array(i).Interest_Rate
6925 ,Linsert_Array(i).Is_Fixed
6926 ,Linsert_Array(i).Last_Capitalization_Date
6927 ,Linsert_Array(i).Next_Capitalization_Date
6928 ,Linsert_Array(i).Modulo
6929 ,Linsert_Array(i).Nrb
6930 ,Linsert_Array(i).Nrb_Capital
6931 ,Linsert_Array(i).Nrb_Interest
6932 ,Linsert_Array(i).Opening_Account
6933 ,Linsert_Array(i).Opening_Account_Type
6934 ,Linsert_Array(i).Org_Unit
6935 ,Linsert_Array(i).Period_Length
6936 ,Linsert_Array(i).Period_Type
6937 ,Linsert_Array(i).Prod_Type
6938 ,Linsert_Array(i).Prod_Type_Id
6939 ,Linsert_Array(i).Renewable
6940 ,Linsert_Array(i).Return_Capital
6941 ,Linsert_Array(i).Return_Interest
6942 ,Linsert_Array(i).Start_Date
6943 ,Linsert_Array(i).Start_Date_Amount
6944 ,Linsert_Array(i).Status);
6945 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
6946 INSERT /* APPEND_VALUES*/ INTO Deposit_Identifiers Di
6947 (Id, Key, VALUE, Bank_Id, Extore_Id, Version, Creation_Date, Modification_Date)
6948 VALUES
6949 (Vn_Deposit_Identifier_Id
6950 ,SYNCH.gv_identifiers_key_value
6951 ,To_Char(Linsert_Array(i).Id)
6952 ,Synch_Restart.Current_Job_Row.Bank_Id
6953 ,Vn_Deposit_Id
6954 ,0
6955 ,l_Start_Time
6956 ,l_Start_Time);
6957 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
6958 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
6959 EXCEPTION
6960 WHEN OTHERS THEN
6961 Dbms_Output.Put_Line(Vn_Deposit_Id || ' ' || Vn_Deposit_Identifier_Id || ' ' || To_Char(Linsert_Array(i).Id) ||
6962 ' Error: ' || SQLERRM);
6963 END Ins;
6964 BEGIN
6965 Proc_Time := Current_Timestamp;
6966 Synch_Restart.Start_Step;
6967 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
6968 l_Start_Time := Synch_Restart.Get_Start_Time();
6969 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
6970 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
6971 Synch_Restart.Log('Start pobierania danych ');
6972 begin
6973 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Deposits');
6974 vsql:='truncate table lc_Wd_Bim_Deposits';
6975 execute immediate vsql;
6976 commit;
6977 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Deposits');
6978 end;
6979 -----lc_Bim_Customer_Invol
6980 begin
6981 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_DEPOSITS';
6982 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Deposits');
6983 vsql:='insert into lc_Wd_Bim_Deposits
6984 (select /*+ DRIVING_SITE(Wd)*/ CAST(Wd.Id AS NUMBER) Id
6985 ,CAST(Wd.Modification_Date AS TIMESTAMP) Modification_Date
6986 ,CAST(Wd.Contract_Number AS VARCHAR2(50 CHAR)) Contract_Number
6987 ,CAST(Wd.Contract_Ref_Number AS VARCHAR2(50 CHAR)) Contract_Ref_Number
6988 ,CAST(Wd.Currency_Code_a AS VARCHAR2(3 CHAR)) Currency_Code_a
6989 ,CAST(Wd.Current_Period_End_Date AS DATE) Current_Period_End_Date
6990 ,CAST(Wd.Current_Period_Start_Date AS DATE) Current_Period_Start_Date
6991 ,CAST(Wd.Description AS VARCHAR2(1000 CHAR)) Description
6992 ,CAST(Wd.End_Date AS TIMESTAMP) End_Date
6993 ,CAST(Wd.Interest_Rate AS NUMBER(17, 3)) Interest_Rate
6994 ,CAST(To_Number(Wd.Is_Fixed) AS NUMBER(1)) Is_Fixed
6995 ,CAST(Wd.Last_Capitalization_Date AS DATE) Last_Capitalization_Date
6996 ,CAST(Wd.Next_Capitalization_Date AS TIMESTAMP) Next_Capitalization_Date
6997 ,CAST(To_Char(Wd.Modulo) AS VARCHAR2(50 CHAR)) Modulo
6998 ,CAST(Wd.Nrb AS VARCHAR2(120 CHAR)) Nrb
6999 ,CAST(Wd.Nrb_Capital AS VARCHAR2(26 CHAR)) Nrb_Capital
7000 ,CAST(Wd.Nrb_Interest AS VARCHAR2(26 CHAR)) Nrb_Interest
7001 ,CAST(Wd.Opening_Account AS VARCHAR2(26 CHAR)) Opening_Account
7002 ,CAST(Wd.Opening_Account_Type AS VARCHAR2(255 CHAR)) Opening_Account_Type
7003 ,CAST(To_Char(Wd.Org_Unit) AS VARCHAR2(64 CHAR)) Org_Unit
7004 ,CAST(Wd.Period_Length AS NUMBER(19)) Period_Length
7005 ,To_Char(Wd.Period_Type) Period_Type
7006 ,CAST(Wd.Prod_Type AS VARCHAR2(15 CHAR)) Prod_Type
7007 ,CAST(To_Char(Wd.Prod_Type_Id) AS VARCHAR2(64 CHAR)) Prod_Type_Id
7008 ,CAST(Wd.Renewable AS NUMBER(1)) Renewable
7009 , Wd.Return_Capital Return_Capital
7010 ,Wd.Return_Interest Return_Interest
7011 ,CAST(Wd.Start_Date AS TIMESTAMP) Start_Date
7012 ,CAST(Wd.Start_Date_Amount AS NUMBER(19, 2)) Start_Date_Amount
7013 ,To_Char(Wd.Status) Status from Wd_Bim_Deposits Wd
7014 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
7015 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
7016 execute immediate vsql;
7017 commit;
7018 Synch_Restart.Log('wykonano:'||vsql);
7019 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Deposits');
7020 vsql:='select count(*) from lc_Wd_Bim_Deposits';
7021 execute immediate vsql into cnt;
7022 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Deposits pobrano:'||cnt||' rekord?w');
7023 end;
7024 begin
7025 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Deposit_Customers');
7026 vsql:='truncate table lc_Wd_Bim_Deposit_Customers';
7027 execute immediate vsql;
7028 commit;
7029 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Deposit_Customers');
7030 end;
7031 -----lc_Bim_Customer_Invol
7032 begin
7033 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Deposit_Customers');
7034 vsql:='insert into lc_Wd_Bim_Deposit_Customers
7035 (select /*+ DRIVING_SITE(Wd)*/ Wd1.DEPOSIT_ID
7036 ,wd1.MODIFICATION_DATE
7037 ,wd1.ROLE
7038 ,wd1.CUSTOMER_ID
7039 ,wd1.RECORD_ID
7040 from Wd_Bim_Deposit_Customers Wd1
7041 where Deposit_Id in (select wd.Id from Wd_Bim_Deposits Wd
7042 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
7043 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||'))';
7044 execute immediate vsql;
7045 commit;
7046 Synch_Restart.Log('wykonano:'||vsql);
7047 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Deposit_Customers');
7048 vsql:='select count(*) from lc_Wd_Bim_Deposit_Customers';
7049 execute immediate vsql into cnt;
7050 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Deposit_Customers pobrano:'||cnt||' rekord?w');
7051 end;
7052 /*
7053 begin
7054 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Deposit_Balances');
7055 vsql:='truncate table lc_Wd_Bim_Deposit_Balances';
7056 execute immediate vsql;
7057 commit;
7058 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Deposit_Balances');
7059 end;
7060 */
7061 /* -----lc_Bim_Customer_Invol
7062 begin
7063 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Deposit_Balances');
7064 vsql:='insert into lc_Wd_Bim_Deposit_Balances
7065 (select \*+ DRIVING_SITE(Wd)*\ Wd1.* from Wd_Bim_Deposit_Balances Wd1
7066 where Deposit_Id in (select wd.Id from Wd_Bim_Deposits Wd
7067 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
7068 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||'))';
7069 execute immediate vsql;
7070 commit;
7071 dbms_stats.gather_table_stats('EXION','lc_Wd_Bim_Deposit_Balances');
7072 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Deposit_Balances');
7073 end; */
7074 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
7075 Operation := l_Proc || '_UPDATE';
7076 Part_Time := Current_Timestamp;
7077 OPEN c_Update;
7078 LOOP
7079 FETCH c_Update BULK COLLECT
7080 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
7081 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
7082 l_Range_a := 0;
7083 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
7084 WHILE l_Range_a IS NOT NULL
7085 LOOP
7086 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
7087 UPDATE Deposits d
7088 SET d.Version = d.Version + 1
7089 ,d.Modification_Date = l_Start_Time
7090 ,d.Nrb = Lupdate_Array(i).Nrb
7091 ,d.Modulo = Lupdate_Array(i).Modulo
7092 ,d.Prod_Type = Lupdate_Array(i).Prod_Type
7093 ,d.Contract_Ref_Number = Lupdate_Array(i).Contract_Ref_Number
7094 ,d.Contract_Number = Lupdate_Array(i).Contract_Number
7095 ,d.Currency_Code_a = Lupdate_Array(i).Currency_Code_a
7096 ,d.Status = Lupdate_Array(i).Status
7097 ,d.Start_Date = Lupdate_Array(i).Start_Date
7098 ,d.End_Date = Lupdate_Array(i).End_Date
7099 ,d.Period_Length = Lupdate_Array(i).Period_Length
7100 ,d.Period_Type = Lupdate_Array(i).Period_Type
7101 ,d.Interest_Rate = Lupdate_Array(i).Interest_Rate
7102 ,d.Is_Fixed = Lupdate_Array(i).Is_Fixed
7103 ,d.Next_Capitalization_Date = Lupdate_Array(i).Next_Capitalization_Date
7104 ,d.Renewable = Lupdate_Array(i).Renewable
7105 ,d.Return_Interest = Lupdate_Array(i).Return_Interest
7106 ,d.Return_Capital = Lupdate_Array(i).Return_Capital
7107 ,d.Opening_Account = Lupdate_Array(i).Opening_Account
7108 ,d.Opening_Account_Type = Lupdate_Array(i).Opening_Account_Type
7109 ,d.Nrb_Capital = Lupdate_Array(i).Nrb_Capital
7110 ,d.Nrb_Interest = Lupdate_Array(i).Nrb_Interest
7111 ,d.Org_Unit = Lupdate_Array(i).Org_Unit
7112 ,d.Start_Date_Amount = Lupdate_Array(i).Start_Date_Amount
7113 ,d.Current_Period_Start_Date = Lupdate_Array(i).Current_Period_Start_Date
7114 ,d.Current_Period_End_Date = Lupdate_Array(i).Current_Period_End_Date
7115 ,d.Last_Capitalization_Date = Lupdate_Array(i).Last_Capitalization_Date
7116 -- ,d.Active_Blockade = Lupdate_Array(i).Active_Blockade
7117 ,d.Prod_Type_Id = Lupdate_Array(i).Prod_Type_Id
7118 ,d.Description = Lupdate_Array(i).Description
7119 WHERE d.Id = Lupdate_Array(i).Extore_Deposit_Id;
7120 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
7121 l_Range_a := l_Range_b + 1;
7122 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
7123 END LOOP;
7124 EXIT WHEN c_Update%NOTFOUND;
7125 END LOOP;
7126 CLOSE c_Update;
7127 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7128 Part_Time := Current_Timestamp;
7129 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
7130 Operation := l_Proc || '_INSERT';
7131 OPEN c_Insert;
7132 LOOP
7133 FETCH c_Insert BULK COLLECT
7134 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
7135 If Linsert_Array.Count > 0 Then
7136 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count*2, v_Seq_From, v_Seq_To );
7137 For i In 1..Linsert_Array.Count
7138 Loop
7139 Linsert_Array(i).Seq := v_Seq_From + (i-1)*2;
7140 End Loop;
7141 End If;
7142 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
7143 l_Range_a := 0;
7144 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
7145 WHILE l_Range_a IS NOT NULL
7146 LOOP
7147 FOR i IN l_Range_a .. l_Range_b
7148 LOOP
7149 Tmp_Wd_Id := Linsert_Array(i).Id;
7150 Ins(i);
7151 END LOOP;
7152 -- Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
7153 l_Range_a := l_Range_b + 1;
7154 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
7155 END LOOP;
7156 EXIT WHEN c_Insert%NOTFOUND;
7157 END LOOP;
7158 CLOSE c_Insert;
7159 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7160 Part_Time := Current_Timestamp;
7161 Operation := l_Proc || '_After_Loops';
7162 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
7163 Synch.Set_Last_Synch_Date(l_Program);
7164 Synch_Restart.End_Step;
7165 EXCEPTION
7166 WHEN OTHERS THEN
7167 IF Operation = l_Proc || '_INSERT' THEN
7168 Synch_Restart.Error_Log(l_Program, Operation || ', Deposit_Id: ' || Tmp_Wd_Id || ', ERROR_CODE: ' || SQLERRM);
7169 ELSIF Operation = l_Proc || '_UPDATE' THEN
7170 IF SQL%Bulk_Exceptions.Count > 0 THEN
7171 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7172 LOOP
7173 Synch_Restart.Error_Log(l_Program
7174 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7175 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7176 END LOOP;
7177 END IF;
7178 END IF;
7179 Synch_Restart.Error_Log(l_Program, Operation);
7180 ROLLBACK;
7181 END Prc_Deposits;
7182 PROCEDURE Prc_Deposit_Balances AS
7183 l_Proc VARCHAR2(100) := 'PRC_DEPOSIT_BALANCES';
7184 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
7185 Last_Synch_Date DATE;
7186 l_Start_Time DATE;
7187 Operation VARCHAR2(100);
7188 Ln_Buff_Len NUMBER := 0;
7189 l_Range_a NUMBER := 0;
7190 l_Range_b NUMBER := 0;
7191 v_Seq_From Integer;
7192 v_Seq_To Integer;
7193 vsql varchar2(4000);
7194 synch_d varchar2(100);
7195 cnt number;
7196 CURSOR c_Update IS
7197 WITH Dep AS
7198 (SELECT /*+ use_hash(Di,D) */
7199 Di.Id, Di.Value, Di.Extore_Id
7200 FROM Deposit_Identifiers Di, Deposits d
7201 WHERE Di.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7202 AND Di.Key = Synch.Gv_Identifiers_Key_Value
7203 AND d.Id = Di.Extore_Id
7204 AND d.Bank_Id = Di.Bank_Id)
7205 ---SELECT /*+ driving_site(wd) use_hash(wd,dep,Db) */
7206 SELECT
7207 CAST(Wd.Available_Balance_Amount AS NUMBER(19, 2)) Available_Balance_Amount
7208 ,CAST(Wd.Accrued_Interest AS NUMBER(17, 2)) Accrued_Interest
7209 ,CAST(Wd.Overpaid_Amount AS NUMBER(17, 2)) Overpaid_Amount
7210 ,CAST(Wd.Hold_Amount AS NUMBER(17, 2)) Hold_Amount
7211 ,Db.Id
7212 FROM lc_Wd_Bim_Deposit_Balances Wd
7213 JOIN Dep
7214 ON To_Char(Wd.Deposit_Id) = Dep.Value
7215 JOIN Deposit_Balances Db
7216 ON Db.Modification_Date < CAST(Wd.Modification_Date AS TIMESTAMP)
7217 AND Db.Deposit_Id = dep.Extore_Id
7218 AND Db.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7219 WHERE Wd.Modification_Date >= Last_Synch_Date
7220 AND Wd.Modification_Date < l_Start_Time;
7221 CURSOR c_Insert IS
7222 WITH Dep AS
7223 (SELECT /*+ use_hash(Di,D) */
7224 Di.Id, Di.Value, Di.Extore_Id
7225 FROM Deposit_Identifiers Di, Deposits d
7226 WHERE Di.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7227 AND Di.Key = Synch.Gv_Identifiers_Key_Value
7228 AND d.Id = Di.Extore_Id
7229 AND d.Bank_Id = Di.Bank_Id)
7230 ---SELECT /*+ driving_site(wd) use_hash(wd,dep,Db) */
7231 SELECT
7232 0 Seq
7233 ,CAST(Wd.Available_Balance_Amount AS NUMBER(19, 2)) Available_Balance_Amount
7234 ,CAST(Wd.Accrued_Interest AS NUMBER(17, 2)) Accrued_Interest
7235 ,CAST(Wd.Overpaid_Amount AS NUMBER(17, 2)) Overpaid_Amount
7236 ,CAST(Wd.Hold_Amount AS NUMBER(17, 2)) Hold_Amount
7237 ,dep.Extore_Id Id
7238 FROM lc_Wd_Bim_Deposit_Balances Wd
7239 JOIN Dep
7240 On To_Char(Wd.Deposit_Id) = Dep.Value
7241 LEFT JOIN Deposit_Balances Db
7242 ON Db.Deposit_Id = dep.Extore_Id
7243 AND Db.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7244 WHERE Wd.Modification_Date >= Last_Synch_Date
7245 AND Wd.Modification_Date < l_Start_Time
7246 AND Db.Id IS NULL;
7247 CURSOR c_Delete IS
7248 SELECT 1 FROM Dual WHERE 1 = 2;
7249 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
7250 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
7251 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
7252 Lupdate_Array Tupdate_Table;
7253 Linsert_Array Tinsert_Table;
7254 Ldelete_Array Tdelete_Table;
7255 BEGIN
7256 Proc_Time := Current_Timestamp;
7257 Synch_Restart.Start_Step;
7258 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
7259 l_Start_Time := Synch_Restart.Get_Start_Time();
7260 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
7261 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
7262 begin
7263 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Deposit_Balances');
7264 vsql:='truncate table lc_Wd_Bim_Deposit_Balances';
7265 execute immediate vsql;
7266 commit;
7267 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Deposit_Balances');
7268 end;
7269 -----lc_Bim_Customer_Invol
7270 begin
7271 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_DEPOSIT_BALANCES';
7272 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Deposit_Balances');
7273 vsql:='insert into lc_Wd_Bim_Deposit_Balances
7274 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Deposit_Balances Wd
7275 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
7276 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
7277 execute immediate vsql;
7278 commit;
7279 Synch_Restart.Log('wykonano:'||vsql);
7280 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Deposit_Balances');
7281 vsql:='select count(*) from lc_Wd_Bim_Deposit_Balances';
7282 execute immediate vsql into cnt;
7283 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Deposit_Balances pobrano:'||cnt||' rekord?w');
7284 end;
7285 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
7286 Operation := l_Proc || '_UPDATE';
7287 Part_Time := Current_Timestamp;
7288 OPEN c_Update;
7289 LOOP
7290 FETCH c_Update BULK COLLECT
7291 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
7292 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
7293 l_Range_a := 0;
7294 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
7295 WHILE l_Range_a IS NOT NULL
7296 LOOP
7297 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
7298 UPDATE Deposit_Balances Db
7299 SET Db.Version = Db.Version + 1
7300 ,Db.Modification_Date = l_Start_Time
7301 ,Db.Available_Balance_Amount = Lupdate_Array(i).Available_Balance_Amount
7302 ,Db.Accrued_Interest = Lupdate_Array(i).Accrued_Interest
7303 ,Db.Overpaid_Amount = Lupdate_Array(i).Overpaid_Amount
7304 ,Db.Hold_Amount = Lupdate_Array(i).Hold_Amount
7305 WHERE Db.Id = Lupdate_Array(i).Id;
7306 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
7307 l_Range_a := l_Range_b + 1;
7308 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
7309 END LOOP;
7310 EXIT WHEN c_Update%NOTFOUND;
7311 END LOOP;
7312 CLOSE c_Update;
7313 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7314 Part_Time := Current_Timestamp;
7315 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
7316 Operation := l_Proc || '_INSERT';
7317 OPEN c_Insert;
7318 LOOP
7319 FETCH c_Insert BULK COLLECT
7320 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
7321 If Linsert_Array.Count > 0 Then
7322 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
7323 For i In 1..Linsert_Array.Count
7324 Loop
7325 Linsert_Array(i).Seq := v_Seq_From + (i-1);
7326 End Loop;
7327 End If;
7328 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
7329 l_Range_a := 0;
7330 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
7331 WHILE l_Range_a IS NOT NULL
7332 LOOP
7333 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
7334 INSERT /* APPEND_VALUES*/ INTO Deposit_Balances Db
7335 (Id
7336 ,Version
7337 ,Bank_Id
7338 ,Creation_Date
7339 ,Modification_Date
7340 ,Deposit_Id
7341 ,Available_Balance_Amount
7342 ,Accrued_Interest
7343 ,Overpaid_Amount
7344 ,Hold_Amount)
7345 VALUES
7346 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
7347 ,0
7348 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
7349 ,l_Start_Time
7350 ,l_Start_Time
7351 ,Linsert_Array(i).Id
7352 ,Linsert_Array(i).Available_Balance_Amount
7353 ,Linsert_Array(i).Accrued_Interest
7354 ,Linsert_Array(i).Overpaid_Amount
7355 ,Linsert_Array(i).Hold_Amount);
7356 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
7357 l_Range_a := l_Range_b + 1;
7358 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
7359 END LOOP;
7360 EXIT WHEN c_Insert%NOTFOUND;
7361 END LOOP;
7362 CLOSE c_Insert;
7363 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7364 Part_Time := Current_Timestamp;
7365 --
7366 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
7367 Operation := l_Proc || '_DELETE';
7368 OPEN c_Delete;
7369 LOOP
7370 FETCH c_Delete BULK COLLECT
7371 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
7372 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
7373 l_Range_a := 0;
7374 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
7375 WHILE l_Range_a IS NOT NULL
7376 LOOP
7377 l_Range_a := l_Range_b + 1;
7378 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
7379 END LOOP;
7380 EXIT WHEN c_Delete%NOTFOUND;
7381 END LOOP;
7382 CLOSE c_Delete;
7383 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7384 --
7385 Operation := l_Proc || '_After_Loops';
7386 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
7387 Synch.Set_Last_Synch_Date(l_Program);
7388 Synch_Restart.End_Step;
7389 EXCEPTION
7390 WHEN OTHERS THEN
7391 IF SQL%Bulk_Exceptions.Count > 0 THEN
7392 IF Operation = l_Proc || '_INSERT' THEN
7393 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7394 LOOP
7395 Synch_Restart.Error_Log(l_Program
7396 ,Operation || ', Product_Type_Id: ' || --Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7397 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7398 END LOOP;
7399 ELSIF Operation = l_Proc || '_UPDATE' THEN
7400 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7401 LOOP
7402 Synch_Restart.Error_Log(l_Program
7403 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7404 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7405 END LOOP;
7406 ELSIF Operation = l_Proc || '_DELETE' THEN
7407 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7408 LOOP
7409 Synch_Restart.Error_Log(l_Program
7410 ,Operation || ', Product_Type_Id: ' || --Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7411 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7412 END LOOP;
7413 END IF;
7414 END IF;
7415 Synch_Restart.Error_Log(l_Program, Operation);
7416 ROLLBACK;
7417 END Prc_Deposit_Balances;
7418 PROCEDURE Prc_Deposit_Customers AS
7419 l_Proc VARCHAR2(100) := 'PRC_DEPOSIT_CUSTOMERS';
7420 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
7421 Last_Synch_Date DATE;
7422 l_Start_Time DATE;
7423 Operation VARCHAR2(100);
7424 Ln_Buff_Len NUMBER := 0;
7425 l_Range_a NUMBER := 0;
7426 l_Range_b NUMBER := 0;
7427 v_Seq_From Integer;
7428 v_Seq_To Integer;
7429 vsql varchar2(4000);
7430 synch_d varchar2(100);
7431 cnt number;
7432 CURSOR c_Update IS
7433 WITH Cust As (
7434 SELECT /*+ use_hash(Ci,C) */
7435 Ci.Id, Ci.Value, Ci.Extore_Id
7436 FROM Customer_Identifiers Ci, Customers c
7437 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7438 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
7439 AND c.Id = Ci.Extore_Id
7440 AND c.Bank_Id = Ci.Bank_Id
7441 AND c.Status = 'ACTIVE'
7442 )
7443 , Dep As (
7444 Select /*+ use_hash(Di,D) */
7445 Di.Id, Di.Value, Di.Extore_Id
7446 From Deposit_Identifiers Di, Deposits d
7447 Where Di.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7448 AND Di.Key = Synch.Gv_Identifiers_Key_Value
7449 AND d.Id = Di.Extore_Id
7450 AND d.Bank_Id = Di.Bank_Id
7451 )
7452 --SELECT /*+ driving_site(wd) use_hash(wd,dep,Dc,Cust) */
7453 SELECT
7454 dep.Extore_Id Deposit_Id
7455 , cust.Extore_Id Customer_Id
7456 , 'OWNER' Role
7457 , Dc.Id
7458 FROM lc_Wd_Bim_Deposit_Customers Wd
7459 JOIN Dep
7460 ON To_Char(Wd.Deposit_Id) = Dep.Value
7461 JOIN Cust
7462 ON To_Char(Wd.Customer_Id) = Cust.Value
7463 JOIN Deposit_Customers Dc
7464 ON Dc.Extore_Id = Dep.Extore_Id
7465 And dc.customer_extore_id = cust.extore_id
7466 AND Dc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7467 AND Dc.Modification_Date < CAST(Wd.Modification_Date AS TIMESTAMP)
7468 WHERE Upper(Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', To_Char(Wd.Role))) = 'OWNER'
7469 AND Wd.Modification_Date >= Last_Synch_Date
7470 AND Wd.Modification_Date < l_Start_Time;
7471 CURSOR c_Insert IS
7472 WITH Cust As (
7473 SELECT /*+ use_hash(Ci,C) */
7474 Ci.Id, Ci.Value, Ci.Extore_Id
7475 FROM Customer_Identifiers Ci, Customers c
7476 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7477 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
7478 AND c.Id = Ci.Extore_Id
7479 AND c.Bank_Id = Ci.Bank_Id
7480 AND c.Status = 'ACTIVE'
7481 )
7482 , Dep As (
7483 Select /*+ use_hash(Di,D) */
7484 Di.Id, Di.Value, Di.Extore_Id
7485 From Deposit_Identifiers Di, Deposits d
7486 Where Di.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7487 AND Di.Key = Synch.Gv_Identifiers_Key_Value
7488 AND d.Id = Di.Extore_Id
7489 AND d.Bank_Id = Di.Bank_Id
7490 )
7491 ---SELECT /*+ driving_site(wd) use_hash(wd,dep,Dc,Cust) */
7492 SELECT
7493 0 Seq
7494 , 'OWNER' Role
7495 , dep.Extore_Id Deposit_Id
7496 , cust.Extore_Id Customer_Id
7497 FROM lc_Wd_Bim_Deposit_Customers Wd
7498 JOIN Dep
7499 ON To_Char(Wd.Deposit_Id) = Dep.Value
7500 JOIN Cust
7501 ON To_Char(Wd.Customer_Id) = Cust.Value
7502 LEFT JOIN Deposit_Customers Dc
7503 ON Dc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7504 And Dc.Extore_Id = Dep.Extore_Id
7505 AND dc.customer_extore_id = cust.extore_id
7506 WHERE Dc.Id IS NULL
7507 AND Upper(Synch.Get_Dict('CUSTOMER_2_PRODUCT_ROLE', To_Char(Wd.Role))) = 'OWNER'
7508 AND Wd.Modification_Date >= Last_Synch_Date
7509 AND Wd.Modification_Date < l_Start_Time;
7510 CURSOR c_Delete IS
7511 SELECT 1 FROM Dual WHERE 1 = 2;
7512 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
7513 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
7514 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
7515 Lupdate_Array Tupdate_Table;
7516 Linsert_Array Tinsert_Table;
7517 Ldelete_Array Tdelete_Table;
7518 BEGIN
7519 Proc_Time := Current_Timestamp;
7520 Synch_Restart.Start_Step;
7521 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
7522 l_Start_Time := Synch_Restart.Get_Start_Time();
7523 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
7524 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
7525 begin
7526 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Deposit_Customers');
7527 vsql:='truncate table lc_Wd_Bim_Deposit_Customers';
7528 execute immediate vsql;
7529 commit;
7530 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Deposit_Customers');
7531 end;
7532 -----lc_Bim_Customer_Invol
7533 begin
7534 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_DEPOSIT_CUSTOMERS';
7535 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Deposit_Customers');
7536 vsql:='insert into lc_Wd_Bim_Deposit_Customers
7537 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from lc_Wd_Bim_Deposit_Customers Wd
7538 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
7539 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
7540 execute immediate vsql;
7541 commit;
7542 Synch_Restart.Log('wykonano:'||vsql);
7543 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Deposit_Customers');
7544 vsql:='select count(*) from lc_Wd_Bim_Deposit_Customers';
7545 execute immediate vsql into cnt;
7546 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Deposit_Customers pobrano:'||cnt||' rekord?w');
7547 end;
7548 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
7549 Operation := l_Proc || '_UPDATE';
7550 Part_Time := Current_Timestamp;
7551 OPEN c_Update;
7552 LOOP
7553 FETCH c_Update BULK COLLECT
7554 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
7555 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
7556 l_Range_a := 0;
7557 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
7558 WHILE l_Range_a IS NOT NULL
7559 LOOP
7560 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
7561 UPDATE Deposit_Customers Dc
7562 SET Dc.Version = Dc.Version + 1
7563 ,Dc.Modification_Date = l_Start_Time
7564 ,Dc.Role = Lupdate_Array(i).Role
7565 ,Dc.Extore_Id = Lupdate_Array(i).Deposit_Id
7566 ,Dc.Customer_Extore_Id = Lupdate_Array(i).Customer_Id
7567 WHERE Dc.Id = Lupdate_Array(i).Id;
7568 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
7569 l_Range_a := l_Range_b + 1;
7570 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
7571 END LOOP;
7572 EXIT WHEN c_Update%NOTFOUND;
7573 END LOOP;
7574 CLOSE c_Update;
7575 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7576 Part_Time := Current_Timestamp;
7577 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
7578 Operation := l_Proc || '_INSERT';
7579 OPEN c_Insert;
7580 LOOP
7581 FETCH c_Insert BULK COLLECT
7582 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
7583 If Linsert_Array.Count > 0 Then
7584 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
7585 For i In 1..Linsert_Array.Count
7586 Loop
7587 Linsert_Array(i).Seq := v_Seq_From + (i-1);
7588 End Loop;
7589 End If;
7590 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
7591 l_Range_a := 0;
7592 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
7593 WHILE l_Range_a IS NOT NULL
7594 LOOP
7595 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
7596 INSERT /* APPEND_VALUES*/ INTO Deposit_Customers Dc
7597 (Id, Bank_Id, Version, Creation_Date, Modification_Date, Extore_Id, Customer_Extore_Id, Role)
7598 VALUES
7599 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
7600 ,Synch_Restart.Current_Job_Row.Bank_Id
7601 ,0
7602 ,l_Start_Time
7603 ,l_Start_Time
7604 ,Linsert_Array(i).Deposit_Id
7605 ,Linsert_Array(i).Customer_Id
7606 ,Linsert_Array(i).Role);
7607 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
7608 l_Range_a := l_Range_b + 1;
7609 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
7610 END LOOP;
7611 EXIT WHEN c_Insert%NOTFOUND;
7612 END LOOP;
7613 CLOSE c_Insert;
7614 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7615 Part_Time := Current_Timestamp;
7616 --
7617 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
7618 Operation := l_Proc || '_DELETE';
7619 OPEN c_Delete;
7620 LOOP
7621 FETCH c_Delete BULK COLLECT
7622 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
7623 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
7624 l_Range_a := 0;
7625 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
7626 WHILE l_Range_a IS NOT NULL
7627 LOOP
7628 l_Range_a := l_Range_b + 1;
7629 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
7630 END LOOP;
7631 EXIT WHEN c_Delete%NOTFOUND;
7632 END LOOP;
7633 CLOSE c_Delete;
7634 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7635 --
7636 Operation := l_Proc || '_After_Loops';
7637 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
7638 Synch.Set_Last_Synch_Date(l_Program);
7639 Synch_Restart.End_Step;
7640 EXCEPTION
7641 WHEN OTHERS THEN
7642 IF SQL%Bulk_Exceptions.Count > 0 THEN
7643 IF Operation = l_Proc || '_INSERT' THEN
7644 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7645 LOOP
7646 Synch_Restart.Error_Log(l_Program
7647 ,Operation || ', Product_Type_Id: ' || --Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7648 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7649 END LOOP;
7650 ELSIF Operation = l_Proc || '_UPDATE' THEN
7651 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7652 LOOP
7653 Synch_Restart.Error_Log(l_Program
7654 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7655 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7656 END LOOP;
7657 ELSIF Operation = l_Proc || '_DELETE' THEN
7658 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7659 LOOP
7660 Synch_Restart.Error_Log(l_Program
7661 ,Operation || ', Product_Type_Id: ' || --Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7662 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7663 END LOOP;
7664 END IF;
7665 END IF;
7666 Synch_Restart.Error_Log(l_Program, Operation);
7667 ROLLBACK;
7668 END Prc_Deposit_Customers;
7669 PROCEDURE Prc_Card_Types AS
7670 l_Proc VARCHAR2(100) := 'PRC_CARD_TYPES';
7671 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
7672 Last_Synch_Date DATE;
7673 l_Start_Time DATE;
7674 Operation VARCHAR2(100);
7675 Ln_Buff_Len NUMBER := 0;
7676 l_Range_a NUMBER := 0;
7677 l_Range_b NUMBER := 0;
7678 v_Seq_From Integer;
7679 v_Seq_To Integer;
7680 vsql varchar2(4000);
7681 synch_d varchar2(100);
7682 cnt number;
7683 CURSOR c_Update IS
7684 --SELECT /*+ driving_Site(Wd) use_hash(wd,Ct) */
7685 SELECT
7686 Cast(Ct.Prod_Type_Id As Number(19)) Prod_Type_Id
7687 ,CAST(Wd.Name AS VARCHAR2(200 CHAR)) Name
7688 ,Synch.Get_Dict('CARD_TYPE', Wd.Card_Type) Card_Type
7689 ,CAST(Wd.Product_Symbol AS VARCHAR2(15 CHAR)) Product_Symbol
7690 ,Synch.Get_Dict('CARD_TYPE_STATUS', Wd.Status) Status
7691 ,CAST(Wd.Bim_Visible AS VARCHAR2(1 CHAR)) Bim_Visible
7692 ,Synch.Get_Dict('CUSTOMER_TYPE', Wd.Customer_Type) Customer_Type
7693 ,Ct.Id
7694 FROM LC_Wd_Bim_Card_Types Wd
7695 JOIN Card_Types Ct
7696 ON Ct.Prod_Type_Id = Wd.Id
7697 AND Ct.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7698 --AND CAST(Wd.Modification_Date AS TIMESTAMP(6)) > Ct.Modification_Date ---FMBANK-40432
7699 AND ct.Modification_Date>= Last_Synch_Date---FMBANK-40432
7700 WHERE Wd.Modification_Date >= Last_Synch_Date
7701 AND Wd.Modification_Date < l_Start_Time;
7702 CURSOR c_Insert IS
7703 --SELECT /*+ driving_Site(Wd) use_hash(wd,Ct) */
7704 SELECT
7705 cast(0 As number) Id
7706 ,CAST(Wd.Id AS NUMBER(19)) Prod_Type_Id
7707 ,CAST(Wd.Name AS VARCHAR2(200 CHAR)) NAME
7708 ,Synch.Get_Dict('CARD_TYPE', Wd.Card_Type) Card_Type
7709 ,CAST(Wd.Product_Symbol AS VARCHAR2(15 CHAR)) Product_Symbol
7710 ,Synch.Get_Dict('CARD_TYPE_STATUS', Wd.Status) Status
7711 ,CAST(Wd.Bim_Visible AS VARCHAR2(1 CHAR)) Bim_Visible
7712 ,Synch.Get_Dict('CUSTOMER_TYPE', Wd.Customer_Type) Customer_Type
7713 FROM LC_Wd_Bim_Card_Types Wd
7714 LEFT JOIN Card_Types Ct
7715 ON Ct.Prod_Type_Id = Wd.Id
7716 AND Ct.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7717 WHERE Ct.Prod_Type_Id IS NULL
7718 AND Wd.Modification_Date >= Last_Synch_Date
7719 AND Wd.Modification_Date < l_Start_Time;
7720 CURSOR c_Inactiv IS
7721 SELECT Ct.Id
7722 FROM Card_Types Ct
7723 WHERE Ct.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7724 AND NOT EXISTS (--SELECT /*+ driving_site(wd) */1
7725 SELECT 1
7726 FROM LC_Wd_Bim_Card_Types Wd
7727 WHERE Wd.Id = Ct.Prod_Type_Id);
7728 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
7729 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
7730 TYPE Tinactive_Table IS TABLE OF c_Inactiv%ROWTYPE;
7731 Lupdate_Array Tupdate_Table;
7732 Linsert_Array Tinsert_Table;
7733 Linactive_Array Tinactive_Table;
7734 BEGIN
7735 Proc_Time := Current_Timestamp;
7736 Synch_Restart.Start_Step;
7737 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
7738 l_Start_Time := Synch_Restart.Get_Start_Time();
7739 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
7740 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
7741 begin
7742 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Card_Types');
7743 vsql:='truncate table lc_Wd_Bim_Card_Types';
7744 execute immediate vsql;
7745 commit;
7746 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Card_Types');
7747 end;
7748 begin
7749 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_CARD_TYPES';
7750 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Card_Types od:'||synch_d);
7751------------ FMBANK-44491
7752 vsql:='insert into lc_Wd_Bim_Card_Types
7753 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Card_Types Wd'||')';
7754 -- vsql:='insert into lc_Wd_Bim_Card_Types
7755 -- (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Card_Types Wd
7756 -- WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
7757 -- ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
7758-----------------
7759 execute immediate vsql;
7760 commit;
7761 Synch_Restart.Log('wykonano:'||vsql);
7762 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Card_Types');
7763 vsql:='select count(*) from lc_Wd_Bim_Card_Types';
7764 execute immediate vsql into cnt;
7765 Synch_Restart.Log('Koniec dodawanie ' || 'LC_Wd_Bim_Cust_Phone pobrano:'||cnt||' rekord?w');
7766 end;
7767 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
7768 Operation := l_Proc || '_UPDATE';
7769 Part_Time := Current_Timestamp;
7770 OPEN c_Update;
7771 LOOP
7772 FETCH c_Update BULK COLLECT
7773 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
7774 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
7775 l_Range_a := 0;
7776 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
7777 WHILE l_Range_a IS NOT NULL
7778 LOOP
7779 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
7780 UPDATE Card_Types Ct
7781 SET Ct.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7782 ,Ct.Version = Ct.Version + 1
7783 ,Ct.Modification_Date = l_Start_Time
7784 ,Ct.Prod_Type_Id = Lupdate_Array(i).Prod_Type_Id
7785 ,Ct.Name = Lupdate_Array(i).Name
7786 ,Ct.Card_Type = Lupdate_Array(i).Card_Type
7787 ,Ct.Product_Symbol = Lupdate_Array(i).Product_Symbol
7788 ,Ct.Status = Lupdate_Array(i).Status
7789 ,Ct.Bim_Visible = Lupdate_Array(i).Bim_Visible
7790 ,Ct.Customer_Type = Lupdate_Array(i).Customer_Type
7791 WHERE Ct.Id = Lupdate_Array(i).Id;
7792 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
7793 l_Range_a := l_Range_b + 1;
7794 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
7795 END LOOP;
7796 EXIT WHEN c_Update%NOTFOUND;
7797 END LOOP;
7798 CLOSE c_Update;
7799 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7800 Part_Time := Current_Timestamp;
7801 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
7802 Operation := l_Proc || '_INSERT';
7803 OPEN c_Insert;
7804 LOOP
7805 FETCH c_Insert BULK COLLECT
7806 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
7807 If Linsert_Array.Count > 0 Then
7808 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
7809 For i In 1..Linsert_Array.Count
7810 Loop
7811 Linsert_Array(i).Id := v_Seq_From + (i-1);
7812 End Loop;
7813 End If;
7814 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
7815 l_Range_a := 0;
7816 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
7817 WHILE l_Range_a IS NOT NULL
7818 LOOP
7819 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
7820 INSERT /* APPEND_VALUES*/ INTO Card_Types Ct
7821 (Ct.Id
7822 ,Ct.Bank_Id
7823 ,Ct.Version
7824 ,Ct.Creation_Date
7825 ,Ct.Modification_Date
7826 ,Ct.Prod_Type_Id
7827 ,Ct.Name
7828 ,Ct.Card_Type
7829 ,Ct.Product_Symbol
7830 ,Ct.Status
7831 ,Ct.Bim_Visible
7832 ,Ct.Customer_Type)
7833 VALUES
7834 (Linsert_Array(i).Id --e_Id_Seq.Nextval
7835 ,Synch_Restart.Current_Job_Row.Bank_Id
7836 ,0
7837 ,l_Start_Time
7838 ,l_Start_Time
7839 ,Linsert_Array(i).Prod_Type_Id
7840 ,Linsert_Array(i).Name
7841 ,Linsert_Array(i).Card_Type
7842 ,Linsert_Array(i).Product_Symbol
7843 ,Linsert_Array(i).Status
7844 ,Linsert_Array(i).Bim_Visible
7845 ,Linsert_Array(i).Customer_Type);
7846 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
7847 l_Range_a := l_Range_b + 1;
7848 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
7849 END LOOP;
7850 EXIT WHEN c_Insert%NOTFOUND;
7851 END LOOP;
7852 CLOSE c_Insert;
7853 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7854 Part_Time := Current_Timestamp;
7855 --
7856 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
7857 Operation := l_Proc || '_INACTIV';
7858 OPEN c_Inactiv;
7859 LOOP
7860 FETCH c_Inactiv BULK COLLECT
7861 INTO Linactive_Array LIMIT Synch.l_Bulk_Limit;
7862 Synch_Restart.Counter_Log(0, Linactive_Array.Count, 0);
7863 l_Range_a := 0;
7864 Synch.Piece(l_Range_a, l_Range_b, Linactive_Array.Count);
7865 WHILE l_Range_a IS NOT NULL
7866 LOOP
7867 FORALL i IN INDICES OF Linactive_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
7868 UPDATE Card_Types Ct
7869 SET Ct.Status = 'INACTIVE', Ct.Modification_Date = l_Start_Time, Ct.Version = Ct.Version + 1
7870 WHERE Ct.Id = Linactive_Array(i).Id;
7871 Synch.Flush_Buff(Ln_Buff_Len, c_Inactiv%NOTFOUND);
7872 l_Range_a := l_Range_b + 1;
7873 Synch.Piece(l_Range_a, l_Range_b, Linactive_Array.Count);
7874 END LOOP;
7875 EXIT WHEN c_Inactiv%NOTFOUND;
7876 END LOOP;
7877 CLOSE c_Inactiv;
7878 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
7879 --
7880 Operation := l_Proc || '_After_Loops';
7881 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
7882 Synch.Set_Last_Synch_Date(l_Program);
7883 Synch_Restart.End_Step;
7884 EXCEPTION
7885 WHEN OTHERS THEN
7886 IF SQL%Bulk_Exceptions.Count > 0 THEN
7887 IF Operation = l_Proc || '_INSERT' THEN
7888 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7889 LOOP
7890 Synch_Restart.Error_Log(l_Program
7891 ,Operation || ', Product_Type_Id: ' || --Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7892 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7893 END LOOP;
7894 ELSIF Operation = l_Proc || '_UPDATE' THEN
7895 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7896 LOOP
7897 Synch_Restart.Error_Log(l_Program
7898 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7899 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7900 END LOOP;
7901 ELSIF Operation = l_Proc || '_INACTIV' THEN
7902 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
7903 LOOP
7904 Synch_Restart.Error_Log(l_Program
7905 ,Operation || ', Product_Type_Id: ' || --Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
7906 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
7907 END LOOP;
7908 END IF;
7909 END IF;
7910 Synch_Restart.Error_Log(l_Program, Operation);
7911 ROLLBACK;
7912 END Prc_Card_Types;
7913 PROCEDURE Prc_Cards AS
7914 l_Proc VARCHAR2(100) := 'PRC_CARDS';
7915 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
7916 Last_Synch_Date DATE;
7917 l_Start_Time DATE;
7918 Operation VARCHAR2(100);
7919 Ln_Buff_Len NUMBER := 0;
7920 l_Range_a NUMBER := 0;
7921 l_Range_b NUMBER := 0;
7922 Vn_Rows NUMBER := 0;
7923 Lmain_Array Tab_Cards := Tab_Cards();
7924 Tab_Ids Table_Of_Number := Table_Of_Number();
7925 Tmp_Wd_Id NUMBER;
7926 v_Seq_From Integer;
7927 v_Seq_To Integer;
7928 vsql varchar2(4000);
7929 synch_d varchar2(100);
7930 cnt number;
7931 CURSOR c_Main IS
7932 -- SELECT /*+ driving_site(wd) */
7933 SELECT
7934 Rec_Cards(Id
7935 ,Wd.Modification_Date
7936 ,Account_Number
7937 ,Current_Balance
7938 ,Debit_Nr_Prev_Period
7939 ,Debit_r_Prev_Period
7940 ,Debit_Sum
7941 ,Due_Amt_Prev_Period
7942 ,Holds_Sum
7943 ,Card_Code
7944 ,Cash_Interest_Rate
7945 ,Purchase_Interest_Rate
7946 ,Card_Name
7947 ,Card_Number
7948 ,Card_Owner_Name
7949 ,Card_Owner_Surname
7950 ,Card_Role
7951 ,Card_Type
7952 ,CAST(Payment_Date AS DATE)
7953 ,Start_Date
7954 ,End_Date
7955 ,Currency_Code_a
7956 ,To_Char(Status)
7957 ,Credit_Limit
7958 ,Contract_Id
7959 ,Instalment_Interest_Rate
7960 ,CAST( Settlement_Start_Date As Timestamp(6) )
7961 ,CAST( Settlement_End_Date As Timestamp(6) )
7962 ,Contract_Ref_Number
7963 ,Contract_Start_Date
7964 ,Contract_End_Date
7965 ,Residue_Amt_Prev_Period
7966 ,Residue_Prev_Period
7967 ,WdCd.Reservation_Date
7968 ,Atm_Balance_Limit
7969 ,Atm_Limit_Available
7970 ,Wd.Blockade_Reason)
7971 FROM lc_Wd_Bim_Cards Wd, lc_Wd_Bim_Card_Details WdCd
7972 WHERE Wd.Modification_Date >= Last_Synch_Date
7973 AND Wd.Modification_Date < l_Start_Time
7974 AND Wd.Id=WdCd.Card_ID(+);
7975 CURSOR c_Update IS
7976 WITH Car AS
7977 ( SELECT /*+ use_hash(Ci,C) */
7978 Ci.Value, Ci.Extore_Id, c.Modification_Date
7979 FROM Card_Identifiers Ci
7980 , Cards c
7981 WHERE Ci.Key = Synch.Gv_Identifiers_Key_Value
7982 AND Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
7983 AND c.Id = Ci.Extore_Id
7984 AND c.Bank_Id = Ci.Bank_Id
7985 )
7986 SELECT /*+ use_hash(wd,car) */
7987 Wd.Id
7988 ,Car.Extore_Id Extore_Card_Id
7989 ,Wd.Account_Number
7990 ,Wd.Current_Balance
7991 ,Wd.Debit_Nr_Prev_Period
7992 ,Wd.Debit_r_Prev_Period
7993 ,Wd.Debit_Sum
7994 ,Wd.Due_Amt_Prev_Period
7995 ,Wd.Holds_Sum
7996 ,Wd.Card_Code
7997 ,Wd.Cash_Interest_Rate
7998 ,Wd.Purchase_Interest_Rate
7999 ,Wd.Card_Name
8000 ,Wd.Card_Number
8001 ,Wd.Card_Owner_Name
8002 ,Wd.Card_Owner_Surname
8003 ,Synch.Get_Dict('CARD_ROLE', Wd.Card_Role) Card_Role
8004 ,Synch.Get_Dict('CARD_TYPE', Wd.Card_Type) Card_Type
8005 ,Wd.Payment_Date
8006 ,Wd.Start_Date
8007 ,Wd.End_Date
8008 ,Wd.Currency_Code_a
8009 ,Synch.Get_Dict('CARD_STATUS', Wd.Status) Status
8010 ,Wd.Credit_Limit
8011 ,Wd.Atm_Balance_Limit
8012 ,Wd.Atm_Limit_Available
8013 ,Wd.Related_External_Id
8014 ,Wd.Instalment_Interest_Rate
8015 ,Wd.Settlement_Start_Date
8016 ,Wd.Settlement_End_Date
8017 ,Wd.Contract_Ref_Number
8018 ,Wd.Contract_Start_Date
8019 ,Wd.Contract_End_Date
8020 ,Wd.Residue_Amt_Prev_Period
8021 ,Wd.Residue_Prev_Period
8022 ,Wd.Reservation_Date
8023 ,Wd.Blockade_Reason
8024 FROM TABLE(Lmain_Array) Wd
8025 JOIN Car
8026 ON Car.Value = To_Char(Wd.Id)
8027 AND Car.Modification_Date < CAST(Wd.Modification_Date AS TIMESTAMP);
8028 CURSOR c_Insert IS
8029 WITH Car AS (
8030 SELECT Ci.Value
8031 FROM Card_Identifiers Ci
8032 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8033 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
8034 ), Cust As(
8035 SELECT Ci.VALUE
8036 FROM Customer_Identifiers Ci
8037 WHERE Ci.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8038 AND Ci.Key = Synch.Gv_Identifiers_Key_Value
8039 AND EXISTS(SELECT 1
8040 FROM Customers c
8041 WHERE c.Status = 'ACTIVE'
8042 AND c.Id = Ci.Extore_Id
8043 AND c.Bank_Id = Ci.Bank_Id))
8044 --SELECT /*+ DRIVING_SITE(cc) use_hash(wd,car,cc) */
8045 SELECT
8046 Distinct 0 Seq
8047 ,Wd.Id
8048-- ,/*Car.Extore_Id */Null Extore_Card_Id
8049 ,Wd.Account_Number
8050 ,Wd.Current_Balance
8051 ,Wd.Debit_Nr_Prev_Period
8052 ,Wd.Debit_r_Prev_Period
8053 ,Wd.Debit_Sum
8054 ,Wd.Due_Amt_Prev_Period
8055 ,Wd.Holds_Sum
8056 ,Wd.Card_Code
8057 ,Wd.Cash_Interest_Rate
8058 ,Wd.Purchase_Interest_Rate
8059 ,Wd.Card_Name
8060 ,Wd.Card_Number
8061 ,Wd.Card_Owner_Name
8062 ,Wd.Card_Owner_Surname
8063 ,Synch.Get_Dict('CARD_ROLE', Wd.Card_Role) Card_Role
8064 ,Synch.Get_Dict('CARD_TYPE', Wd.Card_Type) Card_Type
8065 ,Wd.Payment_Date
8066 ,Wd.Start_Date
8067 ,Wd.End_Date
8068 ,Wd.Currency_Code_a
8069 ,Synch.Get_Dict('CARD_STATUS', Wd.Status) Status
8070 ,Wd.Credit_Limit
8071 ,Wd.Atm_Balance_Limit
8072 ,Wd.Atm_Limit_Available
8073 ,Wd.Related_External_Id
8074 ,Wd.Instalment_Interest_Rate
8075 ,Wd.Settlement_Start_Date
8076 ,Wd.Settlement_End_Date
8077 ,Wd.Contract_Ref_Number
8078 ,Wd.Contract_Start_Date
8079 ,Wd.Contract_End_Date
8080 ,Wd.Residue_Amt_Prev_Period
8081 ,Wd.Residue_Prev_Period
8082 ,Wd.Reservation_Date
8083 ,Wd.Blockade_Reason
8084 FROM TABLE(Lmain_Array) Wd
8085 WHERE EXISTS (SELECT 1
8086 FROM cust
8087 WHERE Cust.value IN (SELECT To_Char(Cc.Customer_Id)
8088 FROM lc_Wd_Bim_Card_Customers2 Cc
8089 WHERE Cc.Card_Id = Wd.Id
8090 AND Cc.Role IN ('OWNER', 'CONTRACT_OWNER')
8091 AND NOT EXISTS (SELECT 1 FROM car WHERE car.value = to_char(wd.id))));
8092 CURSOR c_Delete IS
8093 SELECT /*+ use_hash(Cr,Ci) */
8094 Cr.Id
8095 FROM Cards Cr, Card_Identifiers Ci
8096 WHERE Cr.Id = Ci.Extore_Id
8097 AND Ci.Key = SYNCH.gv_identifiers_key_value
8098 AND Cr.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8099 AND Ci.Bank_Id = Cr.Bank_Id
8100 AND Cr.Status <> 'CLOSED'
8101 AND NOT EXISTS (SELECT 1
8102 FROM TABLE(Tab_Ids) Wd
8103 WHERE Wd.Column_Value = Ci.Value);
8104 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
8105 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
8106 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
8107 Lupdate_Array Tupdate_Table;
8108 Linsert_Array Tinsert_Table;
8109 Ldelete_Array Tdelete_Table;
8110 PROCEDURE Ins(Prow c_Insert%ROWTYPE) AS
8111 Vn_Card_Id NUMBER := Prow.Seq; --e_Id_Seq.Nextval;
8112 Vn_Card_Ident_Id NUMBER := Prow.Seq+1; --e_Id_Seq.Nextval;
8113 Vr_Ins c_Insert%ROWTYPE := Prow;
8114 FUNCTION Get_External(Pn_Id NUMBER) RETURN NUMBER IS
8115 Vn_Ret NUMBER;
8116 BEGIN
8117 SELECT Cps.Id
8118 INTO Vn_Ret
8119 FROM Card_Product_Source Cps
8120 WHERE Cps.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8121 AND Cps.Product_Source_Id = Pn_Id;
8122 RETURN Vn_Ret;
8123 EXCEPTION
8124 WHEN No_Data_Found THEN
8125 Vn_Ret := e_Id_Seq.Nextval;
8126 INSERT /* APPEND_VALUES*/ INTO Card_Product_Source Cps
8127 (Id, Bank_Id, Creation_Date, Modification_Date, Version, Product_Source_Id)
8128 VALUES
8129 (Vn_Ret, Synch_Restart.Current_Job_Row.Bank_Id, l_Start_Time, l_Start_Time, 1, Pn_Id);
8130 Vn_Rows := Vn_Rows + 1;
8131 RETURN Vn_Ret;
8132 END Get_External;
8133 BEGIN
8134 Vn_Rows := 0;
8135 Vr_Ins.Related_External_Id := Get_External(Vr_Ins.Related_External_Id);
8136 INSERT /* APPEND_VALUES*/ INTO Cards Cr
8137 (Cr.Id
8138 ,Cr.Version
8139 ,Cr.Bank_Id
8140 ,Cr.Creation_Date
8141 ,Cr.Modification_Date
8142 ,Cr.Account_Number
8143 ,Cr.Current_Balance
8144 ,Cr.Debit_Nr_Prev_Period
8145 ,Cr.Debit_r_Prev_Period
8146 ,Cr.Debit_Sum
8147 ,Cr.Due_Amt_Prev_Period
8148 ,Cr.Holds_Sum
8149 ,Cr.Card_Code
8150 ,Cr.Cash_Interest_Rate
8151 ,Cr.Purchase_Interest_Rate
8152 ,Cr.Card_Name
8153 ,Cr.Card_Number
8154 ,Cr.Card_Owner_Name
8155 ,Cr.Card_Owner_Surname
8156 ,Cr.Card_Role
8157 ,Cr.Card_Type
8158 ,Cr.Payment_Date
8159 ,Cr.Start_Date
8160 ,Cr.End_Date
8161 ,Cr.Currency_Code_a
8162 ,Cr.Status
8163 ,Cr.Credit_Limit
8164 ,Cr.Atm_Balance_Limit
8165 ,Cr.Atm_Limit_Available
8166 ,Cr.Product_Source_Id --Related_External_Id
8167 ,Cr.Instalment_Interest_Rate
8168 ,Cr.Settlement_Start_Date
8169 ,Cr.Settlement_End_Date
8170 ,Cr.Contract_Ref_Number
8171 ,Cr.Contract_Start_Date
8172 ,Cr.Contract_End_Date
8173 ,Cr.Residue_Amt_Prev_Period
8174 ,Cr.Residue_Prev_Period
8175 ,Cr.Reservation_Date
8176 ,Cr.Blockade_Reason)
8177 VALUES
8178 (Vn_Card_Id
8179 ,0
8180 ,Synch_Restart.Current_Job_Row.Bank_Id
8181 ,l_Start_Time
8182 ,l_Start_Time
8183 ,Vr_Ins.Account_Number
8184 ,Vr_Ins.Current_Balance
8185 ,Vr_Ins.Debit_Nr_Prev_Period
8186 ,Vr_Ins.Debit_r_Prev_Period
8187 ,Vr_Ins.Debit_Sum
8188 ,Vr_Ins.Due_Amt_Prev_Period
8189 ,Vr_Ins.Holds_Sum
8190 ,Vr_Ins.Card_Code
8191 ,Vr_Ins.Cash_Interest_Rate
8192 ,Vr_Ins.Purchase_Interest_Rate
8193 ,Vr_Ins.Card_Name
8194 ,Vr_Ins.Card_Number
8195 ,Vr_Ins.Card_Owner_Name
8196 ,Vr_Ins.Card_Owner_Surname
8197 ,Vr_Ins.Card_Role
8198 ,Vr_Ins.Card_Type
8199 ,Vr_Ins.Payment_Date
8200 ,Vr_Ins.Start_Date
8201 ,Vr_Ins.End_Date
8202 ,Vr_Ins.Currency_Code_a
8203 ,Vr_Ins.Status
8204 ,Vr_Ins.Credit_Limit
8205 ,Vr_Ins.Atm_Balance_Limit
8206 ,Vr_Ins.Atm_Limit_Available
8207 ,Vr_Ins.Related_External_Id
8208 ,Vr_Ins.Instalment_Interest_Rate
8209 ,Vr_Ins.Settlement_Start_Date
8210 ,Vr_Ins.Settlement_End_Date
8211 ,Vr_Ins.Contract_Ref_Number
8212 ,Vr_Ins.Contract_Start_Date
8213 ,Vr_Ins.Contract_End_Date
8214 ,Vr_Ins.Residue_Amt_Prev_Period
8215 ,Vr_Ins.Residue_Prev_Period
8216 ,Vr_Ins.Reservation_Date
8217 ,Vr_Ins.Blockade_Reason);
8218 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
8219 INSERT /* APPEND_VALUES*/ INTO Card_Identifiers Ci
8220 (Ci.Id, Ci.Key, Ci.Value, Ci.Bank_Id, Ci.Extore_Id, Ci.Version, Ci.Modification_Date, Ci.Creation_Date)
8221 VALUES
8222 (Vn_Card_Ident_Id
8223 ,SYNCH.gv_identifiers_key_value
8224 ,To_Char(Vr_Ins.Id)
8225 ,Synch_Restart.Current_Job_Row.Bank_Id
8226 ,Vn_Card_Id
8227 ,0
8228 ,l_Start_Time
8229 ,l_Start_Time);
8230 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
8231 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
8232 END Ins;
8233 BEGIN
8234 Proc_Time := Current_Timestamp;
8235 Synch_Restart.Start_Step;
8236 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
8237 l_Start_Time := Synch_Restart.Get_Start_Time();
8238 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
8239 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
8240 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
8241 begin
8242 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Cards');
8243 vsql:='truncate table lc_Wd_Bim_Cards';
8244 execute immediate vsql;
8245 commit;
8246 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Cards');
8247 end;
8248 begin
8249 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_CARDS';
8250 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Cards');
8251 ----------- FMBANK-44535
8252 vsql:='insert into lc_Wd_Bim_Cards
8253 (select /*+ DRIVING_SITE(Wd)*/
8254 id,
8255 modification_date,
8256 account_number,
8257 account_type,
8258 current_balance,
8259 debit_nr_prev_period,
8260 debit_r_prev_period,
8261 debit_sum,
8262 due_amt_prev_period,
8263 due_date,
8264 holds_sum,
8265 residue_amt_prev_period,
8266 residue_prev_period,
8267 card_code,
8268 cash_interest_rate,
8269 purchase_interest_rate,
8270 cast (transfer_interest_rate as number) transfer_interest_rate,
8271 card_name,
8272 card_number,
8273 card_owner_name,
8274 cast (card_owner_surname as varchar2(200)) card_owner_surname,
8275 card_role,
8276 card_type,
8277 cast(INSURANCE_PACKAGE as varchar2(100)) INSURANCE_PACKAGE,
8278 cast(MERCHANT_PACKAGE as varchar2(100)) MERCHANT_PACKAGE,
8279 PAYMENT_DATE,
8280 cast(PAYMENT_MODE as varchar2(100)) PAYMENT_MODE,
8281 cast(SETTLEMENT_DATE AS DATE) SETTLEMENT_DATE,
8282 START_DATE,
8283 END_DATE,
8284 CURRENCY_CODE_A,
8285 STATUS,
8286 CREDIT_LIMIT,
8287 CONTRACT_ID,
8288 INSTALMENT_INTEREST_RATE,
8289 SETTLEMENT_START_DATE,
8290 SETTLEMENT_END_DATE,
8291 SETTLEMENT_CYCLE,
8292 CONTRACT_REF_NUMBER,
8293 CONTRACT_START_DATE,
8294 cast (CONTRACT_END_DATE as date) CONTRACT_END_DATE,
8295 ATM_BALANCE_LIMIT,
8296 ATM_LIMIT_AVAILABLE,
8297 CONTRACT_SMS_AGREEMENT,
8298 RECORD_ID,
8299 BLOCKADE_REASON
8300 from Wd_Bim_Cards Wd'||')';
8301 execute immediate vsql;
8302 commit;
8303 Synch_Restart.Log('wykonano:'||vsql);
8304 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Cards');
8305 vsql:='select count(*) from lc_Wd_Bim_Cards';
8306 execute immediate vsql into cnt;
8307 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Cards pobrano:'||cnt||' rekord?w');
8308 end;
8309 begin
8310 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Card_Details');
8311 vsql:='truncate table lc_Wd_Bim_Card_Details';
8312 execute immediate vsql;
8313 commit;
8314 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Card_Details');
8315 end;
8316 begin
8317 --- select value||':00' into synch_d from synch_config where name='SYNCH_CUSTOMERS.CUST_DOCUMENTS';
8318 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Card_Details');
8319 vsql:='insert into lc_Wd_Bim_Card_Details
8320 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Card_Details Wd
8321 WHERE card_id in (select id from Wd_Bim_Cards'||'))';
8322 execute immediate vsql;
8323 commit;
8324 Synch_Restart.Log('wykonano:'||vsql);
8325 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Card_Details');
8326 vsql:='select count(*) from lc_Wd_Bim_Card_Details';
8327 execute immediate vsql into cnt;
8328 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Card_Details pobrano:'||cnt||' rekord?w');
8329 end;
8330 begin
8331 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Card_Customers2');
8332 vsql:='truncate table lc_Wd_Bim_Card_Customers2';
8333 execute immediate vsql;
8334 commit;
8335 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Card_Customers2');
8336 end;
8337 begin
8338 --- select value||':00' into synch_d from synch_config where name='SYNCH_CUSTOMERS.CUST_DOCUMENTS';
8339 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Card_Customers2');
8340 vsql:='insert into lc_Wd_Bim_Card_Customers2
8341 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Card_Customers Wd'||')';
8342 execute immediate vsql;
8343 commit;
8344 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Card_Customers2');
8345 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Card_Customers2');
8346 end;
8347 Operation := l_Proc || '_MAIN';
8348 Part_Time := Current_Timestamp;
8349 OPEN c_Main;
8350 LOOP
8351 FETCH c_Main BULK COLLECT
8352 INTO Lmain_Array LIMIT Synch.l_Bulk_Limit;
8353 Operation := l_Proc || '_UPDATE';
8354 Part_Time := Current_Timestamp;
8355 OPEN c_Update;
8356 LOOP
8357 FETCH c_Update BULK COLLECT
8358 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
8359 Synch_Restart.Log(3, 'FETCH UPDATE liczba: '|| Lupdate_Array.Count
8360 ||' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8361 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
8362 l_Range_a := 0;
8363 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
8364 WHILE l_Range_a IS NOT NULL
8365 LOOP
8366 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
8367 UPDATE Cards Cr
8368 SET Cr.Version = Cr.Version + 1
8369 ,Cr.Modification_Date = l_Start_Time
8370 ,Cr.Account_Number = Lupdate_Array(i).Account_Number
8371 ,Cr.Current_Balance = Lupdate_Array(i).Current_Balance
8372 ,Cr.Debit_Nr_Prev_Period = Lupdate_Array(i).Debit_Nr_Prev_Period
8373 ,Cr.Debit_r_Prev_Period = Lupdate_Array(i).Debit_r_Prev_Period
8374 ,Cr.Debit_Sum = Lupdate_Array(i).Debit_Sum
8375 ,Cr.Due_Amt_Prev_Period = Lupdate_Array(i).Due_Amt_Prev_Period
8376 ,Cr.Holds_Sum = Lupdate_Array(i).Holds_Sum
8377 ,Cr.Card_Code = Lupdate_Array(i).Card_Code
8378 ,Cr.Cash_Interest_Rate = Lupdate_Array(i).Cash_Interest_Rate
8379 ,Cr.Purchase_Interest_Rate = Lupdate_Array(i).Purchase_Interest_Rate
8380 ,Cr.Card_Name = Lupdate_Array(i).Card_Name
8381 ,Cr.Card_Number = Lupdate_Array(i).Card_Number
8382 ,Cr.Card_Owner_Name = Lupdate_Array(i).Card_Owner_Name
8383 ,Cr.Card_Owner_Surname = Lupdate_Array(i).Card_Owner_Surname
8384 ,Cr.Card_Role = Lupdate_Array(i).Card_Role
8385 ,Cr.Card_Type = Lupdate_Array(i).Card_Type
8386 ,Cr.Payment_Date = Lupdate_Array(i).Payment_Date
8387 ,Cr.Start_Date = Lupdate_Array(i).Start_Date
8388 ,Cr.End_Date = Lupdate_Array(i).End_Date
8389 ,Cr.Currency_Code_a = Lupdate_Array(i).Currency_Code_a
8390 ,Cr.Status = Lupdate_Array(i).Status
8391 ,Cr.Credit_Limit = Lupdate_Array(i).Credit_Limit
8392 ,Cr.Atm_Balance_Limit = Lupdate_Array(i).Atm_Balance_Limit
8393 ,Cr.Atm_Limit_Available = Lupdate_Array(i).Atm_Limit_Available
8394 -- ,Cr.Related_External_Id = Lupdate_Array(i).Related_External_Id
8395 ,Cr.Instalment_Interest_Rate = Lupdate_Array(i).Instalment_Interest_Rate
8396 ,Cr.Settlement_Start_Date = Lupdate_Array(i).Settlement_Start_Date
8397 ,Cr.Settlement_End_Date = Lupdate_Array(i).Settlement_End_Date
8398 ,Cr.Contract_Ref_Number = Lupdate_Array(i).Contract_Ref_Number
8399 ,Cr.Contract_Start_Date = Lupdate_Array(i).Contract_Start_Date
8400 ,Cr.Contract_End_Date = Lupdate_Array(i).Contract_End_Date
8401 ,Cr.Residue_Amt_Prev_Period = Lupdate_Array(i).Residue_Amt_Prev_Period
8402 ,Cr.Residue_Prev_Period = Lupdate_Array(i).Residue_Prev_Period
8403 ,Cr.Reservation_Date = Lupdate_Array(i).Reservation_Date
8404 ,Cr.Blockade_Reason = Lupdate_Array(i).Blockade_Reason
8405 WHERE Cr.Id = Lupdate_Array(i).Extore_Card_Id;
8406 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
8407 l_Range_a := l_Range_b + 1;
8408 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
8409 END LOOP;
8410 EXIT WHEN c_Update%NOTFOUND;
8411 END LOOP;
8412 CLOSE c_Update;
8413 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8414 Part_Time := Current_Timestamp;
8415 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
8416 Operation := l_Proc || '_INSERT';
8417 OPEN c_Insert;
8418 LOOP
8419 FETCH c_Insert BULK COLLECT
8420 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
8421 Synch_Restart.Log(3, 'FETCH INSERT liczba: '|| Linsert_Array.Count
8422 ||' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8423 If Linsert_Array.Count > 0 Then
8424 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count*2, v_Seq_From, v_Seq_To );
8425 For i In 1..Linsert_Array.Count
8426 Loop
8427 Linsert_Array(i).Seq := v_Seq_From + (i-1)*2;
8428 End Loop;
8429 End If;
8430 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
8431 l_Range_a := 0;
8432 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
8433 WHILE l_Range_a IS NOT NULL
8434 LOOP
8435 FOR i IN l_Range_a .. l_Range_b
8436 LOOP
8437 Tmp_Wd_Id := Linsert_Array(i).Id;
8438 Ins(Linsert_Array(i));
8439 END LOOP;
8440 --Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
8441 l_Range_a := l_Range_b + 1;
8442 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
8443 END LOOP;
8444 EXIT WHEN c_Insert%NOTFOUND;
8445 END LOOP;
8446 CLOSE c_Insert;
8447 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8448 Part_Time := Current_Timestamp;
8449 --
8450 EXIT WHEN c_Main%NOTFOUND;
8451 END LOOP;
8452 CLOSE c_Main;
8453 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8454 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
8455 Operation := l_Proc || '_DELETE';
8456 Part_Time := Current_Timestamp;
8457 SELECT Wd.Id BULK COLLECT INTO Tab_Ids FROM LC_Wd_Bim_Cards Wd;
8458 OPEN c_Delete;
8459 LOOP
8460 FETCH c_Delete BULK COLLECT
8461 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
8462 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
8463 l_Range_a := 0;
8464 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
8465 WHILE l_Range_a IS NOT NULL
8466 LOOP
8467 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
8468 UPDATE Cards Cr
8469 SET Cr.Version = Cr.Version + 1, Cr.Modification_Date = l_Start_Time, Cr.Status = 'CLOSED'
8470 WHERE Cr.Id = Ldelete_Array(i).Id;
8471 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
8472 l_Range_a := l_Range_b + 1;
8473 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
8474 END LOOP;
8475 EXIT WHEN c_Delete%NOTFOUND;
8476 END LOOP;
8477 CLOSE c_Delete;
8478 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8479 Operation := l_Proc || '_After_Loops';
8480 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
8481 Synch.Set_Last_Synch_Date(l_Program);
8482 Synch_Restart.End_Step;
8483 EXCEPTION
8484 WHEN OTHERS THEN
8485 IF Operation = l_Proc || '_DELETE'
8486 OR Operation = l_Proc || '_UPDATE' THEN
8487 IF SQL%Bulk_Exceptions.Count > 0 THEN
8488 IF Operation = l_Proc || '_UPDATE' THEN
8489 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
8490 LOOP
8491 Synch_Restart.Error_Log(l_Program
8492 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
8493 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
8494 END LOOP;
8495 ELSIF Operation = l_Proc || '_DELETE' THEN
8496 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
8497 LOOP
8498 Synch_Restart.Error_Log(l_Program
8499 ,Operation || ', Product_Type_Id: ' || --Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
8500 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
8501 END LOOP;
8502 END IF;
8503 END IF;
8504 ELSIF Operation = l_Proc || '_INSERT' THEN
8505 Synch_Restart.Error_Log(l_Program
8506 ,Operation || ', Remote Card_Id: ' || Tmp_Wd_Id || ', ERROR_CODE: ' || SQLERRM);
8507 END IF;
8508 Synch_Restart.Error_Log(l_Program, Operation);
8509 ROLLBACK;
8510 END Prc_Cards;
8511 PROCEDURE Prc_Statement_Params AS
8512 l_Proc VARCHAR2(100) := 'PRC_STATEMENT_PARAMS';
8513 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
8514 Last_Synch_Date DATE;
8515 l_Start_Time DATE;
8516 Operation VARCHAR2(100);
8517 Ln_Buff_Len NUMBER := 0;
8518 l_Range_a NUMBER := 0;
8519 l_Range_b NUMBER := 0;
8520 v_Seq_From Integer;
8521 v_Seq_To Integer;
8522 vsql varchar2(4000);
8523 synch_d varchar2(100);
8524 cnt number;
8525 CURSOR c_Update IS
8526 --SELECT /*+ driving_site(wd) use_hash(wd,cps,sp) */
8527 SELECT
8528 Cps.Id Card_Product_Id
8529 ,Decode(Nvl(To_Char(Wd.Is_Www_Statement), 'NULL') || Nvl(To_Char(Wd.Is_Print_Statement), 'NULL') ||
8530 Nvl(To_Char(Wd.Way_Of_Stmt_Receive), 'NULL')
8531 ,'00NULL' ,'NONE'
8532 ,'012' ,'MAIL'
8533 ,'112' ,'MAIL'
8534 ,'10NULL' ,'ONLINE'
8535 ,'NULL12' ,'MAIL'
8536 ,'NONE') Distribution_Channel
8537 ,Sp.Id
8538 FROM LC_Wd_Bim_Cc_Statement_Params Wd
8539 JOIN Card_Product_Source Cps
8540 ON Wd.Account_Id = Cps.Product_Source_Id
8541 AND Cps.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8542 JOIN Statement_Params Sp
8543 ON Sp.Bank_Id = Cps.Bank_Id
8544 AND Sp.Card_Product_Id = Cps.Product_Source_Id
8545 AND CAST(Wd.Modification_Date AS TIMESTAMP(6)) > Sp.Modification_Date
8546 WHERE Wd.Modification_Date >= Last_Synch_Date
8547 AND Wd.Modification_Date < l_Start_Time;
8548 CURSOR c_Insert IS
8549 --SELECT /*+ driving_site(wd) use_hash(wd,cps,sp) */
8550 SELECT
8551 0 Seq
8552 ,Cps.Id Card_Product_Id
8553 ,Decode(Nvl(To_Char(Wd.Is_Www_Statement), 'NULL') || Nvl(To_Char(Wd.Is_Print_Statement), 'NULL') ||
8554 Nvl(To_Char(Wd.Way_Of_Stmt_Receive), 'NULL')
8555 ,'00NULL' ,'NONE'
8556 ,'012' ,'MAIL'
8557 ,'112' ,'MAIL'
8558 ,'10NULL' ,'ONLINE'
8559 ,'NULL12' ,'MAIL'
8560 ,'NONE') Distribution_Channel
8561 FROM LC_Wd_Bim_Cc_Statement_Params Wd
8562 JOIN Card_Product_Source Cps
8563 ON Wd.Account_Id = Cps.Product_Source_Id
8564 AND Cps.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8565 LEFT JOIN Statement_Params Sp
8566 ON Sp.Bank_Id = Cps.Bank_Id
8567 AND Sp.Card_Product_Id = Cps.Product_Source_Id
8568 AND CAST(Wd.Modification_Date AS TIMESTAMP(6)) > Sp.Modification_Date
8569 WHERE Sp.Id IS NULL
8570 AND Wd.Modification_Date >= Last_Synch_Date
8571 AND Wd.Modification_Date < l_Start_Time;
8572 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
8573 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
8574 Lupdate_Array Tupdate_Table;
8575 Linsert_Array Tinsert_Table;
8576 BEGIN
8577 Proc_Time := Current_Timestamp;
8578 Synch_Restart.Start_Step;
8579 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
8580 l_Start_Time := Synch_Restart.Get_Start_Time();
8581 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
8582 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
8583 begin
8584 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'LC_Wd_Bim_Cc_Statement_Params');
8585 vsql:='truncate table LC_Wd_Bim_Cc_Statement_Params';
8586 execute immediate vsql;
8587 commit;
8588 Synch_Restart.Log('KOniec czyszczenie ' || 'LC_Wd_Bim_Cc_Statement_Params');
8589 end;
8590 begin
8591 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_STATEMENT_PARAMS';
8592 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'LC_Wd_Bim_Cc_Statement_Params od:'||synch_d);
8593 vsql:='insert into LC_Wd_Bim_Cc_Statement_Params
8594 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Cc_Statement_Params Wd
8595 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
8596 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
8597 execute immediate vsql;
8598 commit;
8599 Synch_Restart.Log('wykonano:'||vsql);
8600 dbms_stats.gather_table_stats(user,'LC_Wd_Bim_Cc_Statement_Params');
8601 vsql:='select count(*) from LC_Wd_Bim_Cc_Statement_Params';
8602 execute immediate vsql into cnt;
8603 Synch_Restart.Log('Koniec dodawanie ' || 'LC_Wd_Bim_Cc_Statement_Params pobrano:'||cnt||' rekord?w');
8604 end;
8605 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
8606 Operation := l_Proc || '_UPDATE';
8607 Part_Time := Current_Timestamp;
8608 OPEN c_Update;
8609 LOOP
8610 FETCH c_Update BULK COLLECT
8611 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
8612 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
8613 l_Range_a := 0;
8614 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
8615 WHILE l_Range_a IS NOT NULL
8616 LOOP
8617 FORALL i IN INDICES OF Lupdate_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
8618 UPDATE Statement_Params Sp
8619 SET Sp.Version = Sp.Version + 1
8620 ,Sp.Modification_Date = l_Start_Time
8621 ,Sp.Distribution_Channel = Lupdate_Array(i).Distribution_Channel
8622 -- , sp.product_id = LUpdate_Array(i).Product_Id
8623 ,Sp.Card_Product_Id = Lupdate_Array(i).Card_Product_Id
8624 WHERE Sp.Id = Lupdate_Array(i).Id;
8625 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
8626 l_Range_a := l_Range_b + 1;
8627 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
8628 END LOOP;
8629 EXIT WHEN c_Update%NOTFOUND;
8630 END LOOP;
8631 CLOSE c_Update;
8632 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8633 Part_Time := Current_Timestamp;
8634 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
8635 Operation := l_Proc || '_INSERT';
8636 OPEN c_Insert;
8637 LOOP
8638 FETCH c_Insert BULK COLLECT
8639 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
8640 If Linsert_Array.Count > 0 Then
8641 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
8642 For i In 1..Linsert_Array.Count
8643 Loop
8644 Linsert_Array(i).Seq := v_Seq_From + (i-1);
8645 End Loop;
8646 End If;
8647 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
8648 l_Range_a := 0;
8649 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
8650 WHILE l_Range_a IS NOT NULL
8651 LOOP
8652 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
8653 INSERT /* APPEND_VALUES*/ INTO Statement_Params Sp
8654 (Id
8655 ,Version
8656 ,Bank_Id
8657 ,Creation_Date
8658 ,Modification_Date
8659 ,Card_Product_Id
8660 ,Distribution_Channel)
8661 VALUES
8662 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
8663 ,0
8664 ,Synch_Restart.Current_Job_Row.Bank_Id
8665 ,l_Start_Time
8666 ,l_Start_Time
8667 ,Linsert_Array(i).Card_Product_Id
8668 ,Linsert_Array(i).Distribution_Channel);
8669 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
8670 l_Range_a := l_Range_b + 1;
8671 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
8672 END LOOP;
8673 EXIT WHEN c_Insert%NOTFOUND;
8674 END LOOP;
8675 CLOSE c_Insert;
8676 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8677 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
8678 Synch.Set_Last_Synch_Date(l_Program);
8679 Synch_Restart.End_Step;
8680 EXCEPTION
8681 WHEN OTHERS THEN
8682 IF SQL%Bulk_Exceptions.Count > 0 THEN
8683 IF Operation = l_Proc || '_INSERT' THEN
8684 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
8685 LOOP
8686 Synch_Restart.Error_Log(l_Program
8687 ,Operation || ', Product_Type_Id: ' || --Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
8688 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
8689 END LOOP;
8690 ELSIF Operation = l_Proc || '_UPDATE' THEN
8691 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
8692 LOOP
8693 Synch_Restart.Error_Log(l_Program
8694 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
8695 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
8696 END LOOP;
8697 ELSIF Operation = l_Proc || '_DELETE' THEN
8698 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
8699 LOOP
8700 Synch_Restart.Error_Log(l_Program
8701 ,Operation || ', Product_Type_Id: ' || --Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
8702 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
8703 END LOOP;
8704 END IF;
8705 END IF;
8706 Synch_Restart.Error_Log(l_Program, Operation);
8707 ROLLBACK;
8708 END Prc_Statement_Params;
8709 PROCEDURE Prc_Card_Customers AS
8710 l_Proc VARCHAR2(100) := 'PRC_CARD_CUSTOMERS';
8711 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
8712 Last_Synch_Date DATE;
8713 l_Start_Time DATE;
8714 Operation VARCHAR2(100);
8715 Ln_Buff_Len NUMBER := 0;
8716 l_Range_a NUMBER := 0;
8717 l_Range_b NUMBER := 0;
8718 v_Seq_From Integer;
8719 v_Seq_To Integer;
8720 vsql varchar2(4000);
8721 synch_d varchar2(100);
8722 cnt number;
8723 CURSOR c_Insert IS
8724 WITH r AS
8725 (SELECT /*+ use_hash(wd,Card_Id,Cust_Id,C) */
8726 Card_Id.Extore_Id Card_Id, Wd.Role, Cust_Id.Extore_Id Customer_Id
8727 FROM (--SELECT /*+ driving_site(Wd_Bim_Card_Customers)*/
8728 SELECT
8729 To_Char(Card_Id) Card_Id
8730 ,Role
8731 ,To_Char(Customer_Id) Customer_Id
8732 ,Rank() Over(PARTITION BY Card_Id, Customer_Id ORDER BY Role) Rnk
8733 FROM lc_Wd_Bim_Card_Customers
8734 ) Wd
8735 ,Card_Identifiers Card_Id
8736 ,Customer_Identifiers Cust_Id
8737 ,Customers C
8738 WHERE Wd.Card_Id = Card_Id.Value
8739 AND Card_Id.Key = SYNCH.gv_identifiers_key_value
8740 AND Card_Id.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8741 AND Wd.Customer_Id = Cust_Id.Value
8742 -- FMBANK-xxxx2 AND Wd.Rnk = 1
8743 AND Cust_Id.Key = SYNCH.gv_identifiers_key_value
8744 AND Cust_Id.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8745 AND Cust_Id.Extore_Id = c.Id
8746 AND c.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8747 AND c.Status = 'ACTIVE'),
8748 l AS
8749 (SELECT Cc.Extore_Id Card_Id, Cc.Role, Cc.Customer_Extore_Id Customer_Id
8750 FROM Card_Customers Cc
8751 WHERE Cc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id)
8752 SELECT 0 Seq, r.*
8753 FROM r
8754 MINUS
8755 SELECT 0 Seq, l.*
8756 FROM l;
8757 CURSOR c_Delete IS
8758 WITH r AS
8759 (SELECT /*+ use_hash(wd,Card_Id,Cust_Id) */
8760 Card_Id.Extore_Id Card_Id, Wd.Role, Cust_Id.Extore_Id Customer_Id
8761 FROM (--SELECT /*+ driving_site(Wd_Bim_Card_Customers) */
8762 SELECT
8763 To_Char(Card_Id) Card_Id
8764 ,Role
8765 ,To_Char(Customer_Id) Customer_Id
8766 FROM lc_Wd_Bim_Card_Customers
8767 ) Wd
8768 ,Card_Identifiers Card_Id
8769 ,Customer_Identifiers Cust_Id
8770 WHERE Wd.Card_Id = Card_Id.Value
8771 AND Card_Id.Key = SYNCH.gv_identifiers_key_value
8772 AND Card_Id.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8773 AND Wd.Customer_Id = Cust_Id.Value
8774 AND Cust_Id.Key = SYNCH.gv_identifiers_key_value
8775 AND Cust_Id.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id),
8776 l AS
8777 (SELECT Cc.Extore_Id Card_Id, Cc.Role, Cc.Customer_Extore_Id Customer_Id
8778 FROM Card_Customers Cc
8779 WHERE Cc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id)
8780 SELECT l.*
8781 FROM l
8782 MINUS
8783 SELECT r.* FROM r;
8784 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
8785 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
8786 Linsert_Array Tinsert_Table;
8787 Ldelete_Array Tdelete_Table;
8788 BEGIN
8789 Proc_Time := Current_Timestamp;
8790 Synch_Restart.Start_Step;
8791 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
8792 l_Start_Time := Synch_Restart.Get_Start_Time();
8793 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
8794 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
8795 Part_Time := Current_Timestamp;
8796 begin
8797 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'lc_Wd_Bim_Card_Customers');
8798 vsql:='truncate table lc_Wd_Bim_Card_Customers';
8799 execute immediate vsql;
8800 commit;
8801 Synch_Restart.Log('KOniec czyszczenie ' || 'lc_Wd_Bim_Card_Customers');
8802 end;
8803 begin
8804 --- select value||':00' into synch_d from synch_config where name='SYNCH_CUSTOMERS.CUST_DOCUMENTS';
8805 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'lc_Wd_Bim_Card_Customers');
8806-- FMBANK-xxxx1
8807 -- vsql:='insert into lc_Wd_Bim_Card_Customers
8808 -- (select /*+ DRIVING_SITE(Wd)*/ Wd.* from lc_Wd_Bim_Card_Customers Wd)';
8809 vsql:='insert into lc_Wd_Bim_Card_Customers
8810 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Bim_Card_Customers Wd)';
8811-------------------------
8812 execute immediate vsql;
8813 commit;
8814 Synch_Restart.Log('wykonano:'||vsql);
8815 dbms_stats.gather_table_stats(user,'lc_Wd_Bim_Card_Customers');
8816 vsql:='select count(*) from lc_Wd_Bim_Card_Customers';
8817 execute immediate vsql into cnt;
8818 Synch_Restart.Log('Koniec dodawanie ' || 'lc_Wd_Bim_Card_Customers pobrano:'||cnt||' rekord?w');
8819 end;
8820 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
8821 Operation := l_Proc || '_INSERT';
8822 OPEN c_Insert;
8823 LOOP
8824 FETCH c_Insert BULK COLLECT
8825 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
8826 If Linsert_Array.Count > 0 Then
8827 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
8828 For i In 1..Linsert_Array.Count
8829 Loop
8830 Linsert_Array(i).Seq := v_Seq_From + (i-1);
8831 End Loop;
8832 End If;
8833 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
8834 l_Range_a := 0;
8835 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
8836 WHILE l_Range_a IS NOT NULL
8837 LOOP
8838 FORALL i IN INDICES OF Linsert_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
8839 INSERT /* APPEND_VALUES*/ INTO Card_Customers c
8840 (c.Id
8841 ,c.Bank_Id
8842 ,c.Version
8843 ,c.Role
8844 ,c.Extore_Id
8845 ,c.Customer_Extore_Id
8846 ,c.Modification_Date
8847 ,c.Creation_Date)
8848 VALUES
8849 (Linsert_Array(i).Seq --e_Id_Seq.Nextval
8850 ,Synch_Restart.Current_Job_Row.Bank_Id --Bank_Id
8851 ,0 --VERSION
8852 ,Linsert_Array(i).Role
8853 ,Linsert_Array(i).Card_Id
8854 ,Linsert_Array(i).Customer_Id
8855 ,l_Start_Time
8856 ,l_Start_Time);
8857 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
8858 l_Range_a := l_Range_b + 1;
8859 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
8860 END LOOP;
8861 EXIT WHEN c_Insert%NOTFOUND;
8862 END LOOP;
8863 CLOSE c_Insert;
8864 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8865 Part_Time := Current_Timestamp;
8866 --
8867 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
8868 Operation := l_Proc || '_DELETE';
8869 OPEN c_Delete;
8870 LOOP
8871 FETCH c_Delete BULK COLLECT
8872 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
8873 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
8874 l_Range_a := 0;
8875 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
8876 WHILE l_Range_a IS NOT NULL
8877 LOOP
8878 FORALL i IN INDICES OF Ldelete_Array BETWEEN l_Range_a AND l_Range_b SAVE EXCEPTIONS
8879 DELETE Card_Customers Cc
8880 WHERE Cc.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8881 AND Cc.Role = Ldelete_Array(i).Role
8882 AND Cc.Extore_Id = Ldelete_Array(i).Card_Id
8883 AND Cc.Customer_Extore_Id = Ldelete_Array(i).Customer_Id;
8884 Synch.Flush_Buff(Ln_Buff_Len, c_Delete%NOTFOUND);
8885 l_Range_a := l_Range_b + 1;
8886 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
8887 END LOOP;
8888 EXIT WHEN c_Delete%NOTFOUND;
8889 END LOOP;
8890 CLOSE c_Delete;
8891 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
8892 --
8893 Operation := l_Proc || '_After_Loops';
8894 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
8895 Synch.Set_Last_Synch_Date(l_Program);
8896 Synch_Restart.End_Step;
8897 EXCEPTION
8898 WHEN OTHERS THEN
8899 IF SQL%Bulk_Exceptions.Count > 0 THEN
8900 IF Operation = l_Proc || '_INSERT' THEN
8901 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
8902 LOOP
8903 Synch_Restart.Error_Log(l_Program
8904 ,Operation || ', Product_Type_Id: ' || --Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
8905 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
8906 END LOOP;
8907 ELSIF Operation = l_Proc || '_UPDATE' THEN
8908 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
8909 LOOP
8910 Synch_Restart.Error_Log(l_Program
8911 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
8912 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
8913 END LOOP;
8914 ELSIF Operation = l_Proc || '_DELETE' THEN
8915 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
8916 LOOP
8917 Synch_Restart.Error_Log(l_Program
8918 ,Operation || ', Product_Type_Id: ' || --Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
8919 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
8920 END LOOP;
8921 END IF;
8922 END IF;
8923 Synch_Restart.Error_Log(l_Program, Operation);
8924 ROLLBACK;
8925 END Prc_Card_Customers;
8926 PROCEDURE Prc_Wyciagi_Ca AS
8927 l_Proc VARCHAR2(100) := 'PRC_WYCIAGI_CA';
8928 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
8929 Last_Synch_Date DATE;
8930 l_Start_Time DATE;
8931 Vd_Remote_Date DATE;
8932 Operation VARCHAR2(100);
8933 Ln_Buff_Len NUMBER := 0;
8934 l_Range_a NUMBER := 0;
8935 l_Range_b NUMBER := 0;
8936 v_Seq_From Integer;
8937 v_Seq_To Integer;
8938 vsql varchar2(4000);
8939 synch_d varchar2(100);
8940 cnt number;
8941 CURSOR c_Insert IS
8942 --SELECT /*+ driving_site(wd) use_hash(wd,shi,cai) */
8943 SELECT
8944 0 Seq
8945 ,To_Char(CAST(Wd.Id AS NUMBER(19))) VALUE
8946 ,Cai.Extore_Id Extore_Account_Id
8947 ,CAST(Wd.Creation_Date AS TIMESTAMP) Statement_Date
8948 ,CAST(Wd.Date_From AS DATE) Date_From
8949 ,CAST(Wd.Date_To AS DATE) Date_To
8950 ,CAST(Wd.Title AS VARCHAR2(50 CHAR)) Description
8951 FROM LC_Wd_Swb_Statement_Headers Wd
8952 LEFT JOIN Statement_Header_Identifiers Shi
8953 ON Shi.Key = 'SWB_ID'
8954 AND Shi.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8955 AND Shi.Value = To_Char(CAST(Wd.Id AS NUMBER(19)))
8956 JOIN Current_Account_Identifiers Cai
8957 ON Cai.Key = SYNCH.gv_identifiers_key_value
8958 AND Cai.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
8959 AND Cai.Value = To_Char(CAST(Wd.Account_Id AS NUMBER(19)))
8960 WHERE Upper(Wd.Statement_Type) = 'CA'
8961 AND CAST(Wd.Modification_Date AS DATE) > Last_Synch_Date
8962 AND CAST(Wd.Modification_Date AS DATE) <= Vd_Remote_Date
8963 AND Shi.Id IS NULL;
8964 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
8965 Linsert_Array Tinsert_Table;
8966 BEGIN
8967 Synch_Restart.Log('Start');
8968 Proc_Time := Current_Timestamp;
8969 Synch_Restart.Log('START_STEP');
8970 Synch_Restart.Start_Step;
8971 Synch_Restart.Log('end START_STEP');
8972 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program); -- synch_config.value
8973 Synch_Restart.Log('end get_last_synch_date');
8974 l_Start_Time := Synch_Restart.Get_Start_Time(); -- synch_steps.start_time
8975 Synch_Restart.Log('end_Get_Start_Time');
8976 SELECT To_Date(VALUE, 'yyyy-mm-dd hh24:mi:ss')
8977 INTO Vd_Remote_Date
8978 FROM Wd_Swb_Config
8979 WHERE Key = 'STATEMENT_HEADERS_DATE';
8980 Synch_Restart.Log('end_swb');
8981 Synch_Restart.Log('last_synch_date = ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' until to : ' ||
8982 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
8983 Part_Time := Current_Timestamp;
8984 begin
8985 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'LC_Wd_Swb_Statement_Headers');
8986 vsql:='truncate table LC_Wd_Swb_Statement_Headers';
8987 execute immediate vsql;
8988 commit;
8989 Synch_Restart.Log('KOniec czyszczenie ' || 'LC_Wd_Swb_Statement_Headers');
8990 end;
8991 begin
8992 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_WYCIAGI_CA';
8993 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'LC_Wd_Swb_Statement_Headers od:'||synch_d);
8994 vsql:='insert into LC_Wd_Swb_Statement_Headers
8995 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Swb_Statement_Headers Wd
8996 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
8997 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
8998 execute immediate vsql;
8999 commit;
9000 Synch_Restart.Log('wykonano:'||vsql);
9001 dbms_stats.gather_table_stats(user,'LC_Wd_Swb_Statement_Headers');
9002 vsql:='select count(*) from LC_Wd_Swb_Statement_Headers';
9003 execute immediate vsql into cnt;
9004 Synch_Restart.Log('Koniec dodawanie ' || 'LC_Wd_Swb_Statement_Headers pobrano:'||cnt||' rekord?w');
9005 end;
9006 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
9007 Operation := l_Proc || '_INSERT';
9008 OPEN c_Insert;
9009 LOOP
9010 FETCH c_Insert BULK COLLECT
9011 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
9012 If Linsert_Array.Count > 0 Then
9013 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count*2, v_Seq_From, v_Seq_To );
9014 For i In 1..Linsert_Array.Count
9015 Loop
9016 Linsert_Array(i).Seq := v_Seq_From + (i-1)*2;
9017 End Loop;
9018 End If;
9019 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
9020 l_Range_a := 0;
9021 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
9022 WHILE l_Range_a IS NOT NULL
9023 LOOP
9024 FOR i IN l_Range_a .. l_Range_b
9025 LOOP
9026 DECLARE
9027 Vn_Sh_Id NUMBER := Linsert_Array(i).Seq; --e_Id_Seq.Nextval;
9028 Vn_Sh_Identifier_Id NUMBER := Linsert_Array(i).Seq+1; --e_Id_Seq.Nextval;
9029 Vn_Rows NUMBER := 0;
9030 BEGIN
9031 Vn_Rows := 0;
9032 INSERT /* APPEND_VALUES*/ INTO Statement_Headers Sh
9033 (Sh.Id
9034 ,Sh.Bank_Id
9035 ,Sh.Account_Id
9036 ,Sh.Date_From
9037 ,Sh.Date_To
9038 ,Sh.Creation_Date
9039 ,Sh.Modification_Date
9040 ,Sh.Version
9041 ,Sh.Statement_Date
9042 ,Sh.Description)
9043 VALUES
9044 (Vn_Sh_Id
9045 ,Synch_Restart.Current_Job_Row.Bank_Id
9046 ,Linsert_Array(i).Extore_Account_Id
9047 ,Linsert_Array(i).Date_From
9048 ,Linsert_Array(i).Date_To
9049 ,l_Start_Time
9050 ,l_Start_Time
9051 ,0
9052 ,Linsert_Array(i).Statement_Date
9053 ,Linsert_Array(i).Description);
9054 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
9055 INSERT /* APPEND_VALUES*/ INTO Statement_Header_Identifiers Shi
9056 (Shi.Id
9057 ,Shi.Key
9058 ,Shi.Value
9059 ,Shi.Bank_Id
9060 ,Shi.Extore_Id
9061 ,Shi.Version
9062 ,Shi.Modification_Date
9063 ,Shi.Creation_Date)
9064 VALUES
9065 (Vn_Sh_Identifier_Id
9066 ,'SWB_ID'
9067 ,Linsert_Array(i).Value
9068 ,Synch_Restart.Current_Job_Row.Bank_Id
9069 ,Vn_Sh_Id
9070 ,0
9071 ,l_Start_Time
9072 ,l_Start_Time);
9073 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
9074 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
9075 EXCEPTION
9076 WHEN OTHERS THEN
9077 Synch_Restart.Error_Log(l_Program
9078 ,Operation || ', Wd_Swb_Statement_Headers.ID: ' || Linsert_Array(i).Value ||
9079 ', ERROR_CODE: ' || SQLERRM);
9080 END;
9081 END LOOP;
9082 l_Range_a := l_Range_b + 1;
9083 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
9084 END LOOP;
9085 EXIT WHEN c_Insert%NOTFOUND;
9086 END LOOP;
9087 CLOSE c_Insert;
9088 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
9089 Operation := l_Proc || '_After_Loops';
9090 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
9091 Synch.Set_Last_Synch_Date(l_Program, Vd_Remote_Date);
9092 Synch_Restart.End_Step;
9093 EXCEPTION
9094 WHEN OTHERS THEN
9095 Synch_Restart.Error_Log(l_Program, Operation || ', ERROR_CODE: ' || SQLERRM);
9096 Synch_Restart.Error_Log(l_Program, Operation);
9097 ROLLBACK;
9098 END Prc_Wyciagi_Ca;
9099 PROCEDURE Prc_Wyciagi_Cc AS
9100 l_Proc VARCHAR2(100) := 'PRC_WYCIAGI_CC';
9101 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
9102 Last_Synch_Date DATE;
9103 l_Start_Time DATE;
9104 Vd_Remote_Date DATE;
9105 Operation VARCHAR2(100);
9106 Ln_Buff_Len NUMBER := 0;
9107 l_Range_a NUMBER := 0;
9108 l_Range_b NUMBER := 0;
9109 v_Seq_From Integer;
9110 v_Seq_To Integer;
9111 vsql varchar2(4000);
9112 synch_d varchar2(100);
9113 cnt number;
9114 CURSOR c_Insert IS
9115 --SELECT /*+ driving_site(wd) use_hash(wd,cps,ccshi) */
9116 SELECT
9117 0 Seq
9118 ,To_Char(CAST(Wd.Id AS NUMBER(19))) VALUE
9119 ,CAST(Wd.Creation_Date AS TIMESTAMP) Statement_Date
9120 ,CAST(Wd.Date_From AS DATE) Date_From
9121 ,CAST(Wd.Date_To AS DATE) Date_To
9122 ,CAST(Wd.Title AS VARCHAR2(50 CHAR)) Description
9123 ,Cps.Id Card_Product_Id
9124 FROM LC_Wd_Swb_Statement_Headers Wd
9125 JOIN Card_Product_Source Cps
9126 ON Cps.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
9127 AND Cps.Product_Source_Id = CAST(Wd.Account_Id AS NUMBER(19))
9128 LEFT JOIN Credit_Card_Sh_Identifiers Ccshi
9129 ON Ccshi.Key = 'SWB_ID'
9130 AND Ccshi.Bank_Id = Synch_Restart.Current_Job_Row.Bank_Id
9131 AND Ccshi.Value = To_Char(CAST(Wd.Id AS NUMBER(19)))
9132 WHERE Upper(Wd.Statement_Type) = 'CC'
9133 AND CAST(Wd.Modification_Date AS DATE) > Last_Synch_Date
9134 AND CAST(Wd.Modification_Date AS DATE) <= Vd_Remote_Date
9135 AND Ccshi.Id IS NULL;
9136 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
9137 Linsert_Array Tinsert_Table;
9138 BEGIN
9139 Proc_Time := Current_Timestamp;
9140 Synch_Restart.Start_Step;
9141 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
9142 l_Start_Time := Synch_Restart.Get_Start_Time();
9143 begin
9144 Synch_Restart.Log('Rozpoczynam czyszczenie ' || 'LC_Wd_Swb_Statement_Headers');
9145 vsql:='truncate table LC_Wd_Swb_Statement_Headers';
9146 execute immediate vsql;
9147 commit;
9148 Synch_Restart.Log('KOniec czyszczenie ' || 'LC_Wd_Swb_Statement_Headers');
9149 end;
9150 begin
9151 select value||':00' into synch_d from synch_config where name='SYNCH_KARTOTECZNE.PRC_WYCIAGI_CC';
9152 Synch_Restart.Log('Rozpoczynam dodawanie ' || 'LC_Wd_Swb_Statement_Headers od:'||synch_d);
9153 vsql:='insert into LC_Wd_Swb_Statement_Headers
9154 (select /*+ DRIVING_SITE(Wd)*/ Wd.* from Wd_Swb_Statement_Headers Wd
9155 WHERE Wd.Modification_Date >=to_date('||''''||synch_d||''''||
9156 ' ,'||''''||'YYYY-MM-DD HH24:MI:SS'||''''||')'||')';
9157 execute immediate vsql;
9158 commit;
9159 Synch_Restart.Log('wykonano:'||vsql);
9160 dbms_stats.gather_table_stats(user,'LC_Wd_Swb_Statement_Headers');
9161 vsql:='select count(*) from LC_Wd_Swb_Statement_Headers';
9162 execute immediate vsql into cnt;
9163 Synch_Restart.Log('Koniec dodawanie ' || 'LC_Wd_Swb_Statement_Headers pobrano:'||cnt||' rekord?w');
9164 end;
9165 SELECT To_Date(VALUE, 'yyyy-mm-dd hh24:mi:ss')
9166 INTO Vd_Remote_Date
9167 FROM Wd_Swb_Config
9168 WHERE Key = 'STATEMENT_HEADERS_DATE';
9169 Synch_Restart.Log('last_synch_date = ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' until to : ' ||
9170 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
9171 Part_Time := Current_Timestamp;
9172 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
9173 Operation := l_Proc || '_INSERT';
9174 OPEN c_Insert;
9175 LOOP
9176 FETCH c_Insert BULK COLLECT
9177 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
9178 If Linsert_Array.Count > 0 Then
9179 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count*2, v_Seq_From, v_Seq_To );
9180 For i In 1..Linsert_Array.Count
9181 Loop
9182 Linsert_Array(i).Seq := v_Seq_From + (i-1)*2;
9183 End Loop;
9184 End If;
9185 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
9186 l_Range_a := 0;
9187 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
9188 WHILE l_Range_a IS NOT NULL
9189 LOOP
9190 FOR i IN l_Range_a .. l_Range_b
9191 LOOP
9192 DECLARE
9193 Vn_Sh_Id NUMBER := Linsert_Array(i).Seq; --e_Id_Seq.Nextval;
9194 Vn_Sh_Identifier_Id NUMBER := Linsert_Array(i).Seq+1; --e_Id_Seq.Nextval;
9195 Vn_Rows NUMBER := 0;
9196 BEGIN
9197 Vn_Rows := 0;
9198 INSERT /* APPEND_VALUES*/ INTO Credit_Card_Sh Sh
9199 (Sh.Id
9200 ,Sh.Bank_Id
9201 -- ,Sh.Card_Id
9202 ,Sh.Date_From
9203 ,Sh.Date_To
9204 ,Sh.Creation_Date
9205 ,Sh.Modification_Date
9206 ,Sh.Version
9207 ,Sh.Statement_Date
9208 ,Sh.Description
9209 ,Sh.Card_Product_Id)
9210 VALUES
9211 (Vn_Sh_Id
9212 ,Synch_Restart.Current_Job_Row.Bank_Id
9213 -- ,Linsert_Array(i).Extore_Card_Id
9214 ,Linsert_Array(i).Date_From
9215 ,Linsert_Array(i).Date_To
9216 ,l_Start_Time
9217 ,l_Start_Time
9218 ,0
9219 ,Linsert_Array(i).Statement_Date
9220 ,Linsert_Array(i).Description
9221 ,Linsert_Array(i).Card_Product_Id);
9222 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
9223 INSERT /* APPEND_VALUES*/ INTO Credit_Card_Sh_Identifiers Shi
9224 (Shi.Id
9225 ,Shi.Key
9226 ,Shi.Value
9227 ,Shi.Bank_Id
9228 ,Shi.Extore_Id
9229 ,Shi.Version
9230 ,Shi.Modification_Date
9231 ,Shi.Creation_Date)
9232 VALUES
9233 (Vn_Sh_Identifier_Id
9234 ,'SWB_ID'
9235 ,Linsert_Array(i).Value
9236 ,Synch_Restart.Current_Job_Row.Bank_Id
9237 ,Vn_Sh_Id
9238 ,0
9239 ,l_Start_Time
9240 ,l_Start_Time);
9241 Vn_Rows := Vn_Rows + SQL%ROWCOUNT;
9242 Synch.Flush_Buff(Ln_Buff_Len, Vn_Rows);
9243 EXCEPTION
9244 WHEN OTHERS THEN
9245 Synch_Restart.Error_Log(l_Program
9246 ,Operation || ', Wd_Swb_Statement_Headers.ID: ' || Linsert_Array(i).Value ||
9247 ', ERROR_CODE: ' || SQLERRM);
9248 EXIT;
9249 END;
9250 END LOOP;
9251 l_Range_a := l_Range_b + 1;
9252 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
9253 END LOOP;
9254 EXIT WHEN c_Insert%NOTFOUND;
9255 END LOOP;
9256 CLOSE c_Insert;
9257 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
9258 Operation := l_Proc || '_After_Loops';
9259 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
9260 Synch.Set_Last_Synch_Date(l_Program, Vd_Remote_Date);
9261 Synch_Restart.End_Step;
9262 EXCEPTION
9263 WHEN OTHERS THEN
9264 Synch_Restart.Error_Log(l_Program, Operation || ', ERROR_CODE: ' || SQLERRM);
9265 Synch_Restart.Error_Log(l_Program, Operation);
9266 ROLLBACK;
9267 END Prc_Wyciagi_Cc;
9268 --
9269 PROCEDURE Matryca AS
9270 l_Proc VARCHAR2(100) := 'matryca';
9271 l_Program VARCHAR2(100) := l_Pkg || '.' || l_Proc;
9272 Last_Synch_Date DATE;
9273 l_Start_Time DATE;
9274 Operation VARCHAR2(100);
9275 Ln_Buff_Len NUMBER := 0;
9276 l_Range_a NUMBER := 0;
9277 l_Range_b NUMBER := 0;
9278 v_Seq_From Integer;
9279 v_Seq_To Integer;
9280 CURSOR c_Update IS
9281 SELECT 1
9282 FROM Dual
9283 WHERE 1 = 2;
9284 CURSOR c_Insert IS
9285 SELECT 0 Seq, CAST(SYSDATE AS DATE) SYSDATE
9286 FROM Dual Wd;
9287 CURSOR c_Delete IS
9288 SELECT 1
9289 FROM Dual c
9290 WHERE 1 = 2;
9291 TYPE Tupdate_Table IS TABLE OF c_Update%ROWTYPE;
9292 TYPE Tinsert_Table IS TABLE OF c_Insert%ROWTYPE;
9293 TYPE Tdelete_Table IS TABLE OF c_Delete%ROWTYPE;
9294 Lupdate_Array Tupdate_Table;
9295 Linsert_Array Tinsert_Table;
9296 Ldelete_Array Tdelete_Table;
9297 BEGIN
9298 Proc_Time := Current_Timestamp;
9299 Synch_Restart.Start_Step;
9300 Last_Synch_Date := Synch.Get_Last_Synch_Date(l_Program);
9301 l_Start_Time := Synch_Restart.Get_Start_Time();
9302 Synch_Restart.Log('From: ' || To_Char(Last_Synch_Date, 'yyyy-mm-dd hh24:mi') || ' to : ' ||
9303 To_Char(l_Start_Time, 'yyyy-mm-dd hh24:mi'));
9304 Synch_Restart.Log('Rozpoczynam aktualizacje ' || l_Proc);
9305 Operation := l_Proc || '_UPDATE';
9306 Part_Time := Current_Timestamp;
9307 OPEN c_Update;
9308 LOOP
9309 FETCH c_Update BULK COLLECT
9310 INTO Lupdate_Array LIMIT Synch.l_Bulk_Limit;
9311 Synch_Restart.Counter_Log(0, Lupdate_Array.Count, 0);
9312 l_Range_a := 0;
9313 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
9314 WHILE l_Range_a IS NOT NULL
9315 LOOP
9316 Synch.Flush_Buff(Ln_Buff_Len, c_Update%NOTFOUND);
9317 l_Range_a := l_Range_b + 1;
9318 Synch.Piece(l_Range_a, l_Range_b, Lupdate_Array.Count);
9319 END LOOP;
9320 EXIT WHEN c_Update%NOTFOUND;
9321 END LOOP;
9322 CLOSE c_Update;
9323 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
9324 Part_Time := Current_Timestamp;
9325 Synch_Restart.Log('Rozpoczynam dodawanie nowych ' || l_Proc);
9326 Operation := l_Proc || '_INSERT';
9327 OPEN c_Insert;
9328 LOOP
9329 FETCH c_Insert BULK COLLECT
9330 INTO Linsert_Array LIMIT Synch.l_Bulk_Limit;
9331 If Linsert_Array.Count > 0 Then
9332 SYNCH.Get_Seq_Range('E_ID_SEQ',Linsert_Array.Count, v_Seq_From, v_Seq_To );
9333 For i In 1..Linsert_Array.Count
9334 Loop
9335 Linsert_Array(i).Seq := v_Seq_From + (i-1);
9336 End Loop;
9337 End If;
9338 Synch_Restart.Counter_Log(0, Linsert_Array.Count, 0);
9339 l_Range_a := 0;
9340 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
9341 WHILE l_Range_a IS NOT NULL
9342 LOOP
9343 Synch.Flush_Buff(Ln_Buff_Len, c_Insert%NOTFOUND);
9344 l_Range_a := l_Range_b + 1;
9345 Synch.Piece(l_Range_a, l_Range_b, Linsert_Array.Count);
9346 END LOOP;
9347 EXIT WHEN c_Insert%NOTFOUND;
9348 END LOOP;
9349 CLOSE c_Insert;
9350 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
9351 Part_Time := Current_Timestamp;
9352 --
9353 Synch_Restart.Log('Rozpoczynam aktualizacje usunietych ' || l_Proc);
9354 Operation := l_Proc || '_DELETE';
9355 OPEN c_Delete;
9356 LOOP
9357 FETCH c_Delete BULK COLLECT
9358 INTO Ldelete_Array LIMIT Synch.l_Bulk_Limit;
9359 Synch_Restart.Counter_Log(0, Ldelete_Array.Count, 0);
9360 l_Range_a := 0;
9361 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
9362 WHILE l_Range_a IS NOT NULL
9363 LOOP
9364 l_Range_a := l_Range_b + 1;
9365 Synch.Piece(l_Range_a, l_Range_b, Ldelete_Array.Count);
9366 END LOOP;
9367 EXIT WHEN c_Delete%NOTFOUND;
9368 END LOOP;
9369 CLOSE c_Delete;
9370 Synch_Restart.Log(3, Operation || ' czas: ' || Substr(To_Char(Current_Timestamp - Part_Time), 12, 8));
9371 --
9372 Operation := l_Proc || '_After_Loops';
9373 Synch_Restart.Log(3, l_Proc || ' czas: ' || Substr(To_Char(Current_Timestamp - Proc_Time), 12, 8));
9374 Synch.Set_Last_Synch_Date(l_Program);
9375 Synch_Restart.End_Step;
9376 EXCEPTION
9377 WHEN OTHERS THEN
9378 IF SQL%Bulk_Exceptions.Count > 0 THEN
9379 IF Operation = l_Proc || '_INSERT' THEN
9380 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
9381 LOOP
9382 Synch_Restart.Error_Log(l_Program
9383 ,Operation || ', Product_Type_Id: ' || --Linsert_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
9384 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
9385 END LOOP;
9386 ELSIF Operation = l_Proc || '_UPDATE' THEN
9387 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
9388 LOOP
9389 Synch_Restart.Error_Log(l_Program
9390 ,Operation || ', Product_Type_Id: ' || --Lupdate_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
9391 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
9392 END LOOP;
9393 ELSIF Operation = l_Proc || '_DELETE' THEN
9394 FOR e IN 1 .. SQL%Bulk_Exceptions.Count
9395 LOOP
9396 Synch_Restart.Error_Log(l_Program
9397 ,Operation || ', Product_Type_Id: ' || --Ldelete_Array(SQL%BULK_EXCEPTIONS(e).Error_Index).Id ||
9398 ', ERROR_CODE: ' || SQLERRM(-sql%BULK_EXCEPTIONS(e).Error_Code));
9399 END LOOP;
9400 END IF;
9401 END IF;
9402 Synch_Restart.Error_Log(l_Program, Operation);
9403 ROLLBACK;
9404 END Matryca;
9405BEGIN
9406 EXECUTE IMMEDIATE 'alter session set nls_language=''POLISH''';
9407 EXECUTE IMMEDIATE 'alter session set nls_territory=''POLAND''';
9408END Synch_Kartoteczne;
9409/
9410INSERT INTO FMBANK_CHANGE_LOGS (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('NBANK-1409_full_fix', 'paw_sal', 'src/main/resources/liquibase/1.x/main/db.changelog.xml', SYSTIMESTAMP, 1737, '7:d7332f779ccfdc639ffc421e38864422', 'sqlFile; sqlFile', '', 'EXECUTED', 'prod,test', NULL, '3.5.4', '7528571049');
9411-- Release Database Lock
9412UPDATE FMBANK_CHANGE_LOG_LOCKS SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;