From 3941771b2a72b1bfa372c3cae95d9d61f4fbe621 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 19 Mar 2021 19:22:32 -0300 Subject: fix some word spell --- .../016-backoffice-order-management.rst | 243 +++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 design-documents/016-backoffice-order-management.rst (limited to 'design-documents/016-backoffice-order-management.rst') diff --git a/design-documents/016-backoffice-order-management.rst b/design-documents/016-backoffice-order-management.rst new file mode 100644 index 00000000..1fba8f33 --- /dev/null +++ b/design-documents/016-backoffice-order-management.rst @@ -0,0 +1,243 @@ +Design Doc 016: Backoffice Order Management +########################################### + +Summary +======= + +This document describe the complete list features for orders management and how +will be shown. + +Motivation +========== + +User will use the backoffice to manage their orders and verify the status of the +current and past orders. + +Requirements +============ + +Access all information provided from the Merchant Backend API in a +understandable and accessible way + +User should use the backoffice to manage orders by: + +* searching for orders +* showing details about the order and the activity history +* refund order that are refundable +* create orders + +Proposed Solution +================= + +Listing orders +-------------- + +.. image:: ../backoffice-order-list.svg + :width: 800 + +Will show the SearchBar component that allow multiple filter. +Filter will allow paid, refunded, wired status and date. + + * paid: yes/no + * refunded: yes/no + * wired: yes/no + * date: 'dd/MM/yyyy' + +4 tabs will be show for a easy access to common filter, click on any of this and +search will reset all filter except date + +* paid (default) +* refunded +* not wired +* all (empty filter box) + +Columns for the order listings will be: + +* date in 'dd/MM/yyyy HH:mm:ss' format +* amount: value and currency +* summary + +Actions per row: + +* refund: pop up with amount and reason (select box and text) +* copy payment id +* view details + +An export button will allow the user to download the result page in CSV format. + +An infinity scroll is propose instead of a pagination, reasons: + +* users usually does not jump from one page to another using random access +* if the user want to search, is going to limit the result using filters +* no need to go back after loading more result +* it could be triggered by scrolling, with buttons (or both) + +Create orders +------------- + +Form with 4 fields: + +* amount +* summary +* time until refund ( dropdown: 1week, 2weeks, custom ) +* description +* payment method + +Creation order success +********************** + +Example message: + + Creation successful + + We've create an order for for USD:10.00. + + Send url to the customer: ``taler_pay_uri`` + +action buttons that allow the following: + +* create another payment: go to the create payment page again +* view details: show details of the payment (see page) + +Order details +------------- + +Status text should be set with a background color for easier recognition when +indicated: + +* paid: green +* claimed: light-green +* unpaid: grey +* refunded: red + +Header +****** + +This is a resume of most important information + +* big status with color +* date +* total + + - deposit_total (if not refunded) + - refund_amount (if status is refunded) + - deposit_total - refund amount (if refunded partially) + +* order_status_url +* taler_pay_uri (if unpaid) +* actions: refund (if not refunded), add note, copy order_status_url + +Timeline of events +****************** + +Event of status changed over time describe vertically. +Sorted from newest to oldest. +On line per status updated, with datetime and a short description. + +Info taken from: + +* refund_details +* wire_reports +* wire_details +* contractTerm.extra for custom notes ({date: timestamp, description: string}) + +Payment details +*************** + +* summary +* amount (deposit_total) +* fee +* refund_amount (if status is refunded) +* net (amount - fee - refund) +* current status + + +Contract Terms +************** + +collapsed as default. show disabled if unpaid + +* summary +* amount +* fulfillment_url, if present +* max fee +* max fire fee +* wire_fee_amortization +* list of (exchange | auditor) name and url +* products table: list of products, one row per product + + * description + * quantity + * total price + * total tax + * sum at the bottom + +* horizontal timeline of important dates in the contract + + * start at contract creation time + * show current date + * pay_deadline + * wire_transfer_deadline + * refund_deadline + * delivery_date (immediately if null) + * auto_refund + + + +Last response from exchange +*************************** + +collapsed as default, showing a green check if everything is ok or a yellow +warning otherwise + +When open show 2 boxes with text translated from ``exchange_ec`` and ``exchange_hc`` + +refund popup +-------------- + +If there is any refund: + +* show total refund from ``refund_amount`` +* a + sign to show more information +* if expanded show a timeline vertically showing amount a reason + ``refund_details`` + +Show a small notice telling that the refund is going to take ``refund_delay`` time. + +Warn if there is a pending refund when ``refund_pending`` is true + +Ask for: + +* amount +* reason: concatenation of the next values + + * drop down options: duplicated, fraudulent, requested by customer, other + * after selecting, free text for additional information + +Alternatives +============ + + +order list was originally thought with pagination footer + +.. image:: ../backoffice-order-list.v2-pagination.svg + :width: 800 + +ascending boolean flag cloud be eliminated using the load before and load after +and a design without random access to pages was proposed + + +Discussion / Q&A +================ + +* Shall we show merchant information from the ContractTerm in the order detail? + +* Order creation was first thought as out of scope but should be useful for + testing purpose or when frontend is not yet integrated with taler merchant + backend. Shall we skip it? + +* Do we have the date and time of when the order goes from these states? + + * claimed => paid (maybe last wire_details.execution_time with confirmed = true ) + * unpaid => claimed (maybe contractTerm.timestamp) + -- cgit v1.2.3