請求管理一覧_API


概要

請求管理一覧の請求情報の一覧を返却する API です。

日付は請求確定日で算出します。


エンドポイント

メソッド URI Headers
GET /api/claim/list/{year}/{month/{page}/{per_page}?search={search} Default

リクエストパラメーター

パラメーター名 内容 特記
year int 年 / 必ず月とセット / 未来はない
month int 月 / 必ず年とセット / 未来はない
search string 監理団体名/請求種類/状態/金額  空白区切り で LIKE 検索
page int 現在のページ(何回実行したか何 P 目かを表す) 以降加算されていく
per_page int リクエスト件数(50 なら 50 件返却)
/api/claim/list/2021/1/0/50?search=〇〇

{primary} pageが 0 の時は= 1 ページ目 /  1 の時は 2 ページ目と同義となる


レスポンス

パラメーター名 内容 特記
id int 請求情報の ID
type int 請求種類 1:毎月 5:初月 10:アカウント停止
name string 請求先の監理団体名称
status int 請求状態 1:未入金 2:入金済み
amount int 請求金額
{
    "result"   : true,
    "errors"   : "",
    "data"     : [
        {
            'id'          : 1,
            'type'        : 1,
            'name'        : 'テスト監理団体',
            'status'      : 2,
            'amount'      : 100000,
        },
        {
            'id'          : 2,
            'type'        : 1,
            'name'        : 'ttテスト監理団体',
            'status'      : 2,
            'amount'      : 100000,
        },
    ],
}

{primary} 何もなければ空配列で返却
失敗ではなく、成功として返却。


{danger} 失敗時は200以外のエラーコードが返却されます。共通ルールのレスポンスをチェック。


データ取得

データ取得SQL

  • $request->get('search')が複数あった場合、[$keyword1, $keyword2...]と、配列にし、検索対象カラムでループします。
  • デリミタ(区切り文字)は半角スペースと全角スペースを対象とします。
  • payment_typeのEnumの文字列の値の配列と$keywordが一致するものを$paymentTypeとして取得します。
  • statusのEnumの文字列の値の配列と$keywordが一致するものを$statusとして取得。
  • $keywordのうち、半角数値のキーワードがあればその値でtotal_amountを検索します。
  • パラメータにして指定した年月で取得データを絞り込みます。
  • $request->route('page')で渡されたOFFSET値の場所から、$request->route('per_page')にて渡された件数のみデータ取得を行います。
SELECT
    *
FROM
    `organization_payments`
LEFT JOIN
    `organizations`
ON
    `organization_payments`.`organization_id` = `organizations`.`id`
WHERE
    (
        `organizations`.`name` LIKE "%{$keyword1}%"
    OR  `organizations`.`name` LIKE "%{$keyword2}%"
    OR ...

    OR  `organization_payments`.`payment_type` IN ($paymentType1, $paymentType2, ...)
    OR  `organization_payments`.`status`       IN ($status1, $status2, ...)
    OR  `organization_payments`.`total_amount` IN ($amount1, $amount2, ...)
    )
AND `organization_payments`.`deleted_at` IS NULL
AND `organization_payments`.`payment_year` LIKE "%{$request->get('year')}%"
AND `organization_payments`.`payment_month` LIKE "%{$request->get('month')}%"
ORDER BY
    `organizations`.`id` DESC
LIMIT $request->route('per_page') OFFSET $request->route('page')

{warning} name, payment_type, status, amountの検索は、GETパラメータsearchが渡されたときのみ必要になります。


バリデーション

{primary} バリデーションはありません。


RUN