ots_whise_odoo_migration. It imports WHISE estates, pictures and documents from three semicolon-separated UTF-8 CSVs into Propty.
Property-level fields: WHISE import fields.
This is not a live WHISE API sync. It is a batch CSV importer (UI: WHISE-imports, group real_estate.group_realestate_manager).
Batch models
Batch
state keys: draft, ready, running, storage_full, done, done_errors, cancelled.
Estate line state keys: pending, done, skipped, conflict, error.Estate line
operation keys: create, update, link.
Picture/document line state keys: pending, done, skipped, error.
Identifiers
Upsert: search by those ids before create. If a property has the same normalized
whise_address_key and no whise_estate_id, the importer links (operation = link) instead of creating a duplicate.
Estate CSV → property fields
Requiredestates.csv columns: EstateId, StatusId, Address1, Number, Zip, Box, City, UpdateDate.
Numeric sentinel
-1002 is treated as empty.
Child lines (only if the property has none yet)
Pictures & documents
pictures.csv: PictureId, EstateId, Url, Order, Public. Public → real_estate.image (sequence = Order * 10). Private → ir.attachment unless skipped.
documents.csv: DocumentId, EstateID (capital D), Url, Public, Filename. Filename keywords set certificate flags (has_epc_certificate, has_asbestos_certificate, …) and the matching *_attachment_id.
Representative / dossierverantwoordelijke
RepresentativeId is not stored as a WHISE id. The importer looks up res.users by name or partner_id.name (=ilike). On a unique match it writes responsible_realtor_id.
Read a raw CSV row after import
payload is the full estate CSV row as JSON.
