feat(Product): Supprime le champ 'installation' et ajuste les tarifs.
```
This commit is contained in:
Serreau Jovann
2026-01-27 08:46:12 +01:00
parent acbdd66510
commit d0de3b479c
7 changed files with 549 additions and 524 deletions

954
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
# Utiliser une image PHP 8.3 FPM (Ubuntu-based)
FROM php:8.3-fpm
FROM php:8.4-fpm
# Arguments pour les permissions de fichiers
ARG UID

View File

@@ -36,9 +36,6 @@ class Product
#[ORM\Column]
private ?float $priceSup = null;
#[ORM\Column]
private ?float $installation = null;
#[ORM\Column]
private ?float $caution = null;
@@ -168,18 +165,6 @@ class Product
return $this;
}
public function getInstallation(): ?float
{
return $this->installation;
}
public function setInstallation(float $installation): static
{
$this->installation = $installation;
return $this;
}
public function getCaution(): ?float
{
return $this->caution;

View File

@@ -49,11 +49,6 @@ class ProductType extends AbstractType
'required' => true,
'html5' => true,
])
->add('installation',NumberType::class,[
'label' => 'Installation du produit',
'required' => true,
'html5' => true,
])
->add('priceDay',NumberType::class,[
'label' => 'Prix journée',
'required' => true,

View File

@@ -184,36 +184,36 @@
<div class="w-full">
{% block body %}{% endblock %}
{# FOOTER GLASSMORPHISM #}
<footer class="relative mt-auto p-6 md:p-10">
<div class="bg-white/40 dark:bg-slate-800/40 backdrop-blur-xl border border-white/20 dark:border-slate-700/50 rounded-[2rem] p-6 shadow-xl">
<div class="flex flex-col md:flex-row items-center justify-between gap-4 text-center md:text-left">
{# Copyright & Branding #}
<div class="space-y-1">
<p class="text-[10px] font-black text-slate-400 dark:text-slate-500 uppercase tracking-[0.2em]">Propulsé par</p>
<p class="text-sm font-bold text-slate-800 dark:text-white">
Développé par <span class="text-blue-600">SARL SITECONSEIL</span>
</p>
</div>
{# Versioning & Links #}
<div class="flex flex-col items-center md:items-end space-y-1">
<div class="flex items-center space-x-4">
<a href="https://www.siteconseil.fr" target="_blank" class="text-xs font-medium text-slate-500 hover:text-blue-600 transition-colors underline decoration-blue-500/30 underline-offset-4">www.siteconseil.fr</a>
<span class="w-1 h-1 bg-slate-300 dark:bg-slate-700 rounded-full"></span>
<a href="mailto:s.com@siteconseil.fr" class="text-xs font-medium text-slate-500 hover:text-blue-600 transition-colors">s.com@siteconseil.fr</a>
</div>
<p class="text-[9px] font-black text-slate-400/60 uppercase tracking-widest">
Crm Engine <span class="text-slate-500 dark:text-slate-300">1.0.0</span>
</p>
</div>
</div>
</div>
</footer>
</div>
</div>
{# FOOTER GLASSMORPHISM #}
<footer class="mt-auto p-6 md:p-10">
<div class="bg-white/40 dark:bg-slate-800/40 backdrop-blur-xl border border-white/20 dark:border-slate-700/50 rounded-[2rem] p-6 shadow-xl">
<div class="flex flex-col md:flex-row items-center justify-between gap-4 text-center md:text-left">
{# Copyright & Branding #}
<div class="space-y-1">
<p class="text-[10px] font-black text-slate-400 dark:text-slate-500 uppercase tracking-[0.2em]">Propulsé par</p>
<p class="text-sm font-bold text-slate-800 dark:text-white">
Développé par <span class="text-blue-600">SARL SITECONSEIL</span>
</p>
</div>
{# Versioning & Links #}
<div class="flex flex-col items-center md:items-end space-y-1">
<div class="flex items-center space-x-4">
<a href="https://www.siteconseil.fr" target="_blank" class="text-xs font-medium text-slate-500 hover:text-blue-600 transition-colors underline decoration-blue-500/30 underline-offset-4">www.siteconseil.fr</a>
<span class="w-1 h-1 bg-slate-300 dark:bg-slate-700 rounded-full"></span>
<a href="mailto:s.com@siteconseil.fr" class="text-xs font-medium text-slate-500 hover:text-blue-600 transition-colors">s.com@siteconseil.fr</a>
</div>
<p class="text-[9px] font-black text-slate-400/60 uppercase tracking-widest">
Crm Engine <span class="text-slate-500 dark:text-slate-300">1.0.0</span>
</p>
</div>
</div>
</div>
</footer>
</main> {# Fin du main existant #}
</div>

View File

@@ -118,17 +118,6 @@
Finances & Tarifs
</h3>
<div class="space-y-8">
{# INSTALLATION (Montant) #}
<div class="p-5 bg-white/5 rounded-3xl border border-white/5 relative overflow-hidden group">
<div class="absolute top-0 right-0 p-2 opacity-10">
<svg class="w-12 h-12 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" /></svg>
</div>
{{ form_label(form.installation, 'Forfait Installation (€)', {'label_attr': {'class': 'text-[9px] font-black text-amber-500 uppercase tracking-widest mb-3 block'}}) }}
{{ form_widget(form.installation, {'attr': {'class': 'w-full bg-slate-950/50 border-white/10 rounded-xl text-amber-500 font-bold focus:ring-amber-500/20 focus:border-amber-500 transition-all py-3 px-4 text-lg'}}) }}
<p class="text-[8px] text-slate-500 mt-2 font-bold uppercase italic tracking-tighter">Saisir 0 si inclus dans la loc</p>
</div>
{# PRIX LOCATION #}
<div class="space-y-6">
<div>
@@ -148,12 +137,26 @@
</div>
</div>
<hr class="mt-2"/>
{# CAUTION #}
<div class="pt-8 border-t border-white/5">
{{ form_label(form.caution, 'Montant de la Caution (€)', {'label_attr': {'class': 'text-[10px] font-black text-slate-500 uppercase tracking-widest ml-1 mb-2 block'}}) }}
<div class="relative">
{{ form_widget(form.caution, {'attr': {'class': 'w-full bg-slate-900/50 border-white/5 rounded-2xl text-white font-mono focus:ring-blue-500/20 focus:border-blue-500 transition-all py-3 px-5 text-center'}}) }}
</div>
<div class="mt-4 p-4 rounded-2xl bg-white/5 border border-white/10 backdrop-blur-md shadow-xl">
<div class="flex gap-3">
<div class="flex-shrink-0">
<svg class="w-5 h-5 text-blue-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg>
</div>
<p class="text-[11px] leading-relaxed text-slate-300">
<strong class="text-white block mb-1 uppercase tracking-wider">Information importante</strong>
Cette somme sera prélevée sur le compte bancaire du client. Conformément aux politiques de <span class="text-blue-400">Stripe</span>, les fonds peuvent être bloqués pour un maximum de <span class="font-bold text-white">4 jours</span>. Passé ce délai, aucun prélèvement ultérieur ne sera possible.
</p>
</div>
</div>
</div>
</div>
</div>

View File

@@ -122,6 +122,22 @@
<span class="text-2xl font-black text-slate-900 italic">+ {{ product.priceSup }}€</span>
<span class="text-[10px] font-black text-slate-400 uppercase tracking-widest italic">Par journée supplémentaire</span>
</div>
<div class="flex items-center gap-3 bg-slate-50 self-start px-5 py-3 rounded-2xl border border-slate-100 w-fit">
<span class="text-2xl font-black text-slate-900 italic">{{ product.caution }}€</span>
<span class="text-[10px] font-black text-slate-400 uppercase tracking-widest italic">LA CAUTION</span>
</div>
<div class="mt-3 max-w-sm p-4 rounded-2xl bg-white/40 border border-slate-200/60 backdrop-blur-sm shadow-sm">
<div class="flex gap-3">
<svg class="w-5 h-5 text-blue-500 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path>
</svg>
<p class="text-[11px] leading-relaxed text-slate-500">
<strong class="text-slate-900 font-bold uppercase tracking-tight block mb-0.5">Caution</strong>
Cette somme sera prélevée et pourra être bloquée pour un maximum de <span class="text-slate-900 font-semibold">4 jours</span> selon les politiques de <span class="font-medium text-blue-600">Stripe</span>.
</p>
</div>
</div>
</div>
</div>