[ https://issues.apache.org/jira/browse/OFBIZ-2820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13859082#comment-13859082 ]
Ean Schuessler commented on OFBIZ-2820: --------------------------------------- It looks like the ability to enter a single amount is there but multiple arbitrary value features don't seem to be well supported. It would be nice to have a top level feature amount drive quantities on subassemblies. > 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 was sent by Atlassian JIRA (v6.1.5#6160)