You are not logged in.
Bonjour
En "Self-service" les tickets affichés lors de la recherche "valideur du ticket" ne sont que ceux venant d'un formulaire ayant fait plusieurs tickets.
Explication :
En sql la requête suivante sort 3 tickets
select
glpi_users.name,
glpi_ticketvalidations.tickets_id,
glpi_items_tickets.items_id,
glpi_plugin_formcreator_formanswers.id,
glpi_plugin_formcreator_issues.id,
glpi_plugin_formcreator_issues.items_id
from
glpi_users
JOIN
(glpi_ticketvalidations, glpi_items_tickets)
ON
(
glpi_items_tickets.tickets_id = glpi_ticketvalidations.tickets_id
AND
glpi_ticketvalidations.users_id_validate = glpi_users.id
)
JOIN
glpi_plugin_formcreator_formanswers
ON
glpi_plugin_formcreator_formanswers.id = glpi_items_tickets.items_id
JOIN
glpi_plugin_formcreator_issues
ON
(
glpi_plugin_formcreator_issues.items_id = glpi_items_tickets.items_id
OR
glpi_plugin_formcreator_issues.items_id = glpi_ticketvalidations.tickets_id
)
WHERE
glpi_ticketvalidations.status = 2
AND
glpi_users.name = 'toto@tartuf.rire'
"name","tickets_id","glpi_items_tickets.items_id","glpi_plugin_formcreator_formanswers.id","glpi_plugin_formcreator_issues.id","glpi_plugin_formcreator_issues.items_id"
"toto@tartuf.rire",95334,12691,12691,191271,12691
"toto@tartuf.rire",95320,12673,12673,191253,95320
"toto@tartuf.rire",95322,12675,12675,191255,95322
mais lors de la recherche de "valideur du ticket" est "moi-même",connecté avec session de toto en self-service je n'ai que le formulaire 12691 qui s'affiche.
Cela revient à "#"
OR
glpi_plugin_formcreator_issues.items_id = glpi_ticketvalidations.tickets_id
dans la requête SQL
J'ai regardé dans le PHP glpi/marketplace/formcreator/inc/issues.class.php
654 $newtab = [
655 'id' => '11',
656 'table' => User::getTable(),
657 'field' => 'name',
658 'linkfield' => 'users_id_validate',
659 'name' => __('Ticket approver', 'formcreator'),
660 'datatype' => 'itemlink',
661 'right' => [
662 '0' => 'validate_request',
663 '1' => 'validate_incident'
664 ],
665 'forcegroupby' => true,
666 'massiveaction' => false,
667 'joinparams' => [
668 'beforejoin' => [
669 [
670 'table' => TicketValidation::getTable(),
671 'joinparams' => [
672 'jointype' => 'child',
673 'beforejoin' => [
674 'table' => Ticket::getTable(),
675 'joinparams' => [
676 'jointype' => 'itemtype_item_revert',
677 'specific_itemtype' => Ticket::class,
678 ]
679 ]
680 ]
681 ],
682 [
683 'table' => TicketValidation::getTable(),
684 'joinparams' => [
685 'jointype' => 'child',
686 'beforejoin' => [
687 'table' => Ticket::getTable(),
688 'joinparams' => [
689 'jointype' => 'empty',
690 'condition' => [
691 new \QueryExpression(
692 '1=1'
693 ),
694 ],
695 'beforejoin' => [
696 'table' => Item_Ticket::getTable(),
697 'joinparams' => [
698 'jointype' => 'itemtype_item',
699 'specific_itemtype' => PluginFormcreatorFormAnswer::class,
700 'beforejoin' => [
701 'table' => PluginFormcreatorFormAnswer::getTable(),
702 'joinparams' => [
703 'jointype' => 'itemtype_item_revert',
704 'specific_itemtype' => PluginFormcreatorFormAnswer::class,
705 ],
706 ],
707 ],
708 ],
709 ],
710 ]
711 ]
712 ],
713 ],
714 ]
715 ];
Il me semble que cela est mal interprété.
Si je ne conserve que les lignes 654 à 681, j'obtiens bien les deux "tickets" 95320 et 95322 mais pas le 95334.
Cela correspond à :
glpi_plugin_formcreator_issues.items_id = glpi_ticketvalidations.tickets_id
Si je supprime les lignes 669 à 681, j'obtiens que le ticket 95334 et pas les tickets 95320 et 95322.
Cela correspond à :
glpi_plugin_formcreator_issues.items_id = glpi_items_tickets.items_id
Mais avec le tout, j'ai l'impression que cela ne fait pas comme une fusion des deux requêtes mais n'applique que la dernière.
Je ne suis pas suffisamment calé en développement pour voir comment résoudre l'incident.
Cordialement
GLPI 10.0.15
Formcreator 2.13.9
php 8.2
Last edited by MartyG (2024-08-19 16:55:26)
Offline