Vendor Catalog Batch¶
Batch Type Key: vendor_catalog
Purpose: Allows updating product costs from new catalog data
Default Handler: 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:
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 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.