Я столкнулся с проблемой, в которой я пытаюсь дать пользователям возможность получать и применять скидки на продукты, в которых они активны.
Допустим, я публикую новый продукт, к которому прикреплен discount_id
Тогда любой пользователь, который знает код для конкретного discount_id, должен получить сумму скидки ($), вычтенную из первоначальной цены товара, и она должна быть обновлена в их корзине.
Это моя функция, которую я пытаюсь создать, но я слишком запутался:
public function discountItemCodeVerification($id){
// Verify discount exists
$discount = $this->input->post('discount_code');
$result = $this->PublicCart_model->verifyDiscountCode($discount);
if(!$result){
// Set message
$this->session->set_flashdata('error', 'The discount has expired or is invalid');
// Redirect
redirect('cart/userCart');
} else {
// Get Last ID Data
$postID = $id;
// Get Relationship Data
$discountID = $result->discount_id;
$discountType = $this->PublicCart_model->getDiscountID($discountID);
// Verify Item has an Individual Discount Attached to Itself
$individualDiscount = $this->PublicCart_model->verifyItemDiscountCode($postID, $discountID);
if($discountType->type == 'percent' || !empty($individualDiscount)){
// Get data
$data['item'] = $this->PublicStore_model->readPostID($id);
// HERE IS WHERE I NEED HELP
$postData = array(
// 'price' => round($data->price * ((100 - $result->amout) / 100 ), 2),
// 'price' => $data[item]->price * (( 100 - $result->amout) / 100),
'price' => $data['item']->price - ($data['item']->price * ($result->amount/100)),
);
// Update Cart Data
$this->PublicCart_model->updateCartItem($postID, $postData);
// Set message
$this->session->set_flashdata('success', 'A percentage type discount has been applied to your final price');
// Redirect
redirect('cart/userCart');
} elseif($discountType->type == 'float' || !empty($individualDiscount)){
// Set message
$this->session->set_flashdata('success', 'A float type discount has been applied to your final price');
// Redirect
redirect('cart/userCheckout');
}
}
}
и вот методы в моей модели, которые я пытаюсь использовать:
/*
*
* VERIFY CART DISCOUNTS AND GET ITS RELATIONSHIP
*
*/
public function verifyDiscountCode($discount){
$query = $this->db->get_where($this->discounts, array(
'code' => $discount,
));
return $query->row();
}
public function getDiscountID($discountID){
$query = $this->db->get_where($this->relationship, array(
'discount_id' => $discountID,
'status' => $this->published,
));
return $query->row();
}
/*
*
* VERIFY INDIVIDUAL CART ITEM DISCOUNTS
*
*/
public function verifyItemDiscountCode($postID, $discountID){
$query = $this->db->get_where($this->relationship, array(
'post_id' => $postID,
'discount_id' => $discountID,
'status' => $this->published,
));
return $query->row();
}
public function updateCartItem($postID, $postData){
$this->db->select('*');
$this->db->where('friend_id', $this->session->userdata('user_id'));
$this->db->where('post_id', $postID);
$this->db->where('type', $this->cartType);
$this->db->update($this->relationship, $postData);
}
На данный момент поведение, которое я получаю, это обновление до «0» в цене товара в корзине пользователя, даже если скидка (процент) не равна 100%.
Любая помощь будет оченьвысоко ценится, спасибо.