Beispiel #1
0
def test_create_delivery_overview_producer(
    order,
    order_items,
    products,
    logistics_user,
    traidoo_region,
    delivery_address,
    delivery_options,
    buyer,
    seller,
):
    order.recalculate_items_delivery_fee()
    factory = factories.DeliveryOverviewSellerFactory(order,
                                                      seller=seller,
                                                      region=traidoo_region)
    document = factory.compose()
    document.save()

    assert document.seller == factories.DeliveryOverviewSellerFactory.as_dict(
        logistics_user)
    assert document.buyer == factories.DeliveryOverviewSellerFactory.as_company(
        seller)
    assert document.order_id == order.id
    assert len(document.lines) == 2
    assert document.lines[0] == {
        "amount": 3,
        "container_name": "Isolierbox",
        "count": 3.0,
        "delivery_company": "Traidoo",
        "seller_user_id": logistics_user.id,
        "delivery_date": order_items[0].delivery_date.strftime("%d.%m.%Y"),
        "name": products[0].name,
        "number": products[0].id,
        "organic_control_body": seller.organic_control_body,
        "price": 14.31,
        "producer": "Traidoo",
        "unit": products[0].unit,
        "vat_rate": products[0].vat,
        "delivery_address": order_items[0].delivery_address_as_str,
        "pickup_address": seller.address_as_str,
    }
    assert document.lines[1] == {
        "amount": 1,
        "container_name": "Isolierbox",
        "count": 2.0,
        "delivery_company": seller.company_name,
        "seller_user_id": seller.id,
        "delivery_date": order_items[1].delivery_date.strftime("%d.%m.%Y"),
        "name": products[1].name,
        "number": products[1].id,
        "organic_control_body": seller.organic_control_body,
        "price": 12,
        "producer": "Traidoo",
        "unit": products[1].unit,
        "vat_rate": products[1].vat,
        "delivery_address": order_items[1].delivery_address_as_str,
        "pickup_address": seller.address_as_str,
    }
Beispiel #2
0
def test_delivery_address_included_in_delivery_documents(
        order, order_items, traidoo_region, seller, logistics_user,
        traidoo_settings):
    html = (factories.DeliveryOverviewSellerFactory(
        order, traidoo_region, seller=seller).compose().render_html())
    html = BeautifulSoup(html, features="html.parser")
    assert len(html.find_all("p",
                             text=lambda text: "von Best apples" in text)) == 2
    assert len(html.find_all("p", text=lambda text: "nach ABC" in text)) == 2
Beispiel #3
0
def test_delivery_overview_seller_from_neighbour_region(
        order_with_neighbour_product, other_region_product, neighbour_region):

    document = factories.DeliveryOverviewSellerFactory(
        order_with_neighbour_product,
        seller=other_region_product.seller,
        region=neighbour_region,
    ).compose()

    assert document.seller == factories.DeliveryOverviewSellerFactory.as_dict(
        neighbour_region.setting.logistics_company)
    assert document.buyer == factories.DeliveryOverviewSellerFactory.as_company(
        other_region_product.seller)
    assert (document.lines[0]["delivery_company"] ==
            neighbour_region.setting.logistics_company.company_name)
Beispiel #4
0
def test_send_delivery_documents_to_both_logistics_companies_for_cross_border_orders(
        order_with_neighbour_product, other_region_product, traidoo_region,
        neighbour_region):

    seller_delivery_document = factories.DeliveryOverviewSellerFactory(
        order=order_with_neighbour_product,
        region=other_region_product.region,
        seller=other_region_product.seller,
    ).compose()

    assert set(seller_delivery_document.receivers_emails) == {
        traidoo_region.setting.logistics_company.email,
        neighbour_region.setting.logistics_company.email,
        other_region_product.seller.email,
    }
Beispiel #5
0
    def delivery_documents(order: Order, sellers: List[User]):
        documents = []

        documents.append(
            factories.DeliveryOverviewBuyerFactory(
                order, region=order.region).compose())

        for seller in sellers:
            documents.append(
                factories.DeliveryOverviewSellerFactory(
                    order, region=seller.region, seller=seller).compose())

        # hide IBAN from delivery documents
        for document in documents:
            document.seller["iban"] = None

        return documents
Beispiel #6
0
def test_create_delivery_overview_producer_3rd_party_delivery(
    order,
    delivery_options,
    logistics_user,
    traidoo_region,
    delivery_address,
    products,
    order_items,
    seller,
    send_task,
    settings,
):
    settings.FEATURES["routes"] = True

    products[0].third_party_delivery = True
    products[0].save()
    order_items[0].delivery_option_id = DeliveryOption.SELLER
    order_items[0].save()
    order.recalculate_items_delivery_fee()

    supplier = baker.make_recipe("users.user",
                                 email="*****@*****.**",
                                 region=traidoo_region)
    baker.make("jobs.Job", order_item=order_items[0], user=supplier)

    factory = factories.DeliveryOverviewSellerFactory(order,
                                                      seller=seller,
                                                      region=traidoo_region)
    document = factory.compose()
    document.save()

    assert document.seller == factories.DeliveryOverviewSellerFactory.as_dict(
        logistics_user)

    assert document.buyer == factories.DeliveryOverviewSellerFactory.as_company(
        seller)

    assert document.order_id == order.id
    assert len(document.lines) == 2
    assert document.lines[0] == {
        "amount": 3.0,
        "container_name": "Isolierbox",
        "count": 3.0,
        "delivery_company": supplier.company_name,
        "seller_user_id": supplier.id,
        "delivery_date": order_items[0].delivery_date.strftime("%d.%m.%Y"),
        "name": products[0].name,
        "number": products[0].id,
        "organic_control_body": seller.organic_control_body,
        "price": 0.1,
        "producer": "Traidoo",
        "unit": products[0].unit,
        "vat_rate": 19.0,
        "delivery_address": order_items[0].delivery_address_as_str,
        "pickup_address": seller.address_as_str,
    }
    assert document.lines[1] == {
        "amount": 1,
        "container_name": "Isolierbox",
        "count": 2.0,
        "delivery_company": seller.company_name,
        "seller_user_id": seller.id,
        "delivery_date": order_items[1].delivery_date.strftime("%d.%m.%Y"),
        "name": products[1].name,
        "number": products[1].id,
        "organic_control_body": seller.organic_control_body,
        "price": 12,
        "producer": "Traidoo",
        "unit": products[1].unit,
        "vat_rate": products[1].vat,
        "delivery_address": order_items[1].delivery_address_as_str,
        "pickup_address": seller.address_as_str,
    }
Beispiel #7
0
def test_seller_email_added_to_deliveryOverview_seller(order, order_items,
                                                       seller, logistics_user,
                                                       traidoo_region):
    document = factories.DeliveryOverviewSellerFactory(
        order=order, region=traidoo_region, seller=seller).compose()
    assert document.buyer["email"] == seller.email