About this project
This project will add the possibility to change attribute values during the stock life cycle in a controlled way. It will be available directly in the Advanced Warehouse Operations module.
The internal API is heavily based on Referenced Inventory framework, so it will depend on 3.0PR18Q2 (or above).
The attribute-set in Openbravo contains two types of attributes:
- Indentifying attributes: These are the attributes in the header of the Attribute-Set: Lot, Serial# and Expiry date. As they identify the stock, they are not allowed to change.
- Describing attributes: These are the attributes in the aggregated list (details) of the Attribute-Set. These describe the stock in a specific moment in time.
Openbravo (until version 18Q1) doesn't allow to modify attribute values during the stock's life cycle. The front-end of the Advanced Warehouse Operations module allows to change the descriptive attributes, with the restriction (or functional limitation) that this change is valid for all Storage Details that point to the related Attrribute-Set-Instance. This behavior is usually the expected one in most of the cases, however there are some industries where allowing to change attribute values is very important.
As from version 18Q2, Openbravo allows to change the descriptive attributes in a controlled way and automatically creates new Atrribute-Set-Instances when this happens for a partial quantity of the storage detail.
Let's see an use case:
A central warehouse stores frozen fish. Let's imagine the Lot for a case of 5 boxes of frozen fish is L12345.
When the fish is received, the temperature is -100ºC, so the warehouse operator registers this temperature in the Temperature attribute. Now the attribute set instance linked to this storage detail is "-100ºC L12345"
Now the whole case is moved to another area, and the temperature has increased to -50ºC. The operator now registers the new temperature while confirming the movement of the case. There are two options to maintain traceability:
- Using a second Temperature attribute, it can either concatenate the new temperature to the old one so the attribute set instance would be "-100ºC-50ºC L12345", or alternatively...
- Using the same Temperature attribute, he can overwrite the temperature value so the attribute set instance would be "-50ºC L12345". In this case the traceability function on the table Attribute Set Instance should be activated.
Now a single box from the case is moved to another area, and the temperature has increased to -50ºC. The operator now registers the new temperature while confirming the movement of the box. In this case, the single box receives a (link to the) newly created Attribute Set Instance, which is a copy of the original but with the temperature attribute set to -50ºC.
Configuring Updatable Attributes
Only from the Advanced Warehouse operations front-end, attributes can be updated, if the flag 'updateble' if that attributre is true. Any existing attribute created before installing this feature will be automatically configured as non-updatable.
To declare attribute as updatable, the user should set to Yes the Updatable flag available at the Attribute window. This flag is only available when the attribute is declared as Instance Attribute which, with Advanced Warehouse Operation Module, is defaulted to Yes and Read-Only.
If you want to work with non-Instance Attributes it's highly recommended to use Product Characteristic instead
Updatable attributes can be either List attributes or Normal attributes.
As any other attribute it must be linked to an Attribute Set and then to a concrete product(s).
How to change the attribute value
Attribute value changes can only be performed from the AWO front-end when confirming a task. The back-end doesn't support yet attribute changes yet. It is expected to support it in the future, but requires a refactor in the attribute selector.
The front-end will allow to edit an attribute value only if the attribute is declared as updatable and only in particular flows where a goods movement is performed behind the scenes. These are the following flows:
- Distribution Order Issue;
- Distribution Order Receipt;
- Deviate Inspection;
- Deviate X-Docking.
An attribute change is not allowed when:
- The stock is within a referenced inventory. In this case it's necessary to unbox the stock, change the attribute value, and then box if required.
- A box/unbox action is going to be performed. In this case it is required to run to separate steps: box/unbox and the attribute change.
- Goods Issue for sales/factory. In this movement, stock is removed (issued) from the system. Any attribute change must be performed before the issue itself to register it into the system
Please note that lot, serial# and expiration date are by definition non-updatable attributes. In case of mistakes while entering the value of any of those attribute, you must run a physical inventory to set the affected stock to zero, and another physical inventory to set the new attribute values.