Διασύνδεση με database

Σύνδεση με βάση δεδομένων

Η διασύνδεση υποστηρίζει βάσεις δεδομένων MySQL, MariaDB και SQL Server.

Host string απαραίτητο

Η διεύθυνση IP του server της βάσης δεδομένων.
Π.χ. 198.51.100.0.

Port string απαραίτητο

Η θύρα σύνδεσης της βάσης δεδομένων.
Π.χ. 3306 για MySQL/MariaDB ή 1433 για SQL Server.

Database string απαραίτητο

Το όνομα της βάσης δεδομένων.
Π.χ. example_db.

Username string απαραίτητο

Το όνομα χρήστη για την σύνδεση στη βάση δεδομένων.
Π.χ. demo.

Password string απαραίτητο

Ο κωδικός πρόσβασης για την σύνδεση στη βάση δεδομένων.
Π.χ. secret.

Character set string προαιρετικό

Η κωδικοποίηση χαρακτήρων της βάσης δεδομένων.
Π.χ. utf8mb4.

Collation string προαιρετικό

Η ταξινόμηση χαρακτήρων της βάσης δεδομένων.
Π.χ. utf8mb4_unicode_ci.

CA certificate file προαιρετικό

Το αρχείο πιστοποιητικού CA για την σύνδεση στη βάση δεδομένων μέσω SSL. Π.χ. ca-cert.pem.

Client public key certificate file προαιρετικό

Το αρχείο δημόσιου κλειδιού πελάτη για την σύνδεση στη βάση δεδομένων μέσω SSL. Π.χ. client-cert.pem.

Client private key file προαιρετικό

Το αρχείο ιδιωτικού κλειδιού πελάτη για την σύνδεση στη βάση δεδομένων μέσω SSL. Π.χ. client-key.pem.

Peer verification boolean προαιρετικό

Ενεργοποίηση ή απενεργοποίηση της επαλήθευσης του peer κατά την σύνδεση στη βάση δεδομένων μέσω SSL.

Updated string προαιρετικό

Το όνομα της στήλης που θα χρησιμοποιηθεί για φιλτράρισμα των δεδομένων με βάση την ημερομηνία.
Π.χ. updated_at.

Πίνακες εισαγωγής δεδομένων

Απαιτούνται 3 πίνακες: ένας για τα προϊόντα, ένας για τις τιμές και ένας για τα αποθέματα. Στο Magento μπορεί να προστεθεί και ένας τέταρτος, προαιρετικός πίνακας για τις τιμές πελατών. Οι στήλες και τα δεδομένα που χρειάζονται για την εισαγωγή περιγράφονται στις αντίστοιχες ενότητες για το Magento και το WooCommerce.

Διαχείριση differentials

Για να γίνει η λήψη των differentials, το Sébastien στέλνει ερωτήματα φιλτράροντας με την πιο πρόσφατη ημερομηνία της τελευταίας ενημέρωσης που βρέθηκε στη στήλη που έχει οριστεί για την ημερομηνία ενημέρωσης. Η βάση δεδομένων θα πρέπει να επιστρέφει μόνο τα δεδομένα που έχουν ενημερωθεί μετά από αυτή την ημερομηνία. Σε περίπτωση που δε σταλεί κριτήριο με ημερομηνία, τότε θα πρέπει να επιστραφούν όλα τα δεδομένα. Για ταχύτερη αναζήτηση συνιστάται η χρήση ευρετηρίων (index) στις στήλες ημερομηνίας.

Κάθε αλλαγή πρέπει να καταγράφεται στον πίνακα που αντιστοιχεί στο πεδίο που άλλαξε, ενημερώνοντας και τη στήλη ημερομηνίας ενημέρωσης:

  1. Η αλλαγή τιμής ή τιμής έκπτωσης ενημερώνει τον πίνακα τιμών
  2. Η αλλαγή stock ή min quantity ενημερώνει τον πίνακα αποθεμάτων
  3. Οποιαδήποτε άλλη αλλαγή ενημερώνει τον πίνακα προϊόντων (τα χαρακτηριστικά που κάνουν trigger μπορούν να οριστούν κατόπιν συνεννόησης)

Παράδειγμα πίνακα προϊόντων Magento

SCHEMA

CREATE TABLE `products` (
  `attribute_set` VARCHAR(255) NULL,
  `backorders` TINYINT(1) NULL,
  `category_ids` VARCHAR(255) NULL,
  `code` VARCHAR(255) NULL,
  `color` VARCHAR(255) NULL,
  `crosssell_skus` VARCHAR(255) NULL,
  `media_gallery` TEXT NULL,
  `min_sale_qty` DECIMAL(12, 4) NULL,
  `name` VARCHAR(255) NULL,
  `price` DECIMAL(20, 6) NULL,
  `qty_increments` DECIMAL(12, 4) NULL,
  `quantity` DECIMAL(12, 4) NULL,
  `related_skus` VARCHAR(255) NULL,
  `size` VARCHAR(255) NULL,
  `sku` VARCHAR(255) NOT NULL,
  `special_price` DECIMAL(20, 6) NULL,
  `status` TINYINT(1) NULL,
  `upsell_skus` VARCHAR(255) NULL,
  `visibility` TINYINT(1) NULL,
  `website_ids` VARCHAR(255) NULL,
  `weight` DECIMAL(12, 4) NULL,
  `updated_at` TIMESTAMP NULL,
  INDEX `products_updated_at_index` (`updated_at`)
);

DATA

sku name code size color status visibility price quantity category_ids updated_at
TSHIRT-RED-M T-Shirt Κόκκινο Medium TSHIRT-RED M Red 1 1 29.990000 150.0000 Men > Clothing > T-Shirts, Men > New Arrivals 2025-12-05 10:30:00
TSHIRT-RED-L T-Shirt Κόκκινο Large TSHIRT-RED L Red 1 1 29.990000 75.0000 Men > Clothing > T-Shirts, Men > New Arrivals 2025-12-05 10:30:00
LAPTOP-PRO-2025 Professional Laptop 2025 NULL NULL NULL 1 4 1299.000000 25.0000 Electronics > Computers, Best Sellers 2025-12-05 14:20:00

Παράδειγμα πίνακα προϊόντων WooCommerce

SCHEMA

CREATE TABLE `products` (
  `woocommerce_id` BIGINT UNSIGNED NULL,
  `backorders` VARCHAR(255) NULL,
  `brands` VARCHAR(255) NULL,
  `catalog_visibility` VARCHAR(255) NULL,
  `categories` VARCHAR(255) NULL,
  `code` VARCHAR(255) NULL,
  `color` VARCHAR(255) NULL,
  `cross_sell_ids` VARCHAR(255) NULL,
  `date_on_sale_from` DATETIME NULL,
  `date_on_sale_to` DATETIME NULL,
  `description` TEXT NULL,
  `downloadable` TINYINT(1) NULL,
  `featured` TINYINT(1) NULL,
  `global_unique_id` VARCHAR(255) NULL,
  `height` DECIMAL(10, 2) NULL,
  `images` TEXT NULL,
  `length` DECIMAL(10, 2) NULL,
  `manage_stock` TINYINT(1) NULL,
  `name` VARCHAR(255) NULL,
  `purchase_note` TEXT NULL,
  `regular_price` DECIMAL(10, 2) NULL,
  `reviews_allowed` TINYINT(1) NULL,
  `sale_price` DECIMAL(10, 2) NULL,
  `shipping_class` VARCHAR(255) NULL,
  `short_description` VARCHAR(255) NULL,
  `size` VARCHAR(255) NULL,
  `slug` VARCHAR(255) NULL,
  `sold_individually` TINYINT(1) NULL,
  `sku` VARCHAR(255) NOT NULL,
  `status` VARCHAR(255) NULL,
  `stock_quantity` INT NULL,
  `stock_status` VARCHAR(255) NULL,
  `tax_class` VARCHAR(255) NULL,
  `tax_status` VARCHAR(255) NULL,
  `type` VARCHAR(255) NULL,
  `upsell_ids` VARCHAR(255) NULL,
  `virtual` TINYINT(1) NULL,
  `weight` DECIMAL(10, 2) NULL,
  `width` DECIMAL(10, 2) NULL,
  `updated_at` TIMESTAMP NULL,
  INDEX `products_updated_at_index` (`updated_at`)
);

DATA

sku name code size status regular_price stock_quantity manage_stock categories updated_at
SHOE-NIKE-42 Nike Air Max No 42 SHOE-NIKE 42 publish 89.99 45 1 shoes,sports 2025-12-05 09:15:00
SHOE-NIKE-43 Nike Air Max No 43 SHOE-NIKE 43 publish 89.99 32 1 shoes,sports 2025-12-05 09:15:00
BOOK-PHP-2025 PHP Programming Guide NULL NULL publish 45.00 NULL 0 books,programming 2025-12-05 11:30:00

Παράδειγμα πίνακα τιμών Magento

SCHEMA

CREATE TABLE `prices` (
  `price` DECIMAL(20, 6) NULL,
  `sku` VARCHAR(255) NOT NULL,
  `special_price` DECIMAL(20, 6) NULL,
  `special_from_date` DATE NULL,
  `special_to_date` DATE NULL,
  `tier_prices` TEXT NULL,
  `updated_at` TIMESTAMP NULL,
  INDEX `prices_updated_at_index` (`updated_at`)
);

DATA

sku price special_price special_from_date special_to_date tier_prices updated_at
TSHIRT-RED-M 29.990000 24.990000 2025-12-01 2025-12-31 NULL 2025-12-05 08:00:00
LAPTOP-PRO-2025 1299.000000 NULL NULL NULL group_a,10,1199,0|group_b,50,1099,0 2025-12-05 10:15:00
CHAIR-OFFICE-BLK 159.990000 139.990000 2025-12-05 2025-12-15 group_a,5,129.99,0 2025-12-05 14:30:00

Παράδειγμα πίνακα τιμών WooCommerce

SCHEMA

CREATE TABLE `prices` (
  `woocommerce_id` BIGINT UNSIGNED NULL,
  `date_on_sale_from` DATETIME NULL,
  `date_on_sale_to` DATETIME NULL,
  `regular_price` DECIMAL(10, 2) NULL,
  `sale_price` DECIMAL(10, 2) NULL,
  `sku` VARCHAR(255) NOT NULL,
  `updated_at` TIMESTAMP NULL,
  INDEX `prices_updated_at_index` (`updated_at`)
);

DATA

sku regular_price sale_price date_on_sale_from date_on_sale_to updated_at
SHOE-NIKE-42 89.99 69.99 2025-12-01 00:00:00 2025-12-31 23:59:59 2025-12-05 09:00:00
SHOE-NIKE-43 89.99 69.99 2025-12-01 00:00:00 2025-12-31 23:59:59 2025-12-05 09:00:00
BOOK-PHP-2025 45.00 NULL NULL NULL 2025-12-05 11:30:00

Παράδειγμα πίνακα αποθεμάτων Magento

SCHEMA

CREATE TABLE `stocks` (
  `backorders` TINYINT NULL,
  `is_in_stock` TINYINT(1) NULL,
  `min_quantity` DECIMAL(12, 4) NULL,
  `quantity` DECIMAL(12, 4) NULL,
  `sku` VARCHAR(255) NOT NULL,
  `updated_at` TIMESTAMP NULL,
  INDEX `stocks_updated_at_index` (`updated_at`)
);

DATA

sku quantity min_quantity backorders is_in_stock updated_at
TSHIRT-RED-M 150.0000 5.0000 NULL NULL 2025-12-05 10:30:00
TSHIRT-RED-L 75.0000 5.0000 NULL NULL 2025-12-05 10:30:00
LAPTOP-PRO-2025 25.0000 2.0000 NULL NULL 2025-12-05 14:20:00
CHAIR-OFFICE-BLK 0.0000 10.0000 2 1 2025-12-05 16:45:00

Παράδειγμα πίνακα αποθεμάτων WooCommerce

SCHEMA

CREATE TABLE `stocks` (
  `woocommerce_id` BIGINT UNSIGNED NULL,
  `sku` VARCHAR(255) NOT NULL,
  `stock_quantity` INT NULL,
  `stock_status` VARCHAR(255) NULL,
  `stock_threshold` INT NULL,
  `updated_at` TIMESTAMP NULL,
  INDEX `stocks_updated_at_index` (`updated_at`)
);

DATA

sku stock_quantity stock_status stock_threshold updated_at
SHOE-NIKE-42 45.00 instock 5.00 2025-12-05 09:15:00
SHOE-NIKE-43 32.00 instock 5.00 2025-12-05 09:15:00
BOOK-PHP-2025 NULL NULL NULL 2025-12-05 11:30:00
HEADPHONES-BT -5.00 onbackorder 10.00 2025-12-05 15:20:00

Παράδειγμα πίνακα τιμών πελατών Magento

SCHEMA

CREATE TABLE `customer_prices` (
  `amount` DECIMAL(20, 6) NOT NULL,
  `attribute_code` VARCHAR(255) NULL,
  `attribute_option` VARCHAR(255) NULL,
  `category_ids` VARCHAR(255) NULL,
  `email` VARCHAR(255) NULL,
  `price_type` TINYINT NOT NULL,
  `sku` VARCHAR(255) NULL,
  `taxvat` VARCHAR(255) NULL,
  `tier_quantity` INT NULL,
  `valid_from` DATE NULL,
  `valid_to` DATE NULL,
  `updated_at` TIMESTAMP NULL,
  INDEX `customer_prices_updated_at_index` (`updated_at`)
);

DATA

email taxvat sku category_ids attribute_code attribute_option price_type amount tier_quantity valid_from valid_to updated_at
customer@example.com NULL TSHIRT-RED-M NULL NULL NULL 0 24.990000 NULL NULL NULL 2025-12-05 08:00:00
NULL 123456789 NULL Men > Clothing > T-Shirts NULL NULL 1 10.000000 NULL 2025-12-01 2025-12-31 2025-12-05 09:30:00
NULL 123456789 NULL NULL color Red 2 5.000000 10 NULL NULL 2025-12-05 10:15:00

Πίνακες ενημέρωσης παραγγελιών

Απαιτούνται 4 πίνακες: ένας για τα στοιχεία της παραγγελίας, ένας για τα προϊόντα της παραγγελίας, ένας για τα σχόλια της παραγγελίας, και ένας για την κατάσταση της παραγγελίας.

Οι 3 πρώτοι πίνακες ενημερώνονται όταν υπάρχει νέα παραγγελία ή όταν αλλάζει η παραγγελία από το Magento ή το WooCommerce. Ο πίνακας της κατάστασης της παραγγελίας ενημερώνεται μόνο όταν αλλάζει η κατάσταση της παραγγελίας από το ERP.

Παράδειγμα πίνακα παραγγελιών Magento

SCHEMA

CREATE TABLE `orders` (
  `id` BIGINT UNSIGNED NOT NULL,
  `billing_address_city` VARCHAR(255) NOT NULL,
  `billing_address_company` VARCHAR(255) NULL,
  `billing_address_country_id` VARCHAR(255) NOT NULL,
  `billing_address_email` VARCHAR(255) NULL,
  `billing_address_firstname` VARCHAR(255) NULL,
  `billing_address_lastname` VARCHAR(255) NULL,
  `billing_address_postcode` VARCHAR(255) NOT NULL,
  `billing_address_region` VARCHAR(255) NULL,
  `billing_address_street` JSON NOT NULL,
  `billing_address_telephone` VARCHAR(255) NULL,
  `billing_address_vat_id` VARCHAR(255) NULL,
  `coupon_code` VARCHAR(255) NULL,
  `customer_email` VARCHAR(255) NOT NULL,
  `customer_firstname` VARCHAR(255) NULL,
  `customer_id` INT UNSIGNED NULL,
  `customer_lastname` VARCHAR(255) NULL,
  `customer_note` TEXT NULL,
  `discount_amount` DECIMAL(20,4) NULL,
  `extension_attributes` JSON NULL,
  `grand_total` DECIMAL(20,4) NOT NULL,
  `increment_id` VARCHAR(255) NULL,
  `payment_method` VARCHAR(255) NOT NULL,
  `shipping_address_city` VARCHAR(255) NOT NULL,
  `shipping_address_company` VARCHAR(255) NULL,
  `shipping_address_country_id` VARCHAR(255) NOT NULL,
  `shipping_address_email` VARCHAR(255) NULL,
  `shipping_address_firstname` VARCHAR(255) NULL,
  `shipping_address_lastname` VARCHAR(255) NULL,
  `shipping_address_postcode` VARCHAR(255) NOT NULL,
  `shipping_address_region` VARCHAR(255) NULL,
  `shipping_address_street` JSON NOT NULL,
  `shipping_address_telephone` VARCHAR(255) NULL,
  `shipping_address_vat_id` VARCHAR(255) NULL,
  `shipping_amount` DECIMAL(20,4) NULL,
  `shipping_incl_tax` DECIMAL(20,4) NULL,
  `shipping_method` VARCHAR(255) NULL,
  `shipping_tax_amount` DECIMAL(20,4) NULL,
  `state` VARCHAR(255) NULL,
  `status` VARCHAR(255) NULL,
  `subtotal` DECIMAL(20,4) NULL,
  `tax_amount` DECIMAL(20,4) NULL,
  `total_due` DECIMAL(20,4) NULL,
  `total_paid` DECIMAL(20,4) NULL,
  `total_refunded` DECIMAL(20,4) NULL,
  `created_at` TIMESTAMP NULL,
  `updated_at` TIMESTAMP NULL
);

DATA

id increment_id customer_email customer_firstname customer_id customer_lastname billing_address_firstname billing_address_lastname billing_address_company billing_address_street billing_address_city billing_address_region billing_address_postcode billing_address_country_id billing_address_telephone billing_address_email billing_address_vat_id shipping_address_firstname shipping_address_lastname shipping_address_company shipping_address_street shipping_address_city shipping_address_region shipping_address_postcode shipping_address_country_id shipping_address_telephone shipping_address_email shipping_address_vat_id payment_method shipping_method coupon_code customer_note state status subtotal discount_amount shipping_amount shipping_incl_tax shipping_tax_amount tax_amount grand_total total_paid total_refunded total_due extension_attributes created_at updated_at
12345 000012345 john.doe@example.com John 1024 Doe John Doe NULL ["Ermou 15"] Athens Attica 11523 GR +302101234567 john.doe@example.com NULL John Doe NULL ["Ermou 15"] Athens Attica 11523 GR +302101234567 john.doe@example.com NULL banktransfer flatrate_flatrate NULL NULL processing processing 127.4000 0.0000 5.0000 6.2000 1.2000 30.5000 157.9000 157.9000 0.0000 0.0000 {"erp_id": "ORD-2025-001", "warehouse": "ATH-01"} 2025-12-05 10:30:15 2025-12-05 10:30:15
12346 000012346 maria.smith@example.com Maria NULL Smith Maria Smith Acme Corp ["Tsimiski 25","2nd Floor"] Thessaloniki Central Macedonia 54622 GR +302310987654 maria.smith@example.com EL123456789 Anna Papadopoulou NULL ["Egnatia 100"] Thessaloniki Central Macedonia 54630 GR +302310555444 anna.p@example.com NULL cashondelivery tablerate_bestway SUMMER2025 Please call before delivery complete complete 72.5700 7.2600 3.5000 4.3400 0.8400 17.4200 89.9900 89.9900 0.0000 0.0000 {"erp_id": "ORD-2025-002", "warehouse": "TSK-01", "priority": "high"} 2025-12-05 11:15:00 2025-12-05 15:30:00

Παράδειγμα πίνακα παραγγελιών WooCommerce

SCHEMA

CREATE TABLE `orders` (
  `id` BIGINT UNSIGNED NOT NULL,
  `number` VARCHAR(255) NOT NULL,
  `status` VARCHAR(255) NOT NULL,
  `currency` CHAR(3) NOT NULL,
  `discount_total` DECIMAL(10,2) NOT NULL,
  `discount_tax` DECIMAL(10,2) NOT NULL,
  `shipping_total` DECIMAL(10,2) NOT NULL,
  `shipping_tax` DECIMAL(10,2) NOT NULL,
  `cart_tax` DECIMAL(10,2) NOT NULL,
  `total` DECIMAL(10,2) NOT NULL,
  `total_tax` DECIMAL(10,2) NOT NULL,
  `prices_include_tax` TINYINT(1) NOT NULL,
  `customer_id` BIGINT UNSIGNED NOT NULL DEFAULT 0,
  `customer_note` VARCHAR(255) NULL,
  `billing_first_name` VARCHAR(255) NOT NULL,
  `billing_last_name` VARCHAR(255) NOT NULL,
  `billing_company` VARCHAR(255) NOT NULL,
  `billing_address_1` VARCHAR(255) NOT NULL,
  `billing_address_2` VARCHAR(255) NOT NULL,
  `billing_city` VARCHAR(255) NOT NULL,
  `billing_postcode` VARCHAR(255) NOT NULL,
  `billing_state_code` VARCHAR(255) NOT NULL,
  `billing_state_name` VARCHAR(255) NOT NULL,
  `billing_country` CHAR(2) NOT NULL,
  `billing_email` VARCHAR(255) NOT NULL,
  `billing_phone` VARCHAR(255) NOT NULL,
  `shipping_first_name` VARCHAR(255) NOT NULL,
  `shipping_last_name` VARCHAR(255) NOT NULL,
  `shipping_company` VARCHAR(255) NOT NULL,
  `shipping_address_1` VARCHAR(255) NOT NULL,
  `shipping_address_2` VARCHAR(255) NOT NULL,
  `shipping_city` VARCHAR(255) NOT NULL,
  `shipping_postcode` VARCHAR(255) NOT NULL,
  `shipping_state_code` VARCHAR(255) NOT NULL,
  `shipping_state_name` VARCHAR(255) NOT NULL,
  `shipping_country` CHAR(2) NOT NULL,
  `shipping_phone` VARCHAR(255) NOT NULL,
  `payment_method` VARCHAR(255) NOT NULL,
  `payment_method_title` VARCHAR(255) NOT NULL,
  `shipping_method` VARCHAR(255) NOT NULL,
  `shipping_method_title` VARCHAR(255) NOT NULL,
  `transaction_id` VARCHAR(255) NOT NULL,
  `metadata` JSON NULL,
  `date_paid` DATETIME NULL,
  `date_completed` DATETIME NULL,
  `coupon_code` VARCHAR(255) NULL,
  `created_at` TIMESTAMP NULL,
  `updated_at` TIMESTAMP NULL
);

DATA

id number status currency customer_id customer_note billing_first_name billing_last_name billing_company billing_address_1 billing_address_2 billing_city billing_state_code billing_state_name billing_postcode billing_country billing_email billing_phone shipping_first_name shipping_last_name shipping_company shipping_address_1 shipping_address_2 shipping_city shipping_state_code shipping_state_name shipping_postcode shipping_country shipping_phone payment_method payment_method_title shipping_method shipping_method_title transaction_id coupon_code discount_total discount_tax shipping_total shipping_tax cart_tax total_tax total prices_include_tax date_paid date_completed metadata created_at updated_at
5678 5678 processing EUR 123 NULL George Karamanlis 25th August Street 45 Heraklion 71201 GR george.k@example.com +302810123456 George Karamanlis 25th August Street 45 Heraklion 71201 GR +302810123456 bacs Direct Bank Transfer flat_rate Flat Rate TXN-2025-5678 NULL 0.00 0.00 5.00 1.20 35.19 36.39 179.98 0 2025-12-05 09:25:00 NULL {"_erp_order_id": "WC-2025-5678", "_warehouse_code": "HER-01"} 2025-12-05 09:20:00 2025-12-05 09:25:00
5679 5679 completed EUR 0 Gift wrap please Elena Papadopoulou Agiou Nikolaou 12 Apt 3B Patras 26221 GR elena.p@example.com +302610654321 Kostas Nikolaou Korinthou 88 Patras 26335 GR +302610777888 cod Cash on Delivery free_shipping Free Shipping BOOK10 4.50 1.08 0.00 0.00 8.64 9.72 45.00 0 2025-12-05 10:50:00 2025-12-05 15:30:00 {"_erp_order_id": "WC-2025-5679", "_warehouse_code": "PTR-01", "_gift_message": "Happy Birthday!"} 2025-12-05 10:45:00 2025-12-05 15:30:00

Παράδειγμα πίνακα προϊόντων παραγγελίας Magento

SCHEMA

CREATE TABLE `order_items` (
  `id` BIGINT UNSIGNED NOT NULL,
  `order_id` BIGINT UNSIGNED NOT NULL,
  `discount_amount` DECIMAL(20,4) NULL,
  `discount_percent` DECIMAL(12,4) NULL,
  `extension_attributes` JSON NULL,
  `name` VARCHAR(255) NULL,
  `original_price` DECIMAL(20,4) NULL,
  `price` DECIMAL(20,4) NULL,
  `qty_canceled` DECIMAL(12,4) NULL,
  `qty_invoiced` DECIMAL(12,4) NULL,
  `qty_ordered` DECIMAL(12,4) NULL,
  `qty_refunded` DECIMAL(12,4) NULL,
  `qty_shipped` DECIMAL(12,4) NULL,
  `row_total` DECIMAL(20,4) NULL,
  `row_total_incl_tax` DECIMAL(20,4) NULL,
  `sku` VARCHAR(255) NULL,
  `tax_amount` DECIMAL(20,4) NULL,
  `tax_percent` DECIMAL(12,4) NULL,
  `created_at` TIMESTAMP NULL,
  `updated_at` TIMESTAMP NULL
);

DATA

id order_id sku name original_price price discount_percent discount_amount qty_ordered qty_invoiced qty_shipped qty_refunded qty_canceled row_total row_total_incl_tax tax_percent tax_amount extension_attributes created_at updated_at
98765 12345 TSHIRT-RED-M T-Shirt Κόκκινο Medium 29.9900 24.9900 16.6700 10.0000 2.0000 2.0000 2.0000 0.0000 0.0000 49.9800 61.9752 24.0000 11.9952 {"color": "Red", "size": "M"} 2025-12-05 10:30:15 2025-12-05 10:30:15
98766 12345 LAPTOP-PRO-2025 Professional Laptop 2025 1299.0000 1199.0000 7.6982 100.0000 1.0000 1.0000 0.0000 0.0000 0.0000 1199.0000 1486.7600 24.0000 287.7600 {"warranty": "2 years", "serial_number": "LP2025-12345"} 2025-12-05 10:30:15 2025-12-05 10:30:15
98767 12346 TSHIRT-RED-L T-Shirt Κόκκινο Large 29.9900 24.9900 16.6700 5.0000 1.0000 1.0000 1.0000 0.0000 0.0000 24.9900 30.9876 24.0000 5.9976 {"color": "Red", "size": "L"} 2025-12-05 11:15:00 2025-12-05 15:30:00

Παράδειγμα πίνακα προϊόντων παραγγελίας WooCommerce

SCHEMA

CREATE TABLE `order_items` (
  `id` BIGINT UNSIGNED NOT NULL,
  `order_id` BIGINT UNSIGNED NOT NULL,
  `product_id` BIGINT UNSIGNED NOT NULL DEFAULT 0,
  `variation_id` BIGINT UNSIGNED NOT NULL DEFAULT 0,
  `name` VARCHAR(255) NOT NULL,
  `quantity` INT UNSIGNED NOT NULL,
  `tax_class` VARCHAR(255) NOT NULL,
  `subtotal` DECIMAL(10,2) NOT NULL,
  `subtotal_tax` DECIMAL(10,2) NOT NULL,
  `total` DECIMAL(10,2) NOT NULL,
  `total_tax` DECIMAL(10,2) NOT NULL,
  `metadata` JSON NULL,
  `sku` VARCHAR(255) NULL,
  `price` DECIMAL(10,2) NOT NULL,
  `created_at` TIMESTAMP NULL,
  `updated_at` TIMESTAMP NULL
);

DATA

id order_id product_id variation_id sku name quantity price subtotal subtotal_tax total total_tax tax_class metadata created_at updated_at
45678 5678 1234 5678 SHOE-NIKE-42 Nike Air Max No 42 2 69.99 139.98 33.60 139.98 33.60 standard {"pa_size": "42", "pa_color": "Black"} 2025-12-05 09:20:00 2025-12-05 09:20:00
45679 5678 2345 0 BOOK-PHP-2025 PHP Programming Guide 1 4.41 4.41 1.06 4.41 1.06 reduced-rate {"_isbn": "978-1234567890"} 2025-12-05 09:20:00 2025-12-05 09:20:00
45680 5679 2345 0 BOOK-PHP-2025 PHP Programming Guide 1 36.00 40.50 9.72 36.00 8.64 reduced-rate {"_isbn": "978-1234567890", "_edition": "2nd"} 2025-12-05 10:45:00 2025-12-05 10:45:00

Παράδειγμα πίνακα σχολίων παραγγελίας Magento

SCHEMA

CREATE TABLE `order_notes` (
  `id` BIGINT UNSIGNED NOT NULL,
  `order_id` BIGINT UNSIGNED NOT NULL,
  `comment` TEXT NOT NULL,
  `is_customer_notified` TINYINT(1) NULL,
  `status` VARCHAR(255) NULL,
  `created_at` TIMESTAMP NULL,
  `updated_at` TIMESTAMP NULL
);

DATA

id order_id comment is_customer_notified status created_at updated_at
1001 12345 Order confirmed by customer 1 processing 2025-12-05 10:30:15 2025-12-05 10:30:15
1002 12345 Payment received 0 processing 2025-12-05 10:35:00 2025-12-05 10:35:00
1003 12346 Package delivered successfully 1 complete 2025-12-05 14:20:00 2025-12-05 14:20:00

Παράδειγμα πίνακα σχολίων παραγγελίας WooCommerce

SCHEMA

CREATE TABLE `order_notes` (
  `id` BIGINT UNSIGNED NOT NULL,
  `order_id` BIGINT UNSIGNED NOT NULL,
  `author` VARCHAR(255) NOT NULL,
  `note` TEXT NOT NULL,
  `customer_note` TINYINT(1) NULL,
  `added_by_user` TINYINT(1) NULL,
  `created_at` TIMESTAMP NULL,
  `updated_at` TIMESTAMP NULL
);

DATA

id order_id author note customer_note added_by_user created_at updated_at
2001 5678 WooCommerce Order status changed to Processing 0 0 2025-12-05 09:20:00 2025-12-05 09:20:00
2002 5678 admin Payment verified manually 0 1 2025-12-05 09:25:00 2025-12-05 09:25:00
2003 5679 WooCommerce Order completed and delivered 1 0 2025-12-05 15:30:00 2025-12-05 15:30:00

Κατάσταση παραγγελιών

Αυτός ο πίνακας θα ενημερώνεται από την πλευρά του ERP, και έπειτα το Sébastien θα ενημερώνει την κατάσταση της παραγγελίας στο Magento ή στο WooCommerce.

Η στήλη order_id είναι το ID της παραγγελίας στο e-shop, δηλαδή η στήλη id του πίνακα παραγγελιών. Εγγραφές με order_id που δεν αντιστοιχεί σε παραγγελία αγνοούνται.

Το Sébastien διαβάζει μόνο τις εγγραφές που έχουν updated_at μεταγενέστερο από τον τελευταίο έλεγχο. Γι' αυτό η στήλη updated_at πρέπει να συμπληρώνεται σε κάθε νέα εγγραφή και να ενημερώνεται σε κάθε αλλαγή, διαφορετικά η εγγραφή δεν θα ληφθεί υπόψη.

Κατάσταση παραγγελιών Magento

Η στήλη status μπορεί να έχει μόνο μία από τις εξής τιμές: invoiced, shipped, complete, canceled.

  • Για την περίπτωση του invoiced, δημιουργείται τιμολόγιο στην παραγγελία. Η στήλη notify_invoice είναι προαιρετική και καθορίζει αν θα σταλεί email στον πελάτη. Αν είναι κενή, δεν στέλνεται email.
  • Για την περίπτωση του shipped, δημιουργείται αποστολή στην παραγγελία. Αν οι στήλες carrier_code, carrier_title και track_number είναι όλες συμπληρωμένες, προστίθεται και ο αριθμός αποστολής (tracking number). Η στήλη notify_shipment είναι προαιρετική και καθορίζει αν θα σταλεί email στον πελάτη. Αν είναι κενή, δεν στέλνεται email.
  • Για την περίπτωση του complete, δημιουργούνται τιμολόγιο και αποστολή, με τις ίδιες προαιρετικές στήλες όπως στα invoiced και shipped.
  • Για την περίπτωση του canceled, δε χρειάζονται οι παραπάνω στήλες.

Παράδειγμα πίνακα κατάστασης παραγγελίας Magento

SCHEMA

CREATE TABLE `order_statuses` (
  `order_id` BIGINT UNSIGNED NOT NULL,
  `status` VARCHAR(255) NOT NULL,
  `carrier_code` VARCHAR(255) NULL,
  `carrier_title` VARCHAR(255) NULL,
  `track_number` VARCHAR(255) NULL,
  `notify_invoice` TINYINT(1) NULL,
  `notify_shipment` TINYINT(1) NULL,
  `created_at` TIMESTAMP NULL,
  `updated_at` TIMESTAMP NULL
);

DATA

order_id status carrier_code carrier_title track_number notify_invoice notify_shipment created_at updated_at
12345 invoiced NULL NULL NULL 1 NULL 2025-12-05 10:30:15 2025-12-05 10:30:15
12346 shipped acs ACS Courier ACS123456789 1 1 2025-12-05 11:45:22 2025-12-05 14:20:10
12347 complete elta ELTA Courier ELTA987654321 1 1 2025-12-04 09:15:33 2025-12-05 16:50:45
12348 canceled NULL NULL NULL NULL NULL 2025-12-05 08:20:00 2025-12-05 08:25:18

Κατάσταση παραγγελιών WooCommerce

Η στήλη status μπορεί να έχει μόνο μία από τις εξής τιμές: shipped, complete, canceled.

  • Για την περίπτωση του shipped, αν οι στήλες shipping_method_title και shipping_method_id είναι συμπληρωμένες θα ενημερώνεται το shipping line της παραγγελίας. Αν η στήλη tracking_number είναι συμπληρωμένη θα ενημερώνονται τα metadata με κλειδί tracking_number.
  • Για την περίπτωση του complete, ισχύει ό,τι και στο shipped, με τη διαφορά ότι η κατάσταση της παραγγελίας αλλάζει σε completed.
  • Για την περίπτωση του canceled, δεν απαιτούνται επιπλέον στήλες.

Παράδειγμα πίνακα κατάστασης παραγγελίας WooCommerce

SCHEMA

CREATE TABLE `order_statuses` (
  `order_id` BIGINT UNSIGNED NOT NULL,
  `status` VARCHAR(255) NOT NULL,
  `shipping_method_id` VARCHAR(255) NULL,
  `shipping_method_title` VARCHAR(255) NULL,
  `tracking_number` VARCHAR(255) NULL,
  `created_at` TIMESTAMP NULL,
  `updated_at` TIMESTAMP NULL
);

DATA

order_id status shipping_method_id shipping_method_title tracking_number created_at updated_at
5679 shipped flat_rate Flat Rate Shipping ACS123456789 2025-12-05 11:45:22 2025-12-05 14:20:10
5680 complete free_shipping Free Shipping ELTA987654321 2025-12-04 09:15:33 2025-12-05 16:50:45
5681 canceled NULL NULL NULL 2025-12-05 08:20:00 2025-12-05 08:25:18