/[openfoncier]/trunk/obj/om_widget.class.php
ViewVC logotype

Diff of /trunk/obj/om_widget.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 8328 by softime, Fri Jul 20 17:12:33 2018 UTC revision 8329 by softime, Wed Nov 14 11:20:57 2018 UTC
# Line 6171  class om_widget extends om_widget_core { Line 6171  class om_widget extends om_widget_core {
6171          );          );
6172      }      }
6173    
6174        /**
6175         * WIDGET DASHBOARD - Derniers dossiers déposés
6176         *
6177         * @return void
6178         */
6179        function view_widget_derniers_dossiers_deposes($content = null) {
6180    
6181            /**
6182             * Ce widget est configurable via l'interface Web. Lors de la création
6183             * du widget dans le paramétrage il est possible de spécifier la ou les
6184             * options suivantes :
6185             *
6186             * - filtre :
6187             *    = instructeur
6188             *    = division
6189             *    = aucun
6190             *   (default) Par défaut les dossiers sont filtrés sur l'instructeur.
6191             *
6192             * - nombre_de_jours : c'est le délai en jours avant la date limite à
6193             *   partir duquel on souhaite voir apparaître les dossiers dans le
6194             *   widget.
6195             *   (default) Par défaut la valeur est 15 jours.
6196             *
6197             * - codes_datd : la liste des types de dossiers à afficher. exemple :
6198             *   "PCI;PCA;DPS;CUa;CUb".
6199             *   (default) Par défaut tous les types sont affichés. [null]
6200             *
6201             * - restreindre_msg_non_lus : dans le listing associé, la colonne "message
6202             *   manuel" affiche un indicateur
6203             *      = true :  que si le dossier comporte au moins un message
6204             *      manuel NON LU.
6205             *      = (default)false :si le dossier comporte au moins un message
6206             *      manuel.
6207             *
6208             * - filtre_depot :
6209             *      = depot_electronique
6210             *      = guichet
6211             *      = (default) aucun
6212             *     Par défaut le filtre de dépôt est aucun,
6213             *     donc autorise tous les types de dépôt.
6214             */
6215            // Liste des paramètres
6216            $params = array("filtre", "nombre_de_jours", "codes_datd", "filtre_depot", "restreindre_msg_non_lus");
6217            // Formatage des arguments reçus en paramètres
6218            $arguments = $this->get_arguments($content, $params);
6219            // Récupération de la configuration du widget
6220            $conf = $this->get_config_derniers_dossiers_deposes($arguments);
6221            //
6222            $filtre = $conf["arguments"]["filtre"];
6223            $nombre_de_jours = $conf["arguments"]["nombre_de_jours"];
6224            $codes_datd = $conf["arguments"]["codes_datd"];
6225            $filtre_depot = $conf["arguments"]["filtre_depot"];
6226            $restreindre_msg_non_lus = $conf["arguments"]["restreindre_msg_non_lus"];
6227    
6228            /**
6229             * Composition de la requête
6230             */
6231            //
6232            $query = sprintf(
6233                "SELECT COUNT (DISTINCT(dossier.dossier))
6234                FROM
6235                    %s
6236                WHERE
6237                    %s
6238                    %s
6239                    %s
6240                    %s
6241                    %s",
6242                $conf["query_ct_from"],
6243                $conf["query_ct_where_common"],
6244                $conf["query_ct_where_date_filter"],
6245                $conf["query_ct_where_groupe"],
6246                $conf["query_ct_where_depot_filter"],
6247                $conf["query_ct_where_datd_filter"]
6248            );
6249    
6250            /**
6251             * Exécution de la requête
6252             */
6253            //
6254            $res = $this->f->db->getone($query);
6255            $this->addToLog(__METHOD__."(): db->getone(\"".$query."\");", VERBOSE_MODE);
6256            $this->f->isDatabaseError($res);
6257    
6258            // Affichage du message d'informations
6259            printf(
6260                $this->template_help,
6261                $conf["message_help"]
6262            );
6263    
6264            //
6265            if (intval($res) === 0) {
6266                //
6267                echo _("Aucun dossier déposé dernièrement.");
6268                return;
6269            }
6270    
6271    
6272            /**
6273             *
6274             */
6275            $template_panel = '
6276            <div class="panel panel-box">
6277                <div class="list-justified-container">
6278                    <ul class="list-justified text-center">
6279                        %s
6280                    </ul>
6281                </div>
6282            </div>';
6283            /**
6284             *
6285             */
6286            //
6287            $panel = "";
6288            //
6289            $template_elem = '
6290            <li>
6291                <span class="size-h3 box-icon rounded %s">%s</span>
6292                <p class="text-muted">%s %s</p>
6293            </li>
6294            ';
6295            $panel_elem = sprintf(
6296                $template_elem,
6297                "bg-info",
6298                intval($res),
6299                _("Déposés dernièrement"),
6300                ""
6301            );
6302            //
6303            $panel .= sprintf(
6304                $template_panel,
6305                $panel_elem
6306            );
6307            echo $panel;
6308    
6309            // Affichage du footer
6310            printf(
6311                $this->template_footer,
6312                // href (avec les paramètres du widget)
6313                sprintf(
6314                    OM_ROUTE_TAB."&obj=derniers_dossiers_deposes&filtre=%s&nombre_de_jours=%s&codes_datd=%s&filtre_depot=%s&restreindre_msg_non_lus=%s",
6315                    $filtre,
6316                    $nombre_de_jours,
6317                    (is_null($codes_datd) ? "" : implode(";",$codes_datd)),
6318                    $filtre_depot,
6319                    $restreindre_msg_non_lus
6320                ),
6321                // titre
6322                _("Voir +")
6323            );
6324    
6325        }
6326    
6327        /**
6328         * Cette méthode permet de récupérer la configuration du widget 'Dossiers
6329         * limites'.
6330         *
6331         * @return array
6332         */
6333        function get_config_derniers_dossiers_deposes($arguments) {
6334            // Initialisation du tableau des paramètres avec ses valeur par défaut
6335            $arguments_default = array(
6336                "nombre_de_jours" => 15,
6337                "codes_datd" => null,
6338                "filtre" => "division",
6339                "filtre_depot"=> "aucun",
6340                "restreindre_msg_non_lus" => "false"
6341            );
6342            // Vérification des arguments
6343            foreach ($arguments_default as $key => $value) {
6344                //
6345                if (isset($arguments[$key])) {
6346                    //
6347                    $elem = trim($arguments[$key]);
6348                    //
6349                    if ($key === "nombre_de_jours"
6350                        && intval($elem) > 0) {
6351                        // Ce doit être un entier
6352                        $arguments[$key] = intval($elem);
6353                        continue;
6354                    } elseif ($key === "codes_datd"
6355                        && $elem != "") {
6356                        // Ce doit être un tableau
6357                        $arguments[$key] = explode(";", $elem);
6358                        continue;
6359                    } elseif ($key === "filtre"
6360                        && in_array($elem, array("instructeur", "division", "aucun"))) {
6361                        // La valeur doit être dans cette liste
6362                        $arguments[$key] = $elem;
6363                        continue;
6364                    } elseif ($key === "filtre_depot"
6365                        && in_array($elem, array("depot_electronique", "guichet", "aucun"))) {
6366                        // La valeur doit être dans cette liste
6367                        $arguments[$key] = $elem;
6368                        continue;
6369                    } elseif ($key === "restreindre_msg_non_lus"
6370                        && in_array($elem, array("true", "false"))) {
6371                        // La valeur doit être dans cette liste
6372                        $arguments[$key] = $elem;
6373                        continue;
6374                    }
6375                }
6376                //
6377                $arguments[$key] = $value;
6378            }
6379            //
6380            $nombre_de_jours = $arguments["nombre_de_jours"];
6381            $codes_datd = $arguments["codes_datd"];
6382            $filtre = $arguments["filtre"];
6383            $filtre_depot = $arguments["filtre_depot"];
6384            $restreindre_msg_non_lus = $arguments["restreindre_msg_non_lus"];
6385    
6386            // SELECT - CHAMPAFFICHE - pour le listing
6387            // On distingue par dossier_libelle car la jointure à la table message
6388            // provoque des doublons lorsqu'un dossier a plusieurs messages
6389            // On distingue par date de dépot car les arguments du "DISTINCT ON"
6390            // doivent être ceux de "ORDER BY"
6391            $case_demandeur = "CASE WHEN demandeur.qualite = 'particulier'
6392            THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
6393            ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
6394            END";
6395            $query_ct_select_champrecherche = array(
6396                'dossier.dossier as "'._("dossier").'"',
6397                'dossier.dossier_libelle as "'._("dossier_libelle").'"',
6398            );
6399            $query_ct_select_champaffiche = array(
6400                'DISTINCT ON (dossier.date_depot,dossier.dossier) dossier.dossier as "'._("dossier").'"',
6401                'dossier.dossier_libelle as "'._("dossier").'"',
6402                $case_demandeur.' AS "'._("petitionnaire").'"',
6403                'to_char(dossier.date_depot, \'DD/MM/YYYY\') AS "'._("date_depot").'"',
6404                "CASE WHEN dossier.a_qualifier IS TRUE
6405                    THEN 'Oui'
6406                    ELSE 'Non'
6407                END".' as "'._("a_qualifier").'"',
6408                'donnees_techniques.co_tot_log_nb as "'._("nombre total de logements").'"',
6409                'CASE WHEN su2_avt_shon1 IS NOT NULL
6410                    OR su2_avt_shon2 IS NOT NULL
6411                    OR su2_avt_shon3 IS NOT NULL
6412                    OR su2_avt_shon4 IS NOT NULL
6413                    OR su2_avt_shon5 IS NOT NULL
6414                    OR su2_avt_shon6 IS NOT NULL
6415                    OR su2_avt_shon7 IS NOT NULL
6416                    OR su2_avt_shon8 IS NOT NULL
6417                    OR su2_avt_shon9 IS NOT NULL
6418                    OR su2_avt_shon10 IS NOT NULL
6419                    OR su2_avt_shon11 IS NOT NULL
6420                    OR su2_avt_shon12 IS NOT NULL
6421                    OR su2_avt_shon13 IS NOT NULL
6422                    OR su2_avt_shon14 IS NOT NULL
6423                    OR su2_avt_shon15 IS NOT NULL
6424                    OR su2_avt_shon16 IS NOT NULL
6425                    OR su2_avt_shon17 IS NOT NULL
6426                    OR su2_avt_shon18 IS NOT NULL
6427                    OR su2_avt_shon19 IS NOT NULL
6428                    OR su2_avt_shon20 IS NOT NULL
6429                    OR su2_cstr_shon1 IS NOT NULL
6430                    OR su2_cstr_shon2 IS NOT NULL
6431                    OR su2_cstr_shon3 IS NOT NULL
6432                    OR su2_cstr_shon4 IS NOT NULL
6433                    OR su2_cstr_shon5 IS NOT NULL
6434                    OR su2_cstr_shon6 IS NOT NULL
6435                    OR su2_cstr_shon7 IS NOT NULL
6436                    OR su2_cstr_shon8 IS NOT NULL
6437                    OR su2_cstr_shon9 IS NOT NULL
6438                    OR su2_cstr_shon10 IS NOT NULL
6439                    OR su2_cstr_shon11 IS NOT NULL
6440                    OR su2_cstr_shon12 IS NOT NULL
6441                    OR su2_cstr_shon13 IS NOT NULL
6442                    OR su2_cstr_shon14 IS NOT NULL
6443                    OR su2_cstr_shon15 IS NOT NULL
6444                    OR su2_cstr_shon16 IS NOT NULL
6445                    OR su2_cstr_shon17 IS NOT NULL
6446                    OR su2_cstr_shon18 IS NOT NULL
6447                    OR su2_cstr_shon19 IS NOT NULL
6448                    OR su2_cstr_shon20 IS NOT NULL
6449                    OR su2_chge_shon1 IS NOT NULL
6450                    OR su2_chge_shon2 IS NOT NULL
6451                    OR su2_chge_shon3 IS NOT NULL
6452                    OR su2_chge_shon4 IS NOT NULL
6453                    OR su2_chge_shon5 IS NOT NULL
6454                    OR su2_chge_shon6 IS NOT NULL
6455                    OR su2_chge_shon7 IS NOT NULL
6456                    OR su2_chge_shon8 IS NOT NULL
6457                    OR su2_chge_shon9 IS NOT NULL
6458                    OR su2_chge_shon10 IS NOT NULL
6459                    OR su2_chge_shon11 IS NOT NULL
6460                    OR su2_chge_shon12 IS NOT NULL
6461                    OR su2_chge_shon13 IS NOT NULL
6462                    OR su2_chge_shon14 IS NOT NULL
6463                    OR su2_chge_shon15 IS NOT NULL
6464                    OR su2_chge_shon16 IS NOT NULL
6465                    OR su2_chge_shon17 IS NOT NULL
6466                    OR su2_chge_shon18 IS NOT NULL
6467                    OR su2_chge_shon19 IS NOT NULL
6468                    OR su2_chge_shon20 IS NOT NULL
6469                    OR su2_demo_shon1 IS NOT NULL
6470                    OR su2_demo_shon2 IS NOT NULL
6471                    OR su2_demo_shon3 IS NOT NULL
6472                    OR su2_demo_shon4 IS NOT NULL
6473                    OR su2_demo_shon5 IS NOT NULL
6474                    OR su2_demo_shon6 IS NOT NULL
6475                    OR su2_demo_shon7 IS NOT NULL
6476                    OR su2_demo_shon8 IS NOT NULL
6477                    OR su2_demo_shon9 IS NOT NULL
6478                    OR su2_demo_shon10 IS NOT NULL
6479                    OR su2_demo_shon11 IS NOT NULL
6480                    OR su2_demo_shon12 IS NOT NULL
6481                    OR su2_demo_shon13 IS NOT NULL
6482                    OR su2_demo_shon14 IS NOT NULL
6483                    OR su2_demo_shon15 IS NOT NULL
6484                    OR su2_demo_shon16 IS NOT NULL
6485                    OR su2_demo_shon17 IS NOT NULL
6486                    OR su2_demo_shon18 IS NOT NULL
6487                    OR su2_demo_shon19 IS NOT NULL
6488                    OR su2_demo_shon20 IS NOT NULL
6489                    OR su2_sup_shon1 IS NOT NULL
6490                    OR su2_sup_shon2 IS NOT NULL
6491                    OR su2_sup_shon3 IS NOT NULL
6492                    OR su2_sup_shon4 IS NOT NULL
6493                    OR su2_sup_shon5 IS NOT NULL
6494                    OR su2_sup_shon6 IS NOT NULL
6495                    OR su2_sup_shon7 IS NOT NULL
6496                    OR su2_sup_shon8 IS NOT NULL
6497                    OR su2_sup_shon9 IS NOT NULL
6498                    OR su2_sup_shon10 IS NOT NULL
6499                    OR su2_sup_shon11 IS NOT NULL
6500                    OR su2_sup_shon12 IS NOT NULL
6501                    OR su2_sup_shon13 IS NOT NULL
6502                    OR su2_sup_shon14 IS NOT NULL
6503                    OR su2_sup_shon15 IS NOT NULL
6504                    OR su2_sup_shon16 IS NOT NULL
6505                    OR su2_sup_shon17 IS NOT NULL
6506                    OR su2_sup_shon18 IS NOT NULL
6507                    OR su2_sup_shon19 IS NOT NULL
6508                    OR su2_sup_shon20 IS NOT NULL
6509                THEN
6510                    donnees_techniques.su2_cstr_shon_tot
6511                ELSE
6512                    donnees_techniques.su_cstr_shon_tot
6513                END as "'._("surface de plancher construite totale").'"',
6514                "CASE WHEN su2_avt_shon1 IS NOT NULL
6515                    OR su2_avt_shon2 IS NOT NULL
6516                    OR su2_avt_shon3 IS NOT NULL
6517                    OR su2_avt_shon4 IS NOT NULL
6518                    OR su2_avt_shon5 IS NOT NULL
6519                    OR su2_avt_shon6 IS NOT NULL
6520                    OR su2_avt_shon7 IS NOT NULL
6521                    OR su2_avt_shon8 IS NOT NULL
6522                    OR su2_avt_shon9 IS NOT NULL
6523                    OR su2_avt_shon10 IS NOT NULL
6524                    OR su2_avt_shon11 IS NOT NULL
6525                    OR su2_avt_shon12 IS NOT NULL
6526                    OR su2_avt_shon13 IS NOT NULL
6527                    OR su2_avt_shon14 IS NOT NULL
6528                    OR su2_avt_shon15 IS NOT NULL
6529                    OR su2_avt_shon16 IS NOT NULL
6530                    OR su2_avt_shon17 IS NOT NULL
6531                    OR su2_avt_shon18 IS NOT NULL
6532                    OR su2_avt_shon19 IS NOT NULL
6533                    OR su2_avt_shon20 IS NOT NULL
6534                    OR su2_cstr_shon1 IS NOT NULL
6535                    OR su2_cstr_shon2 IS NOT NULL
6536                    OR su2_cstr_shon3 IS NOT NULL
6537                    OR su2_cstr_shon4 IS NOT NULL
6538                    OR su2_cstr_shon5 IS NOT NULL
6539                    OR su2_cstr_shon6 IS NOT NULL
6540                    OR su2_cstr_shon7 IS NOT NULL
6541                    OR su2_cstr_shon8 IS NOT NULL
6542                    OR su2_cstr_shon9 IS NOT NULL
6543                    OR su2_cstr_shon10 IS NOT NULL
6544                    OR su2_cstr_shon11 IS NOT NULL
6545                    OR su2_cstr_shon12 IS NOT NULL
6546                    OR su2_cstr_shon13 IS NOT NULL
6547                    OR su2_cstr_shon14 IS NOT NULL
6548                    OR su2_cstr_shon15 IS NOT NULL
6549                    OR su2_cstr_shon16 IS NOT NULL
6550                    OR su2_cstr_shon17 IS NOT NULL
6551                    OR su2_cstr_shon18 IS NOT NULL
6552                    OR su2_cstr_shon19 IS NOT NULL
6553                    OR su2_cstr_shon20 IS NOT NULL
6554                    OR su2_chge_shon1 IS NOT NULL
6555                    OR su2_chge_shon2 IS NOT NULL
6556                    OR su2_chge_shon3 IS NOT NULL
6557                    OR su2_chge_shon4 IS NOT NULL
6558                    OR su2_chge_shon5 IS NOT NULL
6559                    OR su2_chge_shon6 IS NOT NULL
6560                    OR su2_chge_shon7 IS NOT NULL
6561                    OR su2_chge_shon8 IS NOT NULL
6562                    OR su2_chge_shon9 IS NOT NULL
6563                    OR su2_chge_shon10 IS NOT NULL
6564                    OR su2_chge_shon11 IS NOT NULL
6565                    OR su2_chge_shon12 IS NOT NULL
6566                    OR su2_chge_shon13 IS NOT NULL
6567                    OR su2_chge_shon14 IS NOT NULL
6568                    OR su2_chge_shon15 IS NOT NULL
6569                    OR su2_chge_shon16 IS NOT NULL
6570                    OR su2_chge_shon17 IS NOT NULL
6571                    OR su2_chge_shon18 IS NOT NULL
6572                    OR su2_chge_shon19 IS NOT NULL
6573                    OR su2_chge_shon20 IS NOT NULL
6574                    OR su2_demo_shon1 IS NOT NULL
6575                    OR su2_demo_shon2 IS NOT NULL
6576                    OR su2_demo_shon3 IS NOT NULL
6577                    OR su2_demo_shon4 IS NOT NULL
6578                    OR su2_demo_shon5 IS NOT NULL
6579                    OR su2_demo_shon6 IS NOT NULL
6580                    OR su2_demo_shon7 IS NOT NULL
6581                    OR su2_demo_shon8 IS NOT NULL
6582                    OR su2_demo_shon9 IS NOT NULL
6583                    OR su2_demo_shon10 IS NOT NULL
6584                    OR su2_demo_shon11 IS NOT NULL
6585                    OR su2_demo_shon12 IS NOT NULL
6586                    OR su2_demo_shon13 IS NOT NULL
6587                    OR su2_demo_shon14 IS NOT NULL
6588                    OR su2_demo_shon15 IS NOT NULL
6589                    OR su2_demo_shon16 IS NOT NULL
6590                    OR su2_demo_shon17 IS NOT NULL
6591                    OR su2_demo_shon18 IS NOT NULL
6592                    OR su2_demo_shon19 IS NOT NULL
6593                    OR su2_demo_shon20 IS NOT NULL
6594                    OR su2_sup_shon1 IS NOT NULL
6595                    OR su2_sup_shon2 IS NOT NULL
6596                    OR su2_sup_shon3 IS NOT NULL
6597                    OR su2_sup_shon4 IS NOT NULL
6598                    OR su2_sup_shon5 IS NOT NULL
6599                    OR su2_sup_shon6 IS NOT NULL
6600                    OR su2_sup_shon7 IS NOT NULL
6601                    OR su2_sup_shon8 IS NOT NULL
6602                    OR su2_sup_shon9 IS NOT NULL
6603                    OR su2_sup_shon10 IS NOT NULL
6604                    OR su2_sup_shon11 IS NOT NULL
6605                    OR su2_sup_shon12 IS NOT NULL
6606                    OR su2_sup_shon13 IS NOT NULL
6607                    OR su2_sup_shon14 IS NOT NULL
6608                    OR su2_sup_shon15 IS NOT NULL
6609                    OR su2_sup_shon16 IS NOT NULL
6610                    OR su2_sup_shon17 IS NOT NULL
6611                    OR su2_sup_shon18 IS NOT NULL
6612                    OR su2_sup_shon19 IS NOT NULL
6613                    OR su2_sup_shon20 IS NOT NULL
6614                    THEN
6615                        REGEXP_REPLACE(CONCAT(
6616                            CASE WHEN donnees_techniques.su2_cstr_shon1 IS NULL
6617                                THEN ''
6618                                ELSE CONCAT ('Exploitation agricole - ', donnees_techniques.su2_cstr_shon1, ' m² / ')
6619                            END,
6620                            CASE WHEN donnees_techniques.su2_cstr_shon2 IS NULL
6621                                THEN ''
6622                                ELSE CONCAT ('Exploitation forestière - ', donnees_techniques.su2_cstr_shon2, ' m² / ')
6623                            END,
6624                            CASE WHEN donnees_techniques.su2_cstr_shon3 IS NULL
6625                                THEN ''
6626                                ELSE CONCAT ('Logement - ', donnees_techniques.su2_cstr_shon3, ' m² / ')
6627                            END,
6628                            CASE WHEN donnees_techniques.su2_cstr_shon4 IS NULL
6629                                THEN ''
6630                                ELSE CONCAT ('Hébergement - ', donnees_techniques.su2_cstr_shon4, ' m² / ')
6631                            END,
6632                            CASE WHEN donnees_techniques.su2_cstr_shon5 IS NULL
6633                                THEN ''
6634                                ELSE CONCAT ('Artisanat et commerce de détail - ', donnees_techniques.su2_cstr_shon5, ' m² / ')
6635                            END,
6636                            CASE WHEN donnees_techniques.su2_cstr_shon6 IS NULL
6637                                THEN ''
6638                                ELSE CONCAT ('Restauration - ', donnees_techniques.su2_cstr_shon6, ' m² / ')
6639                            END,
6640                            CASE WHEN donnees_techniques.su2_cstr_shon7 IS NULL
6641                                THEN ''
6642                                ELSE CONCAT ('Commerce de gros - ', donnees_techniques.su2_cstr_shon7, ' m² / ')
6643                            END,
6644                            CASE WHEN donnees_techniques.su2_cstr_shon8 IS NULL
6645                                THEN ''
6646                                ELSE CONCAT ('Activités de services où s''effectue l''accueil d''une clientèle - ', donnees_techniques.su2_cstr_shon8, ' m² / ')
6647                            END,
6648                            CASE WHEN donnees_techniques.su2_cstr_shon9 IS NULL
6649                                THEN ''
6650                                ELSE CONCAT ('Hébergement hôtelier et touristique - ', donnees_techniques.su2_cstr_shon9, ' m² / ')
6651                            END,
6652                            CASE WHEN donnees_techniques.su2_cstr_shon10 IS NULL
6653                                THEN ''
6654                                ELSE CONCAT ('Cinéma - ', donnees_techniques.su2_cstr_shon10, ' m² / ')
6655                            END,
6656                            CASE WHEN donnees_techniques.su2_cstr_shon11 IS NULL
6657                                THEN ''
6658                                ELSE CONCAT ('Locaux et bureaux accueillant du public des administrations publiques et assimilés - ', donnees_techniques.su2_cstr_shon11, ' m² / ')
6659                            END,
6660                            CASE WHEN donnees_techniques.su2_cstr_shon12 IS NULL
6661                                THEN ''
6662                                ELSE CONCAT ('Locaux techniques et industriels des administrations publiques et assimilés - ', donnees_techniques.su2_cstr_shon12, ' m² / ')
6663                            END,
6664                            CASE WHEN donnees_techniques.su2_cstr_shon13 IS NULL
6665                                THEN ''
6666                                ELSE CONCAT ('Établissements d''enseignement, de santé et d''action sociale - ', donnees_techniques.su2_cstr_shon13, ' m² / ')
6667                            END,
6668                            CASE WHEN donnees_techniques.su2_cstr_shon14 IS NULL
6669                                THEN ''
6670                                ELSE CONCAT ('Salles d''art et de spectacles - ', donnees_techniques.su2_cstr_shon14, ' m² / ')
6671                            END,
6672                            CASE WHEN donnees_techniques.su2_cstr_shon15 IS NULL
6673                                THEN ''
6674                                ELSE CONCAT ('Équipements sportifs - ', donnees_techniques.su2_cstr_shon15, ' m² / ')
6675                            END,
6676                            CASE WHEN donnees_techniques.su2_cstr_shon16 IS NULL
6677                                THEN ''
6678                                ELSE CONCAT ('Autres équipements recevant du public - ', donnees_techniques.su2_cstr_shon16, ' m² / ')
6679                            END,
6680                            CASE WHEN donnees_techniques.su2_cstr_shon17 IS NULL
6681                                THEN ''
6682                                ELSE CONCAT ('Industrie - ', donnees_techniques.su2_cstr_shon17, ' m² / ')
6683                            END,
6684                            CASE WHEN donnees_techniques.su2_cstr_shon18 IS NULL
6685                                THEN ''
6686                                ELSE CONCAT ('Entrepôt - ', donnees_techniques.su2_cstr_shon18, ' m² / ')
6687                            END,
6688                            CASE WHEN donnees_techniques.su2_cstr_shon19 IS NULL
6689                                THEN ''
6690                                ELSE CONCAT ('Bureau - ', donnees_techniques.su2_cstr_shon19, ' m² / ')
6691                            END,
6692                            CASE WHEN donnees_techniques.su2_cstr_shon20 IS NULL
6693                                THEN ''
6694                                ELSE CONCAT ('Centre de congrès et d''exposition - ', donnees_techniques.su2_cstr_shon20, ' m²')
6695                            END
6696                        ), ' / $', '')
6697                    ELSE
6698                        REGEXP_REPLACE(CONCAT(
6699                            CASE
6700                                WHEN donnees_techniques.su_cstr_shon1 IS NULL
6701                                THEN ''
6702                                ELSE CONCAT('Habitation - ', donnees_techniques.su_cstr_shon1, ' m² / ')
6703                            END,
6704                            CASE
6705                                WHEN donnees_techniques.su_cstr_shon2 IS NULL
6706                                THEN ''
6707                                ELSE CONCAT('Hébergement hôtelier - ', donnees_techniques.su_cstr_shon2, ' m² / ')
6708                            END,
6709                            CASE
6710                                WHEN donnees_techniques.su_cstr_shon3 IS NULL
6711                                THEN ''
6712                                ELSE CONCAT('Bureaux - ', donnees_techniques.su_cstr_shon3, ' m² / ')
6713                            END,
6714                            CASE
6715                                WHEN donnees_techniques.su_cstr_shon4 IS NULL
6716                                THEN ''
6717                                ELSE CONCAT('Commerce - ', donnees_techniques.su_cstr_shon4, ' m² / ')
6718                            END,
6719                            CASE
6720                                WHEN donnees_techniques.su_cstr_shon5 IS NULL
6721                                THEN ''
6722                                ELSE CONCAT('Artisanat - ', donnees_techniques.su_cstr_shon5, ' m² / ')
6723                            END,
6724                            CASE
6725                                WHEN donnees_techniques.su_cstr_shon6 IS NULL
6726                                THEN ''
6727                                ELSE CONCAT('Industrie - ', donnees_techniques.su_cstr_shon6, ' m² / ')
6728                            END,
6729                            CASE
6730                                WHEN donnees_techniques.su_cstr_shon7 IS NULL
6731                                THEN ''
6732                                ELSE CONCAT('Exploitation agricole ou forestière - ', donnees_techniques.su_cstr_shon7, ' m² / ')
6733                            END,
6734                            CASE
6735                                WHEN donnees_techniques.su_cstr_shon8 IS NULL
6736                                THEN ''
6737                                ELSE CONCAT('Entrepôt - ', donnees_techniques.su_cstr_shon8, ' m² / ')
6738                            END,
6739                            CASE
6740                                WHEN donnees_techniques.su_cstr_shon9 IS NULL
6741                                THEN ''
6742                                ELSE CONCAT('Service public ou d''intérêt collectif - ', donnees_techniques.su_cstr_shon9, ' m²')
6743                            END
6744                        ), ' / $', '')
6745                END".' as "'._("destination").'"'
6746            );
6747    
6748            //SELECT DEPOT ELECTRONIQUE (LISTING)
6749            // Si le filtre_depot précise le type de dépot il est inutile de faire apparaitre cette colonne
6750            if ($filtre_depot == "aucun") {
6751                //
6752                $query_ct_select_depot_electronique="CASE WHEN dossier.depot_electronique IS TRUE
6753                    THEN 'Oui'
6754                    ELSE 'Non'
6755                END".' as "'._("depot_electronique").'"';
6756                // On l'ajoute aux champs affichés
6757                 $query_ct_select_champaffiche[] = $query_ct_select_depot_electronique;
6758            }
6759    
6760            // SELECT COLONNE MESSAGE (LISTING)
6761            $query_ct_select_message ="";
6762            $title_icon_message = __("Le dossier d'instruction possède au moins un message ajouté manuellement%s.")." ".__("Cliquez sur l'icône pour accéder à la liste des messages du dossier.");
6763            switch($restreindre_msg_non_lus) {
6764                case "false" :
6765                    $query_ct_select_message =
6766                    "CASE
6767                        WHEN dossier.dossier IN (
6768                            SELECT dossier.dossier
6769                            FROM openads.dossier
6770                            LEFT JOIN openads.dossier_message ON dossier.dossier=dossier_message.dossier
6771                            WHERE dossier_message.lu IS NOT NULL
6772                            AND dossier_message.type ='"._("message manuel")."'
6773                            )
6774                        THEN %s
6775                        ELSE %s
6776                    END as message";
6777                    $title_icon_message = sprintf($title_icon_message, "");
6778                    break;
6779                case "true" :
6780                    $query_ct_select_message =
6781                    "CASE
6782                        WHEN dossier.dossier IN (
6783                            SELECT dossier.dossier
6784                            FROM openads.dossier
6785                            LEFT JOIN openads.dossier_message ON dossier.dossier=dossier_message.dossier
6786                            WHERE dossier_message.lu IS NOT NULL
6787                            AND dossier_message.type ='"._("message manuel")."'
6788                            AND dossier_message.lu IS FALSE
6789                            )
6790                        THEN %s
6791                        ELSE %s
6792                    END as message";
6793                    $title_icon_message = sprintf($title_icon_message, " ".__('qui soit non lu'));
6794                    break;
6795            }
6796            //Selon le paramétrage, une icone de notification message s'affiche à l'utilisateur. Cliquer dessus redirige vers l'onglet des messages.
6797            $icone_msg = "CONCAT ('<a title=\"', '".pg_escape_string($title_icon_message)."','\" href=','".OM_ROUTE_FORM."','&obj=dossier_instruction&action=3&idx=',dossier.dossier,'&advs_id=&premier=0&tricol=&valide=&retour=tab#ui-tabs-6>".'<span class=".om-icon om-icon-16 om-icon-fix message-manuel-16"/></a>'."')";
6798            // Sans message (ou message non lu selon paramétrage) rien ne s'affiche dans la colonne
6799            $icone_no_msg = "''";
6800            $query_ct_select_message = sprintf($query_ct_select_message, $icone_msg, $icone_no_msg);
6801            //Les requêtes de la colonne message sont ajoutées aux requêtes des champs affichés pour le listing
6802            $query_ct_select_champaffiche[] = $query_ct_select_message;
6803    
6804            // FROM
6805            $query_ct_from = "
6806            ".DB_PREFIXE."dossier
6807            LEFT JOIN (
6808                SELECT *
6809                FROM ".DB_PREFIXE."lien_dossier_demandeur
6810                INNER JOIN ".DB_PREFIXE."demandeur
6811                    ON demandeur.demandeur = lien_dossier_demandeur.demandeur
6812                WHERE lien_dossier_demandeur.petitionnaire_principal IS TRUE
6813                AND LOWER(demandeur.type_demandeur) = LOWER('petitionnaire')
6814            ) AS demandeur
6815                ON demandeur.dossier = dossier.dossier
6816            LEFT JOIN ".DB_PREFIXE."dossier_autorisation
6817                ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
6818            LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille
6819                ON dossier_autorisation.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
6820            LEFT JOIN ".DB_PREFIXE."dossier_autorisation_type
6821                ON dossier_autorisation_type_detaille.dossier_autorisation_type = dossier_autorisation_type.dossier_autorisation_type
6822            LEFT JOIN ".DB_PREFIXE."donnees_techniques
6823                ON dossier.dossier = donnees_techniques.dossier_instruction
6824            LEFT JOIN ".DB_PREFIXE."dossier_message
6825                ON dossier.dossier = dossier_message.dossier
6826                %s
6827                %s
6828                %s
6829            ";
6830    
6831            $query_ct_where_instructeur_filter = "";
6832            $query_ct_where_division_filter = "";
6833            $query_ct_where_collectivite_filter = "";
6834            // Filtre sur les dossiers qui concernent l'utilisateur
6835            if ($filtre == "instructeur") {
6836                //
6837                $query_ct_where_instructeur_filter = " JOIN ".DB_PREFIXE."instructeur
6838                    ON dossier.instructeur=instructeur.instructeur
6839                JOIN ".DB_PREFIXE."om_utilisateur
6840                    ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur
6841                    AND om_utilisateur.login='".$_SESSION['login']."'
6842                ";
6843            } else {
6844                $query_ct_where_instructeur_filter = " LEFT JOIN ".DB_PREFIXE."instructeur
6845                    ON dossier.instructeur=instructeur.instructeur
6846                LEFT JOIN ".DB_PREFIXE."om_utilisateur
6847                    ON instructeur.om_utilisateur=om_utilisateur.om_utilisateur ";
6848            }
6849            // Filtre sur les dossier de la division
6850            if ($filtre == "division") {
6851                //
6852                $query_ct_where_division_filter = " JOIN ".DB_PREFIXE."division
6853                ON dossier.division=division.division
6854                AND division.division = ".$_SESSION['division']."
6855                ";
6856            } else {
6857                $query_ct_where_division_filter = " LEFT JOIN ".DB_PREFIXE."division
6858                ON dossier.division=division.division";
6859            }
6860            // Dans tous les cas si l'utilisateur fait partie d'une collectivité
6861            // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
6862            // collectivité
6863            if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
6864                $query_ct_where_collectivite_filter = " JOIN ".DB_PREFIXE."om_collectivite
6865                ON dossier.om_collectivite=om_collectivite.om_collectivite
6866                AND om_collectivite.om_collectivite=".$_SESSION['collectivite']."
6867                ";
6868            } else {
6869                $query_ct_where_collectivite_filter = " LEFT JOIN ".DB_PREFIXE."om_collectivite
6870                ON dossier.om_collectivite=om_collectivite.om_collectivite
6871                ";
6872            }
6873    
6874            $query_ct_from = sprintf($query_ct_from, $query_ct_where_instructeur_filter, $query_ct_where_division_filter, $query_ct_where_collectivite_filter);
6875            // WHERE - COMMON
6876            $query_ct_where_common = "
6877            groupe.code != 'CTX'
6878            ";
6879            // WHERE - nombre_de_jours
6880            // Filtre sur l'intervalle pour la date de dépôt
6881            $query_ct_where_date_filter = "
6882            AND dossier.date_depot >= CURRENT_TIMESTAMP - ".$nombre_de_jours." * interval '1 day'
6883            ";
6884            // WHERE - DATD
6885            // Filtre sur le type détaillé des dossiers
6886            $query_ct_where_datd_filter = "";
6887            if (!is_null($codes_datd)
6888                && is_array($codes_datd)
6889                && count($codes_datd) != 0) {
6890                //
6891                $sql_codes = "";
6892                //
6893                foreach ($codes_datd as $code) {
6894                    $sql_codes .= " LOWER(dossier_autorisation_type_detaille.code) = '".$this->f->db->escapesimple(strtolower($code))."' OR ";
6895                }
6896                $sql_codes = substr($sql_codes, 0, count($sql_codes) - 4);
6897                //
6898                $query_ct_where_datd_filter = " AND ( ".$sql_codes." ) ";
6899            }
6900            //WHERE - filtre_depot
6901            // Filtre sur le type de dépôt des dossiers
6902            $query_ct_where_depot_filter = "";
6903            if ($filtre_depot == "depot_electronique") {
6904                //
6905                $query_ct_where_depot_filter = "
6906                AND dossier.depot_electronique IS TRUE
6907                ";
6908            }
6909            if ($filtre_depot == "guichet") {
6910                
6911                $query_ct_where_depot_filter = "
6912                AND dossier.depot_electronique IS FALSE
6913                ";
6914            }
6915    
6916            // ORDER BY
6917            $query_ct_orderby = "
6918                dossier.date_depot DESC,
6919                dossier.dossier
6920            ";
6921    
6922            $query_ct_where_groupe = "";
6923            // Gestion des groupes et confidentialité
6924            include('../sql/pgsql/filter_group_widgets.inc.php');
6925    
6926            /**
6927             * Message d'aide
6928             */
6929            //
6930            $message_filtre_depot = '';
6931            //
6932            switch ($filtre_depot) {
6933                case "depot_electronique" :
6934                    $message_filtre_depot = " "._("déposés électroniquement uniquement");
6935                    break;
6936                case "guichet" :
6937                    $message_filtre_depot = " "._("déposés uniquement via le guichet");
6938                    break;
6939                case "aucun" :
6940                    $message_filtre_depot = " "._("déposés");
6941                    break;
6942            }
6943            //
6944            $message_filtre = "";
6945            //
6946            switch ($filtre) {
6947                case "instructeur" :
6948                    $message_filtre = " "._("(filtrés par instructeur)");
6949                    break;
6950                case "division" :
6951                    $message_filtre = " "._("(filtrés par division)");
6952                    break;
6953            }
6954            //
6955            $message_restreindre_msg_non_lus = "";
6956            //
6957            if ($restreindre_msg_non_lus === "true") {
6958                $message_restreindre_msg_non_lus =" "._("et dont l'indicateur des messages manuels est restreint aux messages non lus");
6959            }
6960            //
6961            $message_help = sprintf(
6962                _("Les  dossiers%s%s dans les %s derniers jours%s%s."),
6963                (is_null($codes_datd) ? "": " (".implode(", ",$codes_datd).")"),
6964                $message_filtre_depot,
6965                $nombre_de_jours,
6966                $message_filtre,
6967                $message_restreindre_msg_non_lus
6968            );
6969    
6970            /**
6971             * Return
6972             */
6973            //
6974            return array(
6975                "arguments" => $arguments,
6976                "message_help" => $message_help,
6977                "query_ct_select_champaffiche" => $query_ct_select_champaffiche,
6978                "query_ct_select_champrecherche" => $query_ct_select_champrecherche,
6979                "query_ct_from" => $query_ct_from,
6980                "query_ct_where_common" => $query_ct_where_common,
6981                "query_ct_where_date_filter" => $query_ct_where_date_filter,
6982                "query_ct_where_depot_filter" => $query_ct_where_depot_filter,
6983                "query_ct_where_datd_filter" => $query_ct_where_datd_filter,
6984                "query_ct_where_groupe" => $query_ct_where_groupe,
6985                "query_ct_orderby" => $query_ct_orderby,
6986            );
6987        }
6988    
6989    
6990      /**      /**
6991       * Cette méthode permet de récupérer la configuration du widget 'Dossier consulter'.       * Cette méthode permet de récupérer la configuration du widget 'Dossier consulter'.
# Line 6181  class om_widget extends om_widget_core { Line 6996  class om_widget extends om_widget_core {
6996          /**          /**
6997           * Construction de la requête           * Construction de la requête
6998           */           */
6999            //
7000            $case_demandeur = "CASE WHEN demandeur.qualite='particulier'
7001            THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
7002            ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
7003            END";
7004          // SELECT          // SELECT
7005          $query_ct_select = "          $query_ct_select = "
7006          dossier.dossier,              dossier.dossier,
7007          dossier.dossier_libelle,              dossier.dossier_libelle,
7008          COALESCE(              $case_demandeur as nom_petitionnaire,
7009              demandeur.particulier_nom,              dossier.date_depot,
7010              demandeur.personne_morale_denomination              dossier_autorisation_type.code
         ) AS nom_petitionnaire,  
         dossier.date_depot,  
         dossier_autorisation_type.code  
7011          ";          ";
7012    
7013          // FROM          // FROM
# Line 6336  class om_widget extends om_widget_core { Line 7153  class om_widget extends om_widget_core {
7153    
7154          if ($dossier_brut === null) {          if ($dossier_brut === null) {
7155              // Affichage du message d'information              // Affichage du message d'information
7156              echo _("Vous n'avez pas consulté de dossier pour le moment.");              echo __("Vous n'avez pas consulté de dossier pour le moment.");
7157              // Exit              // Exit
7158              return;              return;
7159          }          }
# Line 6422  class om_widget extends om_widget_core { Line 7239  class om_widget extends om_widget_core {
7239          printf(          printf(
7240              $template_table,              $template_table,
7241              // Colonne 1 - Numéro de dossier              // Colonne 1 - Numéro de dossier
7242              _('dossier'),              __('dossier'),
7243              // Colonne 2 - petitionnaire              // Colonne 2 - petitionnaire
7244              _('nom_petitionnaire'),              __('demandeur'),
7245              // Colonne 3 - date depot              // Colonne 3 - date depot
7246              _('date_depot'),              __('date_depot'),
7247              // Contenu du tableau              // Contenu du tableau
7248              $ct_tbody              $ct_tbody
7249          );          );
# Line 6438  class om_widget extends om_widget_core { Line 7255  class om_widget extends om_widget_core {
7255              printf(              printf(
7256                  $template_footer_consulter,                  $template_footer_consulter,
7257                  "get_all_dossier_consulte($(this).parent().parent().parent().parent().attr('id'))",                  "get_all_dossier_consulte($(this).parent().parent().parent().parent().attr('id'))",
7258                  _("Afficher +")                  __("Afficher +")
7259              );              );
7260          }          }
7261      }      }

Legend:
Removed from v.8328  
changed lines
  Added in v.8329

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26