jeudi 19 mai 2016

Chargement d'un calendrier FA

Chargement du calendrier FA dans la table FA_CALENDAR_PERIODS
Je devais charger un calendrier sur environ deux siècles pour les immos dans FA.
Cette méthode peut paraître longue à première vue mais s'est révélée à la très simple, plus rapide et n'a généré aucune erreur.

Le chargement ligne à ligne est long et fastidueux. Le mieux est de saisir la première ligne manuellement dans le panneau puis de se servir de cette ligne pour en créer des nouvelles. Il y a pas mal de requête mais ça va très vite à charger.

Il faudra tenir compte du nombre variable de jours dans le mois et des années bisextiles. Attention, l'année 2000 (dernière année du XXème siècle) est bien bisextile car divisible par 400. 1900 n'était pas bisextile.


Structure de la table :

desc FA_CALENDAR_PERIODS
Nom               NULL     Type        
----------------- -------- ------------
CALENDAR_TYPE     NOT NULL VARCHAR2(15)
START_DATE        NOT NULL DATE        
END_DATE          NOT NULL DATE        
PERIOD_NUM        NOT NULL NUMBER(3)   
PERIOD_NAME       NOT NULL VARCHAR2(15)
LAST_UPDATE_DATE  NOT NULL DATE        
LAST_UPDATED_BY   NOT NULL NUMBER(15)  
CREATED_BY                 NUMBER(15)  
CREATION_DATE              DATE        
LAST_UPDATE_LOGIN          NUMBER(15)  

Contraintes d'unicité :



Ou sinon pour insérer la première ligne faire un insert avec des valeurs :
INSERT INTO FA_CALENDAR_PERIODS
(CALENDAR_TYPE,START_DATE,END_DATE
,PERIOD_NUM,PERIOD_NAME
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN)
VALUES
('JOUR',TO_DATE('01011900','DDMMRRRR'),TO_DATE('01011900','DDMMRRRR')
,1,'J-1-1900'
,SYSDATE,1,1,SYSDATE,1);

1 - On génère une seconde ligne à partir de la première
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,START_DATE+1,END_DATE+1
,PERIOD_NUM+1,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+1)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE = TO_DATE('01011900','DDMMYYYY')

A chaque fois il suffit d'adapter les conditions et les calculs aux lignes que l'on veut insérer.

 2 - Puis on génère deux lignes à partir des deux premières
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,START_DATE+2,END_DATE+2
,PERIOD_NUM+2
,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+2)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('02011900','DDMMYYYY');

Ainsi de suite pour faire le premier mois.

3 - INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,START_DATE+4,END_DATE+4
,PERIOD_NUM+4,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+4)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('04011900','DDMMYYYY');

4 - INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,START_DATE+8,END_DATE+8
,PERIOD_NUM+8,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+8)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('08011900','DDMMYYYY');

Pour finir le mois :
5 - INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,START_DATE+16,END_DATE+16
,PERIOD_NUM+16,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+16)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('15011900','DDMMYYYY');

Il faut toujours aller dans le panneau vérifier que les données sont correctement insérées et ne posent pas de problème.

------------------------

Après Janvier, on fait février, 1900 (dernière année du XVIIIème siècle) n'est pas bisextile.

Disgression : il n'y a pas d'an 0, on passe directement du 31/12/-1 (1 av. JC) au 01/01/1 (1 ap. JC). Du coup dans les calculs de date à date il faut bien penser à enlever une année. Entre par exemple le 06/06/-5 et le 06/06/5, il s'est passé (4,5+4,5) neuf ans et non dix comme beaucoup font l'erreur.

Le mois de février se fait directement :
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,1),ADD_MONTHS(END_DATE,1)
,PERIOD_NUM+31,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+31)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('28011900','DDMMYYYY');

Puis mars (le premier mois de l'année chez les romains), on adapte bien à chaque fois le nombre de jour du mois correspondant. On y va mois après mois pour ne faire d'erreur au niveau des nombres de jour. Après on fera des années puis des groupes d'années.
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,2),ADD_MONTHS(END_DATE,2)
,PERIOD_NUM+59,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+59)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('31011900','DDMMYYYY');

Avril
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,3),ADD_MONTHS(END_DATE,3)
,PERIOD_NUM+90,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+90)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('30011900','DDMMYYYY');

Mai
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,4),ADD_MONTHS(END_DATE,4)
,PERIOD_NUM+120,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+120)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('31011900','DDMMYYYY');

Juin
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,5),ADD_MONTHS(END_DATE,5)
,PERIOD_NUM+151,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+151)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('30011900','DDMMYYYY');

Juillet
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,6),ADD_MONTHS(END_DATE,6)
,PERIOD_NUM+181,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+181)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('31011900','DDMMYYYY');

Août
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,7),ADD_MONTHS(END_DATE,7)
,PERIOD_NUM+212,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+212)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('31011900','DDMMYYYY');

Septembre
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,8),ADD_MONTHS(END_DATE,8)
,PERIOD_NUM+243,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+243)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('30011900','DDMMYYYY');

Octobre
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,9),ADD_MONTHS(END_DATE,9)
,PERIOD_NUM+273,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+273)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('31011900','DDMMYYYY');

Novembre
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,10),ADD_MONTHS(END_DATE,10)
,PERIOD_NUM+304,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+304)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('30011900','DDMMYYYY');

Décembre
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,11),ADD_MONTHS(END_DATE,11)
,PERIOD_NUM+334,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+334)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('31011900','DDMMYYYY');

Et voilà les 365 premières lignes insérées.

------------------------

Pour faire l'année suivante, même méthode
1901
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,12),ADD_MONTHS(END_DATE,12)
,PERIOD_NUM,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM)||'-'||TO_CHAR(ADD_MONTHS(START_DATE,12),'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011900','DDMMYYYY') AND TO_DATE('31121900','DDMMYYYY');

On charge les années suivantes. On fera attention à 1904 (année bisextile) . Puis on pourra copier des groupes de 4 (1901=>1905; 1902=>1906; 1903=>1907; 1904=>1908), 8, 16 années et avancer rapidement dans le temps. Pas de problème pour 2000 qui est bisextile.

1902
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,12),ADD_MONTHS(END_DATE,12)
,PERIOD_NUM,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM)||'-'||TO_CHAR(ADD_MONTHS(START_DATE,12),'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011901','DDMMYYYY') AND TO_DATE('31121901','DDMMYYYY');

1903
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,12),ADD_MONTHS(END_DATE,12)
,PERIOD_NUM,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM)||'-'||TO_CHAR(ADD_MONTHS(START_DATE,12),'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011902','DDMMYYYY') AND TO_DATE('31121902','DDMMYYYY');

1904
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,12),ADD_MONTHS(END_DATE,12)
,PERIOD_NUM,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM)||'-'||TO_CHAR(ADD_MONTHS(START_DATE,12),'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011903','DDMMYYYY') AND TO_DATE(31011903','DDMMYYYY');

INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,1),ADD_MONTHS(END_DATE,1)
,PERIOD_NUM+31,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+31)||'-'||TO_CHAR(START_DATE,'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011904','DDMMYYYY') AND TO_DATE('29011904','DDMMYYYY');

-- Prise en compte du J+1
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,12),ADD_MONTHS(END_DATE,12)
,PERIOD_NUM+1,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM+1)||'-'||TO_CHAR(ADD_MONTHS(START_DATE,12),'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01031903','DDMMYYYY') AND TO_DATE(31121903','DDMMYYYY');

------------------------

1905-1908 à l'image de 1901-1904
INSERT INTO FA_CALENDAR_PERIODS
SELECT
CALENDAR_TYPE,ADD_MONTHS(START_DATE,48),ADD_MONTHS(END_DATE,48)
,PERIOD_NUM,SUBSTR(PERIOD_NAME,1,2)||TO_CHAR(PERIOD_NUM)||'-'||TO_CHAR(ADD_MONTHS(START_DATE,48),'YYYY')
,LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATED_BY, CREATION_DATE, LAST_UPDATE_LOGIN
FROM FA_CALENDAR_PERIODS
WHERE CALENDAR_TYPE = 'JOUR'
AND START_DATE BETWEEN TO_DATE('01011901','DDMMYYYY') AND TO_DATE(31121904','DDMMYYYY');


R12 - Insertion de pièces GL - rééquilibrages des livres primaires/secondaires

R12 - Insertion de pièces GL - rééquilibrages des livres primaires/secondaires

Des pièces GL sont présentes dans le livre PRIMAIRE mais sont absentes dans le livre SECONDAIRE. Il faudrait récupérer ces pièces manquantes et les intégrer dans le second livre. Certaines pièces sont partiellement manquantes.

Méthode :
1 – Sélection des lots du mois considéré
SELECT distinct gjb.je_batch_id,gll.name, gjh.period_name, gjb.name, gjb.RUNNING_TOTAL_CR, gjb.RUNNING_TOTAL_DR, gjb.RUNNING_TOTAL_ACCOUNTED_CR, gjb.RUNNING_TOTAL_ACCOUNTED_DR
FROM gl_je_batches gjb, gl_je_headers gjh,gl_ledgers gll
WHERE gjb.je_batch_id = gjh.je_batch_id
AND gjh.ledger_id = gll.ledger_id
AND gjh.ledger_id IN (2259, 2596)
AND gjh.currency_code != 'STAT'
AND gjb.status = 'P' -- lot imputé
AND gjh.period_name IN ('APR-15')--, 'JUN-15')
ORDER BY gjb.name,gjh.period_name, gjb.RUNNING_TOTAL_CR

  
2 – Export Excel des données
Contrôler les lots (lots manquants, lots partiels, lots présents) entre les deux livres. Bien marquer ces catégories.

 
3 – Passer la requête d’INSERT (option : en excluant les lots partiels) dans GL_INTERFACE
Paramètres : mois
En dur :
gjh.ledger_id = 2259 -- LIVRE_PRIMAIRE
gll.name='_LIVRE_PRIMAIRE'
AND gll2.name='LIVRE_SECONDAIRE'


INSERT INTO GL_INTERFACE (status, ledger_id, accounting_date, currency_code, date_created, created_by, actual_flag, user_je_category_name,user_je_source_name
,segment1,segment2,segment3,segment4,segment5,segment6,segment7,segment8,segment9
,entered_dr,entered_cr,accounted_dr,accounted_cr
,period_name
,reference1 --batch name
,reference4 --Journal entry name
,reference5 --Journal entry description gjh.desciption
,reference10 -- Journal entry line description gjl.description
,reference25 -- gjl.refrence5
,reference26 -- gjl.refrence6
,reference27 -- gjl.refrence7
,reference28 -- gjl.refrence8
,reference29 -- gjl.refrence9
,reference30 -- gjl.refrence10
,GL_SL_LINK_ID --Renseigné par Oracle Subledger Accounting (SLA) pour indiquer le lien de la tansaction d'origine
,GL_SL_LINK_TABLE --Renseigné par Oracle Subledger Accounting (SLA) pour indiquer la table de la transaction d'origine
,subledger_doc_sequence_value
,subledger_doc_sequence_id
)
SELECT 'NEW'
,2596 -- LIVRE_SECONDAIRE
,gjl.effective_date, gjh.currency_code, sysdate, gjl.created_by, 'A' ,gjc.user_je_category_name, gjs.user_je_source_name
-- éléments de la clef comptables :
 ,gcc.segment1 
 ,'000000' 
 ,'00'
 ,'000'
 ,'0000'
 ,'0000'
 ,gcc.Segment7
 ,gcc.segment8 
,gcc.Segment9
,gjl.entered_dr,gjl.entered_cr,gjl.accounted_dr,gjl.accounted_cr
,gjh.period_name
,SUBSTR('R '||gjb.je_batch_id||' '||gjb.name,1,100) --- batch name
,gjh.name
,gjh.DESCRIPTION
,gjl.description
,gjl.reference_5
,gjl.reference_6
,gjl.reference_7
,gjl.reference_8
,gjl.reference_9
,gjl.reference_10
,gjl.GL_SL_LINK_ID
,gjl.GL_SL_LINK_TABLE
,gjl.subledger_doc_sequence_value
,gjl.subledger_doc_sequence_id
FROM GL_JE_BATCHES gjb
,GL_JE_HEADERS gjh
,GL_JE_LINES gjl
,GL_JE_CATEGORIES_TL gjc
,GL_JE_SOURCES_TL gjs
,GL_CODE_COMBINATIONS gcc
WHERE gcc.code_combination_id = gjl.code_combination_id
AND gjs.language = 'F'
AND gjs.JE_SOURCE_NAME = gjh.JE_SOURCE
AND gjc.language = 'F'
AND gjc.JE_CATEGORY_NAME = gjh.JE_CATEGORY
AND gjl.je_header_id = gjh.je_header_id
AND gjb.je_batch_id = gjh.je_batch_id
and gjh.ledger_id = 2259 -- LIVRE_PRIMAIRE
AND gjh.currency_code != 'STAT'
AND gjb.status = 'P' -- lot imputé
AND gjb.name IN (-- SELECTION DES LOTS --
SELECT --distinct gll.name, gjh.period_name, gjb.name, gjb.RUNNING_TOTAL_CR, gjb.RUNNING_TOTAL_DR
distinct gjb.name
FROM gl_je_batches gjb, gl_je_headers gjh, gl_ledgers gll
WHERE gjb.je_batch_id = gjh.je_batch_id
AND gjh.ledger_id = gll.ledger_id
AND gjh.period_name IN ('APR-15') --, 'MAY-15', 'JUN-15')
AND gll.name='LIVRE_PRIMAIRE'
AND NOT EXISTS (SELECT 'X' -- On enlève les lots déjà intégrés (même montant ici sinon trouver un caractère discriminatoire)
FROM gl_je_batches gjb2,gl_ledgers gll2,gl_je_headers gjh2
WHERE gjh2.ledger_id = gll2.ledger_id
AND gjb2.je_batch_id = gjh2.je_batch_id
AND gll2.name='LIVRE_SECONDAIRE'
AND gjh2.period_name = gjh.period_name
AND gjb.RUNNING_TOTAL_CR = gjb2.RUNNING_TOTAL_CR
AND gjb.RUNNING_TOTAL_DR = gjb2.RUNNING_TOTAL_DR
))

 
-- partie optionnelle s'il faut enlever les lots partiellements intégrés de la liste (identification manuelle) --
-- et/ou intégration dans un second temps après contrepassation des lots
AND gjb.name NOT IN
('Comptes fournisseurs A 833344 5471103'
,'Comptes fournisseurs A 837351 5495545'
,'Comptes fournisseurs A 844348 5522463'
,'Comptes fournisseurs A 844450 5530738'
,'Comptes fournisseurs A 845357 5538580'
,'Comptes fournisseurs A 850428 5571373'
,'Comptes fournisseurs A 850687 5587094'
,'Comptes fournisseurs A 850794 5594447'
,'Comptes fournisseurs A 851349 5601954'
,'Comptes fournisseurs A 853447 5628990'
,'Comptes fournisseurs A 855446 5638900'
)


 
Valider la transaction (COMMIT)

4) Lancer l’Easylink

Aller dans la responsabilité GL du livre secondaire (M)Pièces/importer/Lancer

Pour visionner ce qu'il y a dans GL_INTERFACE :
SELECT distinct(user_je_source_name) from gl_interface where ledger_id IN (2596) -- => Comptes fournisseurs ; Manuelle

 

 
A ce stade, si on veut repasser l’insert celui-ci ne devrait pas fonctionner car il trouve les lots existants avec les mêmes montants (ou le même caractère discriminatoire).

 
5) Rechercher les nouveaux lots créés puis contrôler les montants

-- Liste des lots importés
SELECT *
FROM gl_je_batches gjb
WHERE name like 'R %'
AND gjb.status = 'U'
-- Liste des pièces importées
select gjh.* from gl_je_headers gjh,gl_je_batches gjb
WHERE gjh.ledger_id = 2596
AND gjb.je_batch_id = gjh.je_batch_id
and gjb.name like 'R %'
AND gjb.status = 'U'

select gjl.* from gl_je_headers gjh, gl_je_lines gjl,gl_je_batches gjb
WHERE gjh.ledger_id = 2596
AND gjb.je_batch_id = gjh.je_batch_id
and gjb.name like 'R %'
AND gjb.status = 'U'
and gjh.je_header_id = gjl.je_header_id
select sum(gjh.running_total_dr),sum(gjh.running_total_cr),sum(gjh.running_total_accounted_dr),sum(gjh.running_total_accounted_cr)
from gl_je_headers gjh,gl_je_batches gjb
WHERE gjh.ledger_id = 2596
AND gjb.je_batch_id = gjh.je_batch_id
and gjb.name like 'R %'
AND gjb.status = 'U'

La somme correspond à la somme des lots dans le fichier extrait (préalablement repérées par un code couleur)

6) Demander la contrepassation des lots ‘partiels’, puis intégrer ces lots si ce n'est déjà fait.