def invoices(id=None):
    if request.method == 'GET':
        if id is not None:
            invoice = Invoice.query.get(id)
            if invoice:
                return jsonify(invoice.serialize()), 200
            return jsonify({"msg": "This invoice not found!"}), 404
        else:
            invoices = Invoice.query.all()
            invoices = list(map(lambda invoice: invoice.serialize(), invoices))
            return jsonify(invoices), 200

    elif request.method == 'PUT':
        invoice = Invoice.query.get(id)
        invoice.email_paypal = request.json.get("email_paypal", "")
        invoice.payment = request.json.get("payment", "")
        invoice.date = request.json.get("date", "")
        invoice.validity = request.json.get("validity", "")
        invoice.update()
        return jsonify('Actualizado correctamente'), 200

    elif request.method == 'DELETE':
        invoice = Invoice.query.get(id)
        invoice.delete()
        return jsonify('Borrado'), 200

    elif request.method == "POST":
        invoice = Invoice()
        invoice.email_paypal = request.json.get("email_paypal", "")
        invoice.payment = request.json.get("payment", "")
        invoice.date = request.json.get("date", "")
        invoice.validity = request.json.get("validity", "")
        invoice.premium = request.json.get("premium", "")
        invoice.save()
        return jsonify(invoice.serialize()), 201