[{"data":1,"prerenderedAt":655},["ShallowReactive",2],{"/docs/jobs/mechanicjob/reference/exports/server-advanced-pricing-exports":3,"/docs/jobs/mechanicjob/reference/exports/server-advanced-pricing-exports-surround":643,"/docs/jobs/mechanicjob/reference/exports/server-advanced-pricing-exports-implemented-suggestions":654},{"id":4,"title":5,"body":6,"description":634,"extension":635,"head":636,"implementedSuggestions":636,"meta":637,"navigation":352,"path":638,"schemaOrg":636,"seo":639,"sitemap":640,"stem":641,"__hash__":642},"docs/1.docs/0.jobs/2.mechanicjob/4.reference/3.exports/3.server-advanced-pricing-exports.md","Server: Advanced Pricing exports",{"type":7,"value":8,"toc":629},"minimark",[9,17,20,25,28,80,91,96,194,201,204,414,420,424,557,560,564,622,625],[10,11,12],"p",{},[13,14,16],"a",{"href":15},"/docs/jobs/mechanicjob/reference/exports","All exports",[10,18,19],{},"This page documents supported public integration calls and usage examples. It does not expose or reproduce the resource's internal implementation.",[21,22,24],"h2",{"id":23},"server-exports","Server Exports",[10,26,27],{},"All Advanced Pricing and Billing exports return a result table:",[29,30,35],"pre",{"className":31,"code":32,"language":33,"meta":34,"style":34},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    success = true,\n    data = {}\n}\n","lua","",[36,37,38,47,63,74],"code",{"__ignoreMap":34},[39,40,43],"span",{"class":41,"line":42},"line",1,[39,44,46],{"class":45},"sTEyZ","{\n",[39,48,50,53,57,60],{"class":41,"line":49},2,[39,51,52],{"class":45},"    success ",[39,54,56],{"class":55},"sMK4o","=",[39,58,59],{"class":55}," true",[39,61,62],{"class":45},",\n",[39,64,66,69,71],{"class":41,"line":65},3,[39,67,68],{"class":45},"    data ",[39,70,56],{"class":55},[39,72,73],{"class":45}," {}\n",[39,75,77],{"class":41,"line":76},4,[39,78,79],{"class":45},"}\n",[10,81,82,83,86,87,90],{},"Rejected requests return ",[36,84,85],{},"success = false"," and a stable ",[36,88,89],{},"error"," code. Player identity, mechanic job, grade, permissions, vehicle distance, configured limits, quote state, invoice ownership, and monetary values are always resolved or validated on the server.",[92,93,95],"h3",{"id":94},"advanced-pricing-exports","Advanced Pricing exports",[97,98,99,115],"table",{},[100,101,102],"thead",{},[103,104,105,109,112],"tr",{},[106,107,108],"th",{},"Export",[106,110,111],{},"Arguments",[106,113,114],{},"Purpose",[116,117,118,134,149,164,179],"tbody",{},[103,119,120,126,131],{},[121,122,123],"td",{},[36,124,125],{},"CreatePricingQuote",[121,127,128],{},[36,129,130],{},"source, payload",[121,132,133],{},"Calculates a fresh server-authoritative quote for a nearby vehicle and configured tuning options",[103,135,136,141,146],{},[121,137,138],{},[36,139,140],{},"GetPricingQuote",[121,142,143],{},[36,144,145],{},"source, orderId",[121,147,148],{},"Returns the saved quote data for an accessible workshop order",[103,150,151,156,161],{},[121,152,153],{},[36,154,155],{},"ValidatePricingQuote",[121,157,158],{},[36,159,160],{},"source, orderId, vehicleNetId",[121,162,163],{},"Validates order state, expiry, proximity, procurement state, and quoted vehicle model",[103,165,166,171,176],{},[121,167,168],{},[36,169,170],{},"GetSupplierCatalog",[121,172,173],{},[36,174,175],{},"source",[121,177,178],{},"Returns the authorized mechanic's current Dynasty catalog with server-calculated supplier prices",[103,180,181,186,191],{},[121,182,183],{},[36,184,185],{},"GetPricingAnalytics",[121,187,188],{},[36,189,190],{},"source, periodDays?",[121,192,193],{},"Returns workshop pricing analytics when the mechanic has billing-management permission",[195,196,198],"h4",{"id":197},"createpricingquotesource-payload",[36,199,200],{},"CreatePricingQuote(source, payload)",[10,202,203],{},"The caller supplies only the requested vehicle and tuning option identifiers. Client or integration values for vehicle price, supplier cost, labor, margin, tax, discount, grade, society, or final price are not accepted as authoritative.",[29,205,208],{"className":31,"code":206,"filename":207,"language":33,"meta":34,"style":34},"local result = exports[\"sky_mechanicjob\"]:CreatePricingQuote(source, {\n    vehicleNetId = NetworkGetNetworkIdFromEntity(vehicle),\n    vehicleClass = 7,\n    parts = {\n        { id = \"mod_11\", value = 2 },\n        { id = \"mod_23\", value = 4, wheelType = 7 }\n    }\n})\n\nif result.success then\n    print((\"Server quote: $%s\"):format(result.data.amount))\nend\n","server.lua",[36,209,210,241,254,267,277,304,335,341,347,354,371,408],{"__ignoreMap":34},[39,211,212,215,218,220,223,226,230,232,235,238],{"class":41,"line":42},[39,213,214],{"class":55},"local",[39,216,217],{"class":45}," result ",[39,219,56],{"class":55},[39,221,222],{"class":45}," exports[",[39,224,225],{"class":55},"\"",[39,227,229],{"class":228},"sfazB","sky_mechanicjob",[39,231,225],{"class":55},[39,233,234],{"class":45},"]:",[39,236,125],{"class":237},"s2Zo4",[39,239,240],{"class":45},"(source, {\n",[39,242,243,246,248,251],{"class":41,"line":49},[39,244,245],{"class":45},"    vehicleNetId ",[39,247,56],{"class":55},[39,249,250],{"class":237}," NetworkGetNetworkIdFromEntity",[39,252,253],{"class":45},"(vehicle),\n",[39,255,256,259,261,265],{"class":41,"line":65},[39,257,258],{"class":45},"    vehicleClass ",[39,260,56],{"class":55},[39,262,264],{"class":263},"sbssI"," 7",[39,266,62],{"class":45},[39,268,269,272,274],{"class":41,"line":76},[39,270,271],{"class":45},"    parts ",[39,273,56],{"class":55},[39,275,276],{"class":45}," {\n",[39,278,280,283,285,288,291,293,296,298,301],{"class":41,"line":279},5,[39,281,282],{"class":45},"        { id ",[39,284,56],{"class":55},[39,286,287],{"class":55}," \"",[39,289,290],{"class":228},"mod_11",[39,292,225],{"class":55},[39,294,295],{"class":45},", value ",[39,297,56],{"class":55},[39,299,300],{"class":263}," 2",[39,302,303],{"class":45}," },\n",[39,305,307,309,311,313,316,318,320,322,325,328,330,332],{"class":41,"line":306},6,[39,308,282],{"class":45},[39,310,56],{"class":55},[39,312,287],{"class":55},[39,314,315],{"class":228},"mod_23",[39,317,225],{"class":55},[39,319,295],{"class":45},[39,321,56],{"class":55},[39,323,324],{"class":263}," 4",[39,326,327],{"class":45},", wheelType ",[39,329,56],{"class":55},[39,331,264],{"class":263},[39,333,334],{"class":45}," }\n",[39,336,338],{"class":41,"line":337},7,[39,339,340],{"class":45},"    }\n",[39,342,344],{"class":41,"line":343},8,[39,345,346],{"class":45},"})\n",[39,348,350],{"class":41,"line":349},9,[39,351,353],{"emptyLinePlaceholder":352},true,"\n",[39,355,357,361,364,368],{"class":41,"line":356},10,[39,358,360],{"class":359},"s7zQu","if",[39,362,363],{"class":45}," result.",[39,365,367],{"class":366},"sBMFI","success",[39,369,370],{"class":359}," then\n",[39,372,374,377,380,382,385,387,390,393,396,399,402,405],{"class":41,"line":373},11,[39,375,376],{"class":237},"    print",[39,378,379],{"class":45},"((",[39,381,225],{"class":55},[39,383,384],{"class":228},"Server quote: $%s",[39,386,225],{"class":55},[39,388,389],{"class":45},"):",[39,391,392],{"class":237},"format",[39,394,395],{"class":45},"(result.",[39,397,398],{"class":366},"data",[39,400,401],{"class":45},".",[39,403,404],{"class":366},"amount",[39,406,407],{"class":45},"))\n",[39,409,411],{"class":41,"line":410},12,[39,412,413],{"class":359},"end\n",[10,415,416,419],{},[36,417,418],{},"vehicleClass"," is only used as a validated compatibility fallback when the current server artifact cannot resolve the class from the networked vehicle. The server still validates the entity and the player's distance.",[195,421,423],{"id":422},"reading-and-validating-an-order-quote","Reading and validating an order quote",[29,425,427],{"className":31,"code":426,"filename":207,"language":33,"meta":34,"style":34},"local quote = exports[\"sky_mechanicjob\"]:GetPricingQuote(source, order_id)\nif not quote.success then return end\n\nlocal validation = exports[\"sky_mechanicjob\"]:ValidatePricingQuote(\n    source,\n    order_id,\n    vehicle_net_id\n)\n\nif validation.success then\n    print(\"The quote is valid for this vehicle\")\nend\n",[36,428,429,453,474,478,502,507,512,517,522,526,537,553],{"__ignoreMap":34},[39,430,431,433,436,438,440,442,444,446,448,450],{"class":41,"line":42},[39,432,214],{"class":55},[39,434,435],{"class":45}," quote ",[39,437,56],{"class":55},[39,439,222],{"class":45},[39,441,225],{"class":55},[39,443,229],{"class":228},[39,445,225],{"class":55},[39,447,234],{"class":45},[39,449,140],{"class":237},[39,451,452],{"class":45},"(source, order_id)\n",[39,454,455,457,460,463,465,468,471],{"class":41,"line":49},[39,456,360],{"class":359},[39,458,459],{"class":55}," not",[39,461,462],{"class":45}," quote.",[39,464,367],{"class":366},[39,466,467],{"class":359}," then",[39,469,470],{"class":359}," return",[39,472,473],{"class":359}," end\n",[39,475,476],{"class":41,"line":65},[39,477,353],{"emptyLinePlaceholder":352},[39,479,480,482,485,487,489,491,493,495,497,499],{"class":41,"line":76},[39,481,214],{"class":55},[39,483,484],{"class":45}," validation ",[39,486,56],{"class":55},[39,488,222],{"class":45},[39,490,225],{"class":55},[39,492,229],{"class":228},[39,494,225],{"class":55},[39,496,234],{"class":45},[39,498,155],{"class":237},[39,500,501],{"class":45},"(\n",[39,503,504],{"class":41,"line":279},[39,505,506],{"class":45},"    source,\n",[39,508,509],{"class":41,"line":306},[39,510,511],{"class":45},"    order_id,\n",[39,513,514],{"class":41,"line":337},[39,515,516],{"class":45},"    vehicle_net_id\n",[39,518,519],{"class":41,"line":343},[39,520,521],{"class":45},")\n",[39,523,524],{"class":41,"line":349},[39,525,353],{"emptyLinePlaceholder":352},[39,527,528,530,533,535],{"class":41,"line":356},[39,529,360],{"class":359},[39,531,532],{"class":45}," validation.",[39,534,367],{"class":366},[39,536,370],{"class":359},[39,538,539,541,544,546,549,551],{"class":41,"line":373},[39,540,376],{"class":237},[39,542,543],{"class":45},"(",[39,545,225],{"class":55},[39,547,548],{"class":228},"The quote is valid for this vehicle",[39,550,225],{"class":55},[39,552,521],{"class":45},[39,554,555],{"class":41,"line":410},[39,556,413],{"class":359},[10,558,559],{},"Only a mechanic belonging to the order's workshop can read or validate its quote.",[195,561,563],{"id":562},"supplier-catalog-and-analytics","Supplier catalog and analytics",[29,565,567],{"className":31,"code":566,"filename":207,"language":33,"meta":34,"style":34},"local catalog = exports[\"sky_mechanicjob\"]:GetSupplierCatalog(source)\nlocal analytics = exports[\"sky_mechanicjob\"]:GetPricingAnalytics(source, 30)\n",[36,568,569,593],{"__ignoreMap":34},[39,570,571,573,576,578,580,582,584,586,588,590],{"class":41,"line":42},[39,572,214],{"class":55},[39,574,575],{"class":45}," catalog ",[39,577,56],{"class":55},[39,579,222],{"class":45},[39,581,225],{"class":55},[39,583,229],{"class":228},[39,585,225],{"class":55},[39,587,234],{"class":45},[39,589,170],{"class":237},[39,591,592],{"class":45},"(source)\n",[39,594,595,597,600,602,604,606,608,610,612,614,617,620],{"class":41,"line":49},[39,596,214],{"class":55},[39,598,599],{"class":45}," analytics ",[39,601,56],{"class":55},[39,603,222],{"class":45},[39,605,225],{"class":55},[39,607,229],{"class":228},[39,609,225],{"class":55},[39,611,234],{"class":45},[39,613,185],{"class":237},[39,615,616],{"class":45},"(source, ",[39,618,619],{"class":263},"30",[39,621,521],{"class":45},[10,623,624],{},"The supplier catalog requires Parts Delivery access. Pricing analytics additionally require the billing-management permission and never accept a job name from the caller.",[626,627,628],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":34,"searchDepth":42,"depth":49,"links":630},[631],{"id":23,"depth":49,"text":24,"children":632},[633],{"id":94,"depth":65,"text":95},"Reference for Server: Advanced Pricing exports in mechanicjob.","md",null,{},"/docs/jobs/mechanicjob/reference/exports/server-advanced-pricing-exports",{"title":5,"description":634},{"loc":638},"1.docs/0.jobs/2.mechanicjob/4.reference/3.exports/3.server-advanced-pricing-exports","1LuYdFJq_e5eo19xXX7Qcab4qIXoDR-wMrKiyzMNfMg",[644,649],{"title":645,"path":646,"stem":647,"description":648,"children":-1},"Related Shared Exports","/docs/jobs/mechanicjob/reference/exports/related-shared-exports","1.docs/0.jobs/2.mechanicjob/4.reference/3.exports/23.related-shared-exports","Reference for Related Shared Exports in mechanicjob.",{"title":650,"path":651,"stem":652,"description":653,"children":-1},"Server: Advanced Billing exports","/docs/jobs/mechanicjob/reference/exports/server-advanced-billing-exports","1.docs/0.jobs/2.mechanicjob/4.reference/3.exports/4.server-advanced-billing-exports","Reference for Server: Advanced Billing exports in mechanicjob.",[],1791814214031]