Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 115 additions & 0 deletions product_classification/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

======================
Product Classification
======================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e8ded931b142bf8f53598f2f9c4b26667a87b7caf8e3d10196d1220ebea7e063
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-qrtl%2FOCJ Custom-lightgray.png?logo=github
:target: https://github.com/qrtl/OCJ Custom/tree/19.0/product_classification
:alt: qrtl/OCJ Custom

|badge1| |badge2| |badge3|

This module adds classification master data to products so equipment and
consumables can be categorized consistently.

Each product can be flagged as **equipment** or **consumable** (*Product
Kind*) and linked to a **Manufacturer** (メーカー), then given a
classification:

- **Equipment Classification** (機器分類), with an **Equipment
Sub-Classification** (機器分類サブ) for auxiliary devices.
- **Consumable Classification** for consumable products.

Products can also be given a **Middle Category** (中分類) and a **Minor
Category** (小分類).

Each axis is backed by a dedicated, user-maintainable model holding a
name and an optional code (a numeric code is preferred for integration
with external systems). Several fields feed the **Navi in Flow**
(ナビフロー) integration, which exchanges product/equipment master data
with the CIAS system.

**Table of contents**

.. contents::
:local:

Configuration
=============

The module ships the classification models and configuration UI with
only a small set of sample equipment classifications, so the taxonomy
can be tailored to each deployment (for example through a
company-specific data module or the external integration).

To maintain the available classifications:

1. Go to *Inventory > Configuration > Products* and open *Equipment
Classifications*, *Equipment Sub-Classifications*, *Consumable
Classifications*, *Middle Categories*, *Minor Categories* or
*Manufacturers*.
2. Create the entries with a name and, preferably, a numeric code.

Usage
=====

To classify a product:

1. Open a product and go to the *Classification* tab.
2. Set the **Product Kind** (equipment or consumable), the
**Manufacturer** and the relevant classification. The equipment or
consumable classification fields appear according to the selected
kind.

Products can be searched and filtered by manufacturer and classification
from the product list view.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/qrtl/OCJ Custom/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/qrtl/OCJ Custom/issues/new?body=module:%20product_classification%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Quartile

Maintainers
-----------

.. |maintainer-yostashiro| image:: https://github.com/yostashiro.png?size=40px
:target: https://github.com/yostashiro
:alt: yostashiro

Current maintainer:

|maintainer-yostashiro|

This module is part of the `qrtl/OCJ Custom <https://github.com/qrtl/OCJ Custom/tree/19.0/product_classification>`_ project on GitHub.

You are welcome to contribute.
1 change: 1 addition & 0 deletions product_classification/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
28 changes: 28 additions & 0 deletions product_classification/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright 2026 Quartile (https://www.quartile.co)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
{
"name": "Product Classification",
"version": "19.0.1.0.0",
"category": "Inventory/Inventory",
"website": "https://www.quartile.co",
"author": "Quartile",
"maintainers": ["yostashiro"],
"license": "LGPL-3",
"summary": "Classify products (equipment / consumable) with manufacturer "
"and classification master data",
"installable": True,
"depends": ["stock"],
"data": [
"security/ir.model.access.csv",
"data/product_equipment_classification_data.xml",
"data/product_middle_category_data.xml",
"data/product_minor_category_data.xml",
"views/product_equipment_classification_views.xml",
"views/product_equipment_classification_sub_views.xml",
"views/product_consumable_classification_views.xml",
"views/product_middle_category_views.xml",
"views/product_minor_category_views.xml",
"views/product_manufacturer_views.xml",
"views/product_template_views.xml",
],
}
123 changes: 123 additions & 0 deletions product_classification/data/product_equipment_classification_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record
id="product_equipment_classification_hot_concentrator"
model="product.equipment.classification"
>
<field name="name">HOT / Concentrator</field>
<field name="code">1</field>
<field name="sequence">10</field>
</record>
<record
id="product_equipment_classification_hot_liquid_oxygen"
model="product.equipment.classification"
>
<field name="name">HOT / Liquid Oxygen</field>
<field name="code">2</field>
<field name="sequence">20</field>
</record>
<record
id="product_equipment_classification_hot_cylinder"
model="product.equipment.classification"
>
<field name="name">HOT / Cylinder</field>
<field name="code">3</field>
<field name="sequence">30</field>
</record>
<record
id="product_equipment_classification_mv"
model="product.equipment.classification"
>
<field name="name">MV / In-hospital &amp; Home</field>
<field name="code">5</field>
<field name="sequence">40</field>
</record>
<record
id="product_equipment_classification_cpap"
model="product.equipment.classification"
>
<field name="name">CPAP</field>
<field name="code">7</field>
<field name="sequence">50</field>
</record>
<record
id="product_equipment_classification_asv"
model="product.equipment.classification"
>
<field name="name">ASV</field>
<field name="code">10</field>
<field name="sequence">51</field>
</record>
<record
id="product_equipment_classification_hit"
model="product.equipment.classification"
>
<field name="name">HIT</field>
<field name="code">8</field>
<field name="sequence">60</field>
</record>
<record
id="product_equipment_classification_pulse_oximeter"
model="product.equipment.classification"
>
<field name="name">Pulse Oximeter</field>
<field name="code">21</field>
<field name="sequence">70</field>
</record>
<record
id="product_equipment_classification_pca_pump"
model="product.equipment.classification"
>
<field name="name">PCA Pump</field>
<field name="code">22</field>
<field name="sequence">80</field>
</record>
<record
id="product_equipment_classification_ultrasonic_bone_healing"
model="product.equipment.classification"
>
<field name="name">Ultrasonic Bone Healing Device</field>
<field name="code">23</field>
<field name="sequence">90</field>
</record>
<record
id="product_equipment_classification_cough_assist"
model="product.equipment.classification"
>
<field name="name">Cough Assist Device</field>
<field name="code">24</field>
<field name="sequence">100</field>
</record>
<record
id="product_equipment_classification_high_flow_therapy"
model="product.equipment.classification"
>
<field name="name">High-Flow Therapy</field>
<field name="code">25</field>
<field name="sequence">110</field>
</record>
<record
id="product_equipment_classification_other_medical"
model="product.equipment.classification"
>
<field name="name">Other Medical Equipment</field>
<field name="code">9</field>
<field name="sequence">120</field>
</record>
<record
id="product_equipment_classification_other_aux"
model="product.equipment.classification"
>
<field name="name">Other (Auxiliary Device)</field>
<field name="code">90</field>
<field name="sequence">130</field>
</record>
<record
id="product_equipment_classification_portable_oxygen"
model="product.equipment.classification"
>
<field name="name">Portable Oxygen</field>
<field name="code">20</field>
<field name="sequence">140</field>
</record>
</odoo>
42 changes: 42 additions & 0 deletions product_classification/data/product_middle_category_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="product_middle_category_own_use" model="product.middle.category">
<field name="name">Own Use</field>
</record>

<record id="product_middle_category_teijin_use" model="product.middle.category">
<field name="name">Teijin Use</field>
</record>

<record id="product_middle_category_non_teijin" model="product.middle.category">
<field name="name">Non-Teijin</field>
</record>

<record id="product_middle_category_hot" model="product.middle.category">
<field name="name">HOT</field>
</record>

<record id="product_middle_category_cpap" model="product.middle.category">
<field name="name">CPAP</field>
</record>

<record id="product_middle_category_asv" model="product.middle.category">
<field name="name">ASV</field>
</record>

<record id="product_middle_category_nip" model="product.middle.category">
<field name="name">NIP</field>
</record>

<record id="product_middle_category_hft" model="product.middle.category">
<field name="name">HFT</field>
</record>

<record id="product_middle_category_imv" model="product.middle.category">
<field name="name">IMV</field>
</record>

<record id="product_middle_category_medical_gas" model="product.middle.category">
<field name="name">Medical Gas</field>
</record>
</odoo>
47 changes: 47 additions & 0 deletions product_classification/data/product_minor_category_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<record id="product_minor_category_travel_support" model="product.minor.category">
<field name="name">Travel Support</field>
</record>

<record id="product_minor_category_examination" model="product.minor.category">
<field name="name">Examination</field>
</record>

<record id="product_minor_category_patient_care" model="product.minor.category">
<field name="name">Patient Care Outsourcing</field>
</record>

<record id="product_minor_category_disposal_cost" model="product.minor.category">
<field name="name">Disposal Cost</field>
</record>

<record
id="product_minor_category_mask_cushion_headgear"
model="product.minor.category"
>
<field name="name">Mask / Cushion / Headgear</field>
</record>

<record id="product_minor_category_tube" model="product.minor.category">
<field name="name">Tube</field>
</record>

<record id="product_minor_category_humidair_filter" model="product.minor.category">
<field name="name">HumidAir / Filter</field>
</record>

<record
id="product_minor_category_cannula_cylinder_accessories"
model="product.minor.category"
>
<field name="name">Cannula / Cylinder Accessories</field>
</record>

<record
id="product_minor_category_liquid_oxygen_cylinder"
model="product.minor.category"
>
<field name="name">Liquid Oxygen / Cylinder</field>
</record>
</odoo>
Loading
Loading