請求情報の集計結果を返却する API です。
パラメータでセットされた条件に該当する請求情報の
集計結果を計算して返却します。
日付は請求確定日で算出します。
| メソッド | URI | Headers |
|---|---|---|
/api/claim/total/{year}/{month}?search={search} |
Default |
| パラメーター名 | 型 | 内容 | 特記 |
|---|---|---|---|
| year | int | 年 / 必ず月とセット / 未来はない | |
| month | int | 月 / 必ず年とセット / 未来はない | |
| search | string | 監理団体名/請求種類/状態/金額 空白区切り で LIKE 検索 | null の場合あり |
/api/claim/total/2021/1?search=〇〇
| パラメーター名 | 型 | 内容 | 特記 |
|---|---|---|---|
| total_claim_count | int | 総請求件数 | quary が空の時は総合計 |
| total_claim_amaount | int | 総請求金額 | quary が空の時は総合計 |
| settled_claim_count | int | 決済済み件数 | quary が空の時は総合計 |
| settled_claim_amount | int | 決済済み金額 | quary が空の時は総合計 |
| unsettled_claim_count | int | 未決済件数 | quary が空の時は総合計 |
| settled_claim_amount | int | 未決済金額 | quary が空の時は総合計 |
{
"result" : true,
"errors" : "",
"data" : {
'total_claim_count' : 100,
'total_claim_amaount' : 1000000,
'settled_claim_count' : 70,
'settled_claim_amount' : 700000,
'unsettled_claim_count' : 30,
'settled_claim_amount' : 300000,
},
}
{primary} 何もなければ空配列で返却
失敗ではなく、成功として返却。
{danger} 失敗時は200以外のエラーコードが返却されます。共通ルールのレスポンスをチェック。
payment_typeのEnumの文字列の値の配列と$keywordが一致するものを$paymentTypeとして取得します。statusのEnumの文字列の値の配列と$keywordが一致するものを$statusとして取得。$keywordのうち、半角数値のキーワードがあればその値でtotal_amountを検索します。statusが「1:未入金」のレコードのみに絞って未入金の総件数と総請求額を計算して取得します。SELECT
count(*) as `count`
, sum(`organization_payments`.`amount`) as `total`
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')}%"
AND `status` = 1 // 監理団体 請求データの請求状態が「1:未入金」
AND `organization_payments`.`deleted_at` IS NULL
statusが「2:入金済み」のレコードのみに絞って入金済みの総件数と総請求額を計算して取得します。SELECT
count(*) as `count`
, sum(`organization_payments`.`amount`) as `total`
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')}%"
AND `status` = 2 // 監理団体 請求データの請求状態が「2:入金済み」
AND `organization_payments`.`deleted_at` IS NULL
上記の方法で取得した未入金と入金済みの総件数と総請求額を合算します。
{warning}
name,payment_type,status,amountでの絞り込みは、GETパラメータsearchが渡されたときのみ必要になります。
{primary} バリデーションはありません。