# Εισαγωγές προϊόντων προς Magento

### `attribute_set` (string, προαιρετικό)

Προσδιορίζει το σύνολο χαρακτηριστικών που είναι διαθέσιμα για το προϊόν.
Μπορεί να είναι μια τιμή από τα mappings, διαφορετικά πρέπει να ταιριάζει με το όνομα του συνόλου χαρακτηριστικών.
Αν ένα προϊόν δεν έχει `attribute_set`, θα χρησιμοποιηθεί το προεπιλεγμένο σύνολο χαρακτηριστικών από τις ρυθμίσεις.

### `backorders` (integer, προαιρετικό)

Προσδιορίζει αν το προϊόν έχει backorders και αν ο πελάτης μπορεί να ειδοποιηθεί. Οι αποδεκτές τιμές είναι `0`, `1` ή `2`.
Τιμές:

0. Χωρίς backorders
1. Επιτρέπονται backorders
2. Επιτρέπονται backorders και ειδοποίηση πελάτη

### `category_ids` (string, προαιρετικό)

Μπορεί να έχει μία ή περισσότερες κατηγορίες, διαχωρισμένες με `,` (κόμμα), `;` (ερωτηματικό) ή `|` (κάθετος).
Το διαχωριστικό ορίζεται στις ρυθμίσεις κατηγοριών και είναι ένα για όλες τις εισαγωγές. Το προεπιλεγμένο είναι το `,` (κόμμα).
Κάθε κατηγορία μπορεί να αντιστοιχηθεί με άλλο όνομα στα mappings, διαφορετικά πρέπει να ταιριάζει με το όνομα της κατηγορίας στο Magento.
Οι υποκατηγορίες διαχωρίζονται με το σύμβολο `>` (μεγαλύτερο από).
Π.χ. `Αντρικά > Μπλούζες > T-Shirts, Αντρικά > Προσφορές`.

### `code` (string, προαιρετικό)

Ο κωδικός του προϊόντος για να ομαδοποιηθούν simple προϊόντα σε configurable προϊόντα.
Π.χ. αν δύο προϊόντα έχουν το ίδιο `code`, θα εισαχθούν ως παιδιά του ίδιου configurable προϊόντος.
Αν ένα προϊόν δεν έχει `code`, θα εισαχθεί ως simple προϊόν.
Αν ένα προϊόν έχει `code` ίδιο με το `sku` του, θα εισαχθεί ως simple προϊόν.

### `crosssell_skus` (string, προαιρετικό)

Ένα ή περισσότερα SKU διαχωρισμένα με `,` (κόμμα).
Περιλαμβάνει το SKU κάθε προϊόντος που έχει προσδιοριστεί ως cross-sell.
Π.χ. `HERO-S,ORION-S,AERO-S`.

### `media_gallery` (string, προαιρετικό)

Μία ή περισσότερες εικόνες ή video διαχωρισμένα με `,` (κόμμα).
Κάθε εικόνα πρέπει να είναι μια έγκυρη διεύθυνση URL, π.χ. `https://www.example.com/product.jpg`.
Κάθε video πρέπει να είναι μια έγκυρη διεύθυνση URL από το YouTube, π.χ. `https://www.youtube.com/watch?v=dQw4w9WgXcQ`.

### `min_sale_qty` (float, προαιρετικό)

Η ελάχιστη ποσότητα του προϊόντος που δέχεται το καλάθι, το `Minimum Qty Allowed in Shopping Cart` του Magento.
Μια τιμή `1` ή μικρότερη (π.χ. `0`) σημαίνει ότι δεν υπάρχει ελάχιστη ποσότητα, οπότε ισχύει η ρύθμιση του Magento.
Ισχύει για το simple προϊόν της γραμμής, ακόμη κι αν είναι παιδί ενός configurable προϊόντος, γιατί το Magento ελέγχει την ποσότητα στο παιδί.
Αν ένα προϊόν δεν έχει `min_sale_qty`, θα χρησιμοποιηθεί η προεπιλεγμένη τιμή από τις ρυθμίσεις, αν υπάρχει.
Το σύμβολο διαχωρισμού δεκαδικών μπορεί να είναι `.` (τελεία) ή `,` (υποδιαστολή).

### `name` (string, απαραίτητο)

Το όνομα του προϊόντος. Είναι απαραίτητο για τη δημιουργία του προϊόντος, αλλά προαιρετικό για την ενημέρωση ενός υπάρχοντος προϊόντος.

### `price` (float, απαραίτητο)

Το σύμβολο διαχωρισμού δεκαδικών μπορεί να είναι `.` (τελεία) ή `,` (υποδιαστολή).

### `qty_increments` (float, προαιρετικό)

Το βήμα της ποσότητας στο καλάθι, το `Qty Increments` του Magento: η ποσότητα πρέπει να είναι πολλαπλάσιο αυτής της τιμής.
Π.χ. με `6`, το καλάθι δέχεται `6`, `12`, `18` κ.λπ.
Μια τιμή `1` ή μικρότερη (π.χ. `0`) σημαίνει ότι δεν υπάρχει βήμα, οπότε ισχύει η ρύθμιση του Magento.
Ισχύει για το simple προϊόν της γραμμής, ακόμη κι αν είναι παιδί ενός configurable προϊόντος, γιατί το Magento ελέγχει την ποσότητα στο παιδί.
Αν ένα προϊόν δεν έχει `qty_increments`, θα χρησιμοποιηθεί η προεπιλεγμένη τιμή από τις ρυθμίσεις, αν υπάρχει.
Το σύμβολο διαχωρισμού δεκαδικών μπορεί να είναι `.` (τελεία) ή `,` (υποδιαστολή).

### `quantity` (float, απαραίτητο)

Η διαθέσιμη ποσότητα του προϊόντος.
Το σύμβολο διαχωρισμού δεκαδικών μπορεί να είναι `.` (τελεία) ή `,` (υποδιαστολή).

### `related_skus` (string, προαιρετικό)

Ένα ή περισσότερα SKU διαχωρισμένα με `,` (κόμμα).
Περιλαμβάνει το SKU κάθε προϊόντος που έχει προσδιοριστεί ως related.
Π.χ. `HELIOS-S,ATLAS-S`.

### `sku` (string, απαραίτητο)

Προσδιορίζει το SKU του προϊόντος που θα εισαχθεί. Πρέπει να είναι μοναδικό για κάθε προϊόν.

### `special_price` (float, προαιρετικό)

Η τιμή έκπτωσης του προϊόντος.
Το σύμβολο διαχωρισμού δεκαδικών μπορεί να είναι `.` (τελεία) ή `,` (υποδιαστολή).
Αν είναι κενό, μηδέν, ή ίσο με το πεδίο `price`, τότε θα αγνοηθεί.
Χρησιμοποιείται μόνο κατά τη δημιουργία του προϊόντος. Για την ενημέρωση της τιμής έκπτωσης σε υπάρχοντα προϊόντα χρησιμοποιείται η [εισαγωγή τιμών](https://app.sebastien.gr/docs/magento/prices).

### `status` (boolean, απαραίτητο)

Προσδιορίζει αν το προϊόν είναι ενεργό ή απενεργοποιημένο.
Οι αποδεκτές τιμές είναι: `1`, `true`, `on`, `yes`, και `0`, `false`, `off`, `no`.
Μπορούν να οριστούν διαφορετικές αποδεκτές τιμές μέσω των mappings.

### `upsell_skus` (string, προαιρετικό)

Ένα ή περισσότερα SKU διαχωρισμένα με `,` (κόμμα).
Περιλαμβάνει το SKU κάθε προϊόντος που έχει προσδιοριστεί ως upsell.
Π.χ. `GEO-S,ZEUS-S`.

### `visibility` (integer, προαιρετικό)

Προσδιορίζει αν το προϊόν είναι ορατό στον κατάλογο και διαθέσιμο για αναζήτηση. Οι αποδεκτές τιμές είναι `1`, `2`, `3` ή `4`.
Τα simple προϊόντα που ανήκουν σε configurable προϊόντα δεν είναι ορατά από μόνα τους.
Τιμές:

1. Δεν είναι ορατό από μόνο του
2. Ορατό στον κατάλογο
3. διαθέσιμο για αναζήτηση
4. Ορατό στον κατάλογο και διαθέσιμο για αναζήτηση

### `website_ids` (string, προαιρετικό)

Ένα ή περισσότερα website ID διαχωρισμένα με `,` (κόμμα).
Για εγκαταστάσεις Magento με πολλαπλά websites, προσδιορίζει τα websites όπου το προϊόν είναι διαθέσιμο. Αν είναι κενό, το προϊόν είναι διαθέσιμο σε όλα τα websites.

### `weight` (float, προαιρετικό)

Το βάρος του προϊόντος.
Το σύμβολο διαχωρισμού δεκαδικών μπορεί να είναι `.` (τελεία) ή `,` (υποδιαστολή).

Οποιοδήποτε άλλο πεδίο θα χρησιμοποιηθεί για να ενημερώσει τα custom attributes.
Για παράδειγμα το πεδίο `color` θα αντιστοιχεί στο attribute `color` στο Magento.
Αν ένα attribute έχει κάποιο mapping, τότε θα χρησιμοποιηθεί για να αντιστοιχίσει το πεδίο με το attribute.
Για παράδειγμα, το πεδίο `chroma` μπορεί να αντιστοιχιστεί με το attribute `color` στο Magento.
Το περιεχόμενο του πεδίου θα μετατραπεί σύμφωνα με τον τύπο του attribute:

- Ημερομηνία: `YYYY-MM-DD`
- Ημερομηνία και Ώρα: `YYYY-MM-DD hh:mm:ss`
- Ναι/Όχι: `1`, `true`, `on`, `yes`, and `0`, `false`, `off`, `no`.
- Πολλαπλή Επιλογή: Μία ή περισσότερες επιλογές του χαρακτηριστικού ή mappings που αντιστοιχούν στις επιλογές, διαχωρισμένες με `,` (κόμμα).
- Dropdown: Μία από τις επιλογές του χαρακτηριστικού ή mappings που αντιστοιχούν στις επιλογές.
- Τιμή: Το σύμβολο διαχωρισμού δεκαδικών μπορεί να είναι `.` (τελεία) ή `,` (υποδιαστολή).

### Παράδειγμα simple προϊόντος

#### RESPONSE

```json
[
  {
    "attribute_set": "Bag",
    "backorders": 0,
    "category_ids": "Αξεσουάρ > Τσάντες, Αξεσουάρ > Προσφορές",
    "color": "Μαύρο",
    "description": "The Fusion Backpack has room for everything you need on the go.",
    "media_gallery": "https://example.com/fusion-1.jpg,https://example.com/fusion-2.jpg",
    "name": "Fusion Backpack",
    "price": 59.00,
    "quantity": 25,
    "sku": "FUSION-BACKPACK",
    "special_price": 49.00,
    "status": true,
    "visibility": 4,
    "website_ids": "0,1",
    "weight": 1.2
  }
]
```

### Παράδειγμα configurable προϊόντος με simple προϊόντα

#### RESPONSE

```json
[
  {
    "attribute_set": "Top",
    "backorders": 1,
    "category_ids": "Αντρικά > Μπλούζες > T-Shirts, Αντρικά > Προσφορές",
    "code": "CHAMP",
    "crosssell_skus": "HERO-S,ORION-S,AERO-S",
    "description": "The Champ Tee keeps you cool and dry while you do your thing.",
    "media_gallery": "https://example.com/champ-1.jpg,https://example.com/champ-2.jpg",
    "name": "Champ Tee",
    "price": 25.00,
    "quantity": 100,
    "related_skus": "HELIOS-S,ATLAS-S",
    "size": "S",
    "sku": "CHAMP-S",
    "special_price": 19.99,
    "status": true,
    "upsell_skus": "GEO-S,ZEUS-S",
    "visibility": 4,
    "website_ids": "0,1",
    "weight": 0.5
  },
  {
    "attribute_set": "Top",
    "backorders": 1,
    "category_ids": "Αντρικά > Μπλούζες > T-Shirts, Αντρικά > Προσφορές",
    "code": "CHAMP",
    "crosssell_skus": "HERO-S,ORION-S,AERO-S",
    "description": "The Champ Tee keeps you cool and dry while you do your thing.",
    "media_gallery": "https://example.com/champ-1.jpg,https://example.com/champ-2.jpg",
    "name": "Champ Tee",
    "price": 25.00,
    "quantity": 100,
    "related_skus": "HELIOS-S,ATLAS-S",
    "size": "Μ",
    "sku": "CHAMP-Μ",
    "special_price": 19.99,
    "status": true,
    "upsell_skus": "GEO-S,ZEUS-S",
    "visibility": 4,
    "website_ids": "0,1",
    "weight": 0.5
  }
]
```

## Τιμές ανά store view

Για εγκαταστάσεις Magento με πολλαπλά store views (π.χ. ελληνικά και αγγλικά), τα πεδία `name`, `status`, `weight` και τα custom attributes μπορούν να έχουν διαφορετική τιμή σε κάθε store view.

Για κάθε store view στέλνεται ένα επιπλέον πεδίο, π.χ. `name_en` ή `description_en`. Μέσα από το διαχειριστικό του Sébastien ορίζεται mapping του attribute για το συγκεκριμένο store view, π.χ. το attribute `name` αντιστοιχίζεται με το πεδίο `name_en` για το store view `en`.

Τα πεδία ανά store view αναγνωρίζονται μόνο μέσω mapping. Το περιεχόμενό τους μετατρέπεται με τον ίδιο τρόπο όπως στα πεδία χωρίς store view.

Αν ένα πεδίο για κάποιο store view λείπει ή είναι κενό, τότε δεν ενημερώνεται η τιμή του store view. Σε νέα προϊόντα το store view χρησιμοποιεί την προεπιλεγμένη τιμή, ενώ σε υπάρχοντα προϊόντα διατηρείται η τιμή που υπάρχει ήδη στο store view.

Τα υπόλοιπα πεδία (π.χ. `price`, `quantity`, `category_ids`, `media_gallery`, `visibility`) έχουν μία τιμή για όλα τα store views.

### Παράδειγμα προϊόντος με τιμές για το store view en

#### RESPONSE

```json
[
  {
    "description": "Το Champ Tee σας κρατά δροσερούς και στεγνούς.",
    "description_en": "The Champ Tee keeps you cool and dry while you do your thing.",
    "name": "Μπλούζα Champ",
    "name_en": "Champ Tee",
    "price": 25.00,
    "quantity": 100,
    "sku": "CHAMP-S",
    "status": true,
    "status_en": false
  }
]
```
