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.
HomeWho’s Using It?DownloadsHow to HelpOther Resources

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

  1. 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.
  2. 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.
  3. Modification to shopping cart function
    Shopping cart page has been reformatted to be more concise.
  4. 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.
  5. 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".
  6. 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.
  7. 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 member’s invoice and in the Member Balance Lookup function.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. Removal of dead files
    Miscellaneous files that are no longer needed have been removed from the distribution.

Deprecated Features from v1.4.4

  1. 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 members’s most recent order. Removal of this table is an effort to simplify certain things.
  2. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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".
  6. 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.
  7. 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".
  8. 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.
  9. 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).
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. Optional bookmark icon
    A favicon.ico can set in the configuration file if available.
  17. 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.
  18. Taxable categories
    Categories can now be set as taxed or non-taxed on an individual basis.
  19. 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.
  20. 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.