Ë
    Ã?Æi3  ã                  ó  — d Z ddlmZ ddlZddlZddl­ ddlmZmZ  ej                  d«      Z
 ej                  d«      Z ej                  d«      Z e e ed	d
«      «      ddgz   «      Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zy)u2  ONRC (Ordine din Registrul ComerÅ£ului, Romanian Trade Register identifier).

All businesses in Romania have the to register with the National Trade
Register Office to receive a registration number. The number contains
information about the type of company and registration year.

On 2024-07-26 a new format was introduced and for a while both old and new
formats need to be valid.

More information:

* https://targetare.ro/blog/schimbari-importante-la-registrul-comertului-ce-trebuie-sa-stii-despre-noul-format-al-numarului-de-ordine

>>> validate('J52/750/2012')
'J52/750/2012'
>>> validate('X52/750/2012')
Traceback (most recent call last):
    ...
InvalidComponent: ...
>>> validate('J2012000750528')
'J2012000750528'
>>> validate('J2012000750529')
Traceback (most recent call last):
    ...
InvalidChecksum: ...
é    )ÚannotationsN)Ú*)ÚcleanÚisdigitsz[ /\\-]+z.^([A-Z][0-9]+/[0-9]+/)\d{2}[.]\d{2}[.](\d{4})$z^[A-Z][0-9]+/[0-9]+/[0-9]+$é   é)   é3   é4   c                ó:  — t         j                  dt        | «      j                  «       j	                  «       «      } | dd dk(  r| dd | dd z   } | dd dk(  r| dd dz   | dd z   } t
        j                  | «      }|rdj                  |j                  «       «      } | S )zˆConvert the number to the minimal representation. This strips the
    number of any valid separators and removes surrounding whitespace.ú/r   é   Né   Ú0Ú )	Ú_cleanup_reÚsubr   ÚupperÚstripÚ_old_onrc_fulldate_reÚmatchÚjoinÚgroups)ÚnumberÚms     úU/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/ro/onrc.pyÚcompactr   H   s£   € ô �_‰_˜S¤%¨£-×"5Ñ"5Ó"7×"=Ñ"=Ó"?Ó@€Fàˆa�€{�cÒØ˜˜�˜f Q R˜jÑ(ˆàˆa�€{�cÒØ˜˜�˜cÑ! F¨1¨2 JÑ.ˆä×#Ñ# FÓ+€AÙØ—‘˜Ÿ™›Ó$ˆØ€Mó    c                ón  — t         j                  | «      s
t        «       ‚| dd  j                  d«      \  }}}t	        |«      dkD  r
t        «       ‚t	        |«      dvst        |«      t        vr
t        «       ‚t	        |«      dk7  r
t        «       ‚t        |«      dk  st        |«      dkD  r
t        «       ‚y )Nr   r   é   )r   r   é   éÆ  éè  )	Ú_old_onrc_rer   ÚInvalidFormatÚsplitÚlenÚInvalidLengthÚintÚ	_countiesÚInvalidComponent)r   ÚcountyÚserialÚyears       r   Ú_validate_old_formatr.   Y   s    € ä×Ñ˜fÔ%Ü‹oÐØ! ! "˜:×+Ñ+¨CÓ0Ñ€FˆF�DÜ
ˆ6ƒ{�Q‚Ü‹oÐÜ
ˆ6ƒ{˜&Ñ ¤C¨£K´yÑ$@ÜÓ Ð Ü
ˆ4ƒy�A‚~Ü‹oÐä
ˆ4ƒy�4Òœ3˜t›9 tÒ+ÜÓ Ð ð ,r   c                ó„   — t        t        | d   «      dz  «      | dd z   } t        t        d„ | dd D «       «      dz  «      S )z2Calculate the check digit for the new ONRC format.r   é
   r   Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­w)N)r(   )Ú.0Úns     r   ú	<genexpr>z$_calc_check_digit.<locals>.<genexpr>m   s   è ø€ Ò/˜a”3�q—6Ñ/ùs   ‚éÿÿÿÿ)ÚstrÚordÚsum©r   s    r   Ú_calc_check_digitr:   i   sG   € ô ”�V˜A‘Y“ "Ñ$Ó%¨¨q¨r¨
Ñ2€FÜŒsÑ/ 6¨#¨2 ;Ô/Ó/°"Ñ4Ó5Ð5r   c                óØ  — t        | dd  «      s
t        «       ‚t        | «      dk7  r
t        «       ‚t	        | dd «      }|dk  s+|t
        j                  j                  «       j                  kD  r
t        «       ‚t	        | dd «      }|dk  r|t        vr@t        «       ‚|dk(  r"|t        j                  dg«      vrt        «       ‚|dk7  r
t        «       ‚| d	   t        | «      k7  rt        ‚y )
Nr   é   r   r!   é   é   r"   r   r5   )r   r$   r&   r'   r(   ÚdatetimeÚdateÚtodayr-   r*   r)   Úunionr:   ÚInvalidChecksum)r   r-   r+   s      r   Ú_validate_new_formatrD   p   sà   € ä�F˜1˜2�JÔÜ‹oÐÜ
ˆ6ƒ{�bÒÜ‹oÐÜˆv�a˜ˆ{Ó€DØˆd‚{�dœXŸ]™]×0Ñ0Ó2×7Ñ7Ò7ÜÓ Ð ô �˜˜2�Ó€FØˆd‚{ØœÑ"Ü"Ó$Ð$Ø	�ŠØœŸ™¨!¨Ó-Ñ-Ü"Ó$Ð$à�QŠ;Ü"Ó$Ð$Øˆb�zÔ& vÓ.Ò.ÜÐð /r   c                óv   — t        | «      } | dd dvr
t        «       ‚d| v rt        | «       | S t        | «       | S )ú$Check if the number is a valid ONRC.Nr   ÚJFCr   )r   r*   r.   rD   r9   s    r   ÚvalidaterH   ‰   sK   € ä�V‹_€Fð ˆbˆq€z˜ÑÜÓ Ð Ø
ˆf�}ô 	˜VÔ$ð €Mô 	˜VÔ$Ø€Mr   c                óJ   — 	 t        t        | «      «      S # t        $ r Y yw xY w)rF   F)ÚboolrH   ÚValidationErrorr9   s    r   Úis_validrL   ›   s)   € ðÜ”H˜VÓ$Ó%Ð%øÜò Ùðús   ‚ –	"¡")r   r6   Úreturnr6   )r   r6   rM   ÚNone)r   r6   rM   rJ   )Ú__doc__Ú
__future__r   r?   ÚreÚstdnum.exceptionsÚstdnum.utilr   r   Úcompiler   r   r#   ÚsetÚlistÚranger)   r   r.   r:   rD   rH   rL   © r   r   ú<module>rY      s’   ðñ,õ6 #ã Û 	ä ß 'ð ˆb�j‰j˜Ó%€ð #˜Ÿ
™
Ð#TÓUÐ ð ˆr�z‰zÐ8Ó9€ñ ‘‘U˜1˜b“\Ó" b¨" XÑ-Ó.€	óó"!ó 6óó2ô$r   