Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
    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