| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Purchase (purchase) • Discuss (mail) • Invoicing (account) • Surveys (survey) |
| Community Apps Dependencies | Show |
| Lines of code | 3483 |
| Technical Name |
grev_od_tender_purchase |
| License | OPL-1 |
| Website | https://grevlin.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Purchase (purchase) • Discuss (mail) • Invoicing (account) • Surveys (survey) |
| Community Apps Dependencies | Show |
| Lines of code | 3483 |
| Technical Name |
grev_od_tender_purchase |
| License | OPL-1 |
| Website | https://grevlin.com |
|
⚔
Tender → Purchase OrderOne-click PO generation from awarded tender lots â with price validity enforcement, payment terms propagation, and full traceability built in.
|
| 🔒 Requires: grev_od_tender_core â Tender Core module must be installed first. Also requires standard Odoo purchase, purchase_stock, and stock. |
|
Core Features |
||||
|
||||
|
||||
|
How It Works |
|||||||||||
|
Changelog |
|
|
|
🙋
Need Help?𝕏 @GrevlinGlobal 🆕 30 days free support included |
Tender Management — Purchase Fulfillment
Tender Purchase extends the Tender Core module with the Purchase Order fulfillment path. Once a lot with fulfillment_type = purchase is awarded, this module enables one-click PO creation from the lot with all commercial terms pre-populated from the winning bid — including price validity enforcement and payment terms propagation.
Note
Requires :doc:`../grev_od_tender_core/index` plus the standard Odoo modules purchase, purchase_stock, and stock.
Overview
Key Features
- One-click PO generation — creates a Purchase Order directly from the awarded lot with vendor, lines, prices, and delivery dates pre-populated
- Price validity enforcement — blocks PO creation if any bid line's price_valid_until date is in the past; prevents procurement on stale quotes
- Payment terms propagation — the winning bid's payment_terms_id is carried to the generated PO automatically
- Delivery date mapping — bid line delivery_date becomes the PO line date_planned
- Full traceability — PO carries tender_lot_id, tender_id, and tender_bid_id; smart buttons allow navigation in both directions
- Goods receipt tracking — received_qty_pct is computed per lot to show the percentage of ordered goods received
- Re-issuance support — cancel the existing PO to unlock re-creation; the tender link is preserved
Installation
Prerequisites
- :doc:`../grev_od_tender_core/index` installed and configured
- Standard Odoo modules: purchase, purchase_stock, stock
Steps
- Go to :menuselection:`Apps --> Update Apps List`
- Search for Tender Management — Purchase Fulfillment
- Click :guilabel:`Install`
Tip
Installing grev_od_tender_management installs this module automatically as part of the full suite.
Configuration
Payment Terms
To use the payment terms propagation feature:
- Open a vendor bid in :menuselection:`Tenders --> Bids`
- Set :guilabel:`Payment Terms` on the bid
- When the PO is generated from this bid's awarded lot, the terms will be copied automatically
No additional settings are required. The module extends existing models without adding configuration options.
Usage
Creating a Purchase Order from an Awarded Lot
Open a lot in Awarded state with :guilabel:`Fulfillment Type` set to Purchase Order
Click :guilabel:`Create Purchase Order` in the action area
The system will:
- Validate the lot is awarded and in purchase fulfillment mode
- Check that all bid line prices are still within their validity dates
- Create a Purchase Order with the winning vendor
- Map bid lines to PO lines (product, qty, UoM, price, delivery date)
- Copy payment terms from the bid to the PO
- Post a Chatter message on the lot with a link to the new PO
- Subscribe the vendor as a follower on the PO
The PO form opens automatically; review and confirm
Warning
If any bid line has a price_valid_until date earlier than today, PO creation will fail with an error. Contact the vendor to resubmit updated pricing before proceeding.
Price Validity Enforcement
Price validity is checked at PO creation time, not at bid submission time. This means a bid can be submitted and evaluated with future validity dates, but if those dates expire before the PO is raised, the system blocks creation.
To check validity status:
- Open the bid in :menuselection:`Tenders --> Bids`
- Review the :guilabel:`Price Valid Until` column on bid lines
- If expired, note the affected lines and contact the vendor
Tracking Goods Receipts
After the PO is confirmed and goods are received:
- Open the tender lot
- The :guilabel:`Received %` field shows the percentage of ordered quantity received across all receipts linked to the lot's POs
- Click the :guilabel:`Receipts` smart button to view individual receipt records
Re-issuing a Purchase Order
If the original PO must be cancelled and replaced:
- Open the PO from the lot's smart button
- Cancel the PO (:guilabel:`Cancel Order`)
- Return to the lot form
- Click :guilabel:`Create Purchase Order` again — the system allows re-creation since there is no longer an active PO on the lot
Note
Only one non-cancelled PO is allowed per lot at a time. Attempting to create a second PO while the first is active will raise a validation error.
Technical Reference
Extended Models
grev.tender.lot (extended)
Added fields:
- purchase_order_ids — One2many to purchase.order
- purchase_order_count — computed count for smart button
- receipt_count — computed from incoming pickings linked to lot POs
- received_qty_pct — computed percentage of ordered quantity received
- po_state — related to PO state (not stored)
Added methods:
- action_create_purchase_order() — validates and creates the PO
- action_view_purchase_orders() — opens filtered PO list
- action_view_receipts() — opens incoming pickings for lot
grev.tender.bid (extended)
Added field:
- payment_terms_id — Many2one to account.payment.term; propagated to the generated PO
purchase.order (extended)
Added fields:
- tender_lot_id — Many2one to grev.tender.lot (ondelete='restrict')
- tender_id — related to grev.tender.call via lot (stored, indexed)
- tender_bid_id — Many2one to grev.tender.bid (indexed)
- is_tender_order — computed boolean, stored, indexed
Added method:
- action_view_tender_lot() — navigates back to the source tender lot
Field Reference
| Field | Model | Type | Description |
|---|---|---|---|
| tender_lot_id | purchase.order | Many2one | Source lot that generated this PO |
| tender_id | purchase.order | Related (stored) | Tender call, derived from lot |
| received_qty_pct | grev.tender.lot | Float (computed) | Percent received across all PO receipts |
See Also
- :doc:`../grev_od_tender_core/index` — Tender Core (required dependency)
- :doc:`../grev_od_tender_project/index` — Project Task fulfillment
- :doc:`../grev_od_tender_management/index` — Full suite installer
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module