コード例 #1
0
ファイル: conftest.py プロジェクト: abckristinaa/testversion
def order_with_variant_from_different_stocks(order_with_lines_and_stock):
    line = OrderLine.objects.get(product_sku='SKU_A')
    variant = ProductVariant.objects.get(sku=line.product_sku)
    warehouse_2 = StockLocation.objects.create(name='Warehouse 2')
    stock = Stock.objects.create(variant=variant,
                                 cost_price=1,
                                 quantity=5,
                                 quantity_allocated=2,
                                 location=warehouse_2)
    OrderLine.objects.create(
        delivery_group=line.delivery_group,
        product=variant.product,
        product_name=variant.product.name,
        product_sku=line.product_sku,
        is_shipping_required=variant.product.product_type.is_shipping_required,
        quantity=2,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'),
        stock=stock,
        stock_location=stock.location.name)
    warehouse_2 = StockLocation.objects.create(name='Warehouse 3')
    Stock.objects.create(variant=variant,
                         cost_price=1,
                         quantity=5,
                         quantity_allocated=0,
                         location=warehouse_2)
    recalculate_order(order_with_lines_and_stock)
    return order_with_lines_and_stock
コード例 #2
0
ファイル: conftest.py プロジェクト: abckristinaa/testversion
def delivery_group(order, product_type, default_category):
    group = DeliveryGroup.objects.create(order=order)
    product = Product.objects.create(name='Test product',
                                     price=Decimal('10.00'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product, sku='SKU_A')
    warehouse = StockLocation.objects.create(name='Warehouse 2')
    stock = Stock.objects.create(variant=variant,
                                 cost_price=1,
                                 quantity=5,
                                 quantity_allocated=3,
                                 location=warehouse)
    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_A',
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=3,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'),
        stock=stock,
        stock_location=stock.location.name)
    recalculate_order(order)
    order.refresh_from_db()
    return group
コード例 #3
0
ファイル: conftest.py プロジェクト: sg27950/darwin-saloer-app
def order_with_lines(order, product_type, category, shipping_zone, vatlayer):
    taxes = vatlayer
    product = Product.objects.create(
        name="Test product",
        price=Money("10.00", "USD"),
        product_type=product_type,
        category=category,
    )
    variant = ProductVariant.objects.create(
        product=product,
        sku="SKU_A",
        cost_price=Money(1, "USD"),
        quantity=5,
        quantity_allocated=3,
    )
    order.lines.create(
        product_name=variant.display_product(),
        product_sku=variant.sku,
        is_shipping_required=variant.is_shipping_required(),
        quantity=3,
        variant=variant,
        unit_price=variant.get_price(taxes=taxes),
        tax_rate=taxes["standard"]["value"],
    )

    product = Product.objects.create(
        name="Test product 2",
        price=Money("20.00", "USD"),
        product_type=product_type,
        category=category,
    )
    variant = ProductVariant.objects.create(
        product=product,
        sku="SKU_B",
        cost_price=Money(2, "USD"),
        quantity=2,
        quantity_allocated=2,
    )
    order.lines.create(
        product_name=variant.display_product(),
        product_sku=variant.sku,
        is_shipping_required=variant.is_shipping_required(),
        quantity=2,
        variant=variant,
        unit_price=variant.get_price(taxes=taxes),
        tax_rate=taxes["standard"]["value"],
    )

    order.shipping_address = order.billing_address.get_copy()
    method = shipping_zone.shipping_methods.get()
    order.shipping_method_name = method.name
    order.shipping_method = method
    order.shipping_price = method.get_total(taxes)
    order.save()

    recalculate_order(order)

    order.refresh_from_db()
    return order
コード例 #4
0
def test_order_get_subtotal(order_with_lines):
    order_with_lines.discount_name = "Test discount"
    order_with_lines.discount = order_with_lines.total.gross * Decimal("0.5")
    recalculate_order(order_with_lines)

    target_subtotal = order_with_lines.total - order_with_lines.shipping_price
    target_subtotal += order_with_lines.discount
    assert order_with_lines.get_subtotal() == target_subtotal
コード例 #5
0
ファイル: test_order.py プロジェクト: mirumee/saleor
def test_order_get_subtotal(order_with_lines):
    order_with_lines.discount_name = "Test discount"
    order_with_lines.discount_amount = order_with_lines.total.gross * Decimal("0.5")
    recalculate_order(order_with_lines)

    target_subtotal = order_with_lines.total - order_with_lines.shipping_price
    target_subtotal += order_with_lines.discount_amount
    assert order_with_lines.get_subtotal() == target_subtotal
コード例 #6
0
def order_with_lines(order, product_type, default_category, shipping_method):
    product = Product.objects.create(name='Test product',
                                     price=Money('10.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product, sku='SKU_A')
    warehouse = StockLocation.objects.create(name='Warehouse 1')
    stock = Stock.objects.create(variant=variant,
                                 cost_price=Money(1, 'USD'),
                                 quantity=5,
                                 quantity_allocated=3,
                                 location=warehouse)
    order.lines.create(
        product=product,
        product_name=product.name,
        product_sku='SKU_A',
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=3,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'),
        stock=stock,
        stock_location=stock.location.name)

    product = Product.objects.create(name='Test product 2',
                                     price=Money('20.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product, sku='SKU_B')
    stock = Stock.objects.create(variant=variant,
                                 cost_price=Money(2, 'USD'),
                                 quantity=2,
                                 quantity_allocated=2,
                                 location=warehouse)
    order.lines.create(
        product=product,
        product_name=product.name,
        product_sku='SKU_B',
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=2,
        unit_price_net=Decimal('20.00'),
        unit_price_gross=Decimal('20.00'),
        stock=stock,
        stock_location=stock.location.name)

    order.shipping_address = order.billing_address.get_copy()
    order.shipping_method_name = shipping_method.name
    method = shipping_method.price_per_country.get()
    order.shipping_method = method
    order.shipping_price = method.get_total_price()
    order.save()

    recalculate_order(order)
    order.refresh_from_db()
    return order
コード例 #7
0
ファイル: conftest.py プロジェクト: viktortat/saleor
def order_with_lines(order, product_type, default_category, shipping_method):
    product = Product.objects.create(name='Test product',
                                     price=Money('10.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product,
                                            sku='SKU_A',
                                            cost_price=Money(1, 'USD'),
                                            quantity=0,
                                            quantity_allocated=0)
    order.lines.create(
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk, ),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('10.00'),
        unit_price_gross=Decimal('10.00'),
        variant=variant)
    product = Product.objects.create(name='Test product 2',
                                     price=Money('20.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product,
                                            sku='SKU_B',
                                            cost_price=Money(2, 'USD'),
                                            quantity=0,
                                            quantity_allocated=0)
    order.lines.create(
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk, ),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('20.00'),
        unit_price_gross=Decimal('20.00'),
        variant=variant)
    product = Product.objects.create(name='Test product 3',
                                     price=Money('30.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)

    order.shipping_address = order.billing_address.get_copy()
    order.shipping_method_name = shipping_method.name
    method = shipping_method.price_per_country.get()
    order.shipping_method = method
    order.shipping_price = method.get_total_price()
    order.save()
    recalculate_order(order)
    order.refresh_from_db()

    recalculate_order(order)
    return order
コード例 #8
0
def order_with_lines(order, product_type, default_category, shipping_method,
                     vatlayer):
    taxes = vatlayer
    product = Product.objects.create(name='Test product',
                                     price=Money('10.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product,
                                            sku='SKU_A',
                                            cost_price=Money(1, 'USD'),
                                            quantity=5,
                                            quantity_allocated=3)
    order.lines.create(product_name=variant.display_product(),
                       product_sku=variant.sku,
                       is_shipping_required=variant.is_shipping_required(),
                       quantity=3,
                       variant=variant,
                       unit_price=variant.get_price(taxes=taxes),
                       tax_rate=taxes['standard']['value'])

    product = Product.objects.create(name='Test product 2',
                                     price=Money('20.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product,
                                            sku='SKU_B',
                                            cost_price=Money(2, 'USD'),
                                            quantity=2,
                                            quantity_allocated=2)
    order.lines.create(product_name=variant.display_product(),
                       product_sku=variant.sku,
                       is_shipping_required=variant.is_shipping_required(),
                       quantity=2,
                       variant=variant,
                       unit_price=variant.get_price(taxes=taxes),
                       tax_rate=taxes['standard']['value'])

    order.shipping_address = order.billing_address.get_copy()
    order.shipping_method_name = shipping_method.name
    method = shipping_method.price_per_country.get()
    order.shipping_method = method
    order.shipping_price = method.get_total_price(taxes)
    order.save()

    recalculate_order(order)

    order.refresh_from_db()
    return order
コード例 #9
0
def order_with_lines_and_stock(order, product_type, default_category):
    product = Product.objects.create(name='Test product',
                                     price=Money('10.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product, sku='SKU_A')
    warehouse = StockLocation.objects.create(name='Warehouse 1')
    stock = Stock.objects.create(variant=variant,
                                 cost_price=Money(1, 'USD'),
                                 quantity=5,
                                 quantity_allocated=3,
                                 location=warehouse)
    order.lines.create(
        order=order,
        product=product,
        product_name=product.name,
        product_sku='SKU_A',
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=3,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'),
        stock=stock,
        stock_location=stock.location.name)
    product = Product.objects.create(name='Test product 2',
                                     price=Money('20.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)
    variant = ProductVariant.objects.create(product=product, sku='SKU_B')
    stock = Stock.objects.create(variant=variant,
                                 cost_price=Money(2, 'USD'),
                                 quantity=2,
                                 quantity_allocated=2,
                                 location=warehouse)
    order.lines.create(
        order=order,
        product=product,
        product_name=product.name,
        product_sku='SKU_B',
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=2,
        unit_price_net=Decimal('20.00'),
        unit_price_gross=Decimal('20.00'),
        stock=stock,
        stock_location=stock.location.name)
    recalculate_order(order)
    order.refresh_from_db()
    return order
コード例 #10
0
ファイル: conftest.py プロジェクト: abckristinaa/testversion
def order_with_lines(order, product_type, default_category):
    group = DeliveryGroup.objects.create(order=order)
    product = Product.objects.create(name='Test product',
                                     price=Decimal('10.00'),
                                     product_type=product_type,
                                     category=default_category)

    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk, ),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('10.00'),
        unit_price_gross=Decimal('10.00'))
    product = Product.objects.create(name='Test product 2',
                                     price=Decimal('20.00'),
                                     product_type=product_type,
                                     category=default_category)

    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk, ),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('20.00'),
        unit_price_gross=Decimal('20.00'))
    product = Product.objects.create(name='Test product 3',
                                     price=Decimal('30.00'),
                                     product_type=product_type,
                                     category=default_category)

    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk, ),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'))

    recalculate_order(order)
    return order
コード例 #11
0
ファイル: draft_orders.py プロジェクト: protostartup/djsaleor
 def save(cls, info, instance, cleaned_input):
     shipping_address = cleaned_input.get('shipping_address')
     if shipping_address:
         shipping_address.save()
         instance.shipping_address = shipping_address
     billing_address = cleaned_input.get('billing_address')
     if billing_address:
         billing_address.save()
         instance.billing_address = billing_address
     super().save(info, instance, cleaned_input)
     instance.save(update_fields=['billing_address', 'shipping_address'])
     variants = cleaned_input.get('variants')
     quantities = cleaned_input.get('quantities')
     if variants and quantities:
         for variant, quantity in zip(variants, quantities):
             add_variant_to_order(instance, variant, quantity)
     recalculate_order(instance)
コード例 #12
0
ファイル: draft_orders.py プロジェクト: zach-luman/saleor
 def save(cls, info, instance, cleaned_input):
     shipping_address = cleaned_input.get('shipping_address')
     if shipping_address:
         shipping_address.save()
         instance.shipping_address = shipping_address
     billing_address = cleaned_input.get('billing_address')
     if billing_address:
         billing_address.save()
         instance.billing_address = billing_address
     super().save(info, instance, cleaned_input)
     instance.save(update_fields=['billing_address', 'shipping_address'])
     variants = cleaned_input.get('variants')
     quantities = cleaned_input.get('quantities')
     if variants and quantities:
         for variant, quantity in zip(variants, quantities):
             add_variant_to_order(instance, variant, quantity)
     recalculate_order(instance)
コード例 #13
0
ファイル: conftest.py プロジェクト: patrys/saleor
def order_with_lines(order, product_type, default_category):
    group = DeliveryGroup.objects.create(order=order)
    product = Product.objects.create(
        name='Test product', price=Decimal('10.00'),
        product_type=product_type, category=default_category)

    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk,),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('10.00'),
        unit_price_gross=Decimal('10.00'))
    product = Product.objects.create(
        name='Test product 2', price=Decimal('20.00'),
        product_type=product_type, category=default_category)

    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk,),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('20.00'),
        unit_price_gross=Decimal('20.00'))
    product = Product.objects.create(
        name='Test product 3', price=Decimal('30.00'),
        product_type=product_type, category=default_category)

    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk,),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'))

    recalculate_order(order)
    return order
コード例 #14
0
ファイル: conftest.py プロジェクト: zach-luman/saleor
def order_with_lines(
        order, product_type, default_category, shipping_method, vatlayer):
    taxes = vatlayer
    product = Product.objects.create(
        name='Test product', price=Money('10.00', 'USD'),
        product_type=product_type, category=default_category)
    variant = ProductVariant.objects.create(
        product=product, sku='SKU_A', cost_price=Money(1, 'USD'), quantity=5,
        quantity_allocated=3)
    order.lines.create(
        product_name=variant.display_product(),
        product_sku=variant.sku,
        is_shipping_required=variant.is_shipping_required(),
        quantity=3,
        variant=variant,
        unit_price=variant.get_price(taxes=taxes),
        tax_rate=taxes['standard']['value'])

    product = Product.objects.create(
        name='Test product 2', price=Money('20.00', 'USD'),
        product_type=product_type, category=default_category)
    variant = ProductVariant.objects.create(
        product=product, sku='SKU_B', cost_price=Money(2, 'USD'), quantity=2,
        quantity_allocated=2)
    order.lines.create(
        product_name=variant.display_product(),
        product_sku=variant.sku,
        is_shipping_required=variant.is_shipping_required(),
        quantity=2,
        variant=variant,
        unit_price=variant.get_price(taxes=taxes),
        tax_rate=taxes['standard']['value'])

    order.shipping_address = order.billing_address.get_copy()
    order.shipping_method_name = shipping_method.name
    method = shipping_method.price_per_country.get()
    order.shipping_method = method
    order.shipping_price = method.get_total_price(taxes)
    order.save()

    recalculate_order(order)

    order.refresh_from_db()
    return order
コード例 #15
0
def order_with_lines(order, product_type, default_category):
    product = Product.objects.create(name='Test product',
                                     price=Money('10.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)

    order.lines.create(
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk, ),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('10.00'),
        unit_price_gross=Decimal('10.00'))
    product = Product.objects.create(name='Test product 2',
                                     price=Money('20.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)

    order.lines.create(
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk, ),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('20.00'),
        unit_price_gross=Decimal('20.00'))
    product = Product.objects.create(name='Test product 3',
                                     price=Money('30.00', 'USD'),
                                     product_type=product_type,
                                     category=default_category)

    order.lines.create(
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk, ),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'))

    recalculate_order(order)
    return order
コード例 #16
0
ファイル: conftest.py プロジェクト: patrys/saleor
def order_with_lines_and_stock(order, product_type, default_category):
    group = DeliveryGroup.objects.create(order=order)
    product = Product.objects.create(
        name='Test product', price=Decimal('10.00'),
        product_type=product_type, category=default_category)
    variant = ProductVariant.objects.create(product=product, sku='SKU_A')
    warehouse = StockLocation.objects.create(name='Warehouse 1')
    stock = Stock.objects.create(
        variant=variant, cost_price=1, quantity=5, quantity_allocated=3,
        location=warehouse)
    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_A',
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=3,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'),
        stock=stock,
        stock_location=stock.location.name)
    product = Product.objects.create(
        name='Test product 2', price=Decimal('20.00'),
        product_type=product_type, category=default_category)
    variant = ProductVariant.objects.create(product=product, sku='SKU_B')
    stock = Stock.objects.create(
        variant=variant, cost_price=2, quantity=2, quantity_allocated=2,
        location=warehouse)
    OrderLine.objects.create(
        delivery_group=group,
        product=product,
        product_name=product.name,
        product_sku='SKU_B',
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=2,
        unit_price_net=Decimal('20.00'),
        unit_price_gross=Decimal('20.00'),
        stock=stock,
        stock_location=stock.location.name)
    recalculate_order(order)
    order.refresh_from_db()
    return order
コード例 #17
0
def order_with_lines_and_stock(order, product_class):
    group = DeliveryGroup.objects.create(order=order)
    product = Product.objects.create(name='Test product',
                                     price=Decimal('10.00'),
                                     product_class=product_class)
    variant = ProductVariant.objects.create(product=product, sku='SKU_A')
    warehouse = StockLocation.objects.create(name='Warehouse 1')
    stock = Stock.objects.create(variant=variant,
                                 cost_price=1,
                                 quantity=5,
                                 quantity_allocated=3,
                                 location=warehouse)
    OrderLine.objects.create(delivery_group=group,
                             product=product,
                             product_name=product.name,
                             product_sku='SKU_A',
                             quantity=3,
                             unit_price_net=Decimal('30.00'),
                             unit_price_gross=Decimal('30.00'),
                             stock=stock,
                             stock_location=stock.location.name)
    product = Product.objects.create(name='Test product 2',
                                     price=Decimal('20.00'),
                                     product_class=product_class)
    variant = ProductVariant.objects.create(product=product, sku='SKU_B')
    stock = Stock.objects.create(variant=variant,
                                 cost_price=2,
                                 quantity=2,
                                 quantity_allocated=2,
                                 location=warehouse)
    OrderLine.objects.create(delivery_group=group,
                             product=product,
                             product_name=product.name,
                             product_sku='SKU_B',
                             quantity=2,
                             unit_price_net=Decimal('20.00'),
                             unit_price_gross=Decimal('20.00'),
                             stock=stock,
                             stock_location=stock.location.name)
    recalculate_order(order)
    order.refresh_from_db()
    return order
コード例 #18
0
ファイル: conftest.py プロジェクト: artursmet/saleor
def order_with_lines(order, product_type, default_category):
    product = Product.objects.create(
        name='Test product', price=Money('10.00', 'USD'),
        product_type=product_type, category=default_category)

    order.lines.create(
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk,),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('10.00'),
        unit_price_gross=Decimal('10.00'))
    product = Product.objects.create(
        name='Test product 2', price=Money('20.00', 'USD'),
        product_type=product_type, category=default_category)

    order.lines.create(
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk,),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('20.00'),
        unit_price_gross=Decimal('20.00'))
    product = Product.objects.create(
        name='Test product 3', price=Money('30.00', 'USD'),
        product_type=product_type, category=default_category)

    order.lines.create(
        product=product,
        product_name=product.name,
        product_sku='SKU_%d' % (product.pk,),
        is_shipping_required=product.product_type.is_shipping_required,
        quantity=1,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'))

    recalculate_order(order)
    return order
コード例 #19
0
ファイル: conftest.py プロジェクト: patrys/saleor
def order_with_variant_from_different_stocks(order_with_lines_and_stock):
    line = OrderLine.objects.get(product_sku='SKU_A')
    variant = ProductVariant.objects.get(sku=line.product_sku)
    warehouse_2 = StockLocation.objects.create(name='Warehouse 2')
    stock = Stock.objects.create(
        variant=variant, cost_price=1, quantity=5, quantity_allocated=2,
        location=warehouse_2)
    OrderLine.objects.create(
        delivery_group=line.delivery_group,
        product=variant.product,
        product_name=variant.product.name,
        product_sku=line.product_sku,
        is_shipping_required=variant.product.product_type.is_shipping_required,
        quantity=2,
        unit_price_net=Decimal('30.00'),
        unit_price_gross=Decimal('30.00'),
        stock=stock,
        stock_location=stock.location.name)
    warehouse_2 = StockLocation.objects.create(name='Warehouse 3')
    Stock.objects.create(
        variant=variant, cost_price=1, quantity=5, quantity_allocated=0,
        location=warehouse_2)
    recalculate_order(order_with_lines_and_stock)
    return order_with_lines_and_stock
コード例 #20
0
ファイル: conftest.py プロジェクト: rdandy/saleor-2.8
def order_with_lines(order, product_type, category, shipping_zone):
    product = Product.objects.create(
        name="Test product",
        price=Money("10.00", "USD"),
        product_type=product_type,
        category=category,
    )
    variant = ProductVariant.objects.create(
        product=product,
        sku="SKU_A",
        cost_price=Money(1, "USD"),
        quantity=5,
        quantity_allocated=3,
    )
    net = variant.get_price()
    gross = Money(amount=net.amount * Decimal(1.23), currency=net.currency)
    order.lines.create(
        product_name=str(variant.product),
        variant_name=str(variant),
        product_sku=variant.sku,
        is_shipping_required=variant.is_shipping_required(),
        quantity=3,
        variant=variant,
        unit_price=TaxedMoney(net=net, gross=gross),
        tax_rate=23,
    )

    product = Product.objects.create(
        name="Test product 2",
        price=Money("20.00", "USD"),
        product_type=product_type,
        category=category,
    )
    variant = ProductVariant.objects.create(
        product=product,
        sku="SKU_B",
        cost_price=Money(2, "USD"),
        quantity=2,
        quantity_allocated=2,
    )

    net = variant.get_price()
    gross = Money(amount=net.amount * Decimal(1.23), currency=net.currency)
    order.lines.create(
        product_name=str(variant.product),
        variant_name=str(variant),
        product_sku=variant.sku,
        is_shipping_required=variant.is_shipping_required(),
        quantity=2,
        variant=variant,
        unit_price=TaxedMoney(net=net, gross=gross),
        tax_rate=23,
    )

    order.shipping_address = order.billing_address.get_copy()
    method = shipping_zone.shipping_methods.get()
    order.shipping_method_name = method.name
    order.shipping_method = method

    net = method.get_total()
    gross = Money(amount=net.amount * Decimal(1.23), currency=net.currency)
    order.shipping_price = TaxedMoney(net=net, gross=gross)
    order.save()

    recalculate_order(order)

    order.refresh_from_db()
    return order