def get_source_base_data(self, order_source): """ :type order_source: shuup.core.order_creator.OrderSource """ return dict( shop=order_source.shop, currency=order_source.currency, prices_include_tax=order_source.prices_include_tax, shipping_address=(order_source.shipping_address.to_immutable() if order_source.shipping_address else None), billing_address=(order_source.billing_address.to_immutable() if order_source.billing_address else None), customer=(order_source.customer or None), orderer=(order_source.orderer or None), creator=real_user_or_none(order_source.creator), shipping_method=order_source.shipping_method, payment_method=order_source.payment_method, customer_comment=(order_source.customer_comment if order_source.customer_comment else ""), marketing_permission=bool(order_source.marketing_permission), language=order_source.language, ip_address=order_source.ip_address, order_date=order_source.order_date, status=order_source.status, payment_data=order_source.payment_data, shipping_data=order_source.shipping_data, extra_data=order_source.extra_data)
def get_source_base_data(self, order_source): """ :type order_source: shuup.core.order_creator.OrderSource """ return dict( shop=order_source.shop, currency=order_source.currency, prices_include_tax=order_source.prices_include_tax, shipping_address=(order_source.shipping_address.to_immutable() if order_source.shipping_address else None), billing_address=(order_source.billing_address.to_immutable() if order_source.billing_address else None), customer=(order_source.customer or None), orderer=(order_source.orderer or None), creator=real_user_or_none(order_source.creator), shipping_method=order_source.shipping_method, payment_method=order_source.payment_method, customer_comment=(order_source.customer_comment if order_source.customer_comment else ""), marketing_permission=bool(order_source.marketing_permission), language=order_source.language, ip_address=order_source.ip_address, order_date=order_source.order_date, status=order_source.status, payment_data=order_source.payment_data, shipping_data=order_source.shipping_data, extra_data=order_source.extra_data )
def update_order_from_source(self, order_source, order): data = self.get_source_base_data(order_source) for key in self._PROTECTED_ATTRIBUTES: if key in data: data.pop(key) data.update({ "modified_by": real_user_or_none(order_source.modified_by), "modified_on": now() }) Order.objects.filter(pk=order.pk).update(**data) order = Order.objects.get(pk=order.pk) for module in get_order_source_modifier_modules(): module.clear_codes(order) products_to_adjust_stock = set() for line in order.lines.all(): if line.product: products_to_adjust_stock.add((line.product, line.supplier)) line.taxes.all().delete() # Delete all tax lines before OrderLine's line.child_lines.all().delete() # Ditto for child lines line.delete() for product, supplier in products_to_adjust_stock: supplier.module.update_stock(product.id) return self.finalize_creation(order, order_source)
def post(self, request, *args, **kwargs): title = request.POST.get("title", "") basket = request.basket if not request.customer: return JsonResponse({"ok": False}, status=403) if not title: return JsonResponse( { "ok": False, "error": force_text(_("Please enter a basket title.")) }, status=400) if basket.is_empty: return JsonResponse( { "ok": False, "error": force_text(_("Can't save an empty basket.")) }, status=400) saved_basket = StoredBasket( shop=basket.shop, customer=basket.customer, orderer=basket.orderer, creator=real_user_or_none(basket.creator), currency=basket.currency, prices_include_tax=basket.prices_include_tax, persistent=True, title=title, data=basket.storage.load(basket=basket), product_count=basket.smart_product_count) saved_basket.save() saved_basket.products.set(set(basket.product_ids)) return JsonResponse({"ok": True}, status=200)
def update_order_from_source(self, order_source, order): data = self.get_source_base_data(order_source) for key in self._PROTECTED_ATTRIBUTES: if key in data: data.pop(key) data.update({ "modified_by": real_user_or_none(order_source.modified_by), "modified_on": now() }) Order.objects.filter(pk=order.pk).update(**data) order = Order.objects.get(pk=order.pk) for module in get_order_source_modifier_modules(): module.clear_codes(order) products_to_adjust_stock = set() for line in order.lines.all(): if line.product: products_to_adjust_stock.add((line.product, line.supplier)) line.taxes.all().delete() # Delete all tax lines before OrderLine's line.child_lines.all().delete() # Ditto for child lines line.delete() for product, supplier in products_to_adjust_stock: supplier.module.update_stock(product.id) return self.finalize_creation(order, order_source)
def save(self, basket, data): """ :type basket: shuup_public_api.models.APIBasket """ stored_basket = self._get_stored_basket(basket) stored_basket.data = data stored_basket.taxless_total_price = basket.taxless_total_price_or_none stored_basket.taxful_total_price = basket.taxful_total_price_or_none stored_basket.product_count = basket.product_count stored_basket.customer = (basket.customer or None) stored_basket.orderer = (basket.orderer or None) stored_basket.creator = real_user_or_none(basket.creator) stored_basket.save() stored_basket.products = set(basket.product_ids)
def save(self, basket, data): """ :type basket: shuup.core.basket.objects.BaseBasket """ stored_basket = self._load_stored_basket(basket) stored_basket.data = data stored_basket.taxless_total_price = basket.taxless_total_price_or_none stored_basket.taxful_total_price = basket.taxful_total_price_or_none stored_basket.product_count = basket.smart_product_count stored_basket.customer = (basket.customer or None) stored_basket.orderer = (basket.orderer or None) stored_basket.creator = real_user_or_none(basket.creator) stored_basket.save() stored_basket.products = set(basket.product_ids) return stored_basket
def save(self, basket, data): """ :type basket: shuup.core.basket.objects.BaseBasket """ stored_basket = self._load_stored_basket(basket) stored_basket.data = data stored_basket.taxless_total_price = basket.taxless_total_price_or_none stored_basket.taxful_total_price = basket.taxful_total_price_or_none stored_basket.product_count = basket.smart_product_count stored_basket.customer = (basket.customer or None) stored_basket.orderer = (basket.orderer or None) stored_basket.creator = real_user_or_none(basket.creator) stored_basket.save() stored_basket.products = set(basket.product_ids) return stored_basket
def save(self, basket, data): """ :type basket: shuup.front.basket.objects.BaseBasket """ request = basket.request stored_basket = self._get_stored_basket(basket) stored_basket.data = data stored_basket.taxless_total_price = basket.taxless_total_price_or_none stored_basket.taxful_total_price = basket.taxful_total_price_or_none stored_basket.product_count = basket.product_count stored_basket.customer = (basket.customer or None) stored_basket.orderer = (basket.orderer or None) stored_basket.creator = real_user_or_none(basket.creator) stored_basket.save() stored_basket.products = set(basket.product_ids) basket_get_kwargs = {"pk": stored_basket.pk, "key": stored_basket.key} request.session[self._get_session_key(basket)] = basket_get_kwargs
def save(self, basket, data): """ :type basket: shuup.front.basket.objects.BaseBasket """ request = basket.request stored_basket = self._get_stored_basket(basket) stored_basket.data = data stored_basket.taxless_total_price = basket.taxless_total_price_or_none stored_basket.taxful_total_price = basket.taxful_total_price_or_none stored_basket.product_count = basket.product_count stored_basket.customer = (basket.customer or None) stored_basket.orderer = (basket.orderer or None) stored_basket.creator = real_user_or_none(basket.creator) stored_basket.save() stored_basket.products = set(basket.product_ids) basket_get_kwargs = {"pk": stored_basket.pk, "key": stored_basket.key} request.session[self._get_session_key(basket)] = basket_get_kwargs
def save(self, basket, data): """ :type basket: shuup.core.basket.objects.BaseBasket """ stored_basket = self._load_stored_basket(basket) stored_basket.data = data stored_basket.taxless_total_price = basket.taxless_total_price_or_none stored_basket.taxful_total_price = basket.taxful_total_price_or_none stored_basket.product_count = basket.smart_product_count stored_basket.customer = basket.customer or None stored_basket.orderer = basket.orderer or None stored_basket.creator = real_user_or_none(basket.creator) if hasattr(self.model, "supplier") and hasattr(basket, "supplier"): stored_basket.supplier = basket.supplier stored_basket.class_spec = "%s.%s" % (basket.__class__.__module__, basket.__class__.__name__) stored_basket.save() stored_basket.products.set(set(basket.product_ids)) return stored_basket
def update_order_from_source(self, order_source, order): data = self.get_source_base_data(order_source) for key in self._PROTECTED_ATTRIBUTES: if key in data: data.pop(key) data.update({ "modified_by": real_user_or_none(order_source.modified_by), "modified_on": now() }) Order.objects.filter(pk=order.pk).update(**data) order = Order.objects.get(pk=order.pk) for module in get_order_source_modifier_modules(): module.clear_codes(order) for line in order.lines.all(): line.taxes.all().delete() # Delete all tax lines before OrderLine's line.delete() return self.finalize_creation(order, order_source)
def update_order_from_source(self, order_source, order): data = self.get_source_base_data(order_source) for key in self._PROTECTED_ATTRIBUTES: if key in data: data.pop(key) data.update({ "modified_by": real_user_or_none(order_source.modified_by), "modified_on": now() }) Order.objects.filter(pk=order.pk).update(**data) order = Order.objects.get(pk=order.pk) for module in get_order_source_modifier_modules(): module.clear_codes(order) for line in order.lines.all(): line.taxes.all().delete( ) # Delete all tax lines before OrderLine's line.delete() return self.finalize_creation(order, order_source)
def post(self, request, *args, **kwargs): title = request.POST.get("title", "") basket = request.basket if not request.customer: return JsonResponse({"ok": False}, status=403) if not title: return JsonResponse({"ok": False, "error": force_text(_("Please enter a basket title."))}, status=400) if basket.product_count == 0: return JsonResponse({"ok": False, "error": force_text(_("Cannot save an empty basket."))}, status=400) saved_basket = StoredBasket( shop=basket.shop, customer=basket.customer, orderer=basket.orderer, creator=real_user_or_none(basket.creator), currency=basket.currency, prices_include_tax=basket.prices_include_tax, persistent=True, title=title, data=basket.storage.load(basket=basket), product_count=basket.product_count) saved_basket.save() saved_basket.products = set(basket.product_ids) return JsonResponse({"ok": True}, status=200)