$lastDate && $i < 12;
$nowDate = strtotime($nowDate . " -1 month"), $i++) {
// INSERT実行
$res = doUpdate($db, getUnregistInsertSql(),
array($nowDate, $nowDate, $nowDate));
// 結果が0件ならそれ以上更新しない
if($res == 0) {
break;
}
}
// 完了ボタンが押された場合は状態を更新する
if($doFix == 1) {
$res = doUpdate($db, getDoFixSql(), array($userId));
}
// ユーザー情報を取得
$userInfo = doSelect($db, getUserInfoSql(), array($houseId, $userId));
// ワークシートを取得
$worksheet = doSelect($db, getWorksheetSql(), array($userId));
$plus = 0; // 加算額
$minus = 0; // 減算額
$i = 1;
foreach($worksheet as $row) {
// 未精算の場合は次回精算額を加算
if($row['settled'] == "未精算") {
if($row['price'] > 0) {
$plus += $row['price'];
} else {
$minus += $row['price'];
}
}
if($row['settled'] == "完了") {
$tags .= "
";
} else {
$tags .= "
";
}
$tags .= "| " . $i . " | ";
$tags .= "" . htmlspecialchars($row['date']) . " | ";
$tags .= "" . htmlspecialchars($row['item']) . " | ";
if($row['price'] < 0) {
$tags .= "" . htmlspecialchars($row['price']) . " | ";
} else {
$tags .= "" . htmlspecialchars($row['price']) . " | ";
}
$tags .= "" . htmlspecialchars($row['notes']) . " | ";
$tags .= "" . htmlspecialchars($row['filename']) . " | ";
$tags .= "" . htmlspecialchars($row['fixed_charge']) . " | ";
$tags .= "" . htmlspecialchars($row['settled']) . " | ";
$tags .= "
\n";
$i++;
}
// DBとの接続をクローズ
$db = null;
/**
* ワークシートにある登録済み固定費の最新年月取得SQL
*/
function getLastDateSql() {
$sql = "SELECT\n";
$sql .= " MAX(w.date) AS last_date\n";
$sql .= "FROM\n";
$sql .= " worksheet w\n";
$sql .= "WHERE\n";
$sql .= " w.user_id = ?\n";
$sql .= "AND fixed_charge = 1\n";
$sql .= ";\n";
return $sql;
}
/**
* 未登録の固定費挿入SQL
*/
function getUnregistInsertSql() {
$sql = "INSERT INTO worksheet (\n";
$sql .= " date\n";
$sql .= " ,user_id\n";
$sql .= " ,item\n";
$sql .= " ,price\n";
$sql .= " ,fixed_charge\n";
$sql .= ")\n";
$sql .= "SELECT\n";
$sql .= " ?\n";
$sql .= " ,f.user_id\n";
$sql .= " ,f.item\n";
$sql .= " ,f.price\n";
$sql .= " ,1\n";
$sql .= "FROM\n";
$sql .= " fixed_charge f\n";
$sql .= " LEFT JOIN worksheet w\n";
$sql .= " ON w.user_id = f.user_id\n";
$sql .= " AND w.item = f.item\n";
$sql .= " AND w.date = ?\n";
$sql .= " AND w.fixed_charge = 1\n";
$sql .= "WHERE\n";
$sql .= " w.user_id IS NULL\n";
$sql .= "AND f.start_month <= ?\n";
$sql .= ";\n";
return $sql;
}
/**
* ユーザー情報取得SQL
*/
function getUserInfoSql() {
$sql = "SELECT\n";
$sql .= " h.name AS house_name\n";
$sql .= " ,u.name AS user_name\n";
$sql .= "FROM\n";
$sql .= " inhabitant i\n";
$sql .= " INNER JOIN house h\n";
$sql .= " ON h.id = i.house_id\n";
$sql .= " INNER JOIN user u\n";
$sql .= " ON u.id = i.user_id\n";
$sql .= "WHERE\n";
$sql .= " i.house_id = ?\n";
$sql .= "AND i.user_id = ?\n";
$sql .= ";\n";
return $sql;
}
/**
* ワークシート取得SQL
*/
function getWorksheetSql() {
$sql = "SELECT\n";
$sql .= " w.date\n";
$sql .= " ,w.item\n";
$sql .= " ,w.price\n";
$sql .= " ,w.notes\n";
$sql .= " ,w.filename\n";
$sql .= " ,CASE w.fixed_charge\n";
$sql .= " WHEN 1 THEN '○'\n";
$sql .= " ELSE ''\n";
$sql .= " END AS fixed_charge\n";
$sql .= " ,CASE w.settled\n";
$sql .= " WHEN 1 THEN '完了'\n";
$sql .= " ELSE '未精算'\n";
$sql .= " END AS settled\n";
$sql .= "FROM\n";
$sql .= " worksheet w\n";
$sql .= "WHERE\n";
$sql .= " w.user_id = ?\n";
$sql .= "ORDER BY\n";
$sql .= " w.date DESC\n";
$sql .= " ,w.fixed_charge\n";
$sql .= " ,w.price\n";
$sql .= " ,w.item\n";
$sql .= ";\n";
return $sql;
}
/**
* まとめて完了更新SQL
*/
function getDoFixSql() {
$sql = "UPDATE\n";
$sql .= " worksheet\n";
$sql .= "SET\n";
$sql .= " settled = 1\n";
$sql .= "WHERE\n";
$sql .= " user_id = ?\n";
$sql .= ";\n";
return $sql;
}
?>