NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Shops for Laravel

Varianty, SKU a možnosti

Každá predajná jednotka je ProductVariant s vlastným sku, cenou, menou, daňovou triedou a zásobou. Každý produkt dostane pri vytvorení jeden predvolený variant — skutočný, predajný variant, nie zástupný, ktorý neskoršie varianty nahradia. Nenechávajte ho na nule: pri jednoduchom produkte mu nastavte cenu, inak z neho urobte prvý variant s možnosťami a ďalšie pridajte vedľa neho:

use RoundlyConsulting\Money\Money;
use RoundlyConsulting\Shops\Products\ProductVariant;

// The price cast writes the currency column from the Money.
$small = $product->defaultVariant;   // set up the default variant rather than leaving it at zero
$small->update(['sku' => 'WATER-0.5L', 'price' => Money::ofMinor(199, 'EUR'), 'stock' => 50]);

$large = $product->variants()->create([
    'sku' => 'WATER-1L', 'price' => Money::ofMinor(299, 'EUR'), 'stock' => 30, 'position' => 1,
]);

$product->price;                       // 1.99 EUR — the default (lowest-position) variant

// Re-pricing in another currency: set currency BEFORE price — the cast refuses
// to silently re-denominate a column that already holds another code.
$small->update(['currency' => 'USD', 'price' => Money::ofMinor(219, 'USD')]);

$product->defaultVariant;              // the lowest-position variant (WATER-0.5L)
$small->inStock(10);                   // bool — respects track_stock and the reserved quantity
$small->availableStock();              // stock - reserved
ProductVariant::query()->inStock(2);   // untracked, or at least 2 available

Predvolený variant

Každý produkt dostane pri vytvorení jeden: SKU zo slugu v záložnom jazyku s príponou -DEFAULT (napr. SPARKLING-WATER-DEFAULT), nulovú cenu v mene obchodu produktu (alebo v predvolenej mene), daňovú triedu standard, zapnuté sledovanie zásoby a nulovú zásobu. $product->defaultVariant aj $product->price čítajú variant s najnižšou pozíciou, teda tento, ak poradie nezmeníte. Pred predajom mu nastavte cenu a prijmite tovar. SKU je jedinečné v rámci produktu.

Možnosti

Možnosti (veľkosť, farba) a ich hodnoty tvoria osi variácií; variant je kombinácia jednej hodnoty z každej možnosti. Variant nájdete podľa množiny hodnôt:

use RoundlyConsulting\Money\Money;
use RoundlyConsulting\Shops\Products\Product;

$shirt = Product::create(['name' => 'T-Shirt']);

$size  = $shirt->options()->create(['name' => 'Size', 'position' => 0]);
$small = $size->values()->create(['value' => 'S', 'position' => 0]);
$large = $size->values()->create(['value' => 'L', 'position' => 1]);

// The default variant is a real, sellable variant — make it the first option variant:
$s = $shirt->defaultVariant;
$s->update(['sku' => 'TS-S', 'price' => Money::ofMinor(1990, 'EUR')]);
$s->optionValues()->attach($small);

$l = $shirt->variants()->create([
    'sku' => 'TS-L', 'price' => Money::ofMinor(1990, 'EUR'), 'position' => 1,
]);
$l->optionValues()->attach($large);

$shirt->variantFor([$small->id]);   // $s — exactly these option-value ids, or null
$option->product();        // BelongsTo<Product>
$option->values();         // HasMany<ProductOptionValue>, ordered by position
$value->option();          // BelongsTo<ProductOption>
$value->variants();        // BelongsToMany<ProductVariant>
$variant->product();       // BelongsTo<Product>
$variant->optionValues();  // BelongsToMany<ProductOptionValue>

Možnosti určujú, čo sa dá kúpiť. Na popisné, filtrovateľné údaje ako materiál či hmotnosť použite špecifikáciu (atribúty).

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.