Remove temporary Swagger index HTML file and add script to fix GS1 brand names for all products in the database.

This commit is contained in:
2026-02-26 20:16:42 +01:00
parent 1b3ac356af
commit ab26debbb8
14 changed files with 217 additions and 43536 deletions

View File

@@ -208,8 +208,8 @@
},
"TODO.md": {
"type": "-",
"size": 570,
"lmtime": 1771957679996,
"size": 1223,
"lmtime": 1771975661209,
"modified": false
}
},
@@ -3035,6 +3035,12 @@
"lmtime": 1771966012602,
"modified": false
},
"tmp_gs1_excel_extract.txt": {
"type": "-",
"size": 33407,
"lmtime": 1771966910045,
"modified": false
},
"tmp_gs1_test.php": {
"type": "-",
"size": 3392,
@@ -3064,12 +3070,6 @@
"size": 1136,
"lmtime": 1771963925300,
"modified": false
},
"tmp_gs1_excel_extract.txt": {
"type": "-",
"size": 33407,
"lmtime": 1771966910045,
"modified": false
}
}
},

View File

@@ -1,21 +0,0 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>MojeGS1 API</title>
<link rel="stylesheet" type="text/css" href="./swagger-ui.css">
<link rel="stylesheet" type="text/css" href="./index.css">
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
</head>
<body>
<div id="swagger-ui"></div>
<script src="./swagger-ui-bundle.js" charset="utf-8"></script>
<script src="./swagger-ui-standalone-preset.js" charset="utf-8"></script>
<script src="index.js" charset="utf-8"></script>
</body>
</html>

190
bin/fix_gs1_brand.php Normal file
View File

@@ -0,0 +1,190 @@
<?php
declare(strict_types=1);
/**
* Fix GS1 brandName for all products.
*
* Fetches all products from MojeGS1 API, finds those with wrong brandName,
* and updates them to the correct brand.
*
* Usage:
* php bin/fix_gs1_brand.php [correct_brand]
*
* Default correct brand: pomysloweprezenty.pl
*/
$correctBrand = $argv[1] ?? 'pomysloweprezenty.pl';
// --- Load credentials from .env + DB ---
$login = '';
$password = '';
$envFile = dirname(__DIR__) . '/.env';
$env = [];
if (is_file($envFile)) {
foreach (file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
$line = trim($line);
if ($line === '' || $line[0] === '#') {
continue;
}
$pos = strpos($line, '=');
if ($pos === false) {
continue;
}
$env[trim(substr($line, 0, $pos))] = trim(trim(substr($line, $pos + 1)), "\"'");
}
}
try {
$pdo = new PDO(
sprintf(
'mysql:host=%s;port=%s;dbname=%s;charset=utf8mb4',
$env['DB_HOST'] ?? '127.0.0.1',
$env['DB_PORT'] ?? '3306',
$env['DB_DATABASE'] ?? 'orderpro'
),
$env['DB_USERNAME'] ?? 'root',
$env['DB_PASSWORD'] ?? '',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$stmt = $pdo->prepare('SELECT setting_key, setting_value FROM app_settings WHERE setting_key IN (?, ?)');
$stmt->execute(['gs1_api_login', 'gs1_api_password']);
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
if ($row['setting_key'] === 'gs1_api_login') {
$login = (string) $row['setting_value'];
}
if ($row['setting_key'] === 'gs1_api_password') {
$password = (string) $row['setting_value'];
}
}
} catch (Throwable $e) {
fwrite(STDERR, "Blad DB: " . $e->getMessage() . "\n");
}
if ($login === '' || $password === '') {
fwrite(STDERR, "Brak credentials GS1. Sprawdz ustawienia w bazie.\n");
exit(1);
}
echo "Correct brand: {$correctBrand}\n";
echo "Pobieram produkty z GS1...\n\n";
// --- Fetch all products ---
$allProducts = [];
$page = 1;
$limit = 100;
do {
$url = "https://mojegs1.pl/api/v2/products?page[offset]={$page}&page[limit]={$limit}&sort=name";
$response = gs1Request('GET', $url, $login, $password);
if ($response['status'] < 200 || $response['status'] >= 300) {
fwrite(STDERR, "Blad pobierania listy (HTTP {$response['status']}): {$response['body']}\n");
exit(1);
}
$decoded = json_decode($response['body'], true);
$items = is_array($decoded['data'] ?? null) ? $decoded['data'] : [];
$total = (int) ($decoded['meta']['record-count'] ?? 0);
foreach ($items as $item) {
$allProducts[] = $item;
}
echo " Strona {$page}: pobrano " . count($items) . " produktow (lacznie: " . count($allProducts) . " / {$total})\n";
$page++;
} while (count($items) >= $limit);
echo "\nLacznie pobrano: " . count($allProducts) . " produktow\n\n";
// --- Find and fix products with wrong brand ---
$updated = 0;
$skipped = 0;
$errors = 0;
foreach ($allProducts as $item) {
$gtin = (string) ($item['id'] ?? '');
$attrs = is_array($item['attributes'] ?? null) ? $item['attributes'] : [];
$currentBrand = (string) ($attrs['brandName'] ?? '');
if ($gtin === '') {
continue;
}
if ($currentBrand === $correctBrand) {
$skipped++;
continue;
}
echo " [{$gtin}] brandName: \"{$currentBrand}\" -> \"{$correctBrand}\"";
$putUrl = "https://mojegs1.pl/api/v2/products/" . urlencode($gtin);
$payload = json_encode([
'data' => [
'type' => 'products',
'id' => $gtin,
'attributes' => [
'brandName' => $correctBrand,
],
],
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$putResponse = gs1Request('PUT', $putUrl, $login, $password, $payload);
if ($putResponse['status'] >= 200 && $putResponse['status'] < 300) {
echo " OK\n";
$updated++;
} else {
echo " BLAD (HTTP {$putResponse['status']}): " . mb_substr($putResponse['body'], 0, 200) . "\n";
$errors++;
}
}
echo "\n--- Podsumowanie ---\n";
echo "Zaktualizowano: {$updated}\n";
echo "Pominieto (juz OK): {$skipped}\n";
echo "Bledy: {$errors}\n";
// --- HTTP helper ---
function gs1Request(string $method, string $url, string $login, string $password, ?string $body = null): array
{
$curl = curl_init($url);
if ($curl === false) {
return ['status' => 0, 'body' => 'cURL init failed', 'error' => 'init'];
}
$headers = ['Accept: application/json'];
if ($body !== null) {
$headers[] = 'Content-Type: application/json';
}
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_USERPWD => $login . ':' . $password,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_TIMEOUT => 30,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 5,
CURLOPT_CUSTOMREQUEST => $method,
]);
if ($body !== null) {
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
}
$responseBody = curl_exec($curl);
$httpCode = (int) curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
$error = curl_error($curl);
curl_close($curl);
return [
'status' => $httpCode,
'body' => is_string($responseBody) ? $responseBody : '',
'error' => $error,
];
}

View File

@@ -1,159 +0,0 @@
<?php
declare(strict_types=1);
header('Content-Type: text/plain; charset=utf-8');
$envFile = dirname(__DIR__) . '/.env';
$env = [];
if (is_file($envFile)) {
foreach (file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
$line = trim($line);
if ($line === '' || $line[0] === '#') continue;
$pos = strpos($line, '=');
if ($pos === false) continue;
$env[trim(substr($line, 0, $pos))] = trim(trim(substr($line, $pos + 1)), "\"'");
}
}
try {
$pdo = new PDO(
sprintf('mysql:host=%s;port=%s;dbname=%s;charset=utf8mb4',
$env['DB_HOST'] ?? '127.0.0.1', $env['DB_PORT'] ?? '3306', $env['DB_DATABASE'] ?? 'orderpro'),
$env['DB_USERNAME'] ?? 'root', $env['DB_PASSWORD'] ?? '',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$s = $pdo->prepare('SELECT setting_key, setting_value FROM app_settings WHERE setting_key LIKE ?');
$s->execute(['gs1_%']);
$cfg = [];
foreach ($s->fetchAll(PDO::FETCH_ASSOC) as $r) $cfg[$r['setting_key']] = $r['setting_value'];
} catch (Throwable $e) { die('DB: ' . $e->getMessage()); }
$login = $cfg['gs1_api_login'] ?? '';
$password = $cfg['gs1_api_password'] ?? '';
if ($login === '' || $password === '') die("Brak credentials\n");
function gs1v(string $method, string $url, ?string $body, string $login, string $pw, array $extraHeaders = []): array {
$curl = curl_init($url);
$h = ['Accept: application/json'];
if ($body !== null) $h[] = 'Content-Type: application/json';
$h = array_merge($h, $extraHeaders);
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $h,
CURLOPT_USERPWD => $login . ':' . $pw, CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_TIMEOUT => 30, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_VERBOSE => true,
]);
// Capture verbose output
$verbose = fopen('php://temp', 'w+');
curl_setopt($curl, CURLOPT_STDERR, $verbose);
if ($body !== null) curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
$resp = curl_exec($curl);
$code = (int) curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
fclose($verbose);
return [$code, is_string($resp) ? $resp : '', $verboseLog];
}
$base = 'https://mojegs1.pl/api/v2';
$jf = JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES;
echo "=== GS1 Diagnostic v4 ===\n\n";
// Step 1: GET existing product
echo "--- Step 1: GET existing product ---\n";
[$c, $b, $v] = gs1v('GET', $base . '/products?page[offset]=1&page[limit]=1', null, $login, $password);
$d = json_decode($b, true);
$existing = $d['data'][0] ?? null;
if (!$existing) die("Nie mozna pobrac produktu\n");
$exGtin = $existing['id'];
$exAttrs = $existing['attributes'];
echo "GTIN: {$exGtin}\n";
echo "Status: {$exAttrs['status']}\n\n";
// Step 2: Verbose PUT - minimal + subBrandName + name
echo "--- Step 2: Verbose PUT (minimal + name + subBrandName) ---\n";
$attrs2 = [
'brandName' => $exAttrs['brandName'],
'subBrandName' => $exAttrs['brandName'],
'commonName' => $exAttrs['commonName'],
'name' => $exAttrs['name'] ?? ($exAttrs['brandName'] . ' ' . $exAttrs['commonName']),
'gpcCode' => $exAttrs['gpcCode'],
'netContent' => $exAttrs['netContent'],
'netContentUnit' => $exAttrs['netContentUnit'],
'status' => $exAttrs['status'],
'targetMarket' => $exAttrs['targetMarket'],
'descriptionLanguage' => $exAttrs['descriptionLanguage'],
];
$payload2 = json_encode(['data' => ['type' => 'products', 'id' => $exGtin, 'attributes' => $attrs2]], $jf);
echo "REQ: {$payload2}\n";
[$c, $b, $v] = gs1v('PUT', $base . '/products/' . $exGtin, $payload2, $login, $password);
echo "HTTP {$c}: {$b}\n";
echo "VERBOSE:\n{$v}\n\n";
// Step 3: Try PATCH instead of PUT
echo "--- Step 3: PATCH instead of PUT ---\n";
[$c, $b, $v] = gs1v('PATCH', $base . '/products/' . $exGtin, $payload2, $login, $password);
echo "HTTP {$c}: {$b}\n\n";
// Step 4: Try gpcCode as string
echo "--- Step 4: gpcCode as string ---\n";
$attrs4 = $attrs2;
$attrs4['gpcCode'] = (string) $attrs4['gpcCode'];
$payload4 = json_encode(['data' => ['type' => 'products', 'id' => $exGtin, 'attributes' => $attrs4]], $jf);
echo "REQ: {$payload4}\n";
[$c, $b, $v] = gs1v('PUT', $base . '/products/' . $exGtin, $payload4, $login, $password);
echo "HTTP {$c}: {$b}\n\n";
// Step 5: Try application/vnd.api+json for both Content-Type and Accept
echo "--- Step 5: vnd.api+json content type ---\n";
$curl5 = curl_init($base . '/products/' . $exGtin);
curl_setopt_array($curl5, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/vnd.api+json', 'Accept: application/vnd.api+json'],
CURLOPT_USERPWD => $login . ':' . $password, CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_TIMEOUT => 30, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_POSTFIELDS => $payload2,
]);
$resp5 = curl_exec($curl5);
$code5 = (int) curl_getinfo($curl5, CURLINFO_RESPONSE_CODE);
curl_close($curl5);
echo "HTTP {$code5}: {$resp5}\n\n";
// Step 6: Try with netContent as float explicitly
echo "--- Step 6: netContent as float 1.0 ---\n";
$attrs6 = $attrs2;
$attrs6['netContent'] = 1.0;
$payload6 = json_encode(['data' => ['type' => 'products', 'id' => $exGtin, 'attributes' => $attrs6]], $jf);
// Force 1.0 in JSON (json_encode may output 1 for 1.0)
$payload6 = str_replace('"netContent":1,', '"netContent":1.0,', $payload6);
echo "REQ: {$payload6}\n";
[$c, $b, $v] = gs1v('PUT', $base . '/products/' . $exGtin, $payload6, $login, $password);
echo "HTTP {$c}: {$b}\n\n";
// Step 7: Try completely empty attributes
echo "--- Step 7: Empty attributes ---\n";
$payload7 = json_encode(['data' => ['type' => 'products', 'id' => $exGtin, 'attributes' => new \stdClass()]], $jf);
echo "REQ: {$payload7}\n";
[$c, $b, $v] = gs1v('PUT', $base . '/products/' . $exGtin, $payload7, $login, $password);
echo "HTTP {$c}: {$b}\n\n";
// Step 8: Binary search - ONE field at a time
echo "--- Step 8: Single field tests ---\n";
$singleFields = [
'brandName' => $exAttrs['brandName'],
'commonName' => $exAttrs['commonName'],
'gpcCode' => $exAttrs['gpcCode'],
'netContent' => $exAttrs['netContent'],
'netContentUnit' => $exAttrs['netContentUnit'],
'status' => $exAttrs['status'],
'targetMarket' => $exAttrs['targetMarket'],
'descriptionLanguage' => $exAttrs['descriptionLanguage'],
];
foreach ($singleFields as $key => $val) {
$p = json_encode(['data' => ['type' => 'products', 'id' => $exGtin, 'attributes' => [$key => $val]]], $jf);
[$c, $b, $v] = gs1v('PUT', $base . '/products/' . $exGtin, $p, $login, $password);
echo " {$key} => HTTP {$c}\n";
}
echo "\n=== DONE ===\n";

View File

@@ -9,6 +9,22 @@
<?php $importWarning = is_array($productImportWarning ?? null) ? $productImportWarning : null; ?>
<?php $productIdValue = (int) ($productId ?? 0); ?>
<?php if (!empty($errorMessage)): ?>
<section class="card mt-16">
<div class="alert alert--danger" role="alert">
<?= $e((string) $errorMessage) ?>
</div>
</section>
<?php endif; ?>
<?php if (!empty($successMessage)): ?>
<section class="card mt-16">
<div class="alert alert--success" role="status">
<?= $e((string) $successMessage) ?>
</div>
</section>
<?php endif; ?>
<section class="card mt-16">
<div class="product-tabs-nav">
<span class="btn btn--primary"><?= $e($t('products.tabs.details')) ?></span>

View File

@@ -36,7 +36,7 @@ class GS1Service
$login = $this->appSettings->get('gs1_api_login', '');
$password = $this->appSettings->get('gs1_api_password', '');
$prefix = $this->appSettings->get('gs1_prefix', '590532390');
$defaultBrand = $this->appSettings->get('gs1_default_brand', 'marianek.pl');
$defaultBrand = $this->appSettings->get('gs1_default_brand', 'pomysloweprezenty.pl');
$defaultGpcCode = $this->appSettings->getInt('gs1_default_gpc_code', 10008365);
if ($login === '' || $password === '') {
@@ -53,7 +53,6 @@ class GS1Service
$client->upsertProduct($newEan, [
'brandName' => $defaultBrand,
'subBrandName' => $defaultBrand,
'commonName' => $commonName,
'gpcCode' => $defaultGpcCode,
'netContent' => 1,

View File

@@ -280,6 +280,8 @@ final class ProductsController
'productImages' => $productImages,
'productVariants' => $productVariants,
'productImportWarning' => $importWarning,
'errorMessage' => (string) Flash::get('products_error', ''),
'successMessage' => (string) Flash::get('products_success', ''),
], 'layouts/app');
return Response::html($html);

View File

@@ -1,74 +0,0 @@
/* Source: https://gist.github.com/lamberta/3768814
* Parse a string function definition and return a function object. Does not use eval.
* @param {string} str
* @return {function}
*
* Example:
* var f = function (x, y) { return x * y; };
* var g = parseFunction(f.toString());
* g(33, 3); //=> 99
*/
function parseFunction(str) {
if (!str) return void (0);
var fn_body_idx = str.indexOf('{'),
fn_body = str.substring(fn_body_idx + 1, str.lastIndexOf('}')),
fn_declare = str.substring(0, fn_body_idx),
fn_params = fn_declare.substring(fn_declare.indexOf('(') + 1, fn_declare.lastIndexOf(')')),
args = fn_params.split(',');
args.push(fn_body);
function Fn() {
return Function.apply(this, args);
}
Fn.prototype = Function.prototype;
return new Fn();
}
window.onload = function () {
var configObject = JSON.parse('{"urls":[{"url":"/api/v2/swagger/external-api/swagger.json","name":"External API v2"}],"deepLinking":false,"persistAuthorization":false,"displayOperationId":false,"defaultModelsExpandDepth":1,"defaultModelExpandDepth":1,"defaultModelRendering":"example","displayRequestDuration":false,"docExpansion":"list","showExtensions":false,"showCommonExtensions":false,"supportedSubmitMethods":["get","put","post","delete","options","head","patch","trace"],"tryItOutEnabled":false}');
var oauthConfigObject = JSON.parse('{"scopeSeparator":" ","scopes":[],"useBasicAuthenticationWithAccessCodeGrant":false,"usePkceWithAuthorizationCodeGrant":false}');
// Workaround for https://github.com/swagger-api/swagger-ui/issues/5945
configObject.urls.forEach(function (item) {
if (item.url.startsWith("http") || item.url.startsWith("/")) return;
item.url = window.location.href.replace("index.html", item.url).split('#')[0];
});
// If validatorUrl is not explicitly provided, disable the feature by setting to null
if (!configObject.hasOwnProperty("validatorUrl"))
configObject.validatorUrl = null
// If oauth2RedirectUrl isn't specified, use the built-in default
if (!configObject.hasOwnProperty("oauth2RedirectUrl"))
configObject.oauth2RedirectUrl = (new URL("oauth2-redirect.html", window.location.href)).href;
// Apply mandatory parameters
configObject.dom_id = "#swagger-ui";
configObject.presets = [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset];
configObject.layout = "StandaloneLayout";
// Parse and add interceptor functions
var interceptors = JSON.parse('{}');
if (interceptors.RequestInterceptorFunction)
configObject.requestInterceptor = parseFunction(interceptors.RequestInterceptorFunction);
if (interceptors.ResponseInterceptorFunction)
configObject.responseInterceptor = parseFunction(interceptors.ResponseInterceptorFunction);
if (configObject.plugins) {
configObject.plugins = configObject.plugins.map(eval);
}
// Begin Swagger UI call region
const ui = SwaggerUIBundle(configObject);
ui.initOAuth(oauthConfigObject);
// End Swagger UI call region
window.ui = ui
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,125 +0,0 @@
FILE: D:\temp\Rejestr numerów Project-Pro Jacek Pyziak 2026-02-24 21_58_10.xlsx
SHEETS:
- MojeGS1 (xl/worksheets/sheet1.xml)
- Objaśnienia (xl/worksheets/sheet2.xml)
- Rodzaj produktu (xl/worksheets/sheet3.xml)
- Jednostki miary (xl/worksheets/sheet4.xml)
- Klasyfikacja GPC (xl/worksheets/sheet5.xml)
- Status produktu na rynku (xl/worksheets/sheet6.xml)
[MojeGS1]
HEADER COUNT: 24
A: Rodzaj produktu
B: Pełna, ustandaryzowana nazwa produktu.
C: GTIN
D: Wiodący język wprowadzanych danych produktowych (nazwy, opisu, zdjęcia)
E: Marka
F: Podmarka
G: Nazwa zwyczajowa
H: Wariant
I: Zawartość netto produktu
J: Jednostka
K: Zawartość netto produktu (2)
L: Jednostka (2)
M: Zawartość netto produktu (3)
N: Jednostka (3)
O: Klasyfikacja GPC
P: 🛈
Q: Kraj sprzedaży
R: Status produktu na rynku
S: Adres strony WWW produktu
T: Link do zdjęcia produktu
U: Opis produktu
V: Symbol wewnętrzny
W: Liczba sztuk produktu w opakowaniu
X: Jednostka zawartości, która jest zmienna
ROW 3:
A Rodzaj produktu: Produkt do sprzedaży detalicznej/online (GTIN-13, GTIN-12, GTIN-8)
B Pełna, ustandaryzowana nazwa produktu.: marianek.pl Zawieszka z czerwoną kokardką Wzór 38
C GTIN: 5905316173903
D Wiodący język wprowadzanych danych produktowych (nazwy, opisu, zdjęcia): PL
E Marka: marianek.pl
G Nazwa zwyczajowa: Zawieszka z czerwoną kokardką
H Wariant: Wzór 38
I Zawartość netto produktu: 1
J Jednostka : szt
O Klasyfikacja GPC: 10001387
Q Kraj sprzedaży: PL
R Status produktu na rynku: Wycofany (już nie w sprzedaży)
T Link do zdjęcia produktu: https://mojegs1.pl/api/files/productimages/1f0228ca-2683-66f0-9e96-08e1a1d1e889/1f0228ca-332d-69f0-9193-5c9ff51b8b6b
ROW 4:
ROW 5:
[Rodzaj produktu]
1: Rodzaj produktu | Opis
2: Produkt do sprzedaży detalicznej/online (GTIN-13, GTIN-12, GTIN-8) | Produkt do sprzedaży detalicznej/online (GTIN-13, GTIN-12, GTIN-8): Opakowanie jednostkowe np. puszka napoju przeznaczone do sprzedaży detalicznej, w tym online (Amazon, eBay, Allegro lub inny marketplace).
3: Opakowanie zbiorcze do sprzedaży detalicznej/online (GTIN-13) | Opakowanie zbiorcze np. zgrzewka z 6 butelkami wody, przeznaczone do sprzedaży detalicznej, w tym online (Amazon, eBay, Allegro lub inny marketplace).
4: Opakowanie zbiorcze jednorodne do sprzedaży hurtowej (GTIN-14) | Opakowanie zbiorcze składające się z tych samych produktów identyfikowanych tym samym numerem GTIN np. karton zawierający 16 słoików dżemu jagodowego. Tak oznaczone opakowanie nie jest jednostką konsumencką (nie jest przeznaczone do sprzedaży detalicznej). Zastosowanie GTIN-14 wymaga odrębnych ustaleń z partnerami handlowymi.
5: Produkt o zmiennej ilości/masie w opakowaniach hurtowych (GTIN-14 z cyfrą wskaźnikową 9) | Numer GTIN-14 zaczynający się cyfrą wskaźnikową "9" służy do identyfikacji produktów o zmiennej ilości w opakowaniach hurtowych np. skrzynia zawierająca 10 główek kapusty, czy pojemnik z polędwicą sopocką. Należy pamiętać, że GTIN-14 z cyfrą wskaźnikową "9" nie jest przeznaczony do skanowania w punktach sprzedaży detalicznej i wymaga odrębnych ustaleń z partnerami handlowymi.
[Jednostki miary]
1: Opis jednostki | Jednostka
2: m (metr) | m
3: cm (centymetr) | cm
4: mm (milimetr) | mm
5: l (litr) | l
6: cl (centylitr) | cl
7: ml (mililitr) | ml
8: kg (kilogram) | kg
9: dkg (dekagram) | dkg
10: g (gram) | g
11: mg (miligram) | mg
12: szt (sztuka) | szt
13: m2 (metr kwadratowy) | m2
14: m3 (metr sześcienny) | m3
[Klasyfikacja GPC]
1: nr GPC - Brick Code | Opis [PL] | Opis [EN] | Obejmuje produkty | Nie obejmuje produktów
2: 10000002 | Owoce - Nieprzetworzone (mrożone) | Fruit - Unprepared/Unprocessed (Frozen) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana mrożonych owoców lub kombinacja owoców, które mogą być całe lub z pestką, pestkowane, siekane, wydrążone i/lub obrane, ale nie przeszły żadnych dalszych procesów produkcyjnych, takich jak reformowanie lub gotowanie, jednakże produkty te mogą być powlekane, w sosie, nadziewane lub wypełniane. Produkty te muszą być mrożone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak owoce przetworzone i oraz świeże i trwałe owoce nieprzetworzone. W szczególności nie obejmuje pomidorów.
3: 10000003 | Owoce - Nieprzetworzone (trwałe) | Fruit - Unprepared/Unprocessed (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana owoców lub kombinacja owoców, które mogą być całe lub z pestką, pestkowane, siekane, wydrążone i/lub obrane, ale nie przeszły żadnych dalszych procesów produkcyjnych, takich jak reformowanie, suszenie lub gotowanie, jednakże produkty te mogą być powlekane, w sosie, nadziewane lub wypełniane. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak owoce przetworzone i oraz świeże i mrożone owoce nieprzetworzone. W szczególności nie obejmuje pomidorów.
4: 10000005 | Warzywa - Nieprzetworzone (mrożone) | Vegetables - Unprepared/Unprocessed (Frozen) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana mrożonych warzyw, kombinacji warzyw lub warzyw owocowych, które mogą być całe, rozdrobnione, oczyszczone i przycięte, które nie przeszły przez dalsze procesy produkcyjne, takie jak reformowane, gotowane, suszone, solone lub wędzone, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. | Nie obejmuje produktów takich jak warzywa z dodatkiem ciasta lub ziaren, świeże i trwałe warzywa nieprzetworzone, wszystkie warzywa przetworzone. W szczególności nie obejmuje produktów, które mają dodane składniki, takie jak ryż, kuskus i makaron. Produkty te muszą być mrożone, aby wydłużyć ich przydatność do spożycia.
5: 10000006 | Warzywa - nieprzetworzone (trwałe) | Vegetables - Unprepared/Unprocessed (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana warzyw, kombinacji warzyw lub warzyw owocowych, które mogą być całe, rozdrobnione, oczyszczone i przycięte, które nie przeszły przez dalsze procesy produkcyjne, takie jak reformowane, gotowane, suszone, solone lub wędzone, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. | W szczególności nie obejmuje produktów, które mają dodane składniki, takie jak ryż, kuskus i makaron. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. Nie obejmuje produktów takich jak warzywa z dodatkiem ciasta lub ziaren, mrożone i świeże warzywa nieprzetworzone, wszystkie warzywa przetworzone.
6: 10000007 | Orzechy/nasiona - nieprzetworzone (łatwo psujące się) | Nuts/Seeds - Unprepared/Unprocessed (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana świeżych orzechów i nasion, które nie przeszły przez dalsze procesy produkcyjne, takie jak reformowane, suszone lub gotowane, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. Produkty te mogą/muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. Produkty obejmują orzechy i nasiona sprzedawane osobno lub w kombinacji. | Nie obejmuje produktów, takich jak orzechy i nasiona trwałe, orzechy i nasiona przetworzone oraz nasiona, owoce i orzechy i/lub mieszanki nasion.
7: 10000008 | Orzechy/nasiona - nieprzetworzone (w łupinie) | Nuts/Seeds - Unprepared/Unprocessed (In Shell) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana orzechów i nasion, które nie przeszły przez dalsze procesy produkcyjne, takie jak reformowanie, suszenie lub gotowanie, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. Produkty obejmują orzechy i nasiona sprzedawane osobno lub w kombinacji. | Nie obejmuje produktów, takich jak orzechy i nasiona przetworzone, mieszanki owoców, orzechów i/lub nasion.
8: 10000016 | Ryby - Przetworzone (łatwo psujące się) | Fish - Prepared/Processed (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana ryb lub kombinacja ryb, które przeszły przez dalsze procesy produkcyjne, takie jak reformowanie, suszenie, gotowanie lub solenie, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. | W szczególności nie obejmuje produktów, które mają dodane składniki, takie jak ryż, kuskus i makaron. Jednakże produkty mogą zawierać niewielką ilość warzyw, takich jak te w sosie lub nadzieniu/wypełnieniu. Produkty te muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. Nie obejmuje produktów takich jak ryby z dodatkiem warzyw, ciasta lub ziaren, mrożone i trwałe ryby przetworzone, wszystkie ryby nieprzetworzone.
9: 10000017 | Ryby - przetworzone (mrożone) | Fish - Prepared/Processed (Frozen) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana ryb lub kombinacja ryb, które przeszły przez dalsze procesy produkcyjne, takie jak reformowanie, suszenie, gotowanie lub solenie, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. | W szczególności nie obejmuje produktów, które mają dodane składniki, takie jak ryż, kuskus i makaron. Jednakże produkty mogą zawierać niewielką ilość warzyw, takich jak te w sosie lub nadzieniu/wypełnieniu. Produkty te muszą być mrożone, aby wydłużyć ich przydatność do spożycia. Nie obejmuje produktów takich jak ryby z dodatkiem warzyw, ciasta lub ziaren, trwałe i łatwo psujące się ryby przetworzone, wszystkie ryby nieprzetworzone.
10: 10000018 | Ryby - Przetworzone (trwałe) | Fish - Prepared/Processed (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako dowolna odmiana ryb lub kombinacja ryb, które przeszły przez dalsze procesy produkcyjne, takie jak reformowanie, suszenie, gotowanie lub solenie, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. | W szczególności nie obejmuje produktów, które mają dodane składniki, takie jak ryż, kuskus i makaron. Jednakże produkty mogą zawierać niewielką ilość warzyw, takich jak te w sosie lub nadzieniu/wypełnieniu. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. Nie obejmuje produktów takich jak ryby z dodatkiem warzyw, ciasta lub ziaren, mrożone i łatwo psujące się ryby przetworzone, wszystkie ryby nieprzetworzone.
11: 10000019 | Skorupiaki - nieprzetworzone (łatwo psujące się) | Shellfish - Unprepared/Unprocessed (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako zwierzęta wodne, których powłoka zewnętrzna składa się z muszli, jak u ostryg, małży, homarów i krabów, które nie przeszły przez dalsze procesy produkcyjne, takie jak reformowanie, suszenie, gotowanie lub solenie, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. Produkty obejmują ślimaki morskie i mięczaki, ale w szczególności nie obejmują produktów, które mają dodane składniki, takie jak ryż, kuskus i makaron. Jednakże produkty mogą zawierać niewielką ilość warzyw, takich jak te w sosie lub nadzieniu/wypełnieniu. Produkty te muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak skorupiaki z dodatkiem warzyw, ciasta lub ziaren, trwałe i mrożone skorupiaki nieprzetworzone, wszystkie skorupiaki przetworzone.
12: 10000020 | Skorupiaki - nieprzetworzone (mrożone) | Shellfish - Unprepared/Unprocessed (Frozen) | Obejmuje wszelkie produkty opisane/obserwowane jako zwierzęta wodne, których powłoka zewnętrzna składa się z muszli, jak u ostryg, małży, homarów i krabów, które nie przeszły przez dalsze procesy produkcyjne, takie jak reformowanie, suszenie, gotowanie lub solenie, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. Produkty obejmują ślimaki morskie i mięczaki, ale w szczególności nie obejmują produktów, które mają dodane składniki, takie jak ryż, kuskus i makaron. Jednakże produkty mogą zawierać niewielką ilość warzyw, takich jak te w sosie lub nadzieniu/wypełnieniu. Produkty te muszą być mrożone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak skorupiaki z dodatkiem warzyw, ciasta lub ziaren, trwałe i łatwo psujące się skorupiaki nieprzetworzone, wszystkie skorupiaki przetworzone.
13: 10000021 | Skorupiaki - Nieprzetworzone (trwałe) | Shellfish - Unprepared/Unprocessed (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako zwierzęta wodne, których powłoka zewnętrzna składa się z muszli, jak u ostryg, małży, homarów i krabów, które nie przeszły przez dalsze procesy produkcyjne, takie jak reformowanie, suszenie, gotowanie lub solenie, jednakże produkty te mogą być również powlekane, w sosie, nadziewane lub wypełniane. Produkty obejmują ślimaki morskie i mięczaki, ale w szczególności nie obejmują produktów, które mają dodane składniki, takie jak ryż, kuskus i makaron. Jednakże produkty mogą zawierać niewielką ilość warzyw, takich jak te w sosie lub nadzieniu/wypełnieniu. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak skorupiaki z dodatkiem warzyw, ciasta lub ziaren, mrożone i łatwo psujące się skorupiaki nieprzetworzone, wszystkie skorupiaki przetworzone.
14: 10000025 | Mleko/substytuty mleka (łatwo psujące się) | Milk (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako mleko niearomatyzowane pochodzące od zwierząt, takich jak krowy, kozy i bawoły oraz mleko na bazie warzyw, pochodzące naturalnie z owoców lub warzyw, takie jak mleko kokosowe i migdałowe lub białka roślinnego, takie jak mleko sojowe. Produkty obejmują te, które zostały zaszczepione żywymi bakteriami acidophilus i bifidus, ale były utrzymywane w temperaturze, która jest zbyt niska, aby bakterie te mogły się rozwinąć, a zatem nie zostały poddane fermentacji i zachowały smak naturalnego mleka. Produkty te muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak mrożone i trwałe mleko oraz substytuty mleka, a także napoje i preparaty specjalistyczne dla niemowląt.
15: 10000026 | Mleko/substytuty mleka (trwałe) | Milk (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako mleko niearomatyzowane pochodzące od zwierząt, takich jak krowy, kozy i bawoły oraz mleko na bazie warzyw, pochodzące naturalnie z owoców lub warzyw, takie jak mleko kokosowe i migdałowe lub białka roślinnego, takie jak mleko sojowe. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. Produkty obejmują mleko odparowane, mleko skondensowane i mleko poddane obróbce UHT. | Nie obejmuje produktów takich jak mrożone i łatwo psujące się mleko oraz substytuty mleka, a także napoje i preparaty specjalistyczne dla niemowląt. W szczególności nie obejmuje wszystkich napojów na bazie sfermentowanego mleka (lub substytutów mleka).
16: 10000027 | Mleko/substytuty mleka (mrożone) | Milk (Frozen) | Obejmuje wszelkie produkty opisane/obserwowane jako mrożone mleko niearomatyzowane pochodzące od zwierząt, takich jak krowy, kozy i bawoły oraz mleko na bazie warzyw, pochodzące naturalnie z owoców lub warzyw, takie jak mleko kokosowe i migdałowe lub białka roślinnego, takie jak mleko sojowe. Produkty te muszą być mrożone, aby wydłużyć ich przydatność do spożycia. Produkty obejmują homogenizowane i pasteryzowane, ale nie w celu sztucznego przedłużania okresu przydatności do spożycia. | Nie obejmuje produktów takich jak trwałe i łatwo psujące się mleko oraz substytuty mleka, a także napoje i preparaty specjalistyczne dla niemowląt.
17: 10000028 | Ser/substytuty sera (łatwo psujące się) | Cheese (Perishable) | Obejmuje wszelkie produkty, które mogą być opisane/obserwowane jako żywność otrzymywana z twarogu mleka, oddzielona od serwatki, czasami fermentowana, zazwyczaj prasowana, gotowana, wędzona, dojrzewająca lub podgrzewana i mieszana ze składnikami sztucznymi, takimi jak emulgatory, barwniki i środki aromatyzujące. Produkty te muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. Produkty te obejmują naturalny, przetworzony ser i substytuty, ser z dodatkiem składników, takich jak zioła i orzechy, w blokach, roladach, plasterkach, tarty, w kostkach, nadających się do smarowania i w porcjach. | Nie obejmuje produktów takich jak sery trwałe i mrożone oraz substytuty serów i posiłki na bazie/aromatyzowane serem i i serek świeży.
18: 10000029 | Ser/substytuty sera (trwałe) | Cheese (Shelf Stable) | Obejmuje wszelkie produkty, które mogą być opisane/obserwowane jako żywność otrzymywana z twarogu mleka, oddzielona od serwatki, czasami fermentowana, zazwyczaj prasowana, gotowana, wędzona, dojrzewająca lub podgrzewana i mieszana ze składnikami sztucznymi, takimi jak emulgatory, barwniki i środki aromatyzujące. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. Produkty te obejmują naturalny, przetworzony ser i substytuty, ser z dodatkiem składników, takich jak zioła i orzechy, w blokach, roladach, plasterkach, tarty, w kostkach, nadających się do smarowania i w porcjach. | Nie obejmuje produktów takich jak sery mrożone i łatwo psujące się oraz substytuty serów i posiłki na bazie/aromatyzowane serem i i serek świeży.
19: 10000030 | Ser/substytuty sera (mrożone) | Cheese (Frozen) | Obejmuje wszelkie produkty, które mogą być opisane/obserwowane jako żywność mrożona otrzymywana z twarogu mleka, oddzielona od serwatki, czasami fermentowana, zazwyczaj prasowana, gotowana, wędzona, wędzona, dojrzewająca lub podgrzewana i mieszana ze składnikami sztucznymi, takimi jak emulgatory, barwniki i środki aromatyzujące. Produkty te muszą być mrożone, aby wydłużyć ich przydatność do spożycia. Produkty te obejmują naturalny, przetworzony ser i substytuty, ser z dodatkiem składników, takich jak zioła i orzechy, w blokach, roladach, plasterkach, tarty, w kostkach, nadających się do smarowania i w porcjach. | Nie obejmuje produktów takich jak sery trwałe i łatwo psujące się oraz substytuty serów i posiłki na bazie/aromatyzowane serem i i serek świeży.
20: 10000040 | Jadalne oleje - warzywne lub roślinne (trwałe) | Oils Edible - Vegetable or Plant (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako jadalne oleje płynne otrzymane z następujących produktów: ziarna, orzechy, oliwki, palmy, pestki palmowe, nasiona, kukurydza, miąższ owocowy, fasola lub ich kombinacje, które mogą być nalewane lub dozowane w aerozolu, przeznaczone do gotowania lub do użytku jako dressing do sałatek. Produkty mogą zawierać dodatki smakowe, takie jak chili i zioła. | Nie obejmuje produktów takich jak oleje na bazie suplementów diety, takich jak oleje na bazie wątroby dorsza oraz oleje niejadalne, takie jak olej lniany.
21: 10000041 | Tłuszcze jadalne - zwierzęce (łatwo psujące się) | Fats Edible - Animal (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako produkty stałe wykonane z topliwego tłuszczu zwierzęcego, oczyszczone, a następnie pozostawione do zestalenia po schłodzeniu. Produkty te przeznaczone są do gotowania i pieczenia. Produkty te mogą/muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. Produkty obejmują smalec, tłuszcz piekarniczy i łój. | Nie obejmuje produktów takich jak tłuszcze roślinne, margaryna i masło lub pasty do smarowania na bazie masła.
22: 10000042 | Tłuszcze jadalne - warzywne/roślinne (trwałe) | Fats Edible - Vegetable/Plant (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako produkty stałe wytworzone ze sztucznie utwardzanych olejów roślinnych, przeznaczone do pieczenia i gotowania. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. Produkty obejmują roślinny tłuszcz piekarniczy przeznaczony specjalnie do pieczenia i gotowania. | Nie obejmuje produktów takich jak masło i smarowidła na bazie masła oraz margaryna, tłuszcze zwierzęce do gotowania oraz oleje roślinne.
23: 10000043 | Cukier/substytuty cukru (trwałe) | Sugar/Sugar Substitutes (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako substancja słodka, otrzymywana na różnych etapach rafinacji soku z trzciny cukrowej/buraków cukrowych/molasy cukrowej lub sztuczna substancja słodka, która jest specjalnie oznakowana i wprowadzana do obrotu w celu zastąpienia naturalnego cukru, stosowana jako substancja słodząca i konserwująca żywność i napoje. Produkty obejmują cukry białe, takie jak: cukier drobny, w kostkach, w bloku, granulowany, lukier i konserwujący, cukry barwione, takie jak brązowy, barbados, demerara i sztuczne substancje słodzące, takie jak sacharyna, sorbitol i ksylitol. | Nie obejmuje produktów takich jak syropy, nieskrystalizowane syropy i melasy, cukier cukierniczy i substytuty cukrów cukierniczych.
24: 10000044 | Syropy/nieskrystalizowane syropy/ melasy (trwałe) | Syrup/Treacle/Molasses (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako słodkie, gęste ciecze będące pochodną procesu krystalizacji cukru, takie jak melasa (pozostałość po pierwszym etapie), syrop nieskrystalizowany (pozostałość po drugim etapie słodsza i mniej lepka niż melasa), syrop (wyprodukowany z melasy, glukozy i często środków aromatyzujących lub roztwór cukru, który może pochodzić z różnych źródeł, takich jak klon). Produkty obejmują syropy kukurydziane, syropy owocowe, złote, syropy klonowe i melasowe. | Nie obejmuje produktów takich jak cukier i substytuty cukru.
25: 10000045 | Czekolada i kombinacje czekolady z cukrem - Wyroby cukiernicze | Chocolate and Chocolate/Sugar Candy Combinations - Confectionery | Obejmuje wszelkie produkty opisane/obserwowane jako porcja cukiernicza czekolady lub substytutów czekolady lub wyrób będący połączeniem czekolady i słodyczy cukrowych, który może zawierać dodatkowe składniki, takie jak pomada, nugat, marcepan, karmel, śmietana cukrowa, orzechy, orzechy kokosowe, suszone owoce i inne miękkie nadzienia. Produkty te mogą być sprzedawane pojedynczo lub pakowane w celu zapewnienia ilości podobnych produktów. | Nie obejmuje wyrobów takich jak czyste wyroby cukiernicze bez powłoki czekoladowej.
26: 10000047 | Wyroby cukiernicze cukrowe/z substytutów cukru | Sugar Candy/Sugar Candy Substitutes Confectionery | Obejmuje wszelkie produkty opisane/obserwowane jako słodycze twarde lub miękkie wykonane głównie z cukru, z dodatkiem środków aromatyzujących, które mogą zawierać żelatynę lub nie. Produkty te mogą być pojedynczo zawinięte, pakowane luzem w torebkę lub pojemnik lub szczelnie zapakowane w rolkę lub rurkę. Produkty obejmują toffi. | Nie obejmuje wyrobów takich jak wyroby cukiernicze pokryte czekoladą.
27: 10000048 | Zioła/przyprawy (łatwo psujące się) | Herbs/Spices (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako aromatyczne lub bogato aromatyzowane pochodne warzywa lub rośliny, które zazwyczaj dodawane są w celu przyprawienia lub nadania żywności dodatkowego smaku. Produkty te obejmują aromatyczne przyprawy, które są otrzymywane z kory, pąków, owoców, korzeni, nasion lub łodyg różnych roślin i znane jako przyprawy, oraz te, które są otrzymywane z liściastej części rośliny i znane są jako zioła. Produkty te mogą/muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak świeże, całe zioła klasyfikowane jako świeże warzywa, doniczkowe zioła klasyfikowane w kategorii Trawniki/Ogrody, trwałe zioła i przyprawy, sól i ekstrakty.
28: 10000049 | Zioła/przyprawy (trwałe) | Herbs/Spices (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako aromatyczne lub bogato aromatyzowane warzywa lub rośliny lub ich pochodne, które zazwyczaj dodawane są w celu przyprawienia lub nadania żywności dodatkowego smaku. Produkty te obejmują aromatyczne przyprawy, które są otrzymywane z kory, pąków, owoców, korzeni, nasion lub łodyg różnych roślin i znane jako przyprawy, oraz te, które są otrzymywane z liściastej części rośliny i znane są jako zioła. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. Produkty obejmują nieprzetworzone i przetworzone zioła i/lub przyprawy lub połączenie ziół i przypraw. | Nie obejmuje produktów takich jak łatwo psujące się zioła i przyprawy, sól i ekstrakty i warzywa konserwowane w occie.
29: 10000050 | Ekstrakty/sól/sole zmiękczające mięso (trwałe) | Extracts/Salt/Meat Tenderisers (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako ciecz, pasta, proszek, granulki lub substancje stałe wytworzone z odparowania lub rafinacji mięsa, warzyw, drożdży lub chlorku sodu dodawanych w celu przyprawienia i aromatyzowania żywności, a w określonych przypadkach do zmiękczania mięsa. Produkty obejmują w szczególności rafinowaną i nierafinowaną sól i glutaminian monosodowy, bulion oraz sproszkowaną formę soli zmiękczającej mięso. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak pojedyncze lub czyste łatwo psujące się lub trwałe zioła i przyprawy, zagęszczacze do sosów, mieszanki zupowe oraz dodatki i pakiety smakowe do artykułów żywnościowych innych niż mięso i napojów.
30: 10000051 | Octy | Vinegars | Obejmuje wszelkie produkty opisane/obserwowane jako płyn wytworzony z kwasu octowego otrzymanego w wyniku fermentacji alkoholu, zmieszany z wodą i stosowany jako przyprawa aromatyczna, konserwant lub dodatek smakowy do żywności wytrawnej. Produkty obejmują wszystkie odmiany octu, takie jak słodowy, z wina czerwonego, białego i balsamiczny. | Nie obejmuje produktów takich jak wino do gotowania.
31: 10000052 | Wina do gotowania | Cooking Wines | Obejmuje wszelkie produkty opisane/obserwowane jako typowo gorsza odmiana wina niż wino do picia, czasami zmodyfikowane solą, używane do gotowania w celu wzmocnienia smaku lub barwy przygotowywanego dania. Produkty te są specjalnie oznakowane i sprzedawane jako wino do gotowania, a ich zawartość alkoholu gwarantuje, że nie muszą być chłodzone. | Nie obejmuje produktów, takich jak napoje alkoholowe winne lub sherry, oraz alkoholu nieużywany specjalnie do gotowania.
32: 10000054 | Inne sosy/dodatki/polewy wytrawne/smarowidła wytrawne/marynaty (łatwo psujące się) | Other Sauces Dipping/Condiments/Savoury Toppings/Savoury Spreads/Marinades (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako wytrawny płyn, pasta, smarowidło lub granulat, które są zwykle używane jako dodatek do żywności wytrawnej. Produkty te mogą być mieszane z innymi składnikami. Produkty te muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. Produkty obejmują płyny i produkty do smarowania aromatyzowane, ale niekoniecznie wytwarzane z ryb, mięsa, grzybów, owoców morza lub warzyw. | Nie obejmuje produktów takich jak sosy do gotowania, trwałe i mrożone sosy, dodatki, polewy wytrawne, smarowidła i marynaty wytrawne. W szczególności nie obejmuje keczupu pomidorowego/substytutów keczupu, musztardy/substytutów musztardy i majonezu/substytutów majonezu.
33: 10000055 | Sosy do gotowania (łatwo psujące się) | Sauces - Cooking (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako substancja, która może być podgrzewana i łączona z innymi składnikami, takimi jak makaron, ryż i kurczak, w celu wytworzenia określonego dania, jak bolognese, carbonara, kurczak korma lub tajskie curry. Produkty te muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak sosy i dodatki oraz wytrawne smarowidła i marynaty, trwałe i mrożone sosy do gotowania.
34: 10000056 | Sosy do gotowania (mrożone) | Sauces - Cooking (Frozen) | Obejmuje wszelkie produkty opisane/obserwowane jako mrożona substancja, która może być podgrzewana i łączona z innymi składnikami, takimi jak makaron, ryż i kurczak, w celu wytworzenia określonego dania, jak bolognese, carbonara, kurczak korma lub tajskie curry. | Nie obejmuje produktów takich jak sosy i dodatki oraz wytrawne smarowidła i marynaty, łatwo psujące się i trwałe sosy do gotowania.
35: 10000057 | Sosy do gotowania (trwałe) | Sauces - Cooking (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako substancja, która może być podgrzewana i łączona z innymi składnikami, takimi jak makaron, ryż i kurczak, w celu wytworzenia określonego dania, jak bolognese, carbonara, kurczak korma lub tajskie curry. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak sosy i dodatki oraz wytrawne smarowidła i marynaty, łatwo psujące się i mrożone sosy do gotowania.
36: 10000064 | Pasztet (łatwo psujący się) | Pate (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako gęsta wytrawna mieszanka powstała z mięsa, ryb grzybów lub warzyw. Produkty mogą być grubomielone lub gładkie. Produkty te muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak nadzienia do kanapek, pasty i smarowidła; mrożone i trwałe pasztety oraz inne rodzaje kiełbas nadających się do smarowania.
37: 10000068 | Mieszanki do pieczenia/gotowania (łatwo psujące się) | Baking/Cooking Mixes (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako ilość łatwo psującego się, wstępnie wymieszanego ciasta lub proszku lub innych składników, które są specjalnie przeznaczone do produkcji chleba, ciast, ciastek, deserów lub innych produktów. Produkty mogą być gotowe do użycia (w przypadku gdy przed użyciem nie trzeba dodawać żadnych dodatkowych składników do mieszanki) lub mogą wymagać dodania mokrych składników, takich jak woda, mleko, olej, tłuszcz lub jajo. Produkty te muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak zupy, mrożone lub trwałe mieszanki do pieczenia, wszystkie produkty częściowo upieczone i wypieki.
38: 10000069 | Dodatki do pieczenia/gotowania (łatwo psujące się) | Baking/Cooking Supplies (Perishable) | Obejmuje wszelkie produkty opisane/obserwowane jako artykuły specjalnie przeznaczone do stosowania podczas pieczenia lub gotowania. Produkty obejmują drożdże i posiłki częściowe. Mogą/mogą nie wymagać dodawania innych składników i dalszego pieczenia lub gotowania. Produkty te mogą/muszą być chłodzone, aby wydłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak trwałe i mrożone dodatki piekarnicze, masło, margaryna, smalec, cukier, suszone owoce, orzechy.
39: 10000104 | Niemowlęta - żywność specjalistyczna (trwała) | Baby/Infant - Specialised Foods (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako żywność specjalnie etykietowaną i wprowadzaną do obrotu dla niemowląt, zwykle mającą zapewnić zdrową, zbilansowaną dietę niemowlętom w każdym wieku. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. | Nie obejmuje produktów takich jak napoje dla niemowląt, niemowlęta - żywność specjalistyczna (mrożona), preparaty w proszku i gotowe do picia specjalnie przeznaczone do stosowania jako substytut mleka matki podczas karmienia piersią. Warianty powyższych produktów dla dorosłych.
40: 10000105 | Niemowlęta - napoje specjalistyczne (trwałe) | Baby/Infant - Specialised Beverages (Shelf Stable) | Obejmuje wszelkie produkty opisane/obserwowane jako napoje specjalnie etykietowane i wprowadzane do obrotu dla niemowląt. Produkty te zostały poddane obróbce lub zapakowane w taki sposób, aby przedłużyć ich przydatność do spożycia. Obejmuje soki, napoje na bazie soku, wodę oczyszczoną dla niemowląt i napoje mleczne. | Nie obejmuje produktów takich jak preparaty, żywność dla niemowląt i ich warianty dla dorosłych.
[Status produktu na rynku]
1: Status produktu na rynku
2: W fazie projektu (jeszcze nie w sprzedaży)
3: Aktywny (w sprzedaży)
4: Wycofany (już nie w sprzedaży)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,23 +0,0 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<script id="Cookiebot" src=https://consent.cookiebot.com/uc.js data-cbid="1f447e8e-5f5e-485e-be4d-9b216b34e81e" data-blockingmode="auto" type="text/javascript"></script>
<meta charset="utf-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<link rel="apple-touch-icon" href="/logo192.png" />
<link rel="manifest" href="/manifest.json" />
<title>MojeGS1</title>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-FP9T16VN5Q"></script>
<script>window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-FP9T16VN5Q'); </script>
<script type="module" crossorigin src="/assets/index-AD9emz4a.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BpM6Ei0J.css">
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>