Add more docs for Feature Layer
not complete, but progress..
This commit is contained in:
parent
f2fd88fc63
commit
db50895459
40 changed files with 998 additions and 14 deletions
6
docs/features/custorders/cancellation/index.rst
Normal file
6
docs/features/custorders/cancellation/index.rst
Normal file
|
@ -0,0 +1,6 @@
|
|||
|
||||
Cancellations / Other
|
||||
=====================
|
||||
|
||||
TODO: obviously sometimes a customer may cancel their order before it
|
||||
arrives...then what? i'm sure it depends, as always...
|
52
docs/features/custorders/entry/index.rst
Normal file
52
docs/features/custorders/entry/index.rst
Normal file
|
@ -0,0 +1,52 @@
|
|||
|
||||
Entry
|
||||
=====
|
||||
|
||||
Entering a new Customer Order into the system is very likely the most
|
||||
complicated part. Consider:
|
||||
|
||||
The "Customer" (or in some cases a "Person") must be identified, whose
|
||||
order this will be. What if they're a new Customer/Person, not yet in
|
||||
the system? Can they be added directly to Rattail and other systems
|
||||
will be updated accordingly? Or must they be first added to the other
|
||||
system and then imported back to Rattail? (For sake of the order, can
|
||||
a "Pending Customer" record be created and then sort the rest out
|
||||
later?)
|
||||
|
||||
One or more "Products" will be added to the Order. Can they order
|
||||
*any* (e.g. unit) amount or is there a "cases only" policy etc.?
|
||||
Perhaps also some other restrictions based on Department, e.g. no more
|
||||
than X cases of frozen product due to space limitations.
|
||||
|
||||
Where does all that Customer and Product data come from anyway? Is it
|
||||
accurate enough to be used for creating "reliable" Order data? Is the
|
||||
Customer to be charged according to whatever price is calculated in
|
||||
the Order, or are they charged "whatever the POS rings up" etc.? Are
|
||||
discounts ever quoted in the order, vs. handled only by POS?
|
||||
|
||||
Speaking of payments, does the customer need to pay up-front when
|
||||
first placing the order? Or do they pay later when they pick it up?
|
||||
|
||||
Wait, what if they want to order a Product which is not yet in the
|
||||
system? Is this allowed, and if so what are the policies surrounding
|
||||
that?
|
||||
|
||||
So, the Rattail feature tries to accommodate all of the above
|
||||
regardless of how you answer.
|
||||
|
||||
First of all the Customer/Person and Product data should already be
|
||||
*imported* to Rattail from your POS or other system(s), before
|
||||
tackling Customer Orders. This feature assumes the underlying data is
|
||||
already squared away and accurate (within reason).
|
||||
|
||||
Second, it's worth noting that the New Customer Order tool is
|
||||
implemented as a batch (see also :doc:`/data/batch/native/custorder`).
|
||||
This is important because it makes it possible to use the New Customer
|
||||
Order tool as the entry workflow for a Customer Order *even if* you do
|
||||
not track those primarily in Rattail. In other words when the batch
|
||||
is executed, it can "push" the Order data to whatever system is
|
||||
needed.
|
||||
|
||||
But of course the Rattail DB has its own schema for tracking these
|
||||
Customer Orders, so the default "new batch" execution will create the
|
||||
Order directly in Rattail.
|
20
docs/features/custorders/fulfilment/index.rst
Normal file
20
docs/features/custorders/fulfilment/index.rst
Normal file
|
@ -0,0 +1,20 @@
|
|||
|
||||
Fulfilment
|
||||
==========
|
||||
|
||||
In the context of Customer Orders, "fulfilment" requires that:
|
||||
|
||||
* customer has paid for the product
|
||||
* customer has possession of the product
|
||||
* order data reflects these facts
|
||||
|
||||
Some places will require the Customer to pay for the Order when they
|
||||
place it, in which case the first is taken care of already. But if
|
||||
not, then the physical product can be rang up at POS when they come to
|
||||
pick up.
|
||||
|
||||
If the product is paid for upon pick-up then Rattail has a way to
|
||||
"automatically detect" that fulfilment has occurred (by monitoring the
|
||||
POS Transactions). But if payment happens up-front then likely some
|
||||
User must explicitly indicate to Rattail that fulfilment is complete,
|
||||
i.e. product was picked up by Customer.
|
32
docs/features/custorders/index.rst
Normal file
32
docs/features/custorders/index.rst
Normal file
|
@ -0,0 +1,32 @@
|
|||
|
||||
Customer Orders
|
||||
===============
|
||||
|
||||
Presumably all retailers sell products to customers. Most will have a
|
||||
dedicated point of sale (POS) system for that.
|
||||
|
||||
Additionally, some retailers let customers place orders for product
|
||||
which will arrive in store for pickup at a later date. These are
|
||||
often referred to as "special orders" or "case orders" etc.
|
||||
|
||||
Rattail offers tools to facilitate entry and tracking for such orders,
|
||||
providing visibility and workflows for their full life cycle.
|
||||
|
||||
.. note::
|
||||
Now that we all know what "COVID" means, online orders with
|
||||
curbside and delivery options have risen in prominence. For the
|
||||
moment Rattail does not directly provide features with those in
|
||||
mind. However this "customer orders" feature is clearly related,
|
||||
and probably a lot of the schema and/or logic could be shared
|
||||
between scenarios. But so far only the classic "special/case
|
||||
order" scenario is being addressed.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
entry/index
|
||||
purchasing/index
|
||||
receiving/index
|
||||
fulfilment/index
|
||||
cancellation/index
|
||||
reporting/index
|
12
docs/features/custorders/purchasing/index.rst
Normal file
12
docs/features/custorders/purchasing/index.rst
Normal file
|
@ -0,0 +1,12 @@
|
|||
|
||||
Purchasing
|
||||
==========
|
||||
|
||||
In the context of Customer Orders, our concern here is making sure the
|
||||
Buyer knows about them and includes them in the Purchase Order(s)
|
||||
which they are already placing to the Vendor per normal procedure.
|
||||
|
||||
TODO: this has been implemented a couple of different ways thus far
|
||||
but the "best" has yet to be decided...in particular (how) should the
|
||||
customer orders and purchase orders be linked? it is a slight hassle
|
||||
up front but then can be leveraged during the receiving process...
|
15
docs/features/custorders/receiving/index.rst
Normal file
15
docs/features/custorders/receiving/index.rst
Normal file
|
@ -0,0 +1,15 @@
|
|||
|
||||
Receiving
|
||||
=========
|
||||
|
||||
In the context of Customer Orders, our concern here is making sure the
|
||||
Receiver knows about them and sets them aside while receiving the
|
||||
Purchase Order, once it's arrived from the Vendor.
|
||||
|
||||
Another concern is how/when/who should contact the Customer to notify
|
||||
them that their order has arrived. If the Customer account has a
|
||||
valid email address on file then perhaps they are emailed
|
||||
automatically; otherwise an Employee must call their phone number etc.
|
||||
In either case the *attempt* to contact the Customer should be
|
||||
recorded somehow, along with notes e.g. indicating if it was
|
||||
successful.
|
52
docs/features/custorders/reporting/index.rst
Normal file
52
docs/features/custorders/reporting/index.rst
Normal file
|
@ -0,0 +1,52 @@
|
|||
|
||||
Reporting
|
||||
=========
|
||||
|
||||
Reporting on Customer Orders data is possible but as of writing is
|
||||
still being worked out.
|
||||
|
||||
The asumption here is that you want to track "sales" which are
|
||||
attributable to Customer Orders.
|
||||
|
||||
The "easiest" way, though potentially inaccurate, is simply to query
|
||||
the Customer Orders data and assume that if a given Order's "status"
|
||||
reflects that e.g. it has been paid for, then include it in the
|
||||
report.
|
||||
|
||||
On the other hand the precise amount paid by the customer may or may
|
||||
not even be in the Customer Order data. Even if it is there, is it
|
||||
correct, or was it just an "estimate" and really a related POS
|
||||
Transaction must be consulted for the true price.
|
||||
|
||||
However the Order status likely *is* important on some level, to
|
||||
detect cancellations etc. Presumably if a refund is given, the POS
|
||||
Transaction would have that amount, but there likely is nothing to tie
|
||||
that back to the particular Order which was canceled.
|
||||
|
||||
So at the moment the focus is on recording "links" between a given
|
||||
Customer Order and POS Transaction. This is done by way of a
|
||||
Trainwreck DB (see also :doc:`../../transactions/importing/index`):
|
||||
|
||||
A transaction is imported to Trainwreck as per usual, but in addition
|
||||
to the normal stuff, the transaction is inspected for any "indicators"
|
||||
of Customer Orders. (Often the cashier scans or enters some ID for
|
||||
the Order when ringing it up.) Such indicators are then stored in a
|
||||
dedicated place within Trainwreck. This takes care of the "high
|
||||
level" meaning we now have links between a POS Transaction and
|
||||
Customer Order.
|
||||
|
||||
But really, a POS Transaction has "line items" and so does a Customer
|
||||
Order. So we actually need a link between the relevant line items.
|
||||
|
||||
The line item links are established in a second phase. So the first
|
||||
phase is focused on importing POS Transaction data, and we've done
|
||||
that. But now Trainwreck has all those line items and so the
|
||||
item-level reconciliation can be done "natively". Again we already
|
||||
have the high-level links, so we fetch a linked pair (Transaction and
|
||||
Order) and then crawl each to identify item-level links, and record
|
||||
any which are found.
|
||||
|
||||
Once that is complete, a Customer Orders report can more easily obtain
|
||||
accurate payment amounts from the POS Transaction data (although it
|
||||
reads from Trainwreck instead for convenience). And of course it can
|
||||
still leverage the Customer Order status etc. as needed.
|
Loading…
Add table
Add a link
Reference in a new issue