Page suggestion/suggestion.pl always calls GetBudgets() and GetBudgetHierarchy(). But the result are not always used in template. When there are many budgets and funds this takes some time. Also CanUserUseBudget() in a loop should use a unique Koha::Patron object of the logged in user.
(In reply to Fridolin Somers from comment #0) > Also CanUserUseBudget() in a loop should use a unique Koha::Patron object of > the logged in user. Ah I mean a unblessed Koha::Patron object of logged in user
Created attachment 162364 [details] [review] Bug 36155: Improve perfs of suggestion.pl when there are many budgets Page suggestion/suggestion.pl always calls GetBudgets() and GetBudgetHierarchy(). But the result are not always used in template. When there are many budgets and funds this takes some time. Also CanUserUseBudget() in a loop should use a unique Koha::Patron unblessed object of the logged in user. Test plan : 1) Create a user 'P1' with permissions 'catalogue', 'suggestions_manage' and all permissions on acquisition except 'budget_manage_all' 2) Create some funds and subfunds without restricted access 3) Create a fund 'F1' with owner other than 'P1' and restricted access on owner 4) Go to staff interface with patron 'P1' 5) Go to Acquisitions > Suggestions 6) Check you see all founds except F1 in Filter by > Acquisition information 7) Create a new suggestion 8) Check you see all founds except F1 in Fund 9) Select a fund and save 10) Edit this suggestion 11) Check you see all founds except F1 in Fund 12) Compare performance with and without patch with many budgets and funds (see test plan of Bug 35921)
Applyed on a Koha with : 67 aqbudgetperiods 1605 aqbudgets Timings : suggestion.pl?op=add : 14s > 2s suggestion.pl?op=edit : 14s > 2s suggestion.pl?op=show : 20s > 8s Whaouuu :D
Created attachment 162371 [details] [review] Bug 36155: Improve perfs of suggestion.pl when there are many budgets Page suggestion/suggestion.pl always calls GetBudgets() and GetBudgetHierarchy(). But the result are not always used in template. When there are many budgets and funds this takes some time. Also CanUserUseBudget() in a loop should use a unique Koha::Patron unblessed object of the logged in user. Test plan : 1) Create a user 'P1' with permissions 'catalogue', 'suggestions_manage' and all permissions on acquisition except 'budget_manage_all' 2) Create some funds and subfunds without restricted access 3) Create a fund 'F1' with owner other than 'P1' and restricted access on owner 4) Go to staff interface with patron 'P1' 5) Go to Acquisitions > Suggestions 6) Check you see all founds except F1 in Filter by > Acquisition information 7) Create a new suggestion 8) Check you see all founds except F1 in Fund 9) Select a fund and save 10) Edit this suggestion 11) Check you see all founds except F1 in Fund 12) Compare performance with and without patch with many budgets and funds (see test plan of Bug 35921) Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Will need to be rebased on top of 34478 when pushed.