Загрузка данных


<?php
require_once 'config/database.php';

if(!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

$errors = [];
$success = '';

$stmt = $pdo->query("SELECT * FROM sale_statuses ORDER BY name");
$statuses = $stmt->fetchAll();

$stmt = $pdo->query("SELECT * FROM positions ORDER BY name");
$positions = $stmt->fetchAll();

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $sale_number = trim($_POST['sale_number']);
    $position_id = $_POST['position_id'];
    $amount = $_POST['amount'];
    $sale_date = $_POST['sale_date'];
    $status_id = $_POST['status_id'] ?? null;
    $custom_status = trim($_POST['custom_status'] ?? '');
    $is_custom = isset($_POST['is_custom']);

    if(empty($sale_number)) {
        $errors['sale_number'] = 'Введите номер продажи';
    } else {
        $stmt = $pdo->prepare("SELECT id FROM sales WHERE sale_number = ?");
        $stmt->execute([$sale_number]);
        if($stmt->fetch()) {
            $errors['sale_number'] = 'Номер продажи уже существует';
        }
    }

    if(empty($position_id)) {
        $errors['position_id'] = 'Выберите должность';
    }

    if(empty($amount) || $amount <= 0) {
        $errors['amount'] = 'Введите корректную сумму';
    }

    if(empty($sale_date)) {
        $errors['sale_date'] = 'Выберите дату';
    }

    if($is_custom) {
        if(empty($custom_status)) {
            $errors['custom_status'] = 'Введите статус';
        }
        $status_id = null;
    } else {
        if(empty($status_id)) {
            $errors['status_id'] = 'Выберите статус';
        }
        $custom_status = null;
    }

    if(empty($errors)) {
        $stmt = $pdo->prepare("INSERT INTO sales (sale_number, user_id, amount, sale_date, status_id, custom_status) VALUES (?, ?, ?, ?, ?, ?)");
        $stmt->execute([$sale_number, $_SESSION['user_id'], $amount, $sale_date, $status_id, $custom_status]);
        $success = 'Продажа успешно добавлена';
        $_POST = [];
    }
}

$stmt = $pdo->prepare("
    SELECT s.*, ss.name as status_name, p.name as position_name, u.full_name
    FROM sales s
    LEFT JOIN sale_statuses ss ON s.status_id = ss.id
    LEFT JOIN users u ON s.user_id = u.id
    LEFT JOIN positions p ON u.position_id = p.id
    WHERE s.user_id = ?
    ORDER BY s.created_at DESC
");
$stmt->execute([$_SESSION['user_id']]);
$sales = $stmt->fetchAll();

include 'includes/header.php';
?>

<h2>Мои продажи</h2>

<?php if($success): ?>
    <div class="success"><?= $success ?></div>
<?php endif; ?>

<div class="form-container">
    <h3>Добавить новую продажу</h3>
    
    <form method="POST">
        <div class="form-group">
            <label>Номер продажи *</label>
            <input type="text" name="sale_number" value="<?= $_POST['sale_number'] ?? '' ?>">
            <?php if(isset($errors['sale_number'])): ?>
                <div class="error"><?= $errors['sale_number'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group">
            <label>Должность *</label>
            <select name="position_id">
                <option value="">Выберите должность</option>
                <?php foreach($positions as $position): ?>
                    <option value="<?= $position['id'] ?>" <?= (isset($_POST['position_id']) && $_POST['position_id'] == $position['id']) ? 'selected' : '' ?>>
                        <?= htmlspecialchars($position['name']) ?>
                    </option>
                <?php endforeach; ?>
            </select>
            <?php if(isset($errors['position_id'])): ?>
                <div class="error"><?= $errors['position_id'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group">
            <label>Сумма *</label>
            <input type="number" step="0.01" name="amount" value="<?= $_POST['amount'] ?? '' ?>">
            <?php if(isset($errors['amount'])): ?>
                <div class="error"><?= $errors['amount'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group">
            <label>Дата *</label>
            <input type="date" name="sale_date" value="<?= $_POST['sale_date'] ?? '' ?>">
            <?php if(isset($errors['sale_date'])): ?>
                <div class="error"><?= $errors['sale_date'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group">
            <label>Статус продажи *</label>
            <div class="checkbox-group">
                <?php foreach($statuses as $status): ?>
                    <label>
                        <input type="radio" name="status_id" value="<?= $status['id'] ?>" 
                            <?= (isset($_POST['status_id']) && $_POST['status_id'] == $status['id']) ? 'checked' : '' ?>
                            onclick="document.getElementById('custom_status_field').style.display='none'">
                        <?= htmlspecialchars($status['name']) ?>
                    </label>
                <?php endforeach; ?>
                <label>
                    <input type="checkbox" name="is_custom" value="1" 
                        <?= isset($_POST['is_custom']) ? 'checked' : '' ?>
                        onclick="document.getElementById('custom_status_field').style.display=this.checked?'block':'none'; if(this.checked) document.querySelectorAll('input[name=status_id]').forEach(r => r.checked=false);">
                    Иной статус
                </label>
            </div>
            <?php if(isset($errors['status_id'])): ?>
                <div class="error"><?= $errors['status_id'] ?></div>
            <?php endif; ?>
        </div>

        <div class="form-group" id="custom_status_field" style="display: <?= isset($_POST['is_custom']) ? 'block' : 'none' ?>">
            <label>Описание статуса *</label>
            <textarea name="custom_status" rows="3"><?= $_POST['custom_status'] ?? '' ?></textarea>
            <?php if(isset($errors['custom_status'])): ?>
                <div class="error"><?= $errors['custom_status'] ?></div>
            <?php endif; ?>
        </div>

        <button type="submit" class="btn">Добавить продажу</button>
    </form>
</div>

<h3 style="margin-top: 40px;">История продаж</h3>

<?php if(count($sales) > 0): ?>
    <table>
        <thead>
            <tr>
                <th>Номер</th>
                <th>Должность</th>
                <th>Имя</th>
                <th>Сумма</th>
                <th>Дата</th>
                <th>Статус</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach($sales as $sale): ?>
                <tr>
                    <td><?= htmlspecialchars($sale['sale_number']) ?></td>
                    <td><?= htmlspecialchars($sale['position_name']) ?></td>
                    <td><?= htmlspecialchars($sale['full_name']) ?></td>
                    <td><?= number_format($sale['amount'], 2, '.', ' ') ?> ₽</td>
                    <td><?= date('d.m.Y', strtotime($sale['sale_date'])) ?></td>
                    <td><?= $sale['custom_status'] ? htmlspecialchars($sale['custom_status']) : htmlspecialchars($sale['status_name']) ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
<?php else: ?>
    <p>Продажи отсутствуют</p>
<?php endif; ?>

<?php include 'includes/footer.php'; ?>