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 databasesr_live_jan19_backupon 2026-04-12. All stalesr_attendancereferences have been marked as DEAD (the module is a bytecode skeleton with no manifest, andsr_managementactually depends on OCAhr_attendance, not customsr_attendance). Thesr_weighted_*family is documented as dormant — the real weighted-materials workflow is inlined insr_management. Thesr_prospect_automationmodule is uninstalled; the prospect queue workflow lives insr_management_fixes. See~/Desktop/SR-Module-Audit-2026-04-12.mdfor the full audit andCHANGES.mdfor 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)
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¶
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/dbooleans customer_queueSelection is only for badge display (highest priority queue)- Views filter on
in_queue_*booleans, NOT oncustomer_queue _assign_customer_queues(): Must checkcustomer.escalatedBEFORE DM date threshold for Queue Baction_clear_pickup_requested(): Must call_clear_all_queue_booleans(), not just clearin_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=Trueto 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_parameterasors_api_key - Falls back to haversine (35 mph, 1.3x winding factor) when ORS is unavailable
- Frontend maps proxy through
/ors/routecontroller 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