diff --git a/modules/paybox/paybox.php b/modules/paybox/paybox.php index 0820aadc..8889d184 100755 --- a/modules/paybox/paybox.php +++ b/modules/paybox/paybox.php @@ -541,30 +541,35 @@ class Paybox extends PaymentModule { global $cookie; - if (Tools::getValue('noCancelHook')) { - return; - } + if (Tools::getValue('noCancelHook')) { + return false; + } + + if (!in_array($cookie->profile, array(1,7,14,11))) { + return false; + } - if ($params['order']->module != $this->name) { + if (!($order = $params['order']) || !Validate::isLoadedObject($order)) { return false; } - if (!($order = $params['order']) OR !Validate::isLoadedObject($order)) { + if ($order->module != $this->name) { + return false; + } + + if (strtolower($order->payment) != "paybox") { + return false; + } + + if (!$order->hasBeenPaid()) { + mail('karen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + mail('doreen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + mail('contact@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + return false; } - if (in_array($cookie->profile, array(1,7,14,11))) { - if (!$order->hasBeenPaid()) { - // mail('thibault@antadis.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - mail('karen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - mail('doreen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - mail('contact@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - } else { - if (strtolower($order->payment) == "paybox") { - $this->refundShipping($order); - } - } - } + $this->refundShipping($order); } /** @@ -575,36 +580,41 @@ class Paybox extends PaymentModule public function hookcancelProduct($params) { global $cookie; + + if (!Tools::isSubmit('generateCreditSlip')) { + return false; + } + + if (!in_array($cookie->profile, array(1,7,14,11))) { + return false; + } - if ($params['order']->module != $this->name) { - return false; - } - - if (!($order_detail = new OrderDetail((int)($params['id_order_detail']))) - || !Validate::isLoadedObject($order_detail)) { - return false; - } - - $employee = new Employee((int) $cookie->id_employee); - if (!Validate::isLoadedObject($employee)) { - return false; - } - - if (Tools::isSubmit('generateCreditSlip')) { - if (in_array($cookie->profile, array(1,7,14,11))) { - $order = new Order($order_detail->id_order); - if ($order->payment == "Paybox") { - if (!$order->hasBeenPaid()) { - // mail('thibault@antadis.com', 'Erreur remboursement la commande nest pas valide pour etre rembourse', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - mail('karen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - mail('doreen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - mail('contact@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - } else { - $this->refundProduct($params['id_order_detail']); - } - } - } - } + if (!($order = $params['order']) || !Validate::isLoadedObject($order)) { + return false; + } + + if ($order->module != $this->name) { + return false; + } + + if (strtolower($order->payment) != "paybox") { + return false; + } + + if (!$order->hasBeenPaid()) { + mail('karen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + mail('doreen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + mail('contact@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + + return false; + } + + $order_detail = new OrderDetail((int)$params['id_order_detail']); + if (!$order_detail || !Validate::isLoadedObject($order_detail)) { + return false; + } + + $this->refundProduct($params['id_order_detail']); } /** @@ -625,8 +635,9 @@ class Paybox extends PaymentModule } else { $products = $order->getProducts(); $quantity_available = $order_detail->product_quantity; + $cancel_quantity = Tools::getValue('cancelQuantity'); - if ($_POST['cancelQuantity'][(int) $order_detail->id] <= $quantity_available) { + if ($cancel_quantity[(int) $order_detail->id] <= $quantity_available) { // Frais de port $total_shipping = (int) Db::getInstance()->getValue(' @@ -644,7 +655,7 @@ class Paybox extends PaymentModule AND `id_order_detail` != '.(int) $order_detail->id.' '); - $amt = $products[(int) $order_detail->id]['product_price_wt'] * (int) ($_POST['cancelQuantity'][(int) $order_detail->id]); + $amt = $products[(int) $order_detail->id]['product_price_wt'] * (int) ($cancel_quantity[(int) $order_detail->id]); $montant = min($amt, $order->total_paid_real - ((int) $total_shipping * $order->total_shipping) - $total_refunded); // Call Paybox and make the refund - shipping refund is made outside @@ -695,7 +706,6 @@ class Paybox extends PaymentModule $refund = $this->sendRefundPaybox($montant, 978, $transaction['num_transaction'], $order->id_cart, $transaction['num_appel']); if (!$refund) { - // mail('thibault@antadis.com', 'Erreur dans le remboursement des shippings', 'Erreur remboursement échoué pour la commande ' . $order->id); mail('karen@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order->id); mail('doreen@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order->id); mail('contact@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order->id); diff --git a/modules/paypal/paypal.php b/modules/paypal/paypal.php index 65d8411b..5a7c093e 100755 --- a/modules/paypal/paypal.php +++ b/modules/paypal/paypal.php @@ -690,69 +690,109 @@ class PayPal extends PaymentModule return; } + if (!in_array($cookie->profile, array(1,7,14,11))) { + return false; + } + if (!$this->isPayPalAPIAvailable()) { return false; } - elseif ($params['order']->module != $this->name - || !($order = $params['order']) || !Validate::isLoadedObject($order)) { - return false; - } - elseif (!$order->hasBeenPaid()) { + + if (!($order = $params['order']) || !Validate::isLoadedObject($order)) { return false; } + + if ($order->module != $this->name) { + return false; + } + + if (strtolower($order->payment) != "paypal") { + return false; + } + + if (!$order->hasBeenPaid()) { + mail('karen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + mail('doreen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + mail('contact@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); + return false; + } + $paypal_order = PayPalOrder::getOrderById((int)$order->id); if (!$paypal_order) { return false; } - - if (in_array($cookie->profile, array(1,7,14,11))) { - if (!$order->hasBeenPaid()) { - mail('karen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - mail('doreen@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - mail('contact@bebeboutik.com', 'Erreur remboursement', 'Erreur de remboursement sur la commande ' . $order_detail->id_order . ' la commande n\'a pas été payée.'); - } else { - if (strtolower($order->payment) == "paypal") { - - // Refund shipping - //$refund = $this->_makeRefund($paypal_order['id_transaction'], (int)$order->id, $amount); - } - } - } - + + // Get product amount to refund + $amount = $order->total_shipping; + + if ($amount > 0){ + $refund = $this->_makeRefund($paypal_order['id_transaction'], (int)$order->id, $amount); + if (!$refund) { + mail('karen@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order_detail->id_order); + mail('doreen@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order_detail->id_order); + mail('contact@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order_detail->id_order); + } else { + $this->refundSave($order->id, 0, $amount, $cookie->id_employee); + } + } } public function hookCancelProduct($params) { - if (!$this->isPayPalAPIAvailable()) { + global $cookie; + + if (!in_array($cookie->profile, array(1,7,14,11))) { + return false; + } + + if (!$this->isPayPalAPIAvailable()) { + return false; + } + + if (!($order = $params['order']) || !Validate::isLoadedObject($order)) { + return false; + } + + if ($order->module != $this->name) { + return false; + } + + if (strtolower($order->payment) != "paypal") { + return false; + } + + if (!$order->hasBeenPaid()) { return false; } - elseif ($params['order']->module != $this->name - || !($order = $params['order']) || !Validate::isLoadedObject($order)) { - return false; - } - elseif (!$order->hasBeenPaid()) { - return false; - } - - $order_detail = new OrderDetail((int)$params['id_order_detail']); - if (!$order_detail || !Validate::isLoadedObject($order_detail)) - return false; $paypal_order = PayPalOrder::getOrderById((int)$order->id); if (!$paypal_order) { return false; } + + $order_detail = new OrderDetail((int)$params['id_order_detail']); + if (!$order_detail || !Validate::isLoadedObject($order_detail)) { + return false; + } $products = $order->getProducts(); $cancel_quantity = Tools::getValue('cancelQuantity'); $message = $this->l('Cancel products result:').'
'; - // Get product amount to refund (HT) + // Get product amount to refund $amount = (float)($products[(int)$order_detail->id]['product_price_wt'] * (int)$cancel_quantity[(int)$order_detail->id]); if ($amount > 0){ $refund = $this->_makeRefund($paypal_order['id_transaction'], (int)$order->id, $amount); + if (!$refund) { + mail('karen@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order_detail->id_order); + mail('doreen@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order_detail->id_order); + mail('contact@bebeboutik.com', 'Erreur dans le remboursement', 'Erreur remboursement échoué pour la commande ' . $order_detail->id_order); + } else { + $this->refundSave($order_detail->id_order, $order_detail->id, $amount, $cookie->id_employee); + } + } else { $refund = array(); $message .= $this->l('Transaction error because of the amount of the cancel product!').'
'; @@ -762,6 +802,28 @@ class PayPal extends PaymentModule $this->_addNewPrivateMessage((int)$order->id, $message); } + /** + * Save refund transaction in BDD when its OK + * @param int $id_order + * @param int $id_order_detail + * @param int $montant + * @param int $id_employee + */ + protected function refundSave($id_order, $id_order_detail = 0, $montant, $id_employee) + { + Db::getInstance()->execute(' + INSERT INTO `'._DB_PREFIX_.'refund_transaction` + (`id_order`, `id_order_detail`, `amount`, `date`, `id_employee`) + VALUES ( + '. (int)$id_order .', + '. (int)$id_order_detail .', + '. $montant * 100 .', + "'. date('Y-m-d H:i:s') .'", + '. (int)$id_employee .' + )' + ); + } + public function hookBackOfficeHeader() { if ((strcmp(Tools::getValue('configure'), $this->name) === 0) ||