This allows us to add additional items to an order, which do not belong
a specific user, but will be put into stock. The benefit of this change
is that we use the same order for ordergroups and stock.
In some foodcoops it is possible that ordergroups make a break. During that
they e.g. pay reduced or no membership fees and do not need to do work for
the foodcoop. This new fields make this visible to all members.
When a foodcoop does not use the balancing feature the invoice page is
the main page for informations. Add all related information to it, so
people do not need to open the balancing page.
Messagegroups are a new kind of group. Every user can join and leave such a
group on her own. They are useful to create topics for mails.
E.g. if there is a weekly newsletter we can create a new messagegroup for
it and every user which is interested in receiving the newsletter can join
the corresponding group.
If the reply_email_domain configuration is set the messages plugin will
use unique Reply-To addresses for every email. They contain enough
information to reconstruct the message context and a hash to avoid
user forgery and spam.
A mail transfer agent must be configured to call the new rake task
foodsoft:parse_reply_email for incoming mails. The rake task requires
the receipt of the mail in the RECIPIENT variable and the raw message
via standard input. An example invocation would look like:
rake foodsoft:parse_reply_email RECIPIENT=f.1.1.HASH < test.eml
Show all unassigned task in the dashboard to make it more interesting
for members to pick tasks. Some members do not (want to) click on the
task list very often it is not clear if there are new tasks if we show
the number of unassigned tasks only.
This new view sorts the messages by threads based on the reply_to.
Now we store only the message which started a new thread in the reply_to
field to avoid recursive queries.
This new role allows users to create invoices without role_finance. Users
can then only modify their own created invoices until somebody with the
role_finance sets the paid_on value.