Example #1
0
    def put(self, sale_id):
        '''Close a sale)'''
        sale = Sale.get_by_id(sale_id)
        if sale is None:
            return {"error": 404, "message": "sale not found"}
        logged_user = User.get_by_id(id=get_jwt_identity())['username']

        if logged_user == sale.created_by or User.isAdmin(
                user_id=get_jwt_identity()):
            sale = Sale.get_by_id(sale_id)
            sale_json = sale.json_dump()
            sale_json["products"] = SaleStock.get_sale_stocks(sale_id=sale.id)
            if not sale_json["products"]:
                return {
                    "Error": 400,
                    "message": "You can't close a sale with no products"
                }, 400
            if sale.status == "submitted":
                return {
                    "Error": 400,
                    "message": "The sale is already closed"
                }, 400
            sale.submit()
            sale = Sale.get_by_id(sale_id)
            sale_json = sale.json_dump()
            sale_json["products"] = SaleStock.get_sale_stocks(sale_id=sale.id)
            return {
                "message": "successfuly closed the sale",
                "data": sale_json
            }, 200
        return {
            "message":
            "Unauthorized,only an admin or sale owner can close a sale"
        }, 403
Example #2
0
    def post(self, sale_id):
        '''Add products to a sale'''
        parser = reqparse.RequestParser()
        parser.add_argument('product',
                            help='The product field cannot be blank',
                            required=True,
                            type=int)
        parser.add_argument('quantity',
                            help='The quantity field cannot be blank',
                            required=True,
                            type=int)
        data = parser.parse_args()
        sale = Sale.get_by_id(sale_id)
        if sale is None:
            return {"error": 404, "message": "sale not found"}, 404
        if sale.status == "submitted":
            return {"message": "Forbidden.Sale is already submitted"}, 403
        sale_json = sale.json_dump()

        product = Product.get_by_id(id=data["product"])
        if product is None:
            return {"error": 404, "message": "product not found"}, 404

        stocks = product.get_available_stocks()

        if len(stocks) == 0:
            return {"error": 404, "message": "product out of stock"}, 404

        sale_product = SaleStock(id=None,
                                 sale_id=sale_id,
                                 stock_id=stocks[0].id,
                                 quantity=data["quantity"])
        sale_product.save()
        sale = Sale.get_by_id(sale_id)
        sale_json = sale.json_dump()
        sale_json["products"] = SoldStock.get_sale_products(sale_id=sale.id)
        return {"message": "success", "data": sale_json}, 201
Example #3
0
 def get(self, sale_id):
     '''Get a sale by id'''
     sale = Sale.get_by_id(sale_id)
     if sale is None:
         return {"error": 404, "message": "sale not found"}, 404
     logged_user = User.get_by_id(id=get_jwt_identity())['username']
     if logged_user == sale.created_by or User.isAdmin(
             user_id=get_jwt_identity()):
         sale_json = sale.json_dump()
         sale_json["products"] = SaleStock.get_sale_stocks(sale_id=sale_id)
         return {"message": "Ok", "data": sale_json}, 200
     return {
         "message":
         "You are not authorised.Only admin or sale owner can get the sale"
     }, 401
Example #4
0
    def delete(self, sale_id):
        '''Delete a sale record'''
        sale = Sale.get_by_id(sale_id)
        if sale is None:
            return {"error": 404, "message": "sale not found"}, 404

        logged_user = User.get_by_id(id=get_jwt_identity())['username']
        if logged_user == sale.created_by or User.isAdmin(
                user_id=get_jwt_identity()):
            if sale.status == "deleted":
                return {
                    "error": 400,
                    "message": "The sale record has already been deleted"
                }, 400
            sale.cancel()
            return {"response": 204, "message": "successfully deleted"}, 204
        return {
            "message":
            "You are not authorised.Only admin or sale owner can delete a sale"
        }, 401