1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
******
Design
******
The *Product Kit Module* module introduces the following concepts:
.. _concept-product:
Product
=======
When the *Product Kit Module* is activated, products gain some extra properties.
These include a new type "Kit" which corresponds to a product composed of other
goods defined by a list of `Components <model-product.component>`.
.. seealso::
The `Product <product:concept-product>` concept is introduced by the
:doc:`Product Module <product:index>`.
.. _model-product.component:
Product Component
=================
The *Product Component* concept defines the quantity of a product that is part
of another product.
.. _model-sale.sale:
Sale
====
When the *Product Kit Module* is activated, components are added to sales when
the sale is quoted.
For `Sale Lines <model-sale.line>` with a kit `Product <concept-product>`, a
`Sale Line Component <model-sale.line.component>` is created for each `Product
Component <model-product.component>`.
These components are used as the origins for the `Stock Moves
<stock:model-stock.move>` and the sale lines of the *Invoice Lines*.
When the `Invoice <account_invoice:model-account.invoice>` method is on
shipment, the smallest ratio of shipped components is used to calculate the
quantity invoiced.
For *Sale Lines* with a non-kit product containing `Product Components
<model-product.component>`, a sale line is created for each one.
When the sale is reset to draft, all created components are deleted.
.. _model-sale.line:
Line
----
The sale lines gain a list of `Sale Line Components
<model-sale.line.component>` and a list of children which are created when the
`Sale <sale:model-sale.sale>` is quoted.
.. _model-sale.line.component:
Line Component
--------------
The *Sale Line Component* concept defines for a *Sale Line* the quantity of a
`Product Component <model-product.component>` to be shipped instead of the kit.
.. seealso::
The `Sale <sale:model-sale.sale>` model is introduced by the :doc:`Sale
Module <sale:index>`.
.. _model-purchase.purchase:
Purchase
========
When the *Product Kit Module* is activated, components are added to `Purchases
<purchase:model-purchase.purchase>` when the purchase is quoted.
For `Purchase Lines <model-purchase.line>` with a kit `Product
<concept-product>`, a `Purchase Line Component <model-sale.line.component>` is
created for each `Product Component <model-product.component>`.
These components are used as the origins for the `Stock Moves
<stock:model-stock.move>` and the purchase lines of the *Invoice Lines*.
When the `Invoice <account_invoice:model-account.invoice>` method is on
shipment, the smallest ratio of received components is used to calculate the
quantity invoiced.
For `Purchase Lines <model-purchase.line>` with a non-kit product containing
`Product Components <model-product.component>`, a purchase line is created for
each one.
When the purchase is reset to draft, all created components are deleted.
.. _model-purchase.line:
Line
----
The purchase lines gain a list of `Purchase Line Components
<model-purchase.line.component>` and a list of children which are created when
the `Purchase <purchase:model-purchase.purchase>` is quoted.
.. _model-purchase.line.component:
Line Component
--------------
The *Purchase Line Component* concept defines for a *Purchase Line* the
quantity of a `Product Component <model-product.component>` to be received
instead of the kit.
.. seealso::
The `Purchase <purchase:model-purchase.purchase>` model is introduced by the
:doc:`Purchase Module <purchase:index>`.
|