gewebe/sylius-vat-plugin
最新稳定版本:v2.1.0
Composer 安装命令:
composer require gewebe/sylius-vat-plugin
包简介
VAT number address field with validation, EU VAT rates plugin for Sylius
README 文档
README
Features
- Installer for EU VAT rates with countries and zones
- New fields for VAT number at
AddressandShopBillingDataentity - Configure VAT number field requirement:
- Optional / Required
- Required if customer filled “Company” field
- Required in selected countries
- Validate VAT number:
- Format for selected country
- Country is same as selected country
- Validity using VIES API for EU VAT number
- Revalidate customers VAT numbers after a given time
- Placing an order without VAT in the EU, if
- VAT number validation was successful
- Customers taxation country is different from shop billing country
Installation
Download the plugin via composer
composer require gewebe/sylius-vat-plugin
Enable the plugin in bundles.php
# config/bundles.php return [ # ... Gewebe\SyliusVATPlugin\GewebeSyliusVATPlugin::class => ['all' => true], ];
Import the plugin configurations
# config/packages/_sylius.yaml imports: # ... - { resource: '@GewebeSyliusVATPlugin/config/config.yaml'}
Configure taxation address
For EU VAT, the address for taxation should be set to the shipping address in the Sylius configuration.
# config/packages/_sylius.yaml sylius_core: shipping_address_based_taxation: true
Copy templates
Copy customized templates to your templates directory (e.g templates/bundles/):
mkdir -p templates/bundles/SyliusAdminBundle/ cp -R vendor/gewebe/sylius-vat-plugin/templates/SyliusAdminBundle/* templates/bundles/SyliusAdminBundle/ mkdir -p templates/bundles/SyliusShopBundle/ cp -R vendor/gewebe/sylius-vat-plugin/templates/SyliusShopBundle/* templates/bundles/SyliusShopBundle/
Extend Address entity
# src/Entity/Addressing/Address.php namespace App\Entity\Addressing; use Doctrine\ORM\Mapping as ORM; use Gewebe\SyliusVATPlugin\Entity\VatNumberAddressInterface; use Gewebe\SyliusVATPlugin\Entity\VatNumberAwareTrait; use Sylius\Component\Core\Model\Address as BaseAddress; /** * @ORM\Entity * @ORM\Table(name="sylius_address") */ #[ORM\Entity] #[ORM\Table(name: 'sylius_address')] class Address extends BaseAddress implements VatNumberAddressInterface { use VatNumberAwareTrait;
If you use yaml mapping add also:
# config/doctrine/Address.orm.yaml App\Entity\Addressing\Address: type: entity table: sylius_address fields: vatNumber: type: string column: vat_number nullable: true vatValid: type: boolean column: vat_valid vatValidatedAt: type: datetime column: vat_validated_at nullable: true
Add or Extend ShopBillingData entity
# src/Entity/Channel/ShopBillingData.php namespace App\Entity\Channel; use Doctrine\ORM\Mapping as ORM; use Gewebe\SyliusVATPlugin\Entity\ShopBillingDataVatNumberAwareTrait; use Gewebe\SyliusVATPlugin\Entity\ShopBillingDataVatNumberInterface; use Sylius\Component\Core\Model\ShopBillingData as BaseShopBillingData; /** * @ORM\Entity * @ORM\Table(name="sylius_shop_billing_data") */ #[ORM\Entity] #[ORM\Table(name: 'sylius_shop_billing_data')] class ShopBillingData extends BaseShopBillingData implements ShopBillingDataVatNumberInterface { use ShopBillingDataVatNumberAwareTrait;
If you use yaml mapping add also:
# config/doctrine/ShopBillingData.orm.yaml App\Entity\Channel\ShopBillingData: type: entity table: sylius_shop_billing_data fields: vatNumber: type: string column: vat_number nullable: true
Override the resource for shop_billing_data in your sylius config:
# config/packages/_sylius.yaml sylius_core: resources: shop_billing_data: classes: model: App\Entity\Channel\ShopBillingData
Update your database schema
bin/console doctrine:migrations:diff bin/console doctrine:migrations:migrate
Usage
Install EU countries and VAT rates
# EU VAT on digital services (MOSS scheme) bin/console vat:install:eu # EU with French VAT (cross-border) bin/console vat:install:eu FR # EU with French VAT and passed threshold in Spain and Portugal (cross-border) bin/console vat:install:eu FR -t ES,PT # EU with French VAT included in price bin/console vat:install:eu FR -i # EU with German standard and reduced VAT categories bin/console vat:install:eu DE -c standard,reduced
Validate customers VAT number
1. Create new order with VAT number at shipping address
2. Show VAT number and validation status at admin orders
Testing
Traditional
-
From the plugin skeleton root directory, run the following commands:
(cd vendor/sylius/test-application && yarn install) (cd vendor/sylius/test-application && yarn build) vendor/bin/console assets:install vendor/bin/console doctrine:database:create vendor/bin/console doctrine:migrations:migrate -n # Optionally load data fixtures vendor/bin/console sylius:fixtures:load -n
To be able to set up a plugin's database, remember to configure your database credentials in tests/TestApplication/.env and tests/TestApplication/.env.test.
-
Run your local server:
symfony server:ca:install symfony server:start -d
-
Open your browser and navigate to
https://localhost:8000.
Docker
-
Execute
make initto initialize the container and install the dependencies. -
Execute
make database-initto create the database and run migrations. -
(Optional) Execute
make load-fixturesto load the fixtures. -
Your app is available at
http://localhost.
Usage
Running plugin tests
-
PHPUnit
vendor/bin/phpunit
-
Behat (non-JS scenarios)
vendor/bin/behat --strict --tags="~@javascript&&~@mink:chromedriver" -
PHPStan - Static Analysis
vendor/bin/phpstan analyse -c phpstan.neon -l max src/
-
Coding Standard
vendor/bin/ecs check
-
统计信息
- 总下载量: 22.49k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 8
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-01-07

