{"data":{"id":"magento2-39669","source":"github-pr","sourceRef":"magento/magento2#39669","title":"Magento 2.4.7 update (mini)cart no decimal qty allowed","pr":{"number":39669,"url":"https://github.com/magento/magento2/pull/39669","author":"quterorta","mergedAt":"2025-04-25T14:52:43Z","mergeCommit":"e2e86b147b1b4e27dc6a2e526e4ab159ff149521","headCommit":"715d107e081a2adbb7046f6e15282d571298658a","baseRef":"2.4-develop","diffSha256":"9c289e57bab322bbb1ed52aaa3f093ed14a1edc938d6bc4789f5940dd975f19b"},"issues":[{"number":39236,"url":"https://github.com/magento/magento2/issues/39236","title":"Magento 2.4.7 update (mini)cart no decimal qty allowed","labels":["Area: Cart & Checkout","Component: Checkout","Issue: Confirmed","Priority: P2","Progress: done","Reported on 2.4.7-p2","Reproduced on 2.4.x"],"kind":"human"}],"fixedIn":"2.4.9","containingTags":["2.4.9"],"reportedOn":"2.4.7-p2","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/framework","magento/module-checkout"],"files":[{"path":"app/code/Magento/Checkout/Model/Sidebar.php","change":"modified","package":"magento/module-checkout"},{"path":"lib/internal/Magento/Framework/Filter/LocalizedToNormalized.php","change":"modified","package":"magento/framework"}],"stripped":{"tests":["app/code/Magento/Checkout/Test/Unit/Model/SidebarTest.php","lib/internal/Magento/Framework/Filter/Test/Unit/LocalizedToNormalizedTest.php"],"docs":[],"outsideCode":[]},"linesChanged":43,"mergeBatched":false,"excluded":null,"sections":{"description":"In cart is 1","stepsToReproduce":"1. Add product with qty 0.5 to cart\n2. Click on change (pencil) in minicart\n3. Change qty to 0.7 and click update","expectedResult":"Expected that 0.7 is in cart","actualResult":"In cart is 1","source":"issue"},"signatures":[],"labels":{"area":["Cart & Checkout"],"component":["Checkout"],"priority":"P2","severity":null,"reportedOn":["2.4.7-p2"]},"categories":["Shopping Cart"],"triage":{"model":"@cf/cloudflare/clef","requestHash":"f4e1d585544309689684820168e2ce2676a23680a33b608d8c0c0dca6616d7a5","isBugfix":0.9771,"changeKind":{"choice":"bugfix","probabilities":{"bugfix":0.9606,"feature":0.0058,"refactor":0.015,"tests_only":0.0096,"docs_only":0.0035,"dependency":0.0055},"confidence":0.9078},"scope":{"score":1.0942,"probabilities":{"0":0.2477,"1":0.4105,"2":0.3418},"confidence":0.0201},"risk":{"score":0.9955,"probabilities":{"0":0.2946,"1":0.4153,"2":0.2901},"confidence":0.0151},"area":{"choice":"checkout","probabilities":{"catalog":0.0092,"checkout":0.7465,"customer":0.0062,"admin":0.0115,"graphql_api":0.0057,"framework":0.186,"frontend":0.0254,"other":0.0095},"confidence":0.5348},"securityRelevant":0.0089,"reportedVersion":{"choice":"2.4.7-p2","probabilities":{"2.4.0":0.0021,"2.4.0-p1":0.0024,"2.4.1":0.0022,"2.4.1-p1":0.0025,"2.4.2":0.0023,"2.4.2-p1":0.0028,"2.4.2-p2":0.0032,"2.4.3":0.0024,"2.4.3-p1":0.0028,"2.4.3-p2":0.0034,"2.4.3-p3":0.0027,"2.4.4":0.0023,"2.4.4-p1":0.0026,"2.4.4-p10":0.0033,"2.4.4-p11":0.0035,"2.4.4-p12":0.0038,"2.4.4-p13":0.0034,"2.4.4-p14":0.0035,"2.4.4-p15":0.0034,"2.4.4-p16":0.0036,"2.4.4-p17":0.0034,"2.4.4-p18":0.0031,"2.4.4-p2":0.0026,"2.4.4-p3":0.0025,"2.4.4-p4":0.0026,"2.4.4-p5":0.0028,"2.4.4-p6":0.0033,"2.4.4-p7":0.0029,"2.4.4-p8":0.0029,"2.4.4-p9":0.0029,"2.4.5":0.0027,"2.4.5-p1":0.0028,"2.4.5-p10":0.0028,"2.4.5-p11":0.0038,"2.4.5-p12":0.0049,"2.4.5-p13":0.0038,"2.4.5-p14":0.0032,"2.4.5-p15":0.0033,"2.4.5-p16":0.0043,"2.4.5-p17":0.0031,"2.4.5-p2":0.0035,"2.4.5-p3":0.0027,"2.4.5-p4":0.0028,"2.4.5-p5":0.0036,"2.4.5-p6":0.0036,"2.4.5-p7":0.0036,"2.4.5-p8":0.0035,"2.4.5-p9":0.0025,"2.4.6":0.0063,"2.4.6-p1":0.007,"2.4.6-p10":0.0059,"2.4.6-p11":0.006,"2.4.6-p12":0.0062,"2.4.6-p13":0.0045,"2.4.6-p14":0.0053,"2.4.6-p15":0.0048,"2.4.6-p2":0.0046,"2.4.6-p3":0.0039,"2.4.6-p4":0.0052,"2.4.6-p5":0.0042,"2.4.6-p6":0.0058,"2.4.6-p7":0.0045,"2.4.6-p8":0.0034,"2.4.6-p9":0.0029,"2.4.7":0.0523,"2.4.7-p1":0.0144,"2.4.7-p10":0.0034,"2.4.7-p2":0.6157,"2.4.7-p3":0.0115,"2.4.7-p4":0.0066,"2.4.7-p5":0.0063,"2.4.7-p6":0.0071,"2.4.7-p7":0.0052,"2.4.7-p8":0.0055,"2.4.7-p9":0.0039,"2.4.8":0.0052,"2.4.8-p1":0.0054,"2.4.8-p2":0.0066,"2.4.8-p3":0.0062,"2.4.8-p4":0.0055,"2.4.8-p5":0.0044,"2.4.9":0.004,"unspecified":0.0026},"confidence":0.376},"backportWorthy":{"score":1.5336,"probabilities":{"0":0.081,"1":0.3043,"2":0.6147},"confidence":0.2154}},"curated":{"title":"Fixes minicart update with a decimal qty: 0.7 is expected, 1 is in cart","description":"In the mini cart, change qty from 0.5 to 0.7 and click update, and in cart is 1, from wrong parsing of float values depending on the decimal separator. Checkout Sidebar normalize() now does str_replace of ',' with '.' and sets decimal_style NumberFormatter::DECIMAL for LocalizedToNormalized, and its filter() uses FILTER_VALIDATE_INT and FILTER_VALIDATE_FLOAT first.","categories":["Shopping Cart"],"author":"claude-code/opus-5.5","date":"2026-10-06","reviewedBy":null},"tests":{"2.4.8-p5":{"before":"fail","after":"pass","adapted":false,"runAt":"2026-10-06T09:20:09.926Z","releaseCommit":"870a22c63d9d9b68fa3297962e2d5d5841115814","suites":{"unit":{"before":"fail","after":"pass","runAt":"2026-10-06T09:20:09.926Z"}}},"2.4.7-p10":{"before":"fail","after":"pass","adapted":false,"runAt":"2026-10-06T09:29:24.332Z","releaseCommit":"72561bf80652f57cc642a03e2c9a51d74a285b14","suites":{"unit":{"before":"fail","after":"pass","runAt":"2026-10-06T09:29:24.332Z"}}}}},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-39669 details"}