在庫管理アプリ
オフィス用品の入出庫記録から在庫数を自動計算する在庫管理アプリです。Visual Customize の 66 のルール(入出庫 40 + 商品マスタ 9 + 棚卸 17)で、伝票自動採番から在庫更新・棚卸承認フロー・廃棄区分・差戻しまでをノーコードで実現します。
スクリーンショット
Section titled “スクリーンショット”一覧画面 — 入出庫区分による行色分け
Section titled “一覧画面 — 入出庫区分による行色分け”
追加画面 — 日付初期値・フィールド制御
Section titled “追加画面 — 日付初期値・フィールド制御”
フィールド制御 — 入出庫区分ごとの表示切替
Section titled “フィールド制御 — 入出庫区分ごとの表示切替”入庫→仕入先を表示、出庫→出庫先を表示、返品→仕入先を表示。入出庫区分に応じてフィールドの表示/非表示が連動します。出庫レコードでは緊急バッジも表示されています。
LOOKUP連動 — 商品コードから商品名・単価を自動取得
Section titled “LOOKUP連動 — 商品コードから商品名・単価を自動取得”詳細画面 — 緊急バッジ
Section titled “詳細画面 — 緊急バッジ”
設定画面 — ルール一覧
Section titled “設定画面 — ルール一覧”
設定画面 — アクション詳細(フィールド制御)
Section titled “設定画面 — アクション詳細(フィールド制御)”
このサンプルでは以下を実現しています。
伝票処理:
- 伝票番号の自動採番(
INV-00001形式、欠番再利用対応) - 入庫/出庫/返品に応じた取引先・返品理由フィールドの切り替え
- 取引先マスタ・商品マスタからのルックアップ連動
- 明細テーブルでの複数商品管理と金額自動計算
在庫制御:
- 保存前の在庫チェックと在庫数の自動更新(入庫加算・出庫減算・返品戻し)
- 返品理由=不良品は廃棄扱いで在庫加算しない(廃棄バッジ表示)
- 楽観ロック+自動リトライによる同時編集耐性
- 発注点を下回った場合のアラート通知
ワークフロー:
- 完了伝票の編集保護(二重防御:表示制御 + 保存ブロック)
- 差戻し機能(完了伝票を差戻し状態に戻して再編集可能)
- 管理者のみ完了操作可能(非管理者には警告表示)
棚卸:
- 実数量入力で差異自動計算(過剰=青バッジ / 不足=赤バッジ)
- 承認待ちバッジ + 完了時の承認者自動記録
- 差異あり行の一覧色分け
可視化:
- 一覧画面での入庫/出庫/返品の色分け表示(+ 操作種別バッジ)
- 表計算ビュー・ダッシュボードでの可視化
- 商品マスタに評価額 CALC(単価×在庫数)と粗利率 CALC(粗利率<20%で低粗利バッジ)
必要なアプリ
Section titled “必要なアプリ”入出庫管理アプリ(メイン)
Section titled “入出庫管理アプリ(メイン)”入出庫伝票を登録するアプリです。ルールはすべてこのアプリに設定します。
| フィールド名 | フィールドコード | フィールドタイプ | 説明 |
|---|---|---|---|
| 伝票番号 | 伝票番号 | 文字列(1行) | 自動採番 |
| 入出庫日 | 日付 | 日付 | 伝票日付(初期値: 当日) |
| 操作種別 | 操作種別 | ドロップダウン | 入庫/出庫/返品 |
| 処理状況 | 処理状況 | ドロップダウン | 未処理/処理中/完了/差戻し |
| 取引先コード | 取引先コード | 文字列(1行) | 取引先マスタへのルックアップ |
| 取引先名 | 取引先名 | 文字列(1行) | ルックアップコピー |
| 返品理由 | 返品理由 | ドロップダウン | 不良品/顧客都合/発注ミス/その他 |
| 担当者 | 担当者 | ユーザー選択 | 処理担当者 |
| メモ | メモ | 文字列(複数行) | 備考 |
| 明細(テーブル) | 明細 | テーブル | 商品明細のサブテーブル |
| - 商品コード | 商品コード | ルックアップ | 商品マスタへのルックアップ |
| - 商品名 | 商品名 | 文字列(1行) | ルックアップコピー |
| - 単価 | 単価 | 数値 | ルックアップコピー |
| - 数量 | 数量 | 数値 | 入出庫数量 |
| - 金額 | 金額 | 数値 | 自動計算(単価 x 数量) |
商品マスタアプリ
Section titled “商品マスタアプリ”商品情報と在庫数を管理するアプリです。在庫管理アクションの更新対象となります。カテゴリはオフィス用品に特化しています。
| フィールド名 | フィールドコード | フィールドタイプ | 説明 |
|---|---|---|---|
| 商品コード | 商品コード | 文字列(1行) | 一意の商品識別コード(PRD-00001 自動採番) |
| 商品名 | 商品名 | 文字列(1行) | 商品名称 |
| 単価 | 単価 | 数値 | 商品販売単価 |
| 仕入単価 | 仕入単価 | 数値 | 仕入原価(粗利計算用) |
| 在庫数 | 在庫数 | 数値 | 現在の在庫数 |
| 発注点 | 発注点 | 数値 | この数量を下回ったらアラート |
| 評価額 | 評価額 | 計算 | 単価 × 在庫数(kintone ネイティブ計算、円) |
| 粗利率 | 粗利率 | 計算 | (単価 - 仕入単価) / 単価 × 100(%、20%未満で低粗利バッジ) |
| カテゴリ | カテゴリ | ドロップダウン | コピー用紙/筆記具/ファイル/事務機器/トナー・インク/その他 |
取引先マスタアプリ
Section titled “取引先マスタアプリ”在庫管理専用の取引先マスタ(仕入先・代理店・一般顧客)。各アプリ群が独立したマスタを持つ構成のため、SFA・売上管理とは別アプリ。
| フィールド名 | フィールドコード | フィールドタイプ | 説明 |
|---|---|---|---|
| 取引先コード | 取引先コード | 文字列(1行) | 一意の取引先ID |
| 会社名 | 会社名 | 文字列(1行) | 取引先名称 |
| 取引先区分 | 取引先区分 | チェックボックス | 仕入先/代理店/一般顧客(複数可) |
| 業種 | 業種 | ドロップダウン | IT/製造/小売/教育/官公庁/サービス |
| 担当者名 | 担当者名 | 文字列(1行) | 先方担当者 |
レコード追加・編集画面(20ルール)
Section titled “レコード追加・編集画面(20ルール)”| # | ルール名 | イベント | アクション | 説明 |
|---|---|---|---|---|
| 1 | 自動採番 | 保存する時 | 自動採番 | 伝票番号に INV-{SEQ:5} 形式で自動採番 |
| 2 | 日付初期値 | 追加画面を表示した時 | 値セット | 日付フィールドに {{TODAY()}} をセット |
| 3 | タブレイアウト | 追加画面を表示した時 / 編集画面を表示した時 | タブ表示 | 基本情報 / 明細 / メモの3タブ構成 |
| 4 | 操作種別フィールド制御 | 追加画面を表示した時 / 編集画面を表示した時 / 値を変更した時 | 値で分岐 → フィールド制御 | 操作種別に応じて取引先/返品理由フィールドの表示を切り替え |
| 5 | 取引先ルックアップ連動 | 値を変更した時(取引先コード) | ルックアップ実行 → 値セット | 取引先コード入力時にルックアップを自動実行し関連フィールドをセット |
| 6 | 商品ルックアップ連動 | 値を変更した時(商品コード) | ルックアップ実行 → 値セット | 商品コード入力時にルックアップを自動実行し商品名・単価をセット |
| 7 | 金額自動計算 | 値を変更した時(単価・数量) | テーブルループ → 値セット | 明細テーブルの各行で {{CALC(単価*数量)}} を計算し金額に反映 |
| 8 | 明細テーブル合計 | 追加画面を表示した時 / 値を変更した時 | テーブル小計 | 明細テーブルの金額合計を表示 |
| 9 | 数量フォーマット | 追加画面を表示した時 / 値を変更した時 | 値フォーマット | 数量フィールドに桁区切り(カンマ)を適用 |
| 10 | 返品理由必須制御 | 値を変更した時(操作種別) | 条件分岐 → フィールド制御 | 操作種別が「返品」の場合に返品理由フィールドを表示・必須化 |
| 11 | 緊急バッジ(出庫) | 追加画面を表示した時 / 編集画面を表示した時 / 値を変更した時 | 条件分岐 → バッジ表示 | 操作種別が「出庫」の場合に赤いバッジを表示 |
| 12 | 返品バッジ | 追加画面を表示した時 / 編集画面を表示した時 / 値を変更した時 | 条件分岐 → バッジ表示 | 操作種別が「返品」の場合に黄色いバッジを表示 |
| 13 | 数量バリデーション | 保存する時 | バリデーション | 数量 > 0 のバリデーション |
| 14 | 取引先必須バリデーション | 保存する時 | 条件分岐 → バリデーション | 入庫・出庫時に取引先コードが未入力ならエラー |
| 15 | 返品理由バリデーション | 保存する時 | 条件分岐 → バリデーション | 返品時に返品理由が未入力ならエラー |
| 16 | 在庫チェック+出庫減算 | 保存する時 | 条件分岐 → 在庫管理 | 操作種別が「出庫」なら在庫を減算(在庫不足時はエラー停止) |
| 17 | 入庫在庫加算 | 保存する時 | 条件分岐 → 在庫管理 | 操作種別が「入庫」なら在庫を加算 |
| 18 | 返品在庫戻し | 保存する時 | 条件分岐 → 在庫管理 | 操作種別が「返品」なら在庫を加算して戻す |
| 19 | 保存確認ダイアログ | 保存する時 | 確認ダイアログ | 保存前に「入出庫を登録しますか?」の確認ダイアログを表示 |
| 20 | 完了伝票保護 | 編集画面を表示した時 | 条件分岐 → フィールド制御 + ボタン制御 | 処理状況が「完了」の場合に全フィールドを無効化し保存ボタンを非表示 |
保存後(2ルール)
Section titled “保存後(2ルール)”| # | ルール名 | イベント | アクション | 説明 |
|---|---|---|---|---|
| 21 | 発注点アラート | 保存成功後 | 他アプリ参照 → 条件分岐 → アラート表示 | 在庫が発注点を下回ったら警告ダイアログを表示 |
| 22 | 保存後リダイレクト | 保存成功後 | URL遷移 | 保存完了後に伝票一覧へ自動遷移 |
詳細画面(2ルール)
Section titled “詳細画面(2ルール)”| # | ルール名 | イベント | アクション | 説明 |
|---|---|---|---|---|
| 23 | ステータスバッジ | 詳細画面を表示した時 | 値で分岐 → バッジ表示 | 処理状況(未処理/処理中/完了)に応じたバッジカラーを表示 |
| 24 | 完了伝票スタイル | 詳細画面を表示した時 | 条件分岐 → 条件付き書式 | 処理状況が「完了」の場合にグレーアウト表示 |
一覧画面(6ルール)
Section titled “一覧画面(6ルール)”| # | ルール名 | イベント | アクション | 説明 |
|---|---|---|---|---|
| 25 | 入出庫区分色分け | 一覧画面を表示した時 | 条件付き書式 x3 | 入庫=青、出庫=赤、返品=黄で行を色分け |
| 26 | 処理状況色分け | 一覧画面を表示した時 | 条件付き書式 | 完了=緑で行を色分け |
| 27 | 在庫一覧ボタン | 一覧画面を表示した時 | ボタン追加 | 商品マスタ(在庫一覧)への遷移ボタンを表示 |
| 28 | 操作案内テキスト | 一覧画面を表示した時 | テキスト表示 | 一覧画面に操作方法の案内テキストを表示 |
| 29 | 表計算ビュー | 一覧画面を表示した時 | 表計算ビュー | 伝票一覧をスプレッドシート形式で表示・集計 |
| 30 | 入出庫ダッシュボード | 一覧画面を表示した時 | ダッシュボード | 入庫/出庫件数・金額推移をグラフで可視化 |
Phase 1 / 3 拡張機能(4ルール + データ連携 2ルール)
Section titled “Phase 1 / 3 拡張機能(4ルール + データ連携 2ルール)”| # | ルール名 | イベント | アクション | 説明 |
|---|---|---|---|---|
| 31 | 廃棄扱いバッジ | 画面表示 / 返品理由変更 | 条件分岐 → バッジ表示 | 返品理由=不良品のとき「廃棄扱い」バッジ。inv_r17 も条件分岐で不良品は在庫加算しない |
| 32 | 差戻し中バッジ | 詳細 / 編集画面 | 条件分岐 → バッジ表示 | 処理状況=差戻しのとき「差戻し中」バッジ表示(完了伝票の差戻しは処理状況を「差戻し」に変更すれば再編集可能) |
| 33 | 棚卸レコード自動生成 | 保存成功後 | テーブル↔レコード変換 | 入出庫明細を棚卸アプリにレコード転記(toRecords) |
| 34 | 商品取込ボタン | 画面表示 | ボタン追加 → テーブル取込 | 商品マスタから明細テーブルへ在庫>0の商品を一括取込 |
設定のポイント
Section titled “設定のポイント”在庫更新に submit イベントを使う理由
Section titled “在庫更新に submit イベントを使う理由”アトミックな在庫更新パターン
Section titled “アトミックな在庫更新パターン”在庫管理 アクションは、オプティミスティックロック(revision チェック)と自動リトライを内蔵しています。複数ユーザーが同時に在庫を操作しても、競合エラー(GAIA_CO02)を自動リトライで解消します。
保存する時(submit)├── ifCondition(操作種別 = 出庫)│ └── stockManagement(operation: subtract, onStockShortage: エラー停止)├── ifCondition(操作種別 = 入庫)│ └── stockManagement(operation: add)└── ifCondition(操作種別 = 返品) └── stockManagement(operation: add)操作種別による入出庫の制御
Section titled “操作種別による入出庫の制御”操作種別に応じて異なるフィールドの表示/非表示を切り替えるため、値で分岐 を使用しています。
switchCase(操作種別)├── case 「入庫」: 取引先コード=表示、返品理由=非表示├── case 「出庫」: 取引先コード=表示、返品理由=非表示└── case 「返品」: 取引先コード=表示、返品理由=表示・必須返品処理の在庫戻し
Section titled “返品処理の在庫戻し”返品時は在庫を減算ではなく 加算 します。出庫した商品が戻ってくるため、在庫管理アクションの operation: add を使用します。返品理由(不良品/顧客都合/発注ミス/その他)は保存時のバリデーションで必須チェックを行います。
保存する時(submit)└── ifCondition(操作種別 = 返品) ├── validate(返品理由が未入力ならエラー) └── stockManagement(operation: add) ← 在庫を戻す発注点アラートの仕組み
Section titled “発注点アラートの仕組み”保存成功後に商品マスタから在庫数と発注点を取得し、在庫数が発注点を下回っている場合にアラートを表示します。
保存成功後(submit.success)└── refGetRecords(商品マスタから在庫数・発注点を取得) └── ifCondition(在庫数 < 発注点) └── showAlert(「在庫が発注点を下回りました」)完了伝票の保護と差戻し
Section titled “完了伝票の保護と差戻し”処理状況が「完了」になった伝票は編集不可にします。編集画面を開いた時点でフィールドを全て無効化し、保存もブロックすることで、完了済み伝票の誤変更を防ぎます。
編集画面を表示した時(edit.show)└── ifCondition(処理状況 = 完了) ├── conditionalFieldControl(全フィールド無効化) └── buttonControl(保存ボタン非表示)
保存しようとしたとき(edit.submit)└── ifCondition(処理状況 = 完了) └── cancelSave(保存をキャンセル)差戻しが必要な場合は、処理状況を「差戻し」に変更することで再編集可能状態に戻せます。差戻し中レコードには「差戻し中」バッジが表示されます。
廃棄区分(返品理由=不良品)
Section titled “廃棄区分(返品理由=不良品)”通常の返品は在庫に加算されますが、返品理由が「不良品」の場合は廃棄扱いとして在庫加算しません。不良品フラグが立つと「廃棄扱い」バッジが自動表示されます。
保存する時(submit)└── ifCondition(操作種別=返品 AND 返品理由 ≠ 不良品) └── stockManagement(operation: add)在庫管理と連携する棚卸アプリです。商品マスタからルックアップで商品情報とシステム在庫を取得し、実数量との差異を自動計算します。17 のルール で差異表示・バッジ・色分け・バリデーション・承認フロー を実現。
| フィールド名 | フィールドコード | フィールドタイプ | 説明 |
|---|---|---|---|
| 棚卸番号 | 棚卸番号 | 文字列(1行) | 自動採番 SC-001 |
| 棚卸日 | 棚卸日 | 日付 | 初期値: 当日 |
| 商品コード | 商品コード | ルックアップ | 商品マスタへの参照 |
| 商品名 | 商品名 | 文字列(1行) | ルックアップコピー |
| システム在庫 | システム在庫 | 数値 | ルックアップコピー(商品マスタの在庫数) |
| 実数量 | 実数量 | 数値 | 実際にカウントした数量 |
| 差異 | 差異 | 数値 | 自動計算(実数量 - システム在庫) |
| 棚卸ステータス | 棚卸ステータス | ドロップダウン | 実施中/確認待ち/完了 |
| 担当者 | 担当者 | 文字列 | 棚卸実施者 |
| 承認者 | 承認者 | 文字列 | ステータス=完了への変更時にログインユーザー名を自動記録 |
ルール一覧(17 ルール)
Section titled “ルール一覧(17 ルール)”| # | ルール名 | イベント | アクション | 説明 |
|---|---|---|---|---|
| 1 | 棚卸番号自動採番 | submit | autoNumber(SC-{SEQ:3}) | |
| 2 | 棚卸日初期値 | create.show | setFieldValue(今日) | |
| 3 | 商品ルックアップ | change(商品コード) | triggerLookup | 商品名・システム在庫を取得 |
| 4 | 差異自動計算 | change(実数量,商品コード) | setFieldValue(実数量-システム在庫) | |
| 5 | 不足バッジ | show/change | ifCondition(差異<0) → setFieldBadge(赤) | |
| 6 | 過剰バッジ | show/change | ifCondition(差異>0) → setFieldBadge(青) | |
| 7 | 実数量バリデーション | submit | validate(実数量>=0) | |
| 8 | 商品コード必須 | submit | validate(notEmpty) | |
| 9 | 保存確認 | submit | showConfirmDialog | |
| 10 | 在庫更新 | submit.success | stockManagement | 差異分を商品マスタへ反映 |
| 11 | 在庫更新結果分岐 | submit.success | resultBranch | |
| 12 | 完了レコード保護 | edit.show | ifCondition(完了) → 全フィールド無効化 | |
| 13 | ステータス色分け | index.show | conditionalFormat(完了=緑) | |
| 14 | 表計算ビュー | index.show | customViewSpreadsheet | |
| 15 | 商品マスタボタン | index.show | addButton | 商品マスタへの遷移 |
| 16 | 承認待ちバッジ | detail/edit.show | ifCondition(確認待ち) → setFieldBadge | |
| 17 | 承認者自動記録 | edit.change.棚卸ステータス | ifCondition(完了) → setFieldValue({{loginUser.name}}) |
関連アクションリファレンス
Section titled “関連アクションリファレンス”- 自動採番(autoNumber)
- フィールド値セット(setFieldValue)
- ルックアップ実行(triggerLookup)
- フィールド制御(conditionalFieldControl)
- 条件付き書式(conditionalFormat)
- バッジ設定(setFieldBadge)
- 条件分岐(ifCondition)
- 多分岐(switchCase)
- 確認ダイアログ(showConfirmDialog)
- アラート(showAlert)
- 在庫管理(stockManagement)
- 他アプリ参照(refGetRecords)
- サブテーブル小計(insertSubtableSubtotals)
- テーブルループ(loopSubtable)
- バリデーション(validate)
- 値フォーマット(formatFieldValue)
- タブグループ(createTabGroup)
- ボタン追加(addButton)
- ボタン制御(buttonControl)
- テキスト表示(showMenuText)
- 表計算ビュー(customViewSpreadsheet)
- ダッシュボード(customViewDashboard)
- URL遷移(redirectUrl)