Magento_NegotiableQuoteTemplate
Magento Modules:
- Magento_NegotiableQuoteTemplate
- Magento_NegotiableQuoteTemplateGraphQl
- Magento_NegotiableQuoteTemplateSharedCatalog
- Magento_CompanyNegotiableQuoteTemplate
Only
Magento_NegotiableQuoteTemplate
contains frontend affecting templates/layout.
Adobe Commerce Packages
- magento/module-negotiable-quote-template
- magento/module-negotiable-quote-template-graph-ql
- magento/module-negotiable-quote-template-shared-catalog
- magento/module-company-negotiable-quote-template
Repository
Note: this repo is only accessible with a Hyvä Enterprise license or as a contributor.
For more details, see: https://www.hyva.io/hyva-enterprise.html.
https://gitlab.hyva.io/hyva-enterprise/b2b/magento2-ee-magento-negotiable-quote-template
Features
All points are rated according to priority as P1 (critical), P2 (important), P3 (minor).
-
basic - does not break layout/design
Note: All below features assume output only if company accounts and negotiable quotes are enabled in Stores > Configuration:
btob/website_configuration/company_active
/btob/website_configuration/negotiablequote_active
along with quotes being enabled for the company.
Account Area (all pages)
-
[P1] Add 'My Quote Templates' to account area navigation menu -
[P1] Visible with relevant permissions only (view/manage quote templates)
-
/negotiable_quote/quote/index/
)
Quote Index Page (-
[P1] Add 'My Quote Templates' link by page title -
[P1] Visible with relevant permissions only (view/manage quote templates)
-
Quote Template Column
Dev note: the below will need to be applied in the
Hyva_MagentoNegotiableQuote
module (at least the template file changes) and will require consideration around backwards compatibility and dependencies (i.e. the baseHyva_MagentoNegotiableQuote
module should not depend onHyva_MagentoNegotiableQuoteTemplate
).
-
[P1] Add 'Quote Template' column that outputs a link to linked quote template (if one exists) with the name as the label
/negotiable_quote/quote/view/quote_id/{id}/
)
Quote Detail Page (-
[P1] Add 'Create quote template' button to button links area which triggers modal -
[P2] Visible with relevant permissions only (view/manage quote templates) -
[P2] Visible only if quote is not already linked to template -
[P2] Update Top info header to match Quote template, with items in a column rather than a row
-
'Create quote template' Modal
-
[P1] Output 'Create quote template' modal heading -
[P1] Output modal description text (including inline link) -
[P1] Output 'Create Template' button which posts to /quote_templates/template/create/quote_id/{id}/
- and then redirects to
/quote_templates/template/view/template_id/{id}/
on success with the following global message 'The quote template was successfully created and may be sent to the seller for review.'
- and then redirects to
-
[P1] Output 'Cancel' link which closes modal -
[P1] Output 'X' (Close) icon which closes modal
Linked (Template) Quote Output
Dev note: this is a modified version of the quote detail (view) page that applies when a quote is linked to a template. When this occurs a replacement layout handle is used for the page:
negotiable_quote_linked_quote_view
instead ofnegotiable_quote_quote_view
.
-
[P1] Output linked quote messages based on quote/template quote status -
[P1] Output linked quote badge (link icon and text) -
[P1] Output linked template quote (name/link) alongside other quote details (created/expires/sales rep etc.) -
[P1] Update links (buttons) to only display delete (if permissions allow) and print -
[P1] Output min/max line item totals and implement validation based on these values if set against quote template -
[P1] Update action buttons to include only checkout (if allowed) and cancel -
[P2] Update Top info header to match Quote template, with items in a column rather than a row
/quote_templates/template/notemplates/
)
Quote Template No Templates Page (-
[P1] Output 'My Quote Templates' page title -
[P1] Output 'My Quotes' link that directs to /negotiable_quote/quote/
-
[P1] Output informational panel with heading and description text -
[P1] Output 'You don't have any quote templates - yet.' text
/quote_templates/template/index/
)
Quote Template Index Page (-
[P1] Output 'My Quote Templates' page title -
[P1] Output 'My Quotes' link that directs to /negotiable_quote/quote/
Dev note: the below tables will need recreating server side given the Luma implementation uses UI components. Please use the
\Hyva\Enterprise\ViewModel\AbstractList
abstract view model as a base along with standardised table markup used across other grids (see Magento_NegotiableQuote::quote/index.phtml as an example).
Active Quote Templates
-
[P1] Output 'Active Quote Templates' heading -
[P1] Output table of in review quotes with the following columns (and related data) - ID, Name, Valid Until, Min. Quote Total (Negotiated), Orders Placed, Last Ordered, Actions
-
[P1] Implement 'View' link and 'Generate a quote' button actions -
'View' directs to the quote template page: /quote_templates/template/view/quote_id/{id}/
- 'Generate a quote' posts to
https://app.enterprise-b2b-150.test
/quote_templates/template/generatequote/template_id/{id}/and redirects to the newly created quote:
/negotiable_quote/quote/view/quote_id/{id}/`
- 'Generate a quote' posts to
-
[P2] 'Generate a quote' is only output if the user has the relevant permissions (generate quotes and view/edit subordinate quotes) -
[P2] 'Generate a quote' button is disabled if the number of quotes generated equals the maximum number of orders allowed for this template
-
-
[P2] Ensure limiter works -
[P2] Ensure pagination works -
[P1] If no records in table, output 'We couldn't find any records.'
In Review Templates
-
[P1] Output 'In Review' heading -
[P1] Output 'Quick Filters' that allows showing only quote templates that are awaiting user action Dev note: we'll need to consider how this functions - previous grid filters (such as for purchase orders) have been achieved by query params and page reloads
-
[P1] Output table of in review quotes with the following columns (and related data) - ID, Name, Status, Min. Quote Total (Negotiated), Date Last Shared, Actions
-
[P1] Implement 'View' link action - 'View' directs to the quote template page:
/quote_templates/template/view/quote_id/{id}/
- 'View' directs to the quote template page:
-
[P2] Ensure limiter works -
[P2] Ensure pagination works -
[P1] If no records in table, output 'We couldn't find any records.'
Inactive Templates
-
[P1] Output 'Inactive' heading -
[P1] Output table of in review quotes with the following columns (and related data) - ID, Name, Status, Quote Total, Inactive date, Actions
-
[P1] Implement 'View' link action - 'View' directs to the quote template page:
/quote_templates/template/view/quote_id/{id}/
- 'View' directs to the quote template page:
-
[P2] Ensure limiter works -
[P2] Ensure pagination works -
[P1] If no records in table, output 'We couldn't find any records.'
/quote_templates/template/view/quote_id/{id}/
)
Quote Template Detail Page (-
[P1] Does not break design layout -
[P1] Add template message at top of the page based on quote template status -
[P2] Add Quote template green badge and outbound experience league link -
[P1] Have quote template name showing status next to it -
[P1] Have template ID added to top details -
[P1] Add calendar to change expiration date -
[P1] Expiry date updates template through fetch request -
[P2] Add custom validation for calendar (min date, required) -
[P2] Add tooltip -
[P2] Implement correct authorisation for updating expiry date
-
-
[P1] Add support for Order Threshold (min/max) -
[P1] Order threshold fields updated template through fetch request on change -
[P2] Add custom validation for min/max and logic for show/hide block -
[P2] Add tooltip -
[P2] Implement correct authorisation for updating expiry threshold fields
-
-
[P1] Have "minimum/maximum quantities enabled" id enabled from admin quote template option -
[P1] Have minimum/maximum table data under Qty Threshold table head if enabled from admin option -
[P1] min/max quantity inputs are shown if enabled and reflect correct quantity set -
[P2] Add permission for edit on fields -
[P2] Add tooltip on header hover
-
-
[P2] Update table head for Subtotal to "Min. Subtotal" and how price is calculated -
[P2] Add tooltip for header hover
-
-
[P1] Check correct options are applied based on status: Open, Edited, Draft, Active -
[P1] Send to seller
Button is disabled unless a change is detected in: "Valid until" field, "order quantity threshold (min/max)", "Add your comment" field -
[P1] Accept Quote
Button is Enabled unless a change is detected in: "Valid until" field, "order quantity threshold (min/max)", "Add your comment" field -
[P1] Cancel and Delete Buttons are displayed based on their permissions -
[P1] Update Qty
Button is disabled unless a change is detected in one of the quantity fields in the Item row -
[P1] All fields are disabled once a Template has been accepted and locked, allowing no more modification to the quote template -
[P1] Cancel Button opens a popup with a comment box and two button options to accept/refuse -
[P1] Generate quote buttons opens a new page with the newly generated quote
/company/role/edit/
/ /company/role/edit/id/{id}/
)
Roles & Permissions Add/Edit (-
[P1] Output 'Quote Templates' and child permissions in role permission node tree and ensure values are selectable/saveable - Full list of permissions in the image below
Contributors
Voting
Use