Custom Odoo development for trade show booth quotes with specific calculation logic
Project Description:
We need an experienced Odoo developer to replicate our trade show booth quoting system. Our current system is based on an Excel spreadsheet with a specific structure that we need to implement in Odoo.
A- Summary of Needs:
The quotes we create are for projects that we don't know will be approved. Therefore, quotes should not consider production hours or materials, but are based on prices obtained from our suppliers' price lists, who will ultimately carry out the construction work if the stand is built.
This implies that we need to be able to dynamically access supplier price lists for each item on the stand (carpentry, painting, electricity, lighting, furniture, etc.) and select the price list items to be included in the project.
Our quoting system is based on managing "items" or concepts that make up a trade show booth. For each item, we need to:
• Access our suppliers' price lists to obtain the cost of each concept.
• Apply a profit margin, which can be general for the entire quote or specific to each item.
• Calculate the final price to be presented to the customer.
In addition, we have specific logic for managing two types of suppliers:
• External suppliers: We use them for individual items when the project is carried out in our city.
• Main supplier: We use it for projects outside our city. This supplier gives us a global price that includes several items, but without breaking down the cost of each one.
Supplier Management and Price Calculation:
To manage projects with a main supplier, we need to estimate the cost of each item included in their global price, especially carpentry. To do this, we use the following logic in our spreadsheet:
• Column "K" (Included): Identifies which items are included in the main supplier's global price. Carpentry will always be "included."
• Column "L" (Estimated Breakdown): Adds up the cost of all "included" items except carpentry. We obtain these costs from our own price lists.
• Column "M" (Main Supplier): Calculates the cost of carpentry by subtracting the total cost of "included" items (column L) from the main supplier's global price.
Spreadsheet Structure and Logic:
Here's a breakdown of the key elements in our spreadsheet, with corresponding letters for easy reference:
• Sector "A" (Items): This sector contains a group of rows, each representing a specific item or concept within the stand project, such as "Carpentry," "Electricity," "Lighting," etc.
• Column "B" (Supplier Price): This column shows the total price we are quoted by the supplier for each item.
• Column "C" (Margin): This represents the profit margin we apply to each item. This margin can be adjusted individually.
• Column "D" (Final Price to Client): This is the final price presented to the client for each item, calculated by adding the margin to the supplier price.
• Cell "E" (Total Margin): This cell calculates the total profit margin for the entire project.
• Cell "F" (Total Price to Client): This cell shows the total price the client will pay for the project.
• Cell "G" (Total with VAT): This cell calculates the total project cost including VAT.
• Cell "H" (Client Budget): This cell is where we input the client's estimated budget for the project.
• Cell "I" (Supplier Offer): This cell shows the total price offered by the main supplier for the entire project (when applicable).
• Cell "J" (Target Margin): This cell defines the overall target profit margin for the project.
Functionalities to Develop:
1. Quote Control Panel:
o Create a custom view ("Control Panel") within the "Sales Order" form in Odoo.
o Replicate the structure of our spreadsheet, where the items are organized in rows and the relevant information is presented in columns (see attached image).
o Implement the calculation logic described above for supplier management and price calculation.
2. Integration with Odoo:
o Integrate the "Control Panel" with the Odoo structure, allowing:
Generate a final quote for the customer with each item discriminated.
Convert the quote into a sales order and subsequently into an invoice.
3. Introductory Text to the Quote:
o Add an introductory text to the quote indicating the trade show, the city, and the dates on which the stand will be held.
o Use custom fields that are automatically concatenated into a sentence, as in the following example: "Quote for the construction of a stand at the [Trade show name] fair, to be held in [City] from [Start date] to [End date]."
Requirements:
• Proven experience in developing custom Odoo modules.
• Deep knowledge of creating custom views and manipulating data in Odoo.
• Ability to understand and implement complex calculation logic.
• Skill in interpreting the structure of a spreadsheet and replicating it in Odoo.
• Good communication and teamwork skills.
- Python: Odoo is developed in Python, so the freelancer must have a solid knowledge of this programming language.
- Odoo Framework: The freelancer must be familiar with the Odoo framework, including the creation of data models, views, controllers, etc.
- XML: Odoo uses XML to define user interfaces, so the freelancer must have knowledge of this markup language.
- JavaScript: If your project requires some dynamic interaction in the user interface, the freelancer should also have knowledge of JavaScript.
PostgreSQL: Odoo uses PostgreSQL as a database, so it is recommended that the freelancer has basic knowledge of this database management system.
Additional Information:
• We use Odoo online (version [specify version]).
• We attach an image of our current spreadsheet with a detailed description of each row and column.
• It is essential that the solution adapts to our current calculation logic and our way of working with suppliers.
Deliverables:
• Source code of the developed module.
• Technical documentation of the development.
• Basic training on the use of the functionality.
Budget and Deadlines:
• We request interested parties to send us a detailed budget and a work schedule.
B- Custom Quotation Model for Signage in Odoo
Objective:
To create a tailored section within the quotation system in Odoo specifically for managing signage items in tradeshow stand projects. This will allow us to input the dimensions of each signage piece, calculate its area, apply a supplier-based price per m², and add a waste percentage to determine the final cost.
________________________________________
Specific Requirements for the Signage Section
1. Fields and Calculations for Each Signage Item:
o Product Code: A dropdown selection to choose a signage product from a pre-configured list of products tied to specific suppliers. Each product code should link to a price per m², pulled directly from the supplier’s price list.
o Width (cm) and Height (cm): Numeric fields to input the dimensions of the signage piece in centimeters.
o Area (m²): A calculated field that multiplies the width and height and converts to square meters. Formula: Area (m²)=Width (cm)×Height (cm)10000\text{Area (m²)} = \frac{\text{Width (cm)} \times \text{Height (cm)}}{10000}Area (m²)=10000Width (cm)×Height (cm)
o Price per m²: Automatically fetched from the selected supplier’s price list based on the product code. This is the base price used for cost calculations.
o Waste (%): A field to input a waste percentage (for example, 10%) to account for material waste during production.
o Total Area with Waste (m²): A calculated field that multiplies the original area by 1+Waste %1001 + \frac{\text{Waste \%}}{100}1+100Waste %, representing the total area needed including waste. Formula: Total Area with Waste=Area×(1+Waste %100)\text{Total Area with Waste} = \text{Area} \times \left(1 + \frac{\text{Waste \%}}{100}\right)Total Area with Waste=Area×(1+100Waste %)
o Total Price of the Piece: This field calculates the total cost based on the total area with waste and the price per m². Formula: Total Price=Total Area with Waste×Price per m²\text{Total Price} = \text{Total Area with Waste} \times \text{Price per m²}Total Price=Total Area with Waste×Price per m²
2. Integration with Supplier Price Lists:
o Each signage product code should correspond to a specific supplier’s price list entry. When a product code is selected, the system should pull the relevant price per m² from the supplier’s list, ensuring pricing is always up-to-date.
3. Signage Tab within Quotation:
o The signage section should be a separate tab within the quotation form, where multiple signage items can be added.
o Each item in this tab should include all the fields listed above (Product Code, Width, Height, Area, Waste %, Total Area with Waste, and Total Price).
o The subtotal for all signage items should be calculated and displayed at the bottom of this tab.
4. Margin Adjustments (Optional for Signage Section):
o If needed, add an option to apply a margin to the signage subtotal, allowing for markup adjustments specific to this part of the quotation.
________________________________________
Summary of Tasks for Developer:
1. Create a custom signage model with fields for dimensions, waste, area, price, and total cost.
2. Integrate supplier price lists to fetch the price per m² automatically based on the product code.
3. Implement calculations for area, waste, and total cost with waste included.
4. Set up a signage tab in the quotation view that allows adding multiple signage items, each with the specified fields and calculations.
________________________________________
This setup should provide a flexible and accurate way to quote signage items dynamically, reflecting supplier pricing, dimensions, and waste factors in real-time.