robier/sylius-croatian-fiscalization-plugin

允许向克罗地亚FINA发送数据的插件

This package is auto-updated.

Last update: 2024-09-04 16:29:45 UTC


README

注意:此包仍在开发中

使您的商店在客户购买时能够与克罗地亚FINA通信。

如果客户进行线下购买(银行转账或货到付款),则不需要向FINA发送数据。这可以通过插件配置进行设置。

每个订单都将获得其账单序列号、账单唯一标识符和发行者安全码,符合FINA标准。您将在订单详细信息视图(在管理员内部)中看到这些数据。如果由于任何原因这些数据无法进行税务化,您将看到错误日志。您可以尝试通过点击错误日志下的按钮重新发送数据。

配置

在设置配置之前,您需要以下三项

  • 根证书
  • 个人证书
  • 个人证书密码短语

您可以从FINA获得这些。您可以在这里找到更多信息。

robier_sylius_croatian_fiscalization:
  environment: demo # 'demo' or 'production'
  disable_on_payment_codes:
    - bank_transfer
    - cash_on_delivery # depends on your configuration, by default it will be applied to all payment types 
  resending:
    max_attempts: 3
  certificate:
    demo:
      root_path: '%kernel.project_dir%/var/certificates/demo/root.txt'
      private_path: '%kernel.project_dir%/var/certificates/demo/FISKAL_1.p12'
      passphrase: '**********'
    production:
      root_path: '%kernel.project_dir%/var/certificates/production/root.txt'
      private_path: '%kernel.project_dir%/var/certificates/production/FISKAL_1.p12'
      passphrase: '**********'
  company:
    oib: 76915349123
    inside_tax_registry: true
  operator:
    oib: 28841868149 # if null (~), company.oib will be used instead

安装

通过composer安装应用程序

composer require robier/sylius-croatian-fiscalization-plugin

在您的sylius实例中启用捆绑包

<?php

return [
    # ...,
    Robier\SyliusCroatianFiscalizationPlugin\RobierSyliusCroatianFiscalizationPlugin::class => ['all' => true],
    # ...,
];

将配置复制到您的项目中

# config/packages/robier_sylius_croatian_fiscalization.yaml
imports:
  - { resource: "@RobierSyliusCroatianFiscalizationPlugin/Resources/config/config.yaml" }

robier_sylius_croatian_fiscalization:
  environment: demo # 'demo' or 'production'
  disable_on_payment_codes:
    - bank_transfer
    - cash_on_delivery # depends on your configuration, by default it will be applied to all payment types 
  resending:
    max_attempts: 3
  certificate:
    demo:
      root_path: '%kernel.project_dir%/var/certificates/demo/root.txt'
      private_path: '%kernel.project_dir%/var/certificates/demo/FISKAL_1.p12'
      passphrase: '**********'
    production:
      root_path: '%kernel.project_dir%/var/certificates/production/root.txt'
      private_path: '%kernel.project_dir%/var/certificates/production/FISKAL_1.p12'
      passphrase: '**********'
  company:
    oib: 76915349123
    inside_tax_registry: true
  operator:
    oib: 28841868149 # if null (~), company.oib will be used instead

将证书放置在git管辖范围之外的位置,并更改包配置文件中的路径

  • certificate.demo.*
  • certificate.production.*

导入路由

# config/routes/robier_sylius_croatian_fiscalization_plugin.yaml
robier_sylius_croatian_fiscalization_plugin:
  resource: "@RobierSyliusCroatianFiscalizationPlugin/Resources/config/routing.yaml"

向数据库添加新表

bin/console doctrine:schema:update --dump-sql
# and if you are satisfied with updates then run
bin/console doctrine:schema:update --force

替换默认订单号序列生成器,以便发票号将按照克罗地亚FINA标准生成。

# config/services.yaml
    sylius.sequential_order_number_generator:
        alias: robier_sylius_croatian_fiscalization_plugin.order.number_generator

运行命令创建起始账单序列

bin/console robier:croatian-fiscalization:set-bill-sequence 1/POS1/1

序列应由公司内部文件规定,但这个库目前只支持这样的数字,即这是一个单独的通行费设备。第一个数字随着每个发送到FINA的账单的增加而增加。

清除您的应用程序缓存

bin/console clear:cache

在您的管理员中设置税务。如果您想将其应用于发送到FINA的账单,则需要创建代码为vat的税务。运输作为免税税务添加,因为运输公司将在其账单上应用税务。

本地开发(Docker)

使用以下命令启动项目

docker/env dev on

进入容器

docker/enter dev:php
# or
docker/run dev:node
# or
docker/enter dev:mysql

停止项目

docker/env dev off

删除所有容器和卷

docker/env dev down -v -t0

当Docker环境启动时,您可以在浏览器中通过https://:8889打开您的项目。

您可以通过添加docker/.env并覆盖值来更改nginx端口,例如。

# docker/.env file
NGINX_HTTP_PORT=8888

您可以通过这种方式覆盖存在于docker/.env.dist中的任何值。

默认mysql凭据是

MYSQL_USER=sylius
MYSQL_PASSWORD=nopassword
MYSQL_DATABASE=sylius

待办事项

[]添加测试[]添加更好的文档[]添加Docker安装脚本[]设置数据库[]设置固件[]设置完成后在浏览器中打开项目

文档

有关Sylius插件开发的全面指南,请参阅Sylius文档,在那里您将找到插件开发指南,其中充满了示例。

快速安装

  1. 运行composer create-project sylius/plugin-skeleton ProjectName

  2. 从插件骨架根目录,运行以下命令

    $ (cd tests/Application && yarn install)
    $ (cd tests/Application && yarn build)
    $ (cd tests/Application && APP_ENV=test bin/console assets:install public)
    
    $ (cd tests/Application && APP_ENV=test bin/console doctrine:database:create)
    $ (cd tests/Application && APP_ENV=test bin/console doctrine:schema:create)

要设置插件的数据库,请记住在tests/Application/.envtests/Application/.env.test中配置您的数据库凭据。

用法

运行插件测试

  • PHPUnit

    vendor/bin/phpunit
  • PHPSpec

    vendor/bin/phpspec run
  • Behat(非JS场景)

    vendor/bin/behat --strict --tags="~@javascript"
  • Behat(JS场景)

    1. 安装Symfony CLI命令.

    2. 启动无头Chrome

    google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1
    1. 安装SSL证书(仅需一次)并在127.0.0.1:8080上运行测试应用的web服务器
    symfony server:ca:install
    APP_ENV=test symfony server:start --port=8080 --dir=tests/Application/public --daemon
    1. 运行Behat
    vendor/bin/behat --strict --tags="@javascript"
  • 静态分析

    • Psalm

      vendor/bin/psalm
    • PHPStan

      vendor/bin/phpstan analyse -c phpstan.neon -l max src/  
  • 编码标准

    vendor/bin/ecs check src

使用您的插件打开Sylius

  • 使用test环境

    (cd tests/Application && APP_ENV=test bin/console sylius:fixtures:load)
    (cd tests/Application && APP_ENV=test bin/console server:run -d public)
  • 使用dev环境

    (cd tests/Application && APP_ENV=dev bin/console sylius:fixtures:load)
    (cd tests/Application && APP_ENV=dev bin/console server:run -d public)