Ë
    ]¾øi"  ã            	       óÒ   — d Z ddlZddlZddlmZ ddlmZ  ej                  e«      Z	ddddd	d
dddœZ
dddddœZdddddœZdedefd„Zdededefd„Zdededefd„Zdededefd „Zy)!uo   
Envoi des notifications email lors des modifications de dossiers.
AppelÃ© depuis le signal post_save de Case.
é    N)Úsettings)ÚEmailMultiAlternativesÚStatutu	   PrioritÃ©ÚTitreÚSoldeu
   Ã‰chÃ©ancezAgent responsableu
   CrÃ©ancierÚPortefeuille)ÚstatusÚpriorityÚtitleÚbalance_amountÚdue_dateÚassigned_to_idÚcreditor_idÚportfolio_idÚOuvertzEn coursz
En attenteu	   ClÃ´turÃ©)ÚopenÚin_progressÚon_holdÚclosedÚFaibleÚMoyenneu   Ã‰levÃ©eÚUrgente)ÚlowÚmediumÚhighÚurgentÚfieldÚreturnc                 óÒ   — |€y| dk(  r(t         j                  t        |«      t        |«      «      S | dk(  r(t        j                  t        |«      t        |«      «      S t        |«      S )Nu   â€”r	   r
   )ÚSTATUS_LABELSÚgetÚstrÚPRIORITY_LABELS)r   Úvalues     ú./var/www/html/acx/cases/email_notifications.pyÚ_humanr&   '   sZ   € Ø€}ØØ�ÒÜ× Ñ ¤ U£¬S°«ZÓ8Ð8Ø�
ÒÜ×"Ñ"¤3 u£:¬s°5«zÓ:Ð:Üˆu‹:Ðó    ÚchangesÚ
actor_namec           	      ó  — d}|j                  «       D ]H  \  }}t        j                  ||«      }t        ||d   «      }t        ||d   «      }|d|› d|› d|› d�z  }ŒJ d| j                  › d	| j
                  › d
|› d|› d�	S )NÚ ÚoldÚnewzs
        <tr>
          <td style="padding:8px 12px;border-bottom:1px solid #f1f5f9;color:#64748b;font-size:13px;">zˆ</td>
          <td style="padding:8px 12px;border-bottom:1px solid #f1f5f9;font-size:13px;text-decoration:line-through;color:#94a3b8;">z{</td>
          <td style="padding:8px 12px;border-bottom:1px solid #f1f5f9;font-size:13px;font-weight:600;color:#1a3578;">z</td>
        </tr>u£  <!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body style="margin:0;padding:0;background:#f8fafc;font-family:system-ui,-apple-system,sans-serif;">
  <div style="max-width:580px;margin:32px auto;background:#fff;border-radius:16px;
              border:1px solid rgba(15,23,42,.07);overflow:hidden;box-shadow:0 4px 20px rgba(0,0,0,.06);">

    <!-- Header -->
    <div style="background:linear-gradient(135deg,#1a3578 0%,#2655b0 100%);padding:24px 28px;">
      <div style="color:#fff;font-size:18px;font-weight:700;margin-bottom:4px;">
        Dossier mis Ã  jour
      </div>
      <div style="color:rgba(255,255,255,.75);font-size:13px;">
        RÃ©fÃ©rence : zÃ
      </div>
    </div>

    <!-- Body -->
    <div style="padding:24px 28px;">
      <p style="margin:0 0 16px;font-size:14px;color:#475569;">
        Le dossier <strong style="color:#1a3578;">u/   </strong> a Ã©tÃ© modifiÃ©
        par <strong>uJ  </strong>.
      </p>

      <table style="width:100%;border-collapse:collapse;border-radius:10px;overflow:hidden;
                    border:1px solid #f1f5f9;margin-bottom:20px;">
        <thead>
          <tr style="background:#f8fafc;">
            <th style="padding:8px 12px;text-align:left;font-size:11px;font-weight:700;
                       text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;">Champ</th>
            <th style="padding:8px 12px;text-align:left;font-size:11px;font-weight:700;
                       text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;">Avant</th>
            <th style="padding:8px 12px;text-align:left;font-size:11px;font-weight:700;
                       text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;">AprÃ¨s</th>
          </tr>
        </thead>
        <tbody>u¥  </tbody>
      </table>

      <p style="margin:0;font-size:12px;color:#94a3b8;">
        Ceci est un message automatique â€” merci de ne pas y rÃ©pondre directement.
      </p>
    </div>

    <!-- Footer -->
    <div style="background:#f8fafc;padding:14px 28px;border-top:1px solid #f1f5f9;">
      <p style="margin:0;font-size:11px;color:#cbd5e1;">ACX Â· Gestion de recouvrement</p>
    </div>
  </div>
</body>
</html>)ÚitemsÚTRACKED_FIELDSr!   r&   Ú	referencer   )	Úcaser(   r)   Úrowsr   ÚvalsÚlabelr,   r-   s	            r%   Ú_build_htmlr5   1   sÜ   € Ø€DØ—}‘}“ò 	‰ˆˆtÜ×"Ñ" 5¨%Ó0ˆÜ�U˜D ™KÓ(ˆÜ�U˜D ™KÓ(ˆØð fàfkÐelð mCð DGð  CHð HvØvyÐuzð {ð	ñ 	‰ð		ðð —~‘~Ð&ð '3ð 48·:±:°,ð ?Ø�Lð !ð ˆvð ðI2ð 2r'   Úcase_idc                 ó  — 	 ddl m} |j                  j                  ddd«      j	                  | ¬«      }g }|j                  rG|j                  r;|j                  j                  r%|j                  |j                  j                  «       |j                  rŽd}|j                  r9|j                  r-|j                  j                  r|j                  j                  }n0|j                  s$|j                  r|j                  j                  rd}|r||vr|j                  |«       |j                  rM|j                  rA|j                  j                  r+|j                  j                  }||vr|j                  |«       |syd|j                  › �}t!        |||«      }	d	|j                  › d
|j"                  › d|› d�dj%                  d„ |j'                  «       D «       «      z   }
t)        t*        dd«      }	 t-        ||
||«      }|j/                  |	d«       |j1                  d¬«       t2        j5                  d|j                  |«       y# t
        $ r Y yw xY w# t
        $ r+}t2        j7                  d|j                  |«       Y d}~yd}~ww xY w)u0   Envoi rÃ©el â€” exÃ©cutÃ© dans un thread daemon.r   )ÚCaseÚcustomerÚcreditorÚdebtor)ÚpkNu   [ACX] Mise Ã  jour dossier zDossier u    â€” u   
ModifiÃ© par : z

Ú
c              3   ó”   K  — | ]@  \  }}d t         j                  ||«      › dt        ||d   «      › dt        ||d   «      › �–— ŒB y­w)z- z : r,   u    â†’ r-   N)r/   r!   r&   )Ú.0ÚfÚvs      r%   ú	<genexpr>z%_send_notification.<locals>.<genexpr>›   sX   è ø€ ò 
á��1ð ”×#Ñ# A qÓ)Ð*¨#¬f°Q¸¸%¹Ó.AÐ-BÀ%ÌÈqÐRSÐTYÑRZÓH[ÐG\Ô]ñ
ùs   ‚AAÚDEFAULT_FROM_EMAILznoreply@acx.appz	text/htmlT)Úfail_silentlyu#   Notification case %s envoyÃ©e Ã  %su"   Notification case %s Ã©chouÃ©e: %s)Úcases.modelsr8   ÚobjectsÚselect_relatedr!   Ú	ExceptionÚnotify_customerr9   ÚemailÚappendÚnotify_creditorr   r:   Únotify_debtorr;   r0   r5   r   Újoinr.   Úgetattrr   r   Úattach_alternativeÚsendÚloggerÚinfoÚwarning)r6   r(   r)   r8   r1   Ú
recipientsÚ
cred_emailrJ   ÚsubjectÚhtmlÚtextÚ
from_emailÚmsgÚexcs                 r%   Ú_send_notificationr]   s   s*  € ðÝ%à�L‰Lß‰^˜J¨
°HÓ=ß‰S�GˆS‹_ð 	ð €Jà×Ò §¢°$·-±-×2EÒ2EØ×Ñ˜$Ÿ-™-×-Ñ-Ô.à×ÒØˆ
Ø×Ò §¢°$·-±-×2EÒ2EØŸ™×,Ñ,‰JØ×!Ò! d§m¢m¸¿¹×8KÒ8KàˆJÙ˜*¨JÑ6Ø×Ñ˜jÔ)à×Ò˜dŸkšk¨d¯k©k×.?Ò.?Ø—‘×!Ñ!ˆØ˜
Ñ"Ø×Ñ˜eÔ$áØà+¨D¯N©NÐ+;Ð<€GÜ�t˜W jÓ1€Dà
�4—>‘>Ð" %¨¯
©
 |ð 4Ø$˜ Tð	+à
�)‰)ñ 
àŸ™›ô
ó 
ñ	
ð 	ô œÐ#7Ð9JÓK€JðRÜ$ W¨d°JÀ
ÓKˆØ×Ñ˜t [Ô1Ø�‰˜tˆÔ$Ü�‰Ð9¸4¿>¹>È:ÕVøôW ò ÙðûôX ò RÜ�‰Ð;¸T¿^¹^ÈS×QÑQûðRús*   ‚3I	 Ç5AI É		IÉIÉ	JÉ!!JÊJc                 óh   — |syt        j                  t        | ||fd¬«      }|j                  «        y)uC   Lance l'envoi en arriÃ¨re-plan pour ne pas bloquer la rÃ©ponse API.NT)ÚtargetÚargsÚdaemon)Ú	threadingÚThreadr]   Ústart)r6   r(   r)   Úts       r%   Úsend_case_change_notificationsrf   ¬   s3   € áØÜ×ÑÜ!Ø�w 
Ð+Øô	€Að
 ‡G�G…Ir'   )Ú__doc__Úloggingrb   Údjango.confr   Údjango.core.mailr   Ú	getLoggerÚ__name__rR   r/   r    r#   r"   r&   Údictr5   Úintr]   rf   © r'   r%   ú<module>rp      sÜ   ðñó Û Ý  Ý 3à	ˆ×	Ñ	˜8Ó	$€ð Ø ØØØ!Ø)Ø!Ø#ñ	€ð ØØØñ	€ð ØØØñ	€ð�#ð  ó ð?˜tð ?°ð ?¸ó ?ðD6R ð 6R¨dð 6RÀó 6Rðr	¨Cð 	¸$ð 	ÈCô 	r'   