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, }
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
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)
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, }
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
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, }
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