csv upload

what are the columns “scaled quantity” and “scaled amount” supposed to hold?

At the time, I had no idea. Now I have the vague impression that it’s
supposed to be related to articles on sale. Season quantity and season
price may be more appropriate. Then again, I don’t know where these
columns are actually used in foodsoft. I remember something happening
with in the sharedlists https://github.com/bennibu/sharedlists

@bennibu, would you be able to enlighten us?

  • Willem

Ui, this is a long time ago. But as I remember, our main supplier
supported two prices. one normal and one if you order a certain number
of items.

This features was only used in sharedlists and I planned to integrated
it into the foodsoft but never had time to finish this.

Ah, that clears it up! I think it would be clearer to remove them until
someone implements in completely.
What do we do with the reserved fields in the Foodsoft CSV file format
… ? Keep them as “reserved”?

  • Willem


I have another question. When adding articles using the interface, what is entered under ‘unit’? I would think it is the unit, in the scientific sense (for example lbs, g or KG), but the help text says ‘500g’ among other things. So what do I put here? Is this the indivisible weight we want to make this item available in, or is it the weight denomination we must order from the supplier in (eg 25lbs)?

Getting back to the CSV import (and this relates to adding articles in the interface), here are the column headings side by side with green lines showing the mappings that were obvious. I don’t know about the rest.

I guess I am not completely grasping whether the paradigm foodsoft uses is the same as what I am used to.

What we do is list the per pound price based on the supplier’s 10lbs rate (or whatever mid-range denomination is available for the given item). I always ‘pad’ the number a little, and our members understand that the prices of the items are rough. Then we open the order to our members for a day or so, and then we close it off, and tally up all that was ordered. Next we adjust the prices and tell all the members how much they are paying and what food they ended up with. Finally, they send their payments, and I buy all the bulk bags from the supplier. Later everyone arrives, checks the spreadsheet, and weighs out their food.

We have not carried stock for the two years we have been doing this, but we are just now starting to carry stock, which I think will simplify things since we can order the largest bags, making the price both lower, and more stable. Still, seasonality affects the price, but that’s what the tasks and workgroups are for!

Does this sound kind of like the workflow of foodsoft ordering?

Hi Angelo,

Good question! We need user documentation :slight_smile:

The unit is the unit per package, and unit_quantity is the number of
units that fill a lot/pack/box as delivered by the supplier. This is
“100g” or “100ml” or “1 piece” or “10x15g” (e.g. a box of ten cookies).
For most small producers, unit_quantity=1, which means they sell by the
piece. Many wholesale retailers only deliver in multiples of unit_quantity.

Now you might want (and it sounds like you do) to buy a 25kg bag of
flour and divide it amongst members. In that case, you could use “500g”
as unit, and 50 as unit_quantity. (When the article is from an external
database, a synchronize action will keep your unit and set the corrected
price and unit_quantity properly). (*)

Looking at your picture, I see the following lines can be drawn:

  • itemcode → Order number
  • list name → Name
  • price → Price (net) [assuming this is the net price]
  • category → Category
  • brandname → Manufacturer
  • std pack → unit_quantity x unit
    o OR pick your divide unit, and compute the unit_quantity and
    adjust the price
  • weight → (nowhere)
  • ? → VAT
  • 0 → Deposit (for the items shown)

I’ll send another mail on the order cycle you describe and foodsoft.
Hope this helps you with the next step.


  • Willem

(*) I’m working on a feature
in foodcoop-adam that allows one to specify a division unit separately
from the unit. See also #209
https://github.com/foodcoops/foodsoft/issues/209’s “per” field.

HI Angelo,

So your workflow is the following, right? I’ve added in what would
happen in foodsoft

  1. Update the article list - based on suppliers’ mid-range packaging
    • /visit/ Articles → Suppliers/articles → {Supplier} /and press/
    • enter/update articles
      o unit = lbm
      o unit_quantity & price are computed from the supplier’s
      package to match a package
  2. Open the order
    • /press button /Create new order/or visit/ Order → Manage orders
      → Create new order → {Supplier}
    • enter dates; end date is when the order is closed = members
      cannot order anymore
    • select articles to include (top or bottom one to select all) and
      /press/ create order
  3. Now members can order
  4. When the closing date is there,
    • /visit /Order → Manage orders → Current orders → {Supplier}
      /and press/ Show
    • /press/ Close!
    • totals will be computed for all members (technically, that would
      be “ordergroups”)
    • mails will be sent to members who ordered with the amount received
    • you can Download a Fax PDF with what to order and send it to the
  5. Payments - so you collect payments just before ordering, which works
    well when there it is known beforehand what the supplier will deliver.
    • to see what a member needs to pay, look at the order screen (as
      in previous step), press “sorted in groups”
    • when a member has paid, /visit /Finances → Manage accounts
    • find the ordergroup, /press/ New transaction
    • create a new transaction with the amount paid
  6. When the pickup day is there
    • print the Group/Article/Matrix PDF from the order screen to see
      who gets what
    • all members pickup what they ordered
    • when there is a difference, use Finances → Account orders →
      {Supplier} /press /accounting////
      o to modify amounts that were delivered
      o and to redistribute over the members (ordergroups) by
      clicking on the article name
  7. After pickup day, when everything is found to be correct
    • perhaps you want to add an invoice in the accounting screen,
      allowing you to view profit/loss
    • in the accounting screen, /press/ “Settle order”
    • when settling the order, amounts are substracted from members’
      foodsoft accounts (in which they deposited money in step 5)

I hope this brings some clarity!


  • Willem

p.s. In our fork at foodcoop-adam, we’ve made step 5 a bit easier, so
that “Manage accounts” shows more information, including the
ordergroup’s available funds - which includes current orders.

yes, it brings much clarity. Thankyou so much for the thorough response.

Can an Ordergroup save its order without having credit in the system?

Do they have to pay the coop and get credited before they can order?

Is it possible for a member to carry a balance?

I would like for members to be able to buy a little more than they have the money for without having to purchase more credits beforehand. That way I can do all of the settling at once, rather than constantly.

The instructions do not have a step that says “collect deposits and credit users” before the ordering step. Should there be this step in the instructions?

Yes. There is a configuration option for the minimum credit allowed, which can be negative. If you set the above option, yes. Yes! A member can view the balance in “My Ordergroup”, admins can view the balance of members in “Finances > Manage accounts” then press “account statement” for an ordergroup. With the option . What I know that another foodcoop does with deposits, is to have an article with negative deposit only, and add that to the member’s order upon return. Do you think that would work? - Willem

Thanks! I guess I asked the same question three times.

I am slowly building the user and administrator wiki mostly from the information in this forum, so at least you know I will not ask the same question twice.

Great! Feel free to share the link at some point :slight_smile:

finally got the import working. I did some math in the spreadsheet and got all of the per unit values to automatically calculate before exporting to semicolon separated values. The hardest part was making sure the titles were under 60 characters. I don’t know a trick for that :slight_smile:

I noticed some strange behavior with some escaped span tag in an input tag which I reported on git.