017-backoffice-inventory-management.rst (4072B)
1 DD 17: Backoffice Inventory Management 2 ###################################### 3 4 :Design status: Accepted 5 :Implementation status: Implemented 6 :DD shepherd: TBD 7 :Historical contributors: Sebastian 8 :First published: 2021-03-19 9 :Last substantive change: 2021-04-20 10 :Implementation evidence: merchant (2020-05-02), taler-typescript-core (2026-08-06) 11 :Normative references: :doc:`../core/api-merchant`, :doc:`../taler-merchant-manual` 12 13 .. note:: 14 15 The screens below record the original UI design. The current merchant API 16 is authoritative for inventory fields and operations. 17 18 Summary 19 ======= 20 21 This document describe the complete list features for inventory management and 22 how will be shown. 23 24 Motivation 25 ========== 26 27 User will use the backoffice to manage their inventory, prices and update stock. 28 29 Requirements 30 ============ 31 32 Access all information provided from the Merchant Backend API in a 33 understandable and accessible way 34 35 User should use the backoffice to manage inventory by: 36 37 * creating new products 38 * updating the products information 39 * inspecting inventory list 40 * deleting products from the inventory list 41 42 Proposed Solution 43 ================= 44 45 Inspecting inventory 46 -------------------- 47 48 .. image:: ../images/backoffice-product-list.svg 49 :width: 800 50 51 Listing the product will shown this columns: 52 53 * image 54 * description 55 * sell price 56 * stock left (with next_restock in days if present) 57 * stock sold 58 59 Actions will be 60 61 * modify 62 * delete: with a confirm popup, it may fail if have some locked 63 64 65 .. _backoffice-create-product: 66 67 Create and Update Product form 68 ------------------------------ 69 70 .. image:: ../images/backoffice-product-create.svg 71 :width: 800 72 73 Update product will use the same form except for the ``product_id`` 74 75 * product_id: a slug identifier 76 * description: split in two fields, concatenated with a line separator 77 78 * name: required, one line 79 * extra: optional, free text area 80 81 * description localized: list with 82 83 * lang: dropdown list with supported lang + custom 84 * description: text area 85 86 * unit: string 87 * price: amount 88 * image: image box that allows upload when clicked 89 * taxes: list with 90 91 * name: string 92 * value: amount 93 94 * Stock: button that opens more fields for stock control 95 96 * stock remaining: number 97 * address: first collapsed, then field for Location 98 * next_restock: date 99 * cancel: button to set the stock to infinity, closing the section 100 101 Stock management 102 ---------------- 103 104 * ``manage stock`` button will open the dialog below 105 106 * ``without stock`` will close the dialog and set stock props to not defined 107 108 * ``unknown`` button will set next restock value to undefined 109 110 * ``never`` button will set next restock to never 111 112 * when updating the product, the option ``without stock`` will no be available 113 if the product already has stock 114 115 * if the product already exist then: 116 117 * the option ``without stock`` will no be available, since the product cannot 118 change from infinite stock to managed stock 119 120 * the option ``manage stock`` will no be available, since the product cannot 121 change from managed stock to infinite stock 122 123 * ``current stock`` will be managed using ``incoming`` and ``notify lost`` 124 125 * a label at the end of the section will inform about the final result 126 127 128 .. image:: ../images/backoffice-product-create.stock.svg 129 :width: 800 130 131 132 Alternatives 133 ============ 134 135 * price and stock columns in the list can be merged into a more complex column 136 with the same information 137 138 * rows in the table can be expandable when clicked to get access to some common 139 actions like increase stock or change price 140 141 .. image:: ../images/backoffice-product-list.actions.svg 142 :width: 800 143 144 * detail page was intentionally left out since all information can be access 145 from the update page 146 147 Q&A 148 === 149 150 * can we add the quantity locked in the product description? so we can add it 151 to the inventory list to reflect the current activity. 152 153 * can we allow add extra data like order has in contractTerm?, this could be 154 useful for frontend apps. example of usage: country/state to where the product 155 is sold since taxes may vary