### Handled at the master level Tenants: - Tenant 000000: Master Tenant - Tenant: 000001 - zzzzzz (all other tenants) - Tenant Name - Tenant ID - Tenant Description - Tenant Email (primary contact) - Tenant Phone (primary Contact) ### Handled at the Tenant Level: #### Tenant Locations: Any locations defined through a parent - child hierarchy. This can best reflect the actual structure of any location where assets may be located ``` location { _id: location_id, # req tenant_id: tenant_id, # req loc_name: location_name, # req loc_desc: location_description, loc_type: code_table, # req loc_info: { location_info }, loc_is_child: t/f, # req loc_parent_id: location_id, } ``` __Code Table: location type__ ``` location_types: { _id: loc_type_id loc_type: type, tenant_id: tenant_id, } ``` __Code Table: location info__ ``` location_details: { _id: loc_detail_id, tenant_id: tenant_id, loc_type: type_id, loc_detail: detail1, loc_detail_type: (text, number, t/f, select), loc_detail_sel_options: { option: option1, option: option2, } } ``` ---- ### Assets An asset is any item, whether permanent fixture, high dollar equiprment, consumable requiring inventory and replenishment, or otherwise. ``` item: { _id: item_id, tenant_id: tenant_id, location_id: location_id, location_path: path / separated / out, item_name: item name, item_desc: item desc, images: { image_name: image name, image_storage_location: path to image, } item_qty: qunatity, item_type: code_table, expiration_date: item_expires createdDate: new Date(), createdBy: user_id, modified: { modified_on: new Date(), modified_by: user_id, modified_reason: text_input, }, item_archived: t/f, item_archive_info: { archived_on: new Date(), archived_by: user_id, archive_reason: text_input, }, item_deleted: t/f, item_delete_info: { deleted_on: new Date(), deleted_by: user_id, deleted_reason: text_input, }, item_dispo_info: { item_dispo: code_table, dispo_date: new Date(), dispo_by: user_id, dispo_reason: text_input, dispo_description: text_input, }, item_barcode: barcode detail (autogenerate 1d), item_req_inspection: t/f item_req_inventory: t/f item_cost: number, item_value: number, item_type_attributes: { item_attribute: { attribute: entry_type, attribute: entry_type, }, item_attribute: { attribute: entry_type, attribute: entry_type, }, }. is_parent_of_multipart_asset: t/f is_part_of_multipart_asset: t/f multipart_asset_parent_id } ``` __Code Table: Asset Types__ ``` asset_types: { _id: asset_type_id, tenant_id: tenant_id: asset_type_name: name, assett_type_desc: asset_type_description, asset_type_req_more_details: t/f } ``` __Code Table: Asset Type Details__ ``` asset_type_details: { _id: asset_type_details_id, asset_type_id: asset_type_id, tenant_id: tenant_id, detail: detail_to_collect, field_type: number, text, t/f, select, asset_type_detail_sel_options: { option: option1, option: option2, } } ``` __Code Table: Asset Disposition__ ``` asset_dispoitions: { _id: dispo_id, tenant_id: tenant_id, disposition: disposition, is_final: is_a_final_dispo (t/f), archive_with_this_disp: t/f, } ``` __Code Table: Asset Inspection Types__ ``` asset_inspection_type: { _id: inspection_id, tenant_id: tenant_id, insp_type_name: name } ``` __Code Table: Asset Inspection Options__ ``` asset_inspection_name: { _id: inspection_id, tenant_id: tenant_id, insp_name: name, insp_type: item_inspection_id } ``` __Code Table: Asset Attribute__ ``` asset_attribute_name: { _id: attribute_id, tenant_id: tenant_id, attribute_name: name, # e.g. color, texture, etc attribute_req: t/f, attribute_applies_to_asset_types: } ``` ---- ## Asset Inspections Inspection Type Inspection Steps - Step Type (e.g. pass, fail, measure, grade, etc) - Step instructions - Observations - Evidence (images, notes, video, data, etc.) Multi-part Asset Inspection? Signature of completion Signature of acceptance Signature of reviewer Singature of secondary inspectors ---- ## Asset Inventory ---- ## Asset Movements Movements covers a wide array of actions, including but not limited to moving an item from 1 place to another, moving an item in a way that the item is used up (e.g. using a needle, flex-cuff, etc), movement for destruction, movement for retirement, etc. These types can be defined by the tenant. #### Movement Record ``` asset_movement: { _id: asset_move_id, tenant_id: tenant_id, asset_id: asset_id, movement_type: movement_type_id, movement_end } ``` ``` movement_type: { _id: movement_id, tenant_id: tenant_id, movement_name: name, movement_desc: description, req_end_location: t/f, req_usage_qty: t/f, } ``` ---- ##