setono / sylius-cost-price-plugin
Add a cost price property to your product variants using this plugin
Installs: 23 486
Dependents: 1
Suggesters: 1
Security: 0
Stars: 3
Watchers: 2
Forks: 2
Open Issues: 8
Type:sylius-plugin
Requires
- php: >=7.4
- sylius/sylius: ^1.3
Requires (Dev)
- behat/behat: ^3.4
- behat/mink: ^1.7@dev
- behat/mink-browserkit-driver: ^1.3
- behat/mink-extension: ^2.2
- behat/mink-selenium2-driver: ^1.3
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.0
- friends-of-behat/symfony-extension: ^2.0
- friends-of-behat/variadic-extension: ^1.1
- lakion/mink-debug-extension: ^1.2.3
- phpspec/phpspec: ^6.0
- phpstan/phpstan-doctrine: ^0.10
- phpstan/phpstan-shim: ^0.10
- phpstan/phpstan-symfony: ^0.10
- phpstan/phpstan-webmozart-assert: ^0.10
- roave/security-advisories: dev-latest
- sensiolabs/security-checker: ^5.0
- sylius-labs/coding-standard: ^2.0
- symfony/browser-kit: ^4.3|^5.0
- symfony/debug-bundle: ^4.3|^5.0
- symfony/dotenv: ^4.3|^5.0
- symfony/intl: ^4.3|^5.0
- symfony/web-profiler-bundle: ^4.3|^5.0
- symfony/web-server-bundle: ^4.3|^5.0
- v1.2.0
- v1.1.0
- dev-master / 1.0.x-dev
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-renovate/configure
- dev-php8
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/lakion/mink-debug-extension-tw-2.0.0
- dev-dependabot/composer/phpspec/phpspec-tw-6.3
- dev-dependabot/composer/sylius-labs/coding-standard-tw-3.1
- dev-dependabot/composer/sensiolabs/security-checker-tw-6.0
- dev-dependabot/composer/phpstan/phpstan-shim-tw-0.12
This package is auto-updated.
Last update: 2024-12-15 08:11:01 UTC
README
Add a cost price property to your products.
Installation
Step 1: Download the plugin
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require setono/sylius-cost-price-plugin
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Step 2: Enable the plugin
Then, enable the plugin by adding it to the list of registered plugins/bundles
in the config/bundles.php
file of your project:
<?php // config/bundles.php return [ // ... Setono\SyliusCostPricePlugin\SetonoSyliusCostPricePlugin::class => ['all' => true], // ... ];
Step 4: Import product variant trait
<?php // src/Entity/ProductVariant.php declare(strict_types=1); namespace App\Entity; use Setono\SyliusCostPricePlugin\Model\CostPriceAwareInterface; use Setono\SyliusCostPricePlugin\Model\ProductVariantTrait as CostPriceProductVariantTrait; use Sylius\Component\Core\Model\Product as BaseProduct; /** * @ORM\Entity * @ORM\Table(name="sylius_product_variant") */ class ProductVariant extends BaseProduct implements CostPriceAwareInterface { use CostPriceProductVariantTrait; // ... }
NOTE: If you haven't extended the ProductVariant
entity yet, follow the customization instructions first because you need to add a bit more configuration.
Step 5: Update your database
$ php bin/console doctrine:migrations:diff $ php bin/console doctrine:migrations:migrate
Step 6: Add form widgets to twig templates
You need to override the template displaying the product and product variant form and add a form_row
statement with the cost price and cost price currency:
{# app/Resources/SyliusAdminBundle/views/ProductVariant/Tab/_details.html.twig #} {# ... #} <div class="ui segment"> {{ form_row(form.code) }} <div class="two fields"> {{ form_row(form.shippingCategory) }} </div> {# This is the part you should add #} <div class="four fields"> {{ form_row(form.costPriceCurrency) }} {{ form_row(form.costPrice) }} </div> {# End of the part you should add #} {{ form_row(form.channelPricings) }} </div> {# ... #}
{# app/Resources/SyliusAdminBundle/views/Product/Tab/_details.html.twig #} <div class="ui segment"> {{ form_row(form.code) }} {{ form_row(form.enabled) }} {% if product.simple %} {{ form_row(form.variant.onHand) }} {{ form_row(form.variant.tracked) }} {{ form_row(form.variant.shippingRequired) }} {{ form_row(form.variant.version) }} {% else %} {{ form_row(form.options) }} {{ form_row(form.variantSelectionMethod) }} {% endif %} {# Nothing to see here. #} <div class="ui hidden element"> {% if product.simple %} {# This is the part you should add #} <div class="two fields"> {{ form_row(form.variant.costPriceCurrency) }} {{ form_row(form.variant.costPrice) }} </div> {# End of the part you should add #} {{ form_row(form.variant.translations) }} {% endif %} {{ form_row(form.variantSelectionMethod) }} </div> </div>
If you haven't overridden the template yet, you can just copy the templates from vendor/setono/sylius-cost-price-plugin/src/Resources/views/SyliusAdminBundle
to app/Resources/SyliusAdminBundle/views/