From e34302b7062aa30b350a1db6b7fd8276690b1256 Mon Sep 17 00:00:00 2001 From: TheCartpenter Date: Sun, 2 Jun 2024 13:14:38 -0400 Subject: [PATCH] Added order recurring validation and notification in addReport --- .../controller/extension/payment/paypal.php | 32 ++++++++++++++----- .../language/en-gb/checkout/recurring.php | 3 ++ upload/catalog/model/checkout/recurring.php | 13 ++++++++ 3 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 upload/catalog/language/en-gb/checkout/recurring.php diff --git a/upload/catalog/controller/extension/payment/paypal.php b/upload/catalog/controller/extension/payment/paypal.php index 2fab5aa40..bba259085 100644 --- a/upload/catalog/controller/extension/payment/paypal.php +++ b/upload/catalog/controller/extension/payment/paypal.php @@ -4303,6 +4303,8 @@ public function order_delete_order_before($route, $data) { * catalog/model/extension/payment/paypal/addOrderRecurringTransaction/before */ public function addReport(&$route, &$args): void { + $this->load->language('checkout/recurring'); + if (isset($args['order_recurring_id'])) { $order_recurring_id = (int)$args['order_recurring_id']; } else { @@ -4312,15 +4314,29 @@ public function addReport(&$route, &$args): void { if ($order_recurring_id) { $this->load->model('checkout/recurring'); - if (isset($this->request->server['HTTP_X_REAL_IP'])) { - $ip = $this->request->server['HTTP_X_REAL_IP']; - } elseif (oc_get_ip()) { - $ip = oc_get_ip(); - } else { - $ip = ''; - } + $recurring_info = $this->model_checkout_recurring->getOrderRecurring($order_recurring_id); - $this->model_checkout_recurring->addReport($order_recurring_id, $this->config->get('config_store_id'), $ip, $this->session->data['payment_address']['country']); + if ($recurring_info) { + $this->load->model('checkout/order'); + + $order_info = $this->model_checkout_order->getOrder($recurring_info['order_id']); + + if ($order_info) { + if (isset($this->request->server['HTTP_X_REAL_IP'])) { + $ip = $this->request->server['HTTP_X_REAL_IP']; + } elseif (oc_get_ip()) { + $ip = oc_get_ip(); + } else { + $ip = ''; + } + + $this->model_checkout_recurring->addReport($order_recurring_id, $this->config->get('config_store_id'), $ip, $this->session->data['payment_address']['country']); + + $comment = $this->language->get('text_new_subscription'); + + $this->model_checkout_order->addHistory($recurring_info['order_id'], $order_info['order_status_id'], $comment, true); + } + } } } diff --git a/upload/catalog/language/en-gb/checkout/recurring.php b/upload/catalog/language/en-gb/checkout/recurring.php new file mode 100644 index 000000000..102ea6ac8 --- /dev/null +++ b/upload/catalog/language/en-gb/checkout/recurring.php @@ -0,0 +1,3 @@ +db->query("INSERT INTO `" . DB_PREFIX . "order_recurring_report` SET `order_recurring_id` = '" . (int)$order_recurring_id . "', `store_id` = '" . (int)$store_id . "', `ip` = '" . $this->db->escape($ip) . "', `country` = '" . $this->db->escape($country) . "', `date_added` = NOW()"); } + + /** + * Get Order Recurring + * + * @param int $order_recurring_id + * + * @return array + */ + public function getOrderRecurring(int $order_recurring_id): array { + $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order_recurring` WHERE `order_recurring_id` = '" . (int)$order_recurring_id . "'"); + + return $query->row; + } }