Quote Line Editor
The Quote Line Editor (formerly called the Position Editor) is the grid-based interface for managing line items in Project Quotes and BOQ calculations. This page covers how it works end to end — the aggregated data model underneath it, the components that make it up, and how pricing and sending work — so you can use it day to day, configure it for your org, and set it up across the record pages that need it.
A Project Quote (Project_Quote__c) is built from Quote Groups and Quote Lines that mirror the BOQ it came from line-for-line — but reps rarely want to review a quote at that level of granularity. Project Quote Position (Project_Quote_Position__c) is the aggregated view on top of that structure: one row per unique product across the entire quote, however many groups or lines that product appears in. This aggregated view is what the Quote Line Editor actually displays and edits.
How positions are built
When a Quote is generated from a BOQ (BOQQuotation_CreateQuoteFromBOQ_API — “Create Project Quote from BOQ”), Baucore:
- Mirrors each
BOQ_Line__cinto aProject_Quote_Group__c. - Mirrors each
BOQ_Calculation__cwithin that line into aProject_Quote_Line__c, carrying over all pricing fields. - Builds a product-quantity map across every line in the quote, and creates one
Project_Quote_Position__cper unique product. - If individual account pricing is enabled (
IdvAccPricingsetting), invokes the pricing engine to calculate final pricing on the new positions.
Viewing and editing positions
| Component | Where it appears | What it does |
|---|---|---|
projectQuotePositionTable | Project Quote record page | Dynamic table listing every Project_Quote_Position__c on the quote. Works in both Baucore Process and standard process modes; optional PDF button and email modal. |
bcEditQuotePositions | Modal, launched from the table | Inline-editable datatable — sort, edit, delete, and search for a replacement product, all without leaving the quote. |
projectQuotePosition | Quote Position record page | Full detail view of a single position. |
projectQuotePositionQuickAction | Quote record | Quick action to add a new position directly. |
Pricing methods
Positions use the same three pricing methods as BOQ Calculations and Quote Lines (Pricing_Method__c):
| Method | Inputs | Calculation |
|---|---|---|
| Net Unit Price | Net_Unit_Price__c (manual) | Used as-is; Discount and Markup forced to 0 |
| List | List_Unit_Price__c, Discount__c | Net Unit Price = List Price × (1 − Discount / 100); Markup forced to 0; List Price auto-populates from the Pricebook Entry |
| Cost | Unit_Cost__c, Markup__c | Net Unit Price = Unit Cost × (1 + Markup / 100); Discount forced to 0; Unit Cost auto-populates from the Pricebook Entry |
Sending the quote
projectQuoteDocument generates the customer-facing PDF (ProjectQuote_Controller.generatePdf()), and projectQuoteEmailComposer handles composing and sending it. Need a copy to start a revised quote from scratch? copyProjectQuote clones the Project Quote along with all of its lines.
Related
- Use Quote Line Editor
- Configure Quote Line Editor
- Import Data with Quote Line Editor
- Manage Project Quote
- Document Generation for BOQ and Quote