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) ||