富士登山、トレッキングで使う、登山靴、ザック、レインウエアなどの登山用品のレンタルならやまどうぐレンタル屋


SOY Shopでレンタルショップを運営しているやまどうぐレンタル屋さんから下記の要望がありました。


現在、SOY Shopの他に顧客関係管理(CRM)であるセールスフォース(Salesforce)を併用して、

Salesforce - セールスフォース・ドットコム

顧客関係管理 - Wikipedia


ネット上のレンタルの受注以外に他サイトのレンタルの受注や電話での注文や実店舗での直接的なやり取りを行っているが、これら対応をすべてSOY Shop内で完結したいということで、

セールスフォース並の顧客関係管理の機能をSOY Shopに追加してほしい

というものでした。


今回は上記の要望のために開発した内容を紹介します。




はじめに開発事例を紹介する前に過去に開発した内容を紹介します。

セールスフォースの使用を開始する前の話で、セールスフォース導入後に使用されなくなった機能の一つに



SOY Shopの機能を一部切り出して、

レンタル業務で煩雑になりやすい発送と返却のみを管理できるRental ExtensionというSOY Appを開発しました。


開発の詳細はSOY CMSの公式サイトにあるブログ記事を読んでいただくとして、

SOY Appでレンタル業務の拡張 - SOY CMS 開発ブログ


ざっくりとした概要を記載すると、

SOY Shopからの注文の際に使用開始日や配達希望日のデータを同時に記録することはできたが、

SOY Shopの管理画面内でこれらの値を活用しようすると管理画面のカスタマイズが必要となり、

一つでもカスタマイズを入れてしまうと以後のSOY Shopのバージョンアップが困難になる。


だから、

レンタルに関するものはSOY Appとして切り出そう

という発想でRental Extensionは開発されました。

元CMSの開発として、CMSの過剰カスタマイズは止めた方が良いと伝えたい




上記内容を踏まえた上で、

今回のセールスフォース並の機能をSOY Shop内で実装するという開発案件で行ったことは

・SOY Shop内でプラグインによる拡張のみでRental Extensionの機能を再現する

・納品書や検品書の出力時の日時を記録して、未出力の注文がどれかを瞬時に判定する

・配送業者の発送状況を把握できるアプリと連携して、SOY Shop内で(半)自動的に注文状態を変更しつつ、お客様に自動でその旨を通知する

・電話対応での注文もすべてSOY Shop内で完結する

・注文されたものを実店舗で受取希望のお客様の管理もSOY Shop内で完結する

・注文の変更やキャンセルの際に発生する返金等の管理もSOY Shop内で完結する

等々になります。




・SOY Shop内でプラグインによる拡張のみでRental Extensionの機能を再現する



SOY Shop内でRental Extension並の機能を発揮するために、

注文時に何らかの日時データを追加できるオーダーカスタムフィールド(日付)

SOY Shopのオーダーカスタムフィールドの項目でファイルを追加しました


下記の2つの箇所の拡張ポイントの追加で、

SOY Shopの注文状態と支払状況でフラグを追加できる拡張ポイントを設けました

管理画面の注文検索の拡張ポイントsoyshop.order.search.php


本体に一切カスタマイズを入れることなく、管理画面の注文検索を拡張することができるようになります。

注文状態のフラグに返却済みを追加することによって発送済みで返却されていない注文の把握もできるようになりました。




・納品書や検品書の出力時の日時を記録して、未出力の注文がどれかを瞬時に判定する


上の検索項目の追加の内容を更に拡張したもので、

納品書や検品書を出力する直前で出力日時をオーダーカスタムフィールド(日付)で記録させておくことで、



すでに納品書等の出力をした注文や



まだ出力していない(未出力)の注文を瞬時に判断できるようになりました。


今回話題に挙がった検品書について触れておくと、

やまどうぐレンタル屋さんではレンタル12点セットといった登山に必要なセットを扱っていて、

注文の際もセットを注文することができます。

フルサポート12点セット(女性用) - やまどうぐレンタル屋など


このセットは注文時は1個として集計されますが、

実際の発送になると12個以上のアイテムで構成されることになります。


12個以上となると発送の際の梱包や確認作業が大変で、

レンタルであるためにお客様側の返却時もどれを返却するかを把握するのが大変です。

双方の把握のために検品書を作成する必要がありますが、


この検品書というものの作成も手作業で行っていたらしく、

これを回避するために



商品名から判断して検品書の内容をある程度作成しつつ、

追加や変更も簡単に行うことができる検品書作成ツールを開発しました。




・配送業者の発送状況を把握できるアプリと連携して、SOY Shop内で(半)自動的に注文状態を変更しつつ、お客様に自動でその旨を通知する


上記の対応は

現在試験段階で使用するかどうか不明ですが、



配送追跡サービスのTrackingmoreとの連携か

SOY ShopでTrackingmore連携プラグインでwebhookに対応しました


「配送でポン」というアプリと連携して対応します。

配送でポン | 受注管理システム「受注でポン」受注処理が簡単に!




・電話対応での注文もすべてSOY Shop内で完結する


上記の対応は先日実績として紹介したSOY Shop内でパイプハウスの施工管理アプリを開発しましたの大部分を活用しています。




・注文されたものを実店舗で受取希望のお客様の管理もSOY Shop内で完結する


上記の対応は公開側と管理画面側の両方で、



受取場所の指定を設け、

配送以外の実店舗を選択した場合は、



カートの手続きの次ページで来店に関する情報を入力する。

これらのデータをオーダーカスタムフィールドに登録させておくことで、



管理画面の注文一覧の検索フォームで来店のみ、

更には来店予定日や梱包済みの有無で検索が可能となり、

来店に関する諸々の把握が可能になります。




最後の項目は触れないとして、

今回の開発ではオーダーカスタムフィールドを多用することで、

サーバのリソースを今まで以上に使用してしまうことになります。


管理画面を開いた時にサーバのリソースを過剰に使用すると

公開側の表示に影響を与えてしまうので、

管理画面の表示速度の見直し(主にSQLの効率化)も行っています。

自由を求めてオープンソースのネットショップパッケージへ。軌道に乗った頃に遭遇する問題について




今回の機能はRental Extensionの説明でも記載した通り、

今後のSOY Shopのバージョンアップをスムーズに行えるようにするために、

本体には一切カスタマイズを入れていません

元CMSの開発として、CMSの過剰カスタマイズは止めた方が良いと伝えたい


つまりは、

今回文中で紹介したいくつかの拡張ポイントに合わせてプラグインを作成すれば、

ネットショップを運営しつつセールスフォース並の顧客関係管理(CRM)を作成することができるようになります。


今回のような内容に興味がある方は拡張ポイントについてご覧ください。

SOY Shopプラグインの拡張ポイントについて


更にすでにSOY Shopを利用していて、最近表示速度が遅くなってきたな

と感じている方は今回のために最適化されたSOY Shopをお試しください。

ダウンロードは下記のページから行えるようにしています。

※SOY Shopのバージョンアップの際はSOY CMSやSOY Appのバージョンアップもお忘れなく

https://saitodev.co/soycms/soyshop/