def METHOD_NAME(
    cls,
    info,
    checkout,
    variants,
    checkout_lines_data,
    checkout_info,
    lines,
    manager,
    replace,
):
    channel_slug = checkout_info.channel.slug
    cls.validate_checkout_lines(
        info,
        variants,
        checkout_lines_data,
        checkout.get_country(),
        channel_slug,
        checkout_info.delivery_method_info,
        lines=lines,
    )
    variants_ids_to_validate = {
        variant.id
        for variant, line_data in zip(variants, checkout_lines_data)
        if line_data.quantity_to_update and line_data.quantity != 0
    }
    # validate variant only when line quantity is bigger than 0
    if variants_ids_to_validate:
        validate_variants_available_for_purchase(
            variants_ids_to_validate, checkout.channel_id
        )
        validate_variants_available_in_channel(
            variants_ids_to_validate,
            checkout.channel_id,
            CheckoutErrorCode.UNAVAILABLE_VARIANT_IN_CHANNEL.value,
        )
        validate_variants_are_published(
            variants_ids_to_validate, checkout.channel_id
        )
    if variants and checkout_lines_data:
        site = get_site_promise(info.context).get()
        checkout = add_variants_to_checkout(
            checkout,
            variants,
            checkout_lines_data,
            checkout_info.channel,
            replace=replace,
            replace_reservations=True,
            reservation_length=get_reservation_length(
                site=site, user=info.context.user
            ),
        )
    lines, _ = fetch_checkout_lines(checkout)
    shipping_channel_listings = checkout.channel.shipping_method_listings.all()
    update_delivery_method_lists_for_checkout_info(
        checkout_info,
        checkout_info.checkout.shipping_method,
        checkout_info.checkout.collection_point,
        checkout_info.shipping_address,
        lines,
        manager,
        shipping_channel_listings,
    )
    return lines