|
1 | 1 | """This module contains the api surface for consuming this package.""" |
2 | 2 |
|
| 3 | +from datetime import datetime |
3 | 4 | import hashlib |
4 | 5 | import os |
5 | 6 | import time |
6 | | -from datetime import datetime |
7 | 7 |
|
8 | 8 | from olittwhmcs import serializer, models |
9 | 9 | from olittwhmcs.exceptions import WhmcsException |
|
14 | 14 | create_user_request_parameters, get_client_product_request_parameters, \ |
15 | 15 | upgrade_product_request_parameters, prepare_get_invoices_request, \ |
16 | 16 | prepare_get_orders_request, prepare_cancel_order_request, \ |
17 | | - order_domain_request_parameters |
| 17 | + order_domain_request_parameters, order_bulk_products_request_parameters |
18 | 18 |
|
19 | 19 |
|
20 | 20 | ########## |
@@ -81,6 +81,7 @@ def update_client(**kwargs): |
81 | 81 | default_error = "Unable to update client details" |
82 | 82 | raise WhmcsException(response_or_error if response_or_error else default_error) |
83 | 83 |
|
| 84 | + |
84 | 85 | ########### |
85 | 86 | # PRODUCT # |
86 | 87 | ########### |
@@ -175,6 +176,29 @@ def order_product(client_id, payment_method, billing_cycle, product_id=None, |
175 | 176 | raise WhmcsException(response_or_error if response_or_error else default_error) |
176 | 177 |
|
177 | 178 |
|
| 179 | +def order_bulk_products(parameters=None, **kwargs): |
| 180 | + """ |
| 181 | + Place a multiple products order in WHMCS. |
| 182 | + :param parameters: dict of the order placed. |
| 183 | + :param product_id: Integer, id of the product to order. |
| 184 | + :param kwargs: (Optional) Other parameters to add to the order payload. |
| 185 | + Eg promo_code, affiliate_id, price (override), ... |
| 186 | + :return: id of placed order, id of corresponding invoice |
| 187 | + :rtype: int, int |
| 188 | + :raises WhmcsException: If an error occurs. |
| 189 | + """ |
| 190 | + if not parameters: |
| 191 | + parameters = {} |
| 192 | + updated_parameters = order_bulk_products_request_parameters(parameters) |
| 193 | + is_successful, response_or_error = get_whmcs_response(updated_parameters) |
| 194 | + if is_successful and response_or_error: |
| 195 | + order_id = response_or_error.get('orderid') |
| 196 | + invoice_id = response_or_error.get('invoiceid') |
| 197 | + return order_id, invoice_id |
| 198 | + default_error = "Unable to fetch products" |
| 199 | + raise WhmcsException(response_or_error if response_or_error else default_error) |
| 200 | + |
| 201 | + |
178 | 202 | def upgrade_client_product(service_id, payment_method, billing_cycle=None, |
179 | 203 | package_id=None): |
180 | 204 | """Upgrade a product in WHMCS. |
|
0 commit comments