Passer au contenu principal
Les détails du produit sont affichés en anglais. Traductions à venir.
Security Guard Services Management — A build-to-order Odoo module for guarding companies that turns client sites, posts and s — 1/1Aperçu illustratif

A build-to-order Odoo module for guarding companies that turns client sites,

posts and shift patterns into a rostered schedule, captures patrol and incident logs against real guard attendance, and converts those hours into payroll input and contract invoices.

ECOSIRE scopes, builds, installs and supports it on your Odoo 17, 18 or 19 database.

Qu'est-ce que Security Guard Services Management ?

A build-to-order Odoo module for guarding companies that turns client sites, posts and shift patterns into a rostered schedule, captures patrol and incident logs against real guard attendance, and converts those hours into payroll input and contract invoices. ECOSIRE scopes, builds, installs and supports it on your Odoo 17, 18 or 19 database. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Fonctionnalités clés

security.site model with client partner, geolocation, site instructions, contract reference and document attachments
security.post definitions per site: shift pattern, required headcount, guard grade, armed/unarmed flag and rate basis
Roster generator that expands post requirements into dated security.shift records over any horizon, with weekly/rotating pattern support
Assignment constraints in Python that block double-booking a guard across overlapping shifts and reject guards without a valid licence for the post type
Guard licence and certification register on hr.employee with expiry dates, automated expiry-warning actions and a hard block on assigning an expired credential
Relief workflow: unfilled or abandoned shifts move to relief_required, escalate to the duty supervisor via automated action, and record a coded reason for the gap
security.patrol.log with checkpoint lines, scan timestamps, GPS coordinates and photo attachments, postable from mobile or an external guard-tour device
security.incident model with severity, category, narrative, involved parties and a QWeb PDF incident report ready to send the client
Attendance reconciliation comparing planned shift hours against clocked hr.attendance records, flagging late starts, short shifts and no-shows
Payroll input wizard aggregating approved shift hours per employee per period into hr.payslip.input or a clean export, with overtime, night and holiday premium rules
Contract billing engine supporting fixed monthly rate per post, hourly rate by guard grade, and hybrid models with deductions for uncovered hours
Billing wizard producing draft account.move invoices with one line per site/post plus a QWeb backup schedule annexure listing every billed shift
Computed coverage KPIs via @api.depends: coverage percentage, unfilled hours and relief count per site, contract and period
Record-rule security so site supervisors see only their assigned sites, operations managers see their region, and finance sees billing without operational detail
XML-RPC/JSON-RPC endpoints so biometric clocks, guard-tour hardware or a client portal can post attendance and checkpoint scans into the module

Fait sur commande, clé en main

Aucune configuration à faire vous-même — une app fonctionnelle conçue, installée et prise en charge par ECOSIRE.

  1. 1

    Vous commandez

    Commencez par un prix de développement unique. Nous cadrons le projet avec vous au lancement.

  2. 2

    Nous développons et installons

    ECOSIRE la développe, la configure et l'installe sur votre Odoo.

  3. 3

    Mise en ligne + assistance

    Vous êtes en ligne en une semaine ouvrée environ, avec deux semaines d’assistance après la mise en production. Les défauts du code que nous livrons sont corrigés gratuitement.

Spécifications techniques

Compatibilité Odoo
Odoo 17, Odoo 18, Odoo 19
Éditions
Enterprise et Community
Licence
Licence à confirmer
Version Python requise
Python 3.10+
Base de données
PostgreSQL 12+

À propos de ce produit

A guarding company does not sell products or project hours — it sells covered posts. A client contract says "two unarmed guards at Gate A, 24/7, plus one supervisor on the day shift", and every operational and financial question follows from whether those posts were actually manned. Odoo out of the box has no idea what a post is. You can approximate a roster in Planning (Enterprise only), record hours in Attendances, and raise an invoice in Sales, but nothing joins them: the control-room WhatsApp group decides reliefs, a spreadsheet tracks who covered which site, patrol sheets stay on paper at the guardhouse, and at month-end someone reconciles three sources by hand to answer "did we bill this client for hours we never covered, and did we pay a guard for a shift he did not work?". That reconciliation gap is where guarding companies lose margin and where contract disputes start.

This module adds the missing operational spine as proper Odoo models. A security.site record carries the client res.partner, geolocation, site instructions and contract reference; each site owns security.post lines that define required coverage — post name, shift pattern, headcount, required guard grade or licence class, and armed/unarmed flag. A roster generator expands post requirements into security.shift records across a date range, and assignment links each shift to an hr.employee guard, validating with a Python constraint that the guard holds a valid, unexpired licence for that post type and is not already booked on an overlapping shift. Relief and absence handling is a first-class flow, not a note: an unfilled or abandoned shift moves to a relief_required state, an automated action escalates it to the duty supervisor, and the replacement is recorded with a reason code so the reason a post went uncovered survives into reporting. Patrol and incident capture is a security.patrol.log model with checkpoint lines, timestamps and photo attachments, and a security.incident model with severity, category, narrative, and a QWeb PDF incident report you can hand a client the same day.

The financial half is what makes it pay for itself. Actual shift hours — worked, not planned — feed two directions. Toward payroll, a wizard aggregates approved shifts per employee per period into attendance or payslip input lines (hr.payslip.input on the Enterprise payroll stack, or a clean export for whatever payroll you run), with configurable rules for overtime, night differential and public-holiday premiums. Toward revenue, contract billing computes each period's invoiceable amount from the billing model you actually use: fixed monthly rate per post, hourly rate by guard grade, or a hybrid with deductions for uncovered hours. The billing wizard produces a draft account.move with one line per site and post, plus a QWeb backup schedule listing every shift billed — the annexure your client's procurement team asks for. Everything is standard Odoo underneath: ir.model.access.csv plus record rules so a site supervisor sees only their own sites while operations managers see the region, @api.depends computed fields for coverage percentage and unfilled-hours totals, and the XML-RPC/JSON-RPC API left open so an existing guard-tour device, biometric clock or client portal can post checkpoint scans straight into the log.

We build this to order for your Odoo 17.0, 18.0 or 19.0 database and your actual contracts. Nothing here is a pre-built download — the module ships after a scoping call in which we walk through your site types, shift patterns, licence classes, overtime rules and how each client contract prices coverage, because those five things differ enough between guarding companies that a generic module would be re-written anyway. Typical delivery is one working week from confirmed scope. It runs on Odoo Community where possible; features that depend on Enterprise apps — notably the payroll payslip integration and Planning-style Gantt views — are flagged during scoping so you know exactly what your edition supports and what we deliver as a Community-safe alternative. You receive the full source, deployed and tested on a staging copy of your database before it touches production.

Ce que vous obtenez

  • Installable module source code targeting your exact Odoo series (17.0, 18.0 or 19.0), with a clean __manifest__.py and declared dependencies
  • Installation and configuration on your environment, including site, post, guard grade, licence class, rate and payroll rule setup with your real data
  • Technical documentation: data model diagram, model and field reference, security matrix (ir.model.access.csv plus record rules), and API notes for external integrations
  • End-user guide plus a live training session for control-room, operations and finance users, recorded for onboarding new staff
  • UAT on a staging copy of your production database, with a signed-off acceptance checklist and a documented rollback plan before go-live
  • Post-go-live support window covering defect fixes and configuration adjustments on the delivered scope
  • Private git repository handover with full commit history, so your team or any other partner can maintain the module
  • Migration notes and an upgrade path plan for your next Odoo major version

Pour qui c'est

Operations Director at a manned-guarding company

Runs 20 to 200+ posts across client sites and needs one system that answers whether every contracted post was manned, who covered the reliefs, and which sites are eroding margin through unbilled overtime. Currently reconciles a rostering spreadsheet, a WhatsApp control-room group and paper patrol sheets by hand every month.

Control-room supervisor / duty manager

Fills gaps in real time. Needs a shift board that shows unfilled and abandoned posts immediately, a shortlist of eligible off-duty guards with valid licences for that post type, and a one-click relief assignment that records the reason so it is defensible later.

Finance and contracts manager

Invoices dozens of clients on different bases: fixed monthly per post, hourly by guard grade, or with deductions for uncovered hours. Needs invoices generated from actual covered hours with a backup schedule annexure the client's procurement team will accept without a dispute.

HR and payroll officer

Pays guards on hours actually worked, with overtime, night differential and public-holiday premiums. Needs payroll input derived from approved, reconciled shift records rather than re-keyed from a roster spreadsheet, and needs licence expiries surfaced before a guard is deployed on an invalid credential.

Comment Security Guard Services Management se compare

CritèreÉCOSIREConstruction personnaliséeConcurrentNatif Odoo
Concept of a contracted postsecurity.site and security.post are first-class models with headcount, shift pattern, licence class and rate basisAchievable, but the data model is designed from scratch by your developer or contractorUsually a generic shift or job model borrowed from field-service, with no post-coverage conceptNo equivalent — Odoo has projects, tasks and planning slots, not contracted posts
Relief and no-show handlingDedicated relief_required state, supervisor escalation via automated action, coded gap reasons that flow into reportingDepends entirely on whether it was specified up front; usually added later after a disputeTypically a manual reassignment with no reason captureHandled outside Odoo — control-room phone calls and a spreadsheet
Guard licence and certification controlLicence register on hr.employee with expiry dates, warning actions, and assignment blocked on expired credentialsPossible, but licence-class validation logic is easy to under-specifyOften stored as a free-text field with no enforcement at assignmentHR stores documents; nothing prevents deploying a guard on an expired licence
Shift hours to payrollWizard aggregating approved hours into hr.payslip.input or a clean export, with overtime, night and holiday rulesBuilt to your rules, but overtime and premium logic is where most DIY projects overrunUsually stops at attendance; payroll mapping is left to youAttendances exist, but the roster-to-payroll link is manual re-keying
Contract invoicing basisFixed per post, hourly by grade, or hybrid with deductions — plus a QWeb backup schedule annexure per invoiceWhatever you specify; each additional billing model is additional scopeCommonly a single billing model, most often flat hourlyManual invoice lines typed from a reconciled spreadsheet
Patrol and incident evidenceCheckpoint logs with timestamps, GPS and photos, plus incident records with a same-day client PDFBuildable, but mobile capture and attachment handling adds real effortOften patrol logging only, without an incident report a client will acceptPaper sheets at the guardhouse, or a note in chatter
Data access separationRecord rules so supervisors see only their sites, ops sees the region, finance sees billing without operational detailDepends on the developer's discipline with ir.model.access.csv and record rulesFrequently a single group with all-or-nothing accessStandard Odoo groups, with no site-level scoping for guarding roles
Version fit and maintenanceBuilt for your exact Odoo 17/18/19 series, full source, private git repo handover, documented upgrade pathYou own it entirely, including every future migration with no prior guarding-domain referenceYou wait for the vendor's version release, and customisation is limited to what they exposedUpgrades cleanly — because there is nothing guarding-specific to upgrade

Foire aux questions sur Security Guard Services Management

How long does delivery take, and how does build-to-order work?

Typical delivery is one working week from confirmed scope. This is not an existing apps.odoo.com download — ECOSIRE builds it for your database. The sequence is: a short scoping call to map your site types, shift patterns, licence classes, overtime rules and contract pricing models; a written scope and quotation; development against your Odoo version; UAT on a staging copy of your production database; then go-live with a rollback plan. Complex integrations (guard-tour hardware, biometric clocks, a client portal) can extend that window, and we say so before you commit.

Does this need Odoo Enterprise, or will it run on Community?

The core — sites, posts, rostering, reliefs, patrol and incident logs, billing — runs on Odoo Community. Two areas depend on Enterprise: the payslip-input integration relies on the Enterprise payroll app, and Gantt-style roster views come from Enterprise web widgets. On Community we deliver a payroll export in your provider's format instead of payslip input, and list/kanban/calendar roster views instead of Gantt. We confirm your edition during scoping so there are no surprises.

What support and updates do I get after go-live?

Delivery includes a post-go-live support window for defect fixes and configuration adjustments within the agreed scope. Because you receive the full source and a private git repository with commit history, your own team or any other Odoo partner can maintain it — you are not locked in. Ongoing enhancement work, additional sites or contract models beyond the delivered scope, and migration to a future Odoo major version are quoted separately; we include upgrade notes so that migration is planned, not archaeology.

Can it connect to our existing guard-tour devices or biometric clocks?

Yes, where the device exposes an API or an exportable file. The module leaves Odoo's XML-RPC and JSON-RPC endpoints open, so checkpoint scans and clock-in events can be posted directly into security.patrol.log and hr.attendance from external hardware or middleware. During scoping we review your specific device and confirm whether it is a direct API integration, a scheduled file import, or a middleware job — that determination affects the quotation, so we do it before quoting, not after.

How does billing handle a post that was not covered?

Uncovered hours are recorded, not hidden. Every shift carries a state and, if unfilled or relieved, a coded reason. The billing engine then applies your contract's rule: some contracts bill the fixed monthly rate regardless, others deduct uncovered hours at the post's rate, others apply a penalty. Each generated invoice comes with a QWeb backup schedule listing shifts billed, so the client sees the same arithmetic you do.

Will this conflict with modules we already have installed?

We audit your installed apps and any existing customisations before writing code. The module extends standard models (res.partner, hr.employee, hr.attendance, account.move) rather than replacing them, and we test on a staging copy of your real database — with your real module set — during UAT precisely to catch conflicts before production. If an existing module already owns part of this territory, we tell you during scoping whether to extend it or replace it.

Which Odoo versions are supported?

We build for Odoo 17.0, 18.0 and 19.0. You get a build targeting the exact series you run in production — we do not ship a single codebase with version branches, because that ages badly. If you are mid-upgrade, tell us during scoping and we will target the version you will be on at go-live.

Demander un devis

Security Guard Services Management

A build-to-order Odoo module for guarding companies that turns client sites, posts and shift patterns into a rostered schedule, captures patrol and incident logs against real guard attendance, and converts those hours into payroll input and contract invoices. ECOSIRE scopes, builds, installs and supports it on your Odoo 17, 18 or 19 database.

  • security.site model with client partner, geolocation, site instructions, contract reference and document attachments
  • security.post definitions per site: shift pattern, required headcount, guard grade, armed/unarmed flag and rate basis
  • Roster generator that expands post requirements into dated security.shift records over any horizon, with weekly/rotating pattern support
  • Assignment constraints in Python that block double-booking a guard across overlapping shifts and reject guards without a valid licence for the post type

Demander un devis

Décrivez vos besoins pour Security Guard Services Management et nous vous enverrons les tarifs, les options de licence et une proposition sur mesure, généralement sous un jour ouvré.

Aucun paiement maintenant. Ceci envoie une demande de devis à notre équipe — nous vous recontacterons par e-mail avec les tarifs et les prochaines étapes.