def update(self, payload): sku_id = payload["id"] product_name = payload["product_name"] if not orm.get_sku_by_id(sku_id): raise ex.SkuNotFound() if orm.get_sku_by_name(product_name): raise ex.SkuProductExists() orm.update_sku(sku_id, product_name) return
def delete(self, payload): sku_id = payload["id"] if not orm.get_sku_by_id(sku_id): raise ex.SkuNotFound() check_sku_exists = orm.get_storage_by_skuid(sku_id) if check_sku_exists: raise ex.SkuIDExistsInStorage() orm.delete_sku(sku_id) return
def post(self, payload): sku_id = payload["id"] product_name = payload["product_name"] sku_obj = orm.get_sku_by_id(sku_id) if sku_obj: raise ex.SkuDuplicateEntry() if orm.get_sku_by_name(product_name): raise ex.SkuProductExists() orm.create_sku(sku_id, product_name) return
def post(self, lines): order_line_list = list() for ele in lines: if not orm.get_sku_by_id(ele["sku"]): raise ex.SkuNotFound() storage_list = orm.get_storage_by_skuid(ele["sku"], all=True) total_available_stock = utility.calc_available_stock(storage_list) if ele["quantity"] > total_available_stock: raise ex.OutOfStockRequest() orm.create_orderline(self.order_id, ele) order_line_list.extend(utility.compute_picks(storage_list, ele)) return order_line_list
def post(self, payload): for ele in payload: sku_id = ele["sku"] id = ele["id"] stock = ele["stock"] check_sku = orm.get_sku_by_id(id=sku_id) if not check_sku: raise ex.SkuNotRegistered() check_sku_storage = orm.get_storage_by_sid_skuid(id, sku_id) if check_sku_storage: raise ex.SkuStorageExists() orm.create_storage(stock, id, sku_id) return
def update(self, payload): sku_id = payload["sku"] id = payload["id"] stock = payload["stock"] if not orm.get_sku_by_id(sku_id): raise ex.SkuNotFound() if not orm.get_storage_by_id(id): raise ex.StorageNotFound() check_sku_storage = orm.get_storage_by_sid_skuid(id, sku_id) if not check_sku_storage: raise ex.SkuStorageNotExists() if check_sku_storage.stock == stock: raise ex.SkuQuantityIsSame() orm.update_storage(stock, id, sku_id) return
def put(self, lines): order_line_list = list() for ele in lines: if not orm.get_sku_by_id(ele["sku"]): raise ex.SkuNotFound() for ele in lines: order_line_obj = orm.get_order_by_sku_id(ele["sku"], self.order_id) old_quantity = order_line_obj.quantity # 30 new_quantity = ele["quantity"] # 20 diff_stock_dict = {"add_storage": None, "dec_storage": None} if old_quantity <= new_quantity: diff_stock_dict[ "dec_storage"] = new_quantity - old_quantity # 10 else: diff_stock_dict["add_storage"] = old_quantity - new_quantity storage_list = orm.get_storage_by_skuid(ele["sku"], all=True) total_available_stock = utility.calc_available_stock(storage_list) if diff_stock_dict["dec_storage"] > total_available_stock: raise ex.OutOfStockRequest() order_line_list.extend( utility.update_orderline(self.order_id, ele, diff_stock_dict)) return order_line_list