{% set equipement = intervention.equipement %} {% set equipementHauteur = equipement and equipement.getEquipementHauteurs[0] is defined ? equipement.getEquipementHauteurs[0] : null %} {% set is_pac = equipement and equipement.equipementFamille and equipement.equipementFamille.id == 10 %} {% set affichage = 'validation' %} {# on force type à 'technique' pour que tous les champs soient désactivés (#type == 'technique' ? 'disabled') #} {% set type = 'technique' %} {% set disabled = 'disabled' %} {% set souscripteur = equipement ? equipement.getClientSouscripteur : null %} {% set pac_id = constant('App\\Entity\\EquipementFamille::FAMILLE_PAC_ID') %} {% set contrat = equipement ? equipement.getLastContrat : null %} {% set isGU = (contrat is null and equipement and equipement.datePremierAllumage and equipement.datePremierAllumage|date_modify("+1 year")|date('U') >= "now"|date('U')) ? true : false %} {% set contrat_echu = (contrat and contrat.dateFinContrat < 'now'|date and not isGU) ? true : false %} {% set prise_contrat = intervention.estPriseContrat %} {% set hors_contrat = not contrat or contrat_echu %} {% set agent = intervention.planning.getUtilisateurAgent %} {% set binome_manquant_init = (intervention.getTypePlanification and intervention.getTypePlanification.getCategoriePlanification.isInterne and not agent.getActiveUtilisateurAffectation.getUtilisateurBinome ) %} {% set binome_manquant_int = (intervention.planning.getTypePlanificationInit.getCategoriePlanification.isInterne and not agent.getActiveUtilisateurAffectation.getUtilisateurBinome ) %} {% set paiement_ref = intervention.getFactures|first and intervention.getFactures|first.getPaiements|first and intervention.getFactures|first.getPaiements|first.getMoyenPaiement ? intervention.getFactures|first.getPaiements|first : null %} {% set moyen_paiement = paiement_ref ? paiement_ref.getMoyenPaiement.getLibelleLong : '' %} {% set mode_paiement_warning = hors_contrat and not moyen_paiement %} {% set ligne_mo = intervention.getLigneMO %} {% set ligne_deplacement = intervention.getLigneDeplacement %} {% set total_paiement = 0 %} {% set total_accompte = 0 %} {% set payeur_tiers = intervention.getClientPayeurTiers %} {% set id_paiement_acompte = '' %} {% set liste_paiement = [] %} {% for facture in intervention.factures %} {% for paiement in facture.getPaiements %} {% set total_paiement = total_paiement + paiement.montantTTC %} {% set liste_paiement = liste_paiement|merge([paiement]) %} {% endfor %} {% if facture.getFactureAcompte %} {% for paiement in facture.getFactureAcompte.getPaiements %} {% set total_accompte = total_accompte + paiement.montantTTC %} {% set id_paiement_acompte = paiement.id %} {% set liste_paiement = liste_paiement|merge([paiement]) %} {% endfor %} {% endif %} {% endfor %} {# Fiche intervention en lecture seule. On réutilise les mêmes blocs que la validation, mais sans formulaire ni actions. Les blocs utilisent déjà les variables définies ci-dessus. #}
{# Ligne 1 : colonne gauche + colonne droite #}
{# Colonne gauche : Client / Utilisateur, Equipement, Contrat, Payeur tiers #}
Utilisateur
{{ include('intervention/bloc_utilisateur_readonly.html.twig') }}
Équipement
{{ include('intervention/bloc_equipement.html.twig') }}
{{ contrat_echu ? 'Contrat échu' : 'Contrat' }}
{{ include('intervention/bloc_contrat.html.twig') }}
{# Payeur tiers en dessous du contrat #}
Payeur tiers
{{ include('intervention/bloc_payeur_tiers_readonly.html.twig') }}
{# Colonne droite : Intervention, puis Documents/Secteur/Planification, puis Facturation #}
Intervention
{% set is_readonly = true %} {{ include('intervention/bloc_intervention.html.twig') }}
Documents
{% set is_readonly = true %} {{ include('intervention/bloc_documents.html.twig') }}
Secteur n°{{ equipement and equipement.getSecteur is not null ? equipement.getSecteur : '' }}
Planification
{% set last_modif = intervention.planning ? intervention.planning.getLastPlanningHistoriqueModification : null %} {% if last_modif %} {% endif %}
{# Ligne 1 : Planification #}
Planification
{# Ligne 2 : Dernière modification #}
Dernière modification
{# Facturation en bas à droite #}
Facturation
{% set is_readonly = true %} {{ include('intervention/bloc_facturation.html.twig') }}
{# Ligne 2 : validations, toujours sous la ligne 1 #}
{# Validation technique en lecture seule : on laisse les messages mais pas les boutons #}
Validation technique
{% if not intervention.getDateValidationTechnique %}
En attente de validation
{% else %} {% set utilisateur_valid = intervention.getUtilisateurValidationTechnique %}
Fiche contrôlée le {{ intervention.getDateValidationTechnique|date('d/m/Y à H:i') }} par {{ intervention.getTypeValidationTechnique.isValidationAutomatique ? 'Validation automatique' : (utilisateur_valid ? utilisateur_valid.prenom|slice(0,1)|upper ~'.'~utilisateur_valid.nom|upper) }}
{% endif %}
{# Validation administrative en lecture seule #}
Validation administrative
{% if not intervention.getDateValidationAdm %}
En attente de validation
{% else %} {% set utilisateur_valid = intervention.getUtilisateurValidationAdm %}
Fiche contrôlée le {{ intervention.getDateValidationAdm|date('d/m/Y à H:i') }} par {{ intervention.getTypeValidationAdm ? (intervention.getTypeValidationAdm.isValidationAutomatique ? 'Validation automatique' : (utilisateur_valid ? utilisateur_valid.prenom|slice(0,1)|upper ~'.'~utilisateur_valid.nom|upper)) : '' }}
{% endif %}
{# Ligne 3 : Paiement et Relances de paiement #}
{# Bloc Paiement #}
Paiement
{# Calcul des totaux nécessaires #} {% set total_ht_pieces = 0 %} {% set total_tva_pieces = 0 %} {% for facture in intervention.factures %} {% for factureLigne in facture.getFactureLignes %} {% if factureLigne.getProduit and factureLigne.getProduit.getProduitType and factureLigne.getProduit.getProduitType.id == 1 %} {% set total_ht_pieces = total_ht_pieces + (factureLigne.getPrixTotalHt ? factureLigne.getPrixTotalHt : 0) %} {% set tva = factureLigne.getTauxTva ? factureLigne.getTauxTva.taux : 0 %} {% set montant = factureLigne.getPrixTotalHt ? factureLigne.getPrixTotalHt : 0 %} {% set total_tva_pieces = total_tva_pieces + (montant * tva)/100 %} {% endif %} {% endfor %} {% endfor %} {% set deplacement_ttc = 0 %} {% if ligne_deplacement %} {% set tva = ligne_deplacement.getTauxTva ? ligne_deplacement.getTauxTva.taux : 0 %} {% set montant = ligne_deplacement.getPrixTotalHt ? ligne_deplacement.getPrixTotalHt : 0 %} {% set deplacement_ttc = montant + (montant*tva)/100 %} {% endif %} {% set mo_ttc = 0 %} {% if ligne_mo %} {% set tva = ligne_mo.getTauxTva ? ligne_mo.getTauxTva.taux : 0 %} {% set montant = ligne_mo.getPrixTotalHt ? ligne_mo.getPrixTotalHt : 0 %} {% set mo_ttc = montant + (montant*tva)/100 %} {% endif %}
{# Tableau des paiements #}
{% set nb_line = 0 %} {% if liste_paiement|length > 0 %} {% for paiement in liste_paiement %} {% set nb_line = nb_line + 1 %} {% endfor %} {% set emptyRows = 3 - nb_line %} {% if emptyRows > 0 %} {% for i in 1..emptyRows %} {% endfor %} {% endif %} {% else %} {% endif %}
Date Montant Date prévue enc. Mode paiement Date enc.
{{ paiement.date|date('d/m/Y') }} {{ paiement.montantTtc|number_format(2, ',', ' ') }} € {{ paiement.datePrevisionnelle ? paiement.datePrevisionnelle|date('d/m/Y') : '' }} {{ paiement.moyenPaiement ? paiement.moyenPaiement.libelleCourt : '' }}
{# Totaux à droite du tableau - Grille 2x3 #}
{% set total_ht_global = total_ht_pieces + (ligne_mo ? ligne_mo.getPrixTotalHt : 0) + (ligne_deplacement ? ligne_deplacement.getPrixTotalHt : 0) %} {% set total_tva_global = total_tva_pieces + (mo_ttc - (ligne_mo ? ligne_mo.getPrixTotalHt : 0)) + (deplacement_ttc - (ligne_deplacement ? ligne_deplacement.getPrixTotalHt : 0)) %} {% set total_ttc_global = total_ht_global + total_tva_global %} {% set total_facture = 0 %} {% for facture in intervention.factures %} {% set total_facture = total_facture + (facture.montantTtc ? facture.montantTtc : 0) %} {% endfor %} {% set ecart = total_ttc_global - total_facture %} {% set restant_du = total_ttc_global - total_paiement %} {# Ligne 1 : Total HT, Total TVA, Total TTC #}
{# Ligne 2 : Total perçu, Restant dû, Ecart #}
{# Bloc Relances de paiement #}
Relances de paiement
Aucune relance en cours