diff --git a/vendor/magento/module-negotiable-quote/Controller/Quote/Order.php b/vendor/magento/module-negotiable-quote/Controller/Quote/Order.php
index 50d1f27e44..45b7dd8eb5 100644
--- a/vendor/magento/module-negotiable-quote/Controller/Quote/Order.php
+++ b/vendor/magento/module-negotiable-quote/Controller/Quote/Order.php
@@ -29,7 +29,7 @@ class Order extends Quote implements HttpGetActionInterface
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
- $resultRedirect->setPath('checkout/onepage/success');
+ $resultRedirect->setPath('checkout/onepage/success', ['negotiableQuoteId' => $quoteId]);
try {
$quote = $this->quoteRepository->get($quoteId);
diff --git a/vendor/magento/module-negotiable-quote/Model/Plugin/Checkout/Model/SessionPlugin.php b/vendor/magento/module-negotiable-quote/Model/Plugin/Checkout/Model/SessionPlugin.php
index 860b9f60b6..a090b6f63a 100644
--- a/vendor/magento/module-negotiable-quote/Model/Plugin/Checkout/Model/SessionPlugin.php
+++ b/vendor/magento/module-negotiable-quote/Model/Plugin/Checkout/Model/SessionPlugin.php
@@ -82,4 +82,20 @@ class SessionPlugin
return $result;
}
+
+ /**
+ * In case of negotiable quote is active do not clear regular checkout session to keep shopping cart items
+ *
+ * @param Session $subject
+ * @param callable $proceed
+ * @return Session
+ */
+ public function aroundClearQuote(Session $subject, callable $proceed)
+ {
+ $result = null;
+ if (!$this->request->getParam('negotiableQuoteId')) {
+ $result = $proceed();
+ }
+ return $result ?: $subject;
+ }
}
diff --git a/app/code/Magento/PaypalNegotiableQuote/LICENSE_EE.txt b/app/code/Magento/PaypalNegotiableQuote/LICENSE_EE.txt
new file mode 100644
index 0000000000..2bddf5feda
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/LICENSE_EE.txt
@@ -0,0 +1,437 @@
+MAGENTO(tm) ENTERPRISE EDITION
+END USER LICENSE AGREEMENT
+
+This End User License Agreement ("Agreement") is entered into by and between X.commerce, Inc.
+through its Magento division ("Magento"), and the Licensee executing the Magento Order Form
+(defined below). The parties agree as follows:
+
+TERMS AND CONDITIONS
+
+1. License
+ 1.1. Subject to Licensee's payment of the applicable fees and to Licensee's compliance with
+ other terms and conditions of this Agreement, Magento grants Licensee a non-transferable,
+ non-assignable, non-sublicensable, worldwide license to copy the Software for the purpose of
+ installing and using it on a computer and solely for internal purposes, in accordance with the
+ Software's technical documentation and solely during the periods and on the maximum number
+ of Designated Servers specified in one or more applicable Magento or Magento-authorized
+ reseller ordering schedules (the "Magento Order Form") executed with Licensee.
+
+ 1.2. In the event that Licensee's actual number of Servers of a particular Software license
+ exceeds the licensed number of Designated Servers on such license, Licensee shall promptly
+ provide Magento with written notice and pay Magento the fees required to license such
+ additional Server(s) in accordance with the commercial terms set out in the Magento Order
+ Form.
+
+ 1.3. Licensee shall implement reasonable controls to ensure that it does not exceed the
+ maximum number of licensed Servers of the Software. Magento reserves the right to audit
+ Licensee's use of the Software during normal business hours and with reasonable notice and to
+ include means within the Software to limit Licensee's use of the Software to the licensed
+ number of Servers.
+
+ 1.4. Magento shall provide to Licensee an initial copy of the Software, including the associated
+ technical documentation, for use by Licensee in accordance with this Agreement. Subject to
+ Sections 1.1-1.3 above, Licensee is authorized to make a reasonable number of non-Server
+ copies of the Software, e.g., onto a local pc, as it requires for purpose of exercising its rights
+ under this Agreement.
+
+ 1.5. Licensee is authorized to use the Software on a single substitute or backup Server on a
+ temporary basis without charge any time a Designated Server is inoperative due to a
+ malfunction beyond the control of Licensee. Licensee may transfer the Software on a
+ permanent basis to a single replacement Server without charge. Licensee agrees to provide
+ Magento with written notice, including the Server type and operating system, of any such
+ transfer to a backup or replacement Server within five (5) days thereafter.
+
+ 1.6. Licensee acknowledges that portions of the Software are also freely available to the public
+ under Magento's open source version of the Software, known as Magento Community Edition,
+ subject to certain conditions, with limited warranties and other limited assurances, and without
+ service or support. As an express condition for the license granted hereunder, Licensee agrees
+ that any use during the term of this Agreement of such open source versions of the Software,
+ whether in a Production Server Instance or a Non-Production Server Instance, shall be deemed
+ use of the Software for purposes of the calculation of fees payable under the Agreement.
+
+ 1.7. Magento also grants Licensee the right to modify and create derivative works of the
+ Software. Licensee may contribute the rights in any of those derivative works back to Magento.
+ Licensee may contact Magento for more information regarding contributions of derivative
+ works rights to Magento. Regardless of whether Licensee contributes such derivative works
+ rights to Magento, Licensee hereby grants Magento a perpetual and irrevocable (irrespective of
+ the expiration or termination of this Agreement), nonexclusive, transferable, worldwide, and
+ royalty-free license to reproduce, create derivative works of, distribute, perform, and display
+ any derivative works of the Software developed by or for Licensee, and to use, make, have
+ made, sell, offer to sell, import, export, and otherwise exploit any product based on any such
+ derivative works.
+
+2. License Exclusions
+ 2.1 Except as expressly authorized herein, Licensee shall not:
+ a. use or deploy the Software on any Server in excess of the number of Designated Servers
+ specified in the applicable Magento Order Form;
+
+ b. distribute, sublicense, disclose, market, rent, lease, or offer remote computing services,
+ networking, batch processing or transfer of, the Software to any third party, or permit any
+ person or entity to have access to the Software by means of a time sharing, remote
+ computing services, networking, batch processing, service bureau or time sharing
+ arrangement;
+
+ c. export the Software in violation of U.S. Department of Commerce export administration
+ regulations.
+
+ 2.2. No license, right or interest in any Magento trademark, trade name or service mark is
+ granted hereunder.
+
+3. Fees and Payment Terms
+ Licensee agrees to the fees and payment terms that are described in each Magento Order Form
+ executed by Licensee.
+
+4. Title and Protection
+ 4.1. Magento (or its third party providers) retains title to all portions of the Software and other
+ Proprietary Materials and any copies thereof. The Proprietary Materials contain valuable
+ proprietary information, and Licensee shall not disclose them to anyone other than those of its
+ employees or consultants under written nondisclosure obligations at least as restrictive as
+ those contained in this Agreement, having a need to know for purposes consistent with this
+ Agreement. Licensee shall be responsible for the compliance of such employees or consultants.
+ Licensee shall affix, to each full or partial copy of the Software made by Licensee, all copyright
+ and proprietary information notices as were affixed to the original. The obligations set forth in
+ this Section shall survive termination of this Agreement.
+
+ 4.2. Licensee acknowledges that the Software includes certain open source software which is
+ governed by the applicable license terms thereof. A list of such open source software, as
+ amended from time to time, including the links applicable to such open source software is
+ specified in the product software bundled within the Software, and the Software is subject to
+ the provisions of such license agreements, and in the event of any contradiction between the
+ provisions of this Agreement and the provisions of such applicable license agreement, the
+ provisions of the applicable open source license agreement shall prevail solely with respect to
+ such open source software products.
+
+ 4.3. If the Software is acquired by or on behalf of a unit or agency of the U.S. Government (the
+ "Government"), the Government agrees that such Product is "commercial computer software"
+ or "commercial computer software documentation" and that, absent a written agreement to
+ the contrary, the Government's rights with respect thereto are limited by the terms of this
+ Agreement, pursuant to applicable FAR and/or DFARS and successor regulations.
+
+5. Patent and Copyright Indemnity
+ Subject to the limitations in Section 8, for such time as Licensee is entitled to receive Support
+ Services (as defined below), Magento shall indemnify and defend Licensee against any claims made
+ by a third party that Licensee's reproduction of the Software (which, for the purposes of this Section
+ 5, means the Software as delivered by Magento, excluding the open source software programs
+ described in Section 4.2) as permitted in this Agreement directly infringes such third party's United
+ States patent or copyright, provided that Licensee complies with the requirements of this Section.
+ Licensee will (a) provide Magento prompt written notice of any claim that the Software infringes any
+ intellectual property rights, (b) provide Magento with all information and assistance requested of it
+ with respect to any such claim, and (c) offer Magento sole and complete authority to defend and/or
+ settle any and all such claims.
+
+ In the event that a court holds that the Software, or if Magento believes a court may hold that the
+ Software, infringes the intellectual property rights of any third party, Magento may (but is not
+ obligated to), in its sole discretion, do any of the following: obtain for Licensee the right to continue
+ using the Software, replace or modify the Software so that it becomes non-infringing while providing
+ substantially equivalent performance or, accept return of the Software, terminate this Agreement,
+ and refund Licensee an amount equal to the license fees paid to Magento multiplied by the
+ percentage of the term of the license for the Software that Licensee did not enjoy due to the early
+ termination by Magento.
+
+ Magento shall have no liability or obligation under this Agreement to the extent the alleged
+ infringement is based on (i) a modification or derivative work of the Software developed by anyone
+ other than Magento; (ii), a combination of the Software with any product or service not provided by
+ Magento; (ii) use of the Software with one or more Servers not listed in a Magento Order Form; (iii)
+ use of the Software other than in accordance with this Agreement or the documentation; (iv)
+ indirect or willful infringement; or (v) any open source code, as described in Section 4.2.
+
+ This Section 5 states Magento's entire liability and Licensee's exclusive remedy for any infringement
+ related to the Software.
+
+6. Default and Termination
+ 6.1. An event of default shall be deemed to occur if: (i) Licensee fails to perform any of its
+ obligations under the Sections entitled "License Exclusions" or "Title and Protection"; (ii)
+ Licensee fails to pay amounts due pursuant to its agreement to the fees and payment terms in
+ Section 3 of this Agreement within seven (7) days of the relevant due date; or (iii) either party
+ fails to perform any other material obligation under this Agreement and such failure remains
+ uncured for more than thirty (30) days after receipt of written notice thereof.
+
+ 6.2. If an event of default occurs, the non-defaulting party, in addition to any other rights
+ available to it under the law, may terminate this Agreement and all licenses granted hereunder
+ by written notice to the defaulting party.
+
+ 6.3. Within thirty (30) days after termination of the Software license or this Agreement or
+ expiration of the license term as specified in the Magento Order Form, Licensee shall certify in
+ writing to Magento that Licensee has ceased use of any and all Proprietary Materials and that
+ all copies or embodiments thereof in any form, including partial copies within modified
+ versions, have been destroyed.
+
+7. Warranty
+ 7.1. Warranty for Software. Magento warrants for a single period of ninety (90) days
+ commencing upon Magento's electronic delivery of the Software to Licensee that the Software,
+ as delivered, will in all material respects perform the functions described in the specifications
+ contained in the documentation provided with the Software. In the event that the Software
+ does not, in all material respects, perform the functions therein described, Magento or its
+ authorized reseller will undertake to correct any reported error in accordance with the Support
+ Services Terms and Conditions set forth below in Section 9, which shall be Magento's entire
+ liability and Licensee's exclusive remedy for breach of this warranty. Magento does not warrant
+ that the Software will meet Licensee's requirements, that the Software will operate in the
+ combinations which Licensee may select for use, that the operation of the Software will be
+ uninterrupted or error-free, or that all error conditions will be corrected. EXCEPT AS PROVIDED
+ IN THIS SECTION ALL SOFTWARE PROVIDED HEREUNDER IS PROVIDED "AS IS".
+
+ 7.2. DISCLAIMER. THE EXPRESS WARRANTIES SET FORTH IN THIS SECTION 7 ARE THE ONLY
+ WARRANTIES MADE BY MAGENTO WITH RESPECT TO THE SOFTWARE PROVIDED BY MAGENTO.
+ MAGENTO MAKES NO OTHER WARRANTIES, EXPRESS, IMPLIED OR ARISING BY CUSTOM OR
+ TRADE USAGE, AND, SPECIFICALLY, MAKES NO WARRANTY OF TITLE, NON-INFRINGEMENT,
+ ACCURACY, QUIET ENJOYMENT, MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
+ PURPOSE. MAGENTO'S EXPRESS WARRANTIES SHALL NOT BE ENLARGED, DIMINISHED OR
+ AFFECTED BY, AND NO OBLIGATION OR LIABILITY SHALL ARISE OUT OF, MAGENTO RENDERING
+ TECHNICAL OR OTHER ADVICE OR SERVICE IN CONNECTION WITH THE SOFTWARE.
+
+8. Limitation of Liability
+ 8.1. LIABILITY EXCLUSIONS. UNDER NO CIRCUMSTANCES WILL MAGENTO BE LIABLE FOR: LOSS
+ OF REVENUE; LOSS OF ACTUAL OR ANTICIPATED PROFITS; LOSS OF CONTRACTS; LOSS OF THE
+ USE OF MONEY; LOSS OF ANTICIPATED SAVINGS; LOSS OF BUSINESS; LOSS OF OPPORTUNITY;
+ LOSS OF GOODWILL; LOSS OF REPUTATION; LOSS OF, DAMAGE TO OR CORRUPTION OF DATA;
+ OR CONSEQUENTIAL OR INDIRECT LOSS OR SPECIAL, PUNITIVE, OR INCIDENTAL DAMAGES
+ (INCLUDING, FOR THE AVOIDANCE OF DOUBT, WHERE SUCH LOSS OR DAMAGE IS ALSO OF A
+ CATEGORY OF LOSS OR DAMAGE ALREADY LISTED), WHETHER FORESEEABLE OR
+ UNFORESEEABLE, BASED ON CLAIMS OF LICENSEE, MAGENTO OR ANY THIRD PARTY ARISING
+ OUT OF ANY BREACH OR FAILURE OF EXPRESS OR IMPLIED WARRANTY CONDITIONS OR OTHER
+ TERM, BREACH OF CONTRACT, MISREPRESENTATION, NEGLIGENCE, OTHER LIABILITY IN TORT,
+ FAILURE OF ANY REMEDY TO ACHIEVE ITS ESSENTIAL PURPOSE, OR OTHERWISE.
+
+ 8.2. LIABILITY CAP. NOTWITHSTANDING THE FORM (E.G., CONTRACT, TORT, OR OTHERWISE) IN
+ WHICH ANY LEGAL OR EQUITABLE ACTION MAY BE BROUGHT, IN NO EVENT (INCLUDING WITH
+ RESPECT TO OBLIGATIONS ARISING UNDER SECTION 5) WILL MAGENTO OR ITS SUPPLIERS BE
+ LIABLE FOR DAMAGES, EXPENSES, COSTS, LIABILITIES, SUITS, CLAIMS, RESTITUTION OR LOSSES,
+ THAT EXCEED, IN THE AGGREGATE, THE AMOUNT OF FEES PAID BY LICENSEE FOR THE
+ SOFTWARE LICENSE IN THE FIRST TWELVE (12) MONTH PERIOD AFTER THE EFFECTIVE DATE.
+
+9. Support Services Terms and Conditions
+ For the periods specified in the Magento Order Form, Magento or its authorized reseller will provide
+ support services and Updates for the Software as described in Magento's standard Support Services
+ Terms and Conditions, which follow. Magento will have no obligation to provide support for any
+ modifications or derivative works of the Software developed by anyone other than Magento.
+
+10. Customer References
+ Licensee hereby grants Magento the right to display Licensee's logos as part of Magento's customer
+ lists and other related marketing materials. The parties shall cooperate to undertake mutually-
+ agreed joint marketing activities.
+
+11. Notices
+ All notices shall be in writing and sent by first class mail or overnight mail (or courier), transmitted by
+ facsimile (if confirmed by such mailing), or email, to the addresses indicated on the Magento Order
+ Form, or such other address as either party may indicate by at least ten (10) days prior written
+ notice to the other party. Notices to Magento shall be sent to the Contracts Administration
+ Department.
+
+12. Assignment
+ Licensee may not assign this Agreement without the prior written consent of Magento; provided
+ that such consent shall not be required for assignment to a purchaser of all or substantially all of the
+ assets or equity securities of Licensee who undertakes in writing to be bound by all the terms and
+ conditions of this Agreement. Any prohibited assignment shall be null and void.
+
+13. Entire Agreement
+ Along with Magento's standard Support Services Terms and Conditions, which follow, and the
+ Magento Order Form, this Agreement is the complete and exclusive agreement between the parties,
+ which supersedes all proposals or prior agreements, oral or written, including any online (click-
+ through) agreement which Licensee may have accepted in conjunction with the downloading of the
+ Software, and all other communications between the parties relating to the subject matter hereof.
+ No purchase order, other ordering document or any hand written or typewritten text which purports
+ to modify or supplement the printed text hereof or Magento Order Form shall add to or vary the
+ terms thereof and Magento hereby rejects same. Except as contained in a writing signed by both
+ parties, all such proposed variations or additions are objected to and shall have no force or effect.
+
+14. General
+ This Agreement is made in and shall be governed by the laws of the State of California, without
+ giving effect to any principles that provide for the application of the law of another jurisdiction. All
+ proceedings shall be conducted in English. Venue for all proceedings shall be Santa Clara County,
+ California, provided that Magento may seek injunctive relief in any court of competent jurisdiction.
+ The United Nations Convention for the International Sale of Goods shall not apply. The section
+ headings herein are provided for convenience only and have no substantive effect on the
+ construction of this Agreement. Except for Licensee's obligation to pay Magento, neither party shall
+ be liable for any failure to perform due to causes beyond its reasonable control. If any provision of
+ this Agreement is held to be unenforceable, this Agreement shall be construed without such
+ provision. The failure by a party to exercise any right hereunder shall not operate as a waiver of such
+ party's right to exercise such right or any other right in the future. This Agreement may be amended
+ only by a written document executed by a duly authorized representative of each of the parties. The
+ parties agree to receive electronic documents and accept electronic signatures (information
+ attached or logically associated with such document and clicked or otherwise adopted with an intent
+ to sign) including in counterparts which shall be valid substitutes for paper-based documents and
+ signatures, and the legal validity of a transaction will not be denied on the ground that it is not in
+ writing.
+
+15. Definitions
+ "Designated Server" shall mean the Server specified in a Magento Order Form with respect to a
+ particular Software license. Such Server may be that of a third-party under nondisclosure obligations
+ that will host the Software for the benefit of Licensee.
+
+ "Modifications" means any code developed by Licensee or any third party, including without
+ limitation, configuration, integrations, implementations, or localizations to the external layer of the
+ core, baseline Software product. The term "Modifications" excludes Updates.
+
+ "Proprietary Material" means the Software, related documentation, and all parts, copies and
+ modifications thereof, and any other information, in whatever form, received by Licensee
+ hereunder, provided, however, such information shall not be deemed Proprietary Material if it (a) is
+ or becomes a part of the public domain through no act or omission of Licensee; or (b) was in
+ Licensee's lawful possession prior to the disclosure and had not been obtained by Licensee from
+ Magento; or (c) is lawfully disclosed to Licensee by a third party without restriction on disclosure; or
+ (d) is independently developed by Licensee without reference to or use of Magento's Proprietary
+ Material.
+
+ "Server" means each physical or virtual server from which a single instance of the Software is
+ accessed and used either for production purposes ("Production Server Instance") or for non-
+ production purposes, such as development, testing, training and other non-operational business
+ transactions ("Non-Production Server Instance"). For example, if one server contains two (2)
+ instances of the Software, i.e., one Production Server Instance and one Non-Production Server
+ Instance, then a Server license is required for each of such instances; development in-house and by
+ third-party consultants requires licenses for two Non-Production Server Instances.
+
+ "Software" means Magento's proprietary e-commerce software solution known as the Magento(tm)
+ Enterprise Edition, provided solely in source code, including associated technical documentation,
+ and all Updates thereof furnished to Licensee as part of Support Services. Except as otherwise
+ specified herein, the term Software includes certain open source software programs described in
+ Section 4.2. "Software" does not include any Modifications.
+
+ "Updates" means all published revisions and corrections to the printed documentation and
+ corrections and new releases of the Software which are generally made available to Magento's
+ supported customers at no additional cost or for media and handling charges only. Updates shall not
+ include any options or future products which Magento sells separately.
+
+
+SUPPORT SERVICES TERMS AND CONDITIONS
+
+Unless otherwise defined herein, all capitalized terms will have the meanings set forth in the
+Agreement.
+
+1. "Support Services" consists of:
+ a. Advice regarding the downloading, installation and configuration of the Software (including
+ Updates provided by Magento, but excluding for the avoidance of doubt any Modifications to
+ the Software), when used by Licensee on systems that meet the Software's "System
+ Requirements" specified on Magento's website at www.magentocommerce.com/system-
+ requirements.
+
+ b. Facilities for bug tracking, escalation of problems for priority attention, and access to
+ community-supported FAQs and Forums relating to the Software.
+
+ c. Assistance with troubleshooting to diagnose and fix errors in the Software.
+
+ d. Access to Magento documentation relating to the Software, including authorization to make
+ copies of that documentation for internal use as specified in the Agreement.
+
+2. Exclusions from Support Services.
+ Magento shall have no obligation to support (i) versions of the
+ Software other than the then-current and immediately previous releases, which are operated on a
+ supported hardware/operating system platform specified in the release notes for the Software; (ii)
+ altered or modified Software; (iii) Software accessed on unlicensed Servers; (iv) problems caused by
+ Licensee's negligence, misuse, or hardware malfunction; or (v) use of the Software inconsistent with
+ Magento's instructions. Magento is not responsible for hardware changes necessitated by changes
+ to the Software. Support Services does not include:
+ a. Assistance in the development or debugging of Licensee's system, including the operating
+ system and support tools.
+
+ b. Information and assistance on technical issues related to the installation, administration, and
+ use of enabling technologies such as databases, computer networks, and communications.
+
+ c. Assistance with the installation and configuration of hardware including, but not limited to
+ computers, hard disks, networks, and printers.
+
+3. Subcontractors.
+ Magento or its authorized resellers reserve the right to subcontract any or all of
+ the work to be performed under these Support Terms, and Magento retains responsibility for any
+ work so subcontracted.
+
+4. Licensee Responsibilities.
+ Licensee shall provide commercially reasonable cooperation and full
+ information to Magento or its authorized resellers with respect to the furnishing of Support Services
+ under this Agreement.
+
+5. Support Contacts.
+ Licensee shall designate one or more support contacts that are authorized to
+ submit Software problems. If Licensee has purchased the license from a Magento-authorized
+ reseller, Licensee shall contact that party for assistance. If Licensee has purchased the license
+ directly from Magento, Licensee may contact Magento on the www.magentocommere.com website
+ or at its toll-free Support telephone number.
+
+6. Problem Priority.
+ Upon receipt of a properly submitted Software problem, as specified on
+ Magento's website at www.magentocommerce.com, Magento or its authorized reseller shall
+ prioritize it in accordance with the guidelines below:
+
+ a. Priority 1 (P1) - A P1 is a catastrophic production problem within the Software that severely
+ impacts the Licensee's Production Server Instance, or because of which Licensee's Production
+ Server Instance is down or not functioning, or that results in a loss of production data and no
+ work around exists. P1 problems must be reported on Magento's toll-free support telephone
+ number in order to expedite resolution. Magento will use continuous efforts during its normal
+ hours of operation, with appropriate escalation to senior management, to provide a resolution
+ for any P1 problem as soon as is commercially reasonable.
+
+ b. Priority 2 (P2) - A P2 is a problem within the Software where the Licensee's system is
+ functioning but in a reduced capacity, or the Problem is causing significant impact to portions of
+ the Licensee's business operations and productivity, or the Software is exposed to potential loss
+ or interruption of service. Problems existing in a non-production environment that would
+ otherwise qualify as a P1 if they were in a production system qualify as P2. Magento will use
+ reasonable efforts during its normal hours of operation to provide a resolution for any P2
+ problem as soon as is commercially reasonable.
+
+ c. Priority 3 (P3) - A P3 is a medium-to-low impact problem that involves partial and/or non-
+ critical loss of functionality, or that impairs some operations but allows Licensee's operations to
+ continue to function. Problems for which there is limited or no loss or functionality or impact to
+ Licensee's operation and for which there is an easy work-around qualify as P3. Magento will use
+ reasonable efforts during its normal hours of operation to provide a resolution for any P3
+ problem in time for the next minor release of the Software.
+
+ d. Priority 4 (P4) - A P4 is for a general usage question or issue that may be cosmetic in nature
+ or documentation related, but the Software works without normal hours of operation to
+ provide a resolution for any P4 problem in time for the next major release of the Software.
+
+ e. Enhancement Request (ER) - An ER is a recommendation for future product enhancement or
+ modification to add official support and documentation for unsupported or undocumented
+ feature, or features that do not exist in the Software. Magento will take ERs into consideration
+ in the product management process, but has no obligation to deliver enhancements based on
+ any ER.
+
+7. Response Times.
+ Magento or its authorized reseller shall exercise commercially reasonable efforts
+ to meet the response times specified below for Gold Support (unless Licensee has upgraded to
+ Platinum Support, as provided in the Magento Order Form), following receipt of a Software problem
+ properly submitted by Licensee:
+
+ Magento GOLD Support Response Times
+ WEB Ticket Submission 24 x 7 x 365
+ WEB Ticket Response Time* 24 business hours
+ North American Telephone Support Hours M-F 08:00 - 17:00 (PT)
+ European Telephone Support Hours M-F 08:30 - 17:30 (CET)
+ Telephone Response Time P1 Issues* 4 business hours
+ Response Time P2-P4 Issues* 24 business hours
+ *From initial contact
+
+
+ Magento PLATINUM Support Response Times
+ WEB Ticket Submission 24 x 7 x 365
+ WEB Ticket Response Time* 24 business hours
+ Telephone Support Hours 24 hours
+ Telephone Response Time P1 Issues* Up to 2 hours
+ Response Time P2-P4 Issues* 4 business hours
+ *From initial contact
+
+
+8. Prohibited Use.
+ As a condition of Licensee's use of the Forums, Licensee will not use (and will
+ prohibit its customers from using) the Forums (i) to violate any applicable law, statute, ordinance or
+ regulation; (ii) to disseminate content that is harmful, threatening, abusive, harassing, tortuous,
+ defamatory, vulgar, obscene, libelous, or otherwise objectionable; (iii) to disseminate any software
+ viruses or any other computer code, files or programs that may interrupt, destroy or limit the
+ functionality of any computer software or hardware or telecommunications equipment; (iv) to
+ infringe the intellectual property rights or proprietary rights, or rights of publicity or privacy, of any
+ third party; or (v) use the Forums for any purpose other than their intended use.
+
+9. Term and Termination.
+ Magento will provide Support Services and any Updates to Licensee
+ during the periods identified in the Magento Order Form, subject to Licensee's payment of the
+ applicable fees. In the event Licensee fails to pay such fees to Magento or in the event Licensee
+ materially breaches the Support Services provisions and does not cure such breach within thirty (30)
+ days of its receipt of Magento's notice of same, Magento may suspend or cancel Support Services.
+
+10. General.
+ Magento shall not be liable for any failure or delay in performance under these Support
+ Terms due to causes beyond its reasonable control. Any illegal or unenforceable provision shall be
+ severed from these Support Terms. Licensee agrees that any information received pursuant to these
+ Support Terms shall be deemed to be subject to the non-disclosure obligations set forth in the
+ License Agreement. Licensee's obligation of payment of moneys due under these Support Terms
+ shall survive termination of these Support Terms or the License Agreement. These Support Terms
+ state the entire agreement regarding provision of Support Services to Licensee and may be amended
+ only by a written amendment set forth on a separate document executed by authorized
+ representatives of both parties.
diff --git a/app/code/Magento/PaypalNegotiableQuote/Plugin/Payment/Block/Transparent/RedirectPlugin.php b/app/code/Magento/PaypalNegotiableQuote/Plugin/Payment/Block/Transparent/RedirectPlugin.php
new file mode 100644
index 0000000000..a7871f68ca
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/Plugin/Payment/Block/Transparent/RedirectPlugin.php
@@ -0,0 +1,54 @@
+request = $request;
+ }
+
+ /**
+ * Add negotiable quote id param to url
+ *
+ * @param Redirect $subject
+ * @param string $result
+ */
+ public function beforeGetRedirectUrl(Redirect $subject)
+ {
+ $negotiableQuoteId = $this->request->getParam($this->negotiableQuoteIdParam);
+ $routePathRedirect = $subject->getData($this->routePathParam);
+ if ($negotiableQuoteId && $routePathRedirect) {
+ $routePathRedirect = rtrim($routePathRedirect, '/');
+ $routePathRedirect .= '/' . $this->negotiableQuoteIdParam . '/' . $negotiableQuoteId;
+ $subject->setData($this->routePathParam, $routePathRedirect);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Controller/Express/AbstractExpress.php b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Controller/Express/AbstractExpress.php
new file mode 100644
index 0000000000..69e51eeb71
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Controller/Express/AbstractExpress.php
@@ -0,0 +1,86 @@
+request = $request;
+ $this->checkoutSession = $checkoutSession;
+ $this->restrictionInterfaceFactory = $restrictionInterfaceFactory;
+ $this->quoteRepository = $quoteRepository;
+ }
+
+ /**
+ * Checks the negotiableQuoteId param placed via request and replace it from session if it is not set.
+ * See \Magento\PaypalNegotiableQuote\Plugin\Paypal\Model\Api\NvpPlugin for session-stored negotiable quote ID.
+ * See \Magento\NegotiableQuote\Model\Plugin\Checkout\Model\SessionPlugin where the NQ quote replaces active quote.
+ *
+ * @param \Magento\Paypal\Controller\Express\AbstractExpress $subject
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function beforeExecute(
+ \Magento\Paypal\Controller\Express\AbstractExpress $subject
+ ) {
+ $negotiableQuoteId = $this->request->getParam('negotiableQuoteId')
+ ?: $this->checkoutSession->getData('negotiableQuote_' . $this->request->getParam('token'));
+ if ($negotiableQuoteId) {
+ try {
+ $quote = $this->quoteRepository->get($negotiableQuoteId);
+ $restriction = $this->restrictionInterfaceFactory->create($quote);
+ if ($restriction->isOwner() && $restriction->canProceedToCheckout()) {
+ $this->request->setParams(['negotiableQuoteId' => $negotiableQuoteId]);
+ }
+ } catch (NoSuchEntityException $e) {
+ return;
+ }
+ }
+ }
+}
diff --git a/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Controller/Express/AbstractExpress/Cancel.php b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Controller/Express/AbstractExpress/Cancel.php
new file mode 100644
index 0000000000..c900fcd27c
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Controller/Express/AbstractExpress/Cancel.php
@@ -0,0 +1,85 @@
+request = $request;
+ $this->restrictionInterfaceFactory = $restrictionInterfaceFactory;
+ $this->quoteRepository = $quoteRepository;
+ }
+
+ /**
+ * Plugin which updates the redirect url for PayPal Express payment cancellations.
+ *
+ * If the cancellation occurred while checking out a negotiable quote, redirect to the negotiable quote details page
+ * instead of the active shopping cart.
+ *
+ * @param PaypalCancel $subject
+ * @param Redirect $result
+ * @return Redirect
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function afterExecute(
+ PaypalCancel $subject,
+ Redirect $result
+ ) {
+ $negotiableQuoteId = $this->request->getParam('negotiableQuoteId');
+ if ($negotiableQuoteId) {
+ try {
+ $quote = $this->quoteRepository->get($negotiableQuoteId);
+ $restriction = $this->restrictionInterfaceFactory->create($quote);
+ if ($restriction->isOwner() && $restriction->canProceedToCheckout()) {
+ $result->setPath(
+ 'negotiable_quote/quote/view/quote_id/' . $negotiableQuoteId
+ );
+ }
+ } catch (NoSuchEntityException $e) {
+ return $result;
+ }
+ }
+ return $result;
+ }
+}
diff --git a/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/Api/NvpPlugin.php b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/Api/NvpPlugin.php
new file mode 100644
index 0000000000..4b88587487
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/Api/NvpPlugin.php
@@ -0,0 +1,97 @@
+request = $request;
+ $this->checkoutSession = $checkoutSession;
+ $this->restrictionInterfaceFactory = $restrictionInterfaceFactory;
+ $this->quoteRepository = $quoteRepository;
+ }
+
+ /**
+ * Storing negotiableQuoteId for PayPal checkout by token.
+ * See \Magento\PaypalNegotiableQuote\Plugin\Paypal\Controller\Express\AbstractExpress where it is used.
+ *
+ * @param \Magento\Paypal\Model\Api\Nvp $subject
+ * @param \Closure $proceed
+ * @param string $key
+ * @param null $index
+ * @return string
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function aroundGetData(
+ \Magento\Paypal\Model\Api\Nvp $subject,
+ \Closure $proceed,
+ string $key = '',
+ $index = null
+ ) {
+ if ($key === 'token') {
+ $token = $proceed($key, $index);
+ $negotiableQuoteId = $this->request->getParam('negotiableQuoteId');
+ if ($negotiableQuoteId) {
+ try {
+ $quote = $this->quoteRepository->get($negotiableQuoteId);
+ $restriction = $this->restrictionInterfaceFactory->create($quote);
+ if ($restriction->isOwner() && $restriction->canProceedToCheckout()) {
+ $this->checkoutSession->setData('negotiableQuote_' . $token, $negotiableQuoteId);
+ }
+ } catch (NoSuchEntityException $e) {
+ return $token;
+ }
+ }
+ return $token;
+ } else {
+ return $proceed($key, $index);
+ }
+ }
+}
diff --git a/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/ExpressConfigProvider.php b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/ExpressConfigProvider.php
new file mode 100644
index 0000000000..bac47caa1c
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/ExpressConfigProvider.php
@@ -0,0 +1,120 @@
+request = $request;
+ $this->restrictionInterfaceFactory = $restrictionInterfaceFactory;
+ $this->quoteRepository = $quoteRepository;
+ }
+
+ /**
+ * Plugin which updates the target urls for PayPal Express relative to negotiable quotes.
+ *
+ * If a negotiableQuoteId is provided as a request parameter during checkout, pass it along to all
+ * configured PayPal urls.
+ *
+ * @param PaypalExpressConfigProvider $subject
+ * @param array $config
+ * @return array
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+ */
+ public function afterGetConfig(
+ PaypalExpressConfigProvider $subject,
+ array $config
+ ) {
+ $negotiableQuoteId = $this->request->getParam('negotiableQuoteId');
+
+ if ($negotiableQuoteId) {
+ try {
+ $quote = $this->quoteRepository->get($negotiableQuoteId);
+ $restriction = $this->restrictionInterfaceFactory->create($quote);
+ if ($restriction->isOwner() && $restriction->canProceedToCheckout()) {
+ $negotiableQuoteParam = 'negotiableQuoteId/' . (int)$negotiableQuoteId;
+ $this->updateInContextUrls($config, $negotiableQuoteParam);
+ $this->updateRedirectUrls($config, $negotiableQuoteParam);
+ }
+ } catch (NoSuchEntityException $e) {
+ return $config;
+ }
+ }
+ return $config;
+ }
+
+ /**
+ * Updates the urls for PayPal Express when in-context mode is enabled.
+ *
+ * Adds the negotiableQuoteId as a query parameter.
+ *
+ * @param array $config
+ * @param string $negotiableQuoteParam
+ */
+ private function updateInContextUrls(array &$config, string $negotiableQuoteParam)
+ {
+ if (isset($config['payment']['paypalExpress']['inContextConfig']['clientConfig'])) {
+ $clientConfig = &$config['payment']['paypalExpress']['inContextConfig']['clientConfig'];
+ $clientConfig['getTokenUrl'] .= $negotiableQuoteParam;
+ $clientConfig['onAuthorizeUrl'] .= $negotiableQuoteParam;
+ $clientConfig['onCancelUrl'] .= $negotiableQuoteParam;
+ }
+ }
+
+ /**
+ * Updates the PayPal Express urls when in-context mode is disabled.
+ *
+ * Adds the negotiableQuoteId as a query parameter.
+ *
+ * @param array $config
+ * @param string $negotiableQuoteParam
+ */
+ private function updateRedirectUrls(array &$config, string $negotiableQuoteParam)
+ {
+ if (isset($config['payment']['paypalExpress']['redirectUrl'])) {
+ foreach ($config['payment']['paypalExpress']['redirectUrl'] as $code => &$redirectUrl) {
+ $redirectUrl .= $negotiableQuoteParam;
+ }
+ }
+ }
+}
diff --git a/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/Payflow/Service/Request/SecureTokenPlugin.php b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/Payflow/Service/Request/SecureTokenPlugin.php
new file mode 100644
index 0000000000..9c5b994277
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/Payflow/Service/Request/SecureTokenPlugin.php
@@ -0,0 +1,94 @@
+request = $request;
+ $this->url = $url;
+ $this->restrictionInterfaceFactory = $restrictionInterfaceFactory;
+ $this->quoteRepository = $quoteRepository;
+ }
+
+ /**
+ * Add negotiable quote id param to url
+ *
+ * @param SecureToken $subject
+ * @param Quote $quote
+ * @param array $urls
+ * @return array
+ */
+ public function beforeRequestToken(SecureToken $subject, Quote $quote, array $urls = [])
+ {
+ $negotiableQuoteId = (int) $this->request->getParam($this->negotiableQuoteIdParam);
+ if ($negotiableQuoteId) {
+ try {
+ $quote = $this->quoteRepository->get($negotiableQuoteId);
+ $restriction = $this->restrictionInterfaceFactory->create($quote);
+ if ($restriction->isOwner() && $restriction->canProceedToCheckout()) {
+ $routePath = $this->redirectRoutePath . '/' . $this->negotiableQuoteIdParam . '/' . $negotiableQuoteId;
+ $urls['return_url'] = $urls['return_url'] ?? $this->url->getUrl($routePath);
+ $urls['error_url'] = $urls['error_url'] ?? $this->url->getUrl($routePath);
+ $urls['cancel_url'] = $urls['cancel_url'] ?? $this->url->getUrl($routePath);
+ }
+ } catch (NoSuchEntityException $e) {
+ return [$quote, $urls];
+ }
+ }
+ return [$quote, $urls];
+ }
+}
\ No newline at end of file
diff --git a/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/PayflowConfigPlugin.php b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/PayflowConfigPlugin.php
new file mode 100644
index 0000000000..0a9947ce77
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/Plugin/Paypal/Model/PayflowConfigPlugin.php
@@ -0,0 +1,82 @@
+request = $request;
+ $this->restrictionInterfaceFactory = $restrictionInterfaceFactory;
+ $this->quoteRepository = $quoteRepository;
+ }
+
+ /**
+ * Add negotiable quote id param to url
+ *
+ * @param PayflowConfig $subject
+ * @param string $result
+ * @param string $key
+ * @return string
+ */
+ public function afterGetValue(PayflowConfig $subject, $result, $key)
+ {
+ $negotiableQuoteId = $this->request->getParam($this->negotiableQuoteIdParam);
+ if ($negotiableQuoteId && $key == $this->placeOrderUrlConfig) {
+ try {
+ $quote = $this->quoteRepository->get($negotiableQuoteId);
+ $restriction = $this->restrictionInterfaceFactory->create($quote);
+ if ($restriction->isOwner() && $restriction->canProceedToCheckout()) {
+ $result = rtrim($result, '/');
+ $result .= '/' . $this->negotiableQuoteIdParam . '/' . $negotiableQuoteId;
+ }
+ } catch (NoSuchEntityException $e) {
+ return $result;
+ }
+ }
+ return $result;
+ }
+}
\ No newline at end of file
diff --git a/app/code/Magento/PaypalNegotiableQuote/README.md b/app/code/Magento/PaypalNegotiableQuote/README.md
new file mode 100644
index 0000000000..af0dc510ff
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/README.md
@@ -0,0 +1,9 @@
+# Magento_PaypalNegotiableQuote module
+
+The Magento_PaypalNegotiableQuote module provides support for PayPal payment methods when using negotiable quotes.
+
+## Extensibility
+
+Extension developers can interact with the Magento_PaypalNegotiableQuote module using plugins. For more information about the Magento extension mechanism, see [Magento plug-ins](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/plugins.html).
+
+[The Magento dependency injection mechanism](https://devdocs.magento.com/guides/v2.4/extension-dev-guide/depend-inj.html) enables you to override the functionality of the Magento_PaypalNegotiableQuote module.
diff --git a/app/code/Magento/PaypalNegotiableQuote/etc/di.xml b/app/code/Magento/PaypalNegotiableQuote/etc/di.xml
new file mode 100644
index 0000000000..1ef1d6c194
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/etc/di.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/PaypalNegotiableQuote/etc/module.xml b/app/code/Magento/PaypalNegotiableQuote/etc/module.xml
new file mode 100644
index 0000000000..92fa4fa91a
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/etc/module.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/PaypalNegotiableQuote/registration.php b/app/code/Magento/PaypalNegotiableQuote/registration.php
new file mode 100644
index 0000000000..0a457e9ead
--- /dev/null
+++ b/app/code/Magento/PaypalNegotiableQuote/registration.php
@@ -0,0 +1,9 @@
+