Ë
    !q6j³  ã                   ó\   — d Z ddlZddlmZ ddlmZ defd„Zdefd„Zdded	edz  defd
„Z	y)uB  
GÃ©nÃ©ration de rÃ©fÃ©rences dossier :
  <3 chars tenant>/<pays ISO2>/<YYYYMM>/<numÃ©ro sÃ©quentiel par tenant/mois>

Exemple : ACX/TD/202606/0001

RÃ¨gle pays :
  1. Pays du dÃ©biteur (si fourni et non vide)
  2. Premier pays assignÃ© Ã  l'utilisateur dans ce tenant
  3. Pays par dÃ©faut du tenant
  4. Fallback : "XX"
é    N)Útransaction)ÚtimezoneÚreturnc                 óª   — t        j                  dd| j                  j                  «       «      }t	        |«      dk\  r|dd S |j                  dd«      S )u7   3 caractÃ¨res alphanumÃ©riques depuis le nom du tenant.z	[^A-Z0-9]Ú é   NÚX)ÚreÚsubÚnameÚupperÚlenÚljust)ÚtenantÚcleaneds     ú$/var/www/html/acx/cases/reference.pyÚ_tenant_prefixr      sH   € ä�f‰f�\ 2 v§{¡{×'8Ñ'8Ó':Ó;€GÜ˜w›<¨1Ò,ˆG�B�QˆKÐH°'·-±-ÀÀ3Ó2GÐHó    c                 ó
  — ddl m} |j                  j                  | |¬«      j	                  d«      j                  «       }|r$|j                  j                  j                  «       S |j                  xs dj                  «       S )um   
    Pays de l'utilisateur pour ce tenant.
    PrioritÃ© : UserCountryAssignment > tenant.country > 'XX'
    r   )ÚUserCountryAssignment)Úuserr   ÚcountryÚXX)	Úaccounts.modelsr   ÚobjectsÚfilterÚselect_relatedÚfirstr   Úcountry_coder   )r   r   r   Ú
assignments       r   Úget_country_for_userr!      sn   € õ
 6ð 	×%Ñ%ß	‰�T &ˆÓ	)ß	‰˜	Ó	"ß	‰‹ð	 ñ Ø×!Ñ!×.Ñ.×4Ñ4Ó6Ð6Ø�N‰NÒ"˜d×)Ñ)Ó+Ð+r   r   Úperiodc           	      ó  — ddl m} |s#t        j                  «       j	                  d«      }t        | «      }|xs dj                  «       dd }t        j                  «       5  |j                  j                  «       j                  | |ddi¬«      \  }}|xj                  d	z  c_        |j                  dg¬
«       |j                  }ddd«       |› d|› d|› dt        «      j                  d«      › �S # 1 sw Y   Œ.xY w)uƒ   
    GÃ©nÃ¨re une rÃ©fÃ©rence dossier unique par tenant.
    Utilise SELECT FOR UPDATE pour garantir l'atomicitÃ© du compteur.
    r   )ÚCaseSequencez%Y%mr   Né   Úlast_number)r   r"   Údefaultsé   )Úupdate_fieldsú/é   )Úcases.modelsr$   r   ÚnowÚstrftimer   r   r   Úatomicr   Úselect_for_updateÚget_or_creater&   ÚsaveÚstrÚzfill)	r   r   r"   r$   ÚprefixÚccÚseqÚ_Únumbers	            r   Úgenerate_case_referencer:   ,   sô   € õ
 *áÜ—‘“×(Ñ(¨Ó0ˆä˜FÓ#€FØ
Ò
˜$×	%Ñ	%Ó	'¨¨Ð	+€Bä	×	Ñ	Ó	ñ !Ø×%Ñ%×7Ñ7Ó9×GÑGØØØ# QÐ'ð Hó 
‰ˆˆQð
 	�Š˜1Ñ�Ø�‰ ˜ˆÔ/Ø—‘ˆ÷!ð ˆX�Q�r�d˜!˜F˜8 1¤S¨£[×%6Ñ%6°qÓ%9Ð$:Ð;Ð;÷!ð !ús   Á"A&C5Ã5C>)N)
Ú__doc__r
   Ú	django.dbr   Údjango.utilsr   r3   r   r!   r:   © r   r   ú<module>r?      sN   ðñó 
Ý !Ý !ðI˜có Ið,¨#ó ,ñ$<°#ð <¸sÀT¹zð <ÐUXô <r   