Example #1
0
    def create_coupon_and_vouchers(self, cleaned_voucher_data):
        coupon_product = create_coupon_product_and_stockrecord(
            cleaned_voucher_data['title'], cleaned_voucher_data['category'],
            cleaned_voucher_data['partner'], cleaned_voucher_data['price'])

        vouchers = create_enterprise_vouchers(
            voucher_type=cleaned_voucher_data['voucher_type'],
            quantity=cleaned_voucher_data['quantity'],
            coupon_id=coupon_product.id,
            benefit_type=cleaned_voucher_data['benefit_type'],
            benefit_value=cleaned_voucher_data['benefit_value'],
            enterprise_customer=cleaned_voucher_data['enterprise_customer'],
            enterprise_customer_catalog=cleaned_voucher_data[
                'enterprise_customer_catalog'],
            max_uses=cleaned_voucher_data['max_uses'],
            email_domains=cleaned_voucher_data['email_domains'],
            site=self.request.site,
            end_datetime=cleaned_voucher_data['end_datetime'],
            start_datetime=cleaned_voucher_data['start_datetime'],
            code=cleaned_voucher_data['code'],
            name=cleaned_voucher_data['title'])

        attach_vouchers_to_coupon_product(
            coupon_product, vouchers, cleaned_voucher_data['note'],
            cleaned_voucher_data.get('notify_email'),
            cleaned_voucher_data['enterprise_customer'],
            cleaned_voucher_data['sales_force_id'])
        attach_or_update_contract_metadata_on_coupon(
            coupon_product,
            discount_type=cleaned_voucher_data['contract_discount_type'],
            discount_value=cleaned_voucher_data['contract_discount_value'],
            amount_paid=cleaned_voucher_data['prepaid_invoice_amount'],
        )

        return coupon_product
Example #2
0
    def update_coupon_product_data(self, request_data, coupon):
        baskets = Basket.objects.filter(lines__product_id=coupon.id,
                                        status=Basket.SUBMITTED)

        category_data = request_data.get('category')
        if category_data:
            category = Category.objects.get(name=category_data['name'])
            ProductCategory.objects.filter(product=coupon).update(
                category=category)

        client_username = request_data.get('client')
        enterprise_customer_data = request_data.get('enterprise_customer')
        enterprise_customer = enterprise_customer_data.get(
            'id', None) if enterprise_customer_data else None
        enterprise_customer_name = enterprise_customer_data.get(
            'name', None) if enterprise_customer_data else None
        if client_username or enterprise_customer:
            client, __ = BusinessClient.objects.update_or_create(
                name=enterprise_customer_name or client_username, )
            Invoice.objects.filter(order__basket=baskets.first()).update(
                business_client=client)
            coupon.attr.enterprise_customer_uuid = enterprise_customer

        coupon_price = request_data.get('price')
        if coupon_price:
            StockRecord.objects.filter(product=coupon).update(
                price_excl_tax=coupon_price)

        note = request_data.get('note')
        if note is not None:
            coupon.attr.note = note

        if 'notify_email' in request_data:
            coupon.attr.notify_email = request_data.get('notify_email')

        sales_force_id = request_data.get('sales_force_id')
        if sales_force_id is not None:
            coupon.attr.sales_force_id = sales_force_id

        if 'inactive' in request_data:
            coupon.attr.inactive = request_data.get('inactive')

        coupon.save()

        discount_value = request_data.get('contract_discount_value')
        prepaid_invoice_amount = request_data.get('prepaid_invoice_amount')
        if discount_value is not None or prepaid_invoice_amount is not None:
            discount_type = request_data.get('contract_discount_type')
            logger.info(
                "Calling attach_or_update_contract_metadata_on_coupon "
                "from api/v2/views/coupons.py for coupon [%s]", coupon.id)
            attach_or_update_contract_metadata_on_coupon(
                coupon,
                discount_type=discount_type,
                discount_value=discount_value,
                amount_paid=prepaid_invoice_amount,
            )