Update the customer money
The customer money must be updated either when a new order is made or paid or when an order is deleted. When deleting an order using the DeleteOrder method of the OrdersManager instance, the customer money is automatically updated. When creating an order through the API you have to manually update the customer money. Depending on your logic you can execute the code below when creating an order or when setting its status to “Paid”.
NOTE: The code example below updates not only the customer money, but the customer statistic as well.
To update the customer money, when an order is created, you must perform the following:
- Get an instance of the manager.
Get an instance of the OrdersManager object.
- Get the specified customer.
Get an instance of the customer. For more information, read For developers: Query customers.
- Get the specified order.
Get an instance of the specified order. For more information, see For developers: Query orders.
- Create an instance of the CustomerStatisticUpdater class.
The CustomerStatisticUpdater class exposes a method that handles the updating of the customer money.
- Update the customer money.
To update the customer statistic, call the UpdateCustomerOrderStatistics method and pass the instances of the customer and the order as arguments. If no customer money exist for the customer, the method will create an instance internally. Note that this method will update the customer statistic as well. Also, you do not have to call the SaveChanges method of the manager, because it is called internally by the CustomerStatisticUpdater.
NOTE: In case you delete an Order in a way different than using the DeleteOrder method of the manager, you must manually update the customer money. In this case use the UpdateCustomerOrderStatisticsAfterDeleteOrder method of the CustomerStatisticUpdater class. Like the other method, this one also updates the customer statistic as well.
Use the following code sample: