You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Mark Whitis (JIRA)" <ji...@apache.org> on 2009/08/09 11:02:14 UTC

[jira] Created: (OFBIZ-2820) Pricing for variable size objects

Pricing for variable size objects
---------------------------------

                 Key: OFBIZ-2820
                 URL: https://issues.apache.org/jira/browse/OFBIZ-2820
             Project: OFBiz
          Issue Type: New Feature
          Components: product
    Affects Versions: SVN trunk
         Environment: all
            Reporter: Mark Whitis


OFBiz seems to lack support for variable size objects.

Examples:
   -   5.36 hours of time at $100 for first hour and $75 per additional hour billed in increments of 15 minutes.

   - 1.7 yards of cloth at $6.37 per yard

   - 1.5lb of bulk whole wheat flour at $1.58/pound

   - 4 pieces 6 inches long of alloy 6061-T6511 aluminum 1" square bar stock:
        - Maximum length per piece: 108 inches
        - Pull charge: $0.50
        - Cutting charge: 4 cuts at $0.15/cut  - may be global or item specific or calculated based on cross section and material
        - Cross section: 1 cubic inch per inch (line item specific)
        - Density: 0.098 pounds per cubic inch (shared for all 6061-T6511 products)
        - Shape modifier:    1.00 for square shape (line item or category specific) - some shapes may be more expensive per unit weight.
        - Shipping weight:  piece_length*number_of_pieces*cross_section*density
        - cost per pound: shared with other 6061-T6511 product
        - Cost: pull_charge+cut_charge*number_of_pieces+cross_section*density*shape_modifier*price_per_pound*(piece_length+kerf)*number_of_pieces
         The cost of aluminum may change frequently.   Price calculation might be based on the current spot price of aluminum, inventory replacement cost (same as preceeding), or the cost when these particular bars were acquired, or some function that takes both into account.
          Remainder charges:   Since pieces are cut from fixed length bars, Prices may figure in a surcharge based on the remaining portion that will be more or less unsaleable and has to be sold as surplus, melted down, etc.   Or alternatively, this can be included in the charge
          and a discount offered for full bar lengths supplied as full bar or cut up.     So, you pay a reduced price per inch (or a fixed cost) if you buy a full bar or if you order a full bar cut to length, etc.
         - Full bar price modifier: 0.80.
           example: 13 pieces 16" long (+1/8" saw kerf) gets 7 pieces from the first bar, charged as 1 bar + 7 cuts, and 6 pieces from the second bar charged by the inch.    However, since the full bar price is lower, in this case, this can be charged as 2 bars + 13 cuts.
          Example sites: www.asapsource.com, www.onlinemetals.com, www.industrialmetals.com.    Various levels of dysfunction.   ASAP's web store can handle per inch pricing but can't factor in the cutting prices properly so they charge greatly inflated (almost 4x what the price should be) cost per inch.    industrialmetals web store can't handle per inch pricing so they clutter up the website with 12", 24", 36", 48", 60", and 72" standard lengths of the same item, you have to contact them if you want a different length, and a substantial portion of their inventory isn't in the webstore due to the burden of creating six or more products per item (not to mention having to change hundreds of items * 6 copies when the cost of materials changs).
    - t-slot structural aluminum 
         This is very similar to the bar stock given above.    However, there is a twist.    There are optional standard machining services.
           - 4 pieces 32" long of 10EX1020 extrusion
                - 1 clearance hole {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
                - 1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
                -1 clearance hole 0.125" diameter measured 0.5" from end B along grove A
               - 1 clearance hole 0.125" diameter measured 0.5" from end B along grove B
               - 1 customer part number marking: "XYZ001"
           - 2 pieces 32" long of 10EX1020 extrusion
                  - 1 {clearance hole} {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
                -   1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
                - 1 clearance hole 0.125" diameter measured 1.5" from  end A along grove A
                - 1 clearance hole 0.125" diamter measured 1.5" from end A along grove B
                - (four more holes - repeat above for end B).
                - 1 customer part number marking: "XYZ002"
           
        In this case, clearance hole is  a partnumber and there is another partnumber for counterbore and another for an angled counterbore/hole, etc.     The catch is that this lineitem needs to capture 4 parameters and be a sub-item under the first item.  The association with the parent item must be maintained.     Further, the cost is multiplied by the piece count, so this is 32 hole charges
total and 6 part number markings.   Also note that the separate line items may not be combined.   Even though we have two line items
with the same base part number, the length and or modifications may differ.   Sample websites: www.8020.net, www.faztek.net.
You have to look at the PDF catalogs for details of machining services.     8020 doesn't have a webstore (they sell through distributors) and many of their distributors don't either.    Faztek's web store includes only standard 97" lengths, no cut to length and no drilling (even though they provide these services).

Note that this is best served by named expressions (or even functions, such as ECMAscript) which can be included by reference in each part number or category, making use of a combination of variables specific to the specific part number, a category, and global variables and which may be further modified by additional expressions.

   - Kitting
         Line items may be grouped into "kits".     This applies to the metal parts above and to electronic components and various other
          situations.   When combined with line item specific modifications, your order list is now a three layer outline:
         - Kit 1, Marking "KIT001"
             - line item
             - line item 
             - line item ...
        - Kit 2, Marking "KIT002"
             -line item
                  - modification
                  - modification
             -line item
       Identical line items need to be kept separate between different kits, for packaging reasons.    For pricing, the price may be computed
       separately (cost  for counting/packaging separately) or combined (quantity discount) or somewhere in between.       
      Other applications require kitting as well.   For example: "Bob's office suppies" and "Jane's office supplies" may be combined in one
      order (saves shipping, quantity discounts, etc) but be packed seperately.    Note that you may order more than one of each kit - thus the quantities for each line item are multiplied by the kit quantity (if you order 10 of a kit, you may also choose from 10 separate subpackages or 1 separate subpackage containing 10x the quantity).   You may also reorder these kits in the future, so it is helpful to store these in the customer profile.    Many companies in many industries offer kitting.   I have yet to see one that can do so via the web store.

 - Shipping limits
    Metal is typically supplied from the extruder/mill/foundry/etc to distributor's in 10' or 20' lengths.    However, UPS imposes limits
    of 9' length, 165" length (not too much danger, there) + girth, and 150lbs per package (which can easily be exceeded by a short length of steel with a large crossection).

 - Plastics: almost identical to metal as far as e-commerce requirements.

 - Complicated Example
   One of the more complicated online stores is www.digikey.com and it is instructive for anyone developing a web store application.   Digikey is the amazon of its industry.    They STOCK 450,000 products and list many more in their catalog, they ship over 2 million orders each year from a 14 acre automated facility.   Their success is largely due to their power of their online catalog.  Search for "74HC00", then select "Fairchild", "Surface mount", "4-quad", "14-soic","in-stock", "lead free", "rohs", then hit "apply filters".  
      - When you entered 74HC00, it did a partial part number search.    The algorithm is complicated but similar throught the industry.
        74HC00 matched "MM74HC00M" and "MM74HC00MX".   Seems simple enough.  A search term of "7400" also would have matched those
        parts but a search term of "74HC00" would not have matched the part number "SN7400N".      It also searched in multiple fields
        incuding manufacturer's part number, digikey part number, description, etc.    The funny matching algorithm only applies to
        the first two part number fields.
    - Notice that it had a lot of parameters for each part, and you can select from them.    The parameters vary by category - there may
      be some overlap.
   - Also notice that the parameters are displayed in parts listings - not just item number, description, and price.  One of those parameters
     is actually a link to the datasheet (it is a little more complicated than that as there may be more than one datasheet or drawing
     per part.   
   - They also have links to catalog pages on the item detail pages, where appropriate.
    - Notice that the same product is available in 4 different packaging.     They get it from the manufacturer in both tubes and reels of 2500.     They will provide you with a whole reel or cut a specified number of parts of a reel and provide those as cut tape or they will cut a specified number of parts off a reel and splice those onto a new reel for $7 + cost of parts.     They will provide you with a whole tube or
transfer a specific number of parts to a new tube.   Note that they have pricing that varies by quantity ordered.   Their pricing reflects quantity discounts/price breaks (common for the industry), minimum orders per line item (for a $0.05 part, the minimum quantity is 10 - it would cost that much to pull one part as well as large minimums for many (but not all) non-stock items), order multiples (multiples of 2500 for full reel pricing), etc.    Underneath, these prices are partly based on the cost of pulling and repackaging each part as well as the notion of cost.
   - Three of the digikey part numbers pull stock from the same inventory.
   - You can't see it unless you create an account, but you can also add parts to your shopping cart by uploading a CSV file.   I think
     they also do EDI.   They lack the ability to order a list of parts by clicking on a web link (i.e. to build this, you need these quantities
     of these 25 different items.  Click here to order from digikey.   They also lack an open XML-RPC/SOAP/etc. alternative to closed (and ugly) standard EDI.
    - Customer reference number can be added to each line item
    - Although you can't see it in this example, some of the parts are value added parts.     They take multiple part numbers and
      combine (assemble) them into one.   This means they draw on the inventories of those parts.   The digireel, in this example, though, is a primitive
      example of this ($7 reel + parts).


   - The program appears to let you define options for each item and even a price per option.   Configurable PC, for example.
      But it doesn't let you choose more than one of the same option.    Hard drives are implemented, for example, by having configuration
      items for 1st hard drive and 2nd hard drive.    3rd hard drive isn't an option.      "Choose up to 4 items from the following list", with
      a quantity for each.     With a sub option (in the case of hard drives) for which port to connect to.     

  -  For more complicated situations, extending the previous one, you need the notion of consumable resources.
      1 Bare bones PC, contains part #xxx motherboard, contains part #xxx case,  ...
      Qty __ 500GB SATA internal hard drive (default), $100, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
      Qty __ 1000GB SATA internal hard drive, $150, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2 external bay
     consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
      [ ] Replace default hard drive with another purchased hard drive ordered on same order -$100.
      Qty ___ SATA DVD+RW burner, $150, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes 5V@1A, 12V@1A, 1 SATA power connector
      Qty ___ SATA CD-ROM drive, $50, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes power....
      Qty ___ 500GB IDE internal hard drive, $100, consumes 1 IDE port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes power....
      Qty ___ PCI->SATA RAID controller, Consumes 1 PCI slot, provides 4 IDE Ports named xx.RAID1, xx.RAID2, xx.RAID3, and xx.RAID4, consumes power...
      Qty ___ SATA->SATA RAID controller, Consumes 1 RAID port, provides 4 RAID PORTS named yy.RAID1, yy.RAID2, yy.RAID3, yy.RAID4, consumes power...
      Qty ___ Display controller, Consumes 1 PCI-Express x16 port   (ok, SLI complicates things by letting you have one 16x port and one unusable port or two 8x ports).   Provides 1 DVI port OR 1 VGA port (but not both simultaneusly), incompatible with #WINVista Windows Vista.
     Qty ___ SATA->ESATA adapter.  Consumes 1 SATA, consumes 1 slot opening, provides 1 ESATA port.
     Qty ___ IDE->SATA adapter.  Consumes 1 IDE port, provides 1 SATA port   (there are gender issues)
     Qty ___ SATA->IDE adapter.  Consumes 1 SATA port, provides 1 IDE port..
     Qty ___ 350W power supply (default) Consumes 1 power supply bay.  Provides 5V@15A, 12V@10A, Provides 1 motherboard power connector, Provides 2 floppy power connectors, provides 2 SATA power connectors, Provides 2 IDE power connectors.
     Qty ___ 500W power supply.   Consumes 1 power supply bay.  Provides 5V@20A, 12V@15A
     Qty ___ IDE->SATA power adapter.   Consumes 1 IDE power connector, Provides 1 SATA power connector
     Qty ___ SATA->IDE power adapter.   Consumes 1 SATA power connector, Provides 1 SATA power connector
     Qty___ SATA Power Y connector.   Consumes 1 SATA power connector, Provides 2 SATA power connector
     Qty ___ Ubuntu Linux 9.04 AMD64
     Qty ___ Ubuntu Linux 9.04 I386
     Qty ___ Windows XP
     Qty ___ Windows Vista
     [ ] software install
     [ ] hardware install 
     Qty ___ Opteron CPU fan
   The catalog will ask where you want each attached, choosing the first unused port in each category by default.   "You decide" might
be a useful choice as well for user's who don't understand internals.


     Resources may be divided into subpools.     Some resources may be converted into other resources.  Some PCI-Express ports are usable as narrower ports and some aren't.    Each PCI or PCI-Express port provides either the appropiate port or 1 slot opening in the case, but not both.    In some cases, resource constraints may not be satisfied but user should be able to order anyway; user may have some parts already or know better.    But the user should be warned.   Resources may be provided (or consumed) from another part number included by reference in the list of options.   The options above can be broken down into categories.     Note that resources aren't necessarily integer quantities: Power consumption is an example.

User should be able to add a part number not on the list of options to the parent part number.    I.E. If a 1.5TB hard drive wasn't listed as one of the options, user can still
order it as part of the system in addition to or in place of the options above.   Some constaints may be imposed on package pricing, in that case.   Or the package may be based on actual prices of included part numbers minus a discount if order 1 CASE, 1 Motherboard>=$150, 1CPU, 1Hard Drive>=$100, total value of preceeding >=$400, total value of system >=$500.  

I am not running a web store which needs these features.    But, I do order from suppliers who do and am inconvenienced by their dysfunctional stores.    While these features may seem specific to specific industries, they are actually common across many.   Textiles, bulk foods, metal, and electronic components are just a few examples.

- Ability to import descriptions (including all the options, pictures, text, etc) from another company's catalog for many products at the same time.     Assume the other company is running same software for starters, but do it in a way that isn't specific to one program and is easily modifiable.   But start with basic import/export.   Descriptions of parts can be complicated.   Distrubutors and retailers may carry hundreds, thousands, or even millions of items.     Distributor should be able to import from manufacturer and retailer from distributor.      Various types of filtering should be provided.   Shouldn't just be a one time import - details change.   New products are added, products are discontinued, details are updated, wholesale costs change.   New items should go in a queue to be approved before being added.   Some parts of the description may come from upstream, others may be local.

Metal is a particularly nasty example, as a customer, because shipping charges can be a substantial fraction of the order cost (aluminum) or even far exceed it (steel is cheaper and heavier). Thus, it is advantage to order from a nearby supplier.    However, due in no small part to software limitations, only a few companies have functional online ordering for metals.   Proper support in an open source package would make it possible for large numbers of local suppliers to provide online ordering.   Individual local distributors typically won't pay for custom development or expensive proprietary solutions.   Especially for something that is not specific to their company or even their industry but is actually something that should be a standard feature of all e-commerce packages that want to be taken seriously.  They also aren't likely to be too hot on the idea of spending a lot of money funding an open source implementation that their competitors can use for free.  And this hurts local customers, engineers (overhead for ordering parts for prototypes or budgeting pricing is worse than if you were ordering a 1000 parts), local manufacturers, and the local and national economy.   And since real companies with complicated products may need sophisticated company specific customization over and above the standard stuff described here, it needs to be one with a reasonable license, not GPL.

Ultimately, implementing these is in the interests of society.  I would do it myself, for that reason, if I had the time.    However, I have a whole lot more complicated stuff to work on.     This is fairly easy, in comparison (though time consuming).    This is likely to be more than a few plugins - chances are some weaknesses in the core will be exposed.


Not only should these features be implemented, but the online demo's should show them off.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OFBIZ-2820) Pricing for variable size objects

Posted by "Mark Whitis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OFBIZ-2820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741054#action_12741054 ] 

Mark Whitis commented on OFBIZ-2820:
------------------------------------

Note that the issue tracker flattened some outlines that were two, three, or four levels deep to a single level.

> Pricing for variable size objects
> ---------------------------------
>
>                 Key: OFBIZ-2820
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-2820
>             Project: OFBiz
>          Issue Type: New Feature
>          Components: product
>    Affects Versions: SVN trunk
>         Environment: all
>            Reporter: Mark Whitis
>
> OFBiz seems to lack support for variable size objects.
> Examples:
>    -   5.36 hours of time at $100 for first hour and $75 per additional hour billed in increments of 15 minutes.
>    - 1.7 yards of cloth at $6.37 per yard
>    - 1.5lb of bulk whole wheat flour at $1.58/pound
>    - 4 pieces 6 inches long of alloy 6061-T6511 aluminum 1" square bar stock:
>         - Maximum length per piece: 108 inches
>         - Pull charge: $0.50
>         - Cutting charge: 4 cuts at $0.15/cut  - may be global or item specific or calculated based on cross section and material
>         - Cross section: 1 cubic inch per inch (line item specific)
>         - Density: 0.098 pounds per cubic inch (shared for all 6061-T6511 products)
>         - Shape modifier:    1.00 for square shape (line item or category specific) - some shapes may be more expensive per unit weight.
>         - Shipping weight:  piece_length*number_of_pieces*cross_section*density
>         - cost per pound: shared with other 6061-T6511 product
>         - Cost: pull_charge+cut_charge*number_of_pieces+cross_section*density*shape_modifier*price_per_pound*(piece_length+kerf)*number_of_pieces
>          The cost of aluminum may change frequently.   Price calculation might be based on the current spot price of aluminum, inventory replacement cost (same as preceeding), or the cost when these particular bars were acquired, or some function that takes both into account.
>           Remainder charges:   Since pieces are cut from fixed length bars, Prices may figure in a surcharge based on the remaining portion that will be more or less unsaleable and has to be sold as surplus, melted down, etc.   Or alternatively, this can be included in the charge
>           and a discount offered for full bar lengths supplied as full bar or cut up.     So, you pay a reduced price per inch (or a fixed cost) if you buy a full bar or if you order a full bar cut to length, etc.
>          - Full bar price modifier: 0.80.
>            example: 13 pieces 16" long (+1/8" saw kerf) gets 7 pieces from the first bar, charged as 1 bar + 7 cuts, and 6 pieces from the second bar charged by the inch.    However, since the full bar price is lower, in this case, this can be charged as 2 bars + 13 cuts.
>           Example sites: www.asapsource.com, www.onlinemetals.com, www.industrialmetals.com.    Various levels of dysfunction.   ASAP's web store can handle per inch pricing but can't factor in the cutting prices properly so they charge greatly inflated (almost 4x what the price should be) cost per inch.    industrialmetals web store can't handle per inch pricing so they clutter up the website with 12", 24", 36", 48", 60", and 72" standard lengths of the same item, you have to contact them if you want a different length, and a substantial portion of their inventory isn't in the webstore due to the burden of creating six or more products per item (not to mention having to change hundreds of items * 6 copies when the cost of materials changs).
>     - t-slot structural aluminum 
>          This is very similar to the bar stock given above.    However, there is a twist.    There are optional standard machining services.
>            - 4 pieces 32" long of 10EX1020 extrusion
>                 - 1 clearance hole {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
>                 - 1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
>                 -1 clearance hole 0.125" diameter measured 0.5" from end B along grove A
>                - 1 clearance hole 0.125" diameter measured 0.5" from end B along grove B
>                - 1 customer part number marking: "XYZ001"
>            - 2 pieces 32" long of 10EX1020 extrusion
>                   - 1 {clearance hole} {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
>                 -   1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
>                 - 1 clearance hole 0.125" diameter measured 1.5" from  end A along grove A
>                 - 1 clearance hole 0.125" diamter measured 1.5" from end A along grove B
>                 - (four more holes - repeat above for end B).
>                 - 1 customer part number marking: "XYZ002"
>            
>         In this case, clearance hole is  a partnumber and there is another partnumber for counterbore and another for an angled counterbore/hole, etc.     The catch is that this lineitem needs to capture 4 parameters and be a sub-item under the first item.  The association with the parent item must be maintained.     Further, the cost is multiplied by the piece count, so this is 32 hole charges
> total and 6 part number markings.   Also note that the separate line items may not be combined.   Even though we have two line items
> with the same base part number, the length and or modifications may differ.   Sample websites: www.8020.net, www.faztek.net.
> You have to look at the PDF catalogs for details of machining services.     8020 doesn't have a webstore (they sell through distributors) and many of their distributors don't either.    Faztek's web store includes only standard 97" lengths, no cut to length and no drilling (even though they provide these services).
> Note that this is best served by named expressions (or even functions, such as ECMAscript) which can be included by reference in each part number or category, making use of a combination of variables specific to the specific part number, a category, and global variables and which may be further modified by additional expressions.
>    - Kitting
>          Line items may be grouped into "kits".     This applies to the metal parts above and to electronic components and various other
>           situations.   When combined with line item specific modifications, your order list is now a three layer outline:
>          - Kit 1, Marking "KIT001"
>              - line item
>              - line item 
>              - line item ...
>         - Kit 2, Marking "KIT002"
>              -line item
>                   - modification
>                   - modification
>              -line item
>        Identical line items need to be kept separate between different kits, for packaging reasons.    For pricing, the price may be computed
>        separately (cost  for counting/packaging separately) or combined (quantity discount) or somewhere in between.       
>       Other applications require kitting as well.   For example: "Bob's office suppies" and "Jane's office supplies" may be combined in one
>       order (saves shipping, quantity discounts, etc) but be packed seperately.    Note that you may order more than one of each kit - thus the quantities for each line item are multiplied by the kit quantity (if you order 10 of a kit, you may also choose from 10 separate subpackages or 1 separate subpackage containing 10x the quantity).   You may also reorder these kits in the future, so it is helpful to store these in the customer profile.    Many companies in many industries offer kitting.   I have yet to see one that can do so via the web store.
>  - Shipping limits
>     Metal is typically supplied from the extruder/mill/foundry/etc to distributor's in 10' or 20' lengths.    However, UPS imposes limits
>     of 9' length, 165" length (not too much danger, there) + girth, and 150lbs per package (which can easily be exceeded by a short length of steel with a large crossection).
>  - Plastics: almost identical to metal as far as e-commerce requirements.
>  - Complicated Example
>    One of the more complicated online stores is www.digikey.com and it is instructive for anyone developing a web store application.   Digikey is the amazon of its industry.    They STOCK 450,000 products and list many more in their catalog, they ship over 2 million orders each year from a 14 acre automated facility.   Their success is largely due to their power of their online catalog.  Search for "74HC00", then select "Fairchild", "Surface mount", "4-quad", "14-soic","in-stock", "lead free", "rohs", then hit "apply filters".  
>       - When you entered 74HC00, it did a partial part number search.    The algorithm is complicated but similar throught the industry.
>         74HC00 matched "MM74HC00M" and "MM74HC00MX".   Seems simple enough.  A search term of "7400" also would have matched those
>         parts but a search term of "74HC00" would not have matched the part number "SN7400N".      It also searched in multiple fields
>         incuding manufacturer's part number, digikey part number, description, etc.    The funny matching algorithm only applies to
>         the first two part number fields.
>     - Notice that it had a lot of parameters for each part, and you can select from them.    The parameters vary by category - there may
>       be some overlap.
>    - Also notice that the parameters are displayed in parts listings - not just item number, description, and price.  One of those parameters
>      is actually a link to the datasheet (it is a little more complicated than that as there may be more than one datasheet or drawing
>      per part.   
>    - They also have links to catalog pages on the item detail pages, where appropriate.
>     - Notice that the same product is available in 4 different packaging.     They get it from the manufacturer in both tubes and reels of 2500.     They will provide you with a whole reel or cut a specified number of parts of a reel and provide those as cut tape or they will cut a specified number of parts off a reel and splice those onto a new reel for $7 + cost of parts.     They will provide you with a whole tube or
> transfer a specific number of parts to a new tube.   Note that they have pricing that varies by quantity ordered.   Their pricing reflects quantity discounts/price breaks (common for the industry), minimum orders per line item (for a $0.05 part, the minimum quantity is 10 - it would cost that much to pull one part as well as large minimums for many (but not all) non-stock items), order multiples (multiples of 2500 for full reel pricing), etc.    Underneath, these prices are partly based on the cost of pulling and repackaging each part as well as the notion of cost.
>    - Three of the digikey part numbers pull stock from the same inventory.
>    - You can't see it unless you create an account, but you can also add parts to your shopping cart by uploading a CSV file.   I think
>      they also do EDI.   They lack the ability to order a list of parts by clicking on a web link (i.e. to build this, you need these quantities
>      of these 25 different items.  Click here to order from digikey.   They also lack an open XML-RPC/SOAP/etc. alternative to closed (and ugly) standard EDI.
>     - Customer reference number can be added to each line item
>     - Although you can't see it in this example, some of the parts are value added parts.     They take multiple part numbers and
>       combine (assemble) them into one.   This means they draw on the inventories of those parts.   The digireel, in this example, though, is a primitive
>       example of this ($7 reel + parts).
>    - The program appears to let you define options for each item and even a price per option.   Configurable PC, for example.
>       But it doesn't let you choose more than one of the same option.    Hard drives are implemented, for example, by having configuration
>       items for 1st hard drive and 2nd hard drive.    3rd hard drive isn't an option.      "Choose up to 4 items from the following list", with
>       a quantity for each.     With a sub option (in the case of hard drives) for which port to connect to.     
>   -  For more complicated situations, extending the previous one, you need the notion of consumable resources.
>       1 Bare bones PC, contains part #xxx motherboard, contains part #xxx case,  ...
>       Qty __ 500GB SATA internal hard drive (default), $100, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
>       Qty __ 1000GB SATA internal hard drive, $150, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2 external bay
>      consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
>       [ ] Replace default hard drive with another purchased hard drive ordered on same order -$100.
>       Qty ___ SATA DVD+RW burner, $150, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes 5V@1A, 12V@1A, 1 SATA power connector
>       Qty ___ SATA CD-ROM drive, $50, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes power....
>       Qty ___ 500GB IDE internal hard drive, $100, consumes 1 IDE port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes power....
>       Qty ___ PCI->SATA RAID controller, Consumes 1 PCI slot, provides 4 IDE Ports named xx.RAID1, xx.RAID2, xx.RAID3, and xx.RAID4, consumes power...
>       Qty ___ SATA->SATA RAID controller, Consumes 1 RAID port, provides 4 RAID PORTS named yy.RAID1, yy.RAID2, yy.RAID3, yy.RAID4, consumes power...
>       Qty ___ Display controller, Consumes 1 PCI-Express x16 port   (ok, SLI complicates things by letting you have one 16x port and one unusable port or two 8x ports).   Provides 1 DVI port OR 1 VGA port (but not both simultaneusly), incompatible with #WINVista Windows Vista.
>      Qty ___ SATA->ESATA adapter.  Consumes 1 SATA, consumes 1 slot opening, provides 1 ESATA port.
>      Qty ___ IDE->SATA adapter.  Consumes 1 IDE port, provides 1 SATA port   (there are gender issues)
>      Qty ___ SATA->IDE adapter.  Consumes 1 SATA port, provides 1 IDE port..
>      Qty ___ 350W power supply (default) Consumes 1 power supply bay.  Provides 5V@15A, 12V@10A, Provides 1 motherboard power connector, Provides 2 floppy power connectors, provides 2 SATA power connectors, Provides 2 IDE power connectors.
>      Qty ___ 500W power supply.   Consumes 1 power supply bay.  Provides 5V@20A, 12V@15A
>      Qty ___ IDE->SATA power adapter.   Consumes 1 IDE power connector, Provides 1 SATA power connector
>      Qty ___ SATA->IDE power adapter.   Consumes 1 SATA power connector, Provides 1 SATA power connector
>      Qty___ SATA Power Y connector.   Consumes 1 SATA power connector, Provides 2 SATA power connector
>      Qty ___ Ubuntu Linux 9.04 AMD64
>      Qty ___ Ubuntu Linux 9.04 I386
>      Qty ___ Windows XP
>      Qty ___ Windows Vista
>      [ ] software install
>      [ ] hardware install 
>      Qty ___ Opteron CPU fan
>    The catalog will ask where you want each attached, choosing the first unused port in each category by default.   "You decide" might
> be a useful choice as well for user's who don't understand internals.
>      Resources may be divided into subpools.     Some resources may be converted into other resources.  Some PCI-Express ports are usable as narrower ports and some aren't.    Each PCI or PCI-Express port provides either the appropiate port or 1 slot opening in the case, but not both.    In some cases, resource constraints may not be satisfied but user should be able to order anyway; user may have some parts already or know better.    But the user should be warned.   Resources may be provided (or consumed) from another part number included by reference in the list of options.   The options above can be broken down into categories.     Note that resources aren't necessarily integer quantities: Power consumption is an example.
> User should be able to add a part number not on the list of options to the parent part number.    I.E. If a 1.5TB hard drive wasn't listed as one of the options, user can still
> order it as part of the system in addition to or in place of the options above.   Some constaints may be imposed on package pricing, in that case.   Or the package may be based on actual prices of included part numbers minus a discount if order 1 CASE, 1 Motherboard>=$150, 1CPU, 1Hard Drive>=$100, total value of preceeding >=$400, total value of system >=$500.  
> I am not running a web store which needs these features.    But, I do order from suppliers who do and am inconvenienced by their dysfunctional stores.    While these features may seem specific to specific industries, they are actually common across many.   Textiles, bulk foods, metal, and electronic components are just a few examples.
> - Ability to import descriptions (including all the options, pictures, text, etc) from another company's catalog for many products at the same time.     Assume the other company is running same software for starters, but do it in a way that isn't specific to one program and is easily modifiable.   But start with basic import/export.   Descriptions of parts can be complicated.   Distrubutors and retailers may carry hundreds, thousands, or even millions of items.     Distributor should be able to import from manufacturer and retailer from distributor.      Various types of filtering should be provided.   Shouldn't just be a one time import - details change.   New products are added, products are discontinued, details are updated, wholesale costs change.   New items should go in a queue to be approved before being added.   Some parts of the description may come from upstream, others may be local.
> Metal is a particularly nasty example, as a customer, because shipping charges can be a substantial fraction of the order cost (aluminum) or even far exceed it (steel is cheaper and heavier). Thus, it is advantage to order from a nearby supplier.    However, due in no small part to software limitations, only a few companies have functional online ordering for metals.   Proper support in an open source package would make it possible for large numbers of local suppliers to provide online ordering.   Individual local distributors typically won't pay for custom development or expensive proprietary solutions.   Especially for something that is not specific to their company or even their industry but is actually something that should be a standard feature of all e-commerce packages that want to be taken seriously.  They also aren't likely to be too hot on the idea of spending a lot of money funding an open source implementation that their competitors can use for free.  And this hurts local customers, engineers (overhead for ordering parts for prototypes or budgeting pricing is worse than if you were ordering a 1000 parts), local manufacturers, and the local and national economy.   And since real companies with complicated products may need sophisticated company specific customization over and above the standard stuff described here, it needs to be one with a reasonable license, not GPL.
> Ultimately, implementing these is in the interests of society.  I would do it myself, for that reason, if I had the time.    However, I have a whole lot more complicated stuff to work on.     This is fairly easy, in comparison (though time consuming).    This is likely to be more than a few plugins - chances are some weaknesses in the core will be exposed.
> Not only should these features be implemented, but the online demo's should show them off.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OFBIZ-2820) Pricing for variable size objects

Posted by "Mark Whitis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OFBIZ-2820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741059#action_12741059 ] 

Mark Whitis commented on OFBIZ-2820:
------------------------------------

Another example: A custom window.   This has three variable dimensions.
   - base price
   - runner extusion 2 pieces of length window_width-1.5
   - runner extrusion 2 pieces of length window_height-1.5
   - 4 bevel cuts of above extrusions  (included in base price, since every window has them) - but still affect job time estimates, etc.
   - 4 window frame peices
    - Sawing down window frame if depth <4inches
    - Extending window frame if depth >8inches
    - wood for frame, length window_depth*(window_depth+window_height)*2
    - bevel cuts of above included in base price
    - 4pcs window slide frame molding, length=( window_height/2+2)
    - 4pcs window slide frame molding, length=(window_width-4)
    - 4 pieces glass 
               length=window_height/2-2
               width=window_width-4
               thickness=0.125
                weight=length*width*thickness*density
              swap length and width based on standard panel sizes (for some purposes, but not others - two new variables.  I.E one set is used for assembly and another is used for cutting operation and spoilage calculation)
              spoilage = (width_of_standard_sheet-width)*height*4, etc., etc.
              these last two items are where the internal calculation can get complicated.
    - glass cutting (included in base price)
    - assembly
    - weight = sum of weights of above materials
    ...
This is something that would be company specific/product specific code but it incorporates features above.    Equations.   Variable length parts.    Drawing inventory for one part from numerous other parts.    Manufacturer to distributer/retailer product description transfer (may be partial).   Variable length AND width AND depth.   This is an incomplete description of the parts and operations needed to make a window but enough to suggest the general features needed.  Unlike some of the other examples, this one might be forwarded from the retailer to distributor to manufacturer and back in real time - i.e. the manufacturer may not expose the whole formula.

Should someone building/modifying a house have to call the retailer who in turn calls the distributor who in turn calls the
manufacturer to get a quote?   That is a lot of phone tag for something the computer can calculate better than any of the people involved.



> Pricing for variable size objects
> ---------------------------------
>
>                 Key: OFBIZ-2820
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-2820
>             Project: OFBiz
>          Issue Type: New Feature
>          Components: product
>    Affects Versions: SVN trunk
>         Environment: all
>            Reporter: Mark Whitis
>
> OFBiz seems to lack support for variable size objects.
> Examples:
>    -   5.36 hours of time at $100 for first hour and $75 per additional hour billed in increments of 15 minutes.
>    - 1.7 yards of cloth at $6.37 per yard
>    - 1.5lb of bulk whole wheat flour at $1.58/pound
>    - 4 pieces 6 inches long of alloy 6061-T6511 aluminum 1" square bar stock:
>         - Maximum length per piece: 108 inches
>         - Pull charge: $0.50
>         - Cutting charge: 4 cuts at $0.15/cut  - may be global or item specific or calculated based on cross section and material
>         - Cross section: 1 cubic inch per inch (line item specific)
>         - Density: 0.098 pounds per cubic inch (shared for all 6061-T6511 products)
>         - Shape modifier:    1.00 for square shape (line item or category specific) - some shapes may be more expensive per unit weight.
>         - Shipping weight:  piece_length*number_of_pieces*cross_section*density
>         - cost per pound: shared with other 6061-T6511 product
>         - Cost: pull_charge+cut_charge*number_of_pieces+cross_section*density*shape_modifier*price_per_pound*(piece_length+kerf)*number_of_pieces
>          The cost of aluminum may change frequently.   Price calculation might be based on the current spot price of aluminum, inventory replacement cost (same as preceeding), or the cost when these particular bars were acquired, or some function that takes both into account.
>           Remainder charges:   Since pieces are cut from fixed length bars, Prices may figure in a surcharge based on the remaining portion that will be more or less unsaleable and has to be sold as surplus, melted down, etc.   Or alternatively, this can be included in the charge
>           and a discount offered for full bar lengths supplied as full bar or cut up.     So, you pay a reduced price per inch (or a fixed cost) if you buy a full bar or if you order a full bar cut to length, etc.
>          - Full bar price modifier: 0.80.
>            example: 13 pieces 16" long (+1/8" saw kerf) gets 7 pieces from the first bar, charged as 1 bar + 7 cuts, and 6 pieces from the second bar charged by the inch.    However, since the full bar price is lower, in this case, this can be charged as 2 bars + 13 cuts.
>           Example sites: www.asapsource.com, www.onlinemetals.com, www.industrialmetals.com.    Various levels of dysfunction.   ASAP's web store can handle per inch pricing but can't factor in the cutting prices properly so they charge greatly inflated (almost 4x what the price should be) cost per inch.    industrialmetals web store can't handle per inch pricing so they clutter up the website with 12", 24", 36", 48", 60", and 72" standard lengths of the same item, you have to contact them if you want a different length, and a substantial portion of their inventory isn't in the webstore due to the burden of creating six or more products per item (not to mention having to change hundreds of items * 6 copies when the cost of materials changs).
>     - t-slot structural aluminum 
>          This is very similar to the bar stock given above.    However, there is a twist.    There are optional standard machining services.
>            - 4 pieces 32" long of 10EX1020 extrusion
>                 - 1 clearance hole {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
>                 - 1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
>                 -1 clearance hole 0.125" diameter measured 0.5" from end B along grove A
>                - 1 clearance hole 0.125" diameter measured 0.5" from end B along grove B
>                - 1 customer part number marking: "XYZ001"
>            - 2 pieces 32" long of 10EX1020 extrusion
>                   - 1 {clearance hole} {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
>                 -   1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
>                 - 1 clearance hole 0.125" diameter measured 1.5" from  end A along grove A
>                 - 1 clearance hole 0.125" diamter measured 1.5" from end A along grove B
>                 - (four more holes - repeat above for end B).
>                 - 1 customer part number marking: "XYZ002"
>            
>         In this case, clearance hole is  a partnumber and there is another partnumber for counterbore and another for an angled counterbore/hole, etc.     The catch is that this lineitem needs to capture 4 parameters and be a sub-item under the first item.  The association with the parent item must be maintained.     Further, the cost is multiplied by the piece count, so this is 32 hole charges
> total and 6 part number markings.   Also note that the separate line items may not be combined.   Even though we have two line items
> with the same base part number, the length and or modifications may differ.   Sample websites: www.8020.net, www.faztek.net.
> You have to look at the PDF catalogs for details of machining services.     8020 doesn't have a webstore (they sell through distributors) and many of their distributors don't either.    Faztek's web store includes only standard 97" lengths, no cut to length and no drilling (even though they provide these services).
> Note that this is best served by named expressions (or even functions, such as ECMAscript) which can be included by reference in each part number or category, making use of a combination of variables specific to the specific part number, a category, and global variables and which may be further modified by additional expressions.
>    - Kitting
>          Line items may be grouped into "kits".     This applies to the metal parts above and to electronic components and various other
>           situations.   When combined with line item specific modifications, your order list is now a three layer outline:
>          - Kit 1, Marking "KIT001"
>              - line item
>              - line item 
>              - line item ...
>         - Kit 2, Marking "KIT002"
>              -line item
>                   - modification
>                   - modification
>              -line item
>        Identical line items need to be kept separate between different kits, for packaging reasons.    For pricing, the price may be computed
>        separately (cost  for counting/packaging separately) or combined (quantity discount) or somewhere in between.       
>       Other applications require kitting as well.   For example: "Bob's office suppies" and "Jane's office supplies" may be combined in one
>       order (saves shipping, quantity discounts, etc) but be packed seperately.    Note that you may order more than one of each kit - thus the quantities for each line item are multiplied by the kit quantity (if you order 10 of a kit, you may also choose from 10 separate subpackages or 1 separate subpackage containing 10x the quantity).   You may also reorder these kits in the future, so it is helpful to store these in the customer profile.    Many companies in many industries offer kitting.   I have yet to see one that can do so via the web store.
>  - Shipping limits
>     Metal is typically supplied from the extruder/mill/foundry/etc to distributor's in 10' or 20' lengths.    However, UPS imposes limits
>     of 9' length, 165" length (not too much danger, there) + girth, and 150lbs per package (which can easily be exceeded by a short length of steel with a large crossection).
>  - Plastics: almost identical to metal as far as e-commerce requirements.
>  - Complicated Example
>    One of the more complicated online stores is www.digikey.com and it is instructive for anyone developing a web store application.   Digikey is the amazon of its industry.    They STOCK 450,000 products and list many more in their catalog, they ship over 2 million orders each year from a 14 acre automated facility.   Their success is largely due to their power of their online catalog.  Search for "74HC00", then select "Fairchild", "Surface mount", "4-quad", "14-soic","in-stock", "lead free", "rohs", then hit "apply filters".  
>       - When you entered 74HC00, it did a partial part number search.    The algorithm is complicated but similar throught the industry.
>         74HC00 matched "MM74HC00M" and "MM74HC00MX".   Seems simple enough.  A search term of "7400" also would have matched those
>         parts but a search term of "74HC00" would not have matched the part number "SN7400N".      It also searched in multiple fields
>         incuding manufacturer's part number, digikey part number, description, etc.    The funny matching algorithm only applies to
>         the first two part number fields.
>     - Notice that it had a lot of parameters for each part, and you can select from them.    The parameters vary by category - there may
>       be some overlap.
>    - Also notice that the parameters are displayed in parts listings - not just item number, description, and price.  One of those parameters
>      is actually a link to the datasheet (it is a little more complicated than that as there may be more than one datasheet or drawing
>      per part.   
>    - They also have links to catalog pages on the item detail pages, where appropriate.
>     - Notice that the same product is available in 4 different packaging.     They get it from the manufacturer in both tubes and reels of 2500.     They will provide you with a whole reel or cut a specified number of parts of a reel and provide those as cut tape or they will cut a specified number of parts off a reel and splice those onto a new reel for $7 + cost of parts.     They will provide you with a whole tube or
> transfer a specific number of parts to a new tube.   Note that they have pricing that varies by quantity ordered.   Their pricing reflects quantity discounts/price breaks (common for the industry), minimum orders per line item (for a $0.05 part, the minimum quantity is 10 - it would cost that much to pull one part as well as large minimums for many (but not all) non-stock items), order multiples (multiples of 2500 for full reel pricing), etc.    Underneath, these prices are partly based on the cost of pulling and repackaging each part as well as the notion of cost.
>    - Three of the digikey part numbers pull stock from the same inventory.
>    - You can't see it unless you create an account, but you can also add parts to your shopping cart by uploading a CSV file.   I think
>      they also do EDI.   They lack the ability to order a list of parts by clicking on a web link (i.e. to build this, you need these quantities
>      of these 25 different items.  Click here to order from digikey.   They also lack an open XML-RPC/SOAP/etc. alternative to closed (and ugly) standard EDI.
>     - Customer reference number can be added to each line item
>     - Although you can't see it in this example, some of the parts are value added parts.     They take multiple part numbers and
>       combine (assemble) them into one.   This means they draw on the inventories of those parts.   The digireel, in this example, though, is a primitive
>       example of this ($7 reel + parts).
>    - The program appears to let you define options for each item and even a price per option.   Configurable PC, for example.
>       But it doesn't let you choose more than one of the same option.    Hard drives are implemented, for example, by having configuration
>       items for 1st hard drive and 2nd hard drive.    3rd hard drive isn't an option.      "Choose up to 4 items from the following list", with
>       a quantity for each.     With a sub option (in the case of hard drives) for which port to connect to.     
>   -  For more complicated situations, extending the previous one, you need the notion of consumable resources.
>       1 Bare bones PC, contains part #xxx motherboard, contains part #xxx case,  ...
>       Qty __ 500GB SATA internal hard drive (default), $100, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
>       Qty __ 1000GB SATA internal hard drive, $150, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2 external bay
>      consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
>       [ ] Replace default hard drive with another purchased hard drive ordered on same order -$100.
>       Qty ___ SATA DVD+RW burner, $150, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes 5V@1A, 12V@1A, 1 SATA power connector
>       Qty ___ SATA CD-ROM drive, $50, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes power....
>       Qty ___ 500GB IDE internal hard drive, $100, consumes 1 IDE port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes power....
>       Qty ___ PCI->SATA RAID controller, Consumes 1 PCI slot, provides 4 IDE Ports named xx.RAID1, xx.RAID2, xx.RAID3, and xx.RAID4, consumes power...
>       Qty ___ SATA->SATA RAID controller, Consumes 1 RAID port, provides 4 RAID PORTS named yy.RAID1, yy.RAID2, yy.RAID3, yy.RAID4, consumes power...
>       Qty ___ Display controller, Consumes 1 PCI-Express x16 port   (ok, SLI complicates things by letting you have one 16x port and one unusable port or two 8x ports).   Provides 1 DVI port OR 1 VGA port (but not both simultaneusly), incompatible with #WINVista Windows Vista.
>      Qty ___ SATA->ESATA adapter.  Consumes 1 SATA, consumes 1 slot opening, provides 1 ESATA port.
>      Qty ___ IDE->SATA adapter.  Consumes 1 IDE port, provides 1 SATA port   (there are gender issues)
>      Qty ___ SATA->IDE adapter.  Consumes 1 SATA port, provides 1 IDE port..
>      Qty ___ 350W power supply (default) Consumes 1 power supply bay.  Provides 5V@15A, 12V@10A, Provides 1 motherboard power connector, Provides 2 floppy power connectors, provides 2 SATA power connectors, Provides 2 IDE power connectors.
>      Qty ___ 500W power supply.   Consumes 1 power supply bay.  Provides 5V@20A, 12V@15A
>      Qty ___ IDE->SATA power adapter.   Consumes 1 IDE power connector, Provides 1 SATA power connector
>      Qty ___ SATA->IDE power adapter.   Consumes 1 SATA power connector, Provides 1 SATA power connector
>      Qty___ SATA Power Y connector.   Consumes 1 SATA power connector, Provides 2 SATA power connector
>      Qty ___ Ubuntu Linux 9.04 AMD64
>      Qty ___ Ubuntu Linux 9.04 I386
>      Qty ___ Windows XP
>      Qty ___ Windows Vista
>      [ ] software install
>      [ ] hardware install 
>      Qty ___ Opteron CPU fan
>    The catalog will ask where you want each attached, choosing the first unused port in each category by default.   "You decide" might
> be a useful choice as well for user's who don't understand internals.
>      Resources may be divided into subpools.     Some resources may be converted into other resources.  Some PCI-Express ports are usable as narrower ports and some aren't.    Each PCI or PCI-Express port provides either the appropiate port or 1 slot opening in the case, but not both.    In some cases, resource constraints may not be satisfied but user should be able to order anyway; user may have some parts already or know better.    But the user should be warned.   Resources may be provided (or consumed) from another part number included by reference in the list of options.   The options above can be broken down into categories.     Note that resources aren't necessarily integer quantities: Power consumption is an example.
> User should be able to add a part number not on the list of options to the parent part number.    I.E. If a 1.5TB hard drive wasn't listed as one of the options, user can still
> order it as part of the system in addition to or in place of the options above.   Some constaints may be imposed on package pricing, in that case.   Or the package may be based on actual prices of included part numbers minus a discount if order 1 CASE, 1 Motherboard>=$150, 1CPU, 1Hard Drive>=$100, total value of preceeding >=$400, total value of system >=$500.  
> I am not running a web store which needs these features.    But, I do order from suppliers who do and am inconvenienced by their dysfunctional stores.    While these features may seem specific to specific industries, they are actually common across many.   Textiles, bulk foods, metal, and electronic components are just a few examples.
> - Ability to import descriptions (including all the options, pictures, text, etc) from another company's catalog for many products at the same time.     Assume the other company is running same software for starters, but do it in a way that isn't specific to one program and is easily modifiable.   But start with basic import/export.   Descriptions of parts can be complicated.   Distrubutors and retailers may carry hundreds, thousands, or even millions of items.     Distributor should be able to import from manufacturer and retailer from distributor.      Various types of filtering should be provided.   Shouldn't just be a one time import - details change.   New products are added, products are discontinued, details are updated, wholesale costs change.   New items should go in a queue to be approved before being added.   Some parts of the description may come from upstream, others may be local.
> Metal is a particularly nasty example, as a customer, because shipping charges can be a substantial fraction of the order cost (aluminum) or even far exceed it (steel is cheaper and heavier). Thus, it is advantage to order from a nearby supplier.    However, due in no small part to software limitations, only a few companies have functional online ordering for metals.   Proper support in an open source package would make it possible for large numbers of local suppliers to provide online ordering.   Individual local distributors typically won't pay for custom development or expensive proprietary solutions.   Especially for something that is not specific to their company or even their industry but is actually something that should be a standard feature of all e-commerce packages that want to be taken seriously.  They also aren't likely to be too hot on the idea of spending a lot of money funding an open source implementation that their competitors can use for free.  And this hurts local customers, engineers (overhead for ordering parts for prototypes or budgeting pricing is worse than if you were ordering a 1000 parts), local manufacturers, and the local and national economy.   And since real companies with complicated products may need sophisticated company specific customization over and above the standard stuff described here, it needs to be one with a reasonable license, not GPL.
> Ultimately, implementing these is in the interests of society.  I would do it myself, for that reason, if I had the time.    However, I have a whole lot more complicated stuff to work on.     This is fairly easy, in comparison (though time consuming).    This is likely to be more than a few plugins - chances are some weaknesses in the core will be exposed.
> Not only should these features be implemented, but the online demo's should show them off.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OFBIZ-2820) Pricing for variable size objects

Posted by "Mark Whitis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OFBIZ-2820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741063#action_12741063 ] 

Mark Whitis commented on OFBIZ-2820:
------------------------------------

I see some evidence in the demo gift card that there is some ability to enter measures.     Between inadequate demos, inadequate docs, and a clunky user interface, though, users would have a hard time figuring out how to use it.   It still isn't clear looking at both products and costs modules, where you assign the relationships between cost and weight and the measures.  If it can calculate the cost based on measures, you need some real examples that show it.   Not dollars to dollars.  But length to dollars, weight.

> Pricing for variable size objects
> ---------------------------------
>
>                 Key: OFBIZ-2820
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-2820
>             Project: OFBiz
>          Issue Type: New Feature
>          Components: product
>    Affects Versions: SVN trunk
>         Environment: all
>            Reporter: Mark Whitis
>
> OFBiz seems to lack support for variable size objects.
> Examples:
>    -   5.36 hours of time at $100 for first hour and $75 per additional hour billed in increments of 15 minutes.
>    - 1.7 yards of cloth at $6.37 per yard
>    - 1.5lb of bulk whole wheat flour at $1.58/pound
>    - 4 pieces 6 inches long of alloy 6061-T6511 aluminum 1" square bar stock:
>         - Maximum length per piece: 108 inches
>         - Pull charge: $0.50
>         - Cutting charge: 4 cuts at $0.15/cut  - may be global or item specific or calculated based on cross section and material
>         - Cross section: 1 cubic inch per inch (line item specific)
>         - Density: 0.098 pounds per cubic inch (shared for all 6061-T6511 products)
>         - Shape modifier:    1.00 for square shape (line item or category specific) - some shapes may be more expensive per unit weight.
>         - Shipping weight:  piece_length*number_of_pieces*cross_section*density
>         - cost per pound: shared with other 6061-T6511 product
>         - Cost: pull_charge+cut_charge*number_of_pieces+cross_section*density*shape_modifier*price_per_pound*(piece_length+kerf)*number_of_pieces
>          The cost of aluminum may change frequently.   Price calculation might be based on the current spot price of aluminum, inventory replacement cost (same as preceeding), or the cost when these particular bars were acquired, or some function that takes both into account.
>           Remainder charges:   Since pieces are cut from fixed length bars, Prices may figure in a surcharge based on the remaining portion that will be more or less unsaleable and has to be sold as surplus, melted down, etc.   Or alternatively, this can be included in the charge
>           and a discount offered for full bar lengths supplied as full bar or cut up.     So, you pay a reduced price per inch (or a fixed cost) if you buy a full bar or if you order a full bar cut to length, etc.
>          - Full bar price modifier: 0.80.
>            example: 13 pieces 16" long (+1/8" saw kerf) gets 7 pieces from the first bar, charged as 1 bar + 7 cuts, and 6 pieces from the second bar charged by the inch.    However, since the full bar price is lower, in this case, this can be charged as 2 bars + 13 cuts.
>           Example sites: www.asapsource.com, www.onlinemetals.com, www.industrialmetals.com.    Various levels of dysfunction.   ASAP's web store can handle per inch pricing but can't factor in the cutting prices properly so they charge greatly inflated (almost 4x what the price should be) cost per inch.    industrialmetals web store can't handle per inch pricing so they clutter up the website with 12", 24", 36", 48", 60", and 72" standard lengths of the same item, you have to contact them if you want a different length, and a substantial portion of their inventory isn't in the webstore due to the burden of creating six or more products per item (not to mention having to change hundreds of items * 6 copies when the cost of materials changs).
>     - t-slot structural aluminum 
>          This is very similar to the bar stock given above.    However, there is a twist.    There are optional standard machining services.
>            - 4 pieces 32" long of 10EX1020 extrusion
>                 - 1 clearance hole {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
>                 - 1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
>                 -1 clearance hole 0.125" diameter measured 0.5" from end B along grove A
>                - 1 clearance hole 0.125" diameter measured 0.5" from end B along grove B
>                - 1 customer part number marking: "XYZ001"
>            - 2 pieces 32" long of 10EX1020 extrusion
>                   - 1 {clearance hole} {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
>                 -   1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
>                 - 1 clearance hole 0.125" diameter measured 1.5" from  end A along grove A
>                 - 1 clearance hole 0.125" diamter measured 1.5" from end A along grove B
>                 - (four more holes - repeat above for end B).
>                 - 1 customer part number marking: "XYZ002"
>            
>         In this case, clearance hole is  a partnumber and there is another partnumber for counterbore and another for an angled counterbore/hole, etc.     The catch is that this lineitem needs to capture 4 parameters and be a sub-item under the first item.  The association with the parent item must be maintained.     Further, the cost is multiplied by the piece count, so this is 32 hole charges
> total and 6 part number markings.   Also note that the separate line items may not be combined.   Even though we have two line items
> with the same base part number, the length and or modifications may differ.   Sample websites: www.8020.net, www.faztek.net.
> You have to look at the PDF catalogs for details of machining services.     8020 doesn't have a webstore (they sell through distributors) and many of their distributors don't either.    Faztek's web store includes only standard 97" lengths, no cut to length and no drilling (even though they provide these services).
> Note that this is best served by named expressions (or even functions, such as ECMAscript) which can be included by reference in each part number or category, making use of a combination of variables specific to the specific part number, a category, and global variables and which may be further modified by additional expressions.
>    - Kitting
>          Line items may be grouped into "kits".     This applies to the metal parts above and to electronic components and various other
>           situations.   When combined with line item specific modifications, your order list is now a three layer outline:
>          - Kit 1, Marking "KIT001"
>              - line item
>              - line item 
>              - line item ...
>         - Kit 2, Marking "KIT002"
>              -line item
>                   - modification
>                   - modification
>              -line item
>        Identical line items need to be kept separate between different kits, for packaging reasons.    For pricing, the price may be computed
>        separately (cost  for counting/packaging separately) or combined (quantity discount) or somewhere in between.       
>       Other applications require kitting as well.   For example: "Bob's office suppies" and "Jane's office supplies" may be combined in one
>       order (saves shipping, quantity discounts, etc) but be packed seperately.    Note that you may order more than one of each kit - thus the quantities for each line item are multiplied by the kit quantity (if you order 10 of a kit, you may also choose from 10 separate subpackages or 1 separate subpackage containing 10x the quantity).   You may also reorder these kits in the future, so it is helpful to store these in the customer profile.    Many companies in many industries offer kitting.   I have yet to see one that can do so via the web store.
>  - Shipping limits
>     Metal is typically supplied from the extruder/mill/foundry/etc to distributor's in 10' or 20' lengths.    However, UPS imposes limits
>     of 9' length, 165" length (not too much danger, there) + girth, and 150lbs per package (which can easily be exceeded by a short length of steel with a large crossection).
>  - Plastics: almost identical to metal as far as e-commerce requirements.
>  - Complicated Example
>    One of the more complicated online stores is www.digikey.com and it is instructive for anyone developing a web store application.   Digikey is the amazon of its industry.    They STOCK 450,000 products and list many more in their catalog, they ship over 2 million orders each year from a 14 acre automated facility.   Their success is largely due to their power of their online catalog.  Search for "74HC00", then select "Fairchild", "Surface mount", "4-quad", "14-soic","in-stock", "lead free", "rohs", then hit "apply filters".  
>       - When you entered 74HC00, it did a partial part number search.    The algorithm is complicated but similar throught the industry.
>         74HC00 matched "MM74HC00M" and "MM74HC00MX".   Seems simple enough.  A search term of "7400" also would have matched those
>         parts but a search term of "74HC00" would not have matched the part number "SN7400N".      It also searched in multiple fields
>         incuding manufacturer's part number, digikey part number, description, etc.    The funny matching algorithm only applies to
>         the first two part number fields.
>     - Notice that it had a lot of parameters for each part, and you can select from them.    The parameters vary by category - there may
>       be some overlap.
>    - Also notice that the parameters are displayed in parts listings - not just item number, description, and price.  One of those parameters
>      is actually a link to the datasheet (it is a little more complicated than that as there may be more than one datasheet or drawing
>      per part.   
>    - They also have links to catalog pages on the item detail pages, where appropriate.
>     - Notice that the same product is available in 4 different packaging.     They get it from the manufacturer in both tubes and reels of 2500.     They will provide you with a whole reel or cut a specified number of parts of a reel and provide those as cut tape or they will cut a specified number of parts off a reel and splice those onto a new reel for $7 + cost of parts.     They will provide you with a whole tube or
> transfer a specific number of parts to a new tube.   Note that they have pricing that varies by quantity ordered.   Their pricing reflects quantity discounts/price breaks (common for the industry), minimum orders per line item (for a $0.05 part, the minimum quantity is 10 - it would cost that much to pull one part as well as large minimums for many (but not all) non-stock items), order multiples (multiples of 2500 for full reel pricing), etc.    Underneath, these prices are partly based on the cost of pulling and repackaging each part as well as the notion of cost.
>    - Three of the digikey part numbers pull stock from the same inventory.
>    - You can't see it unless you create an account, but you can also add parts to your shopping cart by uploading a CSV file.   I think
>      they also do EDI.   They lack the ability to order a list of parts by clicking on a web link (i.e. to build this, you need these quantities
>      of these 25 different items.  Click here to order from digikey.   They also lack an open XML-RPC/SOAP/etc. alternative to closed (and ugly) standard EDI.
>     - Customer reference number can be added to each line item
>     - Although you can't see it in this example, some of the parts are value added parts.     They take multiple part numbers and
>       combine (assemble) them into one.   This means they draw on the inventories of those parts.   The digireel, in this example, though, is a primitive
>       example of this ($7 reel + parts).
>    - The program appears to let you define options for each item and even a price per option.   Configurable PC, for example.
>       But it doesn't let you choose more than one of the same option.    Hard drives are implemented, for example, by having configuration
>       items for 1st hard drive and 2nd hard drive.    3rd hard drive isn't an option.      "Choose up to 4 items from the following list", with
>       a quantity for each.     With a sub option (in the case of hard drives) for which port to connect to.     
>   -  For more complicated situations, extending the previous one, you need the notion of consumable resources.
>       1 Bare bones PC, contains part #xxx motherboard, contains part #xxx case,  ...
>       Qty __ 500GB SATA internal hard drive (default), $100, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
>       Qty __ 1000GB SATA internal hard drive, $150, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2 external bay
>      consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
>       [ ] Replace default hard drive with another purchased hard drive ordered on same order -$100.
>       Qty ___ SATA DVD+RW burner, $150, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes 5V@1A, 12V@1A, 1 SATA power connector
>       Qty ___ SATA CD-ROM drive, $50, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes power....
>       Qty ___ 500GB IDE internal hard drive, $100, consumes 1 IDE port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes power....
>       Qty ___ PCI->SATA RAID controller, Consumes 1 PCI slot, provides 4 IDE Ports named xx.RAID1, xx.RAID2, xx.RAID3, and xx.RAID4, consumes power...
>       Qty ___ SATA->SATA RAID controller, Consumes 1 RAID port, provides 4 RAID PORTS named yy.RAID1, yy.RAID2, yy.RAID3, yy.RAID4, consumes power...
>       Qty ___ Display controller, Consumes 1 PCI-Express x16 port   (ok, SLI complicates things by letting you have one 16x port and one unusable port or two 8x ports).   Provides 1 DVI port OR 1 VGA port (but not both simultaneusly), incompatible with #WINVista Windows Vista.
>      Qty ___ SATA->ESATA adapter.  Consumes 1 SATA, consumes 1 slot opening, provides 1 ESATA port.
>      Qty ___ IDE->SATA adapter.  Consumes 1 IDE port, provides 1 SATA port   (there are gender issues)
>      Qty ___ SATA->IDE adapter.  Consumes 1 SATA port, provides 1 IDE port..
>      Qty ___ 350W power supply (default) Consumes 1 power supply bay.  Provides 5V@15A, 12V@10A, Provides 1 motherboard power connector, Provides 2 floppy power connectors, provides 2 SATA power connectors, Provides 2 IDE power connectors.
>      Qty ___ 500W power supply.   Consumes 1 power supply bay.  Provides 5V@20A, 12V@15A
>      Qty ___ IDE->SATA power adapter.   Consumes 1 IDE power connector, Provides 1 SATA power connector
>      Qty ___ SATA->IDE power adapter.   Consumes 1 SATA power connector, Provides 1 SATA power connector
>      Qty___ SATA Power Y connector.   Consumes 1 SATA power connector, Provides 2 SATA power connector
>      Qty ___ Ubuntu Linux 9.04 AMD64
>      Qty ___ Ubuntu Linux 9.04 I386
>      Qty ___ Windows XP
>      Qty ___ Windows Vista
>      [ ] software install
>      [ ] hardware install 
>      Qty ___ Opteron CPU fan
>    The catalog will ask where you want each attached, choosing the first unused port in each category by default.   "You decide" might
> be a useful choice as well for user's who don't understand internals.
>      Resources may be divided into subpools.     Some resources may be converted into other resources.  Some PCI-Express ports are usable as narrower ports and some aren't.    Each PCI or PCI-Express port provides either the appropiate port or 1 slot opening in the case, but not both.    In some cases, resource constraints may not be satisfied but user should be able to order anyway; user may have some parts already or know better.    But the user should be warned.   Resources may be provided (or consumed) from another part number included by reference in the list of options.   The options above can be broken down into categories.     Note that resources aren't necessarily integer quantities: Power consumption is an example.
> User should be able to add a part number not on the list of options to the parent part number.    I.E. If a 1.5TB hard drive wasn't listed as one of the options, user can still
> order it as part of the system in addition to or in place of the options above.   Some constaints may be imposed on package pricing, in that case.   Or the package may be based on actual prices of included part numbers minus a discount if order 1 CASE, 1 Motherboard>=$150, 1CPU, 1Hard Drive>=$100, total value of preceeding >=$400, total value of system >=$500.  
> I am not running a web store which needs these features.    But, I do order from suppliers who do and am inconvenienced by their dysfunctional stores.    While these features may seem specific to specific industries, they are actually common across many.   Textiles, bulk foods, metal, and electronic components are just a few examples.
> - Ability to import descriptions (including all the options, pictures, text, etc) from another company's catalog for many products at the same time.     Assume the other company is running same software for starters, but do it in a way that isn't specific to one program and is easily modifiable.   But start with basic import/export.   Descriptions of parts can be complicated.   Distrubutors and retailers may carry hundreds, thousands, or even millions of items.     Distributor should be able to import from manufacturer and retailer from distributor.      Various types of filtering should be provided.   Shouldn't just be a one time import - details change.   New products are added, products are discontinued, details are updated, wholesale costs change.   New items should go in a queue to be approved before being added.   Some parts of the description may come from upstream, others may be local.
> Metal is a particularly nasty example, as a customer, because shipping charges can be a substantial fraction of the order cost (aluminum) or even far exceed it (steel is cheaper and heavier). Thus, it is advantage to order from a nearby supplier.    However, due in no small part to software limitations, only a few companies have functional online ordering for metals.   Proper support in an open source package would make it possible for large numbers of local suppliers to provide online ordering.   Individual local distributors typically won't pay for custom development or expensive proprietary solutions.   Especially for something that is not specific to their company or even their industry but is actually something that should be a standard feature of all e-commerce packages that want to be taken seriously.  They also aren't likely to be too hot on the idea of spending a lot of money funding an open source implementation that their competitors can use for free.  And this hurts local customers, engineers (overhead for ordering parts for prototypes or budgeting pricing is worse than if you were ordering a 1000 parts), local manufacturers, and the local and national economy.   And since real companies with complicated products may need sophisticated company specific customization over and above the standard stuff described here, it needs to be one with a reasonable license, not GPL.
> Ultimately, implementing these is in the interests of society.  I would do it myself, for that reason, if I had the time.    However, I have a whole lot more complicated stuff to work on.     This is fairly easy, in comparison (though time consuming).    This is likely to be more than a few plugins - chances are some weaknesses in the core will be exposed.
> Not only should these features be implemented, but the online demo's should show them off.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (OFBIZ-2820) Pricing for variable size objects

Posted by "Mark Whitis (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OFBIZ-2820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741062#action_12741062 ] 

Mark Whitis commented on OFBIZ-2820:
------------------------------------

The window example also illustrates some other things:
   - Internal kitting.    Not all kits are delivered to the customer.     Some kits are delivered internally to the shop so the finished parts can be delivered to the customer.
  - Internal resources.   In addition to resources specific to the product as illustrated in the PC configuration example, there are
    other resources internal to the company, such as shop time on various machines.
   - Process scheduling.   This is outside the web store module.    But in estimating delivery times, processes and time to deliver parts not in stock get factored in.     The window requires use of two types of miter saws (one for metal, one for wood), a glass cutting station, and an assembly station.     Any one of which may be oversubscribed while the others sit idle.     Parts can't be cut until they are in stock.   They may not be ordered immediately, but batched (i.e. orders to company X go out on friday).  They can't be painted until they are cut.  They can't be assembled until they are painted.     Some module basically computes a Gant chart, taking into consideration other orders in the queue.  The e-commerce module needs to supply the information to the other module and get the result.
   - checking stock upstream for parts not in stock.
   - Hidden relationships between parts.    The user doesn't see the kits of parts contained, in this case, but may in others.
   - non-orderable parts (OFBiz appears to already have that).
   - Transmission of details not visable to end-user to other internal processes.

While some of the details are particular to making a window (and a particular style, at that), this is not specific to windows.   Making a printed circuit board (adding options to a base board), for example, uses the same software infrastructure.   In addition, the base board may be assembled from a kit of parts as well, though usually in batches.   Sometimes the parts are both orderable items and used internally.   Internal use may take priority, as you can't make a batch of 100 boards with 90 parts, so parts need to be reservable. 

OFBiz has a manufacturing module, so some of the internal parts kitting, scheduling, etc. may be covered.   But it is worth noting that kitting is something that applies to both internal orders and external ones.  And cost and dimension data may be rather tightly coupled between sales/ordering and manufacturing - you should only have to code it once and it gets used by different modules (and may be cached between them, in some cases).


> Pricing for variable size objects
> ---------------------------------
>
>                 Key: OFBIZ-2820
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-2820
>             Project: OFBiz
>          Issue Type: New Feature
>          Components: product
>    Affects Versions: SVN trunk
>         Environment: all
>            Reporter: Mark Whitis
>
> OFBiz seems to lack support for variable size objects.
> Examples:
>    -   5.36 hours of time at $100 for first hour and $75 per additional hour billed in increments of 15 minutes.
>    - 1.7 yards of cloth at $6.37 per yard
>    - 1.5lb of bulk whole wheat flour at $1.58/pound
>    - 4 pieces 6 inches long of alloy 6061-T6511 aluminum 1" square bar stock:
>         - Maximum length per piece: 108 inches
>         - Pull charge: $0.50
>         - Cutting charge: 4 cuts at $0.15/cut  - may be global or item specific or calculated based on cross section and material
>         - Cross section: 1 cubic inch per inch (line item specific)
>         - Density: 0.098 pounds per cubic inch (shared for all 6061-T6511 products)
>         - Shape modifier:    1.00 for square shape (line item or category specific) - some shapes may be more expensive per unit weight.
>         - Shipping weight:  piece_length*number_of_pieces*cross_section*density
>         - cost per pound: shared with other 6061-T6511 product
>         - Cost: pull_charge+cut_charge*number_of_pieces+cross_section*density*shape_modifier*price_per_pound*(piece_length+kerf)*number_of_pieces
>          The cost of aluminum may change frequently.   Price calculation might be based on the current spot price of aluminum, inventory replacement cost (same as preceeding), or the cost when these particular bars were acquired, or some function that takes both into account.
>           Remainder charges:   Since pieces are cut from fixed length bars, Prices may figure in a surcharge based on the remaining portion that will be more or less unsaleable and has to be sold as surplus, melted down, etc.   Or alternatively, this can be included in the charge
>           and a discount offered for full bar lengths supplied as full bar or cut up.     So, you pay a reduced price per inch (or a fixed cost) if you buy a full bar or if you order a full bar cut to length, etc.
>          - Full bar price modifier: 0.80.
>            example: 13 pieces 16" long (+1/8" saw kerf) gets 7 pieces from the first bar, charged as 1 bar + 7 cuts, and 6 pieces from the second bar charged by the inch.    However, since the full bar price is lower, in this case, this can be charged as 2 bars + 13 cuts.
>           Example sites: www.asapsource.com, www.onlinemetals.com, www.industrialmetals.com.    Various levels of dysfunction.   ASAP's web store can handle per inch pricing but can't factor in the cutting prices properly so they charge greatly inflated (almost 4x what the price should be) cost per inch.    industrialmetals web store can't handle per inch pricing so they clutter up the website with 12", 24", 36", 48", 60", and 72" standard lengths of the same item, you have to contact them if you want a different length, and a substantial portion of their inventory isn't in the webstore due to the burden of creating six or more products per item (not to mention having to change hundreds of items * 6 copies when the cost of materials changs).
>     - t-slot structural aluminum 
>          This is very similar to the bar stock given above.    However, there is a twist.    There are optional standard machining services.
>            - 4 pieces 32" long of 10EX1020 extrusion
>                 - 1 clearance hole {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
>                 - 1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
>                 -1 clearance hole 0.125" diameter measured 0.5" from end B along grove A
>                - 1 clearance hole 0.125" diameter measured 0.5" from end B along grove B
>                - 1 customer part number marking: "XYZ001"
>            - 2 pieces 32" long of 10EX1020 extrusion
>                   - 1 {clearance hole} {0.125"} diameter measured {0.5"} from end {A} along grove {A}.
>                 -   1 clearance hole 0.125" diameter measured 0.5" from end A along grove B
>                 - 1 clearance hole 0.125" diameter measured 1.5" from  end A along grove A
>                 - 1 clearance hole 0.125" diamter measured 1.5" from end A along grove B
>                 - (four more holes - repeat above for end B).
>                 - 1 customer part number marking: "XYZ002"
>            
>         In this case, clearance hole is  a partnumber and there is another partnumber for counterbore and another for an angled counterbore/hole, etc.     The catch is that this lineitem needs to capture 4 parameters and be a sub-item under the first item.  The association with the parent item must be maintained.     Further, the cost is multiplied by the piece count, so this is 32 hole charges
> total and 6 part number markings.   Also note that the separate line items may not be combined.   Even though we have two line items
> with the same base part number, the length and or modifications may differ.   Sample websites: www.8020.net, www.faztek.net.
> You have to look at the PDF catalogs for details of machining services.     8020 doesn't have a webstore (they sell through distributors) and many of their distributors don't either.    Faztek's web store includes only standard 97" lengths, no cut to length and no drilling (even though they provide these services).
> Note that this is best served by named expressions (or even functions, such as ECMAscript) which can be included by reference in each part number or category, making use of a combination of variables specific to the specific part number, a category, and global variables and which may be further modified by additional expressions.
>    - Kitting
>          Line items may be grouped into "kits".     This applies to the metal parts above and to electronic components and various other
>           situations.   When combined with line item specific modifications, your order list is now a three layer outline:
>          - Kit 1, Marking "KIT001"
>              - line item
>              - line item 
>              - line item ...
>         - Kit 2, Marking "KIT002"
>              -line item
>                   - modification
>                   - modification
>              -line item
>        Identical line items need to be kept separate between different kits, for packaging reasons.    For pricing, the price may be computed
>        separately (cost  for counting/packaging separately) or combined (quantity discount) or somewhere in between.       
>       Other applications require kitting as well.   For example: "Bob's office suppies" and "Jane's office supplies" may be combined in one
>       order (saves shipping, quantity discounts, etc) but be packed seperately.    Note that you may order more than one of each kit - thus the quantities for each line item are multiplied by the kit quantity (if you order 10 of a kit, you may also choose from 10 separate subpackages or 1 separate subpackage containing 10x the quantity).   You may also reorder these kits in the future, so it is helpful to store these in the customer profile.    Many companies in many industries offer kitting.   I have yet to see one that can do so via the web store.
>  - Shipping limits
>     Metal is typically supplied from the extruder/mill/foundry/etc to distributor's in 10' or 20' lengths.    However, UPS imposes limits
>     of 9' length, 165" length (not too much danger, there) + girth, and 150lbs per package (which can easily be exceeded by a short length of steel with a large crossection).
>  - Plastics: almost identical to metal as far as e-commerce requirements.
>  - Complicated Example
>    One of the more complicated online stores is www.digikey.com and it is instructive for anyone developing a web store application.   Digikey is the amazon of its industry.    They STOCK 450,000 products and list many more in their catalog, they ship over 2 million orders each year from a 14 acre automated facility.   Their success is largely due to their power of their online catalog.  Search for "74HC00", then select "Fairchild", "Surface mount", "4-quad", "14-soic","in-stock", "lead free", "rohs", then hit "apply filters".  
>       - When you entered 74HC00, it did a partial part number search.    The algorithm is complicated but similar throught the industry.
>         74HC00 matched "MM74HC00M" and "MM74HC00MX".   Seems simple enough.  A search term of "7400" also would have matched those
>         parts but a search term of "74HC00" would not have matched the part number "SN7400N".      It also searched in multiple fields
>         incuding manufacturer's part number, digikey part number, description, etc.    The funny matching algorithm only applies to
>         the first two part number fields.
>     - Notice that it had a lot of parameters for each part, and you can select from them.    The parameters vary by category - there may
>       be some overlap.
>    - Also notice that the parameters are displayed in parts listings - not just item number, description, and price.  One of those parameters
>      is actually a link to the datasheet (it is a little more complicated than that as there may be more than one datasheet or drawing
>      per part.   
>    - They also have links to catalog pages on the item detail pages, where appropriate.
>     - Notice that the same product is available in 4 different packaging.     They get it from the manufacturer in both tubes and reels of 2500.     They will provide you with a whole reel or cut a specified number of parts of a reel and provide those as cut tape or they will cut a specified number of parts off a reel and splice those onto a new reel for $7 + cost of parts.     They will provide you with a whole tube or
> transfer a specific number of parts to a new tube.   Note that they have pricing that varies by quantity ordered.   Their pricing reflects quantity discounts/price breaks (common for the industry), minimum orders per line item (for a $0.05 part, the minimum quantity is 10 - it would cost that much to pull one part as well as large minimums for many (but not all) non-stock items), order multiples (multiples of 2500 for full reel pricing), etc.    Underneath, these prices are partly based on the cost of pulling and repackaging each part as well as the notion of cost.
>    - Three of the digikey part numbers pull stock from the same inventory.
>    - You can't see it unless you create an account, but you can also add parts to your shopping cart by uploading a CSV file.   I think
>      they also do EDI.   They lack the ability to order a list of parts by clicking on a web link (i.e. to build this, you need these quantities
>      of these 25 different items.  Click here to order from digikey.   They also lack an open XML-RPC/SOAP/etc. alternative to closed (and ugly) standard EDI.
>     - Customer reference number can be added to each line item
>     - Although you can't see it in this example, some of the parts are value added parts.     They take multiple part numbers and
>       combine (assemble) them into one.   This means they draw on the inventories of those parts.   The digireel, in this example, though, is a primitive
>       example of this ($7 reel + parts).
>    - The program appears to let you define options for each item and even a price per option.   Configurable PC, for example.
>       But it doesn't let you choose more than one of the same option.    Hard drives are implemented, for example, by having configuration
>       items for 1st hard drive and 2nd hard drive.    3rd hard drive isn't an option.      "Choose up to 4 items from the following list", with
>       a quantity for each.     With a sub option (in the case of hard drives) for which port to connect to.     
>   -  For more complicated situations, extending the previous one, you need the notion of consumable resources.
>       1 Bare bones PC, contains part #xxx motherboard, contains part #xxx case,  ...
>       Qty __ 500GB SATA internal hard drive (default), $100, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
>       Qty __ 1000GB SATA internal hard drive, $150, consumes 1 SATA port, consumes one 3-1/2" internal bay or 3-1/2 external bay
>      consumes 5V@1A, 12V@2.5A, consumes 1 SATA power connector
>       [ ] Replace default hard drive with another purchased hard drive ordered on same order -$100.
>       Qty ___ SATA DVD+RW burner, $150, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes 5V@1A, 12V@1A, 1 SATA power connector
>       Qty ___ SATA CD-ROM drive, $50, consumes 1 SATA port, consumes one 5-1/4" external bay, consumes power....
>       Qty ___ 500GB IDE internal hard drive, $100, consumes 1 IDE port, consumes one 3-1/2" internal bay or 3-1/2" external bay, consumes power....
>       Qty ___ PCI->SATA RAID controller, Consumes 1 PCI slot, provides 4 IDE Ports named xx.RAID1, xx.RAID2, xx.RAID3, and xx.RAID4, consumes power...
>       Qty ___ SATA->SATA RAID controller, Consumes 1 RAID port, provides 4 RAID PORTS named yy.RAID1, yy.RAID2, yy.RAID3, yy.RAID4, consumes power...
>       Qty ___ Display controller, Consumes 1 PCI-Express x16 port   (ok, SLI complicates things by letting you have one 16x port and one unusable port or two 8x ports).   Provides 1 DVI port OR 1 VGA port (but not both simultaneusly), incompatible with #WINVista Windows Vista.
>      Qty ___ SATA->ESATA adapter.  Consumes 1 SATA, consumes 1 slot opening, provides 1 ESATA port.
>      Qty ___ IDE->SATA adapter.  Consumes 1 IDE port, provides 1 SATA port   (there are gender issues)
>      Qty ___ SATA->IDE adapter.  Consumes 1 SATA port, provides 1 IDE port..
>      Qty ___ 350W power supply (default) Consumes 1 power supply bay.  Provides 5V@15A, 12V@10A, Provides 1 motherboard power connector, Provides 2 floppy power connectors, provides 2 SATA power connectors, Provides 2 IDE power connectors.
>      Qty ___ 500W power supply.   Consumes 1 power supply bay.  Provides 5V@20A, 12V@15A
>      Qty ___ IDE->SATA power adapter.   Consumes 1 IDE power connector, Provides 1 SATA power connector
>      Qty ___ SATA->IDE power adapter.   Consumes 1 SATA power connector, Provides 1 SATA power connector
>      Qty___ SATA Power Y connector.   Consumes 1 SATA power connector, Provides 2 SATA power connector
>      Qty ___ Ubuntu Linux 9.04 AMD64
>      Qty ___ Ubuntu Linux 9.04 I386
>      Qty ___ Windows XP
>      Qty ___ Windows Vista
>      [ ] software install
>      [ ] hardware install 
>      Qty ___ Opteron CPU fan
>    The catalog will ask where you want each attached, choosing the first unused port in each category by default.   "You decide" might
> be a useful choice as well for user's who don't understand internals.
>      Resources may be divided into subpools.     Some resources may be converted into other resources.  Some PCI-Express ports are usable as narrower ports and some aren't.    Each PCI or PCI-Express port provides either the appropiate port or 1 slot opening in the case, but not both.    In some cases, resource constraints may not be satisfied but user should be able to order anyway; user may have some parts already or know better.    But the user should be warned.   Resources may be provided (or consumed) from another part number included by reference in the list of options.   The options above can be broken down into categories.     Note that resources aren't necessarily integer quantities: Power consumption is an example.
> User should be able to add a part number not on the list of options to the parent part number.    I.E. If a 1.5TB hard drive wasn't listed as one of the options, user can still
> order it as part of the system in addition to or in place of the options above.   Some constaints may be imposed on package pricing, in that case.   Or the package may be based on actual prices of included part numbers minus a discount if order 1 CASE, 1 Motherboard>=$150, 1CPU, 1Hard Drive>=$100, total value of preceeding >=$400, total value of system >=$500.  
> I am not running a web store which needs these features.    But, I do order from suppliers who do and am inconvenienced by their dysfunctional stores.    While these features may seem specific to specific industries, they are actually common across many.   Textiles, bulk foods, metal, and electronic components are just a few examples.
> - Ability to import descriptions (including all the options, pictures, text, etc) from another company's catalog for many products at the same time.     Assume the other company is running same software for starters, but do it in a way that isn't specific to one program and is easily modifiable.   But start with basic import/export.   Descriptions of parts can be complicated.   Distrubutors and retailers may carry hundreds, thousands, or even millions of items.     Distributor should be able to import from manufacturer and retailer from distributor.      Various types of filtering should be provided.   Shouldn't just be a one time import - details change.   New products are added, products are discontinued, details are updated, wholesale costs change.   New items should go in a queue to be approved before being added.   Some parts of the description may come from upstream, others may be local.
> Metal is a particularly nasty example, as a customer, because shipping charges can be a substantial fraction of the order cost (aluminum) or even far exceed it (steel is cheaper and heavier). Thus, it is advantage to order from a nearby supplier.    However, due in no small part to software limitations, only a few companies have functional online ordering for metals.   Proper support in an open source package would make it possible for large numbers of local suppliers to provide online ordering.   Individual local distributors typically won't pay for custom development or expensive proprietary solutions.   Especially for something that is not specific to their company or even their industry but is actually something that should be a standard feature of all e-commerce packages that want to be taken seriously.  They also aren't likely to be too hot on the idea of spending a lot of money funding an open source implementation that their competitors can use for free.  And this hurts local customers, engineers (overhead for ordering parts for prototypes or budgeting pricing is worse than if you were ordering a 1000 parts), local manufacturers, and the local and national economy.   And since real companies with complicated products may need sophisticated company specific customization over and above the standard stuff described here, it needs to be one with a reasonable license, not GPL.
> Ultimately, implementing these is in the interests of society.  I would do it myself, for that reason, if I had the time.    However, I have a whole lot more complicated stuff to work on.     This is fairly easy, in comparison (though time consuming).    This is likely to be more than a few plugins - chances are some weaknesses in the core will be exposed.
> Not only should these features be implemented, but the online demo's should show them off.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.