# Class CalculateHooks

- [TopLevel.Object](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md)
  - [dw.order.hooks.CalculateHooks](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md)

This interface represents all script hooks that can be registered to customize the order and basket calculation
functionality. It contains the extension points (hook names), and the functions that are called by each extension
point. A function must be defined inside a JavaScript source and must be exported. The script with the exported hook
function must be located inside a site cartridge. Inside the site cartridge a 'package.json' file with a 'hooks'
entry must exist.

```
"hooks": "./hooks.json"
```

The hooks entry links to a json file, relative to the 'package.json' file. This file lists all registered hooks
inside the hooks property:

```
"hooks": [
     {"name": "dw.order.calculate", "script": "./calculate.js"}
]
```

A hook entry has a 'name' and a 'script' property.

- The 'name' contains the extension point, the hook name.
- The 'script' contains the script relative to the hooks file, with the exported hook function.

## Constant Summary

| Constant                                                                                                                                                                               | Description                                          |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [extensionPointCalculate](#extensionpointcalculate): [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md) = "dw.order.calculate"                         | The extension point name dw.order.calculate.         |
| [extensionPointCalculateShipping](#extensionpointcalculateshipping): [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md) = "dw.order.calculateShipping" | The extension point name dw.order.calculateShipping. |
| [extensionPointCalculateTax](#extensionpointcalculatetax): [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md) = "dw.order.calculateTax"                | The extension point name dw.order.calculateTax.      |

## Constructor Summary

This class does not have a constructor, so you cannot create it directly.

## Method Summary

| Method                                                                                                                                                                                                                                    | Description                                                                                                                                                                                          |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [calculate](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#calculatelineitemctnr)([LineItemCtnr](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.LineItemCtnr.md))                 | The function is called by extension point [extensionPointCalculate](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#extensionpointcalculate).                 |
| [calculateShipping](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#calculateshippinglineitemctnr)([LineItemCtnr](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.LineItemCtnr.md)) | The function is called by extension point [extensionPointCalculateShipping](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#extensionpointcalculateshipping). |
| [calculateTax](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#calculatetaxlineitemctnr)([LineItemCtnr](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.LineItemCtnr.md))           | The function is called by extension point [extensionPointCalculateTax](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#extensionpointcalculatetax).           |

### Methods inherited from class Object

[assign](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#assignobject-object), [create](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#createobject), [create](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#createobject-object), [defineProperties](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#definepropertiesobject-object), [defineProperty](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#definepropertyobject-object-object), [entries](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#entriesobject), [freeze](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#freezeobject), [fromEntries](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#fromentriesiterable), [getOwnPropertyDescriptor](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#getownpropertydescriptorobject-object), [getOwnPropertyNames](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#getownpropertynamesobject), [getOwnPropertySymbols](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#getownpropertysymbolsobject), [getPrototypeOf](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#getprototypeofobject), [hasOwnProperty](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#hasownpropertystring), [is](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#isobject-object), [isExtensible](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#isextensibleobject), [isFrozen](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#isfrozenobject), [isPrototypeOf](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#isprototypeofobject), [isSealed](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#issealedobject), [keys](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#keysobject), [preventExtensions](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#preventextensionsobject), [propertyIsEnumerable](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#propertyisenumerablestring), [seal](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#sealobject), [setPrototypeOf](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#setprototypeofobject-object), [toLocaleString](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#tolocalestring), [toString](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#tostring), [valueOf](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#valueof), [values](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#valuesobject)

## Constant Details

### extensionPointCalculate

- extensionPointCalculate: [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md) = "dw\.order.calculate"
  - : The extension point name dw\.order.calculate.

***

### extensionPointCalculateShipping

- extensionPointCalculateShipping: [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md) = "dw\.order.calculateShipping"
  - : The extension point name dw\.order.calculateShipping.

***

### extensionPointCalculateTax

- extensionPointCalculateTax: [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md) = "dw\.order.calculateTax"
  - : The extension point name dw\.order.calculateTax.

***

## Method Details

### calculate(LineItemCtnr)

- calculate(lineItemCtnr: [LineItemCtnr](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.LineItemCtnr.md)): [Status](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.system.Status.md)
  - : The function is called by extension point [extensionPointCalculate](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#extensionpointcalculate). It provides a single place for
    the line item container calculation.

    To provide a fallback for existing implementations, the default implementation calls the hook
    dw\.ocapi.shop.basket.calculate. However, this hook is deprecated, and calling it will create entries in the
    deprecated API usage logs. You should override this function to use dw\.order.calculate instead.

    If you provide your own implementation, you should provide and use the following hooks. Best practice is
    to use the hook manager to retrieve them in the calculate hook, and avoid calling them directly.

    - [extensionPointCalculateTax](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#extensionpointcalculatetax)for tax calculation
    - [extensionPointCalculateShipping](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#extensionpointcalculateshipping)for shipping calculation

    **Parameters:**

    - lineItemCtnr - the line item container to be (re)calculated.

***

### calculateShipping(LineItemCtnr)

- calculateShipping(lineItemCtnr: [LineItemCtnr](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.LineItemCtnr.md)): [Status](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.system.Status.md)
  - : The function is called by extension point [extensionPointCalculateShipping](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#extensionpointcalculateshipping). It provides a single
    place for shipping calculation during the line item container calculation.

    **Parameters:**

    - lineItemCtnr - the line item container to be (re)calculated.

***

### calculateTax(LineItemCtnr)

- calculateTax(lineItemCtnr: [LineItemCtnr](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.LineItemCtnr.md)): [Status](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.system.Status.md)
  - : The function is called by extension point [extensionPointCalculateTax](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.order.hooks.CalculateHooks.md#extensionpointcalculatetax). It provides a single place
    for tax calculation during the line item container calculation.

    **Parameters:**

    - lineItemCtnr - the line item container to be (re)calculated.

***
