{"data":{"id":"magento2-39972","source":"github-pr","sourceRef":"magento/magento2#39972","title":"Error getting order item coupon code for customer order via GraphQl customer request","pr":{"number":39972,"url":"https://github.com/magento/magento2/pull/39972","author":"rogerdz","mergedAt":"2025-08-11T16:26:59Z","mergeCommit":"55d602e117a5fdaacb1846432d7548308bc821db","headCommit":"a6c94c2683dbf293443b744cfc070662ac42bfba","baseRef":"2.4-develop","diffSha256":"91a9047545b9eeab6522fc8271b8782f2623a5d621e7dd6e4b9d7010de66c0e8"},"issues":[{"number":39962,"url":"https://github.com/magento/magento2/issues/39962","title":"Error getting order item coupon code for customer order via GraphQl customer request","labels":["Area: Promotion Rules","Component: GraphQL","Issue: Confirmed","Priority: P2","Progress: PR Created","Progress: done","Reported on 2.4.8","Reproduced on 2.4.x"],"kind":"human"}],"fixedIn":"2.4.9","containingTags":["2.4.9"],"reportedOn":"2.4.8","codeMatch":{"2.4.6":"clean","2.4.6-p1":"clean","2.4.6-p2":"clean","2.4.6-p3":"clean","2.4.6-p4":"clean","2.4.6-p5":"clean","2.4.6-p6":"clean","2.4.6-p7":"clean","2.4.6-p8":"clean","2.4.6-p9":"clean","2.4.6-p10":"clean","2.4.6-p11":"clean","2.4.6-p12":"clean","2.4.6-p13":"clean","2.4.6-p14":"clean","2.4.6-p15":"clean","2.4.7":"clean","2.4.7-p1":"clean","2.4.7-p2":"clean","2.4.7-p3":"clean","2.4.7-p4":"clean","2.4.7-p5":"clean","2.4.7-p6":"clean","2.4.7-p7":"clean","2.4.7-p8":"clean","2.4.7-p9":"clean","2.4.7-p10":"clean","2.4.8":"clean","2.4.8-p1":"clean","2.4.8-p2":"clean","2.4.8-p3":"clean","2.4.8-p4":"clean","2.4.8-p5":"clean","2.4.9":"conflict"},"affectedVersions":["2.4.6","2.4.6-p1","2.4.6-p2","2.4.6-p3","2.4.6-p4","2.4.6-p5","2.4.6-p6","2.4.6-p7","2.4.6-p8","2.4.6-p9","2.4.6-p10","2.4.6-p11","2.4.6-p12","2.4.6-p13","2.4.6-p14","2.4.6-p15","2.4.7","2.4.7-p1","2.4.7-p2","2.4.7-p3","2.4.7-p4","2.4.7-p5","2.4.7-p6","2.4.7-p7","2.4.7-p8","2.4.7-p9","2.4.7-p10","2.4.8","2.4.8-p1","2.4.8-p2","2.4.8-p3","2.4.8-p4","2.4.8-p5"],"components":["magento/module-sales-graph-ql"],"files":[{"path":"app/code/Magento/SalesGraphQl/Model/OrderItem/DataProvider.php","change":"modified","package":"magento/module-sales-graph-ql"}],"stripped":{"tests":[],"docs":[],"outsideCode":[]},"linesChanged":3,"mergeBatched":false,"excluded":null,"sections":{"description":"There is an error: \"discount_model\" value should be specified","stepsToReproduce":"1. Create a simple product, customer, sales rule with a coupon, and place an order using this customer and applying coupon.\n2. Get customer token via GraphQL query **generateCustomerToken**\n3. Issue GraphQL request \n```\nquery {\n  customer {\n    firstname\n    lastname\n    orders {\n      items {\n        order_number\n        status\n        items {\n          product_sku\n          discounts {\n            coupon {\n              code\n            }\n            amount {\n              value\n            }\n          }\n        }\n      }\n      page_info {\n        current_page\n        page_size\n        total_pages\n      }\n      total_count\n    } \n  }\n}\n```","expectedResult":"There is a correct response from GraphQl with orders and order items discount data","actualResult":"There is an error: \"discount_model\" value should be specified\n\nexception.log:\n```\n[2025-06-05T07:21:43.918952+00:00] main.ERROR: \"discount_model\" value should be specified\n\nGraphQL (28:13)\n27:           discounts {\n28:             coupon {\n                ^\n29:               code\n {\"exception\":\"[object] (GraphQL\\\\Error\\\\Error(code: 0): \\\"discount_model\\\" value should be specified at /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Error/Error.php:155)\n[previous exception] [object] (Magento\\\\Framework\\\\Exception\\\\LocalizedException(code: 0): \\\"discount_model\\\" value should be specified at /home/zak/sites/magento/storefront/public/vendor/magento/module-sales-rule-graph-ql/Model/Resolver/Coupon.php:40)\"} []\n[2025-06-05T07:21:43.919095+00:00] main.ERROR: Magento\\Framework\\Exception\\LocalizedException: \"discount_model\" value should be specified in /home/zak/sites/magento/storefront/public/vendor/magento/module-sales-rule-graph-ql/Model/Resolver/Coupon.php:40\nStack trace:\n#0 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(58): Magento\\SalesRuleGraphQl\\Model\\Resolver\\Coupon->resolve()\n#1 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(138): Magento\\SalesRuleGraphQl\\Model\\Resolver\\Coupon\\Interceptor->___callParent()\n#2 /home/zak/sites/magento/storefront/public/vendor/magento/module-graph-ql-resolver-cache/Model/Plugin/Resolver/Cache.php(212): Magento\\SalesRuleGraphQl\\Model\\Resolver\\Coupon\\Interceptor->Magento\\Framework\\Interception\\{closure}()\n#3 /home/zak/sites/magento/storefront/public/vendor/magento/module-graph-ql-resolver-cache/Model/Plugin/Resolver/Cache.php(128): Magento\\GraphQlResolverCache\\Model\\Plugin\\Resolver\\Cache->executeResolver()\n#4 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(135): Magento\\GraphQlResolverCache\\Model\\Plugin\\Resolver\\Cache->aroundResolve()\n#5 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(153): Magento\\SalesRuleGraphQl\\Model\\Resolver\\Coupon\\Interceptor->Magento\\Framework\\Interception\\{closure}()\n#6 /home/zak/sites/magento/storefront/public/generated/code/Magento/SalesRuleGraphQl/Model/Resolver/Coupon/Interceptor.php(23): Magento\\SalesRuleGraphQl\\Model\\Resolver\\Coupon\\Interceptor->___callPlugins()\n#7 /home/zak/sites/magento/storefront/public/vendor/magento/framework/GraphQl/Query/Resolver/PromiseFactory.php(63): Magento\\SalesRuleGraphQl\\Model\\Resolver\\Coupon\\Interceptor->resolve()\n#8 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(714): Magento\\Framework\\GraphQl\\Query\\Resolver\\PromiseFactory->Magento\\Framework\\GraphQl\\Query\\Resolver\\{closure}()\n#9 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(631): GraphQL\\Executor\\ReferenceExecutor->resolveFieldValueOrError()\n#10 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(1317): GraphQL\\Executor\\ReferenceExecutor->resolveField()\n#11 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(1256): GraphQL\\Executor\\ReferenceExecutor->executeFields()\n#12 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(1210): GraphQL\\Executor\\ReferenceExecutor->collectAndExecuteSubfields()\n#13 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(893): GraphQL\\Executor\\ReferenceExecutor->completeObjectValue()\n#14 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(753): GraphQL\\Executor\\ReferenceExecutor->completeValue()\n#15 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(985): GraphQL\\Executor\\ReferenceExecutor->completeValueCatchingError()\n#16 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(871): GraphQL\\Executor\\ReferenceExecutor->completeListValue()\n#17 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(753): GraphQL\\Executor\\ReferenceExecutor->completeValue()\n#18 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(640): GraphQL\\Executor\\ReferenceExecutor->completeValueCatchingError()\n#19 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(1317): GraphQL\\Executor\\ReferenceExecutor->resolveField()\n#20 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(1256): GraphQL\\Executor\\ReferenceExecutor->executeFields()\n#21 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(1210): GraphQL\\Executor\\ReferenceExecutor->collectAndExecuteSubfields()\n#22 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(1074): GraphQL\\Executor\\ReferenceExecutor->completeObjectValue()\n#23 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(888): GraphQL\\Executor\\ReferenceExecutor->completeAbstractValue()\n#24 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/ReferenceExecutor.php(750): GraphQL\\Executor\\ReferenceExecutor->completeValue()\n#25 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/Promise/Adapter/SyncPromise.php(152): GraphQL\\Executor\\ReferenceExecutor->GraphQL\\Executor\\{closure}()\n#26 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/Promise/Adapter/SyncPromise.php(50): GraphQL\\Executor\\Promise\\Adapter\\SyncPromise->GraphQL\\Executor\\Promise\\Adapter\\{closure}()\n#27 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/Executor/Promise/Adapter/SyncPromiseAdapter.php(144): GraphQL\\Executor\\Promise\\Adapter\\SyncPromise::runQueue()\n#28 /home/zak/sites/magento/storefront/public/vendor/webonyx/graphql-php/src/GraphQL.php(108): GraphQL\\Executor\\Promise\\Adapter\\SyncPromiseAdapter->wait()\n#29 /home/zak/sites/magento/storefront/public/vendor/magento/framework/GraphQl/Query/QueryProcessor.php(91): GraphQL\\GraphQL::executeQuery()\n#30 /home/zak/sites/magento/storefront/public/vendor/magento/module-graph-ql/Controller/GraphQl.php(202): Magento\\Framework\\GraphQl\\Query\\QueryProcessor->process()\n#31 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(58): Magento\\GraphQl\\Controller\\GraphQl->dispatch()\n#32 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(138): Magento\\GraphQl\\Controller\\GraphQl\\Interceptor->___callParent()\n#33 /home/zak/sites/magento/storefront/public/vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php(72): Magento\\GraphQl\\Controller\\GraphQl\\Interceptor->Magento\\Framework\\Interception\\{closure}()\n#34 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(135): Magento\\PageCache\\Model\\App\\FrontController\\BuiltinPlugin->aroundDispatch()\n#35 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(153): Magento\\GraphQl\\Controller\\GraphQl\\Interceptor->Magento\\Framework\\Interception\\{closure}()\n#36 /home/zak/sites/magento/storefront/public/generated/code/Magento/GraphQl/Controller/GraphQl/Interceptor.php(23): Magento\\GraphQl\\Controller\\GraphQl\\Interceptor->___callPlugins()\n#37 /home/zak/sites/magento/storefront/public/vendor/magento/framework/App/Http.php(116): Magento\\GraphQl\\Controller\\GraphQl\\Interceptor->dispatch()\n#38 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(58): Magento\\Framework\\App\\Http->launch()\n#39 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(138): Magento\\Framework\\App\\Http\\Interceptor->___callParent()\n#40 /home/zak/sites/magento/storefront/public/vendor/magento/module-application-performance-monitor/Plugin/ApplicationPerformanceMonitor.php(38): Magento\\Framework\\App\\Http\\Interceptor->Magento\\Framework\\Interception\\{closure}()\n#41 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(135): Magento\\ApplicationPerformanceMonitor\\Plugin\\ApplicationPerformanceMonitor->aroundLaunch()\n#42 /home/zak/sites/magento/storefront/public/vendor/magento/framework/Interception/Interceptor.php(153): Magento\\Framework\\App\\Http\\Interceptor->Magento\\Framework\\Interception\\{closure}()\n#43 /home/zak/sites/magento/storefront/public/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\\Framework\\App\\Http\\Interceptor->___callPlugins()\n#44 /home/zak/sites/magento/storefront/public/vendor/magento/framework/App/Bootstrap.php(264): Magento\\Framework\\App\\Http\\Interceptor->launch()\n#45 /home/zak/sites/magento/storefront/public/pub/index.php(30): Magento\\Framework\\App\\Bootstrap->run()\n#46 {main} {\"exception\":\"[object] (Magento\\\\Framework\\\\Exception\\\\LocalizedException(code: 0): \\\"discount_model\\\" value should be specified at /home/zak/sites/magento/storefront/public/vendor/magento/module-sales-rule-graph-ql/Model/Resolver/Coupon.php:40)\"} []\n```","source":"issue"},"signatures":["{\"exception\":\"[object] (GraphQL\\\\Error\\\\Error(code: 0): \\\"discount_model\\\" value should be specified at )","[previous exception] [object] (Magento\\\\Framework\\\\Exception\\\\LocalizedException(code: 0): \\\"discount_model\\\" value should be specified at )\"} []","[2025-06-05T07:21:43.919095+00:00] main.ERROR: Magento\\Framework\\Exception\\LocalizedException: \"discount_model\" value should be specified","(631): GraphQL\\Executor\\ReferenceExecutor->resolveFieldValueOrError()","(985): GraphQL\\Executor\\ReferenceExecutor->completeValueCatchingError()","(640): GraphQL\\Executor\\ReferenceExecutor->completeValueCatchingError()","{main} {\"exception\":\"[object] (Magento\\\\Framework\\\\Exception\\\\LocalizedException(code: 0): \\\"discount_model\\\" value should be specified at )\"} []"],"labels":{"area":["Promotion Rules"],"component":["GraphQL"],"priority":"P2","severity":null,"reportedOn":["2.4.8"]},"categories":["Catalog/Product","GraphQL","Price/Tax","Shopping Cart"],"triage":{"model":"@cf/cloudflare/clef","requestHash":"7eb442b32e473427af7b367524172bcb76a1e4a71752f886046bd03afa81c9a2","isBugfix":0.9794,"changeKind":{"choice":"bugfix","probabilities":{"bugfix":0.964,"feature":0.0061,"refactor":0.0136,"tests_only":0.0071,"docs_only":0.0044,"dependency":0.0048},"confidence":0.9156},"scope":{"score":0.2947,"probabilities":{"0":0.7536,"1":0.1982,"2":0.0482},"confidence":0.4142},"risk":{"score":0.2937,"probabilities":{"0":0.7978,"1":0.1107,"2":0.0915},"confidence":0.4856},"area":{"choice":"graphql_api","probabilities":{"catalog":0.0051,"checkout":0.0215,"customer":0.0266,"admin":0.0048,"graphql_api":0.9229,"framework":0.0072,"frontend":0.0037,"other":0.0082},"confidence":0.8321},"securityRelevant":0.0207,"reportedVersion":{"choice":"2.4.8","probabilities":{"2.4.0":0.0022,"2.4.0-p1":0.0024,"2.4.1":0.002,"2.4.1-p1":0.0021,"2.4.2":0.0023,"2.4.2-p1":0.0025,"2.4.2-p2":0.0028,"2.4.3":0.003,"2.4.3-p1":0.0032,"2.4.3-p2":0.0037,"2.4.3-p3":0.0033,"2.4.4":0.0028,"2.4.4-p1":0.0026,"2.4.4-p10":0.0033,"2.4.4-p11":0.0035,"2.4.4-p12":0.0033,"2.4.4-p13":0.0034,"2.4.4-p14":0.0035,"2.4.4-p15":0.0032,"2.4.4-p16":0.0031,"2.4.4-p17":0.0031,"2.4.4-p18":0.0029,"2.4.4-p2":0.002,"2.4.4-p3":0.0024,"2.4.4-p4":0.0025,"2.4.4-p5":0.0028,"2.4.4-p6":0.0028,"2.4.4-p7":0.0028,"2.4.4-p8":0.0033,"2.4.4-p9":0.0028,"2.4.5":0.003,"2.4.5-p1":0.0025,"2.4.5-p10":0.0026,"2.4.5-p11":0.0035,"2.4.5-p12":0.0045,"2.4.5-p13":0.0034,"2.4.5-p14":0.0038,"2.4.5-p15":0.0034,"2.4.5-p16":0.0032,"2.4.5-p17":0.0033,"2.4.5-p2":0.0024,"2.4.5-p3":0.0025,"2.4.5-p4":0.0026,"2.4.5-p5":0.0029,"2.4.5-p6":0.0034,"2.4.5-p7":0.0032,"2.4.5-p8":0.0032,"2.4.5-p9":0.0023,"2.4.6":0.0043,"2.4.6-p1":0.0047,"2.4.6-p10":0.0047,"2.4.6-p11":0.0062,"2.4.6-p12":0.0062,"2.4.6-p13":0.006,"2.4.6-p14":0.0055,"2.4.6-p15":0.0053,"2.4.6-p2":0.0027,"2.4.6-p3":0.004,"2.4.6-p4":0.0046,"2.4.6-p5":0.0047,"2.4.6-p6":0.0049,"2.4.6-p7":0.0047,"2.4.6-p8":0.0052,"2.4.6-p9":0.0031,"2.4.7":0.0091,"2.4.7-p1":0.0064,"2.4.7-p10":0.006,"2.4.7-p2":0.0041,"2.4.7-p3":0.0072,"2.4.7-p4":0.0073,"2.4.7-p5":0.0065,"2.4.7-p6":0.0083,"2.4.7-p7":0.0077,"2.4.7-p8":0.0071,"2.4.7-p9":0.0037,"2.4.8":0.5435,"2.4.8-p1":0.0341,"2.4.8-p2":0.0372,"2.4.8-p3":0.0267,"2.4.8-p4":0.0204,"2.4.8-p5":0.0206,"2.4.9":0.0137,"unspecified":0.0123},"confidence":0.2926},"backportWorthy":{"score":1.7169,"probabilities":{"0":0.0441,"1":0.1949,"2":0.761},"confidence":0.4285}},"curated":null,"tests":null},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-39972 details"}