Friday, September 09, 2005

OFBiz Development SVN r5679

51 new commits this week. SVN 5679 builds and installs successfully.

Significant changes this week
  1. New ProductPricePurpose entity and modifications to calculateProductPrice to support it.
  2. Significant amount of more work on contact lists and communication events (ie, sending out emails to a marketing list)
  3. Lots of UI enhancements
  4. Lots of bug fixes
  5. New simple hotel reservation demo from Hans.
The ProductPricePurpose change is pretty significant, and fortunately David provide us with detailed comments on is, so I'll copy it here:
... in the past we had an over-use of the productPriceTypeId and have come up with a need to use some of those other price types, but along with the price calculation and such. The solution is to introduce the concept of the ProductPricePurpose, so we have a new table for that and a new field on the ProductPrice entity for the productPricePurposeId. Previous calculated prices are now considered to have the PURCHASE purpose, and for the calculateProductPrice service if you don't pass in the purpose you want it defaults to PURCHASE. Some previous ProductPriceTypes are no longer used as such and are now ProductPricePurposes, namely RECURRING_CHARGE, USAGE_CHARGE, and COMPONENT_PRICE. The real driving force behind this change is a need to support price calculation for RECURRING_CHARGE and COMPONENT_PRICE, and other custom or future price purposes. NOTE: this did require a primary key change for the ProductPrice table, the calculateProductPrice service will still support a null productPricePurposeId so that after an upgrade the whole system won't be useless, but that table or the pk on that table should be rebuilt right away for this change. All ProductPrice seed data has been updated to support this change.

Thanks to our contributors
This week's contributors include Adam Heath, Pierre G., Buxerolles, Tarlika Erika Schmidt, Rupinder Mazara, Andrew Sykes, Hans, Jacopo, David, Andy, and myself.

Entity Model Changes
  • New ProductPricePurpose entity and foreign-key from ProductPrice to ProductPricePurpose (r 5638)
  • Product config entities are regrouped under "org.ofbiz.product.config" and moved around in the entitymodel.xml file (r 5638)
  • OrderPaymentPreference now has a new productPricePurposeTypeId field to record different preferences for different price purposes: ie, cash for an initial purchase, credit card for recurring purchases (r 5644)

Seed Data Changes

  • New UOM data for data size (KB, MB, GB, TB) and transfer speeds (Mbps, etc.) with conversion factors (r 5637)
  • Demo data of GZ-BASKET and GZ-KIT. GZ-BASKET is an auto-exploded marketing package made up of 1 GZ-1000, 2 GZ-1001, and 3 GZ-1004, so its quantity is based on the minimum number of GZ-BASKETs which can be made from the member products (r 5652, 5653)
  • Changes in the description of manufacturing work efforts (r 5672)
  • Fixed the primary key field (geoId) of Geo data for Italy, so for example, Agrigento's id is now "IT-AG" instead of just "AG," in case there are other countries which also have abbreviation "AG." (r 5674)
Base and Framework
  • Entity engine can now figure out if the primary key fields of the data model (defined in entity model XML) are actually primary keys in the database (r 5636)
  • New UtilDateTime.toCalendar method which converts a Timestamp to Calendar (r 5640)
  • Comment about the fileName attribute of the runOfflineEntitySync service - apparently, entity sync can now be saved to a file and run offline with a default name of offline_entitySync-${entitySyncId}-${yyMMddHHmmss}.xml (r 5645)
  • New CSS for buttontext so they now look like little buttons, and new linktext class for links that should look like links (r 5648)
  • Fix to model form to help with reuse (r 5675)
  • Changed attributes of "size," "start," "view-index," "view-size" for simple-methods, widget-form, and widget-tree from integer to strings to be less restrictive (r 5678)
Accounting
  • Fixed bug where a null status could cause display of payments to crash (r 5655)
  • Applying payments' list of tax authorities geoIds can now be null (r 5656)
  • Fixed problem with invoiceItemSeqId - it is now always formatted with UtilFormatOut.formatPaddedNumber (r 5659)
Content
  • Layout change of controller.xml for content manager (r 5647)
  • Fixed titles of pages in the content manager's Data Setup screens (r 5661)
Manufacturing
  • Modified UI labels for actual and estimated times in production run's "Declare" form (r 5671)
Marketing
  • Clean up and enhancements to the contact list UI (r 5650)
  • New screens and services to create contact list communication events (r 5660, r 5673)
Order
  • Fixed bug where return header screen crashes because it's looking for a non-existent field in OrderRole (r 5629)
  • Fixed bug with trying to add an item to an existing order when the payment method is "Offline Payment" (r 5630)
  • Internationalization for "jurisdiction" and telephone number extensions (r 5632)
  • Fixed quote adjustment-related bug when making new shopping cart item (r 5635)
  • Clean up of shipsettings page for purchase orders (r 5641)
  • Fixed bug with sending order change notification caused because UtilValidate.isEmail thinks that null is a valid email (r 5649)
  • Fixed bug where tracking codes of orders were incorrectly displayed (r 5654)
  • Fixed bug with receiving inventory from returns caused by all the items' inventoryItemTypeId being lumped into one input field on the form (r 5657)
  • Fixed bug where inventory from "quick refund entire order" is always received as serialized, which is a problem because serialized inventory is currently not working. Now it looks to the facility and uses its defaultInventoryItemTypeId (r 5658)
  • Fixed problems where if "Quick Ship Entire Order" and "Quick Refund Entire Order" caused errors, those errors were not displayed. This is a temporary fix by switching their responses to "view" instead of "request-redirect." (r 5662)
  • "Quick Ship Entire Order" option is removed for purchase orders. It is only intended for sales orders, and showing it causes confusion. (r 5664)
  • Product detail page in order entry now allows selection of date by calendar (r 5670)
  • Internationalization of the order list page (r 5676)
  • OrderReadHelper now explicitly sorts the order status by datetime (r 5677)
Product
  • Fixed bug where shipment labels could not be viewed due to a type cast exception by using the GenericValue .getBytes() method on ShipmentPackageRouteSeg's labelImage field, instead of using .get() and force casting into ByteWrapper (r 5631)
  • Added warning messages to log when a shipment is created without origin or destination contact information (r 5633)
  • Removed "label here" debugging message from shipment route segment page in Facility Manager's shipping tab (r 5634)
  • calculateProductPrice service now uses ProductPricePurpose but still works if it is absent to be backwards compatible (r 5638)
  • Clean up to ProductForms' AddSupplierProduct (r 5641)
  • calcualteProductPrice now has a termUomId parameter which is used to specify that the right recurring term (daily, weekly, monthly, etc.) is supported (r 5642, 5643)
  • UI clean up for catalog manager's product content and product forms (r 5646)
  • getProductInventoryAvailable now calculates the inventory ATP and QOH quantities based on the inventory of the underlying products if the item is a MARKETING_PKG_AUTO (auto-exploded marketing package) (r 5651)
  • In catalog manager, inventory items with negative quantities are now shown that the total ATP/QOH at the top match the list of inventory items on the bottom. (r 5663)
  • Catalog manager now has a mainDecoratorLocation defined in web.xml and used through all the screens, to make re-defining the decorator template easier (r 5679)
Travel Systems
  • There is now a demo of a super simple hotel reservation site, "HotelSimple." For more information, see the README.txt/.pdf/.sxw files in specialized/opentravelsystem/ (r 5666, 5667, 5668, 5669)