Local Food Cooperative Software
The Jist: This software operates on an order cycle instead of an “always open” system. Producers/farmers can log in and add products to their product catalog at anytime for sale. During a designated time, cooperative members place orders.
v1.5.0 Configuration Consolidation Release
Contents
- Contributors to this release
- Changes from v1.4.4 to v1.5.0
- Deprecated features from v1.4.4
- New features in v1.5.0
Contributors to this Release
- Ben Anderman - bug-fixes and enhancements
- Brandon Burnett - many bug-fixes from prior versions
- Jeff Etling - solving the timezone problem
- Jeff Farbman - major help with configuration and code reformatting
- Roy Guisinger - lead developer
- Anthony Harper - database enhancements
Installing vs. Updating: This release
includes changes to almost every file in the codebase. Consequently, updating
from previous versions that have been modified will be difficult. Part of the
delay in releasing this version was to include as many of these systemic changes
as possible so that future releases will (hopefully) be a little easier to
implement.
Changes from v1.4.4 to v1.5.0
- Consolidation of configuration files
IMPORTANT: Configuration information has
been consolidated into the single new file (config_foodcoop.php)
so that the following old configuration files may be eliminated:
config_connect.php
config_foodweb_orders.php
config_foodweb.php
config_members.php
An optional config_override.php file
provides the ability to override configuration parameters such as when
maintaining mirrored sites with slight variations in configuration settings.
For normal installations, this file will be empty and may be safely omitted.
Database configurations and certain variables no longer need to be
searched out and hard-coded into place throughout the code.
- Conversion to use include path
IMPORTANT: In prior versions, each file
explicitly included the configuration files by relative reference. In this
version, the configuration files are referenced by setting an include
path via either .htaccess or php.ini
files. The installation assumes .htaccess files; if you prefer/need to use
php.ini settings instead, you will need to configure those separately.
- Modification to shopping cart function
Shopping cart page has been reformatted to be more concise.
- Paypal surcharge configuration
Paypal as a payment option can be configured to generate extra charges or
not. Important Note: This feature is site-wide
and history-inclusive. Ideally, it should not be changed after a site has
started transacting business. However, as long as all invoices have been
finalized prior to changing the value, and no former invoices are ever changed,
it should work okay. This situation has not been tested.
In future versions, the extra charges for paypal will be deprecated. The
paypal charging feature is in place for existing installations and should not be
used or should be phased out.
- Product list image display
Images in the product list are now "Click to enlarge" and
"MouseOut to restore" instead of "MouseOver to enlarge"
and "Click to restore".
- Changes to producer list and product editing
Producers may now classify products as "Listed Retail",
"Listed Wholesale", "Unlisted", or "Archived".
Producer editing screen now returns to the proper classification
list being edited rather than the "All Products" list.
There is now a "Save as new" option for cloning
products without re-entering all information again.
Products may now have a negative price (useful for such things
as refunds and deposits).
Some product-entry fields were modified for easier data entry.
A brief alert displays after updating products to indicate
successful processing of the product.
- Membership dues accounting
Membership dues are now a separate transaction category and are managed
as a separate entity from regular invoice payments and adjustments.
Outstanding amounts are shown on the members invoice and in the Member
Balance Lookup function.
- Pending members
The Pending Members function now shows members in a pending status as
well as those with outstanding membership dues. The pending function allows
entry of membership payments directly and posts these to the
transactions table directly.
- Integrated New-member form
The new-member form is integrated in v1.5.0 as a standard feature. The
form will provide membership options based upon the membership_types
table and will populate most of the fields in the members table, set
the appropriate value for "pending", post an appropriate
new-member "receivable" transaction to the transactions
table, and send a copy of the application to the new member as well as the
membership (or other) email address.
When accessed by authenticated members, the new-member form is also
used to change existing membership settings.
- Integrated New-producer form
The new-producer form is integrated in v1.5.0 as a standard feature. The
form provides existing or new members with the ability to create a producer
account. The values from this form are used to populate the producers
table and the producers_registration table.
Please note: there seem to be differing versions of the
producers_registration table and the one included with this release
may not match your own.
- Streamlined invoice generation
Customer and producer invoices can be generated in batch or singly from
the members area by anyone with administrator permissions. If htmldoc is
installed, the batch pdf output will be paginated for duplex printing to help
conserve paper.
- Reformatted code
The codebase was reformatted to GNU standard indentation style, two-space
indentation, and no trailing whitespace. SQL queries have been reformatted for
easier readability. Filenaming convention now adheres to underscores in lieu
of hyphenation.
- Removal of dead files
Miscellaneous files that are no longer needed have been removed from the
distribution.
Deprecated Features from v1.4.4
- Member order preferences
Version 1.4.4 was configured to use the members_prefs
table. Historically that table was only used to supply default values
for opening a shopping basket for a member. Although not yet implemented,
in the future, default values will be pulled from the memberss most
recent order. Removal of this table is an effort to simplify certain things.
- Membership type
Previously, the members_type table contained information
about the type of membership for each member (such as "voting" or
"non-voting" memberships). In this version, that feature is
superseded by the membership_types table, which is linked to the
membership_type_id column (previously the memb_amt_owed column) of the
members table.
New Features in v1.5.0
- Update alert
The upper-right corner of the admin page will now watch the
localfoodcoop.org website for updates and other important news regarding the
software.
- Master-password option
A configurable master-password can be set up that will allow access to
all member accounts (not the admin area). The value for the passord is stored
in its encrypted MD5 form in the configuration file. The value to use is the
same as the equivalent encrypted password stored in the database. Leave the
value empty to disable the feature.
- Timezone setup
The time zone can now be set to correspond with the actual location of
the local food organization, rather than some offset based on where the server
is hosted.
- Configurable routing codes
The routing code format can now be changed in one place in the
configuration file. The routing codes are the ones displayed on product
labels for tracking to destination sites.
- Wholesale buyers
Members may now be classified as auth_user = "institution"
which gives them — and only them — access to products that producers
list as "wholesale".
- Change of "authorization" logic
The database schema has been modified so that member authorization is not
exclusively one type or another but may be multi-valued. For example, a member
may be authorized as a "producer" and as an "administrator".
This feature is not yet fully utilized, but is preparatory for future enhancements.
- Combined member and admin authentication table
The auth_user_c table for authenticating admin logins has
been converted to a view of the members table so there is no
longer a need to keep separate records. Members with access to the admin
area should be designated with the auth_type = "sysamdin".
- Actual pricing
A configuration option now allows display of the actual price customers
will pay in the product lists, customer basket, and customer invoices. With
this option activated, customers will pay what they see (plus taxes, of course)
without any apparent coop fee.
- Pluralizer function
There should no longer be instances when the items are listed with weird
plural forms. These errors should no longer occur: (1 box → 3 boxs) and
(1 bass → 2 basss) and (1 ox → 4 oxs). Now instead: (1 box →
3 boxes) and (1 bass → 2 basses) and (1 ox → 4 oxen).
- Captcha
Securimage package has been included with this release to provide captcha
services to the membership form and for later use with web-contact forms.
- Notification message
The /shop/index.php and /shop/members/index.php pages both include a
/shop/message.php file which makes it easy to post messages for all members
to see when they come to the site.
- Auto-focus login field
When accessing the main shopping page (usually located at
http://yourfoodsite.org/shop/), the member login field is
auto-focused to enable mouse-free login.
- Retention of target pages through authorization
When accessing a page internal to either the members or the admin
area, the target page rather than the index page will be returned after
the login has been peroperly authorized.
- Prior-ordered items
The shopping cart now includes a section that lists the prior twenty
items ordered by the member and allows any of those items to be added to the
current cart.
- New Report: Member Balances Outstanding
The new Member Balances Outstanding report shows the "bottom
line" of the Member Balances Lookup for large groups of members at a
time in order to simplify the task of finding members with outstanding
balances.
- Optional bookmark icon
A favicon.ico can set in the configuration file if available.
- Addition of a new Membership Types table
The membership_types table, in combination with the
members table takes over where the members_type
table left off. When used with the new membership forms, the
membership_types table provides information about membership
levels, joining-fees, per-order fees, annual fees, and whether the member
should initially be pending.
Note: Currently only the initial
membership fees and per-order fees are utilized by the system, however the
annual membership fees will be implemented in future releases.
- Taxable categories
Categories can now be set as taxed or non-taxed on an individual
basis.
- Category and Subcategory editing
The admin section now provides an editor for editing names of
categories and subcategories and for changing the ordering of categories.
Possible point of confusion: The category and
subcategory editor also allows placement of categories into parent categories
to create a hierarchical arrangement. This works but until the product
display functions are changed to utilize the new feature, it may create
unpredictable sorting results. So it is best to leave every category in the
"All Products" level and sort them as desired from there.
- Order prep function
The admin section now provides a function for prepping new orders
which will make the required table transfers and updates. The function also
gives the user an opportunity to mark products as changed or unchanged based
upon how they have changed. Important: This
is not a refined function, but it works. Because this function does some
automatic "juggling" of product tables, it is strongly suggested
that a backup of the database be done prior to each use. Otherwise you may
end up with a data-disaster on your hands.