# Mise en recette Workflow dérogation MAXS
###### tags: `MAXS`
- [x] PR de master vers recette
- commit avant PR : 65aa4cee1b185f0c430094adf8e3656cbd159aaf
- [x] tester la version
- [x] PR de recette vers master
### Création / modification tables
- [x] MAXS_METIER_VALIDATION
``` sql
ALTER TABLE MAXSADMMIGR.MAXS_METIER_VALIDATEUR
MODIFY(POIDS_VALIDATION VARCHAR2(10 BYTE));
```
- [x] MAXS_SIMULATION
``` sql
ALTER TABLE MAXSADMMIGR.MAXS_SIMULATION
MODIFY(MONTANT VARCHAR2(15 BYTE));
ALTER TABLE MAXSADMMIGR.MAXS_SIMULATION
MODIFY(DUREE VARCHAR2(16 BYTE));
ALTER TABLE MAXSADMMIGR.MAXS_SIMULATION
MODIFY(FRAIS_DOSSIER VARCHAR2(8 BYTE));
```
- [x] MAXS_FOYER
``` sql
ALTER TABLE MAXSADMMIGR.MAXS_FOYER ADD (NB_PERSONNES_TMP NUMBER);
UPDATE MAXSADMMIGR.MAXS_FOYER SET NB_PERSONNES_TMP = to_number(replace(NB_PERSONNES, '.' , ','));
ALTER TABLE MAXSADMMIGR.MAXS_FOYER DROP COLUMN NB_PERSONNES;0
ALTER TABLE MAXSADMMIGR.MAXS_FOYER RENAME COLUMN NB_PERSONNES_TMP TO NB_PERSONNES;
```
- [x] SEQ_VALIDATION_SIMULATION
``` sql
CREATE SEQUENCE MAXSADMMIGR.SEQ_VALIDATION_SIMULATION
START WITH 1
MAXVALUE 9999999999999999999999999999
MINVALUE 0
NOCYCLE
NOCACHE
NOORDER
NOKEEP
GLOBAL;
```
- [x] MAXS_METIER_VALIDATEUR
``` sql
ALTER TABLE MAXSADMMIGR.MAXS_METIER_VALIDATEUR
ADD (REDUCTION_DEROGATION VARCHAR2(10 BYTE) NOT NULL);
```
- [x] MAXS_VALIDATION_SIMULATION
``` sql
ALTER TABLE MAXSADMMIGR.MAXS_VALIDATION_SIMULATION
ADD (COMMENTAIRE VARCHAR2(500 BYTE));
```
- [x] MAXS_LIENS_VALIDATEURS
``` sql
CREATE TABLE MAXS_LIENS_VALIDATEURS
(
ID_VALIDATEUR NUMBER NOT NULL,
ID_SUPERIEUR NUMBER NOT NULL,
ORDRE NUMBER
)
TABLESPACE DAT_PROD
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
MONITORING;
CREATE UNIQUE INDEX MAXS_LIENS_VALIDATEURS_PK ON MAXS_LIENS_VALIDATEURS
(ID_VALIDATEUR, ID_SUPERIEUR)
NOLOGGING
TABLESPACE DAT_PROD
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
);
ALTER TABLE MAXS_LIENS_VALIDATEURS ADD (
CONSTRAINT MAXS_LIENS_VALIDATEURS_PK
PRIMARY KEY
(ID_VALIDATEUR, ID_SUPERIEUR)
USING INDEX MAXS_LIENS_VALIDATEURS_PK
ENABLE VALIDATE);
ALTER TABLE MAXS_LIENS_VALIDATEURS ADD (
CONSTRAINT MAXS_LIENS_VALIDATEURS_R01
FOREIGN KEY (ID_VALIDATEUR)
REFERENCES MAXS_METIER_VALIDATEUR (ID_METIER_VALIDATEUR)
ON DELETE CASCADE
ENABLE VALIDATE,
CONSTRAINT MAXS_LIENS_VALIDATEURS_R02
FOREIGN KEY (ID_SUPERIEUR)
REFERENCES MAXS_METIER_VALIDATEUR (ID_METIER_VALIDATEUR)
ENABLE VALIDATE);
```
- [x] CONTRAINTES
``` sql
DELETE FROM MAXS_FOYER WHERE ID_SIMULATION IN (
SELECT DISTINCT ID_SIMULATION FROM MAXS_SIMULATION WHERE ID_SIMULATION NOT IN (
SELECT ID_SIMULATION FROM MAXS_FOYER)
UNION ALL SELECT DISTINCT ID_SIMULATION FROM MAXS_FOYER WHERE ID_SIMULATION NOT IN (
SELECT ID_SIMULATION FROM MAXS_SIMULATION));
ALTER TABLE MAXS_FOYER
ADD CONSTRAINT MAXS_FOYER_R01
FOREIGN KEY (ID_SIMULATION)
REFERENCES MAXS_SIMULATION (ID_SIMULATION)
ON DELETE CASCADE;
DELETE FROM MAXS_SIMULATION_CRITERE WHERE ID_SIMULATION IN(
SELECT DISTINCT ID_SIMULATION FROM MAXS_SIMULATION_CRITERE WHERE ID_SIMULATION NOT IN (
SELECT ID_SIMULATION FROM MAXS_SIMULATION)
UNION ALL
SELECT DISTINCT ID_SIMULATION FROM MAXS_SIMULATION WHERE ID_SIMULATION NOT IN (
SELECT ID_SIMULATION FROM MAXS_SIMULATION_CRITERE));
ALTER TABLE MAXSADMMIGR.MAXS_SIMULATION_CRITERE
ADD CONSTRAINT MAXS_SIMULATION_CRITERE_R02
FOREIGN KEY (ID_SIMULATION)
REFERENCES MAXSADMMIGR.MAXS_SIMULATION (ID_SIMULATION)
ON DELETE CASCADE;
DELETE FROM MAXS_SIMULATION_PRODUIT WHERE ID_SIMULATION IN(
SELECT DISTINCT ID_SIMULATION FROM MAXS_SIMULATION_PRODUIT WHERE ID_SIMULATION NOT IN (
SELECT ID_SIMULATION FROM MAXS_SIMULATION)
UNION ALL
SELECT DISTINCT ID_SIMULATION FROM MAXS_SIMULATION WHERE ID_SIMULATION NOT IN (
SELECT ID_SIMULATION FROM MAXS_SIMULATION_PRODUIT));
ALTER TABLE MAXSADMMIGR.MAXS_SIMULATION_PRODUIT
ADD CONSTRAINT MAXS_SIMULATION_PRODUITS_R01
FOREIGN KEY (ID_SIMULATION)
REFERENCES MAXSADMMIGR.MAXS_SIMULATION (ID_SIMULATION)
ON DELETE CASCADE;
```
- [x] Peupler les tables depuis MAXSADMREC
- [x] MAXS_ETAT_SIMULATION
- [x] MAXS_METIER_VALIDATEUR
- [x] MAXS_LIENS_VALIDATEUR
- [x] GRANT de MAXS vers CORR_METIER
- [x] [maxs_stceb] dans db-oracle.ini
- [x] J'ai commenté des lignes dans api.php pour que ça marche : MAXS::DEMANDE_INTERDITE => voir le commun ? 111..113
``` php
if (!$estUtilisateur) {
$action = Maxs::DEMANDE_INTERDIT
}
```
- [x] Modification de la règle de l'accès à la demande de dérogation en prod : simulation-validation-controleur.js pour ne pas lancer une demande lorsque le taux est au dessus du personnalisé mais en dessous du taux sans dérog et en s'assurant qu'il y a un taux demandé (des dérog sont parties sans taux demandés, les GC interrogés ne savent pas comment ils ont fait)
``` js
if (vm.input.tauxDemande < vm.input.tauxSansDerog && vm.input.tauxDemande < vm.input.tauxPersonnalise && vm.input.tauxDemande!=null)
```
- [x] Le lien dans les mails pointaient sur migr, correction faite en prod
- [x] problème pour stocker les nombes de personnes au foyer avec le séparateur , => corrigé en remplaçant la virgule par un point quand on insert
## Requêtes de suivi de prod
- Jointure entre simulation et validation simulation pour pouvoir voir quels taux sont demandés en dérog => vérification de cohérence
``` sql
SELECT vs.*,
s.ID_AD_INSTRUCTEUR,
s.DUREE,
s.TAUX_STANDARD,
s.TAUX_PERSONNALISE,
s.TAUX_DEMANDE
FROM MAXS_VALIDATION_SIMULATION vs
LEFT JOIN MAXS_SIMULATION s ON s.ID_SIMULATION=vs.ID_SIMUlATION
ORDER BY DATE_ENVOI_DEMANDE DESC;
```
- Compte des dérogation par ID_AD_VALIDATEUR avec Prénom et Nom
``` sql
SELECT ID_AD_VALIDATEUR, p.PRENOM, p.NOMUSU, COUNT(*) as "COMPTE", COUNT(DISTINCT DATE_DECISION) as "TRAITEE"
FROM MAXS_VALIDATION_SIMULATION vs
LEFT JOIN STCEB.PERSON@STCEB p ON p.ID_ADMSG = vs.ID_AD_VALIDATEUR
GROUP BY ID_AD_VALIDATEUR, p.PRENOM, p.NOMUSU
ORDER BY "COMPTE" DESC;
```