みなさん、こんにちは。
ECCUBERの中野です。

今回は、EC-CUBE4系のバッチ処理について簡単ではありますがご紹介します。
主に、Cronを用いて定期実行させる処理になりますが、簡単に実装することができます。

基となるフレームワークの「Symfony」の「Command」クラスを継承したクラスで作成します。

EC-CUBEのことはEC-CUBEのプロ「EC-CUBER」にご相談ください!
https://ec-cuber.jp/contact-us/

ディレクトリ構成

カスタマイズの場合

app/Customizeの直下に「Command」ディレクトリを作成

ディレクトリパス
app/Customize/Command

プラグインの場合

直下に「Command」ディレクトリを作成

ディレクトリパス
Command

ソースコード例

<?php

namespace Eccube\Command;

use Eccube\Service\Composer\ComposerApiService;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class InvalidateExpiredPointsCommand extends Command
{
    protected static $defaultName = 'exp:point:invalidate';

    /**
     * @var ComposerApiService
     */
    private $composerService;

    public function __construct(ComposerApiService $composerService)
    {
        parent::__construct();
        $this->composerService = $composerService;
    }

    protected function configure()
    {
        $this->setDescription('有効期限切れポイント失効処理 --notifyオプション付与時は失効前通知を行う')
             ->addOption('force', null, InputOption::VALUE_NONE, '有効期限切れポイントの無効化を実行')
             ->addOption('notify', null, InputOption::VALUE_NONE, '有効期限直前のポイントを顧客へメール通知');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $force = true === $input->getOption('force');
        $notify = true === $input->getOption('notify');

        if (!$notify &amp;&amp; !$force) {
            $output->write('--force --notifyオプションのどちらかを指定してください');
        }
        /* 以下略 */
    }
}

EC-CUBE4でできることをまとめた資料をご用意しています!
https://ec-cuber.jp/eccube4-download/

実行方法

「protected static $defaultName」で設定した値を使用します。
php EC-CUBE4インストールディレクトリ/bin/console exp:point:invalidate

Cron等で実行する際も同様の指定でOKです。

今回は、必要部分のみのを紹介しましたが
EC-CUBE標準で用意されているものは、以下の場所に格納されています。
src/Eccube/Command

色々と参考にできるものがありますので、開発する際は見てみるといいことがあるかもです。

EC-CUBEのことはEC-CUBEのプロ「EC-CUBER」にご相談ください!
https://ec-cuber.jp/contact-us/