add scale_unit_price
This commit is contained in:
parent
49a0c1ddb3
commit
a9deeda32b
2 changed files with 41 additions and 7 deletions
42
README.md
42
README.md
|
@ -3,10 +3,42 @@ This gem provides FoodsoftArticleImport integration for Ruby on Rails and allows
|
||||||
|
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
TODO: add bnn codes, explain how to add bnn codes
|
This is a very simple gem that can be used to extract data from files in the formats .bnn, .xml and .csv.
|
||||||
TODO: review GNU License
|
Given one of the aforementioned files, the gem returns information.
|
||||||
|
|
||||||
For correct import of bnn files, please ensure the correct language setting. Your foodsoft account has to be settings set to german if you want to import articles from file.
|
example for foodsoft file:
|
||||||
To set this is imcrucial for guaranteeing the correct format of article prices.
|
|
||||||
### Requirements
|
|Status|Order number|Name|Note|Manufacturer|Origin|Unit|Price (net)|VAT|Deposit|Unit quantity|(Reserved)|(Reserved)|Category|
|
||||||
|
|--- | --- | --- | --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
|
||||||
|
||1234A|Walnuts||Nuttyfarm|CA|500 gr|8.90|7.0|0|6|||Nuts|
|
||||||
|
|x|4321Z|Tomato juice|Organic|Brownfields|IN|1.5 l|4.35|7.0|0|1|||Juices|
|
||||||
|
||4322Q|Tomato juice|Organic|Greenfields|TR|1.2 l|4.02|7.0|0|2|||Juices|
|
||||||
|
|
||||||
|
bnn file reference:
|
||||||
|
https://n-bnn.de/fileadmin/user_upload/Leistungen_Services/Markt-_und_Produktdaten/BNN3_1Schnittstelle_20.08.21.pdf
|
||||||
|
|
||||||
|
Information about Manufacturer, article category, tax and deposit are conveyed through "bnn codes".
|
||||||
|
A "bnn code" is a mapping of some abbreviation or number to the relevant data.
|
||||||
|
The data for suppliers lies at DataNatuRe and we just have a list of some mappings.
|
||||||
|
Much more codes are needed to make this gem more powerfull. Maybe an xml api to DataNatuRe can be implemented in the futurepossibility.
|
||||||
|
The list used in this gem is not complete, since it needs data from all manufacturers.
|
||||||
|
If your local foodcoop posesses keys for article mapping, it is possible to use ypour custom code mapping.
|
||||||
|
|
||||||
|
You can extend it for your local foodcoop, if you create a custom_codes.yml, and put it in your root folder.
|
||||||
|
|
||||||
|
extracted article attributes will be:
|
||||||
|
|
||||||
|
* name: article name from bnn
|
||||||
|
* order_number: order number from bnn
|
||||||
|
* note: extra note from bnn
|
||||||
|
* manufacturer: e.g. ALN -> AL Naturkost Handels GmbH"
|
||||||
|
* origin: e.g. "GB"
|
||||||
|
* article_category: e.g. "0202": Sauermilchprodukte
|
||||||
|
* unit:
|
||||||
|
* price:
|
||||||
|
* tax: e.g. "1" -> "7.0"
|
||||||
|
* unit_quantity:
|
||||||
|
* deposit: e.g. "930190" -> 0.08
|
||||||
|
|
||||||
|
## Ruby Version
|
||||||
This gem requires Ruby 2.7
|
This gem requires Ruby 2.7
|
|
@ -73,11 +73,13 @@ module FoodsoftArticleImport
|
||||||
# get scale prices if exists
|
# get scale prices if exists
|
||||||
# article.merge!(:scale_quantity => row[40], :scale_price => row[41]) unless row[40].nil? or row[41].nil?
|
# article.merge!(:scale_quantity => row[40], :scale_price => row[41]) unless row[40].nil? or row[41].nil?
|
||||||
|
|
||||||
|
|
||||||
if !row[62].nil?
|
if !row[62].nil?
|
||||||
# consider special prices
|
# consider special prices
|
||||||
article[:note] = "Sonderpreis: #{article[:price]} von #{row[62]} bis #{row[63]}"
|
article[:note] = "Sonderpreis: #{article[:price]} von #{row[62]} bis #{row[63]}"
|
||||||
yield article, :special, i
|
yield article, :special, i
|
||||||
|
|
||||||
|
article.merge!(:scale_unit_price => row[68] * row[37].to_f ) unless row[68].nil? or row[37].nil?
|
||||||
# Check now for article status, we only consider outlisted articles right now
|
# Check now for article status, we only consider outlisted articles right now
|
||||||
# N=neu, A=Änderung, X=ausgelistet, R=Restbestand,
|
# N=neu, A=Änderung, X=ausgelistet, R=Restbestand,
|
||||||
# V=vorübergehend ausgelistet, W=wiedergelistet
|
# V=vorübergehend ausgelistet, W=wiedergelistet
|
||||||
|
|
Loading…
Add table
Reference in a new issue