[{"data":1,"prerenderedAt":13251},["ShallowReactive",2],{"blog-suitecommerce-myaccount-customization-b2b-features":3,"all-blog-posts":13054},{"id":4,"title":5,"author":6,"body":7,"categories":13030,"date":13033,"description":13034,"extension":13035,"heroImage":13036,"meta":13037,"navigation":324,"path":13044,"relatedArticles":13045,"seo":13046,"stem":13047,"tags":13048,"__hash__":13053},"content\u002Fblog\u002Fsuitecommerce-myaccount-customization-b2b-features.md","SuiteCommerce MyAccount Customization: 10 Features B2B Customers Need","Stenbase Team",{"type":8,"value":9,"toc":12974},"minimark",[10,14,22,25,28,31,36,119,121,124,127,166,169,172,174,177,191,196,199,203,206,1721,1724,2033,2037,2040,2042,2045,2055,2058,2061,2064,2067,2605,2608,3482,3485,3488,3490,3493,3503,3506,3509,3512,3515,4491,4494,4922,4925,4927,4930,4937,4947,4950,4953,4956,4959,4964,5005,5889,5892,6322,6325,6328,6330,6333,6343,6346,6349,6352,6355,6777,6978,6981,6983,6986,6994,6997,7000,7003,7006,7562,7565,7743,7750,7752,7755,7764,7767,7770,7773,7776,8627,8630,8662,8664,8667,8676,8679,8682,8685,8688,10062,10065,10378,10380,10383,10393,10396,10399,10402,10405,10408,10431,11451,11454,11456,11459,11465,11473,11476,11479,11482,11485,11987,11990,12599,12601,12604,12607,12789,12795,12802,12804,12807,12811,12814,12818,12821,12883,12887,12890,12894,12905,12909,12912,12944,12947,12949,12953,12956,12959,12970],[11,12,5],"h1",{"id":13},"suitecommerce-myaccount-customization-10-features-b2b-customers-need",[15,16,17,21],"p",{},[18,19,20],"strong",{},"73% of B2B buyers say they prefer purchasing through e-commerce portals over dealing with sales reps."," That number has climbed steadily year over year. Yet most SuiteCommerce MyAccount implementations ship with a consumer-grade feature set that forces B2B buyers back to email and phone orders.",[15,23,24],{},"The default SuiteCommerce MyAccount portal handles the basics: view order history, manage addresses, update payment methods. For B2C, that's fine. For B2B, it's missing the functionality that purchasing managers, procurement teams, and account administrators actually need to do their jobs.",[15,26,27],{},"We've built MyAccount customizations for B2B SuiteCommerce stores across manufacturing, distribution, and wholesale. This guide covers the 10 features that consistently drive adoption and self-service usage—along with the implementation complexity, architecture decisions, and code examples for each.",[29,30],"hr",{},[32,33,35],"h2",{"id":34},"table-of-contents","Table of Contents",[37,38,39,47,53,59,65,71,77,83,89,95,101,107,113],"ol",{},[40,41,42],"li",{},[43,44,46],"a",{"href":45},"#why-default-myaccount-fails-for-b2b","Why Default MyAccount Fails for B2B",[40,48,49],{},[43,50,52],{"href":51},"#feature-1-enhanced-order-history-with-advanced-filtering","Feature 1: Enhanced Order History with Advanced Filtering",[40,54,55],{},[43,56,58],{"href":57},"#feature-2-one-click-reordering","Feature 2: One-Click Reordering",[40,60,61],{},[43,62,64],{"href":63},"#feature-3-quote-request-and-management","Feature 3: Quote Request and Management",[40,66,67],{},[43,68,70],{"href":69},"#feature-4-account-hierarchy-and-sub-users","Feature 4: Account Hierarchy and Sub-Users",[40,72,73],{},[43,74,76],{"href":75},"#feature-5-customer-specific-pricing-visibility","Feature 5: Customer-Specific Pricing Visibility",[40,78,79],{},[43,80,82],{"href":81},"#feature-6-invoice-and-payment-history","Feature 6: Invoice and Payment History",[40,84,85],{},[43,86,88],{"href":87},"#feature-7-saved-carts-and-shopping-lists","Feature 7: Saved Carts and Shopping Lists",[40,90,91],{},[43,92,94],{"href":93},"#feature-8-bulk-order-entry-csv-upload","Feature 8: Bulk Order Entry (CSV Upload)",[40,96,97],{},[43,98,100],{"href":99},"#feature-9-returns-and-rma-management","Feature 9: Returns and RMA Management",[40,102,103],{},[43,104,106],{"href":105},"#feature-10-custom-dashboards-and-reporting","Feature 10: Custom Dashboards and Reporting",[40,108,109],{},[43,110,112],{"href":111},"#implementation-prioritization-matrix","Implementation Prioritization Matrix",[40,114,115],{},[43,116,118],{"href":117},"#faq","FAQ",[29,120],{},[32,122,46],{"id":123},"why-default-myaccount-fails-for-b2b",[15,125,126],{},"SuiteCommerce MyAccount was designed as a consumer self-service tool. It assumes individual buyers making occasional purchases. B2B purchasing is fundamentally different:",[128,129,130,136,142,148,154,160],"ul",{},[40,131,132,135],{},[18,133,134],{},"Multiple people"," buy on one account (purchasing agents, managers, warehouse staff)",[40,137,138,141],{},[18,139,140],{},"Order frequency"," is weekly or daily, not monthly",[40,143,144,147],{},[18,145,146],{},"Order size"," is dozens or hundreds of line items, not 2–3",[40,149,150,153],{},[18,151,152],{},"Pricing"," is negotiated per account, not listed publicly",[40,155,156,159],{},[18,157,158],{},"Payment"," is often on terms (Net 30\u002F60\u002F90), not credit card at checkout",[40,161,162,165],{},[18,163,164],{},"Approvals"," are required above certain thresholds",[15,167,168],{},"The default MyAccount doesn't support any of these workflows. The result: your B2B customers use the portal to look up information, then call your sales team to actually place orders. You're paying for an e-commerce platform but getting a product catalog.",[15,170,171],{},"Here are the 10 features that turn MyAccount into a real B2B purchasing tool.",[29,173],{},[32,175,52],{"id":176},"feature-1-enhanced-order-history-with-advanced-filtering",[15,178,179,182,183,186,187,190],{},[18,180,181],{},"Complexity:"," Low | ",[18,184,185],{},"Development Time:"," 1–2 weeks | ",[18,188,189],{},"Impact:"," High",[192,193,195],"h3",{"id":194},"the-problem","The Problem",[15,197,198],{},"Default order history shows a flat list of recent orders sorted by date. A B2B buyer with 50+ orders per month can't find anything. There's no search, no filtering by PO number, no date range picker, and no way to filter by status or product.",[192,200,202],{"id":201},"the-solution","The Solution",[15,204,205],{},"Build an order history module with the search and filter capabilities B2B buyers expect:",[207,208,213],"pre",{"className":209,"code":210,"language":211,"meta":212,"style":212},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Enhanced Order History with filtering\ndefine('Stenbase.B2B.OrderHistory.List.View', [\n    'OrderHistory.List.View',\n    'stenbase_b2b_order_history_list.tpl',\n    'underscore',\n    'jQuery'\n], function (OrderHistoryListView, template, _, jQuery) {\n    'use strict';\n\n    return OrderHistoryListView.extend({\n        template: template,\n\n        events: _.extend(OrderHistoryListView.prototype.events, {\n            'submit [data-action=\"filter-orders\"]': 'applyFilters',\n            'click [data-action=\"clear-filters\"]': 'clearFilters',\n            'click [data-action=\"export-csv\"]': 'exportToCSV'\n        }),\n\n        initialize: function (options) {\n            OrderHistoryListView.prototype\n                .initialize.apply(this, arguments);\n\n            this.filters = {\n                dateFrom: null,\n                dateTo: null,\n                status: null,\n                poNumber: null,\n                searchTerm: null\n            };\n        },\n\n        applyFilters: function (e) {\n            e.preventDefault();\n            var self = this;\n\n            this.filters = {\n                dateFrom: this.$('[name=\"date-from\"]').val(),\n                dateTo: this.$('[name=\"date-to\"]').val(),\n                status: this.$('[name=\"order-status\"]').val(),\n                poNumber: this.$('[name=\"po-number\"]').val(),\n                searchTerm: this.$('[name=\"order-search\"]').val()\n            };\n\n            \u002F\u002F Build filter params for API call\n            var params = {};\n\n            if (this.filters.dateFrom) {\n                params.from = this.filters.dateFrom;\n            }\n            if (this.filters.dateTo) {\n                params.to = this.filters.dateTo;\n            }\n            if (this.filters.status) {\n                params.status = this.filters.status;\n            }\n\n            \u002F\u002F Fetch filtered results\n            this.collection.fetch({\n                data: params,\n                reset: true\n            }).done(function () {\n                \u002F\u002F Client-side filtering for PO number and search\n                if (self.filters.poNumber) {\n                    self.collection.reset(\n                        self.collection.filter(function (order) {\n                            var po = order.get('otherrefnum') || '';\n                            return po.toLowerCase().indexOf(\n                                self.filters.poNumber.toLowerCase()\n                            ) !== -1;\n                        })\n                    );\n                }\n                self.render();\n            });\n        },\n\n        exportToCSV: function (e) {\n            e.preventDefault();\n            var csvContent = 'Order #,Date,PO Number,Status,Total\\n';\n\n            this.collection.each(function (order) {\n                csvContent += [\n                    order.get('order_number'),\n                    order.get('date'),\n                    order.get('otherrefnum') || '',\n                    order.get('status').name,\n                    order.get('summary').total\n                ].join(',') + '\\n';\n            });\n\n            var blob = new Blob(\n                [csvContent],\n                { type: 'text\u002Fcsv;charset=utf-8;' }\n            );\n            var link = document.createElement('a');\n            link.href = URL.createObjectURL(blob);\n            link.download = 'order_history_' +\n                new Date().toISOString().split('T')[0] + '.csv';\n            link.click();\n        },\n\n        getContext: function () {\n            var context = OrderHistoryListView\n                .prototype.getContext.apply(this, arguments);\n\n            context.showB2BFilters = true;\n            context.activeFilters = this.filters;\n            context.hasActiveFilters = _.some(\n                this.filters,\n                function (v) { return !!v; }\n            );\n            context.statusOptions = [\n                { value: '', label: 'All Statuses' },\n                { value: 'pendingFulfillment', label: 'Pending Fulfillment' },\n                { value: 'partiallyFulfilled', label: 'Partially Shipped' },\n                { value: 'pendingBilling', label: 'Pending Billing' },\n                { value: 'fullyBilled', label: 'Complete' },\n                { value: 'closed', label: 'Closed' }\n            ];\n\n            return context;\n        }\n    });\n});\n","javascript","",[214,215,216,225,243,252,260,268,274,310,319,326,341,347,352,374,388,401,412,418,423,440,451,473,478,493,504,514,524,534,543,549,555,560,577,589,605,610,621,647,669,691,713,736,741,746,752,765,770,783,796,802,814,827,832,844,857,862,867,873,886,892,901,917,923,932,944,964,997,1017,1027,1044,1050,1056,1062,1073,1079,1084,1089,1105,1114,1135,1140,1160,1172,1188,1202,1221,1236,1251,1279,1284,1289,1307,1313,1325,1331,1354,1373,1387,1427,1438,1443,1448,1460,1473,1496,1501,1514,1527,1543,1552,1575,1580,1590,1608,1623,1638,1653,1668,1683,1689,1694,1703,1709,1715],"code",{"__ignoreMap":212},[217,218,221],"span",{"class":219,"line":220},"line",1,[217,222,224],{"class":223},"sJ8bj","\u002F\u002F Enhanced Order History with filtering\n",[217,226,228,232,236,240],{"class":219,"line":227},2,[217,229,231],{"class":230},"sScJk","define",[217,233,235],{"class":234},"sVt8B","(",[217,237,239],{"class":238},"sZZnC","'Stenbase.B2B.OrderHistory.List.View'",[217,241,242],{"class":234},", [\n",[217,244,246,249],{"class":219,"line":245},3,[217,247,248],{"class":238},"    'OrderHistory.List.View'",[217,250,251],{"class":234},",\n",[217,253,255,258],{"class":219,"line":254},4,[217,256,257],{"class":238},"    'stenbase_b2b_order_history_list.tpl'",[217,259,251],{"class":234},[217,261,263,266],{"class":219,"line":262},5,[217,264,265],{"class":238},"    'underscore'",[217,267,251],{"class":234},[217,269,271],{"class":219,"line":270},6,[217,272,273],{"class":238},"    'jQuery'\n",[217,275,277,280,284,287,291,294,297,299,302,304,307],{"class":219,"line":276},7,[217,278,279],{"class":234},"], ",[217,281,283],{"class":282},"szBVR","function",[217,285,286],{"class":234}," (",[217,288,290],{"class":289},"s4XuR","OrderHistoryListView",[217,292,293],{"class":234},", ",[217,295,296],{"class":289},"template",[217,298,293],{"class":234},[217,300,301],{"class":289},"_",[217,303,293],{"class":234},[217,305,306],{"class":289},"jQuery",[217,308,309],{"class":234},") {\n",[217,311,313,316],{"class":219,"line":312},8,[217,314,315],{"class":238},"    'use strict'",[217,317,318],{"class":234},";\n",[217,320,322],{"class":219,"line":321},9,[217,323,325],{"emptyLinePlaceholder":324},true,"\n",[217,327,329,332,335,338],{"class":219,"line":328},10,[217,330,331],{"class":282},"    return",[217,333,334],{"class":234}," OrderHistoryListView.",[217,336,337],{"class":230},"extend",[217,339,340],{"class":234},"({\n",[217,342,344],{"class":219,"line":343},11,[217,345,346],{"class":234},"        template: template,\n",[217,348,350],{"class":219,"line":349},12,[217,351,325],{"emptyLinePlaceholder":324},[217,353,355,358,360,362,365,368,371],{"class":219,"line":354},13,[217,356,357],{"class":234},"        events: _.",[217,359,337],{"class":230},[217,361,235],{"class":234},[217,363,290],{"class":364},"sj4cs",[217,366,367],{"class":234},".",[217,369,370],{"class":364},"prototype",[217,372,373],{"class":234},".events, {\n",[217,375,377,380,383,386],{"class":219,"line":376},14,[217,378,379],{"class":238},"            'submit [data-action=\"filter-orders\"]'",[217,381,382],{"class":234},": ",[217,384,385],{"class":238},"'applyFilters'",[217,387,251],{"class":234},[217,389,391,394,396,399],{"class":219,"line":390},15,[217,392,393],{"class":238},"            'click [data-action=\"clear-filters\"]'",[217,395,382],{"class":234},[217,397,398],{"class":238},"'clearFilters'",[217,400,251],{"class":234},[217,402,404,407,409],{"class":219,"line":403},16,[217,405,406],{"class":238},"            'click [data-action=\"export-csv\"]'",[217,408,382],{"class":234},[217,410,411],{"class":238},"'exportToCSV'\n",[217,413,415],{"class":219,"line":414},17,[217,416,417],{"class":234},"        }),\n",[217,419,421],{"class":219,"line":420},18,[217,422,325],{"emptyLinePlaceholder":324},[217,424,426,429,431,433,435,438],{"class":219,"line":425},19,[217,427,428],{"class":230},"        initialize",[217,430,382],{"class":234},[217,432,283],{"class":282},[217,434,286],{"class":234},[217,436,437],{"class":289},"options",[217,439,309],{"class":234},[217,441,443,446,448],{"class":219,"line":442},20,[217,444,445],{"class":364},"            OrderHistoryListView",[217,447,367],{"class":234},[217,449,450],{"class":364},"prototype\n",[217,452,454,457,460,462,465,467,470],{"class":219,"line":453},21,[217,455,456],{"class":234},"                .initialize.",[217,458,459],{"class":230},"apply",[217,461,235],{"class":234},[217,463,464],{"class":364},"this",[217,466,293],{"class":234},[217,468,469],{"class":364},"arguments",[217,471,472],{"class":234},");\n",[217,474,476],{"class":219,"line":475},22,[217,477,325],{"emptyLinePlaceholder":324},[217,479,481,484,487,490],{"class":219,"line":480},23,[217,482,483],{"class":364},"            this",[217,485,486],{"class":234},".filters ",[217,488,489],{"class":282},"=",[217,491,492],{"class":234}," {\n",[217,494,496,499,502],{"class":219,"line":495},24,[217,497,498],{"class":234},"                dateFrom: ",[217,500,501],{"class":364},"null",[217,503,251],{"class":234},[217,505,507,510,512],{"class":219,"line":506},25,[217,508,509],{"class":234},"                dateTo: ",[217,511,501],{"class":364},[217,513,251],{"class":234},[217,515,517,520,522],{"class":219,"line":516},26,[217,518,519],{"class":234},"                status: ",[217,521,501],{"class":364},[217,523,251],{"class":234},[217,525,527,530,532],{"class":219,"line":526},27,[217,528,529],{"class":234},"                poNumber: ",[217,531,501],{"class":364},[217,533,251],{"class":234},[217,535,537,540],{"class":219,"line":536},28,[217,538,539],{"class":234},"                searchTerm: ",[217,541,542],{"class":364},"null\n",[217,544,546],{"class":219,"line":545},29,[217,547,548],{"class":234},"            };\n",[217,550,552],{"class":219,"line":551},30,[217,553,554],{"class":234},"        },\n",[217,556,558],{"class":219,"line":557},31,[217,559,325],{"emptyLinePlaceholder":324},[217,561,563,566,568,570,572,575],{"class":219,"line":562},32,[217,564,565],{"class":230},"        applyFilters",[217,567,382],{"class":234},[217,569,283],{"class":282},[217,571,286],{"class":234},[217,573,574],{"class":289},"e",[217,576,309],{"class":234},[217,578,580,583,586],{"class":219,"line":579},33,[217,581,582],{"class":234},"            e.",[217,584,585],{"class":230},"preventDefault",[217,587,588],{"class":234},"();\n",[217,590,592,595,598,600,603],{"class":219,"line":591},34,[217,593,594],{"class":282},"            var",[217,596,597],{"class":234}," self ",[217,599,489],{"class":282},[217,601,602],{"class":364}," this",[217,604,318],{"class":234},[217,606,608],{"class":219,"line":607},35,[217,609,325],{"emptyLinePlaceholder":324},[217,611,613,615,617,619],{"class":219,"line":612},36,[217,614,483],{"class":364},[217,616,486],{"class":234},[217,618,489],{"class":282},[217,620,492],{"class":234},[217,622,624,626,628,630,633,635,638,641,644],{"class":219,"line":623},37,[217,625,498],{"class":234},[217,627,464],{"class":364},[217,629,367],{"class":234},[217,631,632],{"class":230},"$",[217,634,235],{"class":234},[217,636,637],{"class":238},"'[name=\"date-from\"]'",[217,639,640],{"class":234},").",[217,642,643],{"class":230},"val",[217,645,646],{"class":234},"(),\n",[217,648,650,652,654,656,658,660,663,665,667],{"class":219,"line":649},38,[217,651,509],{"class":234},[217,653,464],{"class":364},[217,655,367],{"class":234},[217,657,632],{"class":230},[217,659,235],{"class":234},[217,661,662],{"class":238},"'[name=\"date-to\"]'",[217,664,640],{"class":234},[217,666,643],{"class":230},[217,668,646],{"class":234},[217,670,672,674,676,678,680,682,685,687,689],{"class":219,"line":671},39,[217,673,519],{"class":234},[217,675,464],{"class":364},[217,677,367],{"class":234},[217,679,632],{"class":230},[217,681,235],{"class":234},[217,683,684],{"class":238},"'[name=\"order-status\"]'",[217,686,640],{"class":234},[217,688,643],{"class":230},[217,690,646],{"class":234},[217,692,694,696,698,700,702,704,707,709,711],{"class":219,"line":693},40,[217,695,529],{"class":234},[217,697,464],{"class":364},[217,699,367],{"class":234},[217,701,632],{"class":230},[217,703,235],{"class":234},[217,705,706],{"class":238},"'[name=\"po-number\"]'",[217,708,640],{"class":234},[217,710,643],{"class":230},[217,712,646],{"class":234},[217,714,716,718,720,722,724,726,729,731,733],{"class":219,"line":715},41,[217,717,539],{"class":234},[217,719,464],{"class":364},[217,721,367],{"class":234},[217,723,632],{"class":230},[217,725,235],{"class":234},[217,727,728],{"class":238},"'[name=\"order-search\"]'",[217,730,640],{"class":234},[217,732,643],{"class":230},[217,734,735],{"class":234},"()\n",[217,737,739],{"class":219,"line":738},42,[217,740,548],{"class":234},[217,742,744],{"class":219,"line":743},43,[217,745,325],{"emptyLinePlaceholder":324},[217,747,749],{"class":219,"line":748},44,[217,750,751],{"class":223},"            \u002F\u002F Build filter params for API call\n",[217,753,755,757,760,762],{"class":219,"line":754},45,[217,756,594],{"class":282},[217,758,759],{"class":234}," params ",[217,761,489],{"class":282},[217,763,764],{"class":234}," {};\n",[217,766,768],{"class":219,"line":767},46,[217,769,325],{"emptyLinePlaceholder":324},[217,771,773,776,778,780],{"class":219,"line":772},47,[217,774,775],{"class":282},"            if",[217,777,286],{"class":234},[217,779,464],{"class":364},[217,781,782],{"class":234},".filters.dateFrom) {\n",[217,784,786,789,791,793],{"class":219,"line":785},48,[217,787,788],{"class":234},"                params.from ",[217,790,489],{"class":282},[217,792,602],{"class":364},[217,794,795],{"class":234},".filters.dateFrom;\n",[217,797,799],{"class":219,"line":798},49,[217,800,801],{"class":234},"            }\n",[217,803,805,807,809,811],{"class":219,"line":804},50,[217,806,775],{"class":282},[217,808,286],{"class":234},[217,810,464],{"class":364},[217,812,813],{"class":234},".filters.dateTo) {\n",[217,815,817,820,822,824],{"class":219,"line":816},51,[217,818,819],{"class":234},"                params.to ",[217,821,489],{"class":282},[217,823,602],{"class":364},[217,825,826],{"class":234},".filters.dateTo;\n",[217,828,830],{"class":219,"line":829},52,[217,831,801],{"class":234},[217,833,835,837,839,841],{"class":219,"line":834},53,[217,836,775],{"class":282},[217,838,286],{"class":234},[217,840,464],{"class":364},[217,842,843],{"class":234},".filters.status) {\n",[217,845,847,850,852,854],{"class":219,"line":846},54,[217,848,849],{"class":234},"                params.status ",[217,851,489],{"class":282},[217,853,602],{"class":364},[217,855,856],{"class":234},".filters.status;\n",[217,858,860],{"class":219,"line":859},55,[217,861,801],{"class":234},[217,863,865],{"class":219,"line":864},56,[217,866,325],{"emptyLinePlaceholder":324},[217,868,870],{"class":219,"line":869},57,[217,871,872],{"class":223},"            \u002F\u002F Fetch filtered results\n",[217,874,876,878,881,884],{"class":219,"line":875},58,[217,877,483],{"class":364},[217,879,880],{"class":234},".collection.",[217,882,883],{"class":230},"fetch",[217,885,340],{"class":234},[217,887,889],{"class":219,"line":888},59,[217,890,891],{"class":234},"                data: params,\n",[217,893,895,898],{"class":219,"line":894},60,[217,896,897],{"class":234},"                reset: ",[217,899,900],{"class":364},"true\n",[217,902,904,907,910,912,914],{"class":219,"line":903},61,[217,905,906],{"class":234},"            }).",[217,908,909],{"class":230},"done",[217,911,235],{"class":234},[217,913,283],{"class":282},[217,915,916],{"class":234}," () {\n",[217,918,920],{"class":219,"line":919},62,[217,921,922],{"class":223},"                \u002F\u002F Client-side filtering for PO number and search\n",[217,924,926,929],{"class":219,"line":925},63,[217,927,928],{"class":282},"                if",[217,930,931],{"class":234}," (self.filters.poNumber) {\n",[217,933,935,938,941],{"class":219,"line":934},64,[217,936,937],{"class":234},"                    self.collection.",[217,939,940],{"class":230},"reset",[217,942,943],{"class":234},"(\n",[217,945,947,950,953,955,957,959,962],{"class":219,"line":946},65,[217,948,949],{"class":234},"                        self.collection.",[217,951,952],{"class":230},"filter",[217,954,235],{"class":234},[217,956,283],{"class":282},[217,958,286],{"class":234},[217,960,961],{"class":289},"order",[217,963,309],{"class":234},[217,965,967,970,973,975,978,981,983,986,989,992,995],{"class":219,"line":966},66,[217,968,969],{"class":282},"                            var",[217,971,972],{"class":234}," po ",[217,974,489],{"class":282},[217,976,977],{"class":234}," order.",[217,979,980],{"class":230},"get",[217,982,235],{"class":234},[217,984,985],{"class":238},"'otherrefnum'",[217,987,988],{"class":234},") ",[217,990,991],{"class":282},"||",[217,993,994],{"class":238}," ''",[217,996,318],{"class":234},[217,998,1000,1003,1006,1009,1012,1015],{"class":219,"line":999},67,[217,1001,1002],{"class":282},"                            return",[217,1004,1005],{"class":234}," po.",[217,1007,1008],{"class":230},"toLowerCase",[217,1010,1011],{"class":234},"().",[217,1013,1014],{"class":230},"indexOf",[217,1016,943],{"class":234},[217,1018,1020,1023,1025],{"class":219,"line":1019},68,[217,1021,1022],{"class":234},"                                self.filters.poNumber.",[217,1024,1008],{"class":230},[217,1026,735],{"class":234},[217,1028,1030,1033,1036,1039,1042],{"class":219,"line":1029},69,[217,1031,1032],{"class":234},"                            ) ",[217,1034,1035],{"class":282},"!==",[217,1037,1038],{"class":282}," -",[217,1040,1041],{"class":364},"1",[217,1043,318],{"class":234},[217,1045,1047],{"class":219,"line":1046},70,[217,1048,1049],{"class":234},"                        })\n",[217,1051,1053],{"class":219,"line":1052},71,[217,1054,1055],{"class":234},"                    );\n",[217,1057,1059],{"class":219,"line":1058},72,[217,1060,1061],{"class":234},"                }\n",[217,1063,1065,1068,1071],{"class":219,"line":1064},73,[217,1066,1067],{"class":234},"                self.",[217,1069,1070],{"class":230},"render",[217,1072,588],{"class":234},[217,1074,1076],{"class":219,"line":1075},74,[217,1077,1078],{"class":234},"            });\n",[217,1080,1082],{"class":219,"line":1081},75,[217,1083,554],{"class":234},[217,1085,1087],{"class":219,"line":1086},76,[217,1088,325],{"emptyLinePlaceholder":324},[217,1090,1092,1095,1097,1099,1101,1103],{"class":219,"line":1091},77,[217,1093,1094],{"class":230},"        exportToCSV",[217,1096,382],{"class":234},[217,1098,283],{"class":282},[217,1100,286],{"class":234},[217,1102,574],{"class":289},[217,1104,309],{"class":234},[217,1106,1108,1110,1112],{"class":219,"line":1107},78,[217,1109,582],{"class":234},[217,1111,585],{"class":230},[217,1113,588],{"class":234},[217,1115,1117,1119,1122,1124,1127,1130,1133],{"class":219,"line":1116},79,[217,1118,594],{"class":282},[217,1120,1121],{"class":234}," csvContent ",[217,1123,489],{"class":282},[217,1125,1126],{"class":238}," 'Order #,Date,PO Number,Status,Total",[217,1128,1129],{"class":364},"\\n",[217,1131,1132],{"class":238},"'",[217,1134,318],{"class":234},[217,1136,1138],{"class":219,"line":1137},80,[217,1139,325],{"emptyLinePlaceholder":324},[217,1141,1143,1145,1147,1150,1152,1154,1156,1158],{"class":219,"line":1142},81,[217,1144,483],{"class":364},[217,1146,880],{"class":234},[217,1148,1149],{"class":230},"each",[217,1151,235],{"class":234},[217,1153,283],{"class":282},[217,1155,286],{"class":234},[217,1157,961],{"class":289},[217,1159,309],{"class":234},[217,1161,1163,1166,1169],{"class":219,"line":1162},82,[217,1164,1165],{"class":234},"                csvContent ",[217,1167,1168],{"class":282},"+=",[217,1170,1171],{"class":234}," [\n",[217,1173,1175,1178,1180,1182,1185],{"class":219,"line":1174},83,[217,1176,1177],{"class":234},"                    order.",[217,1179,980],{"class":230},[217,1181,235],{"class":234},[217,1183,1184],{"class":238},"'order_number'",[217,1186,1187],{"class":234},"),\n",[217,1189,1191,1193,1195,1197,1200],{"class":219,"line":1190},84,[217,1192,1177],{"class":234},[217,1194,980],{"class":230},[217,1196,235],{"class":234},[217,1198,1199],{"class":238},"'date'",[217,1201,1187],{"class":234},[217,1203,1205,1207,1209,1211,1213,1215,1217,1219],{"class":219,"line":1204},85,[217,1206,1177],{"class":234},[217,1208,980],{"class":230},[217,1210,235],{"class":234},[217,1212,985],{"class":238},[217,1214,988],{"class":234},[217,1216,991],{"class":282},[217,1218,994],{"class":238},[217,1220,251],{"class":234},[217,1222,1224,1226,1228,1230,1233],{"class":219,"line":1223},86,[217,1225,1177],{"class":234},[217,1227,980],{"class":230},[217,1229,235],{"class":234},[217,1231,1232],{"class":238},"'status'",[217,1234,1235],{"class":234},").name,\n",[217,1237,1239,1241,1243,1245,1248],{"class":219,"line":1238},87,[217,1240,1177],{"class":234},[217,1242,980],{"class":230},[217,1244,235],{"class":234},[217,1246,1247],{"class":238},"'summary'",[217,1249,1250],{"class":234},").total\n",[217,1252,1254,1257,1260,1262,1265,1267,1270,1273,1275,1277],{"class":219,"line":1253},88,[217,1255,1256],{"class":234},"                ].",[217,1258,1259],{"class":230},"join",[217,1261,235],{"class":234},[217,1263,1264],{"class":238},"','",[217,1266,988],{"class":234},[217,1268,1269],{"class":282},"+",[217,1271,1272],{"class":238}," '",[217,1274,1129],{"class":364},[217,1276,1132],{"class":238},[217,1278,318],{"class":234},[217,1280,1282],{"class":219,"line":1281},89,[217,1283,1078],{"class":234},[217,1285,1287],{"class":219,"line":1286},90,[217,1288,325],{"emptyLinePlaceholder":324},[217,1290,1292,1294,1297,1299,1302,1305],{"class":219,"line":1291},91,[217,1293,594],{"class":282},[217,1295,1296],{"class":234}," blob ",[217,1298,489],{"class":282},[217,1300,1301],{"class":282}," new",[217,1303,1304],{"class":230}," Blob",[217,1306,943],{"class":234},[217,1308,1310],{"class":219,"line":1309},92,[217,1311,1312],{"class":234},"                [csvContent],\n",[217,1314,1316,1319,1322],{"class":219,"line":1315},93,[217,1317,1318],{"class":234},"                { type: ",[217,1320,1321],{"class":238},"'text\u002Fcsv;charset=utf-8;'",[217,1323,1324],{"class":234}," }\n",[217,1326,1328],{"class":219,"line":1327},94,[217,1329,1330],{"class":234},"            );\n",[217,1332,1334,1336,1339,1341,1344,1347,1349,1352],{"class":219,"line":1333},95,[217,1335,594],{"class":282},[217,1337,1338],{"class":234}," link ",[217,1340,489],{"class":282},[217,1342,1343],{"class":234}," document.",[217,1345,1346],{"class":230},"createElement",[217,1348,235],{"class":234},[217,1350,1351],{"class":238},"'a'",[217,1353,472],{"class":234},[217,1355,1357,1360,1362,1365,1367,1370],{"class":219,"line":1356},96,[217,1358,1359],{"class":234},"            link.href ",[217,1361,489],{"class":282},[217,1363,1364],{"class":364}," URL",[217,1366,367],{"class":234},[217,1368,1369],{"class":230},"createObjectURL",[217,1371,1372],{"class":234},"(blob);\n",[217,1374,1376,1379,1381,1384],{"class":219,"line":1375},97,[217,1377,1378],{"class":234},"            link.download ",[217,1380,489],{"class":282},[217,1382,1383],{"class":238}," 'order_history_'",[217,1385,1386],{"class":282}," +\n",[217,1388,1390,1393,1396,1398,1401,1403,1406,1408,1411,1414,1417,1420,1422,1425],{"class":219,"line":1389},98,[217,1391,1392],{"class":282},"                new",[217,1394,1395],{"class":230}," Date",[217,1397,1011],{"class":234},[217,1399,1400],{"class":230},"toISOString",[217,1402,1011],{"class":234},[217,1404,1405],{"class":230},"split",[217,1407,235],{"class":234},[217,1409,1410],{"class":238},"'T'",[217,1412,1413],{"class":234},")[",[217,1415,1416],{"class":364},"0",[217,1418,1419],{"class":234},"] ",[217,1421,1269],{"class":282},[217,1423,1424],{"class":238}," '.csv'",[217,1426,318],{"class":234},[217,1428,1430,1433,1436],{"class":219,"line":1429},99,[217,1431,1432],{"class":234},"            link.",[217,1434,1435],{"class":230},"click",[217,1437,588],{"class":234},[217,1439,1441],{"class":219,"line":1440},100,[217,1442,554],{"class":234},[217,1444,1446],{"class":219,"line":1445},101,[217,1447,325],{"emptyLinePlaceholder":324},[217,1449,1451,1454,1456,1458],{"class":219,"line":1450},102,[217,1452,1453],{"class":230},"        getContext",[217,1455,382],{"class":234},[217,1457,283],{"class":282},[217,1459,916],{"class":234},[217,1461,1463,1465,1468,1470],{"class":219,"line":1462},103,[217,1464,594],{"class":282},[217,1466,1467],{"class":234}," context ",[217,1469,489],{"class":282},[217,1471,1472],{"class":234}," OrderHistoryListView\n",[217,1474,1476,1479,1481,1484,1486,1488,1490,1492,1494],{"class":219,"line":1475},104,[217,1477,1478],{"class":234},"                .",[217,1480,370],{"class":364},[217,1482,1483],{"class":234},".getContext.",[217,1485,459],{"class":230},[217,1487,235],{"class":234},[217,1489,464],{"class":364},[217,1491,293],{"class":234},[217,1493,469],{"class":364},[217,1495,472],{"class":234},[217,1497,1499],{"class":219,"line":1498},105,[217,1500,325],{"emptyLinePlaceholder":324},[217,1502,1504,1507,1509,1512],{"class":219,"line":1503},106,[217,1505,1506],{"class":234},"            context.showB2BFilters ",[217,1508,489],{"class":282},[217,1510,1511],{"class":364}," true",[217,1513,318],{"class":234},[217,1515,1517,1520,1522,1524],{"class":219,"line":1516},107,[217,1518,1519],{"class":234},"            context.activeFilters ",[217,1521,489],{"class":282},[217,1523,602],{"class":364},[217,1525,1526],{"class":234},".filters;\n",[217,1528,1530,1533,1535,1538,1541],{"class":219,"line":1529},108,[217,1531,1532],{"class":234},"            context.hasActiveFilters ",[217,1534,489],{"class":282},[217,1536,1537],{"class":234}," _.",[217,1539,1540],{"class":230},"some",[217,1542,943],{"class":234},[217,1544,1546,1549],{"class":219,"line":1545},109,[217,1547,1548],{"class":364},"                this",[217,1550,1551],{"class":234},".filters,\n",[217,1553,1555,1558,1560,1563,1566,1569,1572],{"class":219,"line":1554},110,[217,1556,1557],{"class":282},"                function",[217,1559,286],{"class":234},[217,1561,1562],{"class":289},"v",[217,1564,1565],{"class":234},") { ",[217,1567,1568],{"class":282},"return",[217,1570,1571],{"class":282}," !!",[217,1573,1574],{"class":234},"v; }\n",[217,1576,1578],{"class":219,"line":1577},111,[217,1579,1330],{"class":234},[217,1581,1583,1586,1588],{"class":219,"line":1582},112,[217,1584,1585],{"class":234},"            context.statusOptions ",[217,1587,489],{"class":282},[217,1589,1171],{"class":234},[217,1591,1593,1596,1599,1602,1605],{"class":219,"line":1592},113,[217,1594,1595],{"class":234},"                { value: ",[217,1597,1598],{"class":238},"''",[217,1600,1601],{"class":234},", label: ",[217,1603,1604],{"class":238},"'All Statuses'",[217,1606,1607],{"class":234}," },\n",[217,1609,1611,1613,1616,1618,1621],{"class":219,"line":1610},114,[217,1612,1595],{"class":234},[217,1614,1615],{"class":238},"'pendingFulfillment'",[217,1617,1601],{"class":234},[217,1619,1620],{"class":238},"'Pending Fulfillment'",[217,1622,1607],{"class":234},[217,1624,1626,1628,1631,1633,1636],{"class":219,"line":1625},115,[217,1627,1595],{"class":234},[217,1629,1630],{"class":238},"'partiallyFulfilled'",[217,1632,1601],{"class":234},[217,1634,1635],{"class":238},"'Partially Shipped'",[217,1637,1607],{"class":234},[217,1639,1641,1643,1646,1648,1651],{"class":219,"line":1640},116,[217,1642,1595],{"class":234},[217,1644,1645],{"class":238},"'pendingBilling'",[217,1647,1601],{"class":234},[217,1649,1650],{"class":238},"'Pending Billing'",[217,1652,1607],{"class":234},[217,1654,1656,1658,1661,1663,1666],{"class":219,"line":1655},117,[217,1657,1595],{"class":234},[217,1659,1660],{"class":238},"'fullyBilled'",[217,1662,1601],{"class":234},[217,1664,1665],{"class":238},"'Complete'",[217,1667,1607],{"class":234},[217,1669,1671,1673,1676,1678,1681],{"class":219,"line":1670},118,[217,1672,1595],{"class":234},[217,1674,1675],{"class":238},"'closed'",[217,1677,1601],{"class":234},[217,1679,1680],{"class":238},"'Closed'",[217,1682,1324],{"class":234},[217,1684,1686],{"class":219,"line":1685},119,[217,1687,1688],{"class":234},"            ];\n",[217,1690,1692],{"class":219,"line":1691},120,[217,1693,325],{"emptyLinePlaceholder":324},[217,1695,1697,1700],{"class":219,"line":1696},121,[217,1698,1699],{"class":282},"            return",[217,1701,1702],{"class":234}," context;\n",[217,1704,1706],{"class":219,"line":1705},122,[217,1707,1708],{"class":234},"        }\n",[217,1710,1712],{"class":219,"line":1711},123,[217,1713,1714],{"class":234},"    });\n",[217,1716,1718],{"class":219,"line":1717},124,[217,1719,1720],{"class":234},"});\n",[15,1722,1723],{},"The filter template:",[207,1725,1729],{"className":1726,"code":1727,"language":1728,"meta":212,"style":212},"language-handlebars shiki shiki-themes github-light github-dark","{{!-- Order history filter bar --}}\n\u003Cdiv class=\"order-history-filters\">\n    \u003Cform data-action=\"filter-orders\" class=\"filter-form\">\n        \u003Cdiv class=\"filter-row\">\n            \u003Cdiv class=\"filter-group\">\n                \u003Clabel>{{translate 'Search Orders'}}\u003C\u002Flabel>\n                \u003Cinput type=\"text\"\n                       name=\"order-search\"\n                       placeholder=\"Order #, item name, or SKU\"\n                       value=\"{{activeFilters.searchTerm}}\" \u002F>\n            \u003C\u002Fdiv>\n            \u003Cdiv class=\"filter-group\">\n                \u003Clabel>{{translate 'PO Number'}}\u003C\u002Flabel>\n                \u003Cinput type=\"text\"\n                       name=\"po-number\"\n                       placeholder=\"Your PO #\"\n                       value=\"{{activeFilters.poNumber}}\" \u002F>\n            \u003C\u002Fdiv>\n            \u003Cdiv class=\"filter-group\">\n                \u003Clabel>{{translate 'Status'}}\u003C\u002Flabel>\n                \u003Cselect name=\"order-status\">\n                    {{#each statusOptions}}\n                    \u003Coption value=\"{{value}}\"\n                            {{#ifEquals value ..\u002FactiveFilters.status}}\n                                selected\n                            {{\u002FifEquals}}>\n                        {{label}}\n                    \u003C\u002Foption>\n                    {{\u002Feach}}\n                \u003C\u002Fselect>\n            \u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"filter-row\">\n            \u003Cdiv class=\"filter-group\">\n                \u003Clabel>{{translate 'From'}}\u003C\u002Flabel>\n                \u003Cinput type=\"date\"\n                       name=\"date-from\"\n                       value=\"{{activeFilters.dateFrom}}\" \u002F>\n            \u003C\u002Fdiv>\n            \u003Cdiv class=\"filter-group\">\n                \u003Clabel>{{translate 'To'}}\u003C\u002Flabel>\n                \u003Cinput type=\"date\"\n                       name=\"date-to\"\n                       value=\"{{activeFilters.dateTo}}\" \u002F>\n            \u003C\u002Fdiv>\n            \u003Cdiv class=\"filter-actions\">\n                \u003Cbutton type=\"submit\" class=\"button-secondary\">\n                    {{translate 'Apply Filters'}}\n                \u003C\u002Fbutton>\n                {{#if hasActiveFilters}}\n                \u003Ca href=\"#\" data-action=\"clear-filters\">\n                    {{translate 'Clear All'}}\n                \u003C\u002Fa>\n                {{\u002Fif}}\n            \u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n    \u003C\u002Fform>\n    \u003Cdiv class=\"filter-actions-secondary\">\n        \u003Ca href=\"#\" data-action=\"export-csv\" class=\"export-link\">\n            {{translate 'Export to CSV'}}\n        \u003C\u002Fa>\n    \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n","handlebars",[214,1730,1731,1736,1741,1746,1751,1756,1761,1766,1771,1776,1781,1786,1790,1795,1799,1804,1809,1814,1818,1822,1827,1832,1837,1842,1847,1852,1857,1862,1867,1872,1877,1881,1886,1890,1894,1899,1904,1909,1914,1918,1922,1927,1931,1936,1941,1945,1950,1955,1960,1965,1970,1975,1980,1985,1990,1994,1998,2003,2008,2013,2018,2023,2028],{"__ignoreMap":212},[217,1732,1733],{"class":219,"line":220},[217,1734,1735],{},"{{!-- Order history filter bar --}}\n",[217,1737,1738],{"class":219,"line":227},[217,1739,1740],{},"\u003Cdiv class=\"order-history-filters\">\n",[217,1742,1743],{"class":219,"line":245},[217,1744,1745],{},"    \u003Cform data-action=\"filter-orders\" class=\"filter-form\">\n",[217,1747,1748],{"class":219,"line":254},[217,1749,1750],{},"        \u003Cdiv class=\"filter-row\">\n",[217,1752,1753],{"class":219,"line":262},[217,1754,1755],{},"            \u003Cdiv class=\"filter-group\">\n",[217,1757,1758],{"class":219,"line":270},[217,1759,1760],{},"                \u003Clabel>{{translate 'Search Orders'}}\u003C\u002Flabel>\n",[217,1762,1763],{"class":219,"line":276},[217,1764,1765],{},"                \u003Cinput type=\"text\"\n",[217,1767,1768],{"class":219,"line":312},[217,1769,1770],{},"                       name=\"order-search\"\n",[217,1772,1773],{"class":219,"line":321},[217,1774,1775],{},"                       placeholder=\"Order #, item name, or SKU\"\n",[217,1777,1778],{"class":219,"line":328},[217,1779,1780],{},"                       value=\"{{activeFilters.searchTerm}}\" \u002F>\n",[217,1782,1783],{"class":219,"line":343},[217,1784,1785],{},"            \u003C\u002Fdiv>\n",[217,1787,1788],{"class":219,"line":349},[217,1789,1755],{},[217,1791,1792],{"class":219,"line":354},[217,1793,1794],{},"                \u003Clabel>{{translate 'PO Number'}}\u003C\u002Flabel>\n",[217,1796,1797],{"class":219,"line":376},[217,1798,1765],{},[217,1800,1801],{"class":219,"line":390},[217,1802,1803],{},"                       name=\"po-number\"\n",[217,1805,1806],{"class":219,"line":403},[217,1807,1808],{},"                       placeholder=\"Your PO #\"\n",[217,1810,1811],{"class":219,"line":414},[217,1812,1813],{},"                       value=\"{{activeFilters.poNumber}}\" \u002F>\n",[217,1815,1816],{"class":219,"line":420},[217,1817,1785],{},[217,1819,1820],{"class":219,"line":425},[217,1821,1755],{},[217,1823,1824],{"class":219,"line":442},[217,1825,1826],{},"                \u003Clabel>{{translate 'Status'}}\u003C\u002Flabel>\n",[217,1828,1829],{"class":219,"line":453},[217,1830,1831],{},"                \u003Cselect name=\"order-status\">\n",[217,1833,1834],{"class":219,"line":475},[217,1835,1836],{},"                    {{#each statusOptions}}\n",[217,1838,1839],{"class":219,"line":480},[217,1840,1841],{},"                    \u003Coption value=\"{{value}}\"\n",[217,1843,1844],{"class":219,"line":495},[217,1845,1846],{},"                            {{#ifEquals value ..\u002FactiveFilters.status}}\n",[217,1848,1849],{"class":219,"line":506},[217,1850,1851],{},"                                selected\n",[217,1853,1854],{"class":219,"line":516},[217,1855,1856],{},"                            {{\u002FifEquals}}>\n",[217,1858,1859],{"class":219,"line":526},[217,1860,1861],{},"                        {{label}}\n",[217,1863,1864],{"class":219,"line":536},[217,1865,1866],{},"                    \u003C\u002Foption>\n",[217,1868,1869],{"class":219,"line":545},[217,1870,1871],{},"                    {{\u002Feach}}\n",[217,1873,1874],{"class":219,"line":551},[217,1875,1876],{},"                \u003C\u002Fselect>\n",[217,1878,1879],{"class":219,"line":557},[217,1880,1785],{},[217,1882,1883],{"class":219,"line":562},[217,1884,1885],{},"        \u003C\u002Fdiv>\n",[217,1887,1888],{"class":219,"line":579},[217,1889,1750],{},[217,1891,1892],{"class":219,"line":591},[217,1893,1755],{},[217,1895,1896],{"class":219,"line":607},[217,1897,1898],{},"                \u003Clabel>{{translate 'From'}}\u003C\u002Flabel>\n",[217,1900,1901],{"class":219,"line":612},[217,1902,1903],{},"                \u003Cinput type=\"date\"\n",[217,1905,1906],{"class":219,"line":623},[217,1907,1908],{},"                       name=\"date-from\"\n",[217,1910,1911],{"class":219,"line":649},[217,1912,1913],{},"                       value=\"{{activeFilters.dateFrom}}\" \u002F>\n",[217,1915,1916],{"class":219,"line":671},[217,1917,1785],{},[217,1919,1920],{"class":219,"line":693},[217,1921,1755],{},[217,1923,1924],{"class":219,"line":715},[217,1925,1926],{},"                \u003Clabel>{{translate 'To'}}\u003C\u002Flabel>\n",[217,1928,1929],{"class":219,"line":738},[217,1930,1903],{},[217,1932,1933],{"class":219,"line":743},[217,1934,1935],{},"                       name=\"date-to\"\n",[217,1937,1938],{"class":219,"line":748},[217,1939,1940],{},"                       value=\"{{activeFilters.dateTo}}\" \u002F>\n",[217,1942,1943],{"class":219,"line":754},[217,1944,1785],{},[217,1946,1947],{"class":219,"line":767},[217,1948,1949],{},"            \u003Cdiv class=\"filter-actions\">\n",[217,1951,1952],{"class":219,"line":772},[217,1953,1954],{},"                \u003Cbutton type=\"submit\" class=\"button-secondary\">\n",[217,1956,1957],{"class":219,"line":785},[217,1958,1959],{},"                    {{translate 'Apply Filters'}}\n",[217,1961,1962],{"class":219,"line":798},[217,1963,1964],{},"                \u003C\u002Fbutton>\n",[217,1966,1967],{"class":219,"line":804},[217,1968,1969],{},"                {{#if hasActiveFilters}}\n",[217,1971,1972],{"class":219,"line":816},[217,1973,1974],{},"                \u003Ca href=\"#\" data-action=\"clear-filters\">\n",[217,1976,1977],{"class":219,"line":829},[217,1978,1979],{},"                    {{translate 'Clear All'}}\n",[217,1981,1982],{"class":219,"line":834},[217,1983,1984],{},"                \u003C\u002Fa>\n",[217,1986,1987],{"class":219,"line":846},[217,1988,1989],{},"                {{\u002Fif}}\n",[217,1991,1992],{"class":219,"line":859},[217,1993,1785],{},[217,1995,1996],{"class":219,"line":864},[217,1997,1885],{},[217,1999,2000],{"class":219,"line":869},[217,2001,2002],{},"    \u003C\u002Fform>\n",[217,2004,2005],{"class":219,"line":875},[217,2006,2007],{},"    \u003Cdiv class=\"filter-actions-secondary\">\n",[217,2009,2010],{"class":219,"line":888},[217,2011,2012],{},"        \u003Ca href=\"#\" data-action=\"export-csv\" class=\"export-link\">\n",[217,2014,2015],{"class":219,"line":894},[217,2016,2017],{},"            {{translate 'Export to CSV'}}\n",[217,2019,2020],{"class":219,"line":903},[217,2021,2022],{},"        \u003C\u002Fa>\n",[217,2024,2025],{"class":219,"line":919},[217,2026,2027],{},"    \u003C\u002Fdiv>\n",[217,2029,2030],{"class":219,"line":925},[217,2031,2032],{},"\u003C\u002Fdiv>\n",[192,2034,2036],{"id":2035},"why-it-matters","Why It Matters",[15,2038,2039],{},"B2B buyers don't browse order history for fun. They're looking for a specific PO to check status, reorder items from a past shipment, or reconcile invoices. Every second spent scrolling through a flat list is friction that pushes them back to calling your sales team.",[29,2041],{},[32,2043,58],{"id":2044},"feature-2-one-click-reordering",[15,2046,2047,2049,2050,186,2052,2054],{},[18,2048,181],{}," Low–Medium | ",[18,2051,185],{},[18,2053,189],{}," Very High",[192,2056,195],{"id":2057},"the-problem-1",[15,2059,2060],{},"B2B buyers order the same items repeatedly. In the default MyAccount, reordering means: find the old order, click into it, note the SKUs, navigate to each product page, add to cart, set quantities. For a 30-line-item order, that's 15+ minutes of manual work.",[192,2062,202],{"id":2063},"the-solution-1",[15,2065,2066],{},"Add a \"Reorder\" button to order history that populates the cart with all items from a previous order in one click.",[207,2068,2070],{"className":209,"code":2069,"language":211,"meta":212,"style":212},"\u002F\u002F One-click reorder functionality\ndefine('Stenbase.B2B.Reorder', [\n    'LiveOrder.Model',\n    'jQuery',\n    'underscore'\n], function (LiveOrderModel, jQuery, _) {\n    'use strict';\n\n    return {\n        reorderFromOrder: function (orderId, options) {\n            options = options || {};\n            var self = this;\n\n            \u002F\u002F Fetch the original order details\n            return jQuery.ajax({\n                url: _.getAbsoluteUrl(\n                    'services\u002FStenbase.Reorder.Service.ss'\n                ),\n                type: 'POST',\n                contentType: 'application\u002Fjson',\n                data: JSON.stringify({\n                    orderId: orderId,\n                    skipUnavailable: options.skipUnavailable !== false\n                })\n            }).done(function (response) {\n                if (response.addedItems && response.addedItems.length) {\n                    \u002F\u002F Refresh the cart model\n                    LiveOrderModel.getInstance().fetch();\n\n                    \u002F\u002F Notify user\n                    var message = response.addedItems.length +\n                        ' items added to cart.';\n\n                    if (response.unavailableItems &&\n                        response.unavailableItems.length) {\n                        message += ' ' +\n                            response.unavailableItems.length +\n                            ' items were unavailable and skipped.';\n                    }\n\n                    self.showNotification(message, 'success');\n                }\n            }).fail(function () {\n                self.showNotification(\n                    'Unable to reorder. Some items may no ' +\n                    'longer be available.',\n                    'error'\n                );\n            });\n        },\n\n        showNotification: function (message, type) {\n            \u002F\u002F Use SuiteCommerce's global notification system\n            var layout = SC.Application('MyAccount').getLayout();\n            if (layout && layout.showMessage) {\n                layout.showMessage(message, type);\n            }\n        }\n    };\n});\n",[214,2071,2072,2077,2088,2095,2102,2107,2128,2134,2138,2144,2164,2178,2190,2194,2199,2211,2221,2226,2231,2241,2251,2266,2271,2281,2286,2303,2321,2326,2340,2344,2349,2365,2372,2376,2387,2396,2408,2417,2424,2429,2433,2449,2453,2466,2474,2481,2488,2493,2498,2502,2506,2510,2531,2536,2565,2577,2588,2592,2596,2601],{"__ignoreMap":212},[217,2073,2074],{"class":219,"line":220},[217,2075,2076],{"class":223},"\u002F\u002F One-click reorder functionality\n",[217,2078,2079,2081,2083,2086],{"class":219,"line":227},[217,2080,231],{"class":230},[217,2082,235],{"class":234},[217,2084,2085],{"class":238},"'Stenbase.B2B.Reorder'",[217,2087,242],{"class":234},[217,2089,2090,2093],{"class":219,"line":245},[217,2091,2092],{"class":238},"    'LiveOrder.Model'",[217,2094,251],{"class":234},[217,2096,2097,2100],{"class":219,"line":254},[217,2098,2099],{"class":238},"    'jQuery'",[217,2101,251],{"class":234},[217,2103,2104],{"class":219,"line":262},[217,2105,2106],{"class":238},"    'underscore'\n",[217,2108,2109,2111,2113,2115,2118,2120,2122,2124,2126],{"class":219,"line":270},[217,2110,279],{"class":234},[217,2112,283],{"class":282},[217,2114,286],{"class":234},[217,2116,2117],{"class":289},"LiveOrderModel",[217,2119,293],{"class":234},[217,2121,306],{"class":289},[217,2123,293],{"class":234},[217,2125,301],{"class":289},[217,2127,309],{"class":234},[217,2129,2130,2132],{"class":219,"line":276},[217,2131,315],{"class":238},[217,2133,318],{"class":234},[217,2135,2136],{"class":219,"line":312},[217,2137,325],{"emptyLinePlaceholder":324},[217,2139,2140,2142],{"class":219,"line":321},[217,2141,331],{"class":282},[217,2143,492],{"class":234},[217,2145,2146,2149,2151,2153,2155,2158,2160,2162],{"class":219,"line":328},[217,2147,2148],{"class":230},"        reorderFromOrder",[217,2150,382],{"class":234},[217,2152,283],{"class":282},[217,2154,286],{"class":234},[217,2156,2157],{"class":289},"orderId",[217,2159,293],{"class":234},[217,2161,437],{"class":289},[217,2163,309],{"class":234},[217,2165,2166,2169,2171,2174,2176],{"class":219,"line":343},[217,2167,2168],{"class":234},"            options ",[217,2170,489],{"class":282},[217,2172,2173],{"class":234}," options ",[217,2175,991],{"class":282},[217,2177,764],{"class":234},[217,2179,2180,2182,2184,2186,2188],{"class":219,"line":349},[217,2181,594],{"class":282},[217,2183,597],{"class":234},[217,2185,489],{"class":282},[217,2187,602],{"class":364},[217,2189,318],{"class":234},[217,2191,2192],{"class":219,"line":354},[217,2193,325],{"emptyLinePlaceholder":324},[217,2195,2196],{"class":219,"line":376},[217,2197,2198],{"class":223},"            \u002F\u002F Fetch the original order details\n",[217,2200,2201,2203,2206,2209],{"class":219,"line":390},[217,2202,1699],{"class":282},[217,2204,2205],{"class":234}," jQuery.",[217,2207,2208],{"class":230},"ajax",[217,2210,340],{"class":234},[217,2212,2213,2216,2219],{"class":219,"line":403},[217,2214,2215],{"class":234},"                url: _.",[217,2217,2218],{"class":230},"getAbsoluteUrl",[217,2220,943],{"class":234},[217,2222,2223],{"class":219,"line":414},[217,2224,2225],{"class":238},"                    'services\u002FStenbase.Reorder.Service.ss'\n",[217,2227,2228],{"class":219,"line":420},[217,2229,2230],{"class":234},"                ),\n",[217,2232,2233,2236,2239],{"class":219,"line":425},[217,2234,2235],{"class":234},"                type: ",[217,2237,2238],{"class":238},"'POST'",[217,2240,251],{"class":234},[217,2242,2243,2246,2249],{"class":219,"line":442},[217,2244,2245],{"class":234},"                contentType: ",[217,2247,2248],{"class":238},"'application\u002Fjson'",[217,2250,251],{"class":234},[217,2252,2253,2256,2259,2261,2264],{"class":219,"line":453},[217,2254,2255],{"class":234},"                data: ",[217,2257,2258],{"class":364},"JSON",[217,2260,367],{"class":234},[217,2262,2263],{"class":230},"stringify",[217,2265,340],{"class":234},[217,2267,2268],{"class":219,"line":475},[217,2269,2270],{"class":234},"                    orderId: orderId,\n",[217,2272,2273,2276,2278],{"class":219,"line":480},[217,2274,2275],{"class":234},"                    skipUnavailable: options.skipUnavailable ",[217,2277,1035],{"class":282},[217,2279,2280],{"class":364}," false\n",[217,2282,2283],{"class":219,"line":495},[217,2284,2285],{"class":234},"                })\n",[217,2287,2288,2290,2292,2294,2296,2298,2301],{"class":219,"line":506},[217,2289,906],{"class":234},[217,2291,909],{"class":230},[217,2293,235],{"class":234},[217,2295,283],{"class":282},[217,2297,286],{"class":234},[217,2299,2300],{"class":289},"response",[217,2302,309],{"class":234},[217,2304,2305,2307,2310,2313,2316,2319],{"class":219,"line":516},[217,2306,928],{"class":282},[217,2308,2309],{"class":234}," (response.addedItems ",[217,2311,2312],{"class":282},"&&",[217,2314,2315],{"class":234}," response.addedItems.",[217,2317,2318],{"class":364},"length",[217,2320,309],{"class":234},[217,2322,2323],{"class":219,"line":526},[217,2324,2325],{"class":223},"                    \u002F\u002F Refresh the cart model\n",[217,2327,2328,2331,2334,2336,2338],{"class":219,"line":536},[217,2329,2330],{"class":234},"                    LiveOrderModel.",[217,2332,2333],{"class":230},"getInstance",[217,2335,1011],{"class":234},[217,2337,883],{"class":230},[217,2339,588],{"class":234},[217,2341,2342],{"class":219,"line":545},[217,2343,325],{"emptyLinePlaceholder":324},[217,2345,2346],{"class":219,"line":551},[217,2347,2348],{"class":223},"                    \u002F\u002F Notify user\n",[217,2350,2351,2354,2357,2359,2361,2363],{"class":219,"line":557},[217,2352,2353],{"class":282},"                    var",[217,2355,2356],{"class":234}," message ",[217,2358,489],{"class":282},[217,2360,2315],{"class":234},[217,2362,2318],{"class":364},[217,2364,1386],{"class":282},[217,2366,2367,2370],{"class":219,"line":562},[217,2368,2369],{"class":238},"                        ' items added to cart.'",[217,2371,318],{"class":234},[217,2373,2374],{"class":219,"line":579},[217,2375,325],{"emptyLinePlaceholder":324},[217,2377,2378,2381,2384],{"class":219,"line":591},[217,2379,2380],{"class":282},"                    if",[217,2382,2383],{"class":234}," (response.unavailableItems ",[217,2385,2386],{"class":282},"&&\n",[217,2388,2389,2392,2394],{"class":219,"line":607},[217,2390,2391],{"class":234},"                        response.unavailableItems.",[217,2393,2318],{"class":364},[217,2395,309],{"class":234},[217,2397,2398,2401,2403,2406],{"class":219,"line":612},[217,2399,2400],{"class":234},"                        message ",[217,2402,1168],{"class":282},[217,2404,2405],{"class":238}," ' '",[217,2407,1386],{"class":282},[217,2409,2410,2413,2415],{"class":219,"line":623},[217,2411,2412],{"class":234},"                            response.unavailableItems.",[217,2414,2318],{"class":364},[217,2416,1386],{"class":282},[217,2418,2419,2422],{"class":219,"line":649},[217,2420,2421],{"class":238},"                            ' items were unavailable and skipped.'",[217,2423,318],{"class":234},[217,2425,2426],{"class":219,"line":671},[217,2427,2428],{"class":234},"                    }\n",[217,2430,2431],{"class":219,"line":693},[217,2432,325],{"emptyLinePlaceholder":324},[217,2434,2435,2438,2441,2444,2447],{"class":219,"line":715},[217,2436,2437],{"class":234},"                    self.",[217,2439,2440],{"class":230},"showNotification",[217,2442,2443],{"class":234},"(message, ",[217,2445,2446],{"class":238},"'success'",[217,2448,472],{"class":234},[217,2450,2451],{"class":219,"line":738},[217,2452,1061],{"class":234},[217,2454,2455,2457,2460,2462,2464],{"class":219,"line":743},[217,2456,906],{"class":234},[217,2458,2459],{"class":230},"fail",[217,2461,235],{"class":234},[217,2463,283],{"class":282},[217,2465,916],{"class":234},[217,2467,2468,2470,2472],{"class":219,"line":748},[217,2469,1067],{"class":234},[217,2471,2440],{"class":230},[217,2473,943],{"class":234},[217,2475,2476,2479],{"class":219,"line":754},[217,2477,2478],{"class":238},"                    'Unable to reorder. Some items may no '",[217,2480,1386],{"class":282},[217,2482,2483,2486],{"class":219,"line":767},[217,2484,2485],{"class":238},"                    'longer be available.'",[217,2487,251],{"class":234},[217,2489,2490],{"class":219,"line":772},[217,2491,2492],{"class":238},"                    'error'\n",[217,2494,2495],{"class":219,"line":785},[217,2496,2497],{"class":234},"                );\n",[217,2499,2500],{"class":219,"line":798},[217,2501,1078],{"class":234},[217,2503,2504],{"class":219,"line":804},[217,2505,554],{"class":234},[217,2507,2508],{"class":219,"line":816},[217,2509,325],{"emptyLinePlaceholder":324},[217,2511,2512,2515,2517,2519,2521,2524,2526,2529],{"class":219,"line":829},[217,2513,2514],{"class":230},"        showNotification",[217,2516,382],{"class":234},[217,2518,283],{"class":282},[217,2520,286],{"class":234},[217,2522,2523],{"class":289},"message",[217,2525,293],{"class":234},[217,2527,2528],{"class":289},"type",[217,2530,309],{"class":234},[217,2532,2533],{"class":219,"line":834},[217,2534,2535],{"class":223},"            \u002F\u002F Use SuiteCommerce's global notification system\n",[217,2537,2538,2540,2543,2545,2548,2550,2553,2555,2558,2560,2563],{"class":219,"line":846},[217,2539,594],{"class":282},[217,2541,2542],{"class":234}," layout ",[217,2544,489],{"class":282},[217,2546,2547],{"class":364}," SC",[217,2549,367],{"class":234},[217,2551,2552],{"class":230},"Application",[217,2554,235],{"class":234},[217,2556,2557],{"class":238},"'MyAccount'",[217,2559,640],{"class":234},[217,2561,2562],{"class":230},"getLayout",[217,2564,588],{"class":234},[217,2566,2567,2569,2572,2574],{"class":219,"line":859},[217,2568,775],{"class":282},[217,2570,2571],{"class":234}," (layout ",[217,2573,2312],{"class":282},[217,2575,2576],{"class":234}," layout.showMessage) {\n",[217,2578,2579,2582,2585],{"class":219,"line":864},[217,2580,2581],{"class":234},"                layout.",[217,2583,2584],{"class":230},"showMessage",[217,2586,2587],{"class":234},"(message, type);\n",[217,2589,2590],{"class":219,"line":869},[217,2591,801],{"class":234},[217,2593,2594],{"class":219,"line":875},[217,2595,1708],{"class":234},[217,2597,2598],{"class":219,"line":888},[217,2599,2600],{"class":234},"    };\n",[217,2602,2603],{"class":219,"line":894},[217,2604,1720],{"class":234},[15,2606,2607],{},"The backend SuiteScript service handles inventory checks and pricing:",[207,2609,2611],{"className":209,"code":2610,"language":211,"meta":212,"style":212},"\u002F**\n * @NApiVersion 2.1\n * @NScriptType Suitelet\n * @NModuleScope SameAccount\n *\n * Reorder service - adds items from a previous order to cart\n *\u002F\ndefine(['N\u002Frecord', 'N\u002Fsearch', 'N\u002Fruntime'], function (record, search, runtime) {\n\n    function onRequest(context) {\n        var body = JSON.parse(context.request.body);\n        var orderId = body.orderId;\n        var skipUnavailable = body.skipUnavailable;\n\n        var currentCustomer = runtime.getCurrentUser().id;\n\n        \u002F\u002F Load the original order\n        var orderRecord = record.load({\n            type: record.Type.SALES_ORDER,\n            id: orderId\n        });\n\n        \u002F\u002F Verify the order belongs to the current customer\n        var orderCustomer = orderRecord.getValue('entity');\n        if (String(orderCustomer) !== String(currentCustomer)) {\n            context.response.write(JSON.stringify({\n                error: 'Order not found'\n            }));\n            return;\n        }\n\n        var lineCount = orderRecord.getLineCount({ sublistId: 'item' });\n        var addedItems = [];\n        var unavailableItems = [];\n\n        for (var i = 0; i \u003C lineCount; i++) {\n            var itemId = orderRecord.getSublistValue({\n                sublistId: 'item',\n                fieldId: 'item',\n                line: i\n            });\n            var quantity = orderRecord.getSublistValue({\n                sublistId: 'item',\n                fieldId: 'quantity',\n                line: i\n            });\n            var itemName = orderRecord.getSublistValue({\n                sublistId: 'item',\n                fieldId: 'item_display',\n                line: i\n            });\n\n            \u002F\u002F Check availability\n            var available = checkItemAvailability(itemId, quantity);\n\n            if (available || !skipUnavailable) {\n                addedItems.push({\n                    internalid: itemId,\n                    quantity: quantity,\n                    name: itemName\n                });\n            } else {\n                unavailableItems.push({\n                    internalid: itemId,\n                    name: itemName,\n                    requestedQty: quantity\n                });\n            }\n        }\n\n        context.response.write(JSON.stringify({\n            addedItems: addedItems,\n            unavailableItems: unavailableItems\n        }));\n    }\n\n    function checkItemAvailability(itemId, requestedQty) {\n        try {\n            var itemLookup = search.lookupFields({\n                type: search.Type.ITEM,\n                id: itemId,\n                columns: ['isinactive', 'quantityavailable']\n            });\n\n            if (itemLookup.isinactive) return false;\n\n            var available = parseFloat(\n                itemLookup.quantityavailable || 0\n            );\n            return available >= requestedQty;\n        } catch (e) {\n            return false;\n        }\n    }\n\n    return { onRequest: onRequest };\n});\n",[214,2612,2613,2618,2629,2639,2649,2654,2659,2664,2705,2709,2724,2745,2757,2769,2773,2791,2795,2800,2817,2827,2832,2837,2841,2846,2868,2889,2907,2915,2920,2926,2930,2934,2957,2969,2980,2984,3016,3032,3041,3050,3055,3059,3074,3082,3091,3095,3099,3114,3122,3131,3135,3139,3143,3148,3163,3167,3182,3192,3197,3202,3207,3212,3222,3231,3235,3240,3245,3249,3253,3257,3261,3278,3283,3288,3293,3298,3302,3320,3327,3344,3354,3359,3375,3379,3383,3397,3401,3414,3424,3428,3440,3451,3459,3463,3467,3471,3478],{"__ignoreMap":212},[217,2614,2615],{"class":219,"line":220},[217,2616,2617],{"class":223},"\u002F**\n",[217,2619,2620,2623,2626],{"class":219,"line":227},[217,2621,2622],{"class":223}," * ",[217,2624,2625],{"class":282},"@NApiVersion",[217,2627,2628],{"class":223}," 2.1\n",[217,2630,2631,2633,2636],{"class":219,"line":245},[217,2632,2622],{"class":223},[217,2634,2635],{"class":282},"@NScriptType",[217,2637,2638],{"class":223}," Suitelet\n",[217,2640,2641,2643,2646],{"class":219,"line":254},[217,2642,2622],{"class":223},[217,2644,2645],{"class":282},"@NModuleScope",[217,2647,2648],{"class":223}," SameAccount\n",[217,2650,2651],{"class":219,"line":262},[217,2652,2653],{"class":223}," *\n",[217,2655,2656],{"class":219,"line":270},[217,2657,2658],{"class":223}," * Reorder service - adds items from a previous order to cart\n",[217,2660,2661],{"class":219,"line":276},[217,2662,2663],{"class":223}," *\u002F\n",[217,2665,2666,2668,2671,2674,2676,2679,2681,2684,2686,2688,2690,2693,2695,2698,2700,2703],{"class":219,"line":312},[217,2667,231],{"class":230},[217,2669,2670],{"class":234},"([",[217,2672,2673],{"class":238},"'N\u002Frecord'",[217,2675,293],{"class":234},[217,2677,2678],{"class":238},"'N\u002Fsearch'",[217,2680,293],{"class":234},[217,2682,2683],{"class":238},"'N\u002Fruntime'",[217,2685,279],{"class":234},[217,2687,283],{"class":282},[217,2689,286],{"class":234},[217,2691,2692],{"class":289},"record",[217,2694,293],{"class":234},[217,2696,2697],{"class":289},"search",[217,2699,293],{"class":234},[217,2701,2702],{"class":289},"runtime",[217,2704,309],{"class":234},[217,2706,2707],{"class":219,"line":321},[217,2708,325],{"emptyLinePlaceholder":324},[217,2710,2711,2714,2717,2719,2722],{"class":219,"line":328},[217,2712,2713],{"class":282},"    function",[217,2715,2716],{"class":230}," onRequest",[217,2718,235],{"class":234},[217,2720,2721],{"class":289},"context",[217,2723,309],{"class":234},[217,2725,2726,2729,2732,2734,2737,2739,2742],{"class":219,"line":343},[217,2727,2728],{"class":282},"        var",[217,2730,2731],{"class":234}," body ",[217,2733,489],{"class":282},[217,2735,2736],{"class":364}," JSON",[217,2738,367],{"class":234},[217,2740,2741],{"class":230},"parse",[217,2743,2744],{"class":234},"(context.request.body);\n",[217,2746,2747,2749,2752,2754],{"class":219,"line":349},[217,2748,2728],{"class":282},[217,2750,2751],{"class":234}," orderId ",[217,2753,489],{"class":282},[217,2755,2756],{"class":234}," body.orderId;\n",[217,2758,2759,2761,2764,2766],{"class":219,"line":354},[217,2760,2728],{"class":282},[217,2762,2763],{"class":234}," skipUnavailable ",[217,2765,489],{"class":282},[217,2767,2768],{"class":234}," body.skipUnavailable;\n",[217,2770,2771],{"class":219,"line":376},[217,2772,325],{"emptyLinePlaceholder":324},[217,2774,2775,2777,2780,2782,2785,2788],{"class":219,"line":390},[217,2776,2728],{"class":282},[217,2778,2779],{"class":234}," currentCustomer ",[217,2781,489],{"class":282},[217,2783,2784],{"class":234}," runtime.",[217,2786,2787],{"class":230},"getCurrentUser",[217,2789,2790],{"class":234},"().id;\n",[217,2792,2793],{"class":219,"line":403},[217,2794,325],{"emptyLinePlaceholder":324},[217,2796,2797],{"class":219,"line":414},[217,2798,2799],{"class":223},"        \u002F\u002F Load the original order\n",[217,2801,2802,2804,2807,2809,2812,2815],{"class":219,"line":420},[217,2803,2728],{"class":282},[217,2805,2806],{"class":234}," orderRecord ",[217,2808,489],{"class":282},[217,2810,2811],{"class":234}," record.",[217,2813,2814],{"class":230},"load",[217,2816,340],{"class":234},[217,2818,2819,2822,2825],{"class":219,"line":425},[217,2820,2821],{"class":234},"            type: record.Type.",[217,2823,2824],{"class":364},"SALES_ORDER",[217,2826,251],{"class":234},[217,2828,2829],{"class":219,"line":442},[217,2830,2831],{"class":234},"            id: orderId\n",[217,2833,2834],{"class":219,"line":453},[217,2835,2836],{"class":234},"        });\n",[217,2838,2839],{"class":219,"line":475},[217,2840,325],{"emptyLinePlaceholder":324},[217,2842,2843],{"class":219,"line":480},[217,2844,2845],{"class":223},"        \u002F\u002F Verify the order belongs to the current customer\n",[217,2847,2848,2850,2853,2855,2858,2861,2863,2866],{"class":219,"line":495},[217,2849,2728],{"class":282},[217,2851,2852],{"class":234}," orderCustomer ",[217,2854,489],{"class":282},[217,2856,2857],{"class":234}," orderRecord.",[217,2859,2860],{"class":230},"getValue",[217,2862,235],{"class":234},[217,2864,2865],{"class":238},"'entity'",[217,2867,472],{"class":234},[217,2869,2870,2873,2875,2878,2881,2883,2886],{"class":219,"line":506},[217,2871,2872],{"class":282},"        if",[217,2874,286],{"class":234},[217,2876,2877],{"class":230},"String",[217,2879,2880],{"class":234},"(orderCustomer) ",[217,2882,1035],{"class":282},[217,2884,2885],{"class":230}," String",[217,2887,2888],{"class":234},"(currentCustomer)) {\n",[217,2890,2891,2894,2897,2899,2901,2903,2905],{"class":219,"line":516},[217,2892,2893],{"class":234},"            context.response.",[217,2895,2896],{"class":230},"write",[217,2898,235],{"class":234},[217,2900,2258],{"class":364},[217,2902,367],{"class":234},[217,2904,2263],{"class":230},[217,2906,340],{"class":234},[217,2908,2909,2912],{"class":219,"line":526},[217,2910,2911],{"class":234},"                error: ",[217,2913,2914],{"class":238},"'Order not found'\n",[217,2916,2917],{"class":219,"line":536},[217,2918,2919],{"class":234},"            }));\n",[217,2921,2922,2924],{"class":219,"line":545},[217,2923,1699],{"class":282},[217,2925,318],{"class":234},[217,2927,2928],{"class":219,"line":551},[217,2929,1708],{"class":234},[217,2931,2932],{"class":219,"line":557},[217,2933,325],{"emptyLinePlaceholder":324},[217,2935,2936,2938,2941,2943,2945,2948,2951,2954],{"class":219,"line":562},[217,2937,2728],{"class":282},[217,2939,2940],{"class":234}," lineCount ",[217,2942,489],{"class":282},[217,2944,2857],{"class":234},[217,2946,2947],{"class":230},"getLineCount",[217,2949,2950],{"class":234},"({ sublistId: ",[217,2952,2953],{"class":238},"'item'",[217,2955,2956],{"class":234}," });\n",[217,2958,2959,2961,2964,2966],{"class":219,"line":579},[217,2960,2728],{"class":282},[217,2962,2963],{"class":234}," addedItems ",[217,2965,489],{"class":282},[217,2967,2968],{"class":234}," [];\n",[217,2970,2971,2973,2976,2978],{"class":219,"line":591},[217,2972,2728],{"class":282},[217,2974,2975],{"class":234}," unavailableItems ",[217,2977,489],{"class":282},[217,2979,2968],{"class":234},[217,2981,2982],{"class":219,"line":607},[217,2983,325],{"emptyLinePlaceholder":324},[217,2985,2986,2989,2991,2994,2997,2999,3002,3005,3008,3011,3014],{"class":219,"line":612},[217,2987,2988],{"class":282},"        for",[217,2990,286],{"class":234},[217,2992,2993],{"class":282},"var",[217,2995,2996],{"class":234}," i ",[217,2998,489],{"class":282},[217,3000,3001],{"class":364}," 0",[217,3003,3004],{"class":234},"; i ",[217,3006,3007],{"class":282},"\u003C",[217,3009,3010],{"class":234}," lineCount; i",[217,3012,3013],{"class":282},"++",[217,3015,309],{"class":234},[217,3017,3018,3020,3023,3025,3027,3030],{"class":219,"line":623},[217,3019,594],{"class":282},[217,3021,3022],{"class":234}," itemId ",[217,3024,489],{"class":282},[217,3026,2857],{"class":234},[217,3028,3029],{"class":230},"getSublistValue",[217,3031,340],{"class":234},[217,3033,3034,3037,3039],{"class":219,"line":649},[217,3035,3036],{"class":234},"                sublistId: ",[217,3038,2953],{"class":238},[217,3040,251],{"class":234},[217,3042,3043,3046,3048],{"class":219,"line":671},[217,3044,3045],{"class":234},"                fieldId: ",[217,3047,2953],{"class":238},[217,3049,251],{"class":234},[217,3051,3052],{"class":219,"line":693},[217,3053,3054],{"class":234},"                line: i\n",[217,3056,3057],{"class":219,"line":715},[217,3058,1078],{"class":234},[217,3060,3061,3063,3066,3068,3070,3072],{"class":219,"line":738},[217,3062,594],{"class":282},[217,3064,3065],{"class":234}," quantity ",[217,3067,489],{"class":282},[217,3069,2857],{"class":234},[217,3071,3029],{"class":230},[217,3073,340],{"class":234},[217,3075,3076,3078,3080],{"class":219,"line":743},[217,3077,3036],{"class":234},[217,3079,2953],{"class":238},[217,3081,251],{"class":234},[217,3083,3084,3086,3089],{"class":219,"line":748},[217,3085,3045],{"class":234},[217,3087,3088],{"class":238},"'quantity'",[217,3090,251],{"class":234},[217,3092,3093],{"class":219,"line":754},[217,3094,3054],{"class":234},[217,3096,3097],{"class":219,"line":767},[217,3098,1078],{"class":234},[217,3100,3101,3103,3106,3108,3110,3112],{"class":219,"line":772},[217,3102,594],{"class":282},[217,3104,3105],{"class":234}," itemName ",[217,3107,489],{"class":282},[217,3109,2857],{"class":234},[217,3111,3029],{"class":230},[217,3113,340],{"class":234},[217,3115,3116,3118,3120],{"class":219,"line":785},[217,3117,3036],{"class":234},[217,3119,2953],{"class":238},[217,3121,251],{"class":234},[217,3123,3124,3126,3129],{"class":219,"line":798},[217,3125,3045],{"class":234},[217,3127,3128],{"class":238},"'item_display'",[217,3130,251],{"class":234},[217,3132,3133],{"class":219,"line":804},[217,3134,3054],{"class":234},[217,3136,3137],{"class":219,"line":816},[217,3138,1078],{"class":234},[217,3140,3141],{"class":219,"line":829},[217,3142,325],{"emptyLinePlaceholder":324},[217,3144,3145],{"class":219,"line":834},[217,3146,3147],{"class":223},"            \u002F\u002F Check availability\n",[217,3149,3150,3152,3155,3157,3160],{"class":219,"line":846},[217,3151,594],{"class":282},[217,3153,3154],{"class":234}," available ",[217,3156,489],{"class":282},[217,3158,3159],{"class":230}," checkItemAvailability",[217,3161,3162],{"class":234},"(itemId, quantity);\n",[217,3164,3165],{"class":219,"line":859},[217,3166,325],{"emptyLinePlaceholder":324},[217,3168,3169,3171,3174,3176,3179],{"class":219,"line":864},[217,3170,775],{"class":282},[217,3172,3173],{"class":234}," (available ",[217,3175,991],{"class":282},[217,3177,3178],{"class":282}," !",[217,3180,3181],{"class":234},"skipUnavailable) {\n",[217,3183,3184,3187,3190],{"class":219,"line":869},[217,3185,3186],{"class":234},"                addedItems.",[217,3188,3189],{"class":230},"push",[217,3191,340],{"class":234},[217,3193,3194],{"class":219,"line":875},[217,3195,3196],{"class":234},"                    internalid: itemId,\n",[217,3198,3199],{"class":219,"line":888},[217,3200,3201],{"class":234},"                    quantity: quantity,\n",[217,3203,3204],{"class":219,"line":894},[217,3205,3206],{"class":234},"                    name: itemName\n",[217,3208,3209],{"class":219,"line":903},[217,3210,3211],{"class":234},"                });\n",[217,3213,3214,3217,3220],{"class":219,"line":919},[217,3215,3216],{"class":234},"            } ",[217,3218,3219],{"class":282},"else",[217,3221,492],{"class":234},[217,3223,3224,3227,3229],{"class":219,"line":925},[217,3225,3226],{"class":234},"                unavailableItems.",[217,3228,3189],{"class":230},[217,3230,340],{"class":234},[217,3232,3233],{"class":219,"line":934},[217,3234,3196],{"class":234},[217,3236,3237],{"class":219,"line":946},[217,3238,3239],{"class":234},"                    name: itemName,\n",[217,3241,3242],{"class":219,"line":966},[217,3243,3244],{"class":234},"                    requestedQty: quantity\n",[217,3246,3247],{"class":219,"line":999},[217,3248,3211],{"class":234},[217,3250,3251],{"class":219,"line":1019},[217,3252,801],{"class":234},[217,3254,3255],{"class":219,"line":1029},[217,3256,1708],{"class":234},[217,3258,3259],{"class":219,"line":1046},[217,3260,325],{"emptyLinePlaceholder":324},[217,3262,3263,3266,3268,3270,3272,3274,3276],{"class":219,"line":1052},[217,3264,3265],{"class":234},"        context.response.",[217,3267,2896],{"class":230},[217,3269,235],{"class":234},[217,3271,2258],{"class":364},[217,3273,367],{"class":234},[217,3275,2263],{"class":230},[217,3277,340],{"class":234},[217,3279,3280],{"class":219,"line":1058},[217,3281,3282],{"class":234},"            addedItems: addedItems,\n",[217,3284,3285],{"class":219,"line":1064},[217,3286,3287],{"class":234},"            unavailableItems: unavailableItems\n",[217,3289,3290],{"class":219,"line":1075},[217,3291,3292],{"class":234},"        }));\n",[217,3294,3295],{"class":219,"line":1081},[217,3296,3297],{"class":234},"    }\n",[217,3299,3300],{"class":219,"line":1086},[217,3301,325],{"emptyLinePlaceholder":324},[217,3303,3304,3306,3308,3310,3313,3315,3318],{"class":219,"line":1091},[217,3305,2713],{"class":282},[217,3307,3159],{"class":230},[217,3309,235],{"class":234},[217,3311,3312],{"class":289},"itemId",[217,3314,293],{"class":234},[217,3316,3317],{"class":289},"requestedQty",[217,3319,309],{"class":234},[217,3321,3322,3325],{"class":219,"line":1107},[217,3323,3324],{"class":282},"        try",[217,3326,492],{"class":234},[217,3328,3329,3331,3334,3336,3339,3342],{"class":219,"line":1116},[217,3330,594],{"class":282},[217,3332,3333],{"class":234}," itemLookup ",[217,3335,489],{"class":282},[217,3337,3338],{"class":234}," search.",[217,3340,3341],{"class":230},"lookupFields",[217,3343,340],{"class":234},[217,3345,3346,3349,3352],{"class":219,"line":1137},[217,3347,3348],{"class":234},"                type: search.Type.",[217,3350,3351],{"class":364},"ITEM",[217,3353,251],{"class":234},[217,3355,3356],{"class":219,"line":1142},[217,3357,3358],{"class":234},"                id: itemId,\n",[217,3360,3361,3364,3367,3369,3372],{"class":219,"line":1162},[217,3362,3363],{"class":234},"                columns: [",[217,3365,3366],{"class":238},"'isinactive'",[217,3368,293],{"class":234},[217,3370,3371],{"class":238},"'quantityavailable'",[217,3373,3374],{"class":234},"]\n",[217,3376,3377],{"class":219,"line":1174},[217,3378,1078],{"class":234},[217,3380,3381],{"class":219,"line":1190},[217,3382,325],{"emptyLinePlaceholder":324},[217,3384,3385,3387,3390,3392,3395],{"class":219,"line":1204},[217,3386,775],{"class":282},[217,3388,3389],{"class":234}," (itemLookup.isinactive) ",[217,3391,1568],{"class":282},[217,3393,3394],{"class":364}," false",[217,3396,318],{"class":234},[217,3398,3399],{"class":219,"line":1223},[217,3400,325],{"emptyLinePlaceholder":324},[217,3402,3403,3405,3407,3409,3412],{"class":219,"line":1238},[217,3404,594],{"class":282},[217,3406,3154],{"class":234},[217,3408,489],{"class":282},[217,3410,3411],{"class":230}," parseFloat",[217,3413,943],{"class":234},[217,3415,3416,3419,3421],{"class":219,"line":1253},[217,3417,3418],{"class":234},"                itemLookup.quantityavailable ",[217,3420,991],{"class":282},[217,3422,3423],{"class":364}," 0\n",[217,3425,3426],{"class":219,"line":1281},[217,3427,1330],{"class":234},[217,3429,3430,3432,3434,3437],{"class":219,"line":1286},[217,3431,1699],{"class":282},[217,3433,3154],{"class":234},[217,3435,3436],{"class":282},">=",[217,3438,3439],{"class":234}," requestedQty;\n",[217,3441,3442,3445,3448],{"class":219,"line":1291},[217,3443,3444],{"class":234},"        } ",[217,3446,3447],{"class":282},"catch",[217,3449,3450],{"class":234}," (e) {\n",[217,3452,3453,3455,3457],{"class":219,"line":1309},[217,3454,1699],{"class":282},[217,3456,3394],{"class":364},[217,3458,318],{"class":234},[217,3460,3461],{"class":219,"line":1315},[217,3462,1708],{"class":234},[217,3464,3465],{"class":219,"line":1327},[217,3466,3297],{"class":234},[217,3468,3469],{"class":219,"line":1333},[217,3470,325],{"emptyLinePlaceholder":324},[217,3472,3473,3475],{"class":219,"line":1356},[217,3474,331],{"class":282},[217,3476,3477],{"class":234}," { onRequest: onRequest };\n",[217,3479,3480],{"class":219,"line":1375},[217,3481,1720],{"class":234},[192,3483,2036],{"id":3484},"why-it-matters-1",[15,3486,3487],{},"Reordering is the single highest-value feature for B2B portals. In our experience, stores that implement one-click reorder see MyAccount usage increase by 40–60% within the first quarter. It's the feature that converts \"I'll just email my rep\" into \"I'll do it myself.\"",[29,3489],{},[32,3491,64],{"id":3492},"feature-3-quote-request-and-management",[15,3494,3495,3497,3498,3500,3501,190],{},[18,3496,181],{}," Medium–High | ",[18,3499,185],{}," 3–5 weeks | ",[18,3502,189],{},[192,3504,195],{"id":3505},"the-problem-2",[15,3507,3508],{},"B2B pricing is rarely fixed. Large orders, new products, and custom configurations all need quotes. Without a quote workflow in MyAccount, the process goes: customer emails sales rep → rep creates quote in NetSuite → emails PDF back → customer reviews → emails approval → rep converts to sales order. Days of back-and-forth for every quote.",[192,3510,202],{"id":3511},"the-solution-2",[15,3513,3514],{},"Build a quote request and management module that connects MyAccount directly to NetSuite's Estimate (Quote) record.",[207,3516,3518],{"className":209,"code":3517,"language":211,"meta":212,"style":212},"\u002F\u002F Quote Request View\ndefine('Stenbase.B2B.QuoteRequest.View', [\n    'Backbone',\n    'stenbase_b2b_quote_request.tpl',\n    'Stenbase.B2B.QuoteRequest.Model',\n    'jQuery'\n], function (Backbone, template, QuoteRequestModel, jQuery) {\n    'use strict';\n\n    return Backbone.View.extend({\n        template: template,\n\n        events: {\n            'submit [data-action=\"submit-quote\"]': 'submitQuote',\n            'click [data-action=\"add-line\"]': 'addLineItem',\n            'click [data-action=\"remove-line\"]': 'removeLineItem',\n            'click [data-action=\"add-from-cart\"]': 'populateFromCart'\n        },\n\n        initialize: function (options) {\n            this.model = new QuoteRequestModel();\n            this.lineItems = [];\n        },\n\n        submitQuote: function (e) {\n            e.preventDefault();\n            var self = this;\n\n            var quoteData = {\n                lines: this.collectLineItems(),\n                message: this.$('[name=\"quote-message\"]').val(),\n                neededBy: this.$('[name=\"needed-by\"]').val(),\n                poNumber: this.$('[name=\"po-number\"]').val()\n            };\n\n            if (!quoteData.lines.length) {\n                this.showError('Please add at least one item.');\n                return;\n            }\n\n            this.$('[data-action=\"submit-quote\"]')\n                .prop('disabled', true)\n                .text('Submitting...');\n\n            this.model.save(quoteData)\n                .done(function (response) {\n                    \u002F\u002F Redirect to quote detail\n                    Backbone.history.navigate(\n                        'quotes\u002F' + response.quoteId,\n                        { trigger: true }\n                    );\n                })\n                .fail(function () {\n                    self.showError(\n                        'Unable to submit quote request. ' +\n                        'Please try again.'\n                    );\n                    self.$('[data-action=\"submit-quote\"]')\n                        .prop('disabled', false)\n                        .text('Submit Quote Request');\n                });\n        },\n\n        populateFromCart: function (e) {\n            e.preventDefault();\n            var self = this;\n            var cart = SC.Application('MyAccount')\n                .getComponent('Cart');\n\n            if (cart) {\n                cart.getLines().done(function (lines) {\n                    lines.forEach(function (line) {\n                        self.addLine({\n                            itemId: line.item.internalid,\n                            itemName: line.item.displayname\n                                || line.item.itemid,\n                            quantity: line.quantity,\n                            sku: line.item.itemid\n                        });\n                    });\n                    self.render();\n                });\n            }\n        },\n\n        collectLineItems: function () {\n            var lines = [];\n            this.$('.quote-line-item').each(function () {\n                var $row = jQuery(this);\n                lines.push({\n                    itemId: $row.find('[name=\"item-id\"]').val(),\n                    quantity: parseInt(\n                        $row.find('[name=\"quantity\"]').val(), 10\n                    ),\n                    notes: $row.find('[name=\"line-notes\"]').val()\n                });\n            });\n            return lines;\n        }\n    });\n});\n",[214,3519,3520,3525,3536,3543,3550,3557,3561,3587,3593,3597,3608,3612,3616,3621,3633,3645,3657,3667,3671,3675,3689,3705,3716,3720,3724,3739,3747,3759,3763,3774,3788,3810,3832,3852,3856,3860,3876,3892,3899,3903,3907,3923,3942,3956,3960,3973,3989,3994,4004,4015,4024,4028,4032,4044,4052,4059,4064,4068,4080,4098,4111,4115,4119,4123,4138,4146,4158,4179,4193,4197,4204,4227,4245,4255,4260,4265,4273,4278,4283,4288,4293,4301,4305,4309,4313,4317,4328,4339,4362,4381,4390,4409,4419,4441,4446,4464,4468,4472,4479,4483,4487],{"__ignoreMap":212},[217,3521,3522],{"class":219,"line":220},[217,3523,3524],{"class":223},"\u002F\u002F Quote Request View\n",[217,3526,3527,3529,3531,3534],{"class":219,"line":227},[217,3528,231],{"class":230},[217,3530,235],{"class":234},[217,3532,3533],{"class":238},"'Stenbase.B2B.QuoteRequest.View'",[217,3535,242],{"class":234},[217,3537,3538,3541],{"class":219,"line":245},[217,3539,3540],{"class":238},"    'Backbone'",[217,3542,251],{"class":234},[217,3544,3545,3548],{"class":219,"line":254},[217,3546,3547],{"class":238},"    'stenbase_b2b_quote_request.tpl'",[217,3549,251],{"class":234},[217,3551,3552,3555],{"class":219,"line":262},[217,3553,3554],{"class":238},"    'Stenbase.B2B.QuoteRequest.Model'",[217,3556,251],{"class":234},[217,3558,3559],{"class":219,"line":270},[217,3560,273],{"class":238},[217,3562,3563,3565,3567,3569,3572,3574,3576,3578,3581,3583,3585],{"class":219,"line":276},[217,3564,279],{"class":234},[217,3566,283],{"class":282},[217,3568,286],{"class":234},[217,3570,3571],{"class":289},"Backbone",[217,3573,293],{"class":234},[217,3575,296],{"class":289},[217,3577,293],{"class":234},[217,3579,3580],{"class":289},"QuoteRequestModel",[217,3582,293],{"class":234},[217,3584,306],{"class":289},[217,3586,309],{"class":234},[217,3588,3589,3591],{"class":219,"line":312},[217,3590,315],{"class":238},[217,3592,318],{"class":234},[217,3594,3595],{"class":219,"line":321},[217,3596,325],{"emptyLinePlaceholder":324},[217,3598,3599,3601,3604,3606],{"class":219,"line":328},[217,3600,331],{"class":282},[217,3602,3603],{"class":234}," Backbone.View.",[217,3605,337],{"class":230},[217,3607,340],{"class":234},[217,3609,3610],{"class":219,"line":343},[217,3611,346],{"class":234},[217,3613,3614],{"class":219,"line":349},[217,3615,325],{"emptyLinePlaceholder":324},[217,3617,3618],{"class":219,"line":354},[217,3619,3620],{"class":234},"        events: {\n",[217,3622,3623,3626,3628,3631],{"class":219,"line":376},[217,3624,3625],{"class":238},"            'submit [data-action=\"submit-quote\"]'",[217,3627,382],{"class":234},[217,3629,3630],{"class":238},"'submitQuote'",[217,3632,251],{"class":234},[217,3634,3635,3638,3640,3643],{"class":219,"line":390},[217,3636,3637],{"class":238},"            'click [data-action=\"add-line\"]'",[217,3639,382],{"class":234},[217,3641,3642],{"class":238},"'addLineItem'",[217,3644,251],{"class":234},[217,3646,3647,3650,3652,3655],{"class":219,"line":403},[217,3648,3649],{"class":238},"            'click [data-action=\"remove-line\"]'",[217,3651,382],{"class":234},[217,3653,3654],{"class":238},"'removeLineItem'",[217,3656,251],{"class":234},[217,3658,3659,3662,3664],{"class":219,"line":414},[217,3660,3661],{"class":238},"            'click [data-action=\"add-from-cart\"]'",[217,3663,382],{"class":234},[217,3665,3666],{"class":238},"'populateFromCart'\n",[217,3668,3669],{"class":219,"line":420},[217,3670,554],{"class":234},[217,3672,3673],{"class":219,"line":425},[217,3674,325],{"emptyLinePlaceholder":324},[217,3676,3677,3679,3681,3683,3685,3687],{"class":219,"line":442},[217,3678,428],{"class":230},[217,3680,382],{"class":234},[217,3682,283],{"class":282},[217,3684,286],{"class":234},[217,3686,437],{"class":289},[217,3688,309],{"class":234},[217,3690,3691,3693,3696,3698,3700,3703],{"class":219,"line":453},[217,3692,483],{"class":364},[217,3694,3695],{"class":234},".model ",[217,3697,489],{"class":282},[217,3699,1301],{"class":282},[217,3701,3702],{"class":230}," QuoteRequestModel",[217,3704,588],{"class":234},[217,3706,3707,3709,3712,3714],{"class":219,"line":475},[217,3708,483],{"class":364},[217,3710,3711],{"class":234},".lineItems ",[217,3713,489],{"class":282},[217,3715,2968],{"class":234},[217,3717,3718],{"class":219,"line":480},[217,3719,554],{"class":234},[217,3721,3722],{"class":219,"line":495},[217,3723,325],{"emptyLinePlaceholder":324},[217,3725,3726,3729,3731,3733,3735,3737],{"class":219,"line":506},[217,3727,3728],{"class":230},"        submitQuote",[217,3730,382],{"class":234},[217,3732,283],{"class":282},[217,3734,286],{"class":234},[217,3736,574],{"class":289},[217,3738,309],{"class":234},[217,3740,3741,3743,3745],{"class":219,"line":516},[217,3742,582],{"class":234},[217,3744,585],{"class":230},[217,3746,588],{"class":234},[217,3748,3749,3751,3753,3755,3757],{"class":219,"line":526},[217,3750,594],{"class":282},[217,3752,597],{"class":234},[217,3754,489],{"class":282},[217,3756,602],{"class":364},[217,3758,318],{"class":234},[217,3760,3761],{"class":219,"line":536},[217,3762,325],{"emptyLinePlaceholder":324},[217,3764,3765,3767,3770,3772],{"class":219,"line":545},[217,3766,594],{"class":282},[217,3768,3769],{"class":234}," quoteData ",[217,3771,489],{"class":282},[217,3773,492],{"class":234},[217,3775,3776,3779,3781,3783,3786],{"class":219,"line":551},[217,3777,3778],{"class":234},"                lines: ",[217,3780,464],{"class":364},[217,3782,367],{"class":234},[217,3784,3785],{"class":230},"collectLineItems",[217,3787,646],{"class":234},[217,3789,3790,3793,3795,3797,3799,3801,3804,3806,3808],{"class":219,"line":557},[217,3791,3792],{"class":234},"                message: ",[217,3794,464],{"class":364},[217,3796,367],{"class":234},[217,3798,632],{"class":230},[217,3800,235],{"class":234},[217,3802,3803],{"class":238},"'[name=\"quote-message\"]'",[217,3805,640],{"class":234},[217,3807,643],{"class":230},[217,3809,646],{"class":234},[217,3811,3812,3815,3817,3819,3821,3823,3826,3828,3830],{"class":219,"line":562},[217,3813,3814],{"class":234},"                neededBy: ",[217,3816,464],{"class":364},[217,3818,367],{"class":234},[217,3820,632],{"class":230},[217,3822,235],{"class":234},[217,3824,3825],{"class":238},"'[name=\"needed-by\"]'",[217,3827,640],{"class":234},[217,3829,643],{"class":230},[217,3831,646],{"class":234},[217,3833,3834,3836,3838,3840,3842,3844,3846,3848,3850],{"class":219,"line":579},[217,3835,529],{"class":234},[217,3837,464],{"class":364},[217,3839,367],{"class":234},[217,3841,632],{"class":230},[217,3843,235],{"class":234},[217,3845,706],{"class":238},[217,3847,640],{"class":234},[217,3849,643],{"class":230},[217,3851,735],{"class":234},[217,3853,3854],{"class":219,"line":591},[217,3855,548],{"class":234},[217,3857,3858],{"class":219,"line":607},[217,3859,325],{"emptyLinePlaceholder":324},[217,3861,3862,3864,3866,3869,3872,3874],{"class":219,"line":612},[217,3863,775],{"class":282},[217,3865,286],{"class":234},[217,3867,3868],{"class":282},"!",[217,3870,3871],{"class":234},"quoteData.lines.",[217,3873,2318],{"class":364},[217,3875,309],{"class":234},[217,3877,3878,3880,3882,3885,3887,3890],{"class":219,"line":623},[217,3879,1548],{"class":364},[217,3881,367],{"class":234},[217,3883,3884],{"class":230},"showError",[217,3886,235],{"class":234},[217,3888,3889],{"class":238},"'Please add at least one item.'",[217,3891,472],{"class":234},[217,3893,3894,3897],{"class":219,"line":649},[217,3895,3896],{"class":282},"                return",[217,3898,318],{"class":234},[217,3900,3901],{"class":219,"line":671},[217,3902,801],{"class":234},[217,3904,3905],{"class":219,"line":693},[217,3906,325],{"emptyLinePlaceholder":324},[217,3908,3909,3911,3913,3915,3917,3920],{"class":219,"line":715},[217,3910,483],{"class":364},[217,3912,367],{"class":234},[217,3914,632],{"class":230},[217,3916,235],{"class":234},[217,3918,3919],{"class":238},"'[data-action=\"submit-quote\"]'",[217,3921,3922],{"class":234},")\n",[217,3924,3925,3927,3930,3932,3935,3937,3940],{"class":219,"line":738},[217,3926,1478],{"class":234},[217,3928,3929],{"class":230},"prop",[217,3931,235],{"class":234},[217,3933,3934],{"class":238},"'disabled'",[217,3936,293],{"class":234},[217,3938,3939],{"class":364},"true",[217,3941,3922],{"class":234},[217,3943,3944,3946,3949,3951,3954],{"class":219,"line":743},[217,3945,1478],{"class":234},[217,3947,3948],{"class":230},"text",[217,3950,235],{"class":234},[217,3952,3953],{"class":238},"'Submitting...'",[217,3955,472],{"class":234},[217,3957,3958],{"class":219,"line":748},[217,3959,325],{"emptyLinePlaceholder":324},[217,3961,3962,3964,3967,3970],{"class":219,"line":754},[217,3963,483],{"class":364},[217,3965,3966],{"class":234},".model.",[217,3968,3969],{"class":230},"save",[217,3971,3972],{"class":234},"(quoteData)\n",[217,3974,3975,3977,3979,3981,3983,3985,3987],{"class":219,"line":767},[217,3976,1478],{"class":234},[217,3978,909],{"class":230},[217,3980,235],{"class":234},[217,3982,283],{"class":282},[217,3984,286],{"class":234},[217,3986,2300],{"class":289},[217,3988,309],{"class":234},[217,3990,3991],{"class":219,"line":772},[217,3992,3993],{"class":223},"                    \u002F\u002F Redirect to quote detail\n",[217,3995,3996,3999,4002],{"class":219,"line":785},[217,3997,3998],{"class":234},"                    Backbone.history.",[217,4000,4001],{"class":230},"navigate",[217,4003,943],{"class":234},[217,4005,4006,4009,4012],{"class":219,"line":798},[217,4007,4008],{"class":238},"                        'quotes\u002F'",[217,4010,4011],{"class":282}," +",[217,4013,4014],{"class":234}," response.quoteId,\n",[217,4016,4017,4020,4022],{"class":219,"line":804},[217,4018,4019],{"class":234},"                        { trigger: ",[217,4021,3939],{"class":364},[217,4023,1324],{"class":234},[217,4025,4026],{"class":219,"line":816},[217,4027,1055],{"class":234},[217,4029,4030],{"class":219,"line":829},[217,4031,2285],{"class":234},[217,4033,4034,4036,4038,4040,4042],{"class":219,"line":834},[217,4035,1478],{"class":234},[217,4037,2459],{"class":230},[217,4039,235],{"class":234},[217,4041,283],{"class":282},[217,4043,916],{"class":234},[217,4045,4046,4048,4050],{"class":219,"line":846},[217,4047,2437],{"class":234},[217,4049,3884],{"class":230},[217,4051,943],{"class":234},[217,4053,4054,4057],{"class":219,"line":859},[217,4055,4056],{"class":238},"                        'Unable to submit quote request. '",[217,4058,1386],{"class":282},[217,4060,4061],{"class":219,"line":864},[217,4062,4063],{"class":238},"                        'Please try again.'\n",[217,4065,4066],{"class":219,"line":869},[217,4067,1055],{"class":234},[217,4069,4070,4072,4074,4076,4078],{"class":219,"line":875},[217,4071,2437],{"class":234},[217,4073,632],{"class":230},[217,4075,235],{"class":234},[217,4077,3919],{"class":238},[217,4079,3922],{"class":234},[217,4081,4082,4085,4087,4089,4091,4093,4096],{"class":219,"line":888},[217,4083,4084],{"class":234},"                        .",[217,4086,3929],{"class":230},[217,4088,235],{"class":234},[217,4090,3934],{"class":238},[217,4092,293],{"class":234},[217,4094,4095],{"class":364},"false",[217,4097,3922],{"class":234},[217,4099,4100,4102,4104,4106,4109],{"class":219,"line":894},[217,4101,4084],{"class":234},[217,4103,3948],{"class":230},[217,4105,235],{"class":234},[217,4107,4108],{"class":238},"'Submit Quote Request'",[217,4110,472],{"class":234},[217,4112,4113],{"class":219,"line":903},[217,4114,3211],{"class":234},[217,4116,4117],{"class":219,"line":919},[217,4118,554],{"class":234},[217,4120,4121],{"class":219,"line":925},[217,4122,325],{"emptyLinePlaceholder":324},[217,4124,4125,4128,4130,4132,4134,4136],{"class":219,"line":934},[217,4126,4127],{"class":230},"        populateFromCart",[217,4129,382],{"class":234},[217,4131,283],{"class":282},[217,4133,286],{"class":234},[217,4135,574],{"class":289},[217,4137,309],{"class":234},[217,4139,4140,4142,4144],{"class":219,"line":946},[217,4141,582],{"class":234},[217,4143,585],{"class":230},[217,4145,588],{"class":234},[217,4147,4148,4150,4152,4154,4156],{"class":219,"line":966},[217,4149,594],{"class":282},[217,4151,597],{"class":234},[217,4153,489],{"class":282},[217,4155,602],{"class":364},[217,4157,318],{"class":234},[217,4159,4160,4162,4165,4167,4169,4171,4173,4175,4177],{"class":219,"line":999},[217,4161,594],{"class":282},[217,4163,4164],{"class":234}," cart ",[217,4166,489],{"class":282},[217,4168,2547],{"class":364},[217,4170,367],{"class":234},[217,4172,2552],{"class":230},[217,4174,235],{"class":234},[217,4176,2557],{"class":238},[217,4178,3922],{"class":234},[217,4180,4181,4183,4186,4188,4191],{"class":219,"line":1019},[217,4182,1478],{"class":234},[217,4184,4185],{"class":230},"getComponent",[217,4187,235],{"class":234},[217,4189,4190],{"class":238},"'Cart'",[217,4192,472],{"class":234},[217,4194,4195],{"class":219,"line":1029},[217,4196,325],{"emptyLinePlaceholder":324},[217,4198,4199,4201],{"class":219,"line":1046},[217,4200,775],{"class":282},[217,4202,4203],{"class":234}," (cart) {\n",[217,4205,4206,4209,4212,4214,4216,4218,4220,4222,4225],{"class":219,"line":1052},[217,4207,4208],{"class":234},"                cart.",[217,4210,4211],{"class":230},"getLines",[217,4213,1011],{"class":234},[217,4215,909],{"class":230},[217,4217,235],{"class":234},[217,4219,283],{"class":282},[217,4221,286],{"class":234},[217,4223,4224],{"class":289},"lines",[217,4226,309],{"class":234},[217,4228,4229,4232,4235,4237,4239,4241,4243],{"class":219,"line":1058},[217,4230,4231],{"class":234},"                    lines.",[217,4233,4234],{"class":230},"forEach",[217,4236,235],{"class":234},[217,4238,283],{"class":282},[217,4240,286],{"class":234},[217,4242,219],{"class":289},[217,4244,309],{"class":234},[217,4246,4247,4250,4253],{"class":219,"line":1064},[217,4248,4249],{"class":234},"                        self.",[217,4251,4252],{"class":230},"addLine",[217,4254,340],{"class":234},[217,4256,4257],{"class":219,"line":1075},[217,4258,4259],{"class":234},"                            itemId: line.item.internalid,\n",[217,4261,4262],{"class":219,"line":1081},[217,4263,4264],{"class":234},"                            itemName: line.item.displayname\n",[217,4266,4267,4270],{"class":219,"line":1086},[217,4268,4269],{"class":282},"                                ||",[217,4271,4272],{"class":234}," line.item.itemid,\n",[217,4274,4275],{"class":219,"line":1091},[217,4276,4277],{"class":234},"                            quantity: line.quantity,\n",[217,4279,4280],{"class":219,"line":1107},[217,4281,4282],{"class":234},"                            sku: line.item.itemid\n",[217,4284,4285],{"class":219,"line":1116},[217,4286,4287],{"class":234},"                        });\n",[217,4289,4290],{"class":219,"line":1137},[217,4291,4292],{"class":234},"                    });\n",[217,4294,4295,4297,4299],{"class":219,"line":1142},[217,4296,2437],{"class":234},[217,4298,1070],{"class":230},[217,4300,588],{"class":234},[217,4302,4303],{"class":219,"line":1162},[217,4304,3211],{"class":234},[217,4306,4307],{"class":219,"line":1174},[217,4308,801],{"class":234},[217,4310,4311],{"class":219,"line":1190},[217,4312,554],{"class":234},[217,4314,4315],{"class":219,"line":1204},[217,4316,325],{"emptyLinePlaceholder":324},[217,4318,4319,4322,4324,4326],{"class":219,"line":1223},[217,4320,4321],{"class":230},"        collectLineItems",[217,4323,382],{"class":234},[217,4325,283],{"class":282},[217,4327,916],{"class":234},[217,4329,4330,4332,4335,4337],{"class":219,"line":1238},[217,4331,594],{"class":282},[217,4333,4334],{"class":234}," lines ",[217,4336,489],{"class":282},[217,4338,2968],{"class":234},[217,4340,4341,4343,4345,4347,4349,4352,4354,4356,4358,4360],{"class":219,"line":1253},[217,4342,483],{"class":364},[217,4344,367],{"class":234},[217,4346,632],{"class":230},[217,4348,235],{"class":234},[217,4350,4351],{"class":238},"'.quote-line-item'",[217,4353,640],{"class":234},[217,4355,1149],{"class":230},[217,4357,235],{"class":234},[217,4359,283],{"class":282},[217,4361,916],{"class":234},[217,4363,4364,4367,4370,4372,4375,4377,4379],{"class":219,"line":1281},[217,4365,4366],{"class":282},"                var",[217,4368,4369],{"class":234}," $row ",[217,4371,489],{"class":282},[217,4373,4374],{"class":230}," jQuery",[217,4376,235],{"class":234},[217,4378,464],{"class":364},[217,4380,472],{"class":234},[217,4382,4383,4386,4388],{"class":219,"line":1286},[217,4384,4385],{"class":234},"                lines.",[217,4387,3189],{"class":230},[217,4389,340],{"class":234},[217,4391,4392,4395,4398,4400,4403,4405,4407],{"class":219,"line":1291},[217,4393,4394],{"class":234},"                    itemId: $row.",[217,4396,4397],{"class":230},"find",[217,4399,235],{"class":234},[217,4401,4402],{"class":238},"'[name=\"item-id\"]'",[217,4404,640],{"class":234},[217,4406,643],{"class":230},[217,4408,646],{"class":234},[217,4410,4411,4414,4417],{"class":219,"line":1309},[217,4412,4413],{"class":234},"                    quantity: ",[217,4415,4416],{"class":230},"parseInt",[217,4418,943],{"class":234},[217,4420,4421,4424,4426,4428,4431,4433,4435,4438],{"class":219,"line":1315},[217,4422,4423],{"class":234},"                        $row.",[217,4425,4397],{"class":230},[217,4427,235],{"class":234},[217,4429,4430],{"class":238},"'[name=\"quantity\"]'",[217,4432,640],{"class":234},[217,4434,643],{"class":230},[217,4436,4437],{"class":234},"(), ",[217,4439,4440],{"class":364},"10\n",[217,4442,4443],{"class":219,"line":1327},[217,4444,4445],{"class":234},"                    ),\n",[217,4447,4448,4451,4453,4455,4458,4460,4462],{"class":219,"line":1333},[217,4449,4450],{"class":234},"                    notes: $row.",[217,4452,4397],{"class":230},[217,4454,235],{"class":234},[217,4456,4457],{"class":238},"'[name=\"line-notes\"]'",[217,4459,640],{"class":234},[217,4461,643],{"class":230},[217,4463,735],{"class":234},[217,4465,4466],{"class":219,"line":1356},[217,4467,3211],{"class":234},[217,4469,4470],{"class":219,"line":1375},[217,4471,1078],{"class":234},[217,4473,4474,4476],{"class":219,"line":1389},[217,4475,1699],{"class":282},[217,4477,4478],{"class":234}," lines;\n",[217,4480,4481],{"class":219,"line":1429},[217,4482,1708],{"class":234},[217,4484,4485],{"class":219,"line":1440},[217,4486,1714],{"class":234},[217,4488,4489],{"class":219,"line":1445},[217,4490,1720],{"class":234},[15,4492,4493],{},"The quote management dashboard gives buyers visibility into all their pending, approved, and expired quotes:",[207,4495,4497],{"className":1726,"code":4496,"language":1728,"meta":212,"style":212},"{{!-- Quote management dashboard --}}\n\u003Cdiv class=\"b2b-quotes-dashboard\">\n    \u003Cdiv class=\"quotes-header\">\n        \u003Ch2>{{translate 'My Quotes'}}\u003C\u002Fh2>\n        \u003Ca href=\"\u002Fquotes\u002Fnew\"\n           class=\"button-primary\"\n           data-touchpoint=\"customercenter\"\n           data-hashtag=\"#quotes\u002Fnew\">\n            {{translate 'Request New Quote'}}\n        \u003C\u002Fa>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"quotes-tabs\">\n        \u003Cbutton class=\"tab {{#ifEquals activeTab 'pending'}}active{{\u002FifEquals}}\"\n                data-action=\"filter-tab\" data-tab=\"pending\">\n            {{translate 'Pending'}}\n            {{#if pendingCount}}\n                \u003Cspan class=\"badge\">{{pendingCount}}\u003C\u002Fspan>\n            {{\u002Fif}}\n        \u003C\u002Fbutton>\n        \u003Cbutton class=\"tab {{#ifEquals activeTab 'approved'}}active{{\u002FifEquals}}\"\n                data-action=\"filter-tab\" data-tab=\"approved\">\n            {{translate 'Ready to Order'}}\n            {{#if approvedCount}}\n                \u003Cspan class=\"badge\">{{approvedCount}}\u003C\u002Fspan>\n            {{\u002Fif}}\n        \u003C\u002Fbutton>\n        \u003Cbutton class=\"tab {{#ifEquals activeTab 'expired'}}active{{\u002FifEquals}}\"\n                data-action=\"filter-tab\" data-tab=\"expired\">\n            {{translate 'Expired'}}\n        \u003C\u002Fbutton>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"quotes-list\">\n        {{#each quotes}}\n        \u003Cdiv class=\"quote-card\" data-id=\"{{internalid}}\">\n            \u003Cdiv class=\"quote-card-header\">\n                \u003Cspan class=\"quote-number\">\n                    Quote #{{tranid}}\n                \u003C\u002Fspan>\n                \u003Cspan class=\"quote-status status-{{statusCode}}\">\n                    {{statusLabel}}\n                \u003C\u002Fspan>\n            \u003C\u002Fdiv>\n            \u003Cdiv class=\"quote-card-body\">\n                \u003Cdiv class=\"quote-detail\">\n                    \u003Cspan class=\"label\">{{translate 'Date'}}\u003C\u002Fspan>\n                    \u003Cspan>{{trandate}}\u003C\u002Fspan>\n                \u003C\u002Fdiv>\n                \u003Cdiv class=\"quote-detail\">\n                    \u003Cspan class=\"label\">{{translate 'Items'}}\u003C\u002Fspan>\n                    \u003Cspan>{{lineCount}}\u003C\u002Fspan>\n                \u003C\u002Fdiv>\n                \u003Cdiv class=\"quote-detail\">\n                    \u003Cspan class=\"label\">{{translate 'Total'}}\u003C\u002Fspan>\n                    \u003Cspan class=\"quote-total\">\n                        {{formatCurrency total}}\n                    \u003C\u002Fspan>\n                \u003C\u002Fdiv>\n                {{#if expirationDate}}\n                \u003Cdiv class=\"quote-detail\">\n                    \u003Cspan class=\"label\">{{translate 'Expires'}}\u003C\u002Fspan>\n                    \u003Cspan class=\"{{#if isExpiringSoon}}text-warning{{\u002Fif}}\">\n                        {{expirationDate}}\n                    \u003C\u002Fspan>\n                \u003C\u002Fdiv>\n                {{\u002Fif}}\n            \u003C\u002Fdiv>\n            \u003Cdiv class=\"quote-card-actions\">\n                \u003Ca href=\"\u002Fquotes\u002F{{internalid}}\"\n                   data-touchpoint=\"customercenter\"\n                   data-hashtag=\"#quotes\u002F{{internalid}}\">\n                    {{translate 'View Details'}}\n                \u003C\u002Fa>\n                {{#if canConvertToOrder}}\n                \u003Cbutton class=\"button-primary button-small\"\n                        data-action=\"convert-to-order\"\n                        data-quote-id=\"{{internalid}}\">\n                    {{translate 'Place Order'}}\n                \u003C\u002Fbutton>\n                {{\u002Fif}}\n            \u003C\u002Fdiv>\n        \u003C\u002Fdiv>\n        {{else}}\n        \u003Cdiv class=\"empty-state\">\n            \u003Cp>{{translate 'No quotes found.'}}\u003C\u002Fp>\n        \u003C\u002Fdiv>\n        {{\u002Feach}}\n    \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n",[214,4498,4499,4504,4509,4514,4519,4524,4529,4534,4539,4544,4548,4552,4556,4561,4566,4571,4576,4581,4586,4591,4596,4601,4606,4611,4616,4621,4625,4629,4634,4639,4644,4648,4652,4656,4661,4666,4671,4676,4681,4686,4691,4696,4701,4705,4709,4714,4719,4724,4729,4734,4738,4743,4748,4752,4756,4761,4766,4771,4776,4780,4785,4789,4794,4799,4804,4808,4812,4816,4820,4825,4830,4835,4840,4845,4849,4854,4859,4864,4869,4874,4878,4882,4886,4890,4895,4900,4905,4909,4914,4918],{"__ignoreMap":212},[217,4500,4501],{"class":219,"line":220},[217,4502,4503],{},"{{!-- Quote management dashboard --}}\n",[217,4505,4506],{"class":219,"line":227},[217,4507,4508],{},"\u003Cdiv class=\"b2b-quotes-dashboard\">\n",[217,4510,4511],{"class":219,"line":245},[217,4512,4513],{},"    \u003Cdiv class=\"quotes-header\">\n",[217,4515,4516],{"class":219,"line":254},[217,4517,4518],{},"        \u003Ch2>{{translate 'My Quotes'}}\u003C\u002Fh2>\n",[217,4520,4521],{"class":219,"line":262},[217,4522,4523],{},"        \u003Ca href=\"\u002Fquotes\u002Fnew\"\n",[217,4525,4526],{"class":219,"line":270},[217,4527,4528],{},"           class=\"button-primary\"\n",[217,4530,4531],{"class":219,"line":276},[217,4532,4533],{},"           data-touchpoint=\"customercenter\"\n",[217,4535,4536],{"class":219,"line":312},[217,4537,4538],{},"           data-hashtag=\"#quotes\u002Fnew\">\n",[217,4540,4541],{"class":219,"line":321},[217,4542,4543],{},"            {{translate 'Request New Quote'}}\n",[217,4545,4546],{"class":219,"line":328},[217,4547,2022],{},[217,4549,4550],{"class":219,"line":343},[217,4551,2027],{},[217,4553,4554],{"class":219,"line":349},[217,4555,325],{"emptyLinePlaceholder":324},[217,4557,4558],{"class":219,"line":354},[217,4559,4560],{},"    \u003Cdiv class=\"quotes-tabs\">\n",[217,4562,4563],{"class":219,"line":376},[217,4564,4565],{},"        \u003Cbutton class=\"tab {{#ifEquals activeTab 'pending'}}active{{\u002FifEquals}}\"\n",[217,4567,4568],{"class":219,"line":390},[217,4569,4570],{},"                data-action=\"filter-tab\" data-tab=\"pending\">\n",[217,4572,4573],{"class":219,"line":403},[217,4574,4575],{},"            {{translate 'Pending'}}\n",[217,4577,4578],{"class":219,"line":414},[217,4579,4580],{},"            {{#if pendingCount}}\n",[217,4582,4583],{"class":219,"line":420},[217,4584,4585],{},"                \u003Cspan class=\"badge\">{{pendingCount}}\u003C\u002Fspan>\n",[217,4587,4588],{"class":219,"line":425},[217,4589,4590],{},"            {{\u002Fif}}\n",[217,4592,4593],{"class":219,"line":442},[217,4594,4595],{},"        \u003C\u002Fbutton>\n",[217,4597,4598],{"class":219,"line":453},[217,4599,4600],{},"        \u003Cbutton class=\"tab {{#ifEquals activeTab 'approved'}}active{{\u002FifEquals}}\"\n",[217,4602,4603],{"class":219,"line":475},[217,4604,4605],{},"                data-action=\"filter-tab\" data-tab=\"approved\">\n",[217,4607,4608],{"class":219,"line":480},[217,4609,4610],{},"            {{translate 'Ready to Order'}}\n",[217,4612,4613],{"class":219,"line":495},[217,4614,4615],{},"            {{#if approvedCount}}\n",[217,4617,4618],{"class":219,"line":506},[217,4619,4620],{},"                \u003Cspan class=\"badge\">{{approvedCount}}\u003C\u002Fspan>\n",[217,4622,4623],{"class":219,"line":516},[217,4624,4590],{},[217,4626,4627],{"class":219,"line":526},[217,4628,4595],{},[217,4630,4631],{"class":219,"line":536},[217,4632,4633],{},"        \u003Cbutton class=\"tab {{#ifEquals activeTab 'expired'}}active{{\u002FifEquals}}\"\n",[217,4635,4636],{"class":219,"line":545},[217,4637,4638],{},"                data-action=\"filter-tab\" data-tab=\"expired\">\n",[217,4640,4641],{"class":219,"line":551},[217,4642,4643],{},"            {{translate 'Expired'}}\n",[217,4645,4646],{"class":219,"line":557},[217,4647,4595],{},[217,4649,4650],{"class":219,"line":562},[217,4651,2027],{},[217,4653,4654],{"class":219,"line":579},[217,4655,325],{"emptyLinePlaceholder":324},[217,4657,4658],{"class":219,"line":591},[217,4659,4660],{},"    \u003Cdiv class=\"quotes-list\">\n",[217,4662,4663],{"class":219,"line":607},[217,4664,4665],{},"        {{#each quotes}}\n",[217,4667,4668],{"class":219,"line":612},[217,4669,4670],{},"        \u003Cdiv class=\"quote-card\" data-id=\"{{internalid}}\">\n",[217,4672,4673],{"class":219,"line":623},[217,4674,4675],{},"            \u003Cdiv class=\"quote-card-header\">\n",[217,4677,4678],{"class":219,"line":649},[217,4679,4680],{},"                \u003Cspan class=\"quote-number\">\n",[217,4682,4683],{"class":219,"line":671},[217,4684,4685],{},"                    Quote #{{tranid}}\n",[217,4687,4688],{"class":219,"line":693},[217,4689,4690],{},"                \u003C\u002Fspan>\n",[217,4692,4693],{"class":219,"line":715},[217,4694,4695],{},"                \u003Cspan class=\"quote-status status-{{statusCode}}\">\n",[217,4697,4698],{"class":219,"line":738},[217,4699,4700],{},"                    {{statusLabel}}\n",[217,4702,4703],{"class":219,"line":743},[217,4704,4690],{},[217,4706,4707],{"class":219,"line":748},[217,4708,1785],{},[217,4710,4711],{"class":219,"line":754},[217,4712,4713],{},"            \u003Cdiv class=\"quote-card-body\">\n",[217,4715,4716],{"class":219,"line":767},[217,4717,4718],{},"                \u003Cdiv class=\"quote-detail\">\n",[217,4720,4721],{"class":219,"line":772},[217,4722,4723],{},"                    \u003Cspan class=\"label\">{{translate 'Date'}}\u003C\u002Fspan>\n",[217,4725,4726],{"class":219,"line":785},[217,4727,4728],{},"                    \u003Cspan>{{trandate}}\u003C\u002Fspan>\n",[217,4730,4731],{"class":219,"line":798},[217,4732,4733],{},"                \u003C\u002Fdiv>\n",[217,4735,4736],{"class":219,"line":804},[217,4737,4718],{},[217,4739,4740],{"class":219,"line":816},[217,4741,4742],{},"                    \u003Cspan class=\"label\">{{translate 'Items'}}\u003C\u002Fspan>\n",[217,4744,4745],{"class":219,"line":829},[217,4746,4747],{},"                    \u003Cspan>{{lineCount}}\u003C\u002Fspan>\n",[217,4749,4750],{"class":219,"line":834},[217,4751,4733],{},[217,4753,4754],{"class":219,"line":846},[217,4755,4718],{},[217,4757,4758],{"class":219,"line":859},[217,4759,4760],{},"                    \u003Cspan class=\"label\">{{translate 'Total'}}\u003C\u002Fspan>\n",[217,4762,4763],{"class":219,"line":864},[217,4764,4765],{},"                    \u003Cspan class=\"quote-total\">\n",[217,4767,4768],{"class":219,"line":869},[217,4769,4770],{},"                        {{formatCurrency total}}\n",[217,4772,4773],{"class":219,"line":875},[217,4774,4775],{},"                    \u003C\u002Fspan>\n",[217,4777,4778],{"class":219,"line":888},[217,4779,4733],{},[217,4781,4782],{"class":219,"line":894},[217,4783,4784],{},"                {{#if expirationDate}}\n",[217,4786,4787],{"class":219,"line":903},[217,4788,4718],{},[217,4790,4791],{"class":219,"line":919},[217,4792,4793],{},"                    \u003Cspan class=\"label\">{{translate 'Expires'}}\u003C\u002Fspan>\n",[217,4795,4796],{"class":219,"line":925},[217,4797,4798],{},"                    \u003Cspan class=\"{{#if isExpiringSoon}}text-warning{{\u002Fif}}\">\n",[217,4800,4801],{"class":219,"line":934},[217,4802,4803],{},"                        {{expirationDate}}\n",[217,4805,4806],{"class":219,"line":946},[217,4807,4775],{},[217,4809,4810],{"class":219,"line":966},[217,4811,4733],{},[217,4813,4814],{"class":219,"line":999},[217,4815,1989],{},[217,4817,4818],{"class":219,"line":1019},[217,4819,1785],{},[217,4821,4822],{"class":219,"line":1029},[217,4823,4824],{},"            \u003Cdiv class=\"quote-card-actions\">\n",[217,4826,4827],{"class":219,"line":1046},[217,4828,4829],{},"                \u003Ca href=\"\u002Fquotes\u002F{{internalid}}\"\n",[217,4831,4832],{"class":219,"line":1052},[217,4833,4834],{},"                   data-touchpoint=\"customercenter\"\n",[217,4836,4837],{"class":219,"line":1058},[217,4838,4839],{},"                   data-hashtag=\"#quotes\u002F{{internalid}}\">\n",[217,4841,4842],{"class":219,"line":1064},[217,4843,4844],{},"                    {{translate 'View Details'}}\n",[217,4846,4847],{"class":219,"line":1075},[217,4848,1984],{},[217,4850,4851],{"class":219,"line":1081},[217,4852,4853],{},"                {{#if canConvertToOrder}}\n",[217,4855,4856],{"class":219,"line":1086},[217,4857,4858],{},"                \u003Cbutton class=\"button-primary button-small\"\n",[217,4860,4861],{"class":219,"line":1091},[217,4862,4863],{},"                        data-action=\"convert-to-order\"\n",[217,4865,4866],{"class":219,"line":1107},[217,4867,4868],{},"                        data-quote-id=\"{{internalid}}\">\n",[217,4870,4871],{"class":219,"line":1116},[217,4872,4873],{},"                    {{translate 'Place Order'}}\n",[217,4875,4876],{"class":219,"line":1137},[217,4877,1964],{},[217,4879,4880],{"class":219,"line":1142},[217,4881,1989],{},[217,4883,4884],{"class":219,"line":1162},[217,4885,1785],{},[217,4887,4888],{"class":219,"line":1174},[217,4889,1885],{},[217,4891,4892],{"class":219,"line":1190},[217,4893,4894],{},"        {{else}}\n",[217,4896,4897],{"class":219,"line":1204},[217,4898,4899],{},"        \u003Cdiv class=\"empty-state\">\n",[217,4901,4902],{"class":219,"line":1223},[217,4903,4904],{},"            \u003Cp>{{translate 'No quotes found.'}}\u003C\u002Fp>\n",[217,4906,4907],{"class":219,"line":1238},[217,4908,1885],{},[217,4910,4911],{"class":219,"line":1253},[217,4912,4913],{},"        {{\u002Feach}}\n",[217,4915,4916],{"class":219,"line":1281},[217,4917,2027],{},[217,4919,4920],{"class":219,"line":1286},[217,4921,2032],{},[15,4923,4924],{},"When a quote is approved, the \"Place Order\" button converts the NetSuite Estimate record into a Sales Order—preserving all negotiated pricing, line items, and terms. No re-entry, no discrepancies.",[29,4926],{},[32,4928,70],{"id":4929},"feature-4-account-hierarchy-and-sub-users",[15,4931,4932],{},[4933,4934],"img",{"alt":4935,"src":4936},"B2B account management","\u002Fimages\u002Fblog\u002Fsuitecommerce-myaccount-b2b.webp",[15,4938,4939,4941,4942,4944,4945,190],{},[18,4940,181],{}," High | ",[18,4943,185],{}," 4–6 weeks | ",[18,4946,189],{},[192,4948,195],{"id":4949},"the-problem-3",[15,4951,4952],{},"B2B accounts aren't individual people. They're organizations. A single account might have a procurement manager who approves orders, three purchasing agents who create orders, and a finance person who views invoices. SuiteCommerce's default MyAccount treats every login as the same—full access, single user.",[192,4954,202],{"id":4955},"the-solution-3",[15,4957,4958],{},"Implement role-based access using NetSuite's native entity hierarchy combined with custom SuiteCommerce roles.",[15,4960,4961],{},[18,4962,4963],{},"NetSuite Configuration:",[37,4965,4966,4999,5002],{},[40,4967,4968,4969,4972,4973],{},"Create custom entity fields for ",[214,4970,4971],{},"Portal Role"," on the Contact record:",[128,4974,4975,4981,4987,4993],{},[40,4976,4977,4980],{},[214,4978,4979],{},"Admin"," — Full access, can manage sub-users",[40,4982,4983,4986],{},[214,4984,4985],{},"Buyer"," — Can create orders and quotes",[40,4988,4989,4992],{},[214,4990,4991],{},"Approver"," — Can approve orders above threshold",[40,4994,4995,4998],{},[214,4996,4997],{},"Viewer"," — Read-only access to orders and invoices",[40,5000,5001],{},"Link Contacts to the parent Customer record using NetSuite's contact management.",[40,5003,5004],{},"Create a SuiteScript RESTlet that manages sub-user CRUD operations.",[207,5006,5008],{"className":209,"code":5007,"language":211,"meta":212,"style":212},"\u002F**\n * @NApiVersion 2.1\n * @NScriptType Restlet\n * @NModuleScope SameAccount\n *\n * Sub-user management for B2B MyAccount\n *\u002F\ndefine(['N\u002Frecord', 'N\u002Fsearch', 'N\u002Fruntime', 'N\u002Femail'],\nfunction (record, search, runtime, email) {\n\n    function get(requestParams) {\n        var customerId = runtime.getCurrentUser().id;\n\n        \u002F\u002F Get all contacts linked to this customer\n        var contactSearch = search.create({\n            type: search.Type.CONTACT,\n            filters: [\n                ['company', 'is', customerId],\n                'AND',\n                ['isinactive', 'is', 'F']\n            ],\n            columns: [\n                'entityid',\n                'firstname',\n                'lastname',\n                'email',\n                'custentity_portal_role',\n                'custentity_portal_last_login'\n            ]\n        });\n\n        var contacts = [];\n        contactSearch.run().each(function (result) {\n            contacts.push({\n                id: result.id,\n                name: result.getValue('firstname') + ' ' +\n                      result.getValue('lastname'),\n                email: result.getValue('email'),\n                role: result.getText('custentity_portal_role'),\n                roleId: result.getValue('custentity_portal_role'),\n                lastLogin: result.getValue(\n                    'custentity_portal_last_login'\n                )\n            });\n            return true;\n        });\n\n        return { contacts: contacts };\n    }\n\n    function post(requestBody) {\n        var customerId = runtime.getCurrentUser().id;\n\n        \u002F\u002F Verify current user is an admin\n        if (!isPortalAdmin(customerId)) {\n            return { error: 'Insufficient permissions' };\n        }\n\n        \u002F\u002F Create new contact\n        var contact = record.create({\n            type: record.Type.CONTACT\n        });\n\n        contact.setValue('company', customerId);\n        contact.setValue('firstname', requestBody.firstName);\n        contact.setValue('lastname', requestBody.lastName);\n        contact.setValue('email', requestBody.email);\n        contact.setValue(\n            'custentity_portal_role',\n            requestBody.roleId\n        );\n\n        var contactId = contact.save();\n\n        \u002F\u002F Send invitation email\n        email.send({\n            author: runtime.getCurrentUser().id,\n            recipients: requestBody.email,\n            subject: 'You have been invited to ' +\n                     'our ordering portal',\n            body: buildInvitationEmail(\n                requestBody.firstName,\n                customerId\n            )\n        });\n\n        return {\n            success: true,\n            contactId: contactId\n        };\n    }\n\n    function isPortalAdmin(customerId) {\n        var role = search.lookupFields({\n            type: search.Type.CUSTOMER,\n            id: customerId,\n            columns: ['custentity_portal_role']\n        });\n        return role.custentity_portal_role &&\n               role.custentity_portal_role[0] &&\n               role.custentity_portal_role[0].value === '1';\n    }\n\n    return { get: get, post: post };\n});\n",[214,5009,5010,5014,5022,5031,5039,5043,5048,5052,5076,5099,5103,5117,5132,5136,5141,5157,5167,5172,5188,5195,5212,5217,5222,5229,5236,5243,5250,5257,5262,5267,5271,5275,5286,5309,5318,5323,5343,5357,5371,5386,5399,5408,5413,5418,5422,5430,5434,5438,5446,5450,5454,5468,5482,5486,5491,5505,5518,5522,5526,5531,5546,5553,5557,5561,5576,5589,5602,5615,5623,5630,5635,5640,5644,5660,5664,5669,5679,5689,5694,5704,5711,5721,5726,5731,5736,5740,5744,5750,5759,5764,5769,5773,5777,5791,5806,5815,5820,5829,5833,5842,5853,5870,5874,5878,5885],{"__ignoreMap":212},[217,5011,5012],{"class":219,"line":220},[217,5013,2617],{"class":223},[217,5015,5016,5018,5020],{"class":219,"line":227},[217,5017,2622],{"class":223},[217,5019,2625],{"class":282},[217,5021,2628],{"class":223},[217,5023,5024,5026,5028],{"class":219,"line":245},[217,5025,2622],{"class":223},[217,5027,2635],{"class":282},[217,5029,5030],{"class":223}," Restlet\n",[217,5032,5033,5035,5037],{"class":219,"line":254},[217,5034,2622],{"class":223},[217,5036,2645],{"class":282},[217,5038,2648],{"class":223},[217,5040,5041],{"class":219,"line":262},[217,5042,2653],{"class":223},[217,5044,5045],{"class":219,"line":270},[217,5046,5047],{"class":223}," * Sub-user management for B2B MyAccount\n",[217,5049,5050],{"class":219,"line":276},[217,5051,2663],{"class":223},[217,5053,5054,5056,5058,5060,5062,5064,5066,5068,5070,5073],{"class":219,"line":312},[217,5055,231],{"class":230},[217,5057,2670],{"class":234},[217,5059,2673],{"class":238},[217,5061,293],{"class":234},[217,5063,2678],{"class":238},[217,5065,293],{"class":234},[217,5067,2683],{"class":238},[217,5069,293],{"class":234},[217,5071,5072],{"class":238},"'N\u002Femail'",[217,5074,5075],{"class":234},"],\n",[217,5077,5078,5080,5082,5084,5086,5088,5090,5092,5094,5097],{"class":219,"line":321},[217,5079,283],{"class":282},[217,5081,286],{"class":234},[217,5083,2692],{"class":289},[217,5085,293],{"class":234},[217,5087,2697],{"class":289},[217,5089,293],{"class":234},[217,5091,2702],{"class":289},[217,5093,293],{"class":234},[217,5095,5096],{"class":289},"email",[217,5098,309],{"class":234},[217,5100,5101],{"class":219,"line":328},[217,5102,325],{"emptyLinePlaceholder":324},[217,5104,5105,5107,5110,5112,5115],{"class":219,"line":343},[217,5106,2713],{"class":282},[217,5108,5109],{"class":230}," get",[217,5111,235],{"class":234},[217,5113,5114],{"class":289},"requestParams",[217,5116,309],{"class":234},[217,5118,5119,5121,5124,5126,5128,5130],{"class":219,"line":349},[217,5120,2728],{"class":282},[217,5122,5123],{"class":234}," customerId ",[217,5125,489],{"class":282},[217,5127,2784],{"class":234},[217,5129,2787],{"class":230},[217,5131,2790],{"class":234},[217,5133,5134],{"class":219,"line":354},[217,5135,325],{"emptyLinePlaceholder":324},[217,5137,5138],{"class":219,"line":376},[217,5139,5140],{"class":223},"        \u002F\u002F Get all contacts linked to this customer\n",[217,5142,5143,5145,5148,5150,5152,5155],{"class":219,"line":390},[217,5144,2728],{"class":282},[217,5146,5147],{"class":234}," contactSearch ",[217,5149,489],{"class":282},[217,5151,3338],{"class":234},[217,5153,5154],{"class":230},"create",[217,5156,340],{"class":234},[217,5158,5159,5162,5165],{"class":219,"line":403},[217,5160,5161],{"class":234},"            type: search.Type.",[217,5163,5164],{"class":364},"CONTACT",[217,5166,251],{"class":234},[217,5168,5169],{"class":219,"line":414},[217,5170,5171],{"class":234},"            filters: [\n",[217,5173,5174,5177,5180,5182,5185],{"class":219,"line":420},[217,5175,5176],{"class":234},"                [",[217,5178,5179],{"class":238},"'company'",[217,5181,293],{"class":234},[217,5183,5184],{"class":238},"'is'",[217,5186,5187],{"class":234},", customerId],\n",[217,5189,5190,5193],{"class":219,"line":425},[217,5191,5192],{"class":238},"                'AND'",[217,5194,251],{"class":234},[217,5196,5197,5199,5201,5203,5205,5207,5210],{"class":219,"line":442},[217,5198,5176],{"class":234},[217,5200,3366],{"class":238},[217,5202,293],{"class":234},[217,5204,5184],{"class":238},[217,5206,293],{"class":234},[217,5208,5209],{"class":238},"'F'",[217,5211,3374],{"class":234},[217,5213,5214],{"class":219,"line":453},[217,5215,5216],{"class":234},"            ],\n",[217,5218,5219],{"class":219,"line":475},[217,5220,5221],{"class":234},"            columns: [\n",[217,5223,5224,5227],{"class":219,"line":480},[217,5225,5226],{"class":238},"                'entityid'",[217,5228,251],{"class":234},[217,5230,5231,5234],{"class":219,"line":495},[217,5232,5233],{"class":238},"                'firstname'",[217,5235,251],{"class":234},[217,5237,5238,5241],{"class":219,"line":506},[217,5239,5240],{"class":238},"                'lastname'",[217,5242,251],{"class":234},[217,5244,5245,5248],{"class":219,"line":516},[217,5246,5247],{"class":238},"                'email'",[217,5249,251],{"class":234},[217,5251,5252,5255],{"class":219,"line":526},[217,5253,5254],{"class":238},"                'custentity_portal_role'",[217,5256,251],{"class":234},[217,5258,5259],{"class":219,"line":536},[217,5260,5261],{"class":238},"                'custentity_portal_last_login'\n",[217,5263,5264],{"class":219,"line":545},[217,5265,5266],{"class":234},"            ]\n",[217,5268,5269],{"class":219,"line":551},[217,5270,2836],{"class":234},[217,5272,5273],{"class":219,"line":557},[217,5274,325],{"emptyLinePlaceholder":324},[217,5276,5277,5279,5282,5284],{"class":219,"line":562},[217,5278,2728],{"class":282},[217,5280,5281],{"class":234}," contacts ",[217,5283,489],{"class":282},[217,5285,2968],{"class":234},[217,5287,5288,5291,5294,5296,5298,5300,5302,5304,5307],{"class":219,"line":579},[217,5289,5290],{"class":234},"        contactSearch.",[217,5292,5293],{"class":230},"run",[217,5295,1011],{"class":234},[217,5297,1149],{"class":230},[217,5299,235],{"class":234},[217,5301,283],{"class":282},[217,5303,286],{"class":234},[217,5305,5306],{"class":289},"result",[217,5308,309],{"class":234},[217,5310,5311,5314,5316],{"class":219,"line":591},[217,5312,5313],{"class":234},"            contacts.",[217,5315,3189],{"class":230},[217,5317,340],{"class":234},[217,5319,5320],{"class":219,"line":607},[217,5321,5322],{"class":234},"                id: result.id,\n",[217,5324,5325,5328,5330,5332,5335,5337,5339,5341],{"class":219,"line":612},[217,5326,5327],{"class":234},"                name: result.",[217,5329,2860],{"class":230},[217,5331,235],{"class":234},[217,5333,5334],{"class":238},"'firstname'",[217,5336,988],{"class":234},[217,5338,1269],{"class":282},[217,5340,2405],{"class":238},[217,5342,1386],{"class":282},[217,5344,5345,5348,5350,5352,5355],{"class":219,"line":623},[217,5346,5347],{"class":234},"                      result.",[217,5349,2860],{"class":230},[217,5351,235],{"class":234},[217,5353,5354],{"class":238},"'lastname'",[217,5356,1187],{"class":234},[217,5358,5359,5362,5364,5366,5369],{"class":219,"line":649},[217,5360,5361],{"class":234},"                email: result.",[217,5363,2860],{"class":230},[217,5365,235],{"class":234},[217,5367,5368],{"class":238},"'email'",[217,5370,1187],{"class":234},[217,5372,5373,5376,5379,5381,5384],{"class":219,"line":671},[217,5374,5375],{"class":234},"                role: result.",[217,5377,5378],{"class":230},"getText",[217,5380,235],{"class":234},[217,5382,5383],{"class":238},"'custentity_portal_role'",[217,5385,1187],{"class":234},[217,5387,5388,5391,5393,5395,5397],{"class":219,"line":693},[217,5389,5390],{"class":234},"                roleId: result.",[217,5392,2860],{"class":230},[217,5394,235],{"class":234},[217,5396,5383],{"class":238},[217,5398,1187],{"class":234},[217,5400,5401,5404,5406],{"class":219,"line":715},[217,5402,5403],{"class":234},"                lastLogin: result.",[217,5405,2860],{"class":230},[217,5407,943],{"class":234},[217,5409,5410],{"class":219,"line":738},[217,5411,5412],{"class":238},"                    'custentity_portal_last_login'\n",[217,5414,5415],{"class":219,"line":743},[217,5416,5417],{"class":234},"                )\n",[217,5419,5420],{"class":219,"line":748},[217,5421,1078],{"class":234},[217,5423,5424,5426,5428],{"class":219,"line":754},[217,5425,1699],{"class":282},[217,5427,1511],{"class":364},[217,5429,318],{"class":234},[217,5431,5432],{"class":219,"line":767},[217,5433,2836],{"class":234},[217,5435,5436],{"class":219,"line":772},[217,5437,325],{"emptyLinePlaceholder":324},[217,5439,5440,5443],{"class":219,"line":785},[217,5441,5442],{"class":282},"        return",[217,5444,5445],{"class":234}," { contacts: contacts };\n",[217,5447,5448],{"class":219,"line":798},[217,5449,3297],{"class":234},[217,5451,5452],{"class":219,"line":804},[217,5453,325],{"emptyLinePlaceholder":324},[217,5455,5456,5458,5461,5463,5466],{"class":219,"line":816},[217,5457,2713],{"class":282},[217,5459,5460],{"class":230}," post",[217,5462,235],{"class":234},[217,5464,5465],{"class":289},"requestBody",[217,5467,309],{"class":234},[217,5469,5470,5472,5474,5476,5478,5480],{"class":219,"line":829},[217,5471,2728],{"class":282},[217,5473,5123],{"class":234},[217,5475,489],{"class":282},[217,5477,2784],{"class":234},[217,5479,2787],{"class":230},[217,5481,2790],{"class":234},[217,5483,5484],{"class":219,"line":834},[217,5485,325],{"emptyLinePlaceholder":324},[217,5487,5488],{"class":219,"line":846},[217,5489,5490],{"class":223},"        \u002F\u002F Verify current user is an admin\n",[217,5492,5493,5495,5497,5499,5502],{"class":219,"line":859},[217,5494,2872],{"class":282},[217,5496,286],{"class":234},[217,5498,3868],{"class":282},[217,5500,5501],{"class":230},"isPortalAdmin",[217,5503,5504],{"class":234},"(customerId)) {\n",[217,5506,5507,5509,5512,5515],{"class":219,"line":864},[217,5508,1699],{"class":282},[217,5510,5511],{"class":234}," { error: ",[217,5513,5514],{"class":238},"'Insufficient permissions'",[217,5516,5517],{"class":234}," };\n",[217,5519,5520],{"class":219,"line":869},[217,5521,1708],{"class":234},[217,5523,5524],{"class":219,"line":875},[217,5525,325],{"emptyLinePlaceholder":324},[217,5527,5528],{"class":219,"line":888},[217,5529,5530],{"class":223},"        \u002F\u002F Create new contact\n",[217,5532,5533,5535,5538,5540,5542,5544],{"class":219,"line":894},[217,5534,2728],{"class":282},[217,5536,5537],{"class":234}," contact ",[217,5539,489],{"class":282},[217,5541,2811],{"class":234},[217,5543,5154],{"class":230},[217,5545,340],{"class":234},[217,5547,5548,5550],{"class":219,"line":903},[217,5549,2821],{"class":234},[217,5551,5552],{"class":364},"CONTACT\n",[217,5554,5555],{"class":219,"line":919},[217,5556,2836],{"class":234},[217,5558,5559],{"class":219,"line":925},[217,5560,325],{"emptyLinePlaceholder":324},[217,5562,5563,5566,5569,5571,5573],{"class":219,"line":934},[217,5564,5565],{"class":234},"        contact.",[217,5567,5568],{"class":230},"setValue",[217,5570,235],{"class":234},[217,5572,5179],{"class":238},[217,5574,5575],{"class":234},", customerId);\n",[217,5577,5578,5580,5582,5584,5586],{"class":219,"line":946},[217,5579,5565],{"class":234},[217,5581,5568],{"class":230},[217,5583,235],{"class":234},[217,5585,5334],{"class":238},[217,5587,5588],{"class":234},", requestBody.firstName);\n",[217,5590,5591,5593,5595,5597,5599],{"class":219,"line":966},[217,5592,5565],{"class":234},[217,5594,5568],{"class":230},[217,5596,235],{"class":234},[217,5598,5354],{"class":238},[217,5600,5601],{"class":234},", requestBody.lastName);\n",[217,5603,5604,5606,5608,5610,5612],{"class":219,"line":999},[217,5605,5565],{"class":234},[217,5607,5568],{"class":230},[217,5609,235],{"class":234},[217,5611,5368],{"class":238},[217,5613,5614],{"class":234},", requestBody.email);\n",[217,5616,5617,5619,5621],{"class":219,"line":1019},[217,5618,5565],{"class":234},[217,5620,5568],{"class":230},[217,5622,943],{"class":234},[217,5624,5625,5628],{"class":219,"line":1029},[217,5626,5627],{"class":238},"            'custentity_portal_role'",[217,5629,251],{"class":234},[217,5631,5632],{"class":219,"line":1046},[217,5633,5634],{"class":234},"            requestBody.roleId\n",[217,5636,5637],{"class":219,"line":1052},[217,5638,5639],{"class":234},"        );\n",[217,5641,5642],{"class":219,"line":1058},[217,5643,325],{"emptyLinePlaceholder":324},[217,5645,5646,5648,5651,5653,5656,5658],{"class":219,"line":1064},[217,5647,2728],{"class":282},[217,5649,5650],{"class":234}," contactId ",[217,5652,489],{"class":282},[217,5654,5655],{"class":234}," contact.",[217,5657,3969],{"class":230},[217,5659,588],{"class":234},[217,5661,5662],{"class":219,"line":1075},[217,5663,325],{"emptyLinePlaceholder":324},[217,5665,5666],{"class":219,"line":1081},[217,5667,5668],{"class":223},"        \u002F\u002F Send invitation email\n",[217,5670,5671,5674,5677],{"class":219,"line":1086},[217,5672,5673],{"class":234},"        email.",[217,5675,5676],{"class":230},"send",[217,5678,340],{"class":234},[217,5680,5681,5684,5686],{"class":219,"line":1091},[217,5682,5683],{"class":234},"            author: runtime.",[217,5685,2787],{"class":230},[217,5687,5688],{"class":234},"().id,\n",[217,5690,5691],{"class":219,"line":1107},[217,5692,5693],{"class":234},"            recipients: requestBody.email,\n",[217,5695,5696,5699,5702],{"class":219,"line":1116},[217,5697,5698],{"class":234},"            subject: ",[217,5700,5701],{"class":238},"'You have been invited to '",[217,5703,1386],{"class":282},[217,5705,5706,5709],{"class":219,"line":1137},[217,5707,5708],{"class":238},"                     'our ordering portal'",[217,5710,251],{"class":234},[217,5712,5713,5716,5719],{"class":219,"line":1142},[217,5714,5715],{"class":234},"            body: ",[217,5717,5718],{"class":230},"buildInvitationEmail",[217,5720,943],{"class":234},[217,5722,5723],{"class":219,"line":1162},[217,5724,5725],{"class":234},"                requestBody.firstName,\n",[217,5727,5728],{"class":219,"line":1174},[217,5729,5730],{"class":234},"                customerId\n",[217,5732,5733],{"class":219,"line":1190},[217,5734,5735],{"class":234},"            )\n",[217,5737,5738],{"class":219,"line":1204},[217,5739,2836],{"class":234},[217,5741,5742],{"class":219,"line":1223},[217,5743,325],{"emptyLinePlaceholder":324},[217,5745,5746,5748],{"class":219,"line":1238},[217,5747,5442],{"class":282},[217,5749,492],{"class":234},[217,5751,5752,5755,5757],{"class":219,"line":1253},[217,5753,5754],{"class":234},"            success: ",[217,5756,3939],{"class":364},[217,5758,251],{"class":234},[217,5760,5761],{"class":219,"line":1281},[217,5762,5763],{"class":234},"            contactId: contactId\n",[217,5765,5766],{"class":219,"line":1286},[217,5767,5768],{"class":234},"        };\n",[217,5770,5771],{"class":219,"line":1291},[217,5772,3297],{"class":234},[217,5774,5775],{"class":219,"line":1309},[217,5776,325],{"emptyLinePlaceholder":324},[217,5778,5779,5781,5784,5786,5789],{"class":219,"line":1315},[217,5780,2713],{"class":282},[217,5782,5783],{"class":230}," isPortalAdmin",[217,5785,235],{"class":234},[217,5787,5788],{"class":289},"customerId",[217,5790,309],{"class":234},[217,5792,5793,5795,5798,5800,5802,5804],{"class":219,"line":1327},[217,5794,2728],{"class":282},[217,5796,5797],{"class":234}," role ",[217,5799,489],{"class":282},[217,5801,3338],{"class":234},[217,5803,3341],{"class":230},[217,5805,340],{"class":234},[217,5807,5808,5810,5813],{"class":219,"line":1333},[217,5809,5161],{"class":234},[217,5811,5812],{"class":364},"CUSTOMER",[217,5814,251],{"class":234},[217,5816,5817],{"class":219,"line":1356},[217,5818,5819],{"class":234},"            id: customerId,\n",[217,5821,5822,5825,5827],{"class":219,"line":1375},[217,5823,5824],{"class":234},"            columns: [",[217,5826,5383],{"class":238},[217,5828,3374],{"class":234},[217,5830,5831],{"class":219,"line":1389},[217,5832,2836],{"class":234},[217,5834,5835,5837,5840],{"class":219,"line":1429},[217,5836,5442],{"class":282},[217,5838,5839],{"class":234}," role.custentity_portal_role ",[217,5841,2386],{"class":282},[217,5843,5844,5847,5849,5851],{"class":219,"line":1440},[217,5845,5846],{"class":234},"               role.custentity_portal_role[",[217,5848,1416],{"class":364},[217,5850,1419],{"class":234},[217,5852,2386],{"class":282},[217,5854,5855,5857,5859,5862,5865,5868],{"class":219,"line":1445},[217,5856,5846],{"class":234},[217,5858,1416],{"class":364},[217,5860,5861],{"class":234},"].value ",[217,5863,5864],{"class":282},"===",[217,5866,5867],{"class":238}," '1'",[217,5869,318],{"class":234},[217,5871,5872],{"class":219,"line":1450},[217,5873,3297],{"class":234},[217,5875,5876],{"class":219,"line":1462},[217,5877,325],{"emptyLinePlaceholder":324},[217,5879,5880,5882],{"class":219,"line":1475},[217,5881,331],{"class":282},[217,5883,5884],{"class":234}," { get: get, post: post };\n",[217,5886,5887],{"class":219,"line":1498},[217,5888,1720],{"class":234},[15,5890,5891],{},"On the frontend, gate features based on the user's portal role:",[207,5893,5895],{"className":209,"code":5894,"language":211,"meta":212,"style":212},"\u002F\u002F Role-based feature gating\ndefine('Stenbase.B2B.Permissions', [\n    'SC.Configuration'\n], function (Configuration) {\n    'use strict';\n\n    var Permissions = {\n        roles: {\n            ADMIN: '1',\n            BUYER: '2',\n            APPROVER: '3',\n            VIEWER: '4'\n        },\n\n        getCurrentRole: function () {\n            return SC.ENVIRONMENT.currentPortalRole || null;\n        },\n\n        canPlaceOrders: function () {\n            var role = this.getCurrentRole();\n            return role === this.roles.ADMIN ||\n                   role === this.roles.BUYER;\n        },\n\n        canApproveOrders: function () {\n            var role = this.getCurrentRole();\n            return role === this.roles.ADMIN ||\n                   role === this.roles.APPROVER;\n        },\n\n        canManageUsers: function () {\n            return this.getCurrentRole() === this.roles.ADMIN;\n        },\n\n        canViewInvoices: function () {\n            \u002F\u002F All roles can view invoices\n            return true;\n        },\n\n        canViewPricing: function () {\n            var role = this.getCurrentRole();\n            return role !== this.roles.VIEWER;\n        }\n    };\n\n    return Permissions;\n});\n",[214,5896,5897,5902,5913,5918,5931,5937,5941,5953,5958,5968,5978,5988,5996,6000,6004,6015,6036,6040,6044,6055,6072,6091,6107,6111,6115,6126,6142,6158,6173,6177,6181,6192,6215,6219,6223,6234,6239,6247,6251,6255,6266,6282,6299,6303,6307,6311,6318],{"__ignoreMap":212},[217,5898,5899],{"class":219,"line":220},[217,5900,5901],{"class":223},"\u002F\u002F Role-based feature gating\n",[217,5903,5904,5906,5908,5911],{"class":219,"line":227},[217,5905,231],{"class":230},[217,5907,235],{"class":234},[217,5909,5910],{"class":238},"'Stenbase.B2B.Permissions'",[217,5912,242],{"class":234},[217,5914,5915],{"class":219,"line":245},[217,5916,5917],{"class":238},"    'SC.Configuration'\n",[217,5919,5920,5922,5924,5926,5929],{"class":219,"line":254},[217,5921,279],{"class":234},[217,5923,283],{"class":282},[217,5925,286],{"class":234},[217,5927,5928],{"class":289},"Configuration",[217,5930,309],{"class":234},[217,5932,5933,5935],{"class":219,"line":262},[217,5934,315],{"class":238},[217,5936,318],{"class":234},[217,5938,5939],{"class":219,"line":270},[217,5940,325],{"emptyLinePlaceholder":324},[217,5942,5943,5946,5949,5951],{"class":219,"line":276},[217,5944,5945],{"class":282},"    var",[217,5947,5948],{"class":234}," Permissions ",[217,5950,489],{"class":282},[217,5952,492],{"class":234},[217,5954,5955],{"class":219,"line":312},[217,5956,5957],{"class":234},"        roles: {\n",[217,5959,5960,5963,5966],{"class":219,"line":321},[217,5961,5962],{"class":234},"            ADMIN: ",[217,5964,5965],{"class":238},"'1'",[217,5967,251],{"class":234},[217,5969,5970,5973,5976],{"class":219,"line":328},[217,5971,5972],{"class":234},"            BUYER: ",[217,5974,5975],{"class":238},"'2'",[217,5977,251],{"class":234},[217,5979,5980,5983,5986],{"class":219,"line":343},[217,5981,5982],{"class":234},"            APPROVER: ",[217,5984,5985],{"class":238},"'3'",[217,5987,251],{"class":234},[217,5989,5990,5993],{"class":219,"line":349},[217,5991,5992],{"class":234},"            VIEWER: ",[217,5994,5995],{"class":238},"'4'\n",[217,5997,5998],{"class":219,"line":354},[217,5999,554],{"class":234},[217,6001,6002],{"class":219,"line":376},[217,6003,325],{"emptyLinePlaceholder":324},[217,6005,6006,6009,6011,6013],{"class":219,"line":390},[217,6007,6008],{"class":230},"        getCurrentRole",[217,6010,382],{"class":234},[217,6012,283],{"class":282},[217,6014,916],{"class":234},[217,6016,6017,6019,6021,6023,6026,6029,6031,6034],{"class":219,"line":403},[217,6018,1699],{"class":282},[217,6020,2547],{"class":364},[217,6022,367],{"class":234},[217,6024,6025],{"class":364},"ENVIRONMENT",[217,6027,6028],{"class":234},".currentPortalRole ",[217,6030,991],{"class":282},[217,6032,6033],{"class":364}," null",[217,6035,318],{"class":234},[217,6037,6038],{"class":219,"line":414},[217,6039,554],{"class":234},[217,6041,6042],{"class":219,"line":420},[217,6043,325],{"emptyLinePlaceholder":324},[217,6045,6046,6049,6051,6053],{"class":219,"line":425},[217,6047,6048],{"class":230},"        canPlaceOrders",[217,6050,382],{"class":234},[217,6052,283],{"class":282},[217,6054,916],{"class":234},[217,6056,6057,6059,6061,6063,6065,6067,6070],{"class":219,"line":442},[217,6058,594],{"class":282},[217,6060,5797],{"class":234},[217,6062,489],{"class":282},[217,6064,602],{"class":364},[217,6066,367],{"class":234},[217,6068,6069],{"class":230},"getCurrentRole",[217,6071,588],{"class":234},[217,6073,6074,6076,6078,6080,6082,6085,6088],{"class":219,"line":453},[217,6075,1699],{"class":282},[217,6077,5797],{"class":234},[217,6079,5864],{"class":282},[217,6081,602],{"class":364},[217,6083,6084],{"class":234},".roles.",[217,6086,6087],{"class":364},"ADMIN",[217,6089,6090],{"class":282}," ||\n",[217,6092,6093,6096,6098,6100,6102,6105],{"class":219,"line":475},[217,6094,6095],{"class":234},"                   role ",[217,6097,5864],{"class":282},[217,6099,602],{"class":364},[217,6101,6084],{"class":234},[217,6103,6104],{"class":364},"BUYER",[217,6106,318],{"class":234},[217,6108,6109],{"class":219,"line":480},[217,6110,554],{"class":234},[217,6112,6113],{"class":219,"line":495},[217,6114,325],{"emptyLinePlaceholder":324},[217,6116,6117,6120,6122,6124],{"class":219,"line":506},[217,6118,6119],{"class":230},"        canApproveOrders",[217,6121,382],{"class":234},[217,6123,283],{"class":282},[217,6125,916],{"class":234},[217,6127,6128,6130,6132,6134,6136,6138,6140],{"class":219,"line":516},[217,6129,594],{"class":282},[217,6131,5797],{"class":234},[217,6133,489],{"class":282},[217,6135,602],{"class":364},[217,6137,367],{"class":234},[217,6139,6069],{"class":230},[217,6141,588],{"class":234},[217,6143,6144,6146,6148,6150,6152,6154,6156],{"class":219,"line":526},[217,6145,1699],{"class":282},[217,6147,5797],{"class":234},[217,6149,5864],{"class":282},[217,6151,602],{"class":364},[217,6153,6084],{"class":234},[217,6155,6087],{"class":364},[217,6157,6090],{"class":282},[217,6159,6160,6162,6164,6166,6168,6171],{"class":219,"line":536},[217,6161,6095],{"class":234},[217,6163,5864],{"class":282},[217,6165,602],{"class":364},[217,6167,6084],{"class":234},[217,6169,6170],{"class":364},"APPROVER",[217,6172,318],{"class":234},[217,6174,6175],{"class":219,"line":545},[217,6176,554],{"class":234},[217,6178,6179],{"class":219,"line":551},[217,6180,325],{"emptyLinePlaceholder":324},[217,6182,6183,6186,6188,6190],{"class":219,"line":557},[217,6184,6185],{"class":230},"        canManageUsers",[217,6187,382],{"class":234},[217,6189,283],{"class":282},[217,6191,916],{"class":234},[217,6193,6194,6196,6198,6200,6202,6205,6207,6209,6211,6213],{"class":219,"line":562},[217,6195,1699],{"class":282},[217,6197,602],{"class":364},[217,6199,367],{"class":234},[217,6201,6069],{"class":230},[217,6203,6204],{"class":234},"() ",[217,6206,5864],{"class":282},[217,6208,602],{"class":364},[217,6210,6084],{"class":234},[217,6212,6087],{"class":364},[217,6214,318],{"class":234},[217,6216,6217],{"class":219,"line":579},[217,6218,554],{"class":234},[217,6220,6221],{"class":219,"line":591},[217,6222,325],{"emptyLinePlaceholder":324},[217,6224,6225,6228,6230,6232],{"class":219,"line":607},[217,6226,6227],{"class":230},"        canViewInvoices",[217,6229,382],{"class":234},[217,6231,283],{"class":282},[217,6233,916],{"class":234},[217,6235,6236],{"class":219,"line":612},[217,6237,6238],{"class":223},"            \u002F\u002F All roles can view invoices\n",[217,6240,6241,6243,6245],{"class":219,"line":623},[217,6242,1699],{"class":282},[217,6244,1511],{"class":364},[217,6246,318],{"class":234},[217,6248,6249],{"class":219,"line":649},[217,6250,554],{"class":234},[217,6252,6253],{"class":219,"line":671},[217,6254,325],{"emptyLinePlaceholder":324},[217,6256,6257,6260,6262,6264],{"class":219,"line":693},[217,6258,6259],{"class":230},"        canViewPricing",[217,6261,382],{"class":234},[217,6263,283],{"class":282},[217,6265,916],{"class":234},[217,6267,6268,6270,6272,6274,6276,6278,6280],{"class":219,"line":715},[217,6269,594],{"class":282},[217,6271,5797],{"class":234},[217,6273,489],{"class":282},[217,6275,602],{"class":364},[217,6277,367],{"class":234},[217,6279,6069],{"class":230},[217,6281,588],{"class":234},[217,6283,6284,6286,6288,6290,6292,6294,6297],{"class":219,"line":738},[217,6285,1699],{"class":282},[217,6287,5797],{"class":234},[217,6289,1035],{"class":282},[217,6291,602],{"class":364},[217,6293,6084],{"class":234},[217,6295,6296],{"class":364},"VIEWER",[217,6298,318],{"class":234},[217,6300,6301],{"class":219,"line":743},[217,6302,1708],{"class":234},[217,6304,6305],{"class":219,"line":748},[217,6306,2600],{"class":234},[217,6308,6309],{"class":219,"line":754},[217,6310,325],{"emptyLinePlaceholder":324},[217,6312,6313,6315],{"class":219,"line":767},[217,6314,331],{"class":282},[217,6316,6317],{"class":234}," Permissions;\n",[217,6319,6320],{"class":219,"line":772},[217,6321,1720],{"class":234},[192,6323,2036],{"id":6324},"why-it-matters-2",[15,6326,6327],{},"Without multi-user support, the entire purchasing team shares one login. No audit trail. No permission control. No accountability. The account admin can't see who placed what order or control who has access to what. For companies with compliance requirements, this is a dealbreaker.",[29,6329],{},[32,6331,76],{"id":6332},"feature-5-customer-specific-pricing-visibility",[15,6334,6335,6337,6338,6340,6341,190],{},[18,6336,181],{}," Medium | ",[18,6339,185],{}," 2–3 weeks | ",[18,6342,189],{},[192,6344,195],{"id":6345},"the-problem-4",[15,6347,6348],{},"B2B pricing is confidential and customer-specific. NetSuite handles this well with price levels, item pricing, and quantity schedules. But the default MyAccount doesn't surface this information clearly. Buyers see the list price and have to trust that their negotiated pricing will apply at checkout.",[192,6350,202],{"id":6351},"the-solution-4",[15,6353,6354],{},"Display the customer's actual pricing throughout MyAccount, including volume tiers and contract pricing.",[207,6356,6358],{"className":209,"code":6357,"language":211,"meta":212,"style":212},"\u002F\u002F Customer-specific pricing display\ndefine('Stenbase.B2B.Pricing.View', [\n    'Backbone',\n    'stenbase_b2b_pricing_table.tpl'\n], function (Backbone, template) {\n    'use strict';\n\n    return Backbone.View.extend({\n        template: template,\n\n        getContext: function () {\n            var item = this.model;\n            var pricing = item.get('onlinecustomerprice_detail') || {};\n            var quantityPricing = pricing.priceschedule || [];\n\n            return {\n                hasContractPrice: !!pricing.onlinecustomerprice,\n                contractPrice: pricing.onlinecustomerprice,\n                listPrice: item.get('pricelevel1'),\n                savingsPercent: this.calculateSavings(\n                    item.get('pricelevel1'),\n                    pricing.onlinecustomerprice\n                ),\n                hasQuantityBreaks: quantityPricing.length > 1,\n                quantityBreaks: quantityPricing.map(function (tier) {\n                    return {\n                        minimumQuantity: tier.minimumquantity,\n                        price: tier.price,\n                        priceFormatted: SC.Utils.formatCurrency(\n                            tier.price\n                        )\n                    };\n                }),\n                priceLevel: pricing.pricelevelname || 'Standard'\n            };\n        },\n\n        calculateSavings: function (listPrice, contractPrice) {\n            if (!listPrice || !contractPrice) return 0;\n            return Math.round(\n                ((listPrice - contractPrice) \u002F listPrice) * 100\n            );\n        }\n    });\n});\n",[214,6359,6360,6365,6376,6382,6387,6403,6409,6413,6423,6427,6431,6441,6455,6480,6496,6500,6506,6517,6522,6536,6550,6563,6568,6572,6587,6606,6613,6618,6623,6639,6644,6649,6654,6659,6669,6673,6677,6681,6702,6726,6738,6761,6765,6769,6773],{"__ignoreMap":212},[217,6361,6362],{"class":219,"line":220},[217,6363,6364],{"class":223},"\u002F\u002F Customer-specific pricing display\n",[217,6366,6367,6369,6371,6374],{"class":219,"line":227},[217,6368,231],{"class":230},[217,6370,235],{"class":234},[217,6372,6373],{"class":238},"'Stenbase.B2B.Pricing.View'",[217,6375,242],{"class":234},[217,6377,6378,6380],{"class":219,"line":245},[217,6379,3540],{"class":238},[217,6381,251],{"class":234},[217,6383,6384],{"class":219,"line":254},[217,6385,6386],{"class":238},"    'stenbase_b2b_pricing_table.tpl'\n",[217,6388,6389,6391,6393,6395,6397,6399,6401],{"class":219,"line":262},[217,6390,279],{"class":234},[217,6392,283],{"class":282},[217,6394,286],{"class":234},[217,6396,3571],{"class":289},[217,6398,293],{"class":234},[217,6400,296],{"class":289},[217,6402,309],{"class":234},[217,6404,6405,6407],{"class":219,"line":270},[217,6406,315],{"class":238},[217,6408,318],{"class":234},[217,6410,6411],{"class":219,"line":276},[217,6412,325],{"emptyLinePlaceholder":324},[217,6414,6415,6417,6419,6421],{"class":219,"line":312},[217,6416,331],{"class":282},[217,6418,3603],{"class":234},[217,6420,337],{"class":230},[217,6422,340],{"class":234},[217,6424,6425],{"class":219,"line":321},[217,6426,346],{"class":234},[217,6428,6429],{"class":219,"line":328},[217,6430,325],{"emptyLinePlaceholder":324},[217,6432,6433,6435,6437,6439],{"class":219,"line":343},[217,6434,1453],{"class":230},[217,6436,382],{"class":234},[217,6438,283],{"class":282},[217,6440,916],{"class":234},[217,6442,6443,6445,6448,6450,6452],{"class":219,"line":349},[217,6444,594],{"class":282},[217,6446,6447],{"class":234}," item ",[217,6449,489],{"class":282},[217,6451,602],{"class":364},[217,6453,6454],{"class":234},".model;\n",[217,6456,6457,6459,6462,6464,6467,6469,6471,6474,6476,6478],{"class":219,"line":354},[217,6458,594],{"class":282},[217,6460,6461],{"class":234}," pricing ",[217,6463,489],{"class":282},[217,6465,6466],{"class":234}," item.",[217,6468,980],{"class":230},[217,6470,235],{"class":234},[217,6472,6473],{"class":238},"'onlinecustomerprice_detail'",[217,6475,988],{"class":234},[217,6477,991],{"class":282},[217,6479,764],{"class":234},[217,6481,6482,6484,6487,6489,6492,6494],{"class":219,"line":376},[217,6483,594],{"class":282},[217,6485,6486],{"class":234}," quantityPricing ",[217,6488,489],{"class":282},[217,6490,6491],{"class":234}," pricing.priceschedule ",[217,6493,991],{"class":282},[217,6495,2968],{"class":234},[217,6497,6498],{"class":219,"line":390},[217,6499,325],{"emptyLinePlaceholder":324},[217,6501,6502,6504],{"class":219,"line":403},[217,6503,1699],{"class":282},[217,6505,492],{"class":234},[217,6507,6508,6511,6514],{"class":219,"line":414},[217,6509,6510],{"class":234},"                hasContractPrice: ",[217,6512,6513],{"class":282},"!!",[217,6515,6516],{"class":234},"pricing.onlinecustomerprice,\n",[217,6518,6519],{"class":219,"line":420},[217,6520,6521],{"class":234},"                contractPrice: pricing.onlinecustomerprice,\n",[217,6523,6524,6527,6529,6531,6534],{"class":219,"line":425},[217,6525,6526],{"class":234},"                listPrice: item.",[217,6528,980],{"class":230},[217,6530,235],{"class":234},[217,6532,6533],{"class":238},"'pricelevel1'",[217,6535,1187],{"class":234},[217,6537,6538,6541,6543,6545,6548],{"class":219,"line":442},[217,6539,6540],{"class":234},"                savingsPercent: ",[217,6542,464],{"class":364},[217,6544,367],{"class":234},[217,6546,6547],{"class":230},"calculateSavings",[217,6549,943],{"class":234},[217,6551,6552,6555,6557,6559,6561],{"class":219,"line":453},[217,6553,6554],{"class":234},"                    item.",[217,6556,980],{"class":230},[217,6558,235],{"class":234},[217,6560,6533],{"class":238},[217,6562,1187],{"class":234},[217,6564,6565],{"class":219,"line":475},[217,6566,6567],{"class":234},"                    pricing.onlinecustomerprice\n",[217,6569,6570],{"class":219,"line":480},[217,6571,2230],{"class":234},[217,6573,6574,6577,6579,6582,6585],{"class":219,"line":495},[217,6575,6576],{"class":234},"                hasQuantityBreaks: quantityPricing.",[217,6578,2318],{"class":364},[217,6580,6581],{"class":282}," >",[217,6583,6584],{"class":364}," 1",[217,6586,251],{"class":234},[217,6588,6589,6592,6595,6597,6599,6601,6604],{"class":219,"line":506},[217,6590,6591],{"class":234},"                quantityBreaks: quantityPricing.",[217,6593,6594],{"class":230},"map",[217,6596,235],{"class":234},[217,6598,283],{"class":282},[217,6600,286],{"class":234},[217,6602,6603],{"class":289},"tier",[217,6605,309],{"class":234},[217,6607,6608,6611],{"class":219,"line":516},[217,6609,6610],{"class":282},"                    return",[217,6612,492],{"class":234},[217,6614,6615],{"class":219,"line":526},[217,6616,6617],{"class":234},"                        minimumQuantity: tier.minimumquantity,\n",[217,6619,6620],{"class":219,"line":536},[217,6621,6622],{"class":234},"                        price: tier.price,\n",[217,6624,6625,6628,6631,6634,6637],{"class":219,"line":545},[217,6626,6627],{"class":234},"                        priceFormatted: ",[217,6629,6630],{"class":364},"SC",[217,6632,6633],{"class":234},".Utils.",[217,6635,6636],{"class":230},"formatCurrency",[217,6638,943],{"class":234},[217,6640,6641],{"class":219,"line":551},[217,6642,6643],{"class":234},"                            tier.price\n",[217,6645,6646],{"class":219,"line":557},[217,6647,6648],{"class":234},"                        )\n",[217,6650,6651],{"class":219,"line":562},[217,6652,6653],{"class":234},"                    };\n",[217,6655,6656],{"class":219,"line":579},[217,6657,6658],{"class":234},"                }),\n",[217,6660,6661,6664,6666],{"class":219,"line":591},[217,6662,6663],{"class":234},"                priceLevel: pricing.pricelevelname ",[217,6665,991],{"class":282},[217,6667,6668],{"class":238}," 'Standard'\n",[217,6670,6671],{"class":219,"line":607},[217,6672,548],{"class":234},[217,6674,6675],{"class":219,"line":612},[217,6676,554],{"class":234},[217,6678,6679],{"class":219,"line":623},[217,6680,325],{"emptyLinePlaceholder":324},[217,6682,6683,6686,6688,6690,6692,6695,6697,6700],{"class":219,"line":649},[217,6684,6685],{"class":230},"        calculateSavings",[217,6687,382],{"class":234},[217,6689,283],{"class":282},[217,6691,286],{"class":234},[217,6693,6694],{"class":289},"listPrice",[217,6696,293],{"class":234},[217,6698,6699],{"class":289},"contractPrice",[217,6701,309],{"class":234},[217,6703,6704,6706,6708,6710,6713,6715,6717,6720,6722,6724],{"class":219,"line":671},[217,6705,775],{"class":282},[217,6707,286],{"class":234},[217,6709,3868],{"class":282},[217,6711,6712],{"class":234},"listPrice ",[217,6714,991],{"class":282},[217,6716,3178],{"class":282},[217,6718,6719],{"class":234},"contractPrice) ",[217,6721,1568],{"class":282},[217,6723,3001],{"class":364},[217,6725,318],{"class":234},[217,6727,6728,6730,6733,6736],{"class":219,"line":693},[217,6729,1699],{"class":282},[217,6731,6732],{"class":234}," Math.",[217,6734,6735],{"class":230},"round",[217,6737,943],{"class":234},[217,6739,6740,6743,6746,6749,6752,6755,6758],{"class":219,"line":715},[217,6741,6742],{"class":234},"                ((listPrice ",[217,6744,6745],{"class":282},"-",[217,6747,6748],{"class":234}," contractPrice) ",[217,6750,6751],{"class":282},"\u002F",[217,6753,6754],{"class":234}," listPrice) ",[217,6756,6757],{"class":282},"*",[217,6759,6760],{"class":364}," 100\n",[217,6762,6763],{"class":219,"line":738},[217,6764,1330],{"class":234},[217,6766,6767],{"class":219,"line":743},[217,6768,1708],{"class":234},[217,6770,6771],{"class":219,"line":748},[217,6772,1714],{"class":234},[217,6774,6775],{"class":219,"line":754},[217,6776,1720],{"class":234},[207,6778,6780],{"className":1726,"code":6779,"language":1728,"meta":212,"style":212},"{{!-- Customer pricing display --}}\n\u003Cdiv class=\"b2b-pricing\">\n    {{#if hasContractPrice}}\n    \u003Cdiv class=\"pricing-contract\">\n        \u003Cspan class=\"your-price-label\">{{translate 'Your Price'}}\u003C\u002Fspan>\n        \u003Cspan class=\"your-price\">{{formatCurrency contractPrice}}\u003C\u002Fspan>\n        {{#if savingsPercent}}\n        \u003Cspan class=\"savings-badge\">\n            {{translate 'Save %(percent)d%' percent=savingsPercent}}\n        \u003C\u002Fspan>\n        {{\u002Fif}}\n        {{#if listPrice}}\n        \u003Cspan class=\"list-price strikethrough\">\n            {{translate 'List'}}: {{formatCurrency listPrice}}\n        \u003C\u002Fspan>\n        {{\u002Fif}}\n    \u003C\u002Fdiv>\n    {{\u002Fif}}\n\n    {{#if hasQuantityBreaks}}\n    \u003Cdiv class=\"pricing-tiers\">\n        \u003Ch4>{{translate 'Volume Pricing'}}\u003C\u002Fh4>\n        \u003Ctable class=\"pricing-tiers-table\">\n            \u003Cthead>\n                \u003Ctr>\n                    \u003Cth>{{translate 'Quantity'}}\u003C\u002Fth>\n                    \u003Cth>{{translate 'Price Each'}}\u003C\u002Fth>\n                \u003C\u002Ftr>\n            \u003C\u002Fthead>\n            \u003Ctbody>\n                {{#each quantityBreaks}}\n                \u003Ctr>\n                    \u003Ctd>{{minimumQuantity}}+\u003C\u002Ftd>\n                    \u003Ctd>{{priceFormatted}}\u003C\u002Ftd>\n                \u003C\u002Ftr>\n                {{\u002Feach}}\n            \u003C\u002Ftbody>\n        \u003C\u002Ftable>\n    \u003C\u002Fdiv>\n    {{\u002Fif}}\n\u003C\u002Fdiv>\n",[214,6781,6782,6787,6792,6797,6802,6807,6812,6817,6822,6827,6832,6837,6842,6847,6852,6856,6860,6864,6869,6873,6878,6883,6888,6893,6898,6903,6908,6913,6918,6923,6928,6933,6937,6942,6947,6951,6956,6961,6966,6970,6974],{"__ignoreMap":212},[217,6783,6784],{"class":219,"line":220},[217,6785,6786],{},"{{!-- Customer pricing display --}}\n",[217,6788,6789],{"class":219,"line":227},[217,6790,6791],{},"\u003Cdiv class=\"b2b-pricing\">\n",[217,6793,6794],{"class":219,"line":245},[217,6795,6796],{},"    {{#if hasContractPrice}}\n",[217,6798,6799],{"class":219,"line":254},[217,6800,6801],{},"    \u003Cdiv class=\"pricing-contract\">\n",[217,6803,6804],{"class":219,"line":262},[217,6805,6806],{},"        \u003Cspan class=\"your-price-label\">{{translate 'Your Price'}}\u003C\u002Fspan>\n",[217,6808,6809],{"class":219,"line":270},[217,6810,6811],{},"        \u003Cspan class=\"your-price\">{{formatCurrency contractPrice}}\u003C\u002Fspan>\n",[217,6813,6814],{"class":219,"line":276},[217,6815,6816],{},"        {{#if savingsPercent}}\n",[217,6818,6819],{"class":219,"line":312},[217,6820,6821],{},"        \u003Cspan class=\"savings-badge\">\n",[217,6823,6824],{"class":219,"line":321},[217,6825,6826],{},"            {{translate 'Save %(percent)d%' percent=savingsPercent}}\n",[217,6828,6829],{"class":219,"line":328},[217,6830,6831],{},"        \u003C\u002Fspan>\n",[217,6833,6834],{"class":219,"line":343},[217,6835,6836],{},"        {{\u002Fif}}\n",[217,6838,6839],{"class":219,"line":349},[217,6840,6841],{},"        {{#if listPrice}}\n",[217,6843,6844],{"class":219,"line":354},[217,6845,6846],{},"        \u003Cspan class=\"list-price strikethrough\">\n",[217,6848,6849],{"class":219,"line":376},[217,6850,6851],{},"            {{translate 'List'}}: {{formatCurrency listPrice}}\n",[217,6853,6854],{"class":219,"line":390},[217,6855,6831],{},[217,6857,6858],{"class":219,"line":403},[217,6859,6836],{},[217,6861,6862],{"class":219,"line":414},[217,6863,2027],{},[217,6865,6866],{"class":219,"line":420},[217,6867,6868],{},"    {{\u002Fif}}\n",[217,6870,6871],{"class":219,"line":425},[217,6872,325],{"emptyLinePlaceholder":324},[217,6874,6875],{"class":219,"line":442},[217,6876,6877],{},"    {{#if hasQuantityBreaks}}\n",[217,6879,6880],{"class":219,"line":453},[217,6881,6882],{},"    \u003Cdiv class=\"pricing-tiers\">\n",[217,6884,6885],{"class":219,"line":475},[217,6886,6887],{},"        \u003Ch4>{{translate 'Volume Pricing'}}\u003C\u002Fh4>\n",[217,6889,6890],{"class":219,"line":480},[217,6891,6892],{},"        \u003Ctable class=\"pricing-tiers-table\">\n",[217,6894,6895],{"class":219,"line":495},[217,6896,6897],{},"            \u003Cthead>\n",[217,6899,6900],{"class":219,"line":506},[217,6901,6902],{},"                \u003Ctr>\n",[217,6904,6905],{"class":219,"line":516},[217,6906,6907],{},"                    \u003Cth>{{translate 'Quantity'}}\u003C\u002Fth>\n",[217,6909,6910],{"class":219,"line":526},[217,6911,6912],{},"                    \u003Cth>{{translate 'Price Each'}}\u003C\u002Fth>\n",[217,6914,6915],{"class":219,"line":536},[217,6916,6917],{},"                \u003C\u002Ftr>\n",[217,6919,6920],{"class":219,"line":545},[217,6921,6922],{},"            \u003C\u002Fthead>\n",[217,6924,6925],{"class":219,"line":551},[217,6926,6927],{},"            \u003Ctbody>\n",[217,6929,6930],{"class":219,"line":557},[217,6931,6932],{},"                {{#each quantityBreaks}}\n",[217,6934,6935],{"class":219,"line":562},[217,6936,6902],{},[217,6938,6939],{"class":219,"line":579},[217,6940,6941],{},"                    \u003Ctd>{{minimumQuantity}}+\u003C\u002Ftd>\n",[217,6943,6944],{"class":219,"line":591},[217,6945,6946],{},"                    \u003Ctd>{{priceFormatted}}\u003C\u002Ftd>\n",[217,6948,6949],{"class":219,"line":607},[217,6950,6917],{},[217,6952,6953],{"class":219,"line":612},[217,6954,6955],{},"                {{\u002Feach}}\n",[217,6957,6958],{"class":219,"line":623},[217,6959,6960],{},"            \u003C\u002Ftbody>\n",[217,6962,6963],{"class":219,"line":649},[217,6964,6965],{},"        \u003C\u002Ftable>\n",[217,6967,6968],{"class":219,"line":671},[217,6969,2027],{},[217,6971,6972],{"class":219,"line":693},[217,6973,6868],{},[217,6975,6976],{"class":219,"line":715},[217,6977,2032],{},[15,6979,6980],{},"Transparent pricing builds trust and reduces calls to your sales team asking \"What's my price on this?\"",[29,6982],{},[32,6984,82],{"id":6985},"feature-6-invoice-and-payment-history",[15,6987,6988,6337,6990,6340,6992,190],{},[18,6989,181],{},[18,6991,185],{},[18,6993,189],{},[192,6995,195],{"id":6996},"the-problem-5",[15,6998,6999],{},"B2B buyers on Net 30\u002F60\u002F90 terms need to manage their outstanding invoices. Default MyAccount shows order history but not invoices, aging balances, or payment history. Finance teams are forced to call or email for invoice copies.",[192,7001,202],{"id":7002},"the-solution-5",[15,7004,7005],{},"Build an invoice management module that pulls from NetSuite's invoice records and displays aging, payment history, and downloadable PDFs.",[207,7007,7009],{"className":209,"code":7008,"language":211,"meta":212,"style":212},"\u002F\u002F Invoice Dashboard Model\ndefine('Stenbase.B2B.Invoice.Collection', [\n    'Backbone',\n    'underscore'\n], function (Backbone, _) {\n    'use strict';\n\n    var InvoiceModel = Backbone.Model.extend({\n        urlRoot: _.getAbsoluteUrl(\n            'services\u002FStenbase.Invoice.Service.ss'\n        )\n    });\n\n    var InvoiceCollection = Backbone.Collection.extend({\n        model: InvoiceModel,\n\n        url: _.getAbsoluteUrl(\n            'services\u002FStenbase.Invoice.Service.ss'\n        ),\n\n        getSummary: function () {\n            var invoices = this.models;\n\n            return {\n                totalOutstanding: _.reduce(invoices,\n                    function (sum, inv) {\n                        return sum + (inv.get('amountremaining') || 0);\n                    }, 0),\n                current: this.getAgingBucket(0, 30),\n                thirtyDay: this.getAgingBucket(31, 60),\n                sixtyDay: this.getAgingBucket(61, 90),\n                ninetyPlus: this.getAgingBucket(91, Infinity),\n                overdueCount: this.filter(function (inv) {\n                    return inv.get('isOverdue');\n                }).length\n            };\n        },\n\n        getAgingBucket: function (minDays, maxDays) {\n            return this.reduce(function (sum, inv) {\n                var age = inv.get('daysOutstanding') || 0;\n                if (age >= minDays && age \u003C= maxDays) {\n                    return sum + (inv.get('amountremaining') || 0);\n                }\n                return sum;\n            }, 0);\n        }\n    });\n\n    return InvoiceCollection;\n});\n",[214,7010,7011,7016,7027,7033,7037,7053,7059,7063,7079,7088,7093,7098,7102,7106,7122,7127,7131,7140,7144,7149,7153,7164,7178,7182,7188,7199,7216,7244,7253,7276,7299,7322,7345,7366,7382,7390,7394,7398,7402,7423,7447,7473,7495,7519,7523,7530,7539,7543,7547,7551,7558],{"__ignoreMap":212},[217,7012,7013],{"class":219,"line":220},[217,7014,7015],{"class":223},"\u002F\u002F Invoice Dashboard Model\n",[217,7017,7018,7020,7022,7025],{"class":219,"line":227},[217,7019,231],{"class":230},[217,7021,235],{"class":234},[217,7023,7024],{"class":238},"'Stenbase.B2B.Invoice.Collection'",[217,7026,242],{"class":234},[217,7028,7029,7031],{"class":219,"line":245},[217,7030,3540],{"class":238},[217,7032,251],{"class":234},[217,7034,7035],{"class":219,"line":254},[217,7036,2106],{"class":238},[217,7038,7039,7041,7043,7045,7047,7049,7051],{"class":219,"line":262},[217,7040,279],{"class":234},[217,7042,283],{"class":282},[217,7044,286],{"class":234},[217,7046,3571],{"class":289},[217,7048,293],{"class":234},[217,7050,301],{"class":289},[217,7052,309],{"class":234},[217,7054,7055,7057],{"class":219,"line":270},[217,7056,315],{"class":238},[217,7058,318],{"class":234},[217,7060,7061],{"class":219,"line":276},[217,7062,325],{"emptyLinePlaceholder":324},[217,7064,7065,7067,7070,7072,7075,7077],{"class":219,"line":312},[217,7066,5945],{"class":282},[217,7068,7069],{"class":234}," InvoiceModel ",[217,7071,489],{"class":282},[217,7073,7074],{"class":234}," Backbone.Model.",[217,7076,337],{"class":230},[217,7078,340],{"class":234},[217,7080,7081,7084,7086],{"class":219,"line":321},[217,7082,7083],{"class":234},"        urlRoot: _.",[217,7085,2218],{"class":230},[217,7087,943],{"class":234},[217,7089,7090],{"class":219,"line":328},[217,7091,7092],{"class":238},"            'services\u002FStenbase.Invoice.Service.ss'\n",[217,7094,7095],{"class":219,"line":343},[217,7096,7097],{"class":234},"        )\n",[217,7099,7100],{"class":219,"line":349},[217,7101,1714],{"class":234},[217,7103,7104],{"class":219,"line":354},[217,7105,325],{"emptyLinePlaceholder":324},[217,7107,7108,7110,7113,7115,7118,7120],{"class":219,"line":376},[217,7109,5945],{"class":282},[217,7111,7112],{"class":234}," InvoiceCollection ",[217,7114,489],{"class":282},[217,7116,7117],{"class":234}," Backbone.Collection.",[217,7119,337],{"class":230},[217,7121,340],{"class":234},[217,7123,7124],{"class":219,"line":390},[217,7125,7126],{"class":234},"        model: InvoiceModel,\n",[217,7128,7129],{"class":219,"line":403},[217,7130,325],{"emptyLinePlaceholder":324},[217,7132,7133,7136,7138],{"class":219,"line":414},[217,7134,7135],{"class":234},"        url: _.",[217,7137,2218],{"class":230},[217,7139,943],{"class":234},[217,7141,7142],{"class":219,"line":420},[217,7143,7092],{"class":238},[217,7145,7146],{"class":219,"line":425},[217,7147,7148],{"class":234},"        ),\n",[217,7150,7151],{"class":219,"line":442},[217,7152,325],{"emptyLinePlaceholder":324},[217,7154,7155,7158,7160,7162],{"class":219,"line":453},[217,7156,7157],{"class":230},"        getSummary",[217,7159,382],{"class":234},[217,7161,283],{"class":282},[217,7163,916],{"class":234},[217,7165,7166,7168,7171,7173,7175],{"class":219,"line":475},[217,7167,594],{"class":282},[217,7169,7170],{"class":234}," invoices ",[217,7172,489],{"class":282},[217,7174,602],{"class":364},[217,7176,7177],{"class":234},".models;\n",[217,7179,7180],{"class":219,"line":480},[217,7181,325],{"emptyLinePlaceholder":324},[217,7183,7184,7186],{"class":219,"line":495},[217,7185,1699],{"class":282},[217,7187,492],{"class":234},[217,7189,7190,7193,7196],{"class":219,"line":506},[217,7191,7192],{"class":234},"                totalOutstanding: _.",[217,7194,7195],{"class":230},"reduce",[217,7197,7198],{"class":234},"(invoices,\n",[217,7200,7201,7204,7206,7209,7211,7214],{"class":219,"line":516},[217,7202,7203],{"class":282},"                    function",[217,7205,286],{"class":234},[217,7207,7208],{"class":289},"sum",[217,7210,293],{"class":234},[217,7212,7213],{"class":289},"inv",[217,7215,309],{"class":234},[217,7217,7218,7221,7224,7226,7229,7231,7233,7236,7238,7240,7242],{"class":219,"line":526},[217,7219,7220],{"class":282},"                        return",[217,7222,7223],{"class":234}," sum ",[217,7225,1269],{"class":282},[217,7227,7228],{"class":234}," (inv.",[217,7230,980],{"class":230},[217,7232,235],{"class":234},[217,7234,7235],{"class":238},"'amountremaining'",[217,7237,988],{"class":234},[217,7239,991],{"class":282},[217,7241,3001],{"class":364},[217,7243,472],{"class":234},[217,7245,7246,7249,7251],{"class":219,"line":536},[217,7247,7248],{"class":234},"                    }, ",[217,7250,1416],{"class":364},[217,7252,1187],{"class":234},[217,7254,7255,7258,7260,7262,7265,7267,7269,7271,7274],{"class":219,"line":545},[217,7256,7257],{"class":234},"                current: ",[217,7259,464],{"class":364},[217,7261,367],{"class":234},[217,7263,7264],{"class":230},"getAgingBucket",[217,7266,235],{"class":234},[217,7268,1416],{"class":364},[217,7270,293],{"class":234},[217,7272,7273],{"class":364},"30",[217,7275,1187],{"class":234},[217,7277,7278,7281,7283,7285,7287,7289,7292,7294,7297],{"class":219,"line":551},[217,7279,7280],{"class":234},"                thirtyDay: ",[217,7282,464],{"class":364},[217,7284,367],{"class":234},[217,7286,7264],{"class":230},[217,7288,235],{"class":234},[217,7290,7291],{"class":364},"31",[217,7293,293],{"class":234},[217,7295,7296],{"class":364},"60",[217,7298,1187],{"class":234},[217,7300,7301,7304,7306,7308,7310,7312,7315,7317,7320],{"class":219,"line":557},[217,7302,7303],{"class":234},"                sixtyDay: ",[217,7305,464],{"class":364},[217,7307,367],{"class":234},[217,7309,7264],{"class":230},[217,7311,235],{"class":234},[217,7313,7314],{"class":364},"61",[217,7316,293],{"class":234},[217,7318,7319],{"class":364},"90",[217,7321,1187],{"class":234},[217,7323,7324,7327,7329,7331,7333,7335,7338,7340,7343],{"class":219,"line":562},[217,7325,7326],{"class":234},"                ninetyPlus: ",[217,7328,464],{"class":364},[217,7330,367],{"class":234},[217,7332,7264],{"class":230},[217,7334,235],{"class":234},[217,7336,7337],{"class":364},"91",[217,7339,293],{"class":234},[217,7341,7342],{"class":364},"Infinity",[217,7344,1187],{"class":234},[217,7346,7347,7350,7352,7354,7356,7358,7360,7362,7364],{"class":219,"line":579},[217,7348,7349],{"class":234},"                overdueCount: ",[217,7351,464],{"class":364},[217,7353,367],{"class":234},[217,7355,952],{"class":230},[217,7357,235],{"class":234},[217,7359,283],{"class":282},[217,7361,286],{"class":234},[217,7363,7213],{"class":289},[217,7365,309],{"class":234},[217,7367,7368,7370,7373,7375,7377,7380],{"class":219,"line":591},[217,7369,6610],{"class":282},[217,7371,7372],{"class":234}," inv.",[217,7374,980],{"class":230},[217,7376,235],{"class":234},[217,7378,7379],{"class":238},"'isOverdue'",[217,7381,472],{"class":234},[217,7383,7384,7387],{"class":219,"line":607},[217,7385,7386],{"class":234},"                }).",[217,7388,7389],{"class":364},"length\n",[217,7391,7392],{"class":219,"line":612},[217,7393,548],{"class":234},[217,7395,7396],{"class":219,"line":623},[217,7397,554],{"class":234},[217,7399,7400],{"class":219,"line":649},[217,7401,325],{"emptyLinePlaceholder":324},[217,7403,7404,7407,7409,7411,7413,7416,7418,7421],{"class":219,"line":671},[217,7405,7406],{"class":230},"        getAgingBucket",[217,7408,382],{"class":234},[217,7410,283],{"class":282},[217,7412,286],{"class":234},[217,7414,7415],{"class":289},"minDays",[217,7417,293],{"class":234},[217,7419,7420],{"class":289},"maxDays",[217,7422,309],{"class":234},[217,7424,7425,7427,7429,7431,7433,7435,7437,7439,7441,7443,7445],{"class":219,"line":693},[217,7426,1699],{"class":282},[217,7428,602],{"class":364},[217,7430,367],{"class":234},[217,7432,7195],{"class":230},[217,7434,235],{"class":234},[217,7436,283],{"class":282},[217,7438,286],{"class":234},[217,7440,7208],{"class":289},[217,7442,293],{"class":234},[217,7444,7213],{"class":289},[217,7446,309],{"class":234},[217,7448,7449,7451,7454,7456,7458,7460,7462,7465,7467,7469,7471],{"class":219,"line":715},[217,7450,4366],{"class":282},[217,7452,7453],{"class":234}," age ",[217,7455,489],{"class":282},[217,7457,7372],{"class":234},[217,7459,980],{"class":230},[217,7461,235],{"class":234},[217,7463,7464],{"class":238},"'daysOutstanding'",[217,7466,988],{"class":234},[217,7468,991],{"class":282},[217,7470,3001],{"class":364},[217,7472,318],{"class":234},[217,7474,7475,7477,7480,7482,7485,7487,7489,7492],{"class":219,"line":738},[217,7476,928],{"class":282},[217,7478,7479],{"class":234}," (age ",[217,7481,3436],{"class":282},[217,7483,7484],{"class":234}," minDays ",[217,7486,2312],{"class":282},[217,7488,7453],{"class":234},[217,7490,7491],{"class":282},"\u003C=",[217,7493,7494],{"class":234}," maxDays) {\n",[217,7496,7497,7499,7501,7503,7505,7507,7509,7511,7513,7515,7517],{"class":219,"line":743},[217,7498,6610],{"class":282},[217,7500,7223],{"class":234},[217,7502,1269],{"class":282},[217,7504,7228],{"class":234},[217,7506,980],{"class":230},[217,7508,235],{"class":234},[217,7510,7235],{"class":238},[217,7512,988],{"class":234},[217,7514,991],{"class":282},[217,7516,3001],{"class":364},[217,7518,472],{"class":234},[217,7520,7521],{"class":219,"line":748},[217,7522,1061],{"class":234},[217,7524,7525,7527],{"class":219,"line":754},[217,7526,3896],{"class":282},[217,7528,7529],{"class":234}," sum;\n",[217,7531,7532,7535,7537],{"class":219,"line":767},[217,7533,7534],{"class":234},"            }, ",[217,7536,1416],{"class":364},[217,7538,472],{"class":234},[217,7540,7541],{"class":219,"line":772},[217,7542,1708],{"class":234},[217,7544,7545],{"class":219,"line":785},[217,7546,1714],{"class":234},[217,7548,7549],{"class":219,"line":798},[217,7550,325],{"emptyLinePlaceholder":324},[217,7552,7553,7555],{"class":219,"line":804},[217,7554,331],{"class":282},[217,7556,7557],{"class":234}," InvoiceCollection;\n",[217,7559,7560],{"class":219,"line":816},[217,7561,1720],{"class":234},[15,7563,7564],{},"The dashboard should display an aging summary at the top, making it immediately obvious what's owed and what's overdue:",[207,7566,7568],{"className":1726,"code":7567,"language":1728,"meta":212,"style":212},"{{!-- Invoice aging summary --}}\n\u003Cdiv class=\"invoice-aging-summary\">\n    \u003Ch2>{{translate 'Account Balance'}}\u003C\u002Fh2>\n\n    \u003Cdiv class=\"aging-cards\">\n        \u003Cdiv class=\"aging-card\">\n            \u003Cspan class=\"aging-label\">{{translate 'Current'}}\u003C\u002Fspan>\n            \u003Cspan class=\"aging-amount\">\n                {{formatCurrency summary.current}}\n            \u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"aging-card\">\n            \u003Cspan class=\"aging-label\">{{translate '31-60 Days'}}\u003C\u002Fspan>\n            \u003Cspan class=\"aging-amount\">\n                {{formatCurrency summary.thirtyDay}}\n            \u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"aging-card {{#if summary.sixtyDay}}warning{{\u002Fif}}\">\n            \u003Cspan class=\"aging-label\">{{translate '61-90 Days'}}\u003C\u002Fspan>\n            \u003Cspan class=\"aging-amount\">\n                {{formatCurrency summary.sixtyDay}}\n            \u003C\u002Fspan>\n        \u003C\u002Fdiv>\n        \u003Cdiv class=\"aging-card {{#if summary.ninetyPlus}}danger{{\u002Fif}}\">\n            \u003Cspan class=\"aging-label\">{{translate '90+ Days'}}\u003C\u002Fspan>\n            \u003Cspan class=\"aging-amount\">\n                {{formatCurrency summary.ninetyPlus}}\n            \u003C\u002Fspan>\n        \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"total-outstanding\">\n        \u003Cspan>{{translate 'Total Outstanding'}}\u003C\u002Fspan>\n        \u003Cspan class=\"total-amount\">\n            {{formatCurrency summary.totalOutstanding}}\n        \u003C\u002Fspan>\n    \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n",[214,7569,7570,7575,7580,7585,7589,7594,7599,7604,7609,7614,7619,7623,7627,7632,7636,7641,7645,7649,7654,7659,7663,7668,7672,7676,7681,7686,7690,7695,7699,7703,7707,7711,7716,7721,7726,7731,7735,7739],{"__ignoreMap":212},[217,7571,7572],{"class":219,"line":220},[217,7573,7574],{},"{{!-- Invoice aging summary --}}\n",[217,7576,7577],{"class":219,"line":227},[217,7578,7579],{},"\u003Cdiv class=\"invoice-aging-summary\">\n",[217,7581,7582],{"class":219,"line":245},[217,7583,7584],{},"    \u003Ch2>{{translate 'Account Balance'}}\u003C\u002Fh2>\n",[217,7586,7587],{"class":219,"line":254},[217,7588,325],{"emptyLinePlaceholder":324},[217,7590,7591],{"class":219,"line":262},[217,7592,7593],{},"    \u003Cdiv class=\"aging-cards\">\n",[217,7595,7596],{"class":219,"line":270},[217,7597,7598],{},"        \u003Cdiv class=\"aging-card\">\n",[217,7600,7601],{"class":219,"line":276},[217,7602,7603],{},"            \u003Cspan class=\"aging-label\">{{translate 'Current'}}\u003C\u002Fspan>\n",[217,7605,7606],{"class":219,"line":312},[217,7607,7608],{},"            \u003Cspan class=\"aging-amount\">\n",[217,7610,7611],{"class":219,"line":321},[217,7612,7613],{},"                {{formatCurrency summary.current}}\n",[217,7615,7616],{"class":219,"line":328},[217,7617,7618],{},"            \u003C\u002Fspan>\n",[217,7620,7621],{"class":219,"line":343},[217,7622,1885],{},[217,7624,7625],{"class":219,"line":349},[217,7626,7598],{},[217,7628,7629],{"class":219,"line":354},[217,7630,7631],{},"            \u003Cspan class=\"aging-label\">{{translate '31-60 Days'}}\u003C\u002Fspan>\n",[217,7633,7634],{"class":219,"line":376},[217,7635,7608],{},[217,7637,7638],{"class":219,"line":390},[217,7639,7640],{},"                {{formatCurrency summary.thirtyDay}}\n",[217,7642,7643],{"class":219,"line":403},[217,7644,7618],{},[217,7646,7647],{"class":219,"line":414},[217,7648,1885],{},[217,7650,7651],{"class":219,"line":420},[217,7652,7653],{},"        \u003Cdiv class=\"aging-card {{#if summary.sixtyDay}}warning{{\u002Fif}}\">\n",[217,7655,7656],{"class":219,"line":425},[217,7657,7658],{},"            \u003Cspan class=\"aging-label\">{{translate '61-90 Days'}}\u003C\u002Fspan>\n",[217,7660,7661],{"class":219,"line":442},[217,7662,7608],{},[217,7664,7665],{"class":219,"line":453},[217,7666,7667],{},"                {{formatCurrency summary.sixtyDay}}\n",[217,7669,7670],{"class":219,"line":475},[217,7671,7618],{},[217,7673,7674],{"class":219,"line":480},[217,7675,1885],{},[217,7677,7678],{"class":219,"line":495},[217,7679,7680],{},"        \u003Cdiv class=\"aging-card {{#if summary.ninetyPlus}}danger{{\u002Fif}}\">\n",[217,7682,7683],{"class":219,"line":506},[217,7684,7685],{},"            \u003Cspan class=\"aging-label\">{{translate '90+ Days'}}\u003C\u002Fspan>\n",[217,7687,7688],{"class":219,"line":516},[217,7689,7608],{},[217,7691,7692],{"class":219,"line":526},[217,7693,7694],{},"                {{formatCurrency summary.ninetyPlus}}\n",[217,7696,7697],{"class":219,"line":536},[217,7698,7618],{},[217,7700,7701],{"class":219,"line":545},[217,7702,1885],{},[217,7704,7705],{"class":219,"line":551},[217,7706,2027],{},[217,7708,7709],{"class":219,"line":557},[217,7710,325],{"emptyLinePlaceholder":324},[217,7712,7713],{"class":219,"line":562},[217,7714,7715],{},"    \u003Cdiv class=\"total-outstanding\">\n",[217,7717,7718],{"class":219,"line":579},[217,7719,7720],{},"        \u003Cspan>{{translate 'Total Outstanding'}}\u003C\u002Fspan>\n",[217,7722,7723],{"class":219,"line":591},[217,7724,7725],{},"        \u003Cspan class=\"total-amount\">\n",[217,7727,7728],{"class":219,"line":607},[217,7729,7730],{},"            {{formatCurrency summary.totalOutstanding}}\n",[217,7732,7733],{"class":219,"line":612},[217,7734,6831],{},[217,7736,7737],{"class":219,"line":623},[217,7738,2027],{},[217,7740,7741],{"class":219,"line":649},[217,7742,2032],{},[15,7744,7745,7746,7749],{},"Add the ability to download invoice PDFs directly. NetSuite can generate these via a Suitelet that calls ",[214,7747,7748],{},"render.transaction()"," to produce the PDF on demand.",[29,7751],{},[32,7753,88],{"id":7754},"feature-7-saved-carts-and-shopping-lists",[15,7756,7757,2049,7759,6340,7761,7763],{},[18,7758,181],{},[18,7760,185],{},[18,7762,189],{}," Medium–High",[192,7765,195],{"id":7766},"the-problem-6",[15,7768,7769],{},"B2B buyers maintain recurring material lists—weekly supply orders, project BOMs, standard stocking orders. Without saved lists, they rebuild these orders from scratch every time or keep a spreadsheet beside their browser.",[192,7771,202],{"id":7772},"the-solution-6",[15,7774,7775],{},"SuiteCommerce supports product lists natively, but the default implementation is consumer-oriented (\"Wish Lists\"). Rebrand and extend it for B2B use.",[207,7777,7779],{"className":209,"code":7778,"language":211,"meta":212,"style":212},"\u002F\u002F Rename and extend Product Lists for B2B\ndefine('Stenbase.B2B.ShoppingLists.View', [\n    'ProductList.Lists.View',\n    'stenbase_b2b_shopping_lists.tpl'\n], function (ProductListsView, template) {\n    'use strict';\n\n    return ProductListsView.extend({\n        template: template,\n\n        getContext: function () {\n            var context = ProductListsView\n                .prototype.getContext.apply(this, arguments);\n\n            \u002F\u002F Rebrand for B2B\n            context.pageTitle = 'Shopping Lists';\n            context.createButtonLabel = 'Create New List';\n\n            \u002F\u002F Add estimated totals per list\n            context.lists = context.lists.map(function (list) {\n                list.estimatedTotal = list.items.reduce(\n                    function (sum, item) {\n                        return sum + (\n                            (item.price || 0) * (item.quantity || 1)\n                        );\n                    }, 0\n                );\n                list.itemCountLabel = list.items.length +\n                    (list.items.length === 1 ? ' item' : ' items');\n                return list;\n            });\n\n            return context;\n        },\n\n        events: _.extend(ProductListsView.prototype.events, {\n            'click [data-action=\"add-list-to-cart\"]':\n                'addEntireListToCart',\n            'click [data-action=\"share-list\"]': 'shareList'\n        }),\n\n        addEntireListToCart: function (e) {\n            e.preventDefault();\n            var listId = jQuery(e.currentTarget).data('list-id');\n            var list = this.collection.get(listId);\n\n            if (!list) return;\n\n            var items = list.get('items') || [];\n            var cart = this.options.application.getComponent('Cart');\n\n            \u002F\u002F Add all items sequentially\n            var addPromises = items.map(function (item) {\n                return cart.addLine({\n                    item: { internalid: item.item.internalid },\n                    quantity: item.quantity || 1\n                });\n            });\n\n            jQuery.when.apply(jQuery, addPromises)\n                .done(function () {\n                    SC.Application('MyAccount').getLayout()\n                        .showMessage(\n                            items.length +\n                            ' items added to cart from list.',\n                            'success'\n                        );\n                });\n        },\n\n        shareList: function (e) {\n            e.preventDefault();\n            var listId = jQuery(e.currentTarget).data('list-id');\n\n            \u002F\u002F Generate shareable link for other users\n            \u002F\u002F on the same account\n            var shareUrl = window.location.origin +\n                '\u002Fmy_account?#shopping-lists\u002F' +\n                listId + '?shared=true';\n\n            \u002F\u002F Copy to clipboard\n            navigator.clipboard.writeText(shareUrl).then(function () {\n                SC.Application('MyAccount').getLayout()\n                    .showMessage(\n                        'List link copied to clipboard.',\n                        'success'\n                    );\n            });\n        }\n    });\n});\n",[214,7780,7781,7786,7797,7804,7809,7826,7832,7836,7847,7851,7855,7865,7876,7896,7900,7905,7917,7929,7933,7938,7961,7975,7990,8001,8023,8028,8035,8039,8052,8078,8085,8089,8093,8099,8103,8107,8123,8131,8138,8148,8152,8156,8171,8179,8203,8221,8225,8240,8244,8269,8290,8294,8299,8323,8334,8339,8349,8353,8357,8361,8371,8383,8402,8410,8419,8426,8431,8435,8439,8443,8447,8462,8470,8490,8494,8499,8504,8519,8526,8538,8542,8547,8567,8586,8595,8602,8607,8611,8615,8619,8623],{"__ignoreMap":212},[217,7782,7783],{"class":219,"line":220},[217,7784,7785],{"class":223},"\u002F\u002F Rename and extend Product Lists for B2B\n",[217,7787,7788,7790,7792,7795],{"class":219,"line":227},[217,7789,231],{"class":230},[217,7791,235],{"class":234},[217,7793,7794],{"class":238},"'Stenbase.B2B.ShoppingLists.View'",[217,7796,242],{"class":234},[217,7798,7799,7802],{"class":219,"line":245},[217,7800,7801],{"class":238},"    'ProductList.Lists.View'",[217,7803,251],{"class":234},[217,7805,7806],{"class":219,"line":254},[217,7807,7808],{"class":238},"    'stenbase_b2b_shopping_lists.tpl'\n",[217,7810,7811,7813,7815,7817,7820,7822,7824],{"class":219,"line":262},[217,7812,279],{"class":234},[217,7814,283],{"class":282},[217,7816,286],{"class":234},[217,7818,7819],{"class":289},"ProductListsView",[217,7821,293],{"class":234},[217,7823,296],{"class":289},[217,7825,309],{"class":234},[217,7827,7828,7830],{"class":219,"line":270},[217,7829,315],{"class":238},[217,7831,318],{"class":234},[217,7833,7834],{"class":219,"line":276},[217,7835,325],{"emptyLinePlaceholder":324},[217,7837,7838,7840,7843,7845],{"class":219,"line":312},[217,7839,331],{"class":282},[217,7841,7842],{"class":234}," ProductListsView.",[217,7844,337],{"class":230},[217,7846,340],{"class":234},[217,7848,7849],{"class":219,"line":321},[217,7850,346],{"class":234},[217,7852,7853],{"class":219,"line":328},[217,7854,325],{"emptyLinePlaceholder":324},[217,7856,7857,7859,7861,7863],{"class":219,"line":343},[217,7858,1453],{"class":230},[217,7860,382],{"class":234},[217,7862,283],{"class":282},[217,7864,916],{"class":234},[217,7866,7867,7869,7871,7873],{"class":219,"line":349},[217,7868,594],{"class":282},[217,7870,1467],{"class":234},[217,7872,489],{"class":282},[217,7874,7875],{"class":234}," ProductListsView\n",[217,7877,7878,7880,7882,7884,7886,7888,7890,7892,7894],{"class":219,"line":354},[217,7879,1478],{"class":234},[217,7881,370],{"class":364},[217,7883,1483],{"class":234},[217,7885,459],{"class":230},[217,7887,235],{"class":234},[217,7889,464],{"class":364},[217,7891,293],{"class":234},[217,7893,469],{"class":364},[217,7895,472],{"class":234},[217,7897,7898],{"class":219,"line":376},[217,7899,325],{"emptyLinePlaceholder":324},[217,7901,7902],{"class":219,"line":390},[217,7903,7904],{"class":223},"            \u002F\u002F Rebrand for B2B\n",[217,7906,7907,7910,7912,7915],{"class":219,"line":403},[217,7908,7909],{"class":234},"            context.pageTitle ",[217,7911,489],{"class":282},[217,7913,7914],{"class":238}," 'Shopping Lists'",[217,7916,318],{"class":234},[217,7918,7919,7922,7924,7927],{"class":219,"line":414},[217,7920,7921],{"class":234},"            context.createButtonLabel ",[217,7923,489],{"class":282},[217,7925,7926],{"class":238}," 'Create New List'",[217,7928,318],{"class":234},[217,7930,7931],{"class":219,"line":420},[217,7932,325],{"emptyLinePlaceholder":324},[217,7934,7935],{"class":219,"line":425},[217,7936,7937],{"class":223},"            \u002F\u002F Add estimated totals per list\n",[217,7939,7940,7943,7945,7948,7950,7952,7954,7956,7959],{"class":219,"line":442},[217,7941,7942],{"class":234},"            context.lists ",[217,7944,489],{"class":282},[217,7946,7947],{"class":234}," context.lists.",[217,7949,6594],{"class":230},[217,7951,235],{"class":234},[217,7953,283],{"class":282},[217,7955,286],{"class":234},[217,7957,7958],{"class":289},"list",[217,7960,309],{"class":234},[217,7962,7963,7966,7968,7971,7973],{"class":219,"line":453},[217,7964,7965],{"class":234},"                list.estimatedTotal ",[217,7967,489],{"class":282},[217,7969,7970],{"class":234}," list.items.",[217,7972,7195],{"class":230},[217,7974,943],{"class":234},[217,7976,7977,7979,7981,7983,7985,7988],{"class":219,"line":475},[217,7978,7203],{"class":282},[217,7980,286],{"class":234},[217,7982,7208],{"class":289},[217,7984,293],{"class":234},[217,7986,7987],{"class":289},"item",[217,7989,309],{"class":234},[217,7991,7992,7994,7996,7998],{"class":219,"line":480},[217,7993,7220],{"class":282},[217,7995,7223],{"class":234},[217,7997,1269],{"class":282},[217,7999,8000],{"class":234}," (\n",[217,8002,8003,8006,8008,8010,8012,8014,8017,8019,8021],{"class":219,"line":495},[217,8004,8005],{"class":234},"                            (item.price ",[217,8007,991],{"class":282},[217,8009,3001],{"class":364},[217,8011,988],{"class":234},[217,8013,6757],{"class":282},[217,8015,8016],{"class":234}," (item.quantity ",[217,8018,991],{"class":282},[217,8020,6584],{"class":364},[217,8022,3922],{"class":234},[217,8024,8025],{"class":219,"line":506},[217,8026,8027],{"class":234},"                        );\n",[217,8029,8030,8032],{"class":219,"line":516},[217,8031,7248],{"class":234},[217,8033,8034],{"class":364},"0\n",[217,8036,8037],{"class":219,"line":526},[217,8038,2497],{"class":234},[217,8040,8041,8044,8046,8048,8050],{"class":219,"line":536},[217,8042,8043],{"class":234},"                list.itemCountLabel ",[217,8045,489],{"class":282},[217,8047,7970],{"class":234},[217,8049,2318],{"class":364},[217,8051,1386],{"class":282},[217,8053,8054,8057,8059,8062,8064,8067,8070,8073,8076],{"class":219,"line":545},[217,8055,8056],{"class":234},"                    (list.items.",[217,8058,2318],{"class":364},[217,8060,8061],{"class":282}," ===",[217,8063,6584],{"class":364},[217,8065,8066],{"class":282}," ?",[217,8068,8069],{"class":238}," ' item'",[217,8071,8072],{"class":282}," :",[217,8074,8075],{"class":238}," ' items'",[217,8077,472],{"class":234},[217,8079,8080,8082],{"class":219,"line":551},[217,8081,3896],{"class":282},[217,8083,8084],{"class":234}," list;\n",[217,8086,8087],{"class":219,"line":557},[217,8088,1078],{"class":234},[217,8090,8091],{"class":219,"line":562},[217,8092,325],{"emptyLinePlaceholder":324},[217,8094,8095,8097],{"class":219,"line":579},[217,8096,1699],{"class":282},[217,8098,1702],{"class":234},[217,8100,8101],{"class":219,"line":591},[217,8102,554],{"class":234},[217,8104,8105],{"class":219,"line":607},[217,8106,325],{"emptyLinePlaceholder":324},[217,8108,8109,8111,8113,8115,8117,8119,8121],{"class":219,"line":612},[217,8110,357],{"class":234},[217,8112,337],{"class":230},[217,8114,235],{"class":234},[217,8116,7819],{"class":364},[217,8118,367],{"class":234},[217,8120,370],{"class":364},[217,8122,373],{"class":234},[217,8124,8125,8128],{"class":219,"line":623},[217,8126,8127],{"class":238},"            'click [data-action=\"add-list-to-cart\"]'",[217,8129,8130],{"class":234},":\n",[217,8132,8133,8136],{"class":219,"line":649},[217,8134,8135],{"class":238},"                'addEntireListToCart'",[217,8137,251],{"class":234},[217,8139,8140,8143,8145],{"class":219,"line":671},[217,8141,8142],{"class":238},"            'click [data-action=\"share-list\"]'",[217,8144,382],{"class":234},[217,8146,8147],{"class":238},"'shareList'\n",[217,8149,8150],{"class":219,"line":693},[217,8151,417],{"class":234},[217,8153,8154],{"class":219,"line":715},[217,8155,325],{"emptyLinePlaceholder":324},[217,8157,8158,8161,8163,8165,8167,8169],{"class":219,"line":738},[217,8159,8160],{"class":230},"        addEntireListToCart",[217,8162,382],{"class":234},[217,8164,283],{"class":282},[217,8166,286],{"class":234},[217,8168,574],{"class":289},[217,8170,309],{"class":234},[217,8172,8173,8175,8177],{"class":219,"line":743},[217,8174,582],{"class":234},[217,8176,585],{"class":230},[217,8178,588],{"class":234},[217,8180,8181,8183,8186,8188,8190,8193,8196,8198,8201],{"class":219,"line":748},[217,8182,594],{"class":282},[217,8184,8185],{"class":234}," listId ",[217,8187,489],{"class":282},[217,8189,4374],{"class":230},[217,8191,8192],{"class":234},"(e.currentTarget).",[217,8194,8195],{"class":230},"data",[217,8197,235],{"class":234},[217,8199,8200],{"class":238},"'list-id'",[217,8202,472],{"class":234},[217,8204,8205,8207,8210,8212,8214,8216,8218],{"class":219,"line":754},[217,8206,594],{"class":282},[217,8208,8209],{"class":234}," list ",[217,8211,489],{"class":282},[217,8213,602],{"class":364},[217,8215,880],{"class":234},[217,8217,980],{"class":230},[217,8219,8220],{"class":234},"(listId);\n",[217,8222,8223],{"class":219,"line":767},[217,8224,325],{"emptyLinePlaceholder":324},[217,8226,8227,8229,8231,8233,8236,8238],{"class":219,"line":772},[217,8228,775],{"class":282},[217,8230,286],{"class":234},[217,8232,3868],{"class":282},[217,8234,8235],{"class":234},"list) ",[217,8237,1568],{"class":282},[217,8239,318],{"class":234},[217,8241,8242],{"class":219,"line":785},[217,8243,325],{"emptyLinePlaceholder":324},[217,8245,8246,8248,8251,8253,8256,8258,8260,8263,8265,8267],{"class":219,"line":798},[217,8247,594],{"class":282},[217,8249,8250],{"class":234}," items ",[217,8252,489],{"class":282},[217,8254,8255],{"class":234}," list.",[217,8257,980],{"class":230},[217,8259,235],{"class":234},[217,8261,8262],{"class":238},"'items'",[217,8264,988],{"class":234},[217,8266,991],{"class":282},[217,8268,2968],{"class":234},[217,8270,8271,8273,8275,8277,8279,8282,8284,8286,8288],{"class":219,"line":804},[217,8272,594],{"class":282},[217,8274,4164],{"class":234},[217,8276,489],{"class":282},[217,8278,602],{"class":364},[217,8280,8281],{"class":234},".options.application.",[217,8283,4185],{"class":230},[217,8285,235],{"class":234},[217,8287,4190],{"class":238},[217,8289,472],{"class":234},[217,8291,8292],{"class":219,"line":816},[217,8293,325],{"emptyLinePlaceholder":324},[217,8295,8296],{"class":219,"line":829},[217,8297,8298],{"class":223},"            \u002F\u002F Add all items sequentially\n",[217,8300,8301,8303,8306,8308,8311,8313,8315,8317,8319,8321],{"class":219,"line":834},[217,8302,594],{"class":282},[217,8304,8305],{"class":234}," addPromises ",[217,8307,489],{"class":282},[217,8309,8310],{"class":234}," items.",[217,8312,6594],{"class":230},[217,8314,235],{"class":234},[217,8316,283],{"class":282},[217,8318,286],{"class":234},[217,8320,7987],{"class":289},[217,8322,309],{"class":234},[217,8324,8325,8327,8330,8332],{"class":219,"line":846},[217,8326,3896],{"class":282},[217,8328,8329],{"class":234}," cart.",[217,8331,4252],{"class":230},[217,8333,340],{"class":234},[217,8335,8336],{"class":219,"line":859},[217,8337,8338],{"class":234},"                    item: { internalid: item.item.internalid },\n",[217,8340,8341,8344,8346],{"class":219,"line":864},[217,8342,8343],{"class":234},"                    quantity: item.quantity ",[217,8345,991],{"class":282},[217,8347,8348],{"class":364}," 1\n",[217,8350,8351],{"class":219,"line":869},[217,8352,3211],{"class":234},[217,8354,8355],{"class":219,"line":875},[217,8356,1078],{"class":234},[217,8358,8359],{"class":219,"line":888},[217,8360,325],{"emptyLinePlaceholder":324},[217,8362,8363,8366,8368],{"class":219,"line":894},[217,8364,8365],{"class":234},"            jQuery.when.",[217,8367,459],{"class":230},[217,8369,8370],{"class":234},"(jQuery, addPromises)\n",[217,8372,8373,8375,8377,8379,8381],{"class":219,"line":903},[217,8374,1478],{"class":234},[217,8376,909],{"class":230},[217,8378,235],{"class":234},[217,8380,283],{"class":282},[217,8382,916],{"class":234},[217,8384,8385,8388,8390,8392,8394,8396,8398,8400],{"class":219,"line":919},[217,8386,8387],{"class":364},"                    SC",[217,8389,367],{"class":234},[217,8391,2552],{"class":230},[217,8393,235],{"class":234},[217,8395,2557],{"class":238},[217,8397,640],{"class":234},[217,8399,2562],{"class":230},[217,8401,735],{"class":234},[217,8403,8404,8406,8408],{"class":219,"line":925},[217,8405,4084],{"class":234},[217,8407,2584],{"class":230},[217,8409,943],{"class":234},[217,8411,8412,8415,8417],{"class":219,"line":934},[217,8413,8414],{"class":234},"                            items.",[217,8416,2318],{"class":364},[217,8418,1386],{"class":282},[217,8420,8421,8424],{"class":219,"line":946},[217,8422,8423],{"class":238},"                            ' items added to cart from list.'",[217,8425,251],{"class":234},[217,8427,8428],{"class":219,"line":966},[217,8429,8430],{"class":238},"                            'success'\n",[217,8432,8433],{"class":219,"line":999},[217,8434,8027],{"class":234},[217,8436,8437],{"class":219,"line":1019},[217,8438,3211],{"class":234},[217,8440,8441],{"class":219,"line":1029},[217,8442,554],{"class":234},[217,8444,8445],{"class":219,"line":1046},[217,8446,325],{"emptyLinePlaceholder":324},[217,8448,8449,8452,8454,8456,8458,8460],{"class":219,"line":1052},[217,8450,8451],{"class":230},"        shareList",[217,8453,382],{"class":234},[217,8455,283],{"class":282},[217,8457,286],{"class":234},[217,8459,574],{"class":289},[217,8461,309],{"class":234},[217,8463,8464,8466,8468],{"class":219,"line":1058},[217,8465,582],{"class":234},[217,8467,585],{"class":230},[217,8469,588],{"class":234},[217,8471,8472,8474,8476,8478,8480,8482,8484,8486,8488],{"class":219,"line":1064},[217,8473,594],{"class":282},[217,8475,8185],{"class":234},[217,8477,489],{"class":282},[217,8479,4374],{"class":230},[217,8481,8192],{"class":234},[217,8483,8195],{"class":230},[217,8485,235],{"class":234},[217,8487,8200],{"class":238},[217,8489,472],{"class":234},[217,8491,8492],{"class":219,"line":1075},[217,8493,325],{"emptyLinePlaceholder":324},[217,8495,8496],{"class":219,"line":1081},[217,8497,8498],{"class":223},"            \u002F\u002F Generate shareable link for other users\n",[217,8500,8501],{"class":219,"line":1086},[217,8502,8503],{"class":223},"            \u002F\u002F on the same account\n",[217,8505,8506,8508,8511,8513,8516],{"class":219,"line":1091},[217,8507,594],{"class":282},[217,8509,8510],{"class":234}," shareUrl ",[217,8512,489],{"class":282},[217,8514,8515],{"class":234}," window.location.origin ",[217,8517,8518],{"class":282},"+\n",[217,8520,8521,8524],{"class":219,"line":1107},[217,8522,8523],{"class":238},"                '\u002Fmy_account?#shopping-lists\u002F'",[217,8525,1386],{"class":282},[217,8527,8528,8531,8533,8536],{"class":219,"line":1116},[217,8529,8530],{"class":234},"                listId ",[217,8532,1269],{"class":282},[217,8534,8535],{"class":238}," '?shared=true'",[217,8537,318],{"class":234},[217,8539,8540],{"class":219,"line":1137},[217,8541,325],{"emptyLinePlaceholder":324},[217,8543,8544],{"class":219,"line":1142},[217,8545,8546],{"class":223},"            \u002F\u002F Copy to clipboard\n",[217,8548,8549,8552,8555,8558,8561,8563,8565],{"class":219,"line":1162},[217,8550,8551],{"class":234},"            navigator.clipboard.",[217,8553,8554],{"class":230},"writeText",[217,8556,8557],{"class":234},"(shareUrl).",[217,8559,8560],{"class":230},"then",[217,8562,235],{"class":234},[217,8564,283],{"class":282},[217,8566,916],{"class":234},[217,8568,8569,8572,8574,8576,8578,8580,8582,8584],{"class":219,"line":1174},[217,8570,8571],{"class":364},"                SC",[217,8573,367],{"class":234},[217,8575,2552],{"class":230},[217,8577,235],{"class":234},[217,8579,2557],{"class":238},[217,8581,640],{"class":234},[217,8583,2562],{"class":230},[217,8585,735],{"class":234},[217,8587,8588,8591,8593],{"class":219,"line":1190},[217,8589,8590],{"class":234},"                    .",[217,8592,2584],{"class":230},[217,8594,943],{"class":234},[217,8596,8597,8600],{"class":219,"line":1204},[217,8598,8599],{"class":238},"                        'List link copied to clipboard.'",[217,8601,251],{"class":234},[217,8603,8604],{"class":219,"line":1223},[217,8605,8606],{"class":238},"                        'success'\n",[217,8608,8609],{"class":219,"line":1238},[217,8610,1055],{"class":234},[217,8612,8613],{"class":219,"line":1253},[217,8614,1078],{"class":234},[217,8616,8617],{"class":219,"line":1281},[217,8618,1708],{"class":234},[217,8620,8621],{"class":219,"line":1286},[217,8622,1714],{"class":234},[217,8624,8625],{"class":219,"line":1291},[217,8626,1720],{"class":234},[15,8628,8629],{},"Key B2B enhancements over the default product list:",[128,8631,8632,8638,8644,8650,8656],{},[40,8633,8634,8637],{},[18,8635,8636],{},"\"Add Entire List to Cart\""," button—one click instead of adding items individually",[40,8639,8640,8643],{},[18,8641,8642],{},"Estimated total"," displayed on each list",[40,8645,8646,8649],{},[18,8647,8648],{},"Shareable lists"," between users on the same account",[40,8651,8652,8655],{},[18,8653,8654],{},"Custom quantities"," per list item (default product lists don't store quantity)",[40,8657,8658,8661],{},[18,8659,8660],{},"CSV export"," of list contents for offline reference",[29,8663],{},[32,8665,94],{"id":8666},"feature-8-bulk-order-entry-csv-upload",[15,8668,8669,6337,8671,8673,8674,190],{},[18,8670,181],{},[18,8672,185],{}," 2–4 weeks | ",[18,8675,189],{},[192,8677,195],{"id":8678},"the-problem-7",[15,8680,8681],{},"A buyer needs to order 75 different SKUs. Even with search, finding and adding 75 items one-by-one is tedious. Most B2B buyers maintain their orders in spreadsheets, so let them upload directly.",[192,8683,202],{"id":8684},"the-solution-7",[15,8686,8687],{},"Build a CSV upload module that maps SKU + quantity columns to SuiteCommerce cart additions.",[207,8689,8691],{"className":209,"code":8690,"language":211,"meta":212,"style":212},"\u002F\u002F CSV upload order entry\ndefine('Stenbase.B2B.BulkOrder.View', [\n    'Backbone',\n    'stenbase_b2b_bulk_order.tpl',\n    'jQuery'\n], function (Backbone, template, jQuery) {\n    'use strict';\n\n    return Backbone.View.extend({\n        template: template,\n\n        events: {\n            'change [data-action=\"upload-csv\"]': 'handleFileUpload',\n            'click [data-action=\"process-upload\"]': 'processUpload',\n            'click [data-action=\"download-template\"]':\n                'downloadTemplate',\n            'click [data-action=\"add-all-to-cart\"]': 'addAllToCart'\n        },\n\n        handleFileUpload: function (e) {\n            var self = this;\n            var file = e.target.files[0];\n\n            if (!file) return;\n\n            \u002F\u002F Validate file type\n            if (!file.name.match(\u002F\\.(csv|txt)$\u002Fi)) {\n                this.showError('Please upload a CSV file.');\n                return;\n            }\n\n            var reader = new FileReader();\n            reader.onload = function (event) {\n                var csvData = event.target.result;\n                self.parsedItems = self.parseCSV(csvData);\n                self.validateItems();\n            };\n            reader.readAsText(file);\n        },\n\n        parseCSV: function (csvText) {\n            var lines = csvText.split('\\n');\n            var items = [];\n\n            \u002F\u002F Skip header row\n            for (var i = 1; i \u003C lines.length; i++) {\n                var line = lines[i].trim();\n                if (!line) continue;\n\n                var columns = line.split(',');\n                var sku = (columns[0] || '').trim()\n                    .replace(\u002F\"\u002Fg, '');\n                var qty = parseInt(\n                    (columns[1] || '1').trim().replace(\u002F\"\u002Fg, ''),\n                    10\n                );\n\n                if (sku && qty > 0) {\n                    items.push({\n                        sku: sku,\n                        quantity: qty,\n                        status: 'pending',\n                        name: '',\n                        price: null\n                    });\n                }\n            }\n\n            return items;\n        },\n\n        validateItems: function () {\n            var self = this;\n            var skus = this.parsedItems.map(\n                function (item) { return item.sku; }\n            );\n\n            \u002F\u002F Validate all SKUs against NetSuite\n            jQuery.ajax({\n                url: _.getAbsoluteUrl(\n                    'services\u002FStenbase.BulkOrder.Validate.Service.ss'\n                ),\n                type: 'POST',\n                contentType: 'application\u002Fjson',\n                data: JSON.stringify({ skus: skus })\n            }).done(function (response) {\n                \u002F\u002F Update parsed items with validation results\n                self.parsedItems.forEach(function (item) {\n                    var match = response.items[item.sku];\n                    if (match) {\n                        item.status = 'valid';\n                        item.name = match.displayname;\n                        item.price = match.price;\n                        item.internalid = match.internalid;\n                    } else {\n                        item.status = 'not_found';\n                    }\n                });\n\n                self.render();\n            });\n        },\n\n        downloadTemplate: function (e) {\n            e.preventDefault();\n            var csv = 'SKU,Quantity\\nITEM-001,10\\nITEM-002,25\\n';\n            var blob = new Blob(\n                [csv],\n                { type: 'text\u002Fcsv;charset=utf-8;' }\n            );\n            var link = document.createElement('a');\n            link.href = URL.createObjectURL(blob);\n            link.download = 'bulk_order_template.csv';\n            link.click();\n        },\n\n        addAllToCart: function (e) {\n            e.preventDefault();\n            var validItems = this.parsedItems.filter(\n                function (item) { return item.status === 'valid'; }\n            );\n\n            \u002F\u002F Add items to cart via API\n            var cart = this.options.application.getComponent('Cart');\n            var addPromises = validItems.map(function (item) {\n                return cart.addLine({\n                    item: { internalid: item.internalid },\n                    quantity: item.quantity\n                });\n            });\n\n            jQuery.when.apply(jQuery, addPromises)\n                .done(function () {\n                    Backbone.history.navigate('cart', { trigger: true });\n                });\n        }\n    });\n});\n",[214,8692,8693,8698,8709,8715,8722,8726,8746,8752,8756,8766,8770,8774,8778,8790,8802,8809,8816,8826,8830,8834,8849,8861,8878,8882,8897,8901,8906,8948,8963,8969,8973,8977,8993,9014,9026,9042,9051,9055,9065,9069,9073,9089,9112,9122,9126,9131,9162,9179,9195,9199,9219,9245,9270,9284,9321,9326,9330,9334,9352,9361,9366,9371,9381,9390,9397,9401,9405,9409,9413,9420,9424,9428,9439,9451,9469,9484,9488,9492,9497,9506,9514,9519,9523,9531,9539,9552,9568,9573,9590,9602,9609,9621,9631,9641,9651,9660,9671,9675,9679,9683,9691,9695,9699,9703,9718,9726,9754,9768,9773,9781,9785,9803,9817,9828,9836,9840,9844,9859,9867,9884,9906,9910,9914,9919,9939,9963,9974,9980,9986,9991,9996,10001,10010,10023,10042,10047,10052,10057],{"__ignoreMap":212},[217,8694,8695],{"class":219,"line":220},[217,8696,8697],{"class":223},"\u002F\u002F CSV upload order entry\n",[217,8699,8700,8702,8704,8707],{"class":219,"line":227},[217,8701,231],{"class":230},[217,8703,235],{"class":234},[217,8705,8706],{"class":238},"'Stenbase.B2B.BulkOrder.View'",[217,8708,242],{"class":234},[217,8710,8711,8713],{"class":219,"line":245},[217,8712,3540],{"class":238},[217,8714,251],{"class":234},[217,8716,8717,8720],{"class":219,"line":254},[217,8718,8719],{"class":238},"    'stenbase_b2b_bulk_order.tpl'",[217,8721,251],{"class":234},[217,8723,8724],{"class":219,"line":262},[217,8725,273],{"class":238},[217,8727,8728,8730,8732,8734,8736,8738,8740,8742,8744],{"class":219,"line":270},[217,8729,279],{"class":234},[217,8731,283],{"class":282},[217,8733,286],{"class":234},[217,8735,3571],{"class":289},[217,8737,293],{"class":234},[217,8739,296],{"class":289},[217,8741,293],{"class":234},[217,8743,306],{"class":289},[217,8745,309],{"class":234},[217,8747,8748,8750],{"class":219,"line":276},[217,8749,315],{"class":238},[217,8751,318],{"class":234},[217,8753,8754],{"class":219,"line":312},[217,8755,325],{"emptyLinePlaceholder":324},[217,8757,8758,8760,8762,8764],{"class":219,"line":321},[217,8759,331],{"class":282},[217,8761,3603],{"class":234},[217,8763,337],{"class":230},[217,8765,340],{"class":234},[217,8767,8768],{"class":219,"line":328},[217,8769,346],{"class":234},[217,8771,8772],{"class":219,"line":343},[217,8773,325],{"emptyLinePlaceholder":324},[217,8775,8776],{"class":219,"line":349},[217,8777,3620],{"class":234},[217,8779,8780,8783,8785,8788],{"class":219,"line":354},[217,8781,8782],{"class":238},"            'change [data-action=\"upload-csv\"]'",[217,8784,382],{"class":234},[217,8786,8787],{"class":238},"'handleFileUpload'",[217,8789,251],{"class":234},[217,8791,8792,8795,8797,8800],{"class":219,"line":376},[217,8793,8794],{"class":238},"            'click [data-action=\"process-upload\"]'",[217,8796,382],{"class":234},[217,8798,8799],{"class":238},"'processUpload'",[217,8801,251],{"class":234},[217,8803,8804,8807],{"class":219,"line":390},[217,8805,8806],{"class":238},"            'click [data-action=\"download-template\"]'",[217,8808,8130],{"class":234},[217,8810,8811,8814],{"class":219,"line":403},[217,8812,8813],{"class":238},"                'downloadTemplate'",[217,8815,251],{"class":234},[217,8817,8818,8821,8823],{"class":219,"line":414},[217,8819,8820],{"class":238},"            'click [data-action=\"add-all-to-cart\"]'",[217,8822,382],{"class":234},[217,8824,8825],{"class":238},"'addAllToCart'\n",[217,8827,8828],{"class":219,"line":420},[217,8829,554],{"class":234},[217,8831,8832],{"class":219,"line":425},[217,8833,325],{"emptyLinePlaceholder":324},[217,8835,8836,8839,8841,8843,8845,8847],{"class":219,"line":442},[217,8837,8838],{"class":230},"        handleFileUpload",[217,8840,382],{"class":234},[217,8842,283],{"class":282},[217,8844,286],{"class":234},[217,8846,574],{"class":289},[217,8848,309],{"class":234},[217,8850,8851,8853,8855,8857,8859],{"class":219,"line":453},[217,8852,594],{"class":282},[217,8854,597],{"class":234},[217,8856,489],{"class":282},[217,8858,602],{"class":364},[217,8860,318],{"class":234},[217,8862,8863,8865,8868,8870,8873,8875],{"class":219,"line":475},[217,8864,594],{"class":282},[217,8866,8867],{"class":234}," file ",[217,8869,489],{"class":282},[217,8871,8872],{"class":234}," e.target.files[",[217,8874,1416],{"class":364},[217,8876,8877],{"class":234},"];\n",[217,8879,8880],{"class":219,"line":480},[217,8881,325],{"emptyLinePlaceholder":324},[217,8883,8884,8886,8888,8890,8893,8895],{"class":219,"line":495},[217,8885,775],{"class":282},[217,8887,286],{"class":234},[217,8889,3868],{"class":282},[217,8891,8892],{"class":234},"file) ",[217,8894,1568],{"class":282},[217,8896,318],{"class":234},[217,8898,8899],{"class":219,"line":506},[217,8900,325],{"emptyLinePlaceholder":324},[217,8902,8903],{"class":219,"line":516},[217,8904,8905],{"class":223},"            \u002F\u002F Validate file type\n",[217,8907,8908,8910,8912,8914,8917,8920,8922,8924,8928,8932,8935,8938,8940,8942,8945],{"class":219,"line":526},[217,8909,775],{"class":282},[217,8911,286],{"class":234},[217,8913,3868],{"class":282},[217,8915,8916],{"class":234},"file.name.",[217,8918,8919],{"class":230},"match",[217,8921,235],{"class":234},[217,8923,6751],{"class":238},[217,8925,8927],{"class":8926},"snhLl","\\.",[217,8929,8931],{"class":8930},"sA_wV","(csv",[217,8933,8934],{"class":282},"|",[217,8936,8937],{"class":8930},"txt)",[217,8939,632],{"class":282},[217,8941,6751],{"class":238},[217,8943,8944],{"class":282},"i",[217,8946,8947],{"class":234},")) {\n",[217,8949,8950,8952,8954,8956,8958,8961],{"class":219,"line":536},[217,8951,1548],{"class":364},[217,8953,367],{"class":234},[217,8955,3884],{"class":230},[217,8957,235],{"class":234},[217,8959,8960],{"class":238},"'Please upload a CSV file.'",[217,8962,472],{"class":234},[217,8964,8965,8967],{"class":219,"line":545},[217,8966,3896],{"class":282},[217,8968,318],{"class":234},[217,8970,8971],{"class":219,"line":551},[217,8972,801],{"class":234},[217,8974,8975],{"class":219,"line":557},[217,8976,325],{"emptyLinePlaceholder":324},[217,8978,8979,8981,8984,8986,8988,8991],{"class":219,"line":562},[217,8980,594],{"class":282},[217,8982,8983],{"class":234}," reader ",[217,8985,489],{"class":282},[217,8987,1301],{"class":282},[217,8989,8990],{"class":230}," FileReader",[217,8992,588],{"class":234},[217,8994,8995,8998,9001,9004,9007,9009,9012],{"class":219,"line":579},[217,8996,8997],{"class":234},"            reader.",[217,8999,9000],{"class":230},"onload",[217,9002,9003],{"class":282}," =",[217,9005,9006],{"class":282}," function",[217,9008,286],{"class":234},[217,9010,9011],{"class":289},"event",[217,9013,309],{"class":234},[217,9015,9016,9018,9021,9023],{"class":219,"line":591},[217,9017,4366],{"class":282},[217,9019,9020],{"class":234}," csvData ",[217,9022,489],{"class":282},[217,9024,9025],{"class":234}," event.target.result;\n",[217,9027,9028,9031,9033,9036,9039],{"class":219,"line":607},[217,9029,9030],{"class":234},"                self.parsedItems ",[217,9032,489],{"class":282},[217,9034,9035],{"class":234}," self.",[217,9037,9038],{"class":230},"parseCSV",[217,9040,9041],{"class":234},"(csvData);\n",[217,9043,9044,9046,9049],{"class":219,"line":612},[217,9045,1067],{"class":234},[217,9047,9048],{"class":230},"validateItems",[217,9050,588],{"class":234},[217,9052,9053],{"class":219,"line":623},[217,9054,548],{"class":234},[217,9056,9057,9059,9062],{"class":219,"line":649},[217,9058,8997],{"class":234},[217,9060,9061],{"class":230},"readAsText",[217,9063,9064],{"class":234},"(file);\n",[217,9066,9067],{"class":219,"line":671},[217,9068,554],{"class":234},[217,9070,9071],{"class":219,"line":693},[217,9072,325],{"emptyLinePlaceholder":324},[217,9074,9075,9078,9080,9082,9084,9087],{"class":219,"line":715},[217,9076,9077],{"class":230},"        parseCSV",[217,9079,382],{"class":234},[217,9081,283],{"class":282},[217,9083,286],{"class":234},[217,9085,9086],{"class":289},"csvText",[217,9088,309],{"class":234},[217,9090,9091,9093,9095,9097,9100,9102,9104,9106,9108,9110],{"class":219,"line":738},[217,9092,594],{"class":282},[217,9094,4334],{"class":234},[217,9096,489],{"class":282},[217,9098,9099],{"class":234}," csvText.",[217,9101,1405],{"class":230},[217,9103,235],{"class":234},[217,9105,1132],{"class":238},[217,9107,1129],{"class":364},[217,9109,1132],{"class":238},[217,9111,472],{"class":234},[217,9113,9114,9116,9118,9120],{"class":219,"line":743},[217,9115,594],{"class":282},[217,9117,8250],{"class":234},[217,9119,489],{"class":282},[217,9121,2968],{"class":234},[217,9123,9124],{"class":219,"line":748},[217,9125,325],{"emptyLinePlaceholder":324},[217,9127,9128],{"class":219,"line":754},[217,9129,9130],{"class":223},"            \u002F\u002F Skip header row\n",[217,9132,9133,9136,9138,9140,9142,9144,9146,9148,9150,9153,9155,9158,9160],{"class":219,"line":767},[217,9134,9135],{"class":282},"            for",[217,9137,286],{"class":234},[217,9139,2993],{"class":282},[217,9141,2996],{"class":234},[217,9143,489],{"class":282},[217,9145,6584],{"class":364},[217,9147,3004],{"class":234},[217,9149,3007],{"class":282},[217,9151,9152],{"class":234}," lines.",[217,9154,2318],{"class":364},[217,9156,9157],{"class":234},"; i",[217,9159,3013],{"class":282},[217,9161,309],{"class":234},[217,9163,9164,9166,9169,9171,9174,9177],{"class":219,"line":772},[217,9165,4366],{"class":282},[217,9167,9168],{"class":234}," line ",[217,9170,489],{"class":282},[217,9172,9173],{"class":234}," lines[i].",[217,9175,9176],{"class":230},"trim",[217,9178,588],{"class":234},[217,9180,9181,9183,9185,9187,9190,9193],{"class":219,"line":785},[217,9182,928],{"class":282},[217,9184,286],{"class":234},[217,9186,3868],{"class":282},[217,9188,9189],{"class":234},"line) ",[217,9191,9192],{"class":282},"continue",[217,9194,318],{"class":234},[217,9196,9197],{"class":219,"line":798},[217,9198,325],{"emptyLinePlaceholder":324},[217,9200,9201,9203,9206,9208,9211,9213,9215,9217],{"class":219,"line":804},[217,9202,4366],{"class":282},[217,9204,9205],{"class":234}," columns ",[217,9207,489],{"class":282},[217,9209,9210],{"class":234}," line.",[217,9212,1405],{"class":230},[217,9214,235],{"class":234},[217,9216,1264],{"class":238},[217,9218,472],{"class":234},[217,9220,9221,9223,9226,9228,9231,9233,9235,9237,9239,9241,9243],{"class":219,"line":816},[217,9222,4366],{"class":282},[217,9224,9225],{"class":234}," sku ",[217,9227,489],{"class":282},[217,9229,9230],{"class":234}," (columns[",[217,9232,1416],{"class":364},[217,9234,1419],{"class":234},[217,9236,991],{"class":282},[217,9238,994],{"class":238},[217,9240,640],{"class":234},[217,9242,9176],{"class":230},[217,9244,735],{"class":234},[217,9246,9247,9249,9252,9254,9256,9259,9261,9264,9266,9268],{"class":219,"line":829},[217,9248,8590],{"class":234},[217,9250,9251],{"class":230},"replace",[217,9253,235],{"class":234},[217,9255,6751],{"class":238},[217,9257,9258],{"class":8930},"\"",[217,9260,6751],{"class":238},[217,9262,9263],{"class":282},"g",[217,9265,293],{"class":234},[217,9267,1598],{"class":238},[217,9269,472],{"class":234},[217,9271,9272,9274,9277,9279,9282],{"class":219,"line":834},[217,9273,4366],{"class":282},[217,9275,9276],{"class":234}," qty ",[217,9278,489],{"class":282},[217,9280,9281],{"class":230}," parseInt",[217,9283,943],{"class":234},[217,9285,9286,9289,9291,9293,9295,9297,9299,9301,9303,9305,9307,9309,9311,9313,9315,9317,9319],{"class":219,"line":846},[217,9287,9288],{"class":234},"                    (columns[",[217,9290,1041],{"class":364},[217,9292,1419],{"class":234},[217,9294,991],{"class":282},[217,9296,5867],{"class":238},[217,9298,640],{"class":234},[217,9300,9176],{"class":230},[217,9302,1011],{"class":234},[217,9304,9251],{"class":230},[217,9306,235],{"class":234},[217,9308,6751],{"class":238},[217,9310,9258],{"class":8930},[217,9312,6751],{"class":238},[217,9314,9263],{"class":282},[217,9316,293],{"class":234},[217,9318,1598],{"class":238},[217,9320,1187],{"class":234},[217,9322,9323],{"class":219,"line":859},[217,9324,9325],{"class":364},"                    10\n",[217,9327,9328],{"class":219,"line":864},[217,9329,2497],{"class":234},[217,9331,9332],{"class":219,"line":869},[217,9333,325],{"emptyLinePlaceholder":324},[217,9335,9336,9338,9341,9343,9345,9348,9350],{"class":219,"line":875},[217,9337,928],{"class":282},[217,9339,9340],{"class":234}," (sku ",[217,9342,2312],{"class":282},[217,9344,9276],{"class":234},[217,9346,9347],{"class":282},">",[217,9349,3001],{"class":364},[217,9351,309],{"class":234},[217,9353,9354,9357,9359],{"class":219,"line":888},[217,9355,9356],{"class":234},"                    items.",[217,9358,3189],{"class":230},[217,9360,340],{"class":234},[217,9362,9363],{"class":219,"line":894},[217,9364,9365],{"class":234},"                        sku: sku,\n",[217,9367,9368],{"class":219,"line":903},[217,9369,9370],{"class":234},"                        quantity: qty,\n",[217,9372,9373,9376,9379],{"class":219,"line":919},[217,9374,9375],{"class":234},"                        status: ",[217,9377,9378],{"class":238},"'pending'",[217,9380,251],{"class":234},[217,9382,9383,9386,9388],{"class":219,"line":925},[217,9384,9385],{"class":234},"                        name: ",[217,9387,1598],{"class":238},[217,9389,251],{"class":234},[217,9391,9392,9395],{"class":219,"line":934},[217,9393,9394],{"class":234},"                        price: ",[217,9396,542],{"class":364},[217,9398,9399],{"class":219,"line":946},[217,9400,4292],{"class":234},[217,9402,9403],{"class":219,"line":966},[217,9404,1061],{"class":234},[217,9406,9407],{"class":219,"line":999},[217,9408,801],{"class":234},[217,9410,9411],{"class":219,"line":1019},[217,9412,325],{"emptyLinePlaceholder":324},[217,9414,9415,9417],{"class":219,"line":1029},[217,9416,1699],{"class":282},[217,9418,9419],{"class":234}," items;\n",[217,9421,9422],{"class":219,"line":1046},[217,9423,554],{"class":234},[217,9425,9426],{"class":219,"line":1052},[217,9427,325],{"emptyLinePlaceholder":324},[217,9429,9430,9433,9435,9437],{"class":219,"line":1058},[217,9431,9432],{"class":230},"        validateItems",[217,9434,382],{"class":234},[217,9436,283],{"class":282},[217,9438,916],{"class":234},[217,9440,9441,9443,9445,9447,9449],{"class":219,"line":1064},[217,9442,594],{"class":282},[217,9444,597],{"class":234},[217,9446,489],{"class":282},[217,9448,602],{"class":364},[217,9450,318],{"class":234},[217,9452,9453,9455,9458,9460,9462,9465,9467],{"class":219,"line":1075},[217,9454,594],{"class":282},[217,9456,9457],{"class":234}," skus ",[217,9459,489],{"class":282},[217,9461,602],{"class":364},[217,9463,9464],{"class":234},".parsedItems.",[217,9466,6594],{"class":230},[217,9468,943],{"class":234},[217,9470,9471,9473,9475,9477,9479,9481],{"class":219,"line":1081},[217,9472,1557],{"class":282},[217,9474,286],{"class":234},[217,9476,7987],{"class":289},[217,9478,1565],{"class":234},[217,9480,1568],{"class":282},[217,9482,9483],{"class":234}," item.sku; }\n",[217,9485,9486],{"class":219,"line":1086},[217,9487,1330],{"class":234},[217,9489,9490],{"class":219,"line":1091},[217,9491,325],{"emptyLinePlaceholder":324},[217,9493,9494],{"class":219,"line":1107},[217,9495,9496],{"class":223},"            \u002F\u002F Validate all SKUs against NetSuite\n",[217,9498,9499,9502,9504],{"class":219,"line":1116},[217,9500,9501],{"class":234},"            jQuery.",[217,9503,2208],{"class":230},[217,9505,340],{"class":234},[217,9507,9508,9510,9512],{"class":219,"line":1137},[217,9509,2215],{"class":234},[217,9511,2218],{"class":230},[217,9513,943],{"class":234},[217,9515,9516],{"class":219,"line":1142},[217,9517,9518],{"class":238},"                    'services\u002FStenbase.BulkOrder.Validate.Service.ss'\n",[217,9520,9521],{"class":219,"line":1162},[217,9522,2230],{"class":234},[217,9524,9525,9527,9529],{"class":219,"line":1174},[217,9526,2235],{"class":234},[217,9528,2238],{"class":238},[217,9530,251],{"class":234},[217,9532,9533,9535,9537],{"class":219,"line":1190},[217,9534,2245],{"class":234},[217,9536,2248],{"class":238},[217,9538,251],{"class":234},[217,9540,9541,9543,9545,9547,9549],{"class":219,"line":1204},[217,9542,2255],{"class":234},[217,9544,2258],{"class":364},[217,9546,367],{"class":234},[217,9548,2263],{"class":230},[217,9550,9551],{"class":234},"({ skus: skus })\n",[217,9553,9554,9556,9558,9560,9562,9564,9566],{"class":219,"line":1223},[217,9555,906],{"class":234},[217,9557,909],{"class":230},[217,9559,235],{"class":234},[217,9561,283],{"class":282},[217,9563,286],{"class":234},[217,9565,2300],{"class":289},[217,9567,309],{"class":234},[217,9569,9570],{"class":219,"line":1238},[217,9571,9572],{"class":223},"                \u002F\u002F Update parsed items with validation results\n",[217,9574,9575,9578,9580,9582,9584,9586,9588],{"class":219,"line":1253},[217,9576,9577],{"class":234},"                self.parsedItems.",[217,9579,4234],{"class":230},[217,9581,235],{"class":234},[217,9583,283],{"class":282},[217,9585,286],{"class":234},[217,9587,7987],{"class":289},[217,9589,309],{"class":234},[217,9591,9592,9594,9597,9599],{"class":219,"line":1281},[217,9593,2353],{"class":282},[217,9595,9596],{"class":234}," match ",[217,9598,489],{"class":282},[217,9600,9601],{"class":234}," response.items[item.sku];\n",[217,9603,9604,9606],{"class":219,"line":1286},[217,9605,2380],{"class":282},[217,9607,9608],{"class":234}," (match) {\n",[217,9610,9611,9614,9616,9619],{"class":219,"line":1291},[217,9612,9613],{"class":234},"                        item.status ",[217,9615,489],{"class":282},[217,9617,9618],{"class":238}," 'valid'",[217,9620,318],{"class":234},[217,9622,9623,9626,9628],{"class":219,"line":1309},[217,9624,9625],{"class":234},"                        item.name ",[217,9627,489],{"class":282},[217,9629,9630],{"class":234}," match.displayname;\n",[217,9632,9633,9636,9638],{"class":219,"line":1315},[217,9634,9635],{"class":234},"                        item.price ",[217,9637,489],{"class":282},[217,9639,9640],{"class":234}," match.price;\n",[217,9642,9643,9646,9648],{"class":219,"line":1327},[217,9644,9645],{"class":234},"                        item.internalid ",[217,9647,489],{"class":282},[217,9649,9650],{"class":234}," match.internalid;\n",[217,9652,9653,9656,9658],{"class":219,"line":1333},[217,9654,9655],{"class":234},"                    } ",[217,9657,3219],{"class":282},[217,9659,492],{"class":234},[217,9661,9662,9664,9666,9669],{"class":219,"line":1356},[217,9663,9613],{"class":234},[217,9665,489],{"class":282},[217,9667,9668],{"class":238}," 'not_found'",[217,9670,318],{"class":234},[217,9672,9673],{"class":219,"line":1375},[217,9674,2428],{"class":234},[217,9676,9677],{"class":219,"line":1389},[217,9678,3211],{"class":234},[217,9680,9681],{"class":219,"line":1429},[217,9682,325],{"emptyLinePlaceholder":324},[217,9684,9685,9687,9689],{"class":219,"line":1440},[217,9686,1067],{"class":234},[217,9688,1070],{"class":230},[217,9690,588],{"class":234},[217,9692,9693],{"class":219,"line":1445},[217,9694,1078],{"class":234},[217,9696,9697],{"class":219,"line":1450},[217,9698,554],{"class":234},[217,9700,9701],{"class":219,"line":1462},[217,9702,325],{"emptyLinePlaceholder":324},[217,9704,9705,9708,9710,9712,9714,9716],{"class":219,"line":1475},[217,9706,9707],{"class":230},"        downloadTemplate",[217,9709,382],{"class":234},[217,9711,283],{"class":282},[217,9713,286],{"class":234},[217,9715,574],{"class":289},[217,9717,309],{"class":234},[217,9719,9720,9722,9724],{"class":219,"line":1498},[217,9721,582],{"class":234},[217,9723,585],{"class":230},[217,9725,588],{"class":234},[217,9727,9728,9730,9733,9735,9738,9740,9743,9745,9748,9750,9752],{"class":219,"line":1503},[217,9729,594],{"class":282},[217,9731,9732],{"class":234}," csv ",[217,9734,489],{"class":282},[217,9736,9737],{"class":238}," 'SKU,Quantity",[217,9739,1129],{"class":364},[217,9741,9742],{"class":238},"ITEM-001,10",[217,9744,1129],{"class":364},[217,9746,9747],{"class":238},"ITEM-002,25",[217,9749,1129],{"class":364},[217,9751,1132],{"class":238},[217,9753,318],{"class":234},[217,9755,9756,9758,9760,9762,9764,9766],{"class":219,"line":1516},[217,9757,594],{"class":282},[217,9759,1296],{"class":234},[217,9761,489],{"class":282},[217,9763,1301],{"class":282},[217,9765,1304],{"class":230},[217,9767,943],{"class":234},[217,9769,9770],{"class":219,"line":1529},[217,9771,9772],{"class":234},"                [csv],\n",[217,9774,9775,9777,9779],{"class":219,"line":1545},[217,9776,1318],{"class":234},[217,9778,1321],{"class":238},[217,9780,1324],{"class":234},[217,9782,9783],{"class":219,"line":1554},[217,9784,1330],{"class":234},[217,9786,9787,9789,9791,9793,9795,9797,9799,9801],{"class":219,"line":1577},[217,9788,594],{"class":282},[217,9790,1338],{"class":234},[217,9792,489],{"class":282},[217,9794,1343],{"class":234},[217,9796,1346],{"class":230},[217,9798,235],{"class":234},[217,9800,1351],{"class":238},[217,9802,472],{"class":234},[217,9804,9805,9807,9809,9811,9813,9815],{"class":219,"line":1582},[217,9806,1359],{"class":234},[217,9808,489],{"class":282},[217,9810,1364],{"class":364},[217,9812,367],{"class":234},[217,9814,1369],{"class":230},[217,9816,1372],{"class":234},[217,9818,9819,9821,9823,9826],{"class":219,"line":1592},[217,9820,1378],{"class":234},[217,9822,489],{"class":282},[217,9824,9825],{"class":238}," 'bulk_order_template.csv'",[217,9827,318],{"class":234},[217,9829,9830,9832,9834],{"class":219,"line":1610},[217,9831,1432],{"class":234},[217,9833,1435],{"class":230},[217,9835,588],{"class":234},[217,9837,9838],{"class":219,"line":1625},[217,9839,554],{"class":234},[217,9841,9842],{"class":219,"line":1640},[217,9843,325],{"emptyLinePlaceholder":324},[217,9845,9846,9849,9851,9853,9855,9857],{"class":219,"line":1655},[217,9847,9848],{"class":230},"        addAllToCart",[217,9850,382],{"class":234},[217,9852,283],{"class":282},[217,9854,286],{"class":234},[217,9856,574],{"class":289},[217,9858,309],{"class":234},[217,9860,9861,9863,9865],{"class":219,"line":1670},[217,9862,582],{"class":234},[217,9864,585],{"class":230},[217,9866,588],{"class":234},[217,9868,9869,9871,9874,9876,9878,9880,9882],{"class":219,"line":1685},[217,9870,594],{"class":282},[217,9872,9873],{"class":234}," validItems ",[217,9875,489],{"class":282},[217,9877,602],{"class":364},[217,9879,9464],{"class":234},[217,9881,952],{"class":230},[217,9883,943],{"class":234},[217,9885,9886,9888,9890,9892,9894,9896,9899,9901,9903],{"class":219,"line":1691},[217,9887,1557],{"class":282},[217,9889,286],{"class":234},[217,9891,7987],{"class":289},[217,9893,1565],{"class":234},[217,9895,1568],{"class":282},[217,9897,9898],{"class":234}," item.status ",[217,9900,5864],{"class":282},[217,9902,9618],{"class":238},[217,9904,9905],{"class":234},"; }\n",[217,9907,9908],{"class":219,"line":1696},[217,9909,1330],{"class":234},[217,9911,9912],{"class":219,"line":1705},[217,9913,325],{"emptyLinePlaceholder":324},[217,9915,9916],{"class":219,"line":1711},[217,9917,9918],{"class":223},"            \u002F\u002F Add items to cart via API\n",[217,9920,9921,9923,9925,9927,9929,9931,9933,9935,9937],{"class":219,"line":1717},[217,9922,594],{"class":282},[217,9924,4164],{"class":234},[217,9926,489],{"class":282},[217,9928,602],{"class":364},[217,9930,8281],{"class":234},[217,9932,4185],{"class":230},[217,9934,235],{"class":234},[217,9936,4190],{"class":238},[217,9938,472],{"class":234},[217,9940,9942,9944,9946,9948,9951,9953,9955,9957,9959,9961],{"class":219,"line":9941},125,[217,9943,594],{"class":282},[217,9945,8305],{"class":234},[217,9947,489],{"class":282},[217,9949,9950],{"class":234}," validItems.",[217,9952,6594],{"class":230},[217,9954,235],{"class":234},[217,9956,283],{"class":282},[217,9958,286],{"class":234},[217,9960,7987],{"class":289},[217,9962,309],{"class":234},[217,9964,9966,9968,9970,9972],{"class":219,"line":9965},126,[217,9967,3896],{"class":282},[217,9969,8329],{"class":234},[217,9971,4252],{"class":230},[217,9973,340],{"class":234},[217,9975,9977],{"class":219,"line":9976},127,[217,9978,9979],{"class":234},"                    item: { internalid: item.internalid },\n",[217,9981,9983],{"class":219,"line":9982},128,[217,9984,9985],{"class":234},"                    quantity: item.quantity\n",[217,9987,9989],{"class":219,"line":9988},129,[217,9990,3211],{"class":234},[217,9992,9994],{"class":219,"line":9993},130,[217,9995,1078],{"class":234},[217,9997,9999],{"class":219,"line":9998},131,[217,10000,325],{"emptyLinePlaceholder":324},[217,10002,10004,10006,10008],{"class":219,"line":10003},132,[217,10005,8365],{"class":234},[217,10007,459],{"class":230},[217,10009,8370],{"class":234},[217,10011,10013,10015,10017,10019,10021],{"class":219,"line":10012},133,[217,10014,1478],{"class":234},[217,10016,909],{"class":230},[217,10018,235],{"class":234},[217,10020,283],{"class":282},[217,10022,916],{"class":234},[217,10024,10026,10028,10030,10032,10035,10038,10040],{"class":219,"line":10025},134,[217,10027,3998],{"class":234},[217,10029,4001],{"class":230},[217,10031,235],{"class":234},[217,10033,10034],{"class":238},"'cart'",[217,10036,10037],{"class":234},", { trigger: ",[217,10039,3939],{"class":364},[217,10041,2956],{"class":234},[217,10043,10045],{"class":219,"line":10044},135,[217,10046,3211],{"class":234},[217,10048,10050],{"class":219,"line":10049},136,[217,10051,1708],{"class":234},[217,10053,10055],{"class":219,"line":10054},137,[217,10056,1714],{"class":234},[217,10058,10060],{"class":219,"line":10059},138,[217,10061,1720],{"class":234},[15,10063,10064],{},"The upload interface should provide clear feedback—green for validated items, red for SKUs not found, yellow for items with insufficient inventory:",[207,10066,10068],{"className":1726,"code":10067,"language":1728,"meta":212,"style":212},"{{!-- Bulk order upload results --}}\n{{#if parsedItems.length}}\n\u003Cdiv class=\"bulk-order-results\">\n    \u003Cdiv class=\"results-summary\">\n        \u003Cspan class=\"valid-count\">\n            {{validCount}} {{translate 'items ready'}}\n        \u003C\u002Fspan>\n        {{#if invalidCount}}\n        \u003Cspan class=\"invalid-count\">\n            {{invalidCount}} {{translate 'items not found'}}\n        \u003C\u002Fspan>\n        {{\u002Fif}}\n    \u003C\u002Fdiv>\n\n    \u003Ctable class=\"bulk-order-table\">\n        \u003Cthead>\n            \u003Ctr>\n                \u003Cth>{{translate 'Status'}}\u003C\u002Fth>\n                \u003Cth>{{translate 'SKU'}}\u003C\u002Fth>\n                \u003Cth>{{translate 'Item Name'}}\u003C\u002Fth>\n                \u003Cth>{{translate 'Qty'}}\u003C\u002Fth>\n                \u003Cth>{{translate 'Unit Price'}}\u003C\u002Fth>\n                \u003Cth>{{translate 'Line Total'}}\u003C\u002Fth>\n            \u003C\u002Ftr>\n        \u003C\u002Fthead>\n        \u003Ctbody>\n            {{#each parsedItems}}\n            \u003Ctr class=\"status-{{status}}\">\n                \u003Ctd>\n                    {{#ifEquals status \"valid\"}}\n                        \u003Cspan class=\"icon-check\">✓\u003C\u002Fspan>\n                    {{else}}\n                        \u003Cspan class=\"icon-warning\">✗\u003C\u002Fspan>\n                    {{\u002FifEquals}}\n                \u003C\u002Ftd>\n                \u003Ctd>{{sku}}\u003C\u002Ftd>\n                \u003Ctd>{{#if name}}{{name}}{{else}}\n                    \u003Cem>Not found\u003C\u002Fem>{{\u002Fif}}\u003C\u002Ftd>\n                \u003Ctd>{{quantity}}\u003C\u002Ftd>\n                \u003Ctd>{{#if price}}{{formatCurrency price}}{{else}}\n                    —{{\u002Fif}}\u003C\u002Ftd>\n                \u003Ctd>{{#if price}}\n                    {{formatCurrency lineTotal}}\n                    {{else}}—{{\u002Fif}}\u003C\u002Ftd>\n            \u003C\u002Ftr>\n            {{\u002Feach}}\n        \u003C\u002Ftbody>\n    \u003C\u002Ftable>\n\n    {{#if validCount}}\n    \u003Cdiv class=\"bulk-order-actions\">\n        \u003Cbutton class=\"button-primary\"\n                data-action=\"add-all-to-cart\">\n            {{translate 'Add %(count)d Items to Cart'\n                count=validCount}}\n        \u003C\u002Fbutton>\n        \u003Cspan class=\"estimated-total\">\n            {{translate 'Estimated Total'}}: \n            {{formatCurrency estimatedTotal}}\n        \u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    {{\u002Fif}}\n\u003C\u002Fdiv>\n{{\u002Fif}}\n",[214,10069,10070,10075,10080,10085,10090,10095,10100,10104,10109,10114,10119,10123,10127,10131,10135,10140,10145,10150,10155,10160,10165,10170,10175,10180,10185,10190,10195,10200,10205,10210,10215,10220,10225,10230,10235,10240,10245,10250,10255,10260,10265,10270,10275,10280,10285,10289,10294,10299,10304,10308,10313,10318,10323,10328,10333,10338,10342,10347,10352,10357,10361,10365,10369,10373],{"__ignoreMap":212},[217,10071,10072],{"class":219,"line":220},[217,10073,10074],{},"{{!-- Bulk order upload results --}}\n",[217,10076,10077],{"class":219,"line":227},[217,10078,10079],{},"{{#if parsedItems.length}}\n",[217,10081,10082],{"class":219,"line":245},[217,10083,10084],{},"\u003Cdiv class=\"bulk-order-results\">\n",[217,10086,10087],{"class":219,"line":254},[217,10088,10089],{},"    \u003Cdiv class=\"results-summary\">\n",[217,10091,10092],{"class":219,"line":262},[217,10093,10094],{},"        \u003Cspan class=\"valid-count\">\n",[217,10096,10097],{"class":219,"line":270},[217,10098,10099],{},"            {{validCount}} {{translate 'items ready'}}\n",[217,10101,10102],{"class":219,"line":276},[217,10103,6831],{},[217,10105,10106],{"class":219,"line":312},[217,10107,10108],{},"        {{#if invalidCount}}\n",[217,10110,10111],{"class":219,"line":321},[217,10112,10113],{},"        \u003Cspan class=\"invalid-count\">\n",[217,10115,10116],{"class":219,"line":328},[217,10117,10118],{},"            {{invalidCount}} {{translate 'items not found'}}\n",[217,10120,10121],{"class":219,"line":343},[217,10122,6831],{},[217,10124,10125],{"class":219,"line":349},[217,10126,6836],{},[217,10128,10129],{"class":219,"line":354},[217,10130,2027],{},[217,10132,10133],{"class":219,"line":376},[217,10134,325],{"emptyLinePlaceholder":324},[217,10136,10137],{"class":219,"line":390},[217,10138,10139],{},"    \u003Ctable class=\"bulk-order-table\">\n",[217,10141,10142],{"class":219,"line":403},[217,10143,10144],{},"        \u003Cthead>\n",[217,10146,10147],{"class":219,"line":414},[217,10148,10149],{},"            \u003Ctr>\n",[217,10151,10152],{"class":219,"line":420},[217,10153,10154],{},"                \u003Cth>{{translate 'Status'}}\u003C\u002Fth>\n",[217,10156,10157],{"class":219,"line":425},[217,10158,10159],{},"                \u003Cth>{{translate 'SKU'}}\u003C\u002Fth>\n",[217,10161,10162],{"class":219,"line":442},[217,10163,10164],{},"                \u003Cth>{{translate 'Item Name'}}\u003C\u002Fth>\n",[217,10166,10167],{"class":219,"line":453},[217,10168,10169],{},"                \u003Cth>{{translate 'Qty'}}\u003C\u002Fth>\n",[217,10171,10172],{"class":219,"line":475},[217,10173,10174],{},"                \u003Cth>{{translate 'Unit Price'}}\u003C\u002Fth>\n",[217,10176,10177],{"class":219,"line":480},[217,10178,10179],{},"                \u003Cth>{{translate 'Line Total'}}\u003C\u002Fth>\n",[217,10181,10182],{"class":219,"line":495},[217,10183,10184],{},"            \u003C\u002Ftr>\n",[217,10186,10187],{"class":219,"line":506},[217,10188,10189],{},"        \u003C\u002Fthead>\n",[217,10191,10192],{"class":219,"line":516},[217,10193,10194],{},"        \u003Ctbody>\n",[217,10196,10197],{"class":219,"line":526},[217,10198,10199],{},"            {{#each parsedItems}}\n",[217,10201,10202],{"class":219,"line":536},[217,10203,10204],{},"            \u003Ctr class=\"status-{{status}}\">\n",[217,10206,10207],{"class":219,"line":545},[217,10208,10209],{},"                \u003Ctd>\n",[217,10211,10212],{"class":219,"line":551},[217,10213,10214],{},"                    {{#ifEquals status \"valid\"}}\n",[217,10216,10217],{"class":219,"line":557},[217,10218,10219],{},"                        \u003Cspan class=\"icon-check\">✓\u003C\u002Fspan>\n",[217,10221,10222],{"class":219,"line":562},[217,10223,10224],{},"                    {{else}}\n",[217,10226,10227],{"class":219,"line":579},[217,10228,10229],{},"                        \u003Cspan class=\"icon-warning\">✗\u003C\u002Fspan>\n",[217,10231,10232],{"class":219,"line":591},[217,10233,10234],{},"                    {{\u002FifEquals}}\n",[217,10236,10237],{"class":219,"line":607},[217,10238,10239],{},"                \u003C\u002Ftd>\n",[217,10241,10242],{"class":219,"line":612},[217,10243,10244],{},"                \u003Ctd>{{sku}}\u003C\u002Ftd>\n",[217,10246,10247],{"class":219,"line":623},[217,10248,10249],{},"                \u003Ctd>{{#if name}}{{name}}{{else}}\n",[217,10251,10252],{"class":219,"line":649},[217,10253,10254],{},"                    \u003Cem>Not found\u003C\u002Fem>{{\u002Fif}}\u003C\u002Ftd>\n",[217,10256,10257],{"class":219,"line":671},[217,10258,10259],{},"                \u003Ctd>{{quantity}}\u003C\u002Ftd>\n",[217,10261,10262],{"class":219,"line":693},[217,10263,10264],{},"                \u003Ctd>{{#if price}}{{formatCurrency price}}{{else}}\n",[217,10266,10267],{"class":219,"line":715},[217,10268,10269],{},"                    —{{\u002Fif}}\u003C\u002Ftd>\n",[217,10271,10272],{"class":219,"line":738},[217,10273,10274],{},"                \u003Ctd>{{#if price}}\n",[217,10276,10277],{"class":219,"line":743},[217,10278,10279],{},"                    {{formatCurrency lineTotal}}\n",[217,10281,10282],{"class":219,"line":748},[217,10283,10284],{},"                    {{else}}—{{\u002Fif}}\u003C\u002Ftd>\n",[217,10286,10287],{"class":219,"line":754},[217,10288,10184],{},[217,10290,10291],{"class":219,"line":767},[217,10292,10293],{},"            {{\u002Feach}}\n",[217,10295,10296],{"class":219,"line":772},[217,10297,10298],{},"        \u003C\u002Ftbody>\n",[217,10300,10301],{"class":219,"line":785},[217,10302,10303],{},"    \u003C\u002Ftable>\n",[217,10305,10306],{"class":219,"line":798},[217,10307,325],{"emptyLinePlaceholder":324},[217,10309,10310],{"class":219,"line":804},[217,10311,10312],{},"    {{#if validCount}}\n",[217,10314,10315],{"class":219,"line":816},[217,10316,10317],{},"    \u003Cdiv class=\"bulk-order-actions\">\n",[217,10319,10320],{"class":219,"line":829},[217,10321,10322],{},"        \u003Cbutton class=\"button-primary\"\n",[217,10324,10325],{"class":219,"line":834},[217,10326,10327],{},"                data-action=\"add-all-to-cart\">\n",[217,10329,10330],{"class":219,"line":846},[217,10331,10332],{},"            {{translate 'Add %(count)d Items to Cart'\n",[217,10334,10335],{"class":219,"line":859},[217,10336,10337],{},"                count=validCount}}\n",[217,10339,10340],{"class":219,"line":864},[217,10341,4595],{},[217,10343,10344],{"class":219,"line":869},[217,10345,10346],{},"        \u003Cspan class=\"estimated-total\">\n",[217,10348,10349],{"class":219,"line":875},[217,10350,10351],{},"            {{translate 'Estimated Total'}}: \n",[217,10353,10354],{"class":219,"line":888},[217,10355,10356],{},"            {{formatCurrency estimatedTotal}}\n",[217,10358,10359],{"class":219,"line":894},[217,10360,6831],{},[217,10362,10363],{"class":219,"line":903},[217,10364,2027],{},[217,10366,10367],{"class":219,"line":919},[217,10368,6868],{},[217,10370,10371],{"class":219,"line":925},[217,10372,2032],{},[217,10374,10375],{"class":219,"line":934},[217,10376,10377],{},"{{\u002Fif}}\n",[29,10379],{},[32,10381,100],{"id":10382},"feature-9-returns-and-rma-management",[15,10384,10385,3497,10387,10389,10390,10392],{},[18,10386,181],{},[18,10388,185],{}," 3–4 weeks | ",[18,10391,189],{}," Medium",[192,10394,195],{"id":10395},"the-problem-8",[15,10397,10398],{},"When a B2B buyer receives damaged goods or wrong items, the return process is manual: email the warehouse, wait for an RMA number, print a shipping label, track the credit. This takes days and generates support tickets.",[192,10400,202],{"id":10401},"the-solution-8",[15,10403,10404],{},"Let buyers initiate return requests directly from their order history, connected to NetSuite's Return Authorization records.",[15,10406,10407],{},"The workflow:",[37,10409,10410,10413,10416,10419,10422,10425,10428],{},[40,10411,10412],{},"Buyer clicks \"Return Items\" on an order detail page",[40,10414,10415],{},"Selects which line items to return and specifies quantities",[40,10417,10418],{},"Chooses a return reason from predefined options",[40,10420,10421],{},"Uploads photos of damaged items (optional)",[40,10423,10424],{},"System creates a Return Authorization in NetSuite",[40,10426,10427],{},"Buyer receives RMA number and shipping instructions",[40,10429,10430],{},"Return status is visible in MyAccount throughout the process",[207,10432,10434],{"className":209,"code":10433,"language":211,"meta":212,"style":212},"\u002F\u002F Return request initiation\ndefine('Stenbase.B2B.ReturnRequest.View', [\n    'Backbone',\n    'stenbase_b2b_return_request.tpl',\n    'Stenbase.B2B.ReturnRequest.Model'\n], function (Backbone, template, ReturnRequestModel) {\n    'use strict';\n\n    return Backbone.View.extend({\n        template: template,\n\n        events: {\n            'change [data-action=\"select-return-item\"]':\n                'toggleLineItem',\n            'submit [data-action=\"submit-return\"]': 'submitReturn'\n        },\n\n        initialize: function (options) {\n            this.order = options.order;\n            this.returnModel = new ReturnRequestModel();\n            this.selectedLines = {};\n        },\n\n        toggleLineItem: function (e) {\n            var $checkbox = jQuery(e.currentTarget);\n            var lineId = $checkbox.data('line-id');\n            var $row = $checkbox.closest('.return-line-item');\n\n            if ($checkbox.is(':checked')) {\n                $row.find('.return-fields').slideDown();\n                this.selectedLines[lineId] = {\n                    quantity: 1,\n                    reason: ''\n                };\n            } else {\n                $row.find('.return-fields').slideUp();\n                delete this.selectedLines[lineId];\n            }\n        },\n\n        submitReturn: function (e) {\n            e.preventDefault();\n            var self = this;\n\n            \u002F\u002F Collect return line details\n            var lines = [];\n            Object.keys(this.selectedLines).forEach(function (lineId) {\n                var $row = self.$(\n                    '[data-line-id=\"' + lineId + '\"]'\n                ).closest('.return-line-item');\n                lines.push({\n                    lineId: lineId,\n                    quantity: parseInt(\n                        $row.find('[name=\"return-qty\"]').val(), 10\n                    ),\n                    reason: $row.find('[name=\"return-reason\"]').val(),\n                    notes: $row.find('[name=\"return-notes\"]').val()\n                });\n            });\n\n            if (!lines.length) {\n                this.showError(\n                    'Please select at least one item to return.'\n                );\n                return;\n            }\n\n            this.returnModel.save({\n                orderId: this.order.get('internalid'),\n                lines: lines,\n                customerNotes: this.$(\n                    '[name=\"return-customer-notes\"]'\n                ).val()\n            }).done(function (response) {\n                Backbone.history.navigate(\n                    'returns\u002F' + response.returnId,\n                    { trigger: true }\n                );\n            });\n        },\n\n        getContext: function () {\n            return {\n                orderNumber: this.order.get('order_number'),\n                lines: this.order.get('lines').map(function (line) {\n                    return {\n                        lineId: line.internalid,\n                        itemName: line.item_display\n                            || line.item.displayname,\n                        sku: line.item.itemid,\n                        orderedQty: line.quantity,\n                        maxReturnQty: line.quantity -\n                            (line.quantityreturned || 0)\n                    };\n                }).filter(function (line) {\n                    return line.maxReturnQty > 0;\n                }),\n                returnReasons: [\n                    { value: 'damaged', label: 'Damaged in Shipping' },\n                    { value: 'defective', label: 'Defective Product' },\n                    { value: 'wrong_item', label: 'Wrong Item Received' },\n                    { value: 'wrong_qty', label: 'Wrong Quantity' },\n                    { value: 'not_needed', label: 'No Longer Needed' },\n                    { value: 'other', label: 'Other' }\n                ]\n            };\n        }\n    });\n});\n",[214,10435,10436,10441,10452,10458,10465,10470,10491,10497,10501,10511,10515,10519,10523,10530,10537,10547,10551,10555,10569,10581,10597,10608,10612,10616,10631,10645,10666,10686,10690,10707,10726,10737,10745,10753,10758,10766,10783,10793,10797,10801,10805,10820,10828,10840,10844,10849,10859,10887,10901,10915,10928,10936,10941,10949,10968,10972,10990,11007,11011,11015,11019,11034,11044,11049,11053,11059,11063,11067,11078,11097,11102,11115,11120,11128,11144,11153,11163,11172,11176,11180,11184,11188,11198,11204,11221,11250,11256,11261,11266,11274,11279,11284,11292,11303,11307,11323,11336,11340,11345,11360,11374,11388,11402,11416,11430,11435,11439,11443,11447],{"__ignoreMap":212},[217,10437,10438],{"class":219,"line":220},[217,10439,10440],{"class":223},"\u002F\u002F Return request initiation\n",[217,10442,10443,10445,10447,10450],{"class":219,"line":227},[217,10444,231],{"class":230},[217,10446,235],{"class":234},[217,10448,10449],{"class":238},"'Stenbase.B2B.ReturnRequest.View'",[217,10451,242],{"class":234},[217,10453,10454,10456],{"class":219,"line":245},[217,10455,3540],{"class":238},[217,10457,251],{"class":234},[217,10459,10460,10463],{"class":219,"line":254},[217,10461,10462],{"class":238},"    'stenbase_b2b_return_request.tpl'",[217,10464,251],{"class":234},[217,10466,10467],{"class":219,"line":262},[217,10468,10469],{"class":238},"    'Stenbase.B2B.ReturnRequest.Model'\n",[217,10471,10472,10474,10476,10478,10480,10482,10484,10486,10489],{"class":219,"line":270},[217,10473,279],{"class":234},[217,10475,283],{"class":282},[217,10477,286],{"class":234},[217,10479,3571],{"class":289},[217,10481,293],{"class":234},[217,10483,296],{"class":289},[217,10485,293],{"class":234},[217,10487,10488],{"class":289},"ReturnRequestModel",[217,10490,309],{"class":234},[217,10492,10493,10495],{"class":219,"line":276},[217,10494,315],{"class":238},[217,10496,318],{"class":234},[217,10498,10499],{"class":219,"line":312},[217,10500,325],{"emptyLinePlaceholder":324},[217,10502,10503,10505,10507,10509],{"class":219,"line":321},[217,10504,331],{"class":282},[217,10506,3603],{"class":234},[217,10508,337],{"class":230},[217,10510,340],{"class":234},[217,10512,10513],{"class":219,"line":328},[217,10514,346],{"class":234},[217,10516,10517],{"class":219,"line":343},[217,10518,325],{"emptyLinePlaceholder":324},[217,10520,10521],{"class":219,"line":349},[217,10522,3620],{"class":234},[217,10524,10525,10528],{"class":219,"line":354},[217,10526,10527],{"class":238},"            'change [data-action=\"select-return-item\"]'",[217,10529,8130],{"class":234},[217,10531,10532,10535],{"class":219,"line":376},[217,10533,10534],{"class":238},"                'toggleLineItem'",[217,10536,251],{"class":234},[217,10538,10539,10542,10544],{"class":219,"line":390},[217,10540,10541],{"class":238},"            'submit [data-action=\"submit-return\"]'",[217,10543,382],{"class":234},[217,10545,10546],{"class":238},"'submitReturn'\n",[217,10548,10549],{"class":219,"line":403},[217,10550,554],{"class":234},[217,10552,10553],{"class":219,"line":414},[217,10554,325],{"emptyLinePlaceholder":324},[217,10556,10557,10559,10561,10563,10565,10567],{"class":219,"line":420},[217,10558,428],{"class":230},[217,10560,382],{"class":234},[217,10562,283],{"class":282},[217,10564,286],{"class":234},[217,10566,437],{"class":289},[217,10568,309],{"class":234},[217,10570,10571,10573,10576,10578],{"class":219,"line":425},[217,10572,483],{"class":364},[217,10574,10575],{"class":234},".order ",[217,10577,489],{"class":282},[217,10579,10580],{"class":234}," options.order;\n",[217,10582,10583,10585,10588,10590,10592,10595],{"class":219,"line":442},[217,10584,483],{"class":364},[217,10586,10587],{"class":234},".returnModel ",[217,10589,489],{"class":282},[217,10591,1301],{"class":282},[217,10593,10594],{"class":230}," ReturnRequestModel",[217,10596,588],{"class":234},[217,10598,10599,10601,10604,10606],{"class":219,"line":453},[217,10600,483],{"class":364},[217,10602,10603],{"class":234},".selectedLines ",[217,10605,489],{"class":282},[217,10607,764],{"class":234},[217,10609,10610],{"class":219,"line":475},[217,10611,554],{"class":234},[217,10613,10614],{"class":219,"line":480},[217,10615,325],{"emptyLinePlaceholder":324},[217,10617,10618,10621,10623,10625,10627,10629],{"class":219,"line":495},[217,10619,10620],{"class":230},"        toggleLineItem",[217,10622,382],{"class":234},[217,10624,283],{"class":282},[217,10626,286],{"class":234},[217,10628,574],{"class":289},[217,10630,309],{"class":234},[217,10632,10633,10635,10638,10640,10642],{"class":219,"line":506},[217,10634,594],{"class":282},[217,10636,10637],{"class":234}," $checkbox ",[217,10639,489],{"class":282},[217,10641,4374],{"class":230},[217,10643,10644],{"class":234},"(e.currentTarget);\n",[217,10646,10647,10649,10652,10654,10657,10659,10661,10664],{"class":219,"line":516},[217,10648,594],{"class":282},[217,10650,10651],{"class":234}," lineId ",[217,10653,489],{"class":282},[217,10655,10656],{"class":234}," $checkbox.",[217,10658,8195],{"class":230},[217,10660,235],{"class":234},[217,10662,10663],{"class":238},"'line-id'",[217,10665,472],{"class":234},[217,10667,10668,10670,10672,10674,10676,10679,10681,10684],{"class":219,"line":526},[217,10669,594],{"class":282},[217,10671,4369],{"class":234},[217,10673,489],{"class":282},[217,10675,10656],{"class":234},[217,10677,10678],{"class":230},"closest",[217,10680,235],{"class":234},[217,10682,10683],{"class":238},"'.return-line-item'",[217,10685,472],{"class":234},[217,10687,10688],{"class":219,"line":536},[217,10689,325],{"emptyLinePlaceholder":324},[217,10691,10692,10694,10697,10700,10702,10705],{"class":219,"line":545},[217,10693,775],{"class":282},[217,10695,10696],{"class":234}," ($checkbox.",[217,10698,10699],{"class":230},"is",[217,10701,235],{"class":234},[217,10703,10704],{"class":238},"':checked'",[217,10706,8947],{"class":234},[217,10708,10709,10712,10714,10716,10719,10721,10724],{"class":219,"line":551},[217,10710,10711],{"class":234},"                $row.",[217,10713,4397],{"class":230},[217,10715,235],{"class":234},[217,10717,10718],{"class":238},"'.return-fields'",[217,10720,640],{"class":234},[217,10722,10723],{"class":230},"slideDown",[217,10725,588],{"class":234},[217,10727,10728,10730,10733,10735],{"class":219,"line":557},[217,10729,1548],{"class":364},[217,10731,10732],{"class":234},".selectedLines[lineId] ",[217,10734,489],{"class":282},[217,10736,492],{"class":234},[217,10738,10739,10741,10743],{"class":219,"line":562},[217,10740,4413],{"class":234},[217,10742,1041],{"class":364},[217,10744,251],{"class":234},[217,10746,10747,10750],{"class":219,"line":579},[217,10748,10749],{"class":234},"                    reason: ",[217,10751,10752],{"class":238},"''\n",[217,10754,10755],{"class":219,"line":591},[217,10756,10757],{"class":234},"                };\n",[217,10759,10760,10762,10764],{"class":219,"line":607},[217,10761,3216],{"class":234},[217,10763,3219],{"class":282},[217,10765,492],{"class":234},[217,10767,10768,10770,10772,10774,10776,10778,10781],{"class":219,"line":612},[217,10769,10711],{"class":234},[217,10771,4397],{"class":230},[217,10773,235],{"class":234},[217,10775,10718],{"class":238},[217,10777,640],{"class":234},[217,10779,10780],{"class":230},"slideUp",[217,10782,588],{"class":234},[217,10784,10785,10788,10790],{"class":219,"line":623},[217,10786,10787],{"class":282},"                delete",[217,10789,602],{"class":364},[217,10791,10792],{"class":234},".selectedLines[lineId];\n",[217,10794,10795],{"class":219,"line":649},[217,10796,801],{"class":234},[217,10798,10799],{"class":219,"line":671},[217,10800,554],{"class":234},[217,10802,10803],{"class":219,"line":693},[217,10804,325],{"emptyLinePlaceholder":324},[217,10806,10807,10810,10812,10814,10816,10818],{"class":219,"line":715},[217,10808,10809],{"class":230},"        submitReturn",[217,10811,382],{"class":234},[217,10813,283],{"class":282},[217,10815,286],{"class":234},[217,10817,574],{"class":289},[217,10819,309],{"class":234},[217,10821,10822,10824,10826],{"class":219,"line":738},[217,10823,582],{"class":234},[217,10825,585],{"class":230},[217,10827,588],{"class":234},[217,10829,10830,10832,10834,10836,10838],{"class":219,"line":743},[217,10831,594],{"class":282},[217,10833,597],{"class":234},[217,10835,489],{"class":282},[217,10837,602],{"class":364},[217,10839,318],{"class":234},[217,10841,10842],{"class":219,"line":748},[217,10843,325],{"emptyLinePlaceholder":324},[217,10845,10846],{"class":219,"line":754},[217,10847,10848],{"class":223},"            \u002F\u002F Collect return line details\n",[217,10850,10851,10853,10855,10857],{"class":219,"line":767},[217,10852,594],{"class":282},[217,10854,4334],{"class":234},[217,10856,489],{"class":282},[217,10858,2968],{"class":234},[217,10860,10861,10864,10867,10869,10871,10874,10876,10878,10880,10882,10885],{"class":219,"line":772},[217,10862,10863],{"class":234},"            Object.",[217,10865,10866],{"class":230},"keys",[217,10868,235],{"class":234},[217,10870,464],{"class":364},[217,10872,10873],{"class":234},".selectedLines).",[217,10875,4234],{"class":230},[217,10877,235],{"class":234},[217,10879,283],{"class":282},[217,10881,286],{"class":234},[217,10883,10884],{"class":289},"lineId",[217,10886,309],{"class":234},[217,10888,10889,10891,10893,10895,10897,10899],{"class":219,"line":785},[217,10890,4366],{"class":282},[217,10892,4369],{"class":234},[217,10894,489],{"class":282},[217,10896,9035],{"class":234},[217,10898,632],{"class":230},[217,10900,943],{"class":234},[217,10902,10903,10906,10908,10910,10912],{"class":219,"line":798},[217,10904,10905],{"class":238},"                    '[data-line-id=\"'",[217,10907,4011],{"class":282},[217,10909,10651],{"class":234},[217,10911,1269],{"class":282},[217,10913,10914],{"class":238}," '\"]'\n",[217,10916,10917,10920,10922,10924,10926],{"class":219,"line":804},[217,10918,10919],{"class":234},"                ).",[217,10921,10678],{"class":230},[217,10923,235],{"class":234},[217,10925,10683],{"class":238},[217,10927,472],{"class":234},[217,10929,10930,10932,10934],{"class":219,"line":816},[217,10931,4385],{"class":234},[217,10933,3189],{"class":230},[217,10935,340],{"class":234},[217,10937,10938],{"class":219,"line":829},[217,10939,10940],{"class":234},"                    lineId: lineId,\n",[217,10942,10943,10945,10947],{"class":219,"line":834},[217,10944,4413],{"class":234},[217,10946,4416],{"class":230},[217,10948,943],{"class":234},[217,10950,10951,10953,10955,10957,10960,10962,10964,10966],{"class":219,"line":846},[217,10952,4423],{"class":234},[217,10954,4397],{"class":230},[217,10956,235],{"class":234},[217,10958,10959],{"class":238},"'[name=\"return-qty\"]'",[217,10961,640],{"class":234},[217,10963,643],{"class":230},[217,10965,4437],{"class":234},[217,10967,4440],{"class":364},[217,10969,10970],{"class":219,"line":859},[217,10971,4445],{"class":234},[217,10973,10974,10977,10979,10981,10984,10986,10988],{"class":219,"line":864},[217,10975,10976],{"class":234},"                    reason: $row.",[217,10978,4397],{"class":230},[217,10980,235],{"class":234},[217,10982,10983],{"class":238},"'[name=\"return-reason\"]'",[217,10985,640],{"class":234},[217,10987,643],{"class":230},[217,10989,646],{"class":234},[217,10991,10992,10994,10996,10998,11001,11003,11005],{"class":219,"line":869},[217,10993,4450],{"class":234},[217,10995,4397],{"class":230},[217,10997,235],{"class":234},[217,10999,11000],{"class":238},"'[name=\"return-notes\"]'",[217,11002,640],{"class":234},[217,11004,643],{"class":230},[217,11006,735],{"class":234},[217,11008,11009],{"class":219,"line":875},[217,11010,3211],{"class":234},[217,11012,11013],{"class":219,"line":888},[217,11014,1078],{"class":234},[217,11016,11017],{"class":219,"line":894},[217,11018,325],{"emptyLinePlaceholder":324},[217,11020,11021,11023,11025,11027,11030,11032],{"class":219,"line":903},[217,11022,775],{"class":282},[217,11024,286],{"class":234},[217,11026,3868],{"class":282},[217,11028,11029],{"class":234},"lines.",[217,11031,2318],{"class":364},[217,11033,309],{"class":234},[217,11035,11036,11038,11040,11042],{"class":219,"line":919},[217,11037,1548],{"class":364},[217,11039,367],{"class":234},[217,11041,3884],{"class":230},[217,11043,943],{"class":234},[217,11045,11046],{"class":219,"line":925},[217,11047,11048],{"class":238},"                    'Please select at least one item to return.'\n",[217,11050,11051],{"class":219,"line":934},[217,11052,2497],{"class":234},[217,11054,11055,11057],{"class":219,"line":946},[217,11056,3896],{"class":282},[217,11058,318],{"class":234},[217,11060,11061],{"class":219,"line":966},[217,11062,801],{"class":234},[217,11064,11065],{"class":219,"line":999},[217,11066,325],{"emptyLinePlaceholder":324},[217,11068,11069,11071,11074,11076],{"class":219,"line":1019},[217,11070,483],{"class":364},[217,11072,11073],{"class":234},".returnModel.",[217,11075,3969],{"class":230},[217,11077,340],{"class":234},[217,11079,11080,11083,11085,11088,11090,11092,11095],{"class":219,"line":1029},[217,11081,11082],{"class":234},"                orderId: ",[217,11084,464],{"class":364},[217,11086,11087],{"class":234},".order.",[217,11089,980],{"class":230},[217,11091,235],{"class":234},[217,11093,11094],{"class":238},"'internalid'",[217,11096,1187],{"class":234},[217,11098,11099],{"class":219,"line":1046},[217,11100,11101],{"class":234},"                lines: lines,\n",[217,11103,11104,11107,11109,11111,11113],{"class":219,"line":1052},[217,11105,11106],{"class":234},"                customerNotes: ",[217,11108,464],{"class":364},[217,11110,367],{"class":234},[217,11112,632],{"class":230},[217,11114,943],{"class":234},[217,11116,11117],{"class":219,"line":1058},[217,11118,11119],{"class":238},"                    '[name=\"return-customer-notes\"]'\n",[217,11121,11122,11124,11126],{"class":219,"line":1064},[217,11123,10919],{"class":234},[217,11125,643],{"class":230},[217,11127,735],{"class":234},[217,11129,11130,11132,11134,11136,11138,11140,11142],{"class":219,"line":1075},[217,11131,906],{"class":234},[217,11133,909],{"class":230},[217,11135,235],{"class":234},[217,11137,283],{"class":282},[217,11139,286],{"class":234},[217,11141,2300],{"class":289},[217,11143,309],{"class":234},[217,11145,11146,11149,11151],{"class":219,"line":1081},[217,11147,11148],{"class":234},"                Backbone.history.",[217,11150,4001],{"class":230},[217,11152,943],{"class":234},[217,11154,11155,11158,11160],{"class":219,"line":1086},[217,11156,11157],{"class":238},"                    'returns\u002F'",[217,11159,4011],{"class":282},[217,11161,11162],{"class":234}," response.returnId,\n",[217,11164,11165,11168,11170],{"class":219,"line":1091},[217,11166,11167],{"class":234},"                    { trigger: ",[217,11169,3939],{"class":364},[217,11171,1324],{"class":234},[217,11173,11174],{"class":219,"line":1107},[217,11175,2497],{"class":234},[217,11177,11178],{"class":219,"line":1116},[217,11179,1078],{"class":234},[217,11181,11182],{"class":219,"line":1137},[217,11183,554],{"class":234},[217,11185,11186],{"class":219,"line":1142},[217,11187,325],{"emptyLinePlaceholder":324},[217,11189,11190,11192,11194,11196],{"class":219,"line":1162},[217,11191,1453],{"class":230},[217,11193,382],{"class":234},[217,11195,283],{"class":282},[217,11197,916],{"class":234},[217,11199,11200,11202],{"class":219,"line":1174},[217,11201,1699],{"class":282},[217,11203,492],{"class":234},[217,11205,11206,11209,11211,11213,11215,11217,11219],{"class":219,"line":1190},[217,11207,11208],{"class":234},"                orderNumber: ",[217,11210,464],{"class":364},[217,11212,11087],{"class":234},[217,11214,980],{"class":230},[217,11216,235],{"class":234},[217,11218,1184],{"class":238},[217,11220,1187],{"class":234},[217,11222,11223,11225,11227,11229,11231,11233,11236,11238,11240,11242,11244,11246,11248],{"class":219,"line":1204},[217,11224,3778],{"class":234},[217,11226,464],{"class":364},[217,11228,11087],{"class":234},[217,11230,980],{"class":230},[217,11232,235],{"class":234},[217,11234,11235],{"class":238},"'lines'",[217,11237,640],{"class":234},[217,11239,6594],{"class":230},[217,11241,235],{"class":234},[217,11243,283],{"class":282},[217,11245,286],{"class":234},[217,11247,219],{"class":289},[217,11249,309],{"class":234},[217,11251,11252,11254],{"class":219,"line":1223},[217,11253,6610],{"class":282},[217,11255,492],{"class":234},[217,11257,11258],{"class":219,"line":1238},[217,11259,11260],{"class":234},"                        lineId: line.internalid,\n",[217,11262,11263],{"class":219,"line":1253},[217,11264,11265],{"class":234},"                        itemName: line.item_display\n",[217,11267,11268,11271],{"class":219,"line":1281},[217,11269,11270],{"class":282},"                            ||",[217,11272,11273],{"class":234}," line.item.displayname,\n",[217,11275,11276],{"class":219,"line":1286},[217,11277,11278],{"class":234},"                        sku: line.item.itemid,\n",[217,11280,11281],{"class":219,"line":1291},[217,11282,11283],{"class":234},"                        orderedQty: line.quantity,\n",[217,11285,11286,11289],{"class":219,"line":1309},[217,11287,11288],{"class":234},"                        maxReturnQty: line.quantity ",[217,11290,11291],{"class":282},"-\n",[217,11293,11294,11297,11299,11301],{"class":219,"line":1315},[217,11295,11296],{"class":234},"                            (line.quantityreturned ",[217,11298,991],{"class":282},[217,11300,3001],{"class":364},[217,11302,3922],{"class":234},[217,11304,11305],{"class":219,"line":1327},[217,11306,6653],{"class":234},[217,11308,11309,11311,11313,11315,11317,11319,11321],{"class":219,"line":1333},[217,11310,7386],{"class":234},[217,11312,952],{"class":230},[217,11314,235],{"class":234},[217,11316,283],{"class":282},[217,11318,286],{"class":234},[217,11320,219],{"class":289},[217,11322,309],{"class":234},[217,11324,11325,11327,11330,11332,11334],{"class":219,"line":1356},[217,11326,6610],{"class":282},[217,11328,11329],{"class":234}," line.maxReturnQty ",[217,11331,9347],{"class":282},[217,11333,3001],{"class":364},[217,11335,318],{"class":234},[217,11337,11338],{"class":219,"line":1375},[217,11339,6658],{"class":234},[217,11341,11342],{"class":219,"line":1389},[217,11343,11344],{"class":234},"                returnReasons: [\n",[217,11346,11347,11350,11353,11355,11358],{"class":219,"line":1429},[217,11348,11349],{"class":234},"                    { value: ",[217,11351,11352],{"class":238},"'damaged'",[217,11354,1601],{"class":234},[217,11356,11357],{"class":238},"'Damaged in Shipping'",[217,11359,1607],{"class":234},[217,11361,11362,11364,11367,11369,11372],{"class":219,"line":1440},[217,11363,11349],{"class":234},[217,11365,11366],{"class":238},"'defective'",[217,11368,1601],{"class":234},[217,11370,11371],{"class":238},"'Defective Product'",[217,11373,1607],{"class":234},[217,11375,11376,11378,11381,11383,11386],{"class":219,"line":1445},[217,11377,11349],{"class":234},[217,11379,11380],{"class":238},"'wrong_item'",[217,11382,1601],{"class":234},[217,11384,11385],{"class":238},"'Wrong Item Received'",[217,11387,1607],{"class":234},[217,11389,11390,11392,11395,11397,11400],{"class":219,"line":1450},[217,11391,11349],{"class":234},[217,11393,11394],{"class":238},"'wrong_qty'",[217,11396,1601],{"class":234},[217,11398,11399],{"class":238},"'Wrong Quantity'",[217,11401,1607],{"class":234},[217,11403,11404,11406,11409,11411,11414],{"class":219,"line":1462},[217,11405,11349],{"class":234},[217,11407,11408],{"class":238},"'not_needed'",[217,11410,1601],{"class":234},[217,11412,11413],{"class":238},"'No Longer Needed'",[217,11415,1607],{"class":234},[217,11417,11418,11420,11423,11425,11428],{"class":219,"line":1475},[217,11419,11349],{"class":234},[217,11421,11422],{"class":238},"'other'",[217,11424,1601],{"class":234},[217,11426,11427],{"class":238},"'Other'",[217,11429,1324],{"class":234},[217,11431,11432],{"class":219,"line":1498},[217,11433,11434],{"class":234},"                ]\n",[217,11436,11437],{"class":219,"line":1503},[217,11438,548],{"class":234},[217,11440,11441],{"class":219,"line":1516},[217,11442,1708],{"class":234},[217,11444,11445],{"class":219,"line":1529},[217,11446,1714],{"class":234},[217,11448,11449],{"class":219,"line":1545},[217,11450,1720],{"class":234},[15,11452,11453],{},"On the NetSuite side, a SuiteScript service creates the Return Authorization record and triggers any approval workflows you've configured.",[29,11455],{},[32,11457,106],{"id":11458},"feature-10-custom-dashboards-and-reporting",[15,11460,11461],{},[4933,11462],{"alt":11463,"src":11464},"Custom dashboard features","\u002Fimages\u002Fblog\u002Fsuitecommerce-myaccount-features.webp",[15,11466,11467,6337,11469,6340,11471,10392],{},[18,11468,181],{},[18,11470,185],{},[18,11472,189],{},[192,11474,195],{"id":11475},"the-problem-9",[15,11477,11478],{},"The default MyAccount landing page shows recent orders and saved items. For a B2B buyer, this isn't actionable. They need a dashboard that answers: What do I owe? What's shipping? What needs reordering? Are my quotes about to expire?",[192,11480,202],{"id":11481},"the-solution-9",[15,11483,11484],{},"Replace the default MyAccount landing page with a B2B-focused dashboard that consolidates the most critical information.",[207,11486,11488],{"className":1726,"code":11487,"language":1728,"meta":212,"style":212},"{{!-- B2B MyAccount Dashboard --}}\n\u003Cdiv class=\"b2b-dashboard\">\n    \u003Ch1>{{translate 'Welcome back, %(name)s' name=contactName}}\u003C\u002Fh1>\n\n    \u003Cdiv class=\"dashboard-grid\">\n        {{!-- Account Balance Card --}}\n        \u003Cdiv class=\"dashboard-card card-balance\">\n            \u003Ch3>{{translate 'Account Balance'}}\u003C\u002Fh3>\n            \u003Cdiv class=\"card-metric\">\n                {{formatCurrency accountBalance.totalOutstanding}}\n            \u003C\u002Fdiv>\n            {{#if accountBalance.overdueAmount}}\n            \u003Cdiv class=\"card-alert\">\n                {{formatCurrency accountBalance.overdueAmount}}\n                {{translate 'overdue'}}\n            \u003C\u002Fdiv>\n            {{\u002Fif}}\n            \u003Ca href=\"\u002Fmy_account#invoices\">\n                {{translate 'View Invoices'}} →\n            \u003C\u002Fa>\n        \u003C\u002Fdiv>\n\n        {{!-- Open Orders Card --}}\n        \u003Cdiv class=\"dashboard-card card-orders\">\n            \u003Ch3>{{translate 'Open Orders'}}\u003C\u002Fh3>\n            \u003Cdiv class=\"card-metric\">{{openOrderCount}}\u003C\u002Fdiv>\n            \u003Cdiv class=\"card-detail\">\n                {{inTransitCount}} {{translate 'in transit'}}\n            \u003C\u002Fdiv>\n            \u003Ca href=\"\u002Fmy_account#orders\">\n                {{translate 'View Orders'}} →\n            \u003C\u002Fa>\n        \u003C\u002Fdiv>\n\n        {{!-- Pending Quotes Card --}}\n        \u003Cdiv class=\"dashboard-card card-quotes\">\n            \u003Ch3>{{translate 'Pending Quotes'}}\u003C\u002Fh3>\n            \u003Cdiv class=\"card-metric\">{{pendingQuoteCount}}\u003C\u002Fdiv>\n            {{#if expiringQuoteCount}}\n            \u003Cdiv class=\"card-alert\">\n                {{expiringQuoteCount}}\n                {{translate 'expiring this week'}}\n            \u003C\u002Fdiv>\n            {{\u002Fif}}\n            \u003Ca href=\"\u002Fmy_account#quotes\">\n                {{translate 'View Quotes'}} →\n            \u003C\u002Fa>\n        \u003C\u002Fdiv>\n\n        {{!-- Quick Reorder Card --}}\n        \u003Cdiv class=\"dashboard-card card-reorder\">\n            \u003Ch3>{{translate 'Quick Reorder'}}\u003C\u002Fh3>\n            \u003Cp>{{translate 'Your most recent order'}}\u003C\u002Fp>\n            {{#if lastOrder}}\n            \u003Cdiv class=\"card-detail\">\n                #{{lastOrder.orderNumber}} — \n                {{lastOrder.lineCount}} {{translate 'items'}}\n            \u003C\u002Fdiv>\n            \u003Cbutton class=\"button-primary\"\n                    data-action=\"reorder\"\n                    data-order-id=\"{{lastOrder.internalid}}\">\n                {{translate 'Reorder'}}\n            \u003C\u002Fbutton>\n            {{\u002Fif}}\n        \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    {{!-- Recent Activity Feed --}}\n    \u003Cdiv class=\"dashboard-activity\">\n        \u003Ch3>{{translate 'Recent Activity'}}\u003C\u002Fh3>\n        \u003Cul class=\"activity-feed\">\n            {{#each recentActivity}}\n            \u003Cli class=\"activity-item activity-{{type}}\">\n                \u003Cspan class=\"activity-icon\">\u003C\u002Fspan>\n                \u003Cspan class=\"activity-text\">{{description}}\u003C\u002Fspan>\n                \u003Cspan class=\"activity-time\">{{timeAgo}}\u003C\u002Fspan>\n            \u003C\u002Fli>\n            {{\u002Feach}}\n        \u003C\u002Ful>\n    \u003C\u002Fdiv>\n\n    {{!-- Items Needing Reorder --}}\n    {{#if reorderSuggestions.length}}\n    \u003Cdiv class=\"dashboard-reorder-suggestions\">\n        \u003Ch3>{{translate 'Suggested Reorders'}}\u003C\u002Fh3>\n        \u003Cp>{{translate 'Based on your order patterns, these items may be running low.'}}\u003C\u002Fp>\n        \u003Cdiv class=\"suggestion-items\">\n            {{#each reorderSuggestions}}\n            \u003Cdiv class=\"suggestion-card\">\n                \u003Cspan class=\"suggestion-name\">{{itemName}}\u003C\u002Fspan>\n                \u003Cspan class=\"suggestion-sku\">{{sku}}\u003C\u002Fspan>\n                \u003Cspan class=\"suggestion-last\">\n                    {{translate 'Last ordered'}}: {{lastOrderDate}}\n                \u003C\u002Fspan>\n                \u003Cbutton class=\"button-small\"\n                        data-action=\"quick-add\"\n                        data-item-id=\"{{internalid}}\"\n                        data-quantity=\"{{suggestedQty}}\">\n                    {{translate 'Add %(qty)d to Cart' qty=suggestedQty}}\n                \u003C\u002Fbutton>\n            \u003C\u002Fdiv>\n            {{\u002Feach}}\n        \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    {{\u002Fif}}\n\u003C\u002Fdiv>\n",[214,11489,11490,11495,11500,11505,11509,11514,11519,11524,11529,11534,11539,11543,11548,11553,11558,11563,11567,11571,11576,11581,11586,11590,11594,11599,11604,11609,11614,11619,11624,11628,11633,11638,11642,11646,11650,11655,11660,11665,11670,11675,11679,11684,11689,11693,11697,11702,11707,11711,11715,11719,11724,11729,11734,11739,11744,11748,11753,11758,11762,11767,11772,11777,11782,11787,11791,11795,11799,11803,11808,11813,11818,11823,11828,11833,11838,11843,11848,11853,11857,11862,11866,11870,11875,11880,11885,11890,11895,11900,11905,11910,11915,11920,11925,11930,11934,11939,11944,11949,11954,11959,11963,11967,11971,11975,11979,11983],{"__ignoreMap":212},[217,11491,11492],{"class":219,"line":220},[217,11493,11494],{},"{{!-- B2B MyAccount Dashboard --}}\n",[217,11496,11497],{"class":219,"line":227},[217,11498,11499],{},"\u003Cdiv class=\"b2b-dashboard\">\n",[217,11501,11502],{"class":219,"line":245},[217,11503,11504],{},"    \u003Ch1>{{translate 'Welcome back, %(name)s' name=contactName}}\u003C\u002Fh1>\n",[217,11506,11507],{"class":219,"line":254},[217,11508,325],{"emptyLinePlaceholder":324},[217,11510,11511],{"class":219,"line":262},[217,11512,11513],{},"    \u003Cdiv class=\"dashboard-grid\">\n",[217,11515,11516],{"class":219,"line":270},[217,11517,11518],{},"        {{!-- Account Balance Card --}}\n",[217,11520,11521],{"class":219,"line":276},[217,11522,11523],{},"        \u003Cdiv class=\"dashboard-card card-balance\">\n",[217,11525,11526],{"class":219,"line":312},[217,11527,11528],{},"            \u003Ch3>{{translate 'Account Balance'}}\u003C\u002Fh3>\n",[217,11530,11531],{"class":219,"line":321},[217,11532,11533],{},"            \u003Cdiv class=\"card-metric\">\n",[217,11535,11536],{"class":219,"line":328},[217,11537,11538],{},"                {{formatCurrency accountBalance.totalOutstanding}}\n",[217,11540,11541],{"class":219,"line":343},[217,11542,1785],{},[217,11544,11545],{"class":219,"line":349},[217,11546,11547],{},"            {{#if accountBalance.overdueAmount}}\n",[217,11549,11550],{"class":219,"line":354},[217,11551,11552],{},"            \u003Cdiv class=\"card-alert\">\n",[217,11554,11555],{"class":219,"line":376},[217,11556,11557],{},"                {{formatCurrency accountBalance.overdueAmount}}\n",[217,11559,11560],{"class":219,"line":390},[217,11561,11562],{},"                {{translate 'overdue'}}\n",[217,11564,11565],{"class":219,"line":403},[217,11566,1785],{},[217,11568,11569],{"class":219,"line":414},[217,11570,4590],{},[217,11572,11573],{"class":219,"line":420},[217,11574,11575],{},"            \u003Ca href=\"\u002Fmy_account#invoices\">\n",[217,11577,11578],{"class":219,"line":425},[217,11579,11580],{},"                {{translate 'View Invoices'}} →\n",[217,11582,11583],{"class":219,"line":442},[217,11584,11585],{},"            \u003C\u002Fa>\n",[217,11587,11588],{"class":219,"line":453},[217,11589,1885],{},[217,11591,11592],{"class":219,"line":475},[217,11593,325],{"emptyLinePlaceholder":324},[217,11595,11596],{"class":219,"line":480},[217,11597,11598],{},"        {{!-- Open Orders Card --}}\n",[217,11600,11601],{"class":219,"line":495},[217,11602,11603],{},"        \u003Cdiv class=\"dashboard-card card-orders\">\n",[217,11605,11606],{"class":219,"line":506},[217,11607,11608],{},"            \u003Ch3>{{translate 'Open Orders'}}\u003C\u002Fh3>\n",[217,11610,11611],{"class":219,"line":516},[217,11612,11613],{},"            \u003Cdiv class=\"card-metric\">{{openOrderCount}}\u003C\u002Fdiv>\n",[217,11615,11616],{"class":219,"line":526},[217,11617,11618],{},"            \u003Cdiv class=\"card-detail\">\n",[217,11620,11621],{"class":219,"line":536},[217,11622,11623],{},"                {{inTransitCount}} {{translate 'in transit'}}\n",[217,11625,11626],{"class":219,"line":545},[217,11627,1785],{},[217,11629,11630],{"class":219,"line":551},[217,11631,11632],{},"            \u003Ca href=\"\u002Fmy_account#orders\">\n",[217,11634,11635],{"class":219,"line":557},[217,11636,11637],{},"                {{translate 'View Orders'}} →\n",[217,11639,11640],{"class":219,"line":562},[217,11641,11585],{},[217,11643,11644],{"class":219,"line":579},[217,11645,1885],{},[217,11647,11648],{"class":219,"line":591},[217,11649,325],{"emptyLinePlaceholder":324},[217,11651,11652],{"class":219,"line":607},[217,11653,11654],{},"        {{!-- Pending Quotes Card --}}\n",[217,11656,11657],{"class":219,"line":612},[217,11658,11659],{},"        \u003Cdiv class=\"dashboard-card card-quotes\">\n",[217,11661,11662],{"class":219,"line":623},[217,11663,11664],{},"            \u003Ch3>{{translate 'Pending Quotes'}}\u003C\u002Fh3>\n",[217,11666,11667],{"class":219,"line":649},[217,11668,11669],{},"            \u003Cdiv class=\"card-metric\">{{pendingQuoteCount}}\u003C\u002Fdiv>\n",[217,11671,11672],{"class":219,"line":671},[217,11673,11674],{},"            {{#if expiringQuoteCount}}\n",[217,11676,11677],{"class":219,"line":693},[217,11678,11552],{},[217,11680,11681],{"class":219,"line":715},[217,11682,11683],{},"                {{expiringQuoteCount}}\n",[217,11685,11686],{"class":219,"line":738},[217,11687,11688],{},"                {{translate 'expiring this week'}}\n",[217,11690,11691],{"class":219,"line":743},[217,11692,1785],{},[217,11694,11695],{"class":219,"line":748},[217,11696,4590],{},[217,11698,11699],{"class":219,"line":754},[217,11700,11701],{},"            \u003Ca href=\"\u002Fmy_account#quotes\">\n",[217,11703,11704],{"class":219,"line":767},[217,11705,11706],{},"                {{translate 'View Quotes'}} →\n",[217,11708,11709],{"class":219,"line":772},[217,11710,11585],{},[217,11712,11713],{"class":219,"line":785},[217,11714,1885],{},[217,11716,11717],{"class":219,"line":798},[217,11718,325],{"emptyLinePlaceholder":324},[217,11720,11721],{"class":219,"line":804},[217,11722,11723],{},"        {{!-- Quick Reorder Card --}}\n",[217,11725,11726],{"class":219,"line":816},[217,11727,11728],{},"        \u003Cdiv class=\"dashboard-card card-reorder\">\n",[217,11730,11731],{"class":219,"line":829},[217,11732,11733],{},"            \u003Ch3>{{translate 'Quick Reorder'}}\u003C\u002Fh3>\n",[217,11735,11736],{"class":219,"line":834},[217,11737,11738],{},"            \u003Cp>{{translate 'Your most recent order'}}\u003C\u002Fp>\n",[217,11740,11741],{"class":219,"line":846},[217,11742,11743],{},"            {{#if lastOrder}}\n",[217,11745,11746],{"class":219,"line":859},[217,11747,11618],{},[217,11749,11750],{"class":219,"line":864},[217,11751,11752],{},"                #{{lastOrder.orderNumber}} — \n",[217,11754,11755],{"class":219,"line":869},[217,11756,11757],{},"                {{lastOrder.lineCount}} {{translate 'items'}}\n",[217,11759,11760],{"class":219,"line":875},[217,11761,1785],{},[217,11763,11764],{"class":219,"line":888},[217,11765,11766],{},"            \u003Cbutton class=\"button-primary\"\n",[217,11768,11769],{"class":219,"line":894},[217,11770,11771],{},"                    data-action=\"reorder\"\n",[217,11773,11774],{"class":219,"line":903},[217,11775,11776],{},"                    data-order-id=\"{{lastOrder.internalid}}\">\n",[217,11778,11779],{"class":219,"line":919},[217,11780,11781],{},"                {{translate 'Reorder'}}\n",[217,11783,11784],{"class":219,"line":925},[217,11785,11786],{},"            \u003C\u002Fbutton>\n",[217,11788,11789],{"class":219,"line":934},[217,11790,4590],{},[217,11792,11793],{"class":219,"line":946},[217,11794,1885],{},[217,11796,11797],{"class":219,"line":966},[217,11798,2027],{},[217,11800,11801],{"class":219,"line":999},[217,11802,325],{"emptyLinePlaceholder":324},[217,11804,11805],{"class":219,"line":1019},[217,11806,11807],{},"    {{!-- Recent Activity Feed --}}\n",[217,11809,11810],{"class":219,"line":1029},[217,11811,11812],{},"    \u003Cdiv class=\"dashboard-activity\">\n",[217,11814,11815],{"class":219,"line":1046},[217,11816,11817],{},"        \u003Ch3>{{translate 'Recent Activity'}}\u003C\u002Fh3>\n",[217,11819,11820],{"class":219,"line":1052},[217,11821,11822],{},"        \u003Cul class=\"activity-feed\">\n",[217,11824,11825],{"class":219,"line":1058},[217,11826,11827],{},"            {{#each recentActivity}}\n",[217,11829,11830],{"class":219,"line":1064},[217,11831,11832],{},"            \u003Cli class=\"activity-item activity-{{type}}\">\n",[217,11834,11835],{"class":219,"line":1075},[217,11836,11837],{},"                \u003Cspan class=\"activity-icon\">\u003C\u002Fspan>\n",[217,11839,11840],{"class":219,"line":1081},[217,11841,11842],{},"                \u003Cspan class=\"activity-text\">{{description}}\u003C\u002Fspan>\n",[217,11844,11845],{"class":219,"line":1086},[217,11846,11847],{},"                \u003Cspan class=\"activity-time\">{{timeAgo}}\u003C\u002Fspan>\n",[217,11849,11850],{"class":219,"line":1091},[217,11851,11852],{},"            \u003C\u002Fli>\n",[217,11854,11855],{"class":219,"line":1107},[217,11856,10293],{},[217,11858,11859],{"class":219,"line":1116},[217,11860,11861],{},"        \u003C\u002Ful>\n",[217,11863,11864],{"class":219,"line":1137},[217,11865,2027],{},[217,11867,11868],{"class":219,"line":1142},[217,11869,325],{"emptyLinePlaceholder":324},[217,11871,11872],{"class":219,"line":1162},[217,11873,11874],{},"    {{!-- Items Needing Reorder --}}\n",[217,11876,11877],{"class":219,"line":1174},[217,11878,11879],{},"    {{#if reorderSuggestions.length}}\n",[217,11881,11882],{"class":219,"line":1190},[217,11883,11884],{},"    \u003Cdiv class=\"dashboard-reorder-suggestions\">\n",[217,11886,11887],{"class":219,"line":1204},[217,11888,11889],{},"        \u003Ch3>{{translate 'Suggested Reorders'}}\u003C\u002Fh3>\n",[217,11891,11892],{"class":219,"line":1223},[217,11893,11894],{},"        \u003Cp>{{translate 'Based on your order patterns, these items may be running low.'}}\u003C\u002Fp>\n",[217,11896,11897],{"class":219,"line":1238},[217,11898,11899],{},"        \u003Cdiv class=\"suggestion-items\">\n",[217,11901,11902],{"class":219,"line":1253},[217,11903,11904],{},"            {{#each reorderSuggestions}}\n",[217,11906,11907],{"class":219,"line":1281},[217,11908,11909],{},"            \u003Cdiv class=\"suggestion-card\">\n",[217,11911,11912],{"class":219,"line":1286},[217,11913,11914],{},"                \u003Cspan class=\"suggestion-name\">{{itemName}}\u003C\u002Fspan>\n",[217,11916,11917],{"class":219,"line":1291},[217,11918,11919],{},"                \u003Cspan class=\"suggestion-sku\">{{sku}}\u003C\u002Fspan>\n",[217,11921,11922],{"class":219,"line":1309},[217,11923,11924],{},"                \u003Cspan class=\"suggestion-last\">\n",[217,11926,11927],{"class":219,"line":1315},[217,11928,11929],{},"                    {{translate 'Last ordered'}}: {{lastOrderDate}}\n",[217,11931,11932],{"class":219,"line":1327},[217,11933,4690],{},[217,11935,11936],{"class":219,"line":1333},[217,11937,11938],{},"                \u003Cbutton class=\"button-small\"\n",[217,11940,11941],{"class":219,"line":1356},[217,11942,11943],{},"                        data-action=\"quick-add\"\n",[217,11945,11946],{"class":219,"line":1375},[217,11947,11948],{},"                        data-item-id=\"{{internalid}}\"\n",[217,11950,11951],{"class":219,"line":1389},[217,11952,11953],{},"                        data-quantity=\"{{suggestedQty}}\">\n",[217,11955,11956],{"class":219,"line":1429},[217,11957,11958],{},"                    {{translate 'Add %(qty)d to Cart' qty=suggestedQty}}\n",[217,11960,11961],{"class":219,"line":1440},[217,11962,1964],{},[217,11964,11965],{"class":219,"line":1445},[217,11966,1785],{},[217,11968,11969],{"class":219,"line":1450},[217,11970,10293],{},[217,11972,11973],{"class":219,"line":1462},[217,11974,1885],{},[217,11976,11977],{"class":219,"line":1475},[217,11978,2027],{},[217,11980,11981],{"class":219,"line":1498},[217,11982,6868],{},[217,11984,11985],{"class":219,"line":1503},[217,11986,2032],{},[15,11988,11989],{},"The reorder suggestions are generated by a SuiteScript scheduled script that analyzes each customer's order frequency:",[207,11991,11993],{"className":209,"code":11992,"language":211,"meta":212,"style":212},"\u002F**\n * @NApiVersion 2.1\n * @NScriptType ScheduledScript\n *\n * Generates reorder suggestions based on purchase patterns\n *\u002F\ndefine(['N\u002Fsearch', 'N\u002Frecord'], function (search, record) {\n\n    function execute(context) {\n        \u002F\u002F Find items each customer orders regularly\n        var orderSearch = search.create({\n            type: search.Type.SALES_ORDER,\n            filters: [\n                ['mainline', 'is', 'F'],\n                'AND',\n                ['trandate', 'within', 'lastrolling6months'],\n                'AND',\n                ['status', 'anyof', [\n                    'SalesOrd:F',  \u002F\u002F Billed\n                    'SalesOrd:G'   \u002F\u002F Closed\n                ]]\n            ],\n            columns: [\n                search.createColumn({\n                    name: 'entity',\n                    summary: search.Summary.GROUP\n                }),\n                search.createColumn({\n                    name: 'item',\n                    summary: search.Summary.GROUP\n                }),\n                search.createColumn({\n                    name: 'trandate',\n                    summary: search.Summary.MAX,\n                    label: 'lastOrder'\n                }),\n                search.createColumn({\n                    name: 'trandate',\n                    summary: search.Summary.COUNT,\n                    label: 'orderCount'\n                }),\n                search.createColumn({\n                    name: 'quantity',\n                    summary: search.Summary.AVG,\n                    label: 'avgQty'\n                })\n            ]\n        });\n\n        orderSearch.run().each(function (result) {\n            var customerId = result.getValue({\n                name: 'entity',\n                summary: search.Summary.GROUP\n            });\n            var itemId = result.getValue({\n                name: 'item',\n                summary: search.Summary.GROUP\n            });\n            var orderCount = parseInt(result.getValue({\n                name: 'trandate',\n                summary: search.Summary.COUNT\n            }), 10);\n\n            \u002F\u002F Only suggest items ordered 3+ times in 6 months\n            if (orderCount >= 3) {\n                \u002F\u002F Store suggestion for the customer portal\n                createReorderSuggestion(\n                    customerId,\n                    itemId,\n                    result\n                );\n            }\n\n            return true;\n        });\n    }\n\n    return { execute: execute };\n});\n",[214,11994,11995,11999,12007,12016,12020,12025,12029,12055,12059,12072,12077,12092,12100,12104,12121,12127,12146,12152,12165,12176,12184,12189,12193,12197,12207,12216,12224,12228,12236,12244,12250,12254,12262,12270,12279,12287,12291,12299,12307,12316,12323,12327,12335,12343,12352,12359,12363,12367,12371,12375,12396,12411,12420,12427,12431,12445,12453,12459,12463,12481,12489,12496,12506,12510,12515,12529,12534,12541,12546,12551,12556,12560,12564,12568,12576,12580,12584,12588,12595],{"__ignoreMap":212},[217,11996,11997],{"class":219,"line":220},[217,11998,2617],{"class":223},[217,12000,12001,12003,12005],{"class":219,"line":227},[217,12002,2622],{"class":223},[217,12004,2625],{"class":282},[217,12006,2628],{"class":223},[217,12008,12009,12011,12013],{"class":219,"line":245},[217,12010,2622],{"class":223},[217,12012,2635],{"class":282},[217,12014,12015],{"class":223}," ScheduledScript\n",[217,12017,12018],{"class":219,"line":254},[217,12019,2653],{"class":223},[217,12021,12022],{"class":219,"line":262},[217,12023,12024],{"class":223}," * Generates reorder suggestions based on purchase patterns\n",[217,12026,12027],{"class":219,"line":270},[217,12028,2663],{"class":223},[217,12030,12031,12033,12035,12037,12039,12041,12043,12045,12047,12049,12051,12053],{"class":219,"line":276},[217,12032,231],{"class":230},[217,12034,2670],{"class":234},[217,12036,2678],{"class":238},[217,12038,293],{"class":234},[217,12040,2673],{"class":238},[217,12042,279],{"class":234},[217,12044,283],{"class":282},[217,12046,286],{"class":234},[217,12048,2697],{"class":289},[217,12050,293],{"class":234},[217,12052,2692],{"class":289},[217,12054,309],{"class":234},[217,12056,12057],{"class":219,"line":312},[217,12058,325],{"emptyLinePlaceholder":324},[217,12060,12061,12063,12066,12068,12070],{"class":219,"line":321},[217,12062,2713],{"class":282},[217,12064,12065],{"class":230}," execute",[217,12067,235],{"class":234},[217,12069,2721],{"class":289},[217,12071,309],{"class":234},[217,12073,12074],{"class":219,"line":328},[217,12075,12076],{"class":223},"        \u002F\u002F Find items each customer orders regularly\n",[217,12078,12079,12081,12084,12086,12088,12090],{"class":219,"line":343},[217,12080,2728],{"class":282},[217,12082,12083],{"class":234}," orderSearch ",[217,12085,489],{"class":282},[217,12087,3338],{"class":234},[217,12089,5154],{"class":230},[217,12091,340],{"class":234},[217,12093,12094,12096,12098],{"class":219,"line":349},[217,12095,5161],{"class":234},[217,12097,2824],{"class":364},[217,12099,251],{"class":234},[217,12101,12102],{"class":219,"line":354},[217,12103,5171],{"class":234},[217,12105,12106,12108,12111,12113,12115,12117,12119],{"class":219,"line":376},[217,12107,5176],{"class":234},[217,12109,12110],{"class":238},"'mainline'",[217,12112,293],{"class":234},[217,12114,5184],{"class":238},[217,12116,293],{"class":234},[217,12118,5209],{"class":238},[217,12120,5075],{"class":234},[217,12122,12123,12125],{"class":219,"line":390},[217,12124,5192],{"class":238},[217,12126,251],{"class":234},[217,12128,12129,12131,12134,12136,12139,12141,12144],{"class":219,"line":403},[217,12130,5176],{"class":234},[217,12132,12133],{"class":238},"'trandate'",[217,12135,293],{"class":234},[217,12137,12138],{"class":238},"'within'",[217,12140,293],{"class":234},[217,12142,12143],{"class":238},"'lastrolling6months'",[217,12145,5075],{"class":234},[217,12147,12148,12150],{"class":219,"line":414},[217,12149,5192],{"class":238},[217,12151,251],{"class":234},[217,12153,12154,12156,12158,12160,12163],{"class":219,"line":420},[217,12155,5176],{"class":234},[217,12157,1232],{"class":238},[217,12159,293],{"class":234},[217,12161,12162],{"class":238},"'anyof'",[217,12164,242],{"class":234},[217,12166,12167,12170,12173],{"class":219,"line":425},[217,12168,12169],{"class":238},"                    'SalesOrd:F'",[217,12171,12172],{"class":234},",  ",[217,12174,12175],{"class":223},"\u002F\u002F Billed\n",[217,12177,12178,12181],{"class":219,"line":442},[217,12179,12180],{"class":238},"                    'SalesOrd:G'",[217,12182,12183],{"class":223},"   \u002F\u002F Closed\n",[217,12185,12186],{"class":219,"line":453},[217,12187,12188],{"class":234},"                ]]\n",[217,12190,12191],{"class":219,"line":475},[217,12192,5216],{"class":234},[217,12194,12195],{"class":219,"line":480},[217,12196,5221],{"class":234},[217,12198,12199,12202,12205],{"class":219,"line":495},[217,12200,12201],{"class":234},"                search.",[217,12203,12204],{"class":230},"createColumn",[217,12206,340],{"class":234},[217,12208,12209,12212,12214],{"class":219,"line":506},[217,12210,12211],{"class":234},"                    name: ",[217,12213,2865],{"class":238},[217,12215,251],{"class":234},[217,12217,12218,12221],{"class":219,"line":516},[217,12219,12220],{"class":234},"                    summary: search.Summary.",[217,12222,12223],{"class":364},"GROUP\n",[217,12225,12226],{"class":219,"line":526},[217,12227,6658],{"class":234},[217,12229,12230,12232,12234],{"class":219,"line":536},[217,12231,12201],{"class":234},[217,12233,12204],{"class":230},[217,12235,340],{"class":234},[217,12237,12238,12240,12242],{"class":219,"line":545},[217,12239,12211],{"class":234},[217,12241,2953],{"class":238},[217,12243,251],{"class":234},[217,12245,12246,12248],{"class":219,"line":551},[217,12247,12220],{"class":234},[217,12249,12223],{"class":364},[217,12251,12252],{"class":219,"line":557},[217,12253,6658],{"class":234},[217,12255,12256,12258,12260],{"class":219,"line":562},[217,12257,12201],{"class":234},[217,12259,12204],{"class":230},[217,12261,340],{"class":234},[217,12263,12264,12266,12268],{"class":219,"line":579},[217,12265,12211],{"class":234},[217,12267,12133],{"class":238},[217,12269,251],{"class":234},[217,12271,12272,12274,12277],{"class":219,"line":591},[217,12273,12220],{"class":234},[217,12275,12276],{"class":364},"MAX",[217,12278,251],{"class":234},[217,12280,12281,12284],{"class":219,"line":607},[217,12282,12283],{"class":234},"                    label: ",[217,12285,12286],{"class":238},"'lastOrder'\n",[217,12288,12289],{"class":219,"line":612},[217,12290,6658],{"class":234},[217,12292,12293,12295,12297],{"class":219,"line":623},[217,12294,12201],{"class":234},[217,12296,12204],{"class":230},[217,12298,340],{"class":234},[217,12300,12301,12303,12305],{"class":219,"line":649},[217,12302,12211],{"class":234},[217,12304,12133],{"class":238},[217,12306,251],{"class":234},[217,12308,12309,12311,12314],{"class":219,"line":671},[217,12310,12220],{"class":234},[217,12312,12313],{"class":364},"COUNT",[217,12315,251],{"class":234},[217,12317,12318,12320],{"class":219,"line":693},[217,12319,12283],{"class":234},[217,12321,12322],{"class":238},"'orderCount'\n",[217,12324,12325],{"class":219,"line":715},[217,12326,6658],{"class":234},[217,12328,12329,12331,12333],{"class":219,"line":738},[217,12330,12201],{"class":234},[217,12332,12204],{"class":230},[217,12334,340],{"class":234},[217,12336,12337,12339,12341],{"class":219,"line":743},[217,12338,12211],{"class":234},[217,12340,3088],{"class":238},[217,12342,251],{"class":234},[217,12344,12345,12347,12350],{"class":219,"line":748},[217,12346,12220],{"class":234},[217,12348,12349],{"class":364},"AVG",[217,12351,251],{"class":234},[217,12353,12354,12356],{"class":219,"line":754},[217,12355,12283],{"class":234},[217,12357,12358],{"class":238},"'avgQty'\n",[217,12360,12361],{"class":219,"line":767},[217,12362,2285],{"class":234},[217,12364,12365],{"class":219,"line":772},[217,12366,5266],{"class":234},[217,12368,12369],{"class":219,"line":785},[217,12370,2836],{"class":234},[217,12372,12373],{"class":219,"line":798},[217,12374,325],{"emptyLinePlaceholder":324},[217,12376,12377,12380,12382,12384,12386,12388,12390,12392,12394],{"class":219,"line":804},[217,12378,12379],{"class":234},"        orderSearch.",[217,12381,5293],{"class":230},[217,12383,1011],{"class":234},[217,12385,1149],{"class":230},[217,12387,235],{"class":234},[217,12389,283],{"class":282},[217,12391,286],{"class":234},[217,12393,5306],{"class":289},[217,12395,309],{"class":234},[217,12397,12398,12400,12402,12404,12407,12409],{"class":219,"line":816},[217,12399,594],{"class":282},[217,12401,5123],{"class":234},[217,12403,489],{"class":282},[217,12405,12406],{"class":234}," result.",[217,12408,2860],{"class":230},[217,12410,340],{"class":234},[217,12412,12413,12416,12418],{"class":219,"line":829},[217,12414,12415],{"class":234},"                name: ",[217,12417,2865],{"class":238},[217,12419,251],{"class":234},[217,12421,12422,12425],{"class":219,"line":834},[217,12423,12424],{"class":234},"                summary: search.Summary.",[217,12426,12223],{"class":364},[217,12428,12429],{"class":219,"line":846},[217,12430,1078],{"class":234},[217,12432,12433,12435,12437,12439,12441,12443],{"class":219,"line":859},[217,12434,594],{"class":282},[217,12436,3022],{"class":234},[217,12438,489],{"class":282},[217,12440,12406],{"class":234},[217,12442,2860],{"class":230},[217,12444,340],{"class":234},[217,12446,12447,12449,12451],{"class":219,"line":864},[217,12448,12415],{"class":234},[217,12450,2953],{"class":238},[217,12452,251],{"class":234},[217,12454,12455,12457],{"class":219,"line":869},[217,12456,12424],{"class":234},[217,12458,12223],{"class":364},[217,12460,12461],{"class":219,"line":875},[217,12462,1078],{"class":234},[217,12464,12465,12467,12470,12472,12474,12477,12479],{"class":219,"line":888},[217,12466,594],{"class":282},[217,12468,12469],{"class":234}," orderCount ",[217,12471,489],{"class":282},[217,12473,9281],{"class":230},[217,12475,12476],{"class":234},"(result.",[217,12478,2860],{"class":230},[217,12480,340],{"class":234},[217,12482,12483,12485,12487],{"class":219,"line":894},[217,12484,12415],{"class":234},[217,12486,12133],{"class":238},[217,12488,251],{"class":234},[217,12490,12491,12493],{"class":219,"line":903},[217,12492,12424],{"class":234},[217,12494,12495],{"class":364},"COUNT\n",[217,12497,12498,12501,12504],{"class":219,"line":919},[217,12499,12500],{"class":234},"            }), ",[217,12502,12503],{"class":364},"10",[217,12505,472],{"class":234},[217,12507,12508],{"class":219,"line":925},[217,12509,325],{"emptyLinePlaceholder":324},[217,12511,12512],{"class":219,"line":934},[217,12513,12514],{"class":223},"            \u002F\u002F Only suggest items ordered 3+ times in 6 months\n",[217,12516,12517,12519,12522,12524,12527],{"class":219,"line":946},[217,12518,775],{"class":282},[217,12520,12521],{"class":234}," (orderCount ",[217,12523,3436],{"class":282},[217,12525,12526],{"class":364}," 3",[217,12528,309],{"class":234},[217,12530,12531],{"class":219,"line":966},[217,12532,12533],{"class":223},"                \u002F\u002F Store suggestion for the customer portal\n",[217,12535,12536,12539],{"class":219,"line":999},[217,12537,12538],{"class":230},"                createReorderSuggestion",[217,12540,943],{"class":234},[217,12542,12543],{"class":219,"line":1019},[217,12544,12545],{"class":234},"                    customerId,\n",[217,12547,12548],{"class":219,"line":1029},[217,12549,12550],{"class":234},"                    itemId,\n",[217,12552,12553],{"class":219,"line":1046},[217,12554,12555],{"class":234},"                    result\n",[217,12557,12558],{"class":219,"line":1052},[217,12559,2497],{"class":234},[217,12561,12562],{"class":219,"line":1058},[217,12563,801],{"class":234},[217,12565,12566],{"class":219,"line":1064},[217,12567,325],{"emptyLinePlaceholder":324},[217,12569,12570,12572,12574],{"class":219,"line":1075},[217,12571,1699],{"class":282},[217,12573,1511],{"class":364},[217,12575,318],{"class":234},[217,12577,12578],{"class":219,"line":1081},[217,12579,2836],{"class":234},[217,12581,12582],{"class":219,"line":1086},[217,12583,3297],{"class":234},[217,12585,12586],{"class":219,"line":1091},[217,12587,325],{"emptyLinePlaceholder":324},[217,12589,12590,12592],{"class":219,"line":1107},[217,12591,331],{"class":282},[217,12593,12594],{"class":234}," { execute: execute };\n",[217,12596,12597],{"class":219,"line":1116},[217,12598,1720],{"class":234},[29,12600],{},[32,12602,112],{"id":12603},"implementation-prioritization-matrix",[15,12605,12606],{},"Not every store needs all 10 features on day one. Here's how to prioritize based on impact and effort:",[12608,12609,12610,12632],"table",{},[12611,12612,12613],"thead",{},[12614,12615,12616,12620,12623,12626,12629],"tr",{},[12617,12618,12619],"th",{},"Priority",[12617,12621,12622],{},"Feature",[12617,12624,12625],{},"Effort",[12617,12627,12628],{},"Impact",[12617,12630,12631],{},"Start Here If...",[12633,12634,12635,12653,12669,12685,12699,12715,12729,12744,12759,12774],"tbody",{},[12614,12636,12637,12641,12644,12647,12650],{},[12638,12639,12640],"td",{},"🥇 1",[12638,12642,12643],{},"One-Click Reordering",[12638,12645,12646],{},"Low–Med",[12638,12648,12649],{},"Very High",[12638,12651,12652],{},"Customers order the same items regularly",[12614,12654,12655,12657,12660,12663,12666],{},[12638,12656,12640],{},[12638,12658,12659],{},"Enhanced Order History",[12638,12661,12662],{},"Low",[12638,12664,12665],{},"High",[12638,12667,12668],{},"Customers have 10+ orders per month",[12614,12670,12671,12674,12677,12680,12682],{},[12638,12672,12673],{},"🥈 2",[12638,12675,12676],{},"Invoice & Payment History",[12638,12678,12679],{},"Medium",[12638,12681,12665],{},[12638,12683,12684],{},"Customers are on payment terms",[12614,12686,12687,12689,12692,12694,12696],{},[12638,12688,12673],{},[12638,12690,12691],{},"Bulk Order Entry",[12638,12693,12679],{},[12638,12695,12665],{},[12638,12697,12698],{},"Average order has 20+ line items",[12614,12700,12701,12704,12707,12710,12712],{},[12638,12702,12703],{},"🥉 3",[12638,12705,12706],{},"Quote Management",[12638,12708,12709],{},"Med–High",[12638,12711,12665],{},[12638,12713,12714],{},"You do significant custom pricing",[12614,12716,12717,12719,12722,12724,12726],{},[12638,12718,12703],{},[12638,12720,12721],{},"Customer Pricing Visibility",[12638,12723,12679],{},[12638,12725,12665],{},[12638,12727,12728],{},"Customers have negotiated pricing",[12614,12730,12731,12734,12737,12739,12741],{},[12638,12732,12733],{},"4",[12638,12735,12736],{},"Saved Carts \u002F Shopping Lists",[12638,12738,12646],{},[12638,12740,12709],{},[12638,12742,12743],{},"Customers maintain recurring orders",[12614,12745,12746,12749,12752,12754,12756],{},[12638,12747,12748],{},"5",[12638,12750,12751],{},"Account Hierarchy",[12638,12753,12665],{},[12638,12755,12665],{},[12638,12757,12758],{},"Multiple buyers per account",[12614,12760,12761,12764,12767,12769,12771],{},[12638,12762,12763],{},"6",[12638,12765,12766],{},"Custom Dashboard",[12638,12768,12679],{},[12638,12770,12679],{},[12638,12772,12773],{},"You're implementing 3+ other features",[12614,12775,12776,12779,12782,12784,12786],{},[12638,12777,12778],{},"7",[12638,12780,12781],{},"Returns \u002F RMA",[12638,12783,12709],{},[12638,12785,12679],{},[12638,12787,12788],{},"High return volume",[15,12790,12791,12794],{},[18,12792,12793],{},"Our recommendation:"," Start with Features 1 and 2 (Order History + Reordering). They have the highest impact-to-effort ratio and immediately demonstrate the value of MyAccount to your B2B buyers. Once those are adopted, layer in invoices and bulk ordering.",[15,12796,12797,12798,12801],{},"Total implementation time for all 10 features: ",[18,12799,12800],{},"20–35 weeks"," with an experienced SuiteCommerce developer. Most stores implement in phases over 3–6 months.",[29,12803],{},[32,12805,118],{"id":12806},"faq",[192,12808,12810],{"id":12809},"can-i-implement-these-features-with-suitecommerce-standard-or-do-i-need-advanced","Can I implement these features with SuiteCommerce Standard, or do I need Advanced?",[15,12812,12813],{},"Most of these features require SuiteCommerce Advanced (SCA). SuiteCommerce Standard limits your ability to customize MyAccount views, add new modules, and create custom service endpoints. Features 1 (Order History filtering) and 6 (Invoice visibility) have partial support in Standard through configuration, but the full implementations described here need SCA's extension framework.",[192,12815,12817],{"id":12816},"how-do-i-handle-customers-who-have-both-b2c-and-b2b-accounts","How do I handle customers who have both B2C and B2B accounts?",[15,12819,12820],{},"Use NetSuite's customer category or a custom field to flag B2B accounts. Then conditionally load the B2B MyAccount features based on that flag. Your SuiteCommerce entry point can check the customer's category and load different modules accordingly:",[207,12822,12824],{"className":209,"code":12823,"language":211,"meta":212,"style":212},"if (SC.ENVIRONMENT.customer_category === 'B2B') {\n    application.registerModule(B2BMyAccountModules);\n} else {\n    application.registerModule(DefaultMyAccountModules);\n}\n",[214,12825,12826,12849,12860,12869,12878],{"__ignoreMap":212},[217,12827,12828,12831,12833,12835,12837,12839,12842,12844,12847],{"class":219,"line":220},[217,12829,12830],{"class":282},"if",[217,12832,286],{"class":234},[217,12834,6630],{"class":364},[217,12836,367],{"class":234},[217,12838,6025],{"class":364},[217,12840,12841],{"class":234},".customer_category ",[217,12843,5864],{"class":282},[217,12845,12846],{"class":238}," 'B2B'",[217,12848,309],{"class":234},[217,12850,12851,12854,12857],{"class":219,"line":227},[217,12852,12853],{"class":234},"    application.",[217,12855,12856],{"class":230},"registerModule",[217,12858,12859],{"class":234},"(B2BMyAccountModules);\n",[217,12861,12862,12865,12867],{"class":219,"line":245},[217,12863,12864],{"class":234},"} ",[217,12866,3219],{"class":282},[217,12868,492],{"class":234},[217,12870,12871,12873,12875],{"class":219,"line":254},[217,12872,12853],{"class":234},[217,12874,12856],{"class":230},[217,12876,12877],{"class":234},"(DefaultMyAccountModules);\n",[217,12879,12880],{"class":219,"line":262},[217,12881,12882],{"class":234},"}\n",[192,12884,12886],{"id":12885},"whats-the-impact-on-site-performance-of-adding-these-features","What's the impact on site performance of adding these features?",[15,12888,12889],{},"Each additional module adds JavaScript payload. However, since MyAccount modules only load when the customer is logged in and navigates to that section, the impact on public-facing page speed is zero. Within MyAccount, expect a 50–100KB increase per major feature. Use lazy loading for modules the customer hasn't accessed yet.",[192,12891,12893],{"id":12892},"do-these-customizations-survive-suitecommerce-version-upgrades","Do these customizations survive SuiteCommerce version upgrades?",[15,12895,12896,12897,12900,12901,367],{},"If built as proper SuiteCommerce extensions (not core file modifications), they survive upgrades intact. Extensions sit in a separate layer from the core application. The key is to never modify files in the ",[214,12898,12899],{},"Modules\u002F"," directory directly—always use extension overrides, child views, and custom modules. We cover upgrade methodology in detail in our ",[43,12902,12904],{"href":12903},"\u002Fblog\u002Fsuitecommerce-migration-checklist-upgrading-without-downtime","migration checklist guide",[192,12906,12908],{"id":12907},"how-do-i-measure-myaccount-adoption-after-implementing-these-features","How do I measure MyAccount adoption after implementing these features?",[15,12910,12911],{},"Track these metrics:",[128,12913,12914,12920,12926,12932,12938],{},[40,12915,12916,12919],{},[18,12917,12918],{},"Login frequency"," — How often B2B customers log in per week",[40,12921,12922,12925],{},[18,12923,12924],{},"Self-service order rate"," — Percentage of orders placed through the portal vs. phone\u002Femail",[40,12927,12928,12931],{},[18,12929,12930],{},"Feature usage"," — Which MyAccount features are actually used (reorder, bulk upload, etc.)",[40,12933,12934,12937],{},[18,12935,12936],{},"Support ticket volume"," — Decrease in \"where's my order\" and \"send me an invoice\" tickets",[40,12939,12940,12943],{},[18,12941,12942],{},"Time to order"," — Average time from login to order completion",[15,12945,12946],{},"A successful B2B MyAccount implementation should shift 40–60% of order volume to self-service within the first two quarters.",[29,12948],{},[32,12950,12952],{"id":12951},"whats-next","What's Next?",[15,12954,12955],{},"Your SuiteCommerce MyAccount portal is either a tool your B2B customers use daily or a feature they ignore. The difference is whether it supports their actual workflow—not just individual shopping, but organizational purchasing with all its complexity.",[15,12957,12958],{},"Start with the features that match your customers' biggest pain points. If they're constantly calling for order status, fix order history first. If they're emailing spreadsheets, build bulk upload. Meet them where they are, then expand.",[15,12960,12961,12964,12965,12969],{},[18,12962,12963],{},"Ready to build a B2B MyAccount that your customers will actually use?"," ",[43,12966,12968],{"href":12967},"\u002Fsuitecommerce-services\u002Fsuitecommerce-implementation","Talk to Stenbase"," about a phased implementation plan. We'll audit your current MyAccount, identify the highest-impact features for your specific customer base, and build it right—extensible, upgrade-safe, and designed for adoption.",[12971,12972,12973],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .snhLl, html code.shiki .snhLl{--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}",{"title":212,"searchDepth":227,"depth":227,"links":12975},[12976,12977,12978,12983,12988,12992,12997,13001,13005,13009,13013,13017,13021,13022,13029],{"id":34,"depth":227,"text":35},{"id":123,"depth":227,"text":46},{"id":176,"depth":227,"text":52,"children":12979},[12980,12981,12982],{"id":194,"depth":245,"text":195},{"id":201,"depth":245,"text":202},{"id":2035,"depth":245,"text":2036},{"id":2044,"depth":227,"text":58,"children":12984},[12985,12986,12987],{"id":2057,"depth":245,"text":195},{"id":2063,"depth":245,"text":202},{"id":3484,"depth":245,"text":2036},{"id":3492,"depth":227,"text":64,"children":12989},[12990,12991],{"id":3505,"depth":245,"text":195},{"id":3511,"depth":245,"text":202},{"id":4929,"depth":227,"text":70,"children":12993},[12994,12995,12996],{"id":4949,"depth":245,"text":195},{"id":4955,"depth":245,"text":202},{"id":6324,"depth":245,"text":2036},{"id":6332,"depth":227,"text":76,"children":12998},[12999,13000],{"id":6345,"depth":245,"text":195},{"id":6351,"depth":245,"text":202},{"id":6985,"depth":227,"text":82,"children":13002},[13003,13004],{"id":6996,"depth":245,"text":195},{"id":7002,"depth":245,"text":202},{"id":7754,"depth":227,"text":88,"children":13006},[13007,13008],{"id":7766,"depth":245,"text":195},{"id":7772,"depth":245,"text":202},{"id":8666,"depth":227,"text":94,"children":13010},[13011,13012],{"id":8678,"depth":245,"text":195},{"id":8684,"depth":245,"text":202},{"id":10382,"depth":227,"text":100,"children":13014},[13015,13016],{"id":10395,"depth":245,"text":195},{"id":10401,"depth":245,"text":202},{"id":11458,"depth":227,"text":106,"children":13018},[13019,13020],{"id":11475,"depth":245,"text":195},{"id":11481,"depth":245,"text":202},{"id":12603,"depth":227,"text":112},{"id":12806,"depth":227,"text":118,"children":13023},[13024,13025,13026,13027,13028],{"id":12809,"depth":245,"text":12810},{"id":12816,"depth":245,"text":12817},{"id":12885,"depth":245,"text":12886},{"id":12892,"depth":245,"text":12893},{"id":12907,"depth":245,"text":12908},{"id":12951,"depth":227,"text":12952},[13031,13032],"SuiteCommerce","Development","2026-02-05","A practical guide to customizing SuiteCommerce's MyAccount portal for B2B buyers. Covers order history, reordering, quote management, account hierarchies, custom pricing, invoice management, and more—with implementation details and code examples.","md","\u002Fimages\u002Fblog\u002Fsuitecommerce-myaccount-hero.webp",{"keywords":13038},[13039,13040,13041,13042,13043],"SuiteCommerce MyAccount","SuiteCommerce B2B portal","SuiteCommerce MyAccount customization","SuiteCommerce B2B features","NetSuite customer portal","\u002Fblog\u002Fsuitecommerce-myaccount-customization-b2b-features",null,{"title":5,"description":13034},"blog\u002Fsuitecommerce-myaccount-customization-b2b-features",[13031,13049,13050,13051,13052],"MyAccount","B2B","Customization","Portal","zh92R5IJ0-uIeiZfPL0DSQbyfUq3unxsEirt0zRB8aQ",[13055,13066,13078,13090,13099,13109,13121,13130,13140,13149,13157,13160,13168,13178,13186,13197,13209,13218,13227,13236,13244],{"path":13056,"title":13057,"categories":13058,"tags":13059,"heroImage":13065},"\u002Fblog\u002Fbuilding-custom-suitecommerce-extensions-developer-guide","Building Custom SuiteCommerce Extensions: A Developer's Start-to-Finish Guide",[13031,13032],[13060,13061,13062,13063,13064],"SuiteCommerce Extensions","Custom Development","Backbone.js","SuiteScript","Frontend Development","\u002Fimages\u002Fblog\u002Fextensions-guide-hero.webp",{"path":13067,"title":13068,"categories":13069,"tags":13071,"heroImage":13077},"\u002Fblog\u002Fcore-web-vitals-suitecommerce-optimization-checklist","Core Web Vitals for SuiteCommerce: The Complete 2026 Optimization Checklist",[13070,13031],"Performance",[13072,13073,13074,13075,13076,13031],"Core Web Vitals","LCP","INP","CLS","Performance Optimization","\u002Fimages\u002Fblog\u002Fcore-web-vitals-hero.webp",{"path":13079,"title":13080,"categories":13081,"tags":13083,"heroImage":13089},"\u002Fblog\u002Ffixing-duplicate-content-suitecommerce-faceted-navigation","Fixing Duplicate Content in SuiteCommerce Faceted Navigation",[13082,13031],"SEO",[13084,13085,13086,13087,13031,13088],"Duplicate Content","Faceted Navigation","Canonical Tags","Technical SEO","URL Parameters","\u002Fimages\u002Fblog\u002Fduplicate-content-seo-hero.webp",{"path":13091,"title":13092,"categories":13093,"tags":13094,"heroImage":13098},"\u002Fblog\u002Fheadless-suitecommerce-when-does-it-make-sense","Headless SuiteCommerce: When Does It Make Sense?",[13031,13032],[13031,13095,13096,13097,13070],"Headless Commerce","Architecture","Implementation","\u002Fimages\u002Fblog\u002Fheadless-suitecommerce-hero.webp",{"path":13100,"title":13101,"categories":13102,"tags":13104,"heroImage":13108},"\u002Fblog\u002Fnetsuite-ecommerce-integration-architecture-how-suitecommerce-works","NetSuite E-commerce Integration Architecture: How SuiteCommerce Actually Works",[13031,13032,13103],"Integration",[13096,13103,13063,13105,13106,13107],"API","Backend","Frontend","\u002Fimages\u002Fblog\u002Fnetsuite-ecommerce-integration-hero.webp",{"path":13110,"title":13111,"categories":13112,"tags":13114,"heroImage":13120},"\u002Fblog\u002Fnetsuite-integration-without-celigo-when-custom-beats-off-the-shelf","NetSuite Integration Without Celigo: When Custom Beats Off-the-Shelf",[13113,13103],"NetSuite",[13115,13116,13117,13118,13063,13119],"NetSuite Integration","Celigo","Custom Integration","RESTlet","API Development","\u002Fimages\u002Fblog\u002Fnetsuite-integration-hero.webp",{"path":13122,"title":13123,"categories":13124,"tags":13125,"heroImage":13129},"\u002Fblog\u002Fsuitecommerce-checkout-optimization-fixing-abandonment","SuiteCommerce Checkout Optimization: Fixing Abandonment at the Technical Level",[13031,13070],[13031,13126,13127,13128,13070],"Checkout Optimization","Cart Abandonment","Conversions","\u002Fimages\u002Fblog\u002Fsuitecommerce-checkout-hero.webp",{"path":13131,"title":13132,"categories":13133,"tags":13134,"heroImage":13139},"\u002Fblog\u002Fsuitecommerce-image-optimization-developer-guide","SuiteCommerce Image Optimization: A Developer's Guide",[13070,13031],[13135,13136,13137,13138,13070,13031],"Image Optimization","WebP","Lazy Loading","CDN","\u002Fimages\u002Fblog\u002Fimage-optimization-hero.webp",{"path":13141,"title":13142,"categories":13143,"tags":13144,"heroImage":13148},"\u002Fblog\u002Fsuitecommerce-implementation-cost-guide-2026","SuiteCommerce Implementation Cost Guide: What to Expect in 2026",[13031,13097],[13145,13097,13113,13146,13147],"SuiteCommerce Cost","Budget Planning","E-commerce","\u002Fimages\u002Fblog\u002Fimplementation-cost-hero.webp",{"path":12903,"title":13150,"categories":13151,"tags":13152,"heroImage":13156},"The SuiteCommerce Migration Checklist: Upgrading Without Downtime",[13031,13032],[13031,13153,13154,13155,13097],"Migration","Upgrade","Zero Downtime","\u002Fimages\u002Fblog\u002Fmigration-checklist-hero.webp",{"path":13044,"title":5,"categories":13158,"tags":13159,"heroImage":13036},[13031,13032],[13031,13049,13050,13051,13052],{"path":13161,"title":13162,"categories":13163,"tags":13165,"heroImage":13167},"\u002Fblog\u002Fsuitecommerce-performance-audit-286-stores","We Audited 286 Live SuiteCommerce Stores. Here's What We Found",[13070,13164,13031],"Research",[13070,13031,13072,13164,13166],"Benchmarks","\u002Fimages\u002Fblog\u002Fsuitecommerce-audit-hero.webp",{"path":13169,"title":13170,"categories":13171,"tags":13172,"heroImage":13177},"\u002Fblog\u002Fsuitecommerce-product-page-optimization-conversions-seo","How to Optimize SuiteCommerce Product Pages for Conversions and SEO",[13082,13070,13031],[13173,13174,13175,13087,13176],"Product Pages","Conversion Optimization","Schema Markup","CRO","\u002Fimages\u002Fblog\u002Fsuitecommerce-product-page-hero.webp",{"path":13179,"title":13180,"categories":13181,"tags":13182,"heroImage":13185},"\u002Fblog\u002Fsuitecommerce-seo-schema-markup-technical-guide","SuiteCommerce SEO: Schema Markup, Technical SEO, and What Actually Works",[13082,13031],[13175,13087,13183,13184,13031,13113],"JSON-LD","Structured Data","\u002Fimages\u002Fblog\u002Fseo-schema-markup-hero.webp",{"path":13187,"title":13188,"categories":13189,"tags":13191,"heroImage":13196},"\u002Fblog\u002Fsuitecommerce-theme-development-design-to-deployment","SuiteCommerce Theme Development: From Design to Deployment",[13032,13031,13190],"Themes",[13192,13193,13194,13195,13064,13051],"Theme Development","SASS","CSS","Templates","\u002Fimages\u002Fblog\u002Fsuitecommerce-theme-hero.webp",{"path":13198,"title":13199,"categories":13200,"tags":13203,"heroImage":13208},"\u002Fblog\u002Fsuitecommerce-version-upgrade-guide-2024","SuiteCommerce Version Upgrade Guide: 2023.x to 2024.x",[13031,13201,13202],"Maintenance","Upgrades",[13204,13153,13205,13206,13207],"Version Upgrade","2024 Release","SCA","Deployment","\u002Fimages\u002Fblog\u002Fsuitecommerce-upgrade-hero.webp",{"path":13210,"title":13211,"categories":13212,"tags":13213,"heroImage":13217},"\u002Fblog\u002Fsuitecommerce-vs-bigcommerce-netsuite-users","SuiteCommerce vs. BigCommerce for NetSuite Users: Which Platform Wins?",[13031,13147],[13214,13031,13113,13215,13216,13103],"BigCommerce","Platform Comparison","E-commerce Platform","\u002Fimages\u002Fblog\u002Fsuitecommerce-vs-bigcommerce-hero.webp",{"path":13219,"title":13220,"categories":13221,"tags":13222,"heroImage":13226},"\u002Fblog\u002Fsuitescript-performance-optimization-writing-efficient-scripts","SuiteScript Performance Optimization: Writing Efficient Scripts",[13113,13063],[13063,13076,13223,13224,13225,13105],"Governance","Map\u002FReduce","NetSuite Development","\u002Fimages\u002Fblog\u002Fsuitescript-performance-hero.webp",{"path":13228,"title":13229,"categories":13230,"tags":13231,"heroImage":13235},"\u002Fblog\u002Ftroubleshooting-suitecommerce-15-common-errors-how-to-fix","Troubleshooting SuiteCommerce: 15 Common Errors and How to Fix Them",[13031,13032],[13031,13232,13233,13234,13032],"Troubleshooting","Errors","Debugging","\u002Fimages\u002Fblog\u002Ftroubleshooting-errors-hero.webp",{"path":13237,"title":13238,"categories":13239,"tags":13240,"heroImage":13243},"\u002Fblog\u002Ftrue-cost-suitecommerce-maintenance-annual-budget-guide","The True Cost of SuiteCommerce Maintenance: Annual Budget Planning Guide",[13031,13070],[13031,13201,13146,13241,13242],"TCO","E-commerce Operations","\u002Fimages\u002Fblog\u002Fsuitecommerce-maintenance-cost-hero.webp",{"path":13245,"title":13246,"categories":13247,"tags":13248,"heroImage":13250},"\u002Fblog\u002Fwhy-suitecommerce-site-slow-how-to-fix","Why Your SuiteCommerce Site is Slow (And How to Fix It)",[13070,13031],[13070,13031,13249,13232],"Speed Optimization","\u002Fimages\u002Fblog\u002Fslow-site-fix-hero.webp",1773773966034]