コード例 #1
0
ファイル: availability.py プロジェクト: zjxpirate/saleor
def get_product_availability(
    product: Product,
    discounts: Iterable[DiscountInfo] = None,
    taxes=None,
    local_currency: str = None,
) -> ProductAvailability:

    discounted = product.get_price_range(discounts=discounts, taxes=taxes)
    undiscounted = product.get_price_range(taxes=taxes)

    discount = _get_total_discount(undiscounted, discounted)
    price_range_local, discount_local_currency = _get_product_price_range(
        discounted, undiscounted, local_currency)

    is_on_sale = product.is_visible and discount is not None

    return ProductAvailability(
        available=product.is_available,
        on_sale=is_on_sale,
        price_range=discounted,
        price_range_undiscounted=undiscounted,
        discount=discount,
        price_range_local_currency=price_range_local,
        discount_local_currency=discount_local_currency,
    )
コード例 #2
0
def get_product_availability(
    product: Product,
    discounts: Iterable[DiscountInfo] = None,
    country=None,
    local_currency=None,
    extensions=None,
) -> ProductAvailability:

    if not extensions:
        extensions = get_extensions_manager()
    discounted_net_range = product.get_price_range(discounts=discounts)
    undiscounted_net_range = product.get_price_range()
    discounted = TaxedMoneyRange(
        start=extensions.apply_taxes_to_product(
            product, discounted_net_range.start, country
        ),
        stop=extensions.apply_taxes_to_product(
            product, discounted_net_range.stop, country
        ),
    )
    undiscounted = TaxedMoneyRange(
        start=extensions.apply_taxes_to_product(
            product, undiscounted_net_range.start, country
        ),
        stop=extensions.apply_taxes_to_product(
            product, undiscounted_net_range.stop, country
        ),
    )

    discount = _get_total_discount(undiscounted, discounted)
    price_range_local, discount_local_currency = _get_product_price_range(
        discounted, undiscounted, local_currency
    )

    is_on_sale = product.is_visible and discount is not None

    return ProductAvailability(
        available=product.is_available,
        on_sale=is_on_sale,
        price_range=discounted,
        price_range_undiscounted=undiscounted,
        discount=discount,
        price_range_local_currency=price_range_local,
        discount_local_currency=discount_local_currency,
    )
コード例 #3
0
ファイル: availability.py プロジェクト: martinMutuma/beils2
def get_product_availability(
    product: Product,
    discounts: Iterable[DiscountInfo] = None,
    country: Optional[str] = None,
    local_currency: Optional[str] = None,
    extensions: Optional["ExtensionsManager"] = None,
) -> ProductAvailability:

    if not extensions:
        extensions = get_extensions_manager()
    discounted_net_range = product.get_price_range(discounts=discounts)
    undiscounted_net_range = product.get_price_range()
    discounted = TaxedMoneyRange(
        start=extensions.apply_taxes_to_product(product,
                                                discounted_net_range.start,
                                                country),
        stop=extensions.apply_taxes_to_product(product,
                                               discounted_net_range.stop,
                                               country),
    )
    undiscounted = TaxedMoneyRange(
        start=extensions.apply_taxes_to_product(product,
                                                undiscounted_net_range.start,
                                                country),
        stop=extensions.apply_taxes_to_product(product,
                                               undiscounted_net_range.stop,
                                               country),
    )

    discount = _get_total_discount_from_range(undiscounted, discounted)
    price_range_local, discount_local_currency = _get_product_price_range(
        discounted, undiscounted, local_currency)

    is_on_sale = product.is_visible and discount is not None
    country = country if country is not None else settings.DEFAULT_COUNTRY
    is_available = product.is_visible and is_product_in_stock(product, country)
    return ProductAvailability(
        on_sale=is_on_sale,
        price_range=discounted,
        price_range_undiscounted=undiscounted,
        discount=discount,
        price_range_local_currency=price_range_local,
        discount_local_currency=discount_local_currency,
    )
コード例 #4
0
def get_product_availability(
    product: Product,
    discounts: Iterable[DiscountInfo] = None,
    country: Optional[str] = None,
    local_currency: Optional[str] = None,
    plugins: Optional["PluginsManager"] = None,
) -> ProductAvailability:

    if not plugins:
        plugins = get_plugins_manager()
    discounted_net_range = product.get_price_range(discounts=discounts)
    undiscounted_net_range = product.get_price_range()
    discounted = TaxedMoneyRange(
        start=plugins.apply_taxes_to_product(product,
                                             discounted_net_range.start,
                                             country),
        stop=plugins.apply_taxes_to_product(product, discounted_net_range.stop,
                                            country),
    )
    undiscounted = TaxedMoneyRange(
        start=plugins.apply_taxes_to_product(product,
                                             undiscounted_net_range.start,
                                             country),
        stop=plugins.apply_taxes_to_product(product,
                                            undiscounted_net_range.stop,
                                            country),
    )

    discount = _get_total_discount_from_range(undiscounted, discounted)
    price_range_local, discount_local_currency = _get_product_price_range(
        discounted, undiscounted, local_currency)

    is_on_sale = product.is_visible and discount is not None
    return ProductAvailability(
        on_sale=is_on_sale,
        price_range=discounted,
        price_range_undiscounted=undiscounted,
        discount=discount,
        price_range_local_currency=price_range_local,
        discount_local_currency=discount_local_currency,
    )
コード例 #5
0
ファイル: availability.py プロジェクト: mirumee/saleor
def get_product_availability(
    product: Product, discounts=None, taxes=None, local_currency=None
) -> ProductAvailability:

    discounted = product.get_price_range(discounts=discounts, taxes=taxes)
    undiscounted = product.get_price_range(taxes=taxes)

    discount = _get_total_discount(undiscounted, discounted)
    price_range_local, discount_local_currency = _get_product_price_range(
        discounted, undiscounted, local_currency
    )

    is_on_sale = product.is_visible and discount is not None

    return ProductAvailability(
        available=product.is_available,
        on_sale=is_on_sale,
        price_range=discounted,
        price_range_undiscounted=undiscounted,
        discount=discount,
        price_range_local_currency=price_range_local,
        discount_local_currency=discount_local_currency,
    )