rattail-manual/docs/data/batch/native/vendor_catalog.rst

71 lines
2.1 KiB
ReStructuredText

Vendor Catalog Batch
====================
**Batch Type Key:** ``vendor_catalog``
**Purpose:** Allows updating product costs from new catalog data
**Default Handler:** :class:`~rattail:rattail.batch.vendorcatalog.VendorCatalogHandler`
Data for this type of batch usually comes from a spreadsheet or
similar file, as obtained directly from the vendor. You can also
define a "common" format to use, in which case you would convert each
vendor file to that format. (That is to cut down on the number of
file parsers needed.)
In any case executing this batch will just update Rattail by default;
you may want a custom handler to update your POS system instead.
Adding a New Vendor Catalog File Parser
---------------------------------------
Let's say you buy product from a vendor named "Acme Distribution" and
you want to add support for their catalog file format.
First you must define the file parser class, and register it.
We suggest keeping catalog parsers in a particular folder, e.g.
``~/src/poser/poser/vendor/catalogs/`` in your project. Create
folders as needed and then within that create a new file ``acme.py``
and for now just put this in it::
from rattail.vendors.catalogs import CatalogParser
class AcmeCatalogParser(CatalogParser):
key = 'poser.acme'
vendor_key = 'poser.acme'
Now you must register it. To do this, first add something like the
following to ``setup.py`` for your project::
setup(
# ...
entry_points = {
'rattail.vendors.catalogs.parsers': [
'poser.acme = poser.vendors.catalogs.acme:AcmeCatalogParser',
],
},
)
Then re-install your project, e.g. with:
.. code-block:: sh
cd /srv/envs/poser
bin/pip install -e ~/src/poser
At this point your parser should be visible within the web app and you
can move on to fleshing out the parser logic, and test it by making a
new batch in the web app etc.
See :class:`rattail:rattail.vendors.catalogs.CatalogParser` for
details of what attributes and methods you can implement.
See
https://forgejo.wuttaproject.org/rattail/rattail/src/branch/master/rattail/contrib/vendors/catalogs
for some example parsers.