Rechercher dans ce blog

lundi 8 avril 2013

Comment implémenter une condition simultanée sur 2 champs d'un datamodel simplement

Besoin: vérifier qu'une relevé Aten à la sauvegarde contienne au moins soit un index soit un incident de relève.

Commente le faire autrement qu'en javascript au clic sur la sauvegarde?
En post action?

jeudi 30 août 2012

Utiliser aten pour modifier l'affichage un champ dynamiquement


Je veux afficher la liste "usage" uniquement si la check box est cochée par l'utilisateur, et l'écran doit s'actualiser à la saisie. (type traitement javascript.)

Soit je code du javascript, moi je suis pas une grande fan, je trouve que le temps de debug/maintenance est plus long, soit j'utilise le mécanisme aten dédié.


Mecanisme aten dédidé

Ajouter le § en couleur à la variable qui doit être évaluée pour afficher la liste "usage".

A chaque modif de cette variable "mycheckbox", aten réactualise les displays conditions des autres champs de l'écran.
<variable control=ControlChekcBox  fieldid=mycheckbox....>
                 <javascript event="onchange">
                            <submit operation="control"/>
                        </javascript>

</variable>


Le champs usage a une displaycondition en fonction du champ mycheckbox
<variable fieldid=usage displaycondition =mycheck.tostring!='1'>...</variable>

cacher / rendre obligatoire un  champ

s'utilise avec
<setdisplayvar variableid=""  ismandatory="" executeif=""/> (dans les préactions)
ou displaycondition (dans la variable)



cf datamodelCCIAG_GENE_PROCEDECONTRATCC.xml

mardi 28 août 2012

inserer nouvel élément dans une table fille

exemple extrait de la classe GénérationConsoTotaliseur



                        //Création donnee fille
                        if ((dcControleur == null) || (dnControleur == null)) {
                            throw new ErreurInterneException("#2 Impossible de recupérer le datacontrol CRTl_RENDEMENT_TOTALISEUR, id ="
                                                                                                + (idControleur != null ? idControleur : "NULL"));
                        }
                        DatatreeIntDataNode dnRendement = dnControleur.createChild("CCIAG_CC_RENDEMENT_TOTALISEUR", atenContext);
                        Serialiseur.completeNewDataNode(atenContext, dnRendement);

                        dnRendement.setAttribut("CCIAG_RENDEMENT_DATE_DEBUT", dateMin);
                        dnRendement.setAttribut("CCIAG_RENDEMENT_DATE_FIN", dateMax);
                        dnRendement.setAttribut("CCIAG_RENDEMENT_VALEUR", rdt);
                        dnRendement.setAttribut("CCIAG_PERTE", perte);
                        dnRendement.setAttribut("CCIAG_RENDEMENT_ANNEE", annee);
                        dnRendement.setAttribut("CCIAG_RENDEMENT_MOIS", mois);

                        if ((lastIdControleur != null) && !lastIdControleur.equals(idControleur)) {//Sauve les rdts pour ce ctrl
                            Serialiseur.makeTransitionFilles(atenContext, dcControleur, null, "CCIAG_CC_RENDEMENT_TOTALISEUR");
                        }
                    } catch (Exception e) {
                        erreursRendement.add(e);
                    }

mardi 21 août 2012

Procédure livraison

Livraison Arsinoe


Se mettre sur la conf de Candice


Sur le projet CCIAG_Arsinoe trunk
1: merge: team merge sur le trunk; si update faire ok.
cf http://aten-alma.blogspot.fr/2012/04/svn-merger-les-revisions-de-la-branche.html
Merge a range of revision
Select revisions (merge from branch de dev)
Choisir le contenu
Prompt du maximum de choses
Ignore ancestry décoché
Finish
Vérif des conflits (visible aussi dans console)
Si conflits: gérer SVN Tree Conflicts (Team show tree conflicts)

Team commit (mettre date du jour, destination...)

2: ant qui copie le contenu des fichiers du dossier local du trunk (pas svn) dans les dossiers de locaux de la branche Imagina
ant: run as option run as (3); cocher default puis run; donner le nom du patch, sinon mettre une valeur ok

Refresh d'Imagina_CCIAG_Arsinoe, vérif rapide puis commit avec numéro de patch, et destination (prod et/ou test)

Puis mail à CCIAG quand mail d'Imagina: patch dispo




3: commit

4: avertir Imagina

5. Envoyer le mail de livraison :
  • avec en pièce jointe les scripts présents dans <dossier lot chaine compteur>\Livraisons\<date livraison>
  • en précisant les étapes post-installation parmi : 
  •  
Mise à jour des bases d'etoile
Mise à jour des bases d'étoile sur aplg et aplf  ( sqlforeign label modifié)
Mise à jour des cycles de vie
Mise à jour des portlets et fonctions
Mise à jour des portails par profil d'utilisateur
Mise à jour des préferences utilisateur (ecran de recherche)
Mise à jour des droits
Après installation de la livraison, passer le script en pièce jointe.
Le patch mobilité nécessite une suppression des bases locales
Batch
     




Livraison Arsinoe V2



cf mail bruno :
 le modèle de la fiche personnel a été modifié et impactait la requête de sélection des personnes.
- AtenDatabaseTablesPROD.cstAttribut_PERSON_RESOURCENAT  remplacé par AtenDatabaseTablesPROD.cstAttribut_PERSON_RESOURCENAT_V_MNT

En synthèse l’ensemble doit compiler moyennant cette modification, qui concerne uniquement une partie commune. Procédure validée en interne avant la mise à disposition du nouveau moteur.




  1. faire la livraison arisnoe (version normale)
  2. à partir du le projet arsinoe CCIAG_Arsinoe trunk
  3. executer la tache ant/ copyfiltoImaginaV2.xml
  4. aller dans le projet arsinoeV4 (qui correspond à arisnoe v2 !). 
  5. faire refresh du projet.
  6. remettre la version tempstravailmanager .java du commit n°1390 dans le projet arsinoeV4
  7. commit
  8. copier dans le projet imagina_arsinoev4 
  9. commit




mardi 3 juillet 2012

feuille de style, css

Pour inclure une feuille de style dans un configurateur :



Dans un configurateur il faut utiliser la balise importcss (cf planning javascript : configuratorplanning.xml). Il faut placer le css dans un répertoire “style” déclaré dans le module en question ou dans le noonpublic si commun à plusieurs module.

jeudi 28 juin 2012

récupérer le technicien responsable d'un compteur

Exemple de code (point de départ: la ligne possédant une série de compteurs):

COALESCE((SELECT TOP 1 p2.at_firstname + ' ' + p2.at_lastname as techInstall
                FROM cciag_cc_compteur               
                left outer join aten_prod_machine on aten_prod_machine.at_idmachine  =  cciag_cc_compteur.at_idmachinecompteur
                left outer join ATEN_GENE_TREEL treelMachine on treelMachine.AT_NOONKEY='db:' + cast(aten_prod_machine.at_idmachine as varchar) +'@ATEN_PROD_MACHINE'
                left outer join ATEN_GENE_TREEL treelEquipement on treelMachine.at_idtreelfather = treelEquipement.at_idtreel  and treelEquipement.AT_NOONKEY like '%@ATEN_PROD_EQUIPEMENTH'
                left outer join ATEN_GENE_TREEL treelInstallation on  treelEquipement.at_idtreelfather = treelInstallation.at_idtreel  and treelInstallation.AT_NOONKEY like '%@ATEN_PROD_INSTALLATIONH'
                left outer join ATEN_PROD_INSTALLATIONH on treelInstallation.AT_NOONKEY='db:' + cast(ATEN_PROD_INSTALLATIONH.AT_IDINSTALLATIONH as varchar) +'@ATEN_PROD_INSTALLATIONH'
                left outer join aten_prod_person p2 on ATEN_PROD_INSTALLATIONH.AT_IDFIRSTTECHNICAL=p2.at_idperson
                where cciag_cc_ligne.cciag_idligne=cciag_cc_compteur.cciag_idligne and aten_prod_machine.AF_EXTENDCODE in
                    (
                        select AT_EXTENDCODE from ATEN_ADMIN_EXTENDL where at_idextendl in
                         (
                            select at_idextendl from ATEN_ADMIN_EXTENDFIELDDESCRIPTION
                            where AT_IDEXTENDFIELD in
                            (
                             select AT_IDEXTENDFIELD from aten_admin_extendfield where AT_FIELDCODE = 'TECHNICIEN'
                            )
                            and AT_IDEXTENDTABLE =
                            (
                                select AT_IDEXTENDTABLE from ATEN_ADMIN_EXTENDTABLE where AT_EXTENDTABLE = 'ATEN_PROD_MACHINE'
                            )
                         )
                    ) order by techInstall desc
                ),'') AS tech2,

mardi 24 avril 2012

SVN merger les revisions de la branche vers le trunk


Dans le trunk >Team > merge
  • ne pas cocher Ignor ancestry
  • résoudre les conflits dans l'éditeur graphique (pour les fichiers contenus dans des révisions à ne pas embarquer)
  • en cas de revert, faire le revert sur dossier parent.
  • En cas de tree conflits (selon le conflit): view tree conflit > clic droit sur ficher > Resolve
Pour connaitre le détail des revisions mergées dans une révision du trunk :
Projet Trunk > History > toolbar de la view history > bouton triangle tout à droite > include merged revisions