# For developers: Create discounts for orders

To create an order discount, you must perform the following:

- Get the orders manager.

Get an instance of the OrdersManager object. - Get the order.

Get the order that the discount will be associated with. For more information, see For developers: Query orders. - Get the parent discount.

Get an instance of the discount that will be applied to the order. - Create a new order discount.

Create an instance of the OrderDiscount class by calling the CreateOrderDiscount method of the manager. - Set the properties.

Set the properties of the OrderDiscount instance to the respective properties of the Discount instance. - Set the savings amount.

To calculate the savings amount for the order discount, you must perform the following:- Calculate the total discount of the order at this moment.

To calculate the total discount, sum the values of the SavingsAmount properties of the already added order discounts. - Calculate the savings amount for the current order discount.

To calculate it, call the CalculateDiscountAmount static method of the DiscountCalculator class. As arguments pass the Discount instance and the difference between the sub total of the order and the total discount at the moment.

- Calculate the total discount of the order at this moment.
- Associate the order discount with the discount.

Set the ParentDiscount property of the OrderDiscount instance to the Discount instance. - Associate the order discount with the order.

Set the ParentOrder property of the OrderDiscount instance to the Order instance. Add the order discount to the Discounts collection of the order. - Update the total discount.

Update the value of the DiscountTotal property of the Order instance. To do this, use the values calculated while setting the SavingsAmount value of the OrderDiscount instance. - Save the changes.

Save the changes to the manager.

Here is a code example:

`public`

`static`

`void`

`CreateOrderDiscount(Guid orderId, Guid discountId, `

`decimal`

`savingsAmount)`

`{`

` `

`OrdersManager ordersManager = OrdersManager.GetManager();`

` `

`//Get the order.`

` `

`Order order = ordersManager.GetOrder(orderId);`

` `

`if`

`(order == `

`null`

`)`

` `

`{`

` `

`return`

`; `

`//Order does not exist.`

` `

`}`

` `

`//Get the discount.`

` `

`Discount discount = ordersManager.GetDiscount(discountId);`

` `

`if`

`(discount == `

`null`

`)`

` `

`{`

` `

`return`

`; `

`//Discount does not exist.`

` `

`}`

` `

`//Create a new order discount.`

` `

`OrderDiscount orderDiscount = ordersManager.CreateOrderDiscount();`

` `

`//Set the required properties.`

` `

`orderDiscount.DefaultCurrency = discount.DefaultCurrency;`

` `

`orderDiscount.DiscountAmount = discount.DiscountAmount;`

` `

`orderDiscount.DiscountAmountType = discount.DiscountAmountType;`

` `

`orderDiscount.DiscountType = discount.DiscountType;`

` `

`orderDiscount.Title = discount.Title;`

` `

`//Calculate the savings amount for the current discount.`

` `

`decimal`

`orderDiscountTotal = order.Discounts.Sum(d => d.SavingsAmount);`

` `

`decimal`

`currentSavingsAmaount = DiscountCalculator.CalculateDiscountAmount(discount, order.SubTotalDisplay - orderDiscountTotal);`

` `

`//Set the savings amount for the discount.`

` `

`orderDiscount.SavingsAmount = currentSavingsAmaount;`

` `

`//Set the parent discount.`

` `

`orderDiscount.ParentDiscount = discount;`

` `

`//Set the parent order.`

` `

`orderDiscount.ParentOrder = order;`

` `

`order.Discounts.Add(orderDiscount);`

` `

`//Update the DiscountTotal property.`

` `

`order.DiscountTotal = orderDiscountTotal + currentSavingsAmaount;`

` `

`ordersManager.SaveChanges();`

`}`