From 9212492b757c87b4a5a45465b605c934d7c8020c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CVeLiTi=E2=80=9D?= <“info@veliti.nl”> Date: Fri, 6 Feb 2026 11:59:13 +0100 Subject: [PATCH] Refactor code structure for improved readability and maintainability --- .gitignore | 1 + admin/language.php | 2 +- api_check_payment_status.php | 70 + cache/.htaccess | 1 + cache/catalog.json | 1376 ++++ cache/categories.json | 496 ++ cart.php | 2 +- checkout.php | 949 ++- custom/assets/favicon/apple-touch-icon.png | Bin 0 -> 14984 bytes custom/assets/favicon/favicon-96x96.png | Bin 0 -> 9357 bytes custom/assets/favicon/favicon.ico | Bin 0 -> 15086 bytes custom/assets/favicon/favicon.svg | 3 + custom/assets/favicon/site.webmanifest | 21 + .../favicon/web-app-manifest-192x192.png | Bin 0 -> 26095 bytes .../favicon/web-app-manifest-512x512.png | Bin 0 -> 106576 bytes custom/assets/wero.svg | 71 + custom/css/main.css | 1964 +++++- custom/customfunctions.php | 23 +- custom/pages/returns.php | 191 + custom/translations/translations_DE.php | 39 + custom/translations/translations_ES.php | 39 + custom/translations/translations_FR.php | 39 + custom/translations/translations_IT.php | 39 + custom/translations/translations_NL.php | 39 + custom/translations/translations_US.php | 39 + functions.php | 183 +- home.php | 4 +- index.php | 112 +- log/.DS_Store | Bin 0 -> 6148 bytes log/checkout_old_working.php | 672 ++ log/log_02.txt | 5660 ----------------- log/log_03.txt | 1113 ---- log/log_04.txt | 2699 -------- log/log_05.txt | 247 - log/logging.php | 608 ++ log/main.css | 5463 ++++++++++++++++ log/translations_DE.php | 209 - log/translations_ES.php | 209 - log/translations_FR.php | 209 - log/translations_IT.php | 2 - log/translations_NL.php | 219 - log/translations_US.php | 220 - placeorder.php | 217 +- product.php | 486 +- products.php | 194 +- script.js | 263 +- webhook.php | 4 +- webhook_paypal.php | 4 +- 48 files changed, 13072 insertions(+), 11329 deletions(-) create mode 100644 api_check_payment_status.php create mode 100644 cache/.htaccess create mode 100644 cache/catalog.json create mode 100644 cache/categories.json create mode 100644 custom/assets/favicon/apple-touch-icon.png create mode 100644 custom/assets/favicon/favicon-96x96.png create mode 100644 custom/assets/favicon/favicon.ico create mode 100644 custom/assets/favicon/favicon.svg create mode 100644 custom/assets/favicon/site.webmanifest create mode 100644 custom/assets/favicon/web-app-manifest-192x192.png create mode 100644 custom/assets/favicon/web-app-manifest-512x512.png create mode 100644 custom/assets/wero.svg create mode 100644 log/.DS_Store create mode 100644 log/checkout_old_working.php delete mode 100644 log/log_02.txt delete mode 100644 log/log_03.txt delete mode 100644 log/log_04.txt delete mode 100644 log/log_05.txt create mode 100644 log/logging.php create mode 100644 log/main.css delete mode 100644 log/translations_DE.php delete mode 100644 log/translations_ES.php delete mode 100644 log/translations_FR.php delete mode 100644 log/translations_IT.php delete mode 100644 log/translations_NL.php delete mode 100644 log/translations_US.php diff --git a/.gitignore b/.gitignore index 5a888e9..c63ae3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ productold.php test.php find_undeclared_vars.php.php +GTM_DataLayer_Triggers.md diff --git a/admin/language.php b/admin/language.php index 13e0140..98cffaa 100644 --- a/admin/language.php +++ b/admin/language.php @@ -4,7 +4,7 @@ defined('admin') or exit; //------------------------------------------ // Languages supported //------------------------------------------ -$supportedLanguages = ['US', 'NL', 'DE', 'ES','FR', 'IT']; +$supportedLanguages = ['US', 'NL', 'DE', 'ES','FR']; if(isset($_POST['generatefile'])){ diff --git a/api_check_payment_status.php b/api_check_payment_status.php new file mode 100644 index 0000000..4942b77 --- /dev/null +++ b/api_check_payment_status.php @@ -0,0 +1,70 @@ += ($_SESSION['api_token_expires'] - $token_refresh_buffer)) { + $data = json_encode(array("clientID" => clientID, "clientsecret" => clientsecret), JSON_UNESCAPED_UNICODE); + $responses = ioAPIv2('/v2/authorization', $data,''); + if (!empty($responses)){$responses = json_decode($responses,true);}else{$responses = '400';} + + if (isset($responses['token']) && isset($responses['token_valid'])) { + $_SESSION['api_token'] = $responses['token']; + $_SESSION['api_token_expires'] = strtotime($responses['token_valid']); + $clientsecret = $responses['token']; + } else { + $clientsecret = $responses['token'] ?? ''; + } +} else { + $clientsecret = $_SESSION['api_token']; +} + +// Set JSON header +header('Content-Type: application/json'); + +// Get order ID from request +$order_id = $_GET['order_id'] ?? null; + +if (!$order_id) { + echo json_encode(['error' => 'No order ID provided']); + exit; +} + +// Check transaction status +$transaction_data = ioAPIv2('/v2/transactions/txn_id='.$order_id,'',$clientsecret); +$transaction = json_decode($transaction_data, true); + +if ($transaction && isset($transaction[0])) { + $payment_status_code = $transaction[0]['payment_status'] ?? 0; + + // Map payment status codes: 1 = Paid, 101 = Pending, 102 = Failed, 103 = Expired, 999 = Cancelled + if ($payment_status_code == 1) { + $payment_status = 'success'; + } elseif ($payment_status_code == 101) { + $payment_status = 'pending'; + } elseif (in_array($payment_status_code, [102, 103, 999])) { + $payment_status = 'failed'; + } else { + $payment_status = 'processing'; + } + + echo json_encode([ + 'status' => $payment_status, + 'payment_status_code' => $payment_status_code + ]); +} else { + echo json_encode([ + 'status' => 'processing', + 'payment_status_code' => 101 + ]); +} +?> diff --git a/cache/.htaccess b/cache/.htaccess new file mode 100644 index 0000000..3a42882 --- /dev/null +++ b/cache/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/cache/catalog.json b/cache/catalog.json new file mode 100644 index 0000000..3699ca7 --- /dev/null +++ b/cache/catalog.json @@ -0,0 +1,1376 @@ +[ + { + "rowID": 57, + "productcode": "MWTH1NB", + "productname": "Thomas-I Navy Blue", + "productdescription": "MWTH1NB_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasI_navy_blue", + "product_media": 54, + "full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Blue-Steel-Date normaal.png", + "price": "749.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "71", + "config_setting": "GRP000006", + "main_option_for_display": "ATTR000044", + "configurations": [ + { + "rowID": 11, + "productrowid": 57, + "assignment": "GRP000006", + "measurement": "ATTR000044", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 40, + "group_id": 6, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Navy Blue", + "attribute_id": "ATTR000040", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 50, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "1-Morval-Watches2024-V1-Blue-Black-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Blue-Black-Date normaal.png" + }, + { + "rowID": 41, + "group_id": 6, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Navy Blue", + "attribute_id": "ATTR000041", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 53, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "1-Morval-Watches2024-V1-Blue-DarkBlue-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Blue-DarkBlue-Date normaal.png" + }, + { + "rowID": 42, + "group_id": 6, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Navy Blue", + "attribute_id": "ATTR000042", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 51, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "1-Morval-Watches2024-V1-Blue-Brown-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Blue-Brown-Date normaal.png" + }, + { + "rowID": 43, + "group_id": 6, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Navy Blue", + "attribute_id": "ATTR000043", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 52, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "1-Morval-Watches2024-V1-Blue-Calf-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Blue-Calf-Date normaal.png" + }, + { + "rowID": 44, + "group_id": 6, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Navy Blue", + "attribute_id": "ATTR000044", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 54, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "1-Morval-Watches2024-V1-Blue-Steel-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Blue-Steel-Date normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 60, + "productcode": "MWTH2NB", + "productname": "Thomas-II Navy Blue", + "productdescription": "MWTH2NB_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasII_navy_blue", + "product_media": 77, + "full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Blue-Steel normaal.png", + "price": "899.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "73", + "config_setting": "GRP000007", + "main_option_for_display": "ATTR000049", + "configurations": [ + { + "rowID": 12, + "productrowid": 60, + "assignment": "GRP000007", + "measurement": "ATTR000049", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 45, + "group_id": 7, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Navy Blue", + "attribute_id": "ATTR000045", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 69, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "Morval-Watches2024-V1-Blue-Black normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Blue-Black normaal.png" + }, + { + "rowID": 46, + "group_id": 7, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Navy Blue", + "attribute_id": "ATTR000046", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 75, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "Morval-Watches2024-V1-Blue-DarkBlue normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Blue-DarkBlue normaal.png" + }, + { + "rowID": 47, + "group_id": 7, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Navy Blue", + "attribute_id": "ATTR000047", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 71, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-Blue-Brown normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Blue-Brown normaal.png" + }, + { + "rowID": 48, + "group_id": 7, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Navy Blue", + "attribute_id": "ATTR000048", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 73, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-Blue-Calf normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Blue-Calf normaal.png" + }, + { + "rowID": 49, + "group_id": 7, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Navy Blue", + "attribute_id": "ATTR000049", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 77, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-V1-Blue-Steel normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Blue-Steel normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 61, + "productcode": "MWTH2IB", + "productname": "Thomas-II Ice Blue", + "productdescription": "MWTH2IB_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasII_ice_blue", + "product_media": 62, + "full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-LightBlue-DarkBlue normaal.png", + "price": "899.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "74", + "config_setting": "GRP000008", + "main_option_for_display": "ATTR000051", + "configurations": [ + { + "rowID": 13, + "productrowid": 61, + "assignment": "GRP000008", + "measurement": "ATTR000051", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 50, + "group_id": 8, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Ice Blue", + "attribute_id": "ATTR000050", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 104, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "Morval-Watches2024-V1-LightBlue-Black normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-LightBlue-Black normaal.png" + }, + { + "rowID": 51, + "group_id": 8, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Ice Blue", + "attribute_id": "ATTR000051", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 62, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "1-Morval-Watches2024-V1-LightBlue-DarkBlue normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-LightBlue-DarkBlue normaal.png" + }, + { + "rowID": 52, + "group_id": 8, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Ice Blue", + "attribute_id": "ATTR000052", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 129, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "Morval-Watches2024-_0017_Blue-Brown normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0017_Blue-Brown normaal.png" + }, + { + "rowID": 53, + "group_id": 8, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Ice Blue", + "attribute_id": "ATTR000053", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 128, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "Morval-Watches2024-_0016_Blue-Calf normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0016_Blue-Calf normaal.png" + }, + { + "rowID": 54, + "group_id": 8, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Ice Blue", + "attribute_id": "ATTR000054", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 126, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-_0015_Blue-Steel normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0015_Blue-Steel normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 62, + "productcode": "MWTH2RG", + "productname": "Thomas-II Racing Green", + "productdescription": "MWTH2RG_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasII_racing_green", + "product_media": 124, + "full_path": "\/assets\/images\/media\/Morval-Watches2024-_0022_Green-Brown normaal.png", + "price": "899.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "75", + "config_setting": "GRP000009", + "main_option_for_display": "ATTR000057", + "configurations": [ + { + "rowID": 14, + "productrowid": 62, + "assignment": "GRP000009", + "measurement": "ATTR000057", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 55, + "group_id": 9, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Racing Green", + "attribute_id": "ATTR000055", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 89, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "Morval-Watches2024-V1-Green-Black normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Green-Black normaal.png" + }, + { + "rowID": 56, + "group_id": 9, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Racing Green", + "attribute_id": "ATTR000056", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 93, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "Morval-Watches2024-V1-Green-DarkBlue normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Green-DarkBlue normaal.png" + }, + { + "rowID": 57, + "group_id": 9, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Racing Green", + "attribute_id": "ATTR000057", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 124, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "Morval-Watches2024-_0022_Green-Brown normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0022_Green-Brown normaal.png" + }, + { + "rowID": 58, + "group_id": 9, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Racing Green", + "attribute_id": "ATTR000058", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 131, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "Morval-Watches2024-_0021_Green-Calf normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0021_Green-Calf normaal.png" + }, + { + "rowID": 59, + "group_id": 9, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Racing Green", + "attribute_id": "ATTR000059", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 130, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-_0020_Green-Steel normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0020_Green-Steel normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 63, + "productcode": "MWTH2DG", + "productname": "Thomas-II Dolphin Gray", + "productdescription": "MWTH2DG_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasII_dolphin_gray", + "product_media": 125, + "full_path": "\/assets\/images\/media\/Morval-Watches2024-_0011_Grey-Calf normaal.png", + "price": "899.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "76", + "config_setting": "GRP000010", + "main_option_for_display": "ATTR000063", + "configurations": [ + { + "rowID": 15, + "productrowid": 63, + "assignment": "GRP000010", + "measurement": "ATTR000063", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 60, + "group_id": 10, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Dolphin Gray", + "attribute_id": "ATTR000060", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 96, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "Morval-Watches2024-V1-Grey-Black normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Grey-Black normaal.png" + }, + { + "rowID": 61, + "group_id": 10, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Dolphin Gray", + "attribute_id": "ATTR000061", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 100, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "Morval-Watches2024-V1-Grey-DarkBlue normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Grey-DarkBlue normaal.png" + }, + { + "rowID": 62, + "group_id": 10, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Dolphin Gray", + "attribute_id": "ATTR000062", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 127, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "Morval-Watches2024-_0012_Grey-Brown normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0012_Grey-Brown normaal.png" + }, + { + "rowID": 63, + "group_id": 10, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Dolphin Gray", + "attribute_id": "ATTR000063", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 125, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "Morval-Watches2024-_0011_Grey-Calf normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0011_Grey-Calf normaal.png" + }, + { + "rowID": 64, + "group_id": 10, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Dolphin Gray", + "attribute_id": "ATTR000064", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 132, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-_0010_Grey-Steel normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-_0010_Grey-Steel normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 64, + "productcode": "MWTH2G", + "productname": "Thomas-II Graphite", + "productdescription": "MWTH2G_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasII_graphite", + "product_media": 56, + "full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-DarkGrey-Black-Soft normaal.png", + "price": "899.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "77", + "config_setting": "GRP000011", + "main_option_for_display": "ATTR000065", + "configurations": [ + { + "rowID": 16, + "productrowid": 64, + "assignment": "GRP000011", + "measurement": "ATTR000065", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 65, + "group_id": 11, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Graphite", + "attribute_id": "ATTR000065", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 56, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "1-Morval-Watches2024-V1-DarkGrey-Black-Soft normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-DarkGrey-Black-Soft normaal.png" + }, + { + "rowID": 66, + "group_id": 11, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Graphite", + "attribute_id": "ATTR000066", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 59, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "1-Morval-Watches2024-V1-Darkgrey-DarkBlue normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Darkgrey-DarkBlue normaal.png" + }, + { + "rowID": 67, + "group_id": 11, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Graphite", + "attribute_id": "ATTR000067", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 81, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-DarkGrey-Brown normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-DarkGrey-Brown normaal.png" + }, + { + "rowID": 68, + "group_id": 11, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Graphite", + "attribute_id": "ATTR000068", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 83, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-DarkGrey-Calf normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-DarkGrey-Calf normaal.png" + }, + { + "rowID": 69, + "group_id": 11, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-II Graphite", + "attribute_id": "ATTR000069", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 87, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-V1-DarkGrey-Steel normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-DarkGrey-Steel normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 65, + "productcode": "MWABRB1", + "productname": "Bracelet Handmade Italian Calf leather - Black", + "productdescription": "MWABRB1_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "bracelet_black", + "product_media": 111, + "full_path": "\/assets\/images\/media\/Band_0001_Layer-2-copy normaal.png", + "price": "45.00", + "rrp": "0.00", + "price_modifier": 1 + }, + { + "rowID": 66, + "productcode": "MWABRDB1", + "productname": "Bracelet Handmade Italian Calf leather - dark brown", + "productdescription": "MWABRDB1_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "bracelet_dark_brown", + "product_media": 112, + "full_path": "\/assets\/images\/media\/Band_0002_Layer-3-copy normaal.png", + "price": "45.00", + "rrp": "0.00", + "price_modifier": 1 + }, + { + "rowID": 67, + "productcode": "MWABRLB1", + "productname": "Bracelet Handmade Italian Calf leather - light brown", + "productdescription": "MWABRLB1_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "bracelet_light_brown", + "product_media": 113, + "full_path": "\/assets\/images\/media\/Band_0003_Layer-4-copy normaal.png", + "price": "45.00", + "rrp": "0.00", + "price_modifier": 1 + }, + { + "rowID": 68, + "productcode": "MWABRBL1", + "productname": "Bracelet Handmade Italian Calf leather - blue", + "productdescription": "MWABRBL1_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "bracelet_blue", + "product_media": 110, + "full_path": "\/assets\/images\/media\/Band_0000_Layer-1-copy normaal.png", + "price": "45.00", + "rrp": "0.00", + "price_modifier": 1 + }, + { + "rowID": 69, + "productcode": "MWTH1IB", + "productname": "Thomas-I Ice Blue", + "productdescription": "MWTH1IB_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasI_ice_blue", + "product_media": 109, + "full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-LightBlue-DarkBlue-Date normaal.png", + "price": "749.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "78", + "config_setting": "GRP000016", + "main_option_for_display": "ATTR000091", + "configurations": [ + { + "rowID": 17, + "productrowid": 69, + "assignment": "GRP000016", + "measurement": "ATTR000091", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 90, + "group_id": 16, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Ice Blue", + "attribute_id": "ATTR000090", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 105, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "Morval-Watches2024-V1-Lightblue-Black-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Lightblue-Black-Date normaal.png" + }, + { + "rowID": 91, + "group_id": 16, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Ice Blue", + "attribute_id": "ATTR000091", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 109, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "Morval-Watches2024-V1-LightBlue-DarkBlue-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-LightBlue-DarkBlue-Date normaal.png" + }, + { + "rowID": 92, + "group_id": 16, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Ice Blue", + "attribute_id": "ATTR000092", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 106, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-Lightblue-Brown-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Lightblue-Brown-Date normaal.png" + }, + { + "rowID": 93, + "group_id": 16, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Ice Blue", + "attribute_id": "ATTR000093", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 107, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-LightBlue-Calf-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-LightBlue-Calf-Date normaal.png" + }, + { + "rowID": 94, + "group_id": 16, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Ice Blue", + "attribute_id": "ATTR000094", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 103, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-V1-LighBlue-Steel-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-LighBlue-Steel-Date normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 70, + "productcode": "MWTH1RG", + "productname": "Thomas-I Racing Green", + "productdescription": "MWTH1RG_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasI_racing_green", + "product_media": 91, + "full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Green-Brown-Date normaal.png", + "price": "749.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "79", + "config_setting": "GRP000017", + "main_option_for_display": "ATTR000097", + "configurations": [ + { + "rowID": 18, + "productrowid": 70, + "assignment": "GRP000017", + "measurement": "ATTR000097", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 95, + "group_id": 17, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Racing Green", + "attribute_id": "ATTR000095", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 90, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "Morval-Watches2024-V1-Green-Black-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Green-Black-Date normaal.png" + }, + { + "rowID": 96, + "group_id": 17, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Racing Green", + "attribute_id": "ATTR000096", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 94, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "Morval-Watches2024-V1-Green-DarkBlue-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Green-DarkBlue-Date normaal.png" + }, + { + "rowID": 97, + "group_id": 17, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Racing Green", + "attribute_id": "ATTR000097", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 91, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-Green-Brown-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Green-Brown-Date normaal.png" + }, + { + "rowID": 98, + "group_id": 17, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Racing Green", + "attribute_id": "ATTR000098", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 92, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-Green-Calf-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Green-Calf-Date normaal.png" + }, + { + "rowID": 99, + "group_id": 17, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Racing Green", + "attribute_id": "ATTR000099", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 95, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-V1-Green-Steel-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Green-Steel-Date normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 71, + "productcode": "MWTH1DG", + "productname": "Thomas-I Dolphin Gray", + "productdescription": "MWTH1DG_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasI_dolphin_gray", + "product_media": 99, + "full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Grey-Calf-Date normaal.png", + "price": "749.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "80", + "config_setting": "GRP000018", + "main_option_for_display": "ATTR000103", + "configurations": [ + { + "rowID": 19, + "productrowid": 71, + "assignment": "GRP000018", + "measurement": "ATTR000103", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 100, + "group_id": 18, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Dolphin Gray", + "attribute_id": "ATTR000100", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 97, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "Morval-Watches2024-V1-Grey-Black-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Grey-Black-Date normaal.png" + }, + { + "rowID": 101, + "group_id": 18, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Dolphin Gray", + "attribute_id": "ATTR000101", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 101, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "Morval-Watches2024-V1-Grey-DarkBlue-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Grey-DarkBlue-Date normaal.png" + }, + { + "rowID": 102, + "group_id": 18, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Dolphin Gray", + "attribute_id": "ATTR000102", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 98, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-Grey-Brown-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Grey-Brown-Date normaal.png" + }, + { + "rowID": 103, + "group_id": 18, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Dolphin Gray", + "attribute_id": "ATTR000103", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 99, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "Morval-Watches2024-V1-Grey-Calf-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Grey-Calf-Date normaal.png" + }, + { + "rowID": 104, + "group_id": 18, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Dolphin Gray", + "attribute_id": "ATTR000104", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 102, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-V1-Grey-Steel-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Grey-Steel-Date normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + }, + { + "rowID": 72, + "productcode": "MWTH1G", + "productname": "Thomas-I Graphite", + "productdescription": "MWTH1G_description", + "parttype": "1", + "quantity": 1, + "product_category": 3, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "url_slug": "thomasI_graphite", + "product_media": 79, + "full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Darkgrey-Black-Date normaal.png", + "price": "749.00", + "rrp": "0.00", + "price_modifier": 1, + "version_id": "81", + "config_setting": "GRP000019", + "main_option_for_display": "ATTR000105", + "configurations": [ + { + "rowID": 20, + "productrowid": 72, + "assignment": "GRP000019", + "measurement": "ATTR000105", + "group_mandatory": 1, + "group_type": 0, + "assignment_name": "Bracelet", + "type": "group", + "attributes": [ + { + "rowID": 105, + "group_id": 19, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Graphite", + "attribute_id": "ATTR000105", + "item_name": "bracelet_dark", + "item_quantity": 1, + "item_position": 1, + "item_media": 119, + "alternative_media": 55, + "title": "band_black.png", + "full_path": "\/assets\/images\/media\/band_black.png", + "alternative_media_title": "1-Morval-Watches2024-V1-Darkgrey-Black-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Darkgrey-Black-Date normaal.png" + }, + { + "rowID": 106, + "group_id": 19, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Graphite", + "attribute_id": "ATTR000106", + "item_name": "bracelet_blue", + "item_quantity": 1, + "item_position": 2, + "item_media": 120, + "alternative_media": 60, + "title": "band_blue.png", + "full_path": "\/assets\/images\/media\/band_blue.png", + "alternative_media_title": "1-Morval-Watches2024-V1-Darkgrey-DarkBlue-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-Darkgrey-DarkBlue-Date normaal.png" + }, + { + "rowID": 107, + "group_id": 19, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Graphite", + "attribute_id": "ATTR000107", + "item_name": "bracelet_dark_brown", + "item_quantity": 1, + "item_position": 3, + "item_media": 121, + "alternative_media": 57, + "title": "band_dark_brown.png", + "full_path": "\/assets\/images\/media\/band_dark_brown.png", + "alternative_media_title": "1-Morval-Watches2024-V1-DarkGrey-Brown-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-DarkGrey-Brown-Date normaal.png" + }, + { + "rowID": 108, + "group_id": 19, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Graphite", + "attribute_id": "ATTR000108", + "item_name": "bracelet_light_brown", + "item_quantity": 1, + "item_position": 4, + "item_media": 122, + "alternative_media": 58, + "title": "band_light_brown.png", + "full_path": "\/assets\/images\/media\/band_light_brown.png", + "alternative_media_title": "1-Morval-Watches2024-V1-DarkGrey-Calf-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/1-Morval-Watches2024-V1-DarkGrey-Calf-Date normaal.png" + }, + { + "rowID": 109, + "group_id": 19, + "group_name": "Bracelet", + "group_mandatory": 1, + "group_type": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "group_name_internal": "Bracelet - Thomas-I Graphite", + "attribute_id": "ATTR000109", + "item_name": "bracelet_steel", + "item_quantity": 1, + "item_position": 5, + "item_media": 123, + "alternative_media": 88, + "title": "band_steel.png", + "full_path": "\/assets\/images\/media\/band_steel.png", + "alternative_media_title": "Morval-Watches2024-V1-Darkgrey-Steel-Date normaal.png", + "alternative_media_full_path": "\/assets\/images\/media\/Morval-Watches2024-V1-Darkgrey-Steel-Date normaal.png", + "price": "100.00", + "rrp": "0.00", + "price_modifier": 1 + } + ] + } + ] + } +] \ No newline at end of file diff --git a/cache/categories.json b/cache/categories.json new file mode 100644 index 0000000..f7510d1 --- /dev/null +++ b/cache/categories.json @@ -0,0 +1,496 @@ +[ + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 57 + }, + { + "rowID": 18, + "name": "Thomas-I Date", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:20", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:46", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 57 + }, + { + "rowID": 21, + "name": "fp_carrousel_1", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:13", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:13", + "updatedby": null, + "filter": 0, + "product_id": 57 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 60 + }, + { + "rowID": 19, + "name": "Thomas-II Open Heart", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:37", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:39", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 60 + }, + { + "rowID": 22, + "name": "fp_carrousel_2", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:22", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:22", + "updatedby": null, + "filter": 0, + "product_id": 60 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 61 + }, + { + "rowID": 19, + "name": "Thomas-II Open Heart", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:37", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:39", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 61 + }, + { + "rowID": 22, + "name": "fp_carrousel_2", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:22", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:22", + "updatedby": null, + "filter": 0, + "product_id": 61 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 62 + }, + { + "rowID": 19, + "name": "Thomas-II Open Heart", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:37", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:39", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 62 + }, + { + "rowID": 22, + "name": "fp_carrousel_2", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:22", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:22", + "updatedby": null, + "filter": 0, + "product_id": 62 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 63 + }, + { + "rowID": 19, + "name": "Thomas-II Open Heart", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:37", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:39", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 63 + }, + { + "rowID": 22, + "name": "fp_carrousel_2", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:22", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:22", + "updatedby": null, + "filter": 0, + "product_id": 63 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 64 + }, + { + "rowID": 19, + "name": "Thomas-II Open Heart", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:37", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:39", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 64 + }, + { + "rowID": 22, + "name": "fp_carrousel_2", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:22", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:22", + "updatedby": null, + "filter": 0, + "product_id": 64 + }, + { + "rowID": 20, + "name": "Accessories", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:55", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:19:24", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 65 + }, + { + "rowID": 23, + "name": "Bracelets", + "parent_id": 20, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-25 13:20:01", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:20:01", + "updatedby": null, + "filter": 1, + "product_id": 65 + }, + { + "rowID": 20, + "name": "Accessories", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:55", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:19:24", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 66 + }, + { + "rowID": 23, + "name": "Bracelets", + "parent_id": 20, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-25 13:20:01", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:20:01", + "updatedby": null, + "filter": 1, + "product_id": 66 + }, + { + "rowID": 20, + "name": "Accessories", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:55", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:19:24", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 67 + }, + { + "rowID": 23, + "name": "Bracelets", + "parent_id": 20, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-25 13:20:01", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:20:01", + "updatedby": null, + "filter": 1, + "product_id": 67 + }, + { + "rowID": 20, + "name": "Accessories", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:55", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:19:24", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 68 + }, + { + "rowID": 23, + "name": "Bracelets", + "parent_id": 20, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-25 13:20:01", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:20:01", + "updatedby": null, + "filter": 1, + "product_id": 68 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 69 + }, + { + "rowID": 18, + "name": "Thomas-I Date", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:20", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:46", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 69 + }, + { + "rowID": 21, + "name": "fp_carrousel_1", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:13", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:13", + "updatedby": null, + "filter": 0, + "product_id": 69 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 70 + }, + { + "rowID": 18, + "name": "Thomas-I Date", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:20", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:46", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 70 + }, + { + "rowID": 21, + "name": "fp_carrousel_1", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:13", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:13", + "updatedby": null, + "filter": 0, + "product_id": 70 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 71 + }, + { + "rowID": 18, + "name": "Thomas-I Date", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:20", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:46", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 71 + }, + { + "rowID": 21, + "name": "fp_carrousel_1", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:13", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:13", + "updatedby": null, + "filter": 0, + "product_id": 71 + }, + { + "rowID": 17, + "name": "Watches", + "parent_id": 0, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:56:56", + "createdby": "MorvalWatches", + "updated": "2025-02-25 13:18:55", + "updatedby": "MorvalWatches", + "filter": 1, + "product_id": 72 + }, + { + "rowID": 18, + "name": "Thomas-I Date", + "parent_id": 17, + "status": 1, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:57:20", + "createdby": "MorvalWatches", + "updated": "2025-05-27 13:34:46", + "updatedby": "paul@veliti.nl", + "filter": 1, + "product_id": 72 + }, + { + "rowID": 21, + "name": "fp_carrousel_1", + "parent_id": 0, + "status": 0, + "accounthierarchy": "{\"salesid\":\"148-MorvalWatches\",\"soldto\":\"\"}", + "created": "2025-02-24 18:58:13", + "createdby": "MorvalWatches", + "updated": "2025-02-24 18:58:13", + "updatedby": null, + "filter": 0, + "product_id": 72 + } +] \ No newline at end of file diff --git a/cart.php b/cart.php index 761948e..a59908b 100644 --- a/cart.php +++ b/cart.php @@ -207,7 +207,7 @@ $view .= '
'; diff --git a/checkout.php b/checkout.php index 3373996..bd9fcf5 100644 --- a/checkout.php +++ b/checkout.php @@ -118,8 +118,9 @@ if ($products_in_cart) { //Place order //------------------------------- // Make sure when the user submits the form all data was submitted and shopping cart is not empty -if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['address_street'], $_POST['address_city'], $_POST['address_state'], $_POST['address_zip'], $_POST['address_country'], $_POST['address_phone'], $_SESSION['cart']) && !isset($_POST['update'])) { +if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['address_street'], $_POST['address_city'], $_POST['address_state'], $_POST['address_zip'], $_POST['address_country'], $_SESSION['cart']) && !isset($_POST['update'])) { $account_id = null; + // If the user is already logged in if (isset($_SESSION['account_loggedin'])) { // Account logged-in, update the user's details @@ -127,13 +128,13 @@ if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['a array( "language" => $_SESSION['country_code'], "first_name" => $_POST['first_name'], - "last_name" => $_POST['last_name'], - "address_street" => $_POST['address_street'], - "address_city" => $_POST['address_city'], - "address_state" => $_POST['address_state'], - "address_zip" => $_POST['address_zip'], - "address_country" => $_POST['address_country'], - "address_phone" => $_POST['address_phone'], + "last_name" => $_POST['last_name'], + "address_street" => $_POST['address_street'], + "address_city" => $_POST['address_city'], + "address_state" => $_POST['address_state'], + "address_zip" => $_POST['address_zip'], + "address_country" => $_POST['address_country'], + "address_phone" => $_POST['address_phone'] ?? '', "userkey" => $_SESSION['account_id']), JSON_UNESCAPED_UNICODE); $account_update = ioAPIv2('/v2/identity/',$payload,$clientsecret); $account_update = json_decode($account_update,true); @@ -166,23 +167,23 @@ if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['a "password" => $_POST['password'], "language" => $_SESSION['country_code'], "first_name" => $_POST['first_name'], - "last_name" => $_POST['last_name'], - "address_street" => $_POST['address_street'], - "address_city" => $_POST['address_city'], - "address_state" => $_POST['address_state'], - "address_zip" => $_POST['address_zip'], - "address_country" => $_POST['address_country'], - "address_phone" => $_POST['address_phone']), JSON_UNESCAPED_UNICODE); - + "last_name" => $_POST['last_name'], + "address_street" => $_POST['address_street'], + "address_city" => $_POST['address_city'], + "address_state" => $_POST['address_state'], + "address_zip" => $_POST['address_zip'], + "address_country" => $_POST['address_country'], + "address_phone" => $_POST['address_phone'] ?? ''), JSON_UNESCAPED_UNICODE); + $account = ioAPIv2('/v2/identity/',$payload,$clientsecret); $account= json_decode($account,true); $account_id = $account['account_id'] = $account['accountID']; - + if ($account && isset($account['accountID'])) { //SEND VERIFICATION EMAIL include dirname(__FILE__).'/custom/email/email_template_register.php'; $register_mail = $message; - + send_mail_by_PHPMailer($account['identity'], $subject, $register_mail,'', ''); $register_error = 'Email send to verify your account'; } @@ -203,39 +204,65 @@ if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['a $payload = json_encode(array("cart" => $_SESSION['cart'], "checkout_input" => $checkout_input, "customer_details" => $account), JSON_UNESCAPED_UNICODE); $place_order = ioAPIv2('/v2/placeorder/',$payload,$clientsecret); $place_order = json_decode($place_order,true); - + // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Check if transaction is succesfull and send order confirmation to customer // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if ($place_order['error'] == '' && $place_order['id'] != ''){ - - //SEND CONFIRMATION TO CUSTOMER - send_order_details_email( - $account['email'], - $place_order['products_checked-out'], - $account['first_name'], - $account['last_name'], - $account['address_street'], - $account['address_city'], - $account['address_state'], - $account['address_zip'], - $account['address_country'], - $place_order['subtotal'], - $place_order['discounttotal'], - $place_order['shippingtotal'], - $place_order['taxtotal'], - $place_order['payment_amount'], - $place_order['transaction_id'] - ); - + + // Push purchase event to dataLayer + if (isset($place_order['products_checked-out']) && is_array($place_order['products_checked-out'])) { + $productIds = []; + $totalQuantity = 0; + $products = []; + + foreach ($place_order['products_checked-out'] as $p) { + if (is_array($p)) { + $productIds[] = $p['id'] ?? ''; + $totalQuantity += $p['quantity'] ?? 0; + $products[] = [ + 'id' => $p['id'] ?? '', + 'name' => $p['meta']['name'] ?? '', + 'price' => $p['options_price'] ?? 0, + 'quantity' => $p['quantity'] ?? 0 + ]; + } + } + + echo ""; + } + + // Email will be sent by webhook after successful payment + //Disable giftcard if (isset($_SESSION['discount'])){ if (preg_match("/[#][0-9]/", $_SESSION['discount']) == 1){ useGiftCart($pdo, $_SESSION['discount']); } } - + // Authenticate the user if ($account_id != null) { // Log the user in with the details provided @@ -249,11 +276,11 @@ if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['a //Pay on delivery = 2 // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - if (pay_on_delivery_enabled && $place_order['payment_method'] == 2){ + if (pay_on_delivery_enabled && $place_order['payment_method'] == 2){ header('Location: ' . url('index.php?page=placeorder')); exit; } - + // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Mollie = 3 ++++++++++++++++++++++++++++++++++++++++++++++++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -267,24 +294,24 @@ if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['a * See: https://www.mollie.com/dashboard/developers/api-keys */ require "initialize.php"; - + /* * Generate a unique order id for this example. It is important to include this unique attribute * in the redirectUrl (below) so a proper return page can be shown to the customer. */ $orderId = $place_order['transaction_id']; $value = number_format($place_order['payment_amount'],2,'.',''); - + /* * Determine the url parts to these example files. */ $protocol = isset($_SERVER['HTTPS']) && strcasecmp('off', $_SERVER['HTTPS']) !== 0 ? "https" : "http"; $hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['REQUEST_URI'] ?? $_SERVER['PHP_SELF']); - + /* * Payment parameters: - * amount Amount in EUROs. + * amount Amount in EUROs. * description Description of the payment. * redirectUrl Redirect location. The customer will be redirected there after the payment. * webhookUrl Webhook location, used to report when the payment changes state. @@ -296,7 +323,7 @@ if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['a }else{ $redirectURL = $protocol.'://'.$hostname.$path.'index.php?page=placeorder&order_id='.$orderId; } - + $payment = $mollie->payments->create([ "amount" => [ "currency" => "EUR", @@ -328,19 +355,19 @@ if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['a // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (paypal_enabled && $_POST['method'] == 1) { - + //Process Payment require_once __DIR__."/lib/paypal/paypal.php"; $base = PAYPAL_URL; $id = PAYPAL_CLIENT_ID; $secret = PAYPAL_CLIENT_SECRET; - + //init input $order = $place_order['transaction_id']; $price = number_format($place_order['payment_amount'],2,'.',''); $currency = "EUR"; - + //make payment $paypal = new paypalCurl(); $paypal->init($id,$secret,$base); @@ -366,200 +393,385 @@ if (isset($_POST['method'], $_POST['first_name'], $_POST['last_name'], $_POST['a //------------------------------- // END PLACE ORDER //------------------------------- - $terms_link = url('index.php?page=termsandconditions'); $privacy_link = url('index.php?page=privacy'); $view = template_header(($checkout_header ?? 'Checkout'),''); $view .= ' -'.implode('
', $errors).'
'.$account_available.' '.$account_log_in.'
'; + +'.$error.'
'; + } } - $view .= ' -