Skip to content

Scott Recycling Odoo Architecture

Read this file BEFORE modifying any module. It maps all cross-module dependencies so you don't accidentally break something in another module.

Last verified against manifest.py files: 2026-04-12 (sweep of sr_attendance, sr_dashboards, sr_reports deps + addition of sr_ewaste_compliance)

Audit reconciliation (2026-04-12): This file was reconciled against the actual state of /opt/odoo/custom_addons/Dan-Odoo/ and the production database sr_live_jan19_backup on 2026-04-12. All stale sr_attendance references have been marked as DEAD (the module is a bytecode skeleton with no manifest, and sr_management actually depends on OCA hr_attendance, not custom sr_attendance). The sr_weighted_* family is documented as dormant — the real weighted-materials workflow is inlined in sr_management. The sr_prospect_automation module is uninstalled; the prospect queue workflow lives in sr_management_fixes. See ~/Desktop/SR-Module-Audit-2026-04-12.md for the full audit and CHANGES.md for the commit history.

Module Dependency Tree

Dependencies shown are custom sr_/scott_ module dependencies only. Odoo core deps (base, hr, stock, etc.) are omitted for clarity. Arrows mean "depends on" — read as "child depends on parent".

sr_generic_features (base utilities: confirmation wizard/mixin)
sr_company_highlight (company branding)
sr_dynamic_user_actions (user action hooks; depends on hr)
    |
    v
sr_management (CORE - CRM, partners, pickups, boxes, notes, MOU, fleet, weighted materials)
    |   Also depends on: sr_generic_features, sr_company_highlight, sr_dynamic_user_actions,
    |                     hr_attendance (OCA — NOT sr_attendance)
    |
    | Note: the weighted-materials workflow is inlined here (box_details.py,
    |       customer_pickups.py) rather than in a dedicated sr_weighted_* module.
    |       26K+ production pickups have actual_weight values. The dedicated
    |       sr_weighted_* modules on disk are dormant prototypes, not installed.
    |
    +---> sr_management_fixes (prospect queue + customer call queue system)
    |         |
    |         +---> sr_pickup_blast (email blast + pickup response tracking)
    |                   Also depends on: sr_management (direct)
    |
    +---> sr_scheduling (truck routes, driver portal, add.note wizard, ORS routing, Samsara)
    |         |
    |         +---> sr_truck_schedule (calendar dashboard)
    |         |         Also depends on: sr_management (direct)
    |         |         |
    |         |         +---> sr_reports (cross-module reporting)
    |         |                   Also depends on: sr_management, sr_scheduling, sr_product_customization, sr_inventory_processing
    |         |
    |         +---> sr_seo_locations (website location pages, AI content, chat context API)
    |                   Also depends on: sr_management (direct), crm, scott_ai
    |                   |
    |                   +---> sr_seo_blog (blog bridge — links blog posts to locations/states)
    |                   |         Also depends on: website_blog
    |                   |
    |                   +---> sr_recruitment (careers page + job applications)
    |                             Also depends on: website_hr_recruitment, hr_recruitment
    |
    +---> sr_product_customization (inventory portal, barcode scanning)
    |         Also depends on: sr_generic_features
    |         |
    |         +---> sr_reports (see above)
    |
    +---> sr_dashboards (management dashboards)
    |         Also depends on: sr_management_fixes, sr_product_customization, hr
    |
    +---> sr_maintenance (maintenance management)
    |         Also depends on: maintenance, fleet, hr
    |
    +---> sr_scripts (admin utilities)
    +---> hr_attendance_xlsx_report (attendance XLSX exports; also depends on hr_attendance)

hr_attendance (Odoo core)
    +---> hr_attendance_reason (OCA: configurable reasons for check-in/out)
    +---> hr_attendance_autoclose (OCA: auto-close stale attendances, hourly cron)

[DEAD] sr_attendance, sr_attendance_improvements — bytecode skeletons on disk with no
    __manifest__.py, no __init__.py, no source. Odoo ignores them at scan time. Not
    installed, not depended on by anything. Candidates for `git rm -r` cleanup.
    The actual attendance functionality comes from Odoo's core hr_attendance + OCA
    hr_attendance_reason + hr_attendance_autoclose + hr_attendance_xlsx_report.

sr_general_sales (marketplace posting; depends on product, sale, stock)
    |
    +---> sr_inventory_processing (device processing, HIPAA destruction)
    |         Also depends on: hr, sale_management
    |         |
    |         +---> sr_operations_kpi (KPI monitoring, alerts, directives, SMS)
    |         |         Also depends on: sr_management, sr_general_sales, sr_multichannel_ecommerce
    |         |
    |         +---> sr_shipping (container tracking)
    |         |         Also depends on: sr_management, sr_weighted_receive (legacy), sr_general_sales
    |         |
    |         +---> sr_multichannel_ecommerce (eBay, Amazon, Walmart)
    |         |         Also depends on: sr_general_sales
    |         |
    |         +---> sr_item_barcode (barcode assignment, labels, scanner)
    |                   Also depends on: barcodes (Odoo core)
    |
    +---> sr_multichannel_ecommerce (see above)

sr_weighted_receiving (scrap metal/wire receiving; depends on stock, sale)
    +---> sr_weighted_sales_lists (unified sales lists for weighted + reusable items)
    +---> sr_recycling_weighted (recycling workflows for weighted materials)

sr_weighted_receive (LEGACY weighted material receiving — sr_shipping depends on this; depends on stock, barcodes)

scott_ai (AI core; depends on mail, web)
    +---> scott_ai_csr (AI phone agent; also depends on contacts, calendar)
    +---> sr_social_media (social media scheduler; AI-powered)

sr_onboarding (training system; depends on survey, hr)
    |
    +---> sr_evaluations (employee performance evaluations; also depends on hr, mail)
    |         |
    |         +---> sr_job_architecture (position profiles)
    |                   Also depends on: hr, sr_onboarding, sr_operations_kpi
    |
    +---> sr_job_architecture (see above)

sr_maintenance (vehicle inspections, work orders, facility maintenance; depends on maintenance, fleet, hr, sr_management)
    |
    +---> sr_helpdesk_maintenance (bridge: helpdesk tickets <-> maintenance requests)
              Also depends on: helpdesk_mgmt (OCA)

sr_ewaste_compliance (chain of custody, NIST 800-88 data destruction, hazmat tracking, vendor certification, diversion reporting; depends on sr_management, hr, mail)

sr_auction_monitor (auction tracking across platforms; depends on mail; standalone — NO sr_ deps)

sr_real_estate (property acquisition, renovation, leasing, financials; depends on mail; standalone — NO sr_ deps)

sr_mass_email_from_filter (mass email wizard; depends on contacts, mass_mailing; NO sr_ deps)
sr_prospect_automation (prospect scraping; depends on crm, contacts — extends res.partner with its own fields only, no sr_management dep needed)
sr_faq (website FAQ - standalone)
sr_twilio_sms (SMS integration - standalone)
sr_website_chat (AI chat widget; depends on website only)
laptop_inventory (laptop inventory management; depends on mail only)

Full Custom Dependency Matrix

Every custom module and its custom module dependencies (Odoo core deps omitted). Use this to determine upgrade order and blast radius.

Module Custom Dependencies
sr_generic_features
sr_company_highlight
sr_dynamic_user_actions
~~sr_attendance~~ DEAD — bytecode skeleton, no manifest, no source. Not installable. Use Odoo hr_attendance + OCA hr_attendance_* instead. Candidate for git rm.
sr_management sr_dynamic_user_actions, sr_company_highlight, sr_generic_features (also depends on Odoo core: hr_attendance, hr_holidays, stock, hr, base, contacts, mail, portal, crm, fleet, sale, sales_team, mass_mailing, project, website_crm, base_geolocalize, base_geoengine, geoengine_partner, geoengine_base_geolocalize)
sr_management_fixes sr_management
sr_pickup_blast sr_management, sr_management_fixes
sr_scheduling sr_management
sr_truck_schedule sr_management, sr_scheduling
sr_seo_locations sr_management, sr_scheduling, crm, scott_ai
sr_seo_blog sr_seo_locations, website_blog
sr_recruitment sr_seo_locations
sr_product_customization sr_management, sr_generic_features
sr_reports sr_management, sr_scheduling, sr_truck_schedule, sr_product_customization, sr_inventory_processing
sr_dashboards sr_management, sr_management_fixes, sr_product_customization (also depends on Odoo hr)
sr_maintenance sr_management (also depends on Odoo maintenance, fleet, hr)
sr_helpdesk_maintenance sr_maintenance (also depends on OCA helpdesk_mgmt)
sr_ewaste_compliance sr_management (also depends on Odoo hr, mail)
sr_scripts sr_management
hr_attendance_xlsx_report sr_management (also depends on Odoo hr_attendance)
sr_general_sales
sr_inventory_processing sr_general_sales
sr_operations_kpi sr_inventory_processing, sr_management, sr_general_sales, sr_multichannel_ecommerce
sr_shipping sr_inventory_processing, sr_management, sr_weighted_receive, sr_general_sales
sr_multichannel_ecommerce sr_inventory_processing, sr_general_sales
sr_item_barcode sr_inventory_processing
sr_weighted_receiving
sr_weighted_sales_lists sr_weighted_receiving
sr_recycling_weighted sr_weighted_receiving
sr_weighted_receive — (LEGACY)
scott_ai
scott_ai_csr scott_ai
sr_social_media scott_ai
sr_onboarding
sr_evaluations sr_onboarding
sr_job_architecture sr_onboarding, sr_evaluations, sr_operations_kpi
sr_auction_monitor — (depends on Odoo mail)
sr_real_estate — (depends on Odoo mail)
sr_mass_email_from_filter
sr_prospect_automation — (but extends res.partner)
sr_faq
sr_twilio_sms
sr_website_chat
sr_recruitment sr_seo_locations
laptop_inventory

Reverse Dependencies (What Breaks If I Change This Module?)

Use this when modifying a module — check everything downstream.

If You Change... These Modules May Break
~~sr_attendance~~ Nothing — dead module, no installed dependents. See hr_attendance (Odoo core) instead.
sr_management sr_management_fixes, sr_pickup_blast, sr_scheduling, sr_truck_schedule, sr_seo_locations, sr_recruitment, sr_product_customization, sr_reports, sr_dashboards, sr_maintenance, sr_scripts, hr_attendance_xlsx_report, sr_operations_kpi, sr_shipping, sr_ewaste_compliance
sr_management_fixes sr_pickup_blast, sr_dashboards
sr_scheduling sr_truck_schedule, sr_seo_locations, sr_recruitment, sr_reports
sr_general_sales sr_inventory_processing, sr_multichannel_ecommerce, sr_operations_kpi, sr_shipping
sr_inventory_processing sr_operations_kpi, sr_shipping, sr_multichannel_ecommerce, sr_item_barcode, sr_reports
sr_product_customization sr_reports, sr_dashboards
sr_truck_schedule sr_reports
sr_onboarding sr_evaluations, sr_job_architecture
sr_evaluations sr_job_architecture
sr_operations_kpi sr_job_architecture
sr_generic_features sr_management, sr_product_customization
sr_weighted_receiving sr_weighted_sales_lists, sr_recycling_weighted (all three uninstalled — dormant)
sr_weighted_receive sr_shipping (both uninstalled — dormant)
scott_ai scott_ai_csr, sr_social_media, sr_seo_locations
sr_seo_locations sr_seo_blog, sr_recruitment
sr_maintenance sr_helpdesk_maintenance
sr_ewaste_compliance — (leaf module, nothing depends on it yet)

Model Inheritance Chains (CRITICAL)

These models are defined in one module and extended in others. If you change a field or method in the base, check ALL inheritors.

res.partner (most extended model — 10 modules)

base (Odoo core)
  <- sr_management            (customer profile, fleet, regions, notes, attendance)
  <- sr_management_fixes      (prospect stages, call queues, in_queue_a/b/c/d booleans)
  <- sr_scheduling            (scheduling fields, pickup date computation)
  <- sr_pickup_blast          (mailing stats, response tracking)
  <- sr_inventory_processing  (HIPAA destruction fields)
  <- sr_prospect_automation   (scraping fields — independent, no sr_management dep needed)
  <- sr_scripts               (admin utilities)
  <- sr_dashboards            (dashboard computed fields)
  <- voip_oca                 (VoIP fields)
  <- base_phone               (OCA telephony, phone validation mixin)

customer.pickups

sr_management (DEFINES model: customer_id, stage, boxes, weights, MOU)
  <- sr_scheduling     (truck_schedule_id, Samsara stops, route integration, ORS routing)
  <- sr_truck_schedule (calendar/task fields)
Note: sr_reports queries customer.pickups via ORM but does NOT inherit it.

fleet.vehicle

Odoo fleet (core)
  <- sr_management          (dispatch_location_id, driver_employee_id)
  <- sr_truck_schedule      (calendar/dispatch fields)
  <- fleet_vehicle_category (category)
  <- fleet_vehicle_usage    (usage tracking)
  <- fleet_vehicle_fuel_capacity (fuel capacity)

maintenance.request

Odoo maintenance (core)
  <- sr_maintenance    (request_type, trade, vehicle_id, facility_location_id, inspection_id,
                         parts/labor tracking, cost computation, approval workflow)
  <- sr_helpdesk_maintenance (ticket_id — links to helpdesk.ticket)

maintenance.equipment

Odoo maintenance (core)
  <- sr_maintenance    (vehicle_id, is_facility_asset, facility_location_id)

helpdesk.ticket

helpdesk_mgmt (OCA)
  <- helpdesk_mgmt_crm         (lead_ids, lead_count — links to CRM leads)
  <- sr_helpdesk_maintenance   (maintenance_request_ids, maintenance_request_count — links to maintenance)

crm.lead

Odoo crm (core)
  <- sr_management   (pickup_count, weight fields, region)
  <- sr_scheduling   (scheduling-related fields)

hr.job

Odoo hr (core)
  <- sr_job_architecture    (sr_department, profile fields, linked KPI/onboarding/eval templates)

hr.employee (9 modules)

Odoo hr (core)
  <- sr_management          (samsara driver, is_driver compute)
  <- sr_scheduling          (driver fields, leave tracking)
  <- sr_operations_kpi      (KPI assignment)
  <- sr_dashboards          (dashboard fields)
  <- sr_reports             (reporting fields)
  <- sr_onboarding          (onboarding_role_id, onboarding_progress_ids, progress/status fields)
  <- sr_evaluations         (evaluation_ids, evaluation_count, last_evaluation_date)
  <- sr_job_architecture    (auto-link onboarding_role_id/kpi_template_id when job_id changes)
  <- sr_ewaste_compliance   (received_by_id, performed_by_id references)
  <- hr_attendance_xlsx_report (report fields)

hr.attendance

Odoo hr_attendance (core)
  <- hr_attendance_reason    (OCA: attendance_reason_ids Many2many)
  <- hr_attendance_autoclose (OCA: autoclose cron, open_worked_hours, _check_validity bypass)

Key Models by Module

sr_auction_monitor (auction tracking)

Model Purpose
auction.platform Auction sites/sources (eBay, GovDeals, Copart, etc.)
auction.category Item categories with parent/child hierarchy
auction.listing Core listing model (watching->bidding->won/lost/expired/passed), mail.thread
auction.alert.rule Configurable alert timings (24h, 4h, 1h, 15min before end)
auction.alert.log Tracks sent alerts to prevent duplicates
res.config.settings (inherit) eBay API and Twilio SMS credentials

sr_real_estate (property lifecycle management)

Model Purpose
real.estate.property Core property record (prospect->offer->owned->renovating->sold/rented), mail.thread, image.mixin
real.estate.deal Deal pipeline CRM (lead->analyzing->offer_made->under_contract->closed/dead)
real.estate.renovation Renovation project with budget tracking and task management
real.estate.renovation.task Individual repair tasks with contractor, cost estimates/actuals
real.estate.contractor Contractor registry with specialty, rating, insurance tracking
real.estate.lease Tenant lease management (draft->active->expiring->expired/renewed)
real.estate.payment Rent payment tracking (pending->received/late/partial/waived)
real.estate.expense Property expenses by category, with pivot analysis
real.estate.income Property income (rent, sale proceeds, late fees, etc.)
real.estate.deal.source Config: deal source types (auction, wholesaler, MLS, etc.)
real.estate.expense.category Config: expense categories (mortgage, insurance, tax, etc.)

~~sr_attendance~~ (REMOVED — dead module)

This module was an early split from sr_management but has been abandoned. The directory on disk is a bytecode skeleton with no manifest. Attendance functionality is provided by: - Odoo core hr_attendance (check-in / check-out, kiosk mode) - OCA hr_attendance_reason (reason codes on check-in/out) - OCA hr_attendance_autoclose (autoclose cron for stale entries) - hr_attendance_xlsx_report (custom XLSX export)

The old sr_attendance data models (weekly.attendance, attendance.adjustment.request, attendance.submission.log) are NOT present in production. If approval-workflow attendance is needed again, it would be a new module or a re-installation — sr_attendance on disk cannot be installed as-is.

sr_management (the core)

Model Purpose
customer.pickups Pickup lifecycle (expected->arrival->in_progress->next_end->cancelled)
box.details Box tracking (theoretical->extent->scanned_remote->in_transfer->scanned_hq->sort_line->sorted)
box.content.line Individual items in a box
note.note Contact notes (extends Odoo notes)
agreement.mou MOU agreements
contact.result Contact outcome types
customer.region Geographic regions
terms.conditions Pickup terms
followup.frequency Call frequency settings (factor = days between calls)
pickup.order / pickup.order.line Pickup orders
portal.inventory / portal.inventory.line Customer portal inventory
barcode.scan.logs Barcode scan history

sr_management_fixes

Model Purpose
res.partner (inherit) Prospect stages, call queue booleans, priority stars, escalation

sr_scheduling

Model Purpose
truck.schedule Route scheduling (draft->in_progress->completed->cancel)
truck.schedule.logs Route change logs
truck.route.log GPS/route tracking
driver.message Driver-dispatcher messaging
ltl.pickup Less-than-truckload pickups
trucking.company External trucking companies
routing.utils Direction compatibility utilities
ors.routing OpenRouteService truck routing (driving-hgv)
add.note (wizard) Note + pickup scheduling wizard

sr_operations_kpi

Model Purpose
sr.kpi.daily Daily KPI aggregation
sr.wip.snapshot Work-in-progress snapshots
sr.ops.alert Operations alerts
sr.alert.rule Alert trigger rules
sr.daily.directive Daily work directives
sr.directive.assignment Directive-to-employee assignments
sr.directive.target.adjustment Target adjustments
sr.workstation / sr.workstation.session Workstation tracking
sr.my.performance Employee performance dashboard
sr.ops.dashboard Operations dashboard
sr.kpi.template KPI definitions
sr.notification.service Notification dispatch
sr.sms.notification SMS notifications

sr_pickup_blast

Model Purpose
email.pickup.response Token-based pickup responses from email blasts
res.partner (inherit) Mailing stats (pickup_mailing_count, response_rate)

sr_dashboards

Model Purpose
res.partner (inherit) Calls dashboard stats, note result summaries
hr.employee (inherit) Attendance dashboard stats

sr_maintenance

Model Purpose
maintenance.inspection Pre-trip/post-trip vehicle inspection forms with DOT compliance
maintenance.inspection.line Individual checklist items (pass/fail/na per item)
maintenance.inspection.template Reusable inspection checklist templates
maintenance.inspection.template.line Template checklist items
facility.location Building/location hierarchy for facility maintenance
maintenance.labor.log External contractor time tracking (hours, workers, cost)
maintenance.part.line Parts/materials used on a work order
maintenance.request (inherit) Extended with request_type, trade, vehicle/facility, parts/labor, approval workflow
maintenance.equipment (inherit) Extended with vehicle_id, is_facility_asset, facility_location_id

sr_helpdesk_maintenance

Model Purpose
helpdesk.ticket (inherit) maintenance_request_ids One2many, request count, open action
maintenance.request (inherit) ticket_id Many2one back-link to helpdesk ticket
helpdesk.ticket.create.request (wizard) Creates maintenance request from ticket with follower/message copy

sr_shipping

Model Purpose
sr.shipping.container Shipping container lifecycle
sr.shipping.container.item Reusable items in containers
sr.shipping.weighted.item Weighted materials in containers
sr.weighted.auto.assignment.rule Auto-routing rules for weighted materials

sr_evaluations

Model Purpose
sr.evaluation Employee evaluation lifecycle (draft->in_progress->done->cancelled)
sr.evaluation.criterion Individual evaluation criteria with rating (1-5) and weight
sr.evaluation.template Reusable evaluation templates (30-day, 90-day, annual)
sr.evaluation.template.line Template criteria lines
hr.employee (inherit) evaluation_ids, evaluation_count, last_evaluation_date

Known Architectural Issues

1. sr_management is a God Module

It contains CRM extensions, pickups, boxes, fleet, notes, MOU, portal inventory, weighted materials intake, and barcode scanning all in one module. Every custom module depends on it. An early attempt to split out attendance into sr_attendance was abandoned — the directory remains on disk as a dead bytecode skeleton (see the stale-content warning at the top of this file). Ideally boxes/pickups and CRM would also be separate modules, but that's a major refactor with high blast radius.

2. sr_prospect_automation extends res.partner independently (and is uninstalled)

This module adds its own fields to res.partner (prospect_source_id, prospect_scraped_date, prospect_data_sources, prospect_confidence_score) and does NOT reference any sr_management fields. No dependency needed — verified 2026-02-19. However: as of the 2026-04-12 audit, sr_prospect_automation is NOT installed in production. The prospect queue workflow that runs in production is implemented in sr_management_fixes (prospect_stage, prospect_bucket, etc. on res.partner). The scraper module is ready but dormant. Decide whether to install or remove.

3. Weighted materials is inlined in sr_management, not a separate module

The four sr_weighted_* modules on disk (sr_weighted_receive, sr_weighted_receiving, sr_recycling_weighted, sr_weighted_sales_lists) are all uninstalled. The real weighted- materials workflow is inlined in sr_management/models/box_details.py and customer_pickups.py, with reports in sr_reports and aggregation in sr_operations_kpi. 26,592 of 31,395 production pickups have non-zero actual_weight. The sr_weighted_* modules are dormant prototypes/refactors that were never promoted. Candidates for cleanup.

sr_shipping historically declared a dependency on sr_weighted_receive but both modules are now uninstalled in production.

4. sr_operations_kpi has 4 heavy custom dependencies

Depends on sr_management, sr_inventory_processing, sr_general_sales, and sr_multichannel_ecommerce. If any of those break, KPIs break. Consider decoupling via scheduled data aggregation.

5. sr_job_architecture pulls in the whole system

Depends on sr_onboarding, sr_evaluations, AND sr_operations_kpi — which transitively pulls in sr_inventory_processing, sr_general_sales, and sr_multichannel_ecommerce. Installing job architecture effectively requires most of the system.

Critical Invariants (DO NOT BREAK)

Queue System (sr_management_fixes/models/res_partner.py)

  • Customers can be in MULTIPLE queues simultaneously via in_queue_a/b/c/d booleans
  • customer_queue Selection is only for badge display (highest priority queue)
  • Views filter on in_queue_* booleans, NOT on customer_queue
  • _assign_customer_queues(): Must check customer.escalated BEFORE DM date threshold for Queue B
  • action_clear_pickup_requested(): Must call _clear_all_queue_booleans(), not just clear in_queue_d
  • ALL contact actions (success/fail) must call _clear_all_queue_booleans() so customers leave queues immediately
  • Customers re-enter queues via the daily cron cron_assign_customer_queues

Pickup Creation (sr_scheduling/models/customer_pickups.py)

  • create() override calls _manage_truck_schedule() which uses ORS truck routing API
  • Set is_old_pickup=True to bypass route management in scripts/tests
  • Stage writes trigger route recalculation hooks

Routing (sr_scheduling/models/ors_routing.py)

  • All distance/time calculations use OpenRouteService driving-hgv (truck) profile
  • API key stored in ir.config_parameter as ors_api_key
  • Falls back to haversine (35 mph, 1.3x winding factor) when ORS is unavailable
  • Frontend maps proxy through /ors/route controller endpoint
  • Samsara route pushing is DISABLED — drivers use Odoo driver portal on tablets
  • Samsara is kept for ELD, telemetry, and mechanical notifications only

Box Lifecycle (sr_management/models/box_details.py)

  • create() auto-generates box content lines
  • Weight validation: gross_weight >= tare_weight, remainder_ewaste_weight >= 0
  • Status flow: theoretical -> extent -> scanned_remote -> in_transfer -> scanned_hq -> sort_line -> sorted

Third-Party / Utility Modules (not sr_ prefixed)

  • dynamic_product_label_print — Cybrosys label printing (depends: stock)
  • odoo_website_helpdesk — Cybrosys website helpdesk (depends: website, project, sale_project, hr_timesheet, mail, contacts)
  • field_timepicker — Cybrosys time picker widget (depends: web)
  • fs_storage — OCA filesystem storage (depends: base, base_sparse_field, server_environment)
  • server_environment — OCA server environment config (depends: base, base_sparse_field)
  • oca_dms/ — OCA document management (dms, dms_storage, dms_attachment_link)
  • oca_fleet/ — OCA fleet extensions (category, usage, fuel capacity, history date end, service services)
  • oca_telephony/ — OCA telephony (voip_oca, base_phone)

Duplicate/Legacy Modules (IGNORE)

  • Dan-Odoo/ — old copies of sr_operations_kpi, sr_weighted_receive
  • Root-level dms/, dms_storage/, dms_attachment_link/ — duplicates of oca_dms/ versions
  • Root-level fleet modules (fleet_vehicle_category, fleet_vehicle_usage, fleet_vehicle_fuel_capacity, fleet_vehicle_history_date_end, fleet_vehicle_service_services) — duplicates of oca_fleet/ versions