Loading module/Oscar/config/module.config.php +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ return array( [ 'controller' => 'Public', 'action' => ['documentation', 'parameters', 'gitlog'], 'action' => ['documentation', 'parameters', 'gitlog', 'todo'], 'roles' => ['user'], ], Loading module/Oscar/config/routes.yml +8 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,14 @@ gitlog: controller: Public action: gitlog todo: type: literal options: route: /todo defaults: controller: Public action: todo ################################################################################ # ACCÈS aux DONNÉES Loading module/Oscar/sql/activitydates-person-todo.sql 0 → 100644 +89 −0 Original line number Diff line number Diff line ------------------------------------------------------------------- -- Retourne les jalons non-faits, faisables, de la personne ------------------------------------------------------------------- WITH -- Liste des jalons à faire jalons_non_faits AS ( SELECT ad.id AS activitydate_id, ad.*, d.label, a.label as activity_label, a.codeeotp as activity_numfinancier, a.oscarnum as activity_oscarnum, p.acronym as acronym FROM activitydate ad join activity a on a.id = ad.activity_id join datetype d on d.id = ad.type_id left join project p on p.id = a.project_id WHERE -- Type de jalons terminables d.finishable = true and -- Jalon non terminé (ad.finished IS NULL OR ad.finished <= 50) and -- et passé ad.datestart < :dateref and -- Sur une activité active a.status NOT IN(:inactivestatus) ), -- Rôles selon les types de jalons roles_needed AS ( SELECT datetype_id, role_id FROM role_datetype ) -- Person <> Activity SELECT DISTINCT ud.* FROM jalons_non_faits ud JOIN datetype dt ON dt.id = ud.type_id JOIN roles_needed rn ON rn.datetype_id = dt.id JOIN activityperson ap ON ap.activity_id = ud.activity_id AND ap.roleobj_id = rn.role_id AND ap.person_id = :person_id UNION --- Person <> Project>Activity SELECT DISTINCT ud.* FROM jalons_non_faits ud JOIN activity a ON a.id = ud.activity_id JOIN datetype dt ON dt.id = ud.type_id JOIN roles_needed rn ON rn.datetype_id = dt.id JOIN projectmember pm ON pm.project_id = a.project_id AND pm.roleobj_id = rn.role_id AND pm.person_id = :person_id UNION --- Person <> Organization>Activity SELECT DISTINCT ud.* FROM jalons_non_faits ud JOIN datetype dt ON dt.id = ud.type_id JOIN roles_needed rn ON rn.datetype_id = dt.id JOIN activityorganization ao ON ao.activity_id = ud.activity_id JOIN organizationperson op ON op.organization_id = ao.organization_id AND op.roleobj_id = rn.role_id AND op.person_id = :person_id UNION --- Person <> Organization>Project SELECT DISTINCT ud.* FROM jalons_non_faits ud JOIN activity a ON a.id = ud.activity_id JOIN datetype dt ON dt.id = ud.type_id JOIN roles_needed rn ON rn.datetype_id = dt.id JOIN projectpartner pp ON pp.project_id = a.project_id JOIN organizationperson op ON op.organization_id = pp.organization_id AND op.roleobj_id = rn.role_id AND op.person_id = :person_id module/Oscar/sql/payments-person-todo.sql 0 → 100644 +63 −0 Original line number Diff line number Diff line ------------------------------------------------------------------- -- Retourne les versements prévisionnels en retard de la personne ------------------------------------------------------------------- WITH payments_non_faits AS ( -- Versement en retard SELECT ap.*, a.label as activity_label, a.oscarnum as activity_oscarnum, a.status as activity_status, a.codeeotp as activity_numfinancier, p.acronym as project_acronym FROM activitypayment ap JOIN activity a ON a.id = ap.activity_id LEFT JOIN project p ON a.project_id = p.id -- Payment prévisionnel du passé WHERE ap.status = :status_previsionnel AND ap.datepredicted <= CAST(:dateref AS DATE) ), -- Rôles pouvant éditer les versements roles_needed AS (SELECT ur.id, ur.role_id FROM user_role ur JOIN role_privilege rp ON rp.role_id = ur.id JOIN privilege p ON p.id = rp.privilege_id JOIN public.categorie_privilege cp on p.categorie_id = cp.id WHERE p.code = 'PAYMENT_MANAGE' AND cp.code = 'ACTIVITY') -- Person <> Activity SELECT DISTINCT pn.* FROM payments_non_faits pn JOIN activityperson ap ON ap.activity_id = pn.activity_id JOIN roles_needed rn ON ap.roleobj_id = rn.id WHERE ap.person_id = :person_id UNION --- Person <> Project>Activity SELECT DISTINCT pn.* FROM payments_non_faits pn JOIN activity a ON a.id = pn.activity_id JOIN projectmember pm ON pm.project_id = a.project_id JOIN roles_needed rn ON pm.roleobj_id = rn.id WHERE pm.person_id = :person_id UNION --- Person <> Organization>Activity SELECT DISTINCT pn.* FROM payments_non_faits pn JOIN activityorganization ao ON ao.activity_id = pn.activity_id JOIN organizationperson op ON op.organization_id = ao.organization_id JOIN roles_needed rn ON rn.id = op.roleobj_id WHERE op.person_id = :person_id UNION --- Person <> Organization>Project SELECT DISTINCT pn.* FROM payments_non_faits pn JOIN activity a ON a.id = pn.activity_id JOIN projectpartner pp ON pp.project_id = a.project_id JOIN organizationperson op ON op.organization_id = pp.organization_id JOIN roles_needed rn ON op.roleobj_id = rn.id WHERE op.person_id = :person_id ; No newline at end of file module/Oscar/src/Oscar/Command/OscarNotificationsMailsPersonsCommand.php +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ class OscarNotificationsMailsPersonsCommand extends OscarCommandAbstract /** @var PersonService $personService */ $personService = $this->getServicemanager()->get(PersonService::class); try { $personService->mailPersonsWithUnreadNotification($dateRef->format('Y-m-d H:i:s'), $io); $personService->notificationsPersons($dateRef->format('Y-m-d H:i:s'), $io); } catch (\Exception $e) { $io->error($e->getMessage()); return self::FAILURE; Loading Loading
module/Oscar/config/module.config.php +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ return array( [ 'controller' => 'Public', 'action' => ['documentation', 'parameters', 'gitlog'], 'action' => ['documentation', 'parameters', 'gitlog', 'todo'], 'roles' => ['user'], ], Loading
module/Oscar/config/routes.yml +8 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,14 @@ gitlog: controller: Public action: gitlog todo: type: literal options: route: /todo defaults: controller: Public action: todo ################################################################################ # ACCÈS aux DONNÉES Loading
module/Oscar/sql/activitydates-person-todo.sql 0 → 100644 +89 −0 Original line number Diff line number Diff line ------------------------------------------------------------------- -- Retourne les jalons non-faits, faisables, de la personne ------------------------------------------------------------------- WITH -- Liste des jalons à faire jalons_non_faits AS ( SELECT ad.id AS activitydate_id, ad.*, d.label, a.label as activity_label, a.codeeotp as activity_numfinancier, a.oscarnum as activity_oscarnum, p.acronym as acronym FROM activitydate ad join activity a on a.id = ad.activity_id join datetype d on d.id = ad.type_id left join project p on p.id = a.project_id WHERE -- Type de jalons terminables d.finishable = true and -- Jalon non terminé (ad.finished IS NULL OR ad.finished <= 50) and -- et passé ad.datestart < :dateref and -- Sur une activité active a.status NOT IN(:inactivestatus) ), -- Rôles selon les types de jalons roles_needed AS ( SELECT datetype_id, role_id FROM role_datetype ) -- Person <> Activity SELECT DISTINCT ud.* FROM jalons_non_faits ud JOIN datetype dt ON dt.id = ud.type_id JOIN roles_needed rn ON rn.datetype_id = dt.id JOIN activityperson ap ON ap.activity_id = ud.activity_id AND ap.roleobj_id = rn.role_id AND ap.person_id = :person_id UNION --- Person <> Project>Activity SELECT DISTINCT ud.* FROM jalons_non_faits ud JOIN activity a ON a.id = ud.activity_id JOIN datetype dt ON dt.id = ud.type_id JOIN roles_needed rn ON rn.datetype_id = dt.id JOIN projectmember pm ON pm.project_id = a.project_id AND pm.roleobj_id = rn.role_id AND pm.person_id = :person_id UNION --- Person <> Organization>Activity SELECT DISTINCT ud.* FROM jalons_non_faits ud JOIN datetype dt ON dt.id = ud.type_id JOIN roles_needed rn ON rn.datetype_id = dt.id JOIN activityorganization ao ON ao.activity_id = ud.activity_id JOIN organizationperson op ON op.organization_id = ao.organization_id AND op.roleobj_id = rn.role_id AND op.person_id = :person_id UNION --- Person <> Organization>Project SELECT DISTINCT ud.* FROM jalons_non_faits ud JOIN activity a ON a.id = ud.activity_id JOIN datetype dt ON dt.id = ud.type_id JOIN roles_needed rn ON rn.datetype_id = dt.id JOIN projectpartner pp ON pp.project_id = a.project_id JOIN organizationperson op ON op.organization_id = pp.organization_id AND op.roleobj_id = rn.role_id AND op.person_id = :person_id
module/Oscar/sql/payments-person-todo.sql 0 → 100644 +63 −0 Original line number Diff line number Diff line ------------------------------------------------------------------- -- Retourne les versements prévisionnels en retard de la personne ------------------------------------------------------------------- WITH payments_non_faits AS ( -- Versement en retard SELECT ap.*, a.label as activity_label, a.oscarnum as activity_oscarnum, a.status as activity_status, a.codeeotp as activity_numfinancier, p.acronym as project_acronym FROM activitypayment ap JOIN activity a ON a.id = ap.activity_id LEFT JOIN project p ON a.project_id = p.id -- Payment prévisionnel du passé WHERE ap.status = :status_previsionnel AND ap.datepredicted <= CAST(:dateref AS DATE) ), -- Rôles pouvant éditer les versements roles_needed AS (SELECT ur.id, ur.role_id FROM user_role ur JOIN role_privilege rp ON rp.role_id = ur.id JOIN privilege p ON p.id = rp.privilege_id JOIN public.categorie_privilege cp on p.categorie_id = cp.id WHERE p.code = 'PAYMENT_MANAGE' AND cp.code = 'ACTIVITY') -- Person <> Activity SELECT DISTINCT pn.* FROM payments_non_faits pn JOIN activityperson ap ON ap.activity_id = pn.activity_id JOIN roles_needed rn ON ap.roleobj_id = rn.id WHERE ap.person_id = :person_id UNION --- Person <> Project>Activity SELECT DISTINCT pn.* FROM payments_non_faits pn JOIN activity a ON a.id = pn.activity_id JOIN projectmember pm ON pm.project_id = a.project_id JOIN roles_needed rn ON pm.roleobj_id = rn.id WHERE pm.person_id = :person_id UNION --- Person <> Organization>Activity SELECT DISTINCT pn.* FROM payments_non_faits pn JOIN activityorganization ao ON ao.activity_id = pn.activity_id JOIN organizationperson op ON op.organization_id = ao.organization_id JOIN roles_needed rn ON rn.id = op.roleobj_id WHERE op.person_id = :person_id UNION --- Person <> Organization>Project SELECT DISTINCT pn.* FROM payments_non_faits pn JOIN activity a ON a.id = pn.activity_id JOIN projectpartner pp ON pp.project_id = a.project_id JOIN organizationperson op ON op.organization_id = pp.organization_id JOIN roles_needed rn ON op.roleobj_id = rn.id WHERE op.person_id = :person_id ; No newline at end of file
module/Oscar/src/Oscar/Command/OscarNotificationsMailsPersonsCommand.php +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ class OscarNotificationsMailsPersonsCommand extends OscarCommandAbstract /** @var PersonService $personService */ $personService = $this->getServicemanager()->get(PersonService::class); try { $personService->mailPersonsWithUnreadNotification($dateRef->format('Y-m-d H:i:s'), $io); $personService->notificationsPersons($dateRef->format('Y-m-d H:i:s'), $io); } catch (\Exception $e) { $io->error($e->getMessage()); return self::FAILURE; Loading