diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products.rst b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products.rst index 849d3e61c..080bfd66d 100644 --- a/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products.rst +++ b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products.rst @@ -2,34 +2,58 @@ Inventory adjustments ===================== +.. |Ia| replace:: Inventory adjustments +.. |ia| replace:: inventory adjustments + In any warehouse management system, the recorded inventory counts in the database might not always -match the actual inventory counts in the warehouse. The discrepancy between the two counts can be -due to damages, human errors, theft, or other factors. As such, inventory adjustments must be made -to reconcile the differences, and ensure that the recorded counts in the database match the actual +match the actual inventory counts in the warehouse. Discrepancy between counts can be due to +damage, human error, theft, or other factors. As such, inventory adjustments must be made to +reconcile the differences, and ensure that the recorded counts in the database match the actual counts in the warehouse. -.. _inventory/inventory-adjustments-page: +.. important:: + Only users with *Administrator* rights in the **Inventory** app can apply inventory adjustments. + Those with *User* rights can complete :ref:`counts `, though the + adjustment **must** be verified and :ref:`applied ` by a manager. Inventory Adjustments page ========================== -To view the *Inventory Adjustments* page, navigate to :menuselection:`Inventory app --> Operations ---> Physical Inventory`. +To view the :guilabel:`Inventory Adjustments` page, navigate to :menuselection:`Inventory app --> +Operations --> Physical Inventory`. .. image:: count_products/inventory-adjustments-page.png :alt: In stock products listed on the Inventory adjustments page. -In the :guilabel:`Inventory Adjustments` table, all products that are currently in stock are listed, -with each product line containing the following information: +The :guilabel:`Inventory Adjustments` page lists all products that are currently in stock. -- :guilabel:`Location`: the specific location in the warehouse where a product is stored. This field - needs to be enabled my going to :menuselection:`Inventory app --> Configuration --> Settings` and - ticking the :guilabel:`Storage Locations` checkbox. +.. note:: + Only products with a quantity greater than zero are listed on the :guilabel:`Inventory + Adjustments` page. To view product lines with zero current quantity, go to + :menuselection:`Inventory app --> Reporting --> Stock`. + +For each product line, the following information is listed: + +- :guilabel:`Location`: the specific location in the warehouse where a product is stored. This + column is **only** visible if :doc:`Storage Locations ` are enabled. +- :guilabel:`Favorite`: identifies products that have been favorited. - :guilabel:`Product`: the product whose quantity is listed on the inventory adjustment line. - :guilabel:`Lot/Serial Number`: the tracking identifier assigned to the specific product listed. It can contain letters, numbers, or a combination of both. -- :guilabel:`UoM`: the *unit of measure* in which the product is measured. Unless otherwise - specified (i.e., in :guilabel:`Pounds` or :guilabel:`Ounces`), the default :abbr:`UoM (Unit of + +.. note:: + If a specific product has a quantity of more than `1.00` in stock, and more than one serial + number, or lot number, assigned to it, each uniquely-identified product is displayed on its own + product line with its own lot/serial number, displayed under the :guilabel:`Lot/Serial Number` + column. + +- :guilabel:`Expiration Date`: the date on which the goods with this serial number are due to + expire. +- :guilabel:`Last Count Date`: the last time the quantity was updated. +- :guilabel:`Package`: the package containing the quantity listed. +- :guilabel:`On Hand Quantity`: the quantity of the product currently recorded in the database. +- :guilabel:`Unit`: the *unit of measure* in which the product is measured. Unless otherwise + specified (e.g., in :guilabel:`Pounds` or :guilabel:`Ounces`), the default :abbr:`UoM (Unit of Measure)` is :guilabel:`Units`. - :guilabel:`Counted Quantity`: the real quantity counted during an inventory count. This field is left blank by default but can be changed, depending on if it matches the :guilabel:`On Hand @@ -37,62 +61,40 @@ with each product line containing the following information: - :guilabel:`Difference`: the difference between the :guilabel:`On Hand Quantity` and :guilabel:`Counted Quantity`, once an inventory adjustment is made. The difference is automatically calculated after every inventory adjustment. - -.. note:: - If a specific product has a quantity of more than `1.00` in stock, and more than one serial - number (or lot number) is assigned, each uniquely-identified product is displayed on its own - product line with its own lot/serial number, under the :guilabel:`Lot/Serial Number` column. - -The fields below are optional and can be made visible by clicking the :icon:`oi-settings-adjust` -:guilabel:`(settings)` icon in the top right of the :guilabel:`Inventory Adjustments` page. - -- :guilabel:`Inventory Frequency (Days)`: the frequency, in days, for inventory counts. The default - value of this field is set to `0`. -- :guilabel:`Favorite`: adds a clickable star icon next to each product. Adding a favorite will - bring the line item to the top of the dashboard. -- :guilabel:`Product Category`: the category assigned internally to a specific product. Unless - otherwise specified (i.e., as :guilabel:`Consumable` or :guilabel:`Rental`), the default *Product - Category* is set to :guilabel:`All`. -- :guilabel:`Expiration Date`: the date a product will expire, if it is a perishable good. Only - products that are tracked using lots and serial numbers can be assigned expiration information. -- :guilabel:`Last Count Date`: the date on which the last inventory count occurred. -- :guilabel:`Available Quantity`: the quantity of a specific product that is currently available, - based on any outstanding/uncompleted sales orders, purchase orders, or manufacturing orders that - might change the available quantity once fulfilled. -- :guilabel:`On Hand Quantity`: the quantity of the product currently recorded in the database. -- :guilabel:`Accounting Date`: the date on which the adjustments will be accounted for in the Odoo - **Accounting** app. - :guilabel:`Scheduled Date`: the date at which a count should be made. If not otherwise specified, - this date defaults to the 31st of December of the current year. + this date will default to the 31st of December of the current year. - :guilabel:`User`: the person assigned to the count in the database. This can either be the person physically counting the inventory, or applying the count in the database. -- :guilabel:`Company`: the company whose database these inventory adjustments are being made on. The - company is listed in the top-right corner of the database, next to the user currently logged in. .. tip:: - Some columns are hidden by default. To reveal these columns, click the - :icon:`oi-settings-adjust` :guilabel:`(settings)` icon to the far right of the form's top row, - and select any desired column to reveal by clicking the checkbox next to that option. + Additional columns are hidden by default. To reveal these columns, click the + :icon:`oi-settings-adjust` :guilabel:`(adjust)` icon to the far right of the form's top row, and + reveal any desired column by ticking the checkbox next to that option. -.. seealso:: - - :doc:`Product type <../../product_management/configure/type>` - - :doc:`Tracking with lots, serial numbers, and expiration dates - <../../product_management/product_tracking>` +.. _inventory/create-adjustment: Create an inventory adjustment ------------------------------ -To create a new inventory adjustment from the :ref:`Inventory Adjustments -` page, click :guilabel:`New`. Doing so creates a new, blank -inventory adjustment line at the bottom of the page. +To create a new inventory adjustment from the :menuselection:`Inventory Adjustments` page, click +:guilabel:`New`. Doing so creates a new, blank inventory adjustment line at the bottom of the page. -On this blank inventory adjustment line, define the :guilabel:`Location` where the product is -stored. This is necessary to ensure the accuracy of the inventory adjustment, as the same product -can be stored in multiple locations. +.. tip:: + |Ia| can also be created from the :guilabel:`Forecasted Report` on an individual + product record. To open the report, navigate to a product record and click the + :guilabel:`Forecasted` smart button. Then, at the top of the page, click :guilabel:`Update + Quantity`, then :guilabel:`New`. -Next, click the drop-down menu under the :guilabel:`Product` column, and select a product. If the -selected product is tracked using either lots or serial numbers, the desired lot or serial number -can also be chosen from the drop-down menu under the :guilabel:`Lot/Serial Number` column. + .. image:: count_products/forecast-report.png + :alt: The Update Quantities button on a Forecast report in the Inventory app. + +On this blank inventory adjustment line, click the drop-down menu under the :guilabel:`Product` +column, and select a product. If the selected product is tracked using either lots or serial +numbers, the desired lot or serial number needs to be chosen from the drop-down menu under the +:guilabel:`Lot/Serial Number` column. + +.. tip:: + The inventory adjustment line can also be used to create or record lots and serial numbers. Next, set the value in the :guilabel:`Counted Quantity` column to the quantity counted for that product during the inventory adjustment process. @@ -101,7 +103,7 @@ To the right of the :guilabel:`Counted Quantity` column, the :guilabel:`Schedule :guilabel:`User` can also be changed via their respective drop-down menus. Changing the :guilabel:`Scheduled Date` changes the date that the inventory adjustment should be processed on, and selecting a responsible :guilabel:`User` assigns a user to the specific inventory adjustment -(for traceability purposes). +for traceability purposes. Once all changes have been made to the new inventory adjustment line, click away from the line. Doing so saves the adjustment, and moves the line to the top of the page. @@ -109,7 +111,7 @@ Doing so saves the adjustment, and moves the line to the top of the page. If the :guilabel:`Counted Quantity` is greater than the :guilabel:`On Hand Quantity`, the value in the :guilabel:`Difference` column is **green**. If the :guilabel:`Counted Quantity` is less than the :guilabel:`On Hand Quantity`, the value in the :guilabel:`Difference` column is **red**. If the -quantities match, and haven't been changed at all, no value appears in the :guilabel:`Difference` +quantities match, and have not been changed at all, no value appears in the :guilabel:`Difference` column. .. image:: count_products/difference-column.png @@ -119,18 +121,20 @@ At this stage, the count (:dfn:`inventory adjustment`) is recorded, but not yet that the quantity on hand before the adjustment has not yet been updated to match the new, real counted quantity. -There are two ways to apply the new inventory adjustment. The first way is to click the -:icon:`fa-save` :guilabel:`Apply` button on the line at the far right of the page. The second way is -to click the checkbox on the far left of the line. Doing so reveals new button options at the top of -the page, one of which is an :guilabel:`Apply` button. Clicking this button instead causes an +.. _inventory/apply-adjustment: + +Apply adjusted count +-------------------- + +|Ia| can be completed in several ways. The first way is to click the +:guilabel:`Apply` button on the line at the far right of the page. The second way is to tick the +checkbox on the far left of the line. Doing so reveals new button options at the top of the page, +one of which is an :guilabel:`Apply` button. Clicking this button instead causes an :guilabel:`Inventory Adjustment` pop-up window to appear. -.. image:: count_products/apply-inventory-adjustment.png - :alt: Apply all option applies the inventory adjustment once a reason is specified. - From this pop-up menu, a reference or reason can be assigned to the inventory adjustment. By -default, the :guilabel:`Inventory Reason` field is pre-populated with the date the adjustment is -being made on, but can be changed to reflect whatever reference or reason is desired. +default, the :guilabel:`Inventory Reason` field is pre-populated with today's date, the date the +adjustment is being made on, but can be changed to reflect whatever reference or reason is desired. Once ready, click :guilabel:`Apply` to apply the inventory adjustment. @@ -138,33 +142,50 @@ Once ready, click :guilabel:`Apply` to apply the inventory adjustment. Applying an inventory adjustment simultaneously creates a :doc:`stock move line (SML) <../reporting/moves_history>` in the *Moves History* report for traceability. -.. tip:: - Sometimes products end up in unexpected or incorrect locations. To quickly move a product to a - different storage location, check the box next to the product, and click the :guilabel:`Relocate` - button at the top of the :ref:`Inventory Adjustments ` - page. +.. image:: count_products/apply-inventory-adjustment.png + :alt: Apply all option applies the inventory adjustment once a reason is specified. + +Relocate products +================= + +|Ia| can also be used to relocate products to different storage locations, or to +different packages. To relocate a product, tick the checkbox at the far left of the line for the +desired product. At the top of the page, click the :guilabel:`Relocate` button. Doing so opens a +pop-up. + +.. image:: count_products/relocate-popup.png + :alt: The Relocate products pop-up on the Inventory Adjustments page. + +On the resulting pop-up, enter the following information: + +- :guilabel:`To Location`: the new location for the products. +- :guilabel:`To Package`: the new package for the products. +- :guilabel:`Reason for relocation`: the reason for the move. + +.. important:: + Product relocations **only** work on internal locations. Products **cannot** be moved between + companies. + + Only users with *Administrator* rights can perform product relocations. + +Set to zero +=========== + +|Ia| can also be used to clear inventory counts by setting the quantity to zero. To do this, tick +the checkbox at the far left of the line for the desired product. At the top of the page, click the +:icon:`fa-gear` :guilabel:`Actions` button to open a drop-down menu. Click :guilabel:`Set to 0`. +Once this is complete, :ref:`apply ` the adjusted count. Count products ============== -Counting products (or stock-taking) is a recurring warehouse process to verify the physical quantity -of items against internal inventory records. The values recorded on file versus what is actually -counted in real life sometimes do not match, so inventory adjustments can be made on the *Inventory -Adjustments* dashboard. - -Once a count is complete, go to :menuselection:`Inventory app --> Operations --> Physical Inventory` -to verify and update product :guilabel:`Count Quantities`, as it is necessary to do so. - -.. tip:: - To print a PDF of a count sheet, first select the desired product checkboxes, and then click the - :icon:`fa-print` :guilabel:`Print` button that appears at the top of the dashboard. Then, select - the :guilabel:`Count sheet` option in the sub-menu, which will download a PDF detailing the - selected products. +Counting products is a recurring activity in a warehouse. Once a count is complete, go to +:menuselection:`Inventory app --> Operations --> Physical Inventory` to update the +:guilabel:`Counted Quantity` column for each product line. On each product line, identify whether the value in the :guilabel:`On Hand Quantity` column recorded in the database matches the newly-counted value. If the recorded value and the counted value do -match, select the product using the checkbox, click the :guilabel:`Actions` button, then -:guilabel:`Set to quantity on hand`. +match, click the :icon:`fa-bullseye` :guilabel:`Set` icon at the far right of the product line. Doing so copies the value from the :guilabel:`On Hand Quantity` column over to the :guilabel:`Counted Quantity` column, and sets the value of the :guilabel:`Difference` column to @@ -175,8 +196,8 @@ recorded in the product's inventory adjustment history. :alt: Zero count inventory adjustment move. If the newly-counted value for a given product does **not** match the value in the :guilabel:`On -Hand Quantity` recorded in the database, instead of clicking the :guilabel:`Set` button, record the -real value in the field in the :guilabel:`Counted Quantity` column. +Hand Quantity` recorded in the database, instead of clicking the :icon:`fa-bullseye` :guilabel:`Set` +icon, record the real value in the field in the :guilabel:`Counted Quantity` column. To do so, click the field in the :guilabel:`Counted Quantity` column on the specific inventory adjustment line for the product whose count is being changed. This automatically assigns a @@ -186,6 +207,12 @@ To change this value, type in a new value that matches the real, newly-counted v away from the line. Doing so saves the adjustment, and automatically adjusts the value in the :guilabel:`Difference` column. +If the :guilabel:`Counted Quantity` is greater than the :guilabel:`On Hand Quantity`, the value in +the :guilabel:`Difference` column is **green**. If the :guilabel:`Counted Quantity` is less than the +:guilabel:`On Hand Quantity`, the value in the :guilabel:`Difference` column is **red**. If the +quantities match, and have not been changed at all, no value appears in the :guilabel:`Difference` +column. + Subsequently, once applied, a move with the difference between the :guilabel:`On Hand Quantity` and the :guilabel:`Counted Quantity` is recorded in the product's inventory adjustment history. @@ -207,20 +234,63 @@ selected products' :guilabel:`Counted Quantity` to the :guilabel:`On Hand Quanti quantity. As an extra precaution, Odoo asks for confirmation before applying the inventory adjustment. -Plan inventory counts ---------------------- +Revert an inventory adjustment +============================== -To plan inventory counts, such as a full count of everything currently in stock, first navigate to -:menuselection:`Inventory app --> Operations --> Physical Inventory`. +To revert the changes made in an inventory adjustment, navigate to :menuselection:`Inventory --> +Reporting --> Moves History`. -Then, select the desired products to be counted by clicking the checkbox on the far left of each +Tick the checkbox at the far left of the line for the desired product. At the top of the page, click +the :icon:`fa-gear` :guilabel:`Actions` button to open a drop-down menu, and click :guilabel:`Revert +Inventory Adjustment`. + +.. note:: + After an inventory adjustment is reverted, the line is not removed from the :guilabel:`Moves + History` report. Instead, an additional line is added, this time with the word `[reverted]` added + to the :guilabel:`Reference` column. + + .. image:: count_products/reverted-adjustment.png + :alt: The reference fields on the Moves History report in the Inventory app. + +Change inventory count frequency +================================ + +By default, the *scheduled date* for |ia| are always scheduled for the 31st of December of the +current year. However, for some companies, it is crucial that they have an accurate inventory count +at all times. In such cases, the default scheduled date can be modified. + +To modify the default scheduled date, go to :menuselection:`Inventory app --> Configuration --> +Settings`. Then, in the :guilabel:`Operations` section, locate the :guilabel:`Annual Inventory Day +and Month` setting, which includes a drop-down menu that is set to `31 December` by default. + +.. image:: count_products/annual-inventory.png + :alt: Adjust the next inventory count date with the Annual Inventory Day and Month setting. + +To change the day, click the `31`, enter a number from `1-31`, depending on the desired month of the +year. + +Then, to change the month, click :guilabel:`December` to reveal the drop-down menu, and select the +desired month. + +Once all desired changes have been made, click :guilabel:`Save` to save all changes. + +Plan big inventory counts +------------------------- + +To plan big inventory counts, such as a full count of everything currently in stock, first navigate +to :menuselection:`Inventory app --> Operations --> Physical Inventory`. + +Then, select the desired products to be counted by ticking the checkbox on the far left of each product line. .. tip:: - To request a count of **all** products currently in stock, click the checkbox at the very top of - the table, in the header row next to the :guilabel:`Location` label. This selects **all** product + To request a count of **all** products currently in stock, tick the checkbox at the top of the + table, in the header row next to the :guilabel:`Location` label. This selects **all** product lines. +.. image:: count_products/count-popup.png + :alt: Request a count pop-up on inventory adjustments page. + Once all desired products have been selected, click the :guilabel:`Request a Count` button at the top of the page. Doing so opens the :guilabel:`Request a Count` pop-up window, where the following information can be filled: @@ -232,14 +302,50 @@ information can be filled: :guilabel:`Leave Empty`. To pre-fill the on-hand quantity of each product line with the current value recorded in the database, select :guilabel:`Set Current Value`. +.. note:: + The :guilabel:`Leave Empty` option forces the employee conducting the audit to manually type in + the number they counted, while the :guilabel:`Set Current Value` option only requires the + employee to *verify* the counted quantity and click :guilabel:`Apply`. + Finally, once ready, click :guilabel:`Confirm` to request the count. .. image:: count_products/count-popup.png :alt: Request a count popup on inventory adjustments page. .. important:: - In the Odoo **Barcode** app, users can only view inventory counts that are assigned to **them**, - and are scheduled for **today** or **earlier**. + In the Odoo **Barcode** app, users can only view inventory counts that are assigned to *them*, + and are scheduled for *today* or *earlier*. + + Sometimes a count occurs, but cannot be applied in the database right away. In the time between + the actual count and applying the inventory adjustment, product moves can occur. In that case, + the on-hand quantity in the database can change and no longer be consistent with the counted + quantity. As an extra precaution, Odoo asks for confirmation before applying the inventory + adjustment. + +Adjustment history +================== + +Details regarding inventory adjustment can be viewed by clicking the :icon:`fa-history` +:guilabel:`History` icon. + +The user who performed the count is listed in parenthesis in the :guilabel:`Reference` field, while +the user who applied the count is listed in the :guilabel:`Done By`. + +.. image:: count_products/adjustment-history.png + :alt: The history record for an inventory adjustment. + +Inventory audit +--------------- + +An inventory audit can be accessed from the :guilabel:`Inventory Adjustment` page. This audit +includes an inventory record both before and after a count is completed, to track what changed. + +On the :guilabel:`Inventory Adjustment` page, tick the checkbox at the top-left of the page to +select all of the lines. Then click the :guilabel:`Request a Count` button. On the pop-up, set +:guilabel:`Count` to :guilabel:`Set Current Value`, then click :guilabel:`Confirm`. + +After returning to the :guilabel:`Inventory Adjustment` page, select all of the lines again. Click +:menuselection:`Print --> Count Sheet`. The :guilabel:`Count Sheet` exports in PDF form. .. seealso:: :doc:`cycle_counts` diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/adjustment-history.png b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/adjustment-history.png new file mode 100644 index 000000000..472eada56 Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/adjustment-history.png differ diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/annual-inventory.png b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/annual-inventory.png new file mode 100644 index 000000000..867e52efd Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/annual-inventory.png differ diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/forecast-report.png b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/forecast-report.png new file mode 100644 index 000000000..0e0a09a8e Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/forecast-report.png differ diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/relocate-popup.png b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/relocate-popup.png new file mode 100644 index 000000000..bffd1ffa2 Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/relocate-popup.png differ diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/reverted-adjustment.png b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/reverted-adjustment.png new file mode 100644 index 000000000..fe53b95d6 Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/count_products/reverted-adjustment.png differ