Bug 28640

Summary: Add EDI order status to basket details display
Product: Koha Reporter: Martin Renvoize <martin.renvoize>
Component: AcquisitionsAssignee: Martin Renvoize <martin.renvoize>
Status: RESOLVED FIXED QA Contact: Kyle M Hall <kyle>
Severity: enhancement    
Priority: P5 - low CC: andrew, j.j.brown, J.P.Knight, kyle
Version: master   
Hardware: All   
OS: All   
See Also: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=14083
Change sponsored?: --- Patch complexity: ---
Text to go in the release notes:
Clarify the exact status of EDI orders on the basket details display, highlighting that a basket can be closed but pending or closed and sent for example.
Version(s) released in:
21.11.00
Attachments: Bug 28640: Expose EDI Status on basket details page
Bug 28640: Unit tests for edi_order relation
Bug 28640: Expose EDI Status on basket details page
Bug 28640: Unit tests for edi_order relation
Bug 28640: Expose EDI Status on basket details page
Bug 28640: Unit tests for edi_order relation
Bug 28640: Expose EDI Status on basket details page
Bug 28640: Unit tests for edi_order relation
Bug 28640: Expose EDI Status on basket details page
Bug 28640: (QA follow-up) Prevent unit tests from failing

Description Martin Renvoize 2021-06-30 12:27:25 UTC
One can close the basket without going via the 'Create EDIFACT order' button and then wonder why the order has not proceeded.

We should add the EDI status to the basket page so end users can track the progress on a basket to an edi order and beyond.
Comment 1 Martin Renvoize 2021-06-30 12:36:51 UTC
Created attachment 122506 [details] [review]
Bug 28640: Expose EDI Status on basket details page

This patch adds the edi_order relationship method to
Koha::Acquisition::Basket to return the most recently attached
edi_message of type 'ORDER' for the basket.

NOTE: EDI currently returns raw DBIC results. I have opted to maintain
that approach here, but would like to work on upgradeing the
Koha::EDIFACT::Order class to be a subclass of Koha::Object at a later
date.

We then use this new relationship in acqui/basket to display the EDI
status for such baskets.

Test plan
1/ Setup a vendor with EDI Ordering enabled
2/ Add a new basket for the vendor.
3/ Note the new 'EDI status' field displays and reads 'Not ordered'
4/ Close the basker
5/ The 'EDI status' should continue to display 'Not ordered'
6/ Re-open the basket
7/ Close the basket via 'Create EDIFACT order'
8/ Navigate back to the now closed basket
9/ Note the 'EDI status' field now displays 'Pending' and the transfer
date.
10/ Progress the EDI order by running the edi_cron.pl script
11/ The EDI status field should now reflect that the message has been
sent.
Comment 2 Martin Renvoize 2021-06-30 13:27:13 UTC
Created attachment 122507 [details] [review]
Bug 28640: Unit tests for edi_order relation
Comment 3 Martin Renvoize 2021-06-30 13:27:16 UTC
Created attachment 122508 [details] [review]
Bug 28640: Expose EDI Status on basket details page

This patch adds the edi_order relationship method to
Koha::Acquisition::Basket to return the most recently attached
edi_message of type 'ORDER' for the basket.

NOTE: EDI currently returns raw DBIC results. I have opted to maintain
that approach here, but would like to work on upgradeing the
Koha::EDIFACT::Order class to be a subclass of Koha::Object at a later
date.

We then use this new relationship in acqui/basket to display the EDI
status for such baskets.

Test plan
1/ Setup a vendor with EDI Ordering enabled
2/ Add a new basket for the vendor.
3/ Note the new 'EDI status' field displays and reads 'Not ordered'
4/ Close the basker
5/ The 'EDI status' should continue to display 'Not ordered'
6/ Re-open the basket
7/ Close the basket via 'Create EDIFACT order'
8/ Navigate back to the now closed basket
9/ Note the 'EDI status' field now displays 'Pending' and the transfer
date.
10/ Progress the EDI order by running the edi_cron.pl script
11/ The EDI status field should now reflect that the message has been
sent.
Comment 4 Kyle M Hall 2021-06-30 17:07:14 UTC
Instead of just printing the value of edi_order.status in the template, please use and IF/ELSIF/ELSE block for all the possible statuses, so they may be translated.
Comment 5 Martin Renvoize 2021-07-01 06:30:24 UTC
Created attachment 122511 [details] [review]
Bug 28640: Unit tests for edi_order relation
Comment 6 Martin Renvoize 2021-07-01 06:30:28 UTC
Created attachment 122512 [details] [review]
Bug 28640: Expose EDI Status on basket details page

This patch adds the edi_order relationship method to
Koha::Acquisition::Basket to return the most recently attached
edi_message of type 'ORDER' for the basket.

NOTE: EDI currently returns raw DBIC results. I have opted to maintain
that approach here, but would like to work on upgradeing the
Koha::EDIFACT::Order class to be a subclass of Koha::Object at a later
date.

We then use this new relationship in acqui/basket to display the EDI
status for such baskets.

Test plan
1/ Setup a vendor with EDI Ordering enabled
2/ Add a new basket for the vendor.
3/ Note the new 'EDI status' field displays and reads 'Not ordered'
4/ Close the basker
5/ The 'EDI status' should continue to display 'Not ordered'
6/ Re-open the basket
7/ Close the basket via 'Create EDIFACT order'
8/ Navigate back to the now closed basket
9/ Note the 'EDI status' field now displays 'Pending' and the transfer
date.
10/ Progress the EDI order by running the edi_cron.pl script
11/ The EDI status field should now reflect that the message has been
sent.
Comment 7 Martin Renvoize 2021-07-01 06:32:41 UTC
(In reply to Kyle M Hall from comment #4)
> Instead of just printing the value of edi_order.status in the template,
> please use and IF/ELSIF/ELSE block for all the possible statuses, so they
> may be translated.

Thanks for testing.. I've now amended the patch with a SWITCH style block as requested.. I can envisage that moving into an include at a later date should we want to include these status details in other area's.. but I thought I'd leave that to another bug ;)
Comment 8 Martin Renvoize 2021-07-01 10:42:03 UTC
Created attachment 122513 [details] [review]
Bug 28640: Unit tests for edi_order relation

Test plan
1/ Run t/db_dependent/Koha/Acquisition/Basket.t

Signed-off-by: Benjamin Veasey <B.T.Veasey@lboro.ac.uk>
Comment 9 Martin Renvoize 2021-07-01 10:42:07 UTC
Created attachment 122514 [details] [review]
Bug 28640: Expose EDI Status on basket details page

This patch adds the edi_order relationship method to
Koha::Acquisition::Basket to return the most recently attached
edi_message of type 'ORDER' for the basket.

NOTE: EDI currently returns raw DBIC results. I have opted to maintain
that approach here, but would like to work on upgradeing the
Koha::EDIFACT::Order class to be a subclass of Koha::Object at a later
date.

We then use this new relationship in acqui/basket to display the EDI
status for such baskets.

Test plan
1/ Setup a vendor with EDI Ordering enabled
2/ Add a new basket for the vendor.
3/ Note the new 'EDI status' field displays and reads 'Not ordered'
4/ Close the basker
5/ The 'EDI status' should continue to display 'Not ordered'
6/ Re-open the basket
7/ Close the basket via 'Create EDIFACT order'
8/ Navigate back to the now closed basket
9/ Note the 'EDI status' field now displays 'Pending' and the transfer
date.
10/ Progress the EDI order by running the edi_cron.pl script
11/ The EDI status field should now reflect that the message has been
sent.

Signed-off-by: Benjamin Veasey <B.T.Veasey@lboro.ac.uk>
Comment 10 Martin Renvoize 2021-07-01 10:58:28 UTC
Tested by a Loughborough University and signed off.. patches attached.
Comment 11 Kyle M Hall 2021-07-01 13:13:24 UTC
Created attachment 122515 [details] [review]
Bug 28640: Unit tests for edi_order relation

Test plan
1/ Run t/db_dependent/Koha/Acquisition/Basket.t

Signed-off-by: Benjamin Veasey <B.T.Veasey@lboro.ac.uk>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 12 Kyle M Hall 2021-07-01 13:13:35 UTC
Created attachment 122516 [details] [review]
Bug 28640: Expose EDI Status on basket details page

This patch adds the edi_order relationship method to
Koha::Acquisition::Basket to return the most recently attached
edi_message of type 'ORDER' for the basket.

NOTE: EDI currently returns raw DBIC results. I have opted to maintain
that approach here, but would like to work on upgradeing the
Koha::EDIFACT::Order class to be a subclass of Koha::Object at a later
date.

We then use this new relationship in acqui/basket to display the EDI
status for such baskets.

Test plan
1/ Setup a vendor with EDI Ordering enabled
2/ Add a new basket for the vendor.
3/ Note the new 'EDI status' field displays and reads 'Not ordered'
4/ Close the basker
5/ The 'EDI status' should continue to display 'Not ordered'
6/ Re-open the basket
7/ Close the basket via 'Create EDIFACT order'
8/ Navigate back to the now closed basket
9/ Note the 'EDI status' field now displays 'Pending' and the transfer
date.
10/ Progress the EDI order by running the edi_cron.pl script
11/ The EDI status field should now reflect that the message has been
sent.

Signed-off-by: Benjamin Veasey <B.T.Veasey@lboro.ac.uk>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 13 Kyle M Hall 2021-07-01 13:25:43 UTC
Created attachment 122517 [details] [review]
Bug 28640: (QA follow-up) Prevent unit tests from failing

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Comment 14 Jonathan Druart 2021-07-26 10:48:17 UTC
Pushed to master for 21.11, thanks to everybody involved!
Comment 15 Kyle M Hall 2021-07-30 14:59:12 UTC
Enhancement not backported for 21.05