Click any table to see what it holds
docs/DATA_MODEL.md for full cross-database relationship mapping.m_bom_line.child_product_id → M_Product → M_Product_Image [geometry_hash] → component_geometries [mesh BLOB]C_DocType.DocSubType = WHO (DX = Duplex, SH = SampleHouse, TB = TerraceBlock)AABB = HOW BIG (width × depth × height in mm)DocStatus='DR' (Draft) and moves to 'CO' (Complete) after compilation.C_DocType_ID → C_DocType (in {PREFIX}_BOM.db). DocBaseType drives template selection (RE→Residential). DocSubType scopes which BOMs are visible (SH/DX/TB).C_BPartner in iDempiere = the customer who placed the order (contractor, architect, client). Present at release.M_BOM from the catalog. No placement columns — HOW is in PP_Order_Node, WHERE is in co_empty_space_line.M_BOM → M_BOM_Line → child M_BOM → ... recursively.dx/dy/dz (offset from parent), rotation_rule (abstract, e.g. FACE_INTO_ROOM),
SpaceSize (AABB of this construct), BOMCategory (RE/L1/L2/SL/RF/GF/FR/ST).M_BomCategoryLine tree (RE→SL/GF/RF, GF→LI/BD/DN/KT/BT) to select best-fit BOMs from the
full catalog using only the building AABB + num_units. No pre-wired C_OrderLine needed.GF selection owner (e.g. SH) then resolves the UNIT BOM and feeds CO_EmptySpace L2 lines.CO directly — ProveStage is skipped.is_available = Y throughout processing. Flips to N ONLY after translation
to output + all witness tests GREEN. If tests fail → stays Y, space not consumed.before/next = GPD anchor chain in mm (before is entry point, next is exit for the next item).orientation_rad = resolved concrete angle (FACE_INTO_ROOM → π for north-wall rooms).remaining_mm = buffer still available (queryable: "does a 300mm lampshade fit here?").PP_Order_Node by SeqNo. Each verb invocation targets an ESLine (S_Resource workstation) and produces IFC elements.dx/dy/dz, rotates it by
orientation_rad, then adds the CO_EmptySpaceLine.before anchor to get world coordinates.M_Product_Image + LOD_Object in component_library.db.elements_meta — final IFC elements: guid, ifc_class, storey, world xyz.element_instances — geometry transform matrix + material (resolved from component_library).element_assemblies — parent/child grouping for IFC IfcRelAggregates.co_empty_space.is_available = N (space consumed, construction confirmed).is_available stays Y, output is rolled back.
| Item | BOM dx,dy (abstract) | + | ESL origin (208,−5246,0) | → | world_xyz |
|---|---|---|---|---|---|
| Piano | 0, 0 | rotate(π) | 208, −5246, 0 | → | 208, −5246, 0 |
| Sofa | 1500, 0 | rotate(π) | 208, −5246, 0 | → | −1292, −5246, 0 |
| Buffer_NW | 3500, 0 | — | 254mm remaining | → | (no geometry) |