Files
octopus/myproject/inventory/templates/inventory/showcase/form.html
Andrey Smakotin dd184265ee Add default showcase selection per warehouse
- Add is_default field to Showcase model with unique constraint per warehouse
- Implement Showcase.save() to ensure only one default per warehouse
- Add SetDefaultShowcaseView for AJAX-based default selection
- Update ShowcaseForm to include is_default checkbox
- Add interactive checkbox UI in showcase list with AJAX functionality
- Update POS API to return showcase.is_default instead of warehouse.is_default
- Update terminal.js to auto-select showcase based on its is_default flag
- Add migration for is_default field

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-20 11:40:08 +03:00

170 lines
6.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends "base.html" %}
{% block title %}{{ title }}{% endblock %}
{% block content %}
<div class="container-fluid">
<!-- Header -->
<div class="row mb-4">
<div class="col-12">
<h1 class="mb-2">
<i class="bi bi-flower1 text-primary me-2"></i>{{ form_title }}
</h1>
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{% url 'inventory:inventory-home' %}">Склад</a></li>
<li class="breadcrumb-item"><a href="{% url 'inventory:showcase-list' %}">Витрины</a></li>
<li class="breadcrumb-item active">{{ form_title }}</li>
</ol>
</nav>
</div>
</div>
<!-- Form -->
<div class="row">
<div class="col-lg-8">
<div class="card">
<div class="card-body">
<form method="post" novalidate>
{% csrf_token %}
{% if form.non_field_errors %}
<div class="alert alert-danger">
{{ form.non_field_errors }}
</div>
{% endif %}
<!-- Name -->
<div class="mb-3">
<label for="{{ form.name.id_for_label }}" class="form-label fw-semibold">
{{ form.name.label }}
<span class="text-danger">*</span>
</label>
{{ form.name }}
{% if form.name.errors %}
<div class="invalid-feedback d-block">
{{ form.name.errors }}
</div>
{% endif %}
{% if form.name.help_text %}
<small class="form-text text-muted">{{ form.name.help_text }}</small>
{% endif %}
</div>
<!-- Warehouse -->
<div class="mb-3">
<label for="{{ form.warehouse.id_for_label }}" class="form-label fw-semibold">
{{ form.warehouse.label }}
<span class="text-danger">*</span>
</label>
{{ form.warehouse }}
{% if form.warehouse.errors %}
<div class="invalid-feedback d-block">
{{ form.warehouse.errors }}
</div>
{% endif %}
{% if form.warehouse.help_text %}
<small class="form-text text-muted">{{ form.warehouse.help_text }}</small>
{% endif %}
</div>
<!-- Description -->
<div class="mb-3">
<label for="{{ form.description.id_for_label }}" class="form-label fw-semibold">
{{ form.description.label }}
</label>
{{ form.description }}
{% if form.description.errors %}
<div class="invalid-feedback d-block">
{{ form.description.errors }}
</div>
{% endif %}
{% if form.description.help_text %}
<small class="form-text text-muted">{{ form.description.help_text }}</small>
{% endif %}
</div>
<!-- Is Active -->
<div class="mb-3">
<div class="form-check">
{{ form.is_active }}
<label class="form-check-label" for="{{ form.is_active.id_for_label }}">
{{ form.is_active.label }}
</label>
{% if form.is_active.help_text %}
<div><small class="form-text text-muted">{{ form.is_active.help_text }}</small></div>
{% endif %}
</div>
{% if form.is_active.errors %}
<div class="invalid-feedback d-block">
{{ form.is_active.errors }}
</div>
{% endif %}
</div>
<!-- Is Default -->
<div class="mb-4">
<div class="form-check">
{{ form.is_default }}
<label class="form-check-label" for="{{ form.is_default.id_for_label }}">
{{ form.is_default.label }}
</label>
{% if form.is_default.help_text %}
<div><small class="form-text text-muted">{{ form.is_default.help_text }}</small></div>
{% endif %}
</div>
{% if form.is_default.errors %}
<div class="invalid-feedback d-block">
{{ form.is_default.errors }}
</div>
{% endif %}
</div>
<!-- Buttons -->
<div class="d-flex gap-2">
<button type="submit" class="btn btn-primary">
<i class="bi bi-check-circle me-1"></i>{{ submit_text }}
</button>
<a href="{% url 'inventory:showcase-list' %}" class="btn btn-secondary">
<i class="bi bi-x-circle me-1"></i>Отмена
</a>
</div>
</form>
</div>
</div>
</div>
<!-- Info Card (for edit mode) -->
{% if object %}
<div class="col-lg-4">
<div class="card">
<div class="card-header bg-light">
<h6 class="mb-0">Информация о витрине</h6>
</div>
<div class="card-body">
<dl class="row mb-0">
<dt class="col-sm-6">Создана:</dt>
<dd class="col-sm-6 text-end">{{ object.created_at|date:"d.m.Y H:i" }}</dd>
<dt class="col-sm-6">Обновлена:</dt>
<dd class="col-sm-6 text-end">{{ object.updated_at|date:"d.m.Y H:i" }}</dd>
{% if active_reservations_count is not None %}
<dt class="col-sm-6">Активные резервы:</dt>
<dd class="col-sm-6 text-end">
{% if active_reservations_count > 0 %}
<span class="badge bg-info">{{ active_reservations_count }}</span>
{% else %}
<span class="text-muted"></span>
{% endif %}
</dd>
{% endif %}
</dl>
</div>
</div>
</div>
{% endif %}
</div>
</div>
{% endblock %}