Beispiel #1
0
def create_invoice(invoice_body):
    global AUTH_HEADER
    user_url = get_service_url('user-ms')
    payments_url = get_service_url('payments')
    inventory_url = get_service_url('inventory')
    statistics_url = get_service_url('statistics')
    discounts_url = get_service_url('discounts')

    update_jwt_token()
    # Get User Details from User microservice
    user = requests.get(url=f"{user_url}/details/{invoice_body['user_id']}",
                        headers=AUTH_HEADER)

    # Get Transaction details from Payments microservice
    transaction = requests.get(
        url=f"{payments_url}/transactions/{invoice_body['transaction_id']}",
        headers=AUTH_HEADER)
    # Get Items from Inventory microservice
    items = []
    for item in invoice_body['item_list']:

        requests.post(url=f"{statistics_url}/invoice/",
                      headers=AUTH_HEADER,
                      json={
                          'user_id': invoice_body['user_id'],
                          'type_of_product': item.type,
                          'quantity': item.quantity
                      })
        it = Item()
        if item.type == 'Rent':
            new_item = requests.get(
                url=f"{inventory_url}/get/product_rent/{item.id}",
                headers=AUTH_HEADER)
            it.id = item.id
            it.name = new_item.name
            it.type = item.type
            it.description = new_item.description
            it.duration = item.quantity
            items.append(it)
        elif item.type == 'Buy':
            new_item = requests.get(
                url=f"{inventory_url}/get/product_rent/{item.id}",
                headers=AUTH_HEADER)

            it.id = item.id
            it.name = new_item.name
            it.type = item.type
            it.description = new_item.description
            it.quantity = item.quantity
            items.append(it)
        elif item.type == 'Coupon':
            new_item = requests.get(
                url=f"{inventory_url}/get/product_rent/{item.id}",
                headers=AUTH_HEADER)
            requests.post(url=f"{discounts_url}/coupon/create",
                          headers=AUTH_HEADER,
                          json={
                              'id': item.id,
                              'type': new_item.type,
                              'userId': invoice_body['user_id']
                          })

    new_invoice = Invoice(name=user.name,
                          surname=user.surname,
                          username=user.username,
                          country=user.country,
                          city=user.city,
                          postal_code=user.postal_code,
                          address=user.address,
                          price=transaction.amount,
                          date=date.today(),
                          items=items)

    # new_invoice = Invoice(id=1, name='Petko', surname='Petkovski',
    #                       user_id=1, country='Macedonia',
    #                       city='Debar', postal_code=1250, address='Ulica br.11/11',
    #                       price=69.99, date=date.today())
    db.session.add(new_invoice)
    db.session.commit()