153 lines
7.2 KiB
HTML
153 lines
7.2 KiB
HTML
{% extends "base.html" %}
|
|
{% load i18n %}
|
|
{% load short_name %}
|
|
|
|
{% block head %}
|
|
<style>
|
|
.attachment-card {
|
|
transition: all 0.2s ease;
|
|
}
|
|
.attachment-card:hover {
|
|
box-shadow: 0 0.25rem 0.5rem rgba(0,0,0,0.1);
|
|
}
|
|
.delete-btn {
|
|
opacity: 0.6;
|
|
transition: opacity 0.2s ease;
|
|
}
|
|
.delete-btn:hover {
|
|
opacity: 1;
|
|
}
|
|
</style>
|
|
{% endblock head %}
|
|
|
|
{% block content %}
|
|
<div class="container mt-5">
|
|
<nav aria-label="breadcrumb">
|
|
<ol class="breadcrumb">
|
|
<li class="breadcrumb-item"><a href="{% url 'contracts:contracts_index' %}">{% translate "Contrats" %}</a></li>
|
|
<li class="breadcrumb-item"><a href="{% url 'contracts:contracts_orders_detail' order.id %}">{{ order.order_code }}</a></li>
|
|
<li class="breadcrumb-item active" aria-current="page">{% translate "Justificatifs" %}</li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<h2>{% translate "Justificatifs de la déclaration de créance" %}</h2>
|
|
|
|
{% if messages %}
|
|
{% for message in messages %}
|
|
<div class="alert {% if message.tags == 'success' %}alert-success{% elif message.tags == 'error' %}alert-danger{% else %}alert-info{% endif %} alert-dismissible fade show" role="alert">
|
|
{{ message }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endfor %}
|
|
{% endif %}
|
|
|
|
<!-- Informations sur la déclaration de créance -->
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="mb-0"><i class="bi bi-file-earmark-text me-2"></i>{% translate "Déclaration de créance" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-md-8">
|
|
<p class="mb-1"><strong>{% translate "Titre" %} :</strong> {{ claim_doc.title }}</p>
|
|
<p class="mb-1"><strong>{% translate "Commande" %} :</strong> {{ order.order_code }}</p>
|
|
<p class="mb-0"><strong>{% translate "Date de création" %} :</strong> {{ claim_doc.uploaded_at|date:"d/m/Y H:i" }}</p>
|
|
</div>
|
|
<div class="col-md-4 text-md-end">
|
|
<a href="{{ claim_doc_private_url }}" target="_blank" class="btn btn-outline-primary">
|
|
<i class="bi bi-file-earmark-pdf me-1"></i>{% translate "Voir le document" %}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Formulaire d'ajout de pièce jointe -->
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h5 class="mb-0"><i class="bi bi-plus-circle me-2"></i>{% translate "Ajouter un justificatif" %}</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<form method="post" enctype="multipart/form-data">
|
|
{% csrf_token %}
|
|
<div class="row g-3">
|
|
<div class="col-md-5">
|
|
<label for="{{ form.title.id_for_label }}" class="form-label">{{ form.title.label }}</label>
|
|
{{ form.title }}
|
|
{% if form.title.errors %}
|
|
<div class="invalid-feedback d-block">{{ form.title.errors }}</div>
|
|
{% endif %}
|
|
</div>
|
|
<div class="col-md-5">
|
|
<label for="{{ form.document.id_for_label }}" class="form-label">{{ form.document.label }}</label>
|
|
{{ form.document }}
|
|
{% if form.document.errors %}
|
|
<div class="invalid-feedback d-block">{{ form.document.errors }}</div>
|
|
{% endif %}
|
|
</div>
|
|
<div class="col-md-2 d-flex align-items-end">
|
|
<button type="submit" class="btn btn-primary w-100">
|
|
<i class="bi bi-upload me-1"></i>{% translate "Ajouter" %}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Liste des pièces jointes -->
|
|
<div class="card">
|
|
<div class="card-header d-flex justify-content-between align-items-center">
|
|
<h5 class="mb-0"><i class="bi bi-paperclip me-2"></i>{% translate "Justificatifs attachés" %}</h5>
|
|
<span class="badge bg-secondary">{{ attachments|length }}</span>
|
|
</div>
|
|
<div class="card-body">
|
|
{% if attachments %}
|
|
<div class="list-group">
|
|
{% for att in attachments %}
|
|
<div class="list-group-item list-group-item-action attachment-card d-flex justify-content-between align-items-center">
|
|
<div class="d-flex align-items-center">
|
|
<i class="bi bi-file-earmark text-secondary me-3 fs-4"></i>
|
|
<div>
|
|
<a href="{{ att.private_url }}" target="_blank" class="text-decoration-none fw-medium">
|
|
{{ att.title }}
|
|
</a>
|
|
<br>
|
|
<small class="text-muted">
|
|
{% translate "Ajouté le" %} {{ att.uploaded_at|date:"d/m/Y H:i" }}
|
|
{% if att.uploaded_by %}
|
|
{% translate "par" %} {{ att.uploaded_by|short_name }}
|
|
{% endif %}
|
|
</small>
|
|
</div>
|
|
</div>
|
|
<div class="d-flex align-items-center gap-2">
|
|
<a href="{{ att.private_url }}" target="_blank" class="btn btn-sm btn-outline-primary" title="{% translate 'Télécharger' %}">
|
|
<i class="bi bi-download"></i>
|
|
</a>
|
|
<form method="post" action="{% url 'contracts:delete_claim_attachment' att.id %}" class="d-inline" onsubmit="return confirm('{% translate "Êtes-vous sûr de vouloir supprimer ce justificatif ?" %}');">
|
|
{% csrf_token %}
|
|
<button type="submit" class="btn btn-sm btn-outline-danger delete-btn" title="{% translate 'Supprimer' %}">
|
|
<i class="bi bi-trash"></i>
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% else %}
|
|
<p class="text-muted mb-0 text-center py-4">
|
|
<i class="bi bi-inbox fs-1 d-block mb-2"></i>
|
|
{% translate "Aucun justificatif n'a encore été ajouté à cette déclaration de créance." %}
|
|
</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-4">
|
|
<a href="{% url 'contracts:contracts_orders_detail' order.id %}" class="btn btn-secondary">
|
|
<i class="bi bi-arrow-left me-1"></i>{% translate "Retour à la commande" %}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|