OdooWiki OCA HUB

Sale planner calendar

sale_planner_calendar folder_open OCA/sale-workflow open_in_new
Sale License: AGPL-3

This module allows to manage commercial visits to partners by using recurrence events.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Plan recurring commercial visits to customers directly from the partner form and track them in a dedicated sale planner calendar. Salespeople can create sale orders, invoices and payment sheets from each visit and review daily summaries.

This module turns Odoo's calendar into a commercial visit planner. From a customer's contact form you can launch a planner action that creates a recurring weekly event for that customer, pre-filled with the customer, salesperson, address, event type and a forward end date.

Each planner event (calendar.event) carries extra information: the planned customer, a mobile number, a visit state (pending, done or cancelled), an issue type, a comment, a satisfaction rating, the related sale orders and their subtotal, the customer's outstanding invoice amount and due date, and any payment sheet lines. Buttons on the event let you open or create the related sale order, open the customer's invoices, open unpaid invoices for payment, mark the visit done or cancelled, record an issue, change the hour, and give a rating.

A daily summary screen (sale.planner.calendar.summary) groups the events of a salesperson for a given date and event type, showing counts of planned, done, effective and off-planning visits, sale order totals and payment amounts. It can process the day, attaching unassigned events and sale orders to the summary, and it prevents two summaries for the same salesperson, date and event type.

A reassignment wizard lets you move visits from one salesperson to another, optionally reassigning the customer and unsubscribing the old salesperson. Settings control whether invitations are sent to attendees, the maximum event duration, the forward months for dynamic end dates, the order cut hour and whether confirming a sale marks the event done. Scheduled jobs unsubscribe documents and refresh dynamic end dates.

Depends on

calendarsalesale_payment_sheet

Menus it adds

Calendar plannerPlannermenu_sale_planner_calendar_summary_today_non_commercialmenu_sale_planner_calendar_summary_todaymenu_sale_planner_calendar_summarymenu_sale_planner_calendar_eventmenu_sale_planner_calendar_customersmenu_sale_planner_calendar_product_templatemenu_sale_planner_calendar_product_variantCalendar eventsmenu_event_calendarmenu_calendar_event_tree_primary_onlyConfigurationmenu_sale_planner_calendar_issue_typemenu_calendar_event_typemenu_sale_planner_calendar_wizardmenu_sale_planner_calendar_reassign_wiz
Models and fields (15)
  • res.users · extends an existing model
  • sale.order · extends an existing modelsale_planner_calendar_event_id
  • res.company · extends an existing modelsale_planner_forward_months, sale_planner_order_cut_hour, susbscriptions_backward_days, sale_planner_mail_to_attendees (Send invitation to attendees), sale_planner_done_on_sale_confirm (Event done when confirm sale)
  • res.partner · extends an existing modelis_sale_planner_contact
  • calendar.event · extends an existing modelhour, comment, sale_ids, cycle_skip, categ_icons, partner_ref, cycle_number, location_url, off_planning, partner_city, partner_name, advanced_cycle, partner_mobile, partner_street, partner_user_id (Partner salesperson), invoice_date_due (Due Date), unsubscribe_date, target_partner_id (Sale planner partner), sale_planner_state, calendar_summary_id, is_dynamic_end_date, sale_order_subtotal, sale_planner_rating, partner_contact_name, target_partner_mobile, calendar_issue_type_id, payment_sheet_line_ids, invoice_amount_residual (Invoice amount due), is_base_recurrent_event, partner_commercial_name (Commercial partner name)
  • calendar.attendee · extends an existing model
  • calendar.event.type · extends an existing modelicon, duration
  • res.config.settings · extends an existing modelsale_planner_forward_months, sale_planner_order_cut_hour, susbscriptions_backward_days, sale_planner_mail_to_attendees, sale_planner_done_on_sale_confirm, sale_planner_calendar_max_duration (Calendar event max duration)
  • sale.payment.sheet.line · extends an existing modelsale_planner_calendar_event_id
  • sale.invoice.payment.wiz · extends an existing modelsale_planner_calendar_event_id
  • sale.planner.calendar.wizard · new modeluser_id (Salesperson), week_list (Weekday), event_type_id (Event type), calendar_event_ids
  • sale.planner.calendar.summary · new modeldate, state, comment, user_id, sale_ids, company_id, currency_id, event_type_id (Event type), payment_count, payment_amount, event_done_count, sale_order_count, event_total_count, sale_order_subtotal, event_effective_count, event_off_planning_count, sale_planner_calendar_event_ids
  • sale.planner.calendar.issue.type · new modelname
  • sale.planner.calendar.reassign.wiz · new modelnew_end, user_id (Salesperson), line_ids, new_start, week_list (Weekday), partner_id, new_user_id (New salesperson), event_type_id (Event type), partner_user_id (Partner salesperson), new_event_categ_ids (New tags), unsuscribe_old_salesperson, assign_new_salesperson_to_partner
  • sale.planner.calendar.reassign.line.wiz · new modeluntil, selected, partner_id, event_start, new_user_id, event_user_id (Planner salesperson), event_categ_ids, partner_user_id (Partner salesperson), reassign_wiz_id, calendar_event_id, new_event_categ_ids (New tags)

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 3 confirmed, 6 with no information of 9 versions.

Sources · Odoo 18.0

Confirmed on 2026-11-03 in branch 18.0 of OCA/sale-workflow.

terminal Installation and usage

OCA documentation · Odoo 18.0

You can find the following configurations in the settings:

  • Subscriptions Backward Days: Backward days to search documents to update subscriptions.
  • Sale Planner Forward Months: Forward months to create calendar events.
  • Send invitation to attendees: Send invitations to attendees when a planner event is created.
  • Sale planner order cut hour: Time of the next day until which orders of the current day are assigned.
  • Calendar event max duration: Show a warning message when duration is more than this time. Set 00:00 to disable warning.

Other setting are available with system parameters

  • Sale order partner when a so is created from a event planned. You can create or update the system parameter sale_planner_calendar.create_so_to_commercial_partner with True value to create the sale order to commercial partner instead of partner
  • Sale order salesperson when a so is created from an event planned. By default the salesperson assigned to the event (usually whoever is doing the visit) is kept on the new order - typical when a salesperson covers for another one's vacation. You can create or update the system parameter sale_planner_calendar.keep_partner_salesperson with True value to keep the partner's own assigned salesperson on the new order instead

You can create now the recurrent events directly from the partners by clicking next smart button:

By default the end of the recurrence is set by the settings field Sale Planner Forward Months.

You can manage this new recurrent events from Calendar planner menu entry.

On the first window, you will find a summary of the events that the user has to do today.

By going to Calendar planner \> Calendar events you will have two options:

  • View the calendar events related to your user (My Calendar).
  • View your base events related to the recurrences (Recurrent calendar events).

Finally on Calendar planner \> Wizards you will have again two options:

  • You can change the hour of the start of all the events related to a recurrency by using Sale planner calendar wizard.
  • You can change the salesperson assigned to events related to a period of time by using the wizard Reassignment of salesperson.

No verified information in OCA: Installation.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.