Ë
    »P–j6  ã                   óJ   — d dl Z d dlmZ d dlmZ d	d„Zd„ Zd	d„Zd	d„Zd	d„Z	y)
é    N)Útimezone)Ú
parse_datec           
      óì  — | €#t        j                  «       j                  «       } nyt        | t        j                  «      r| j                  «       } nNt        | t
        «      r>t        | «      }|r|} n.	 t        j                  j                  | «      j                  «       } | j                  dkD  xs  | j                  dk(  xr | j                  dk\  }|r| j                  n| j                  dz
  }|dz   }t	        j                  |dd«      }t	        j                  |dd«      }t        |«      dd }t        |«      dd }|||||› d|› �|› d|› �|› d|› �|› d	|› �d
œS # t        $ r t        d| › �«      ‚w xY w)a^  
    Returns comprehensive financial year metadata for a given date or datetime (defaults to now).
    
    Trust Financial Year Cycle:
    - Starts on 31st July of year YYYY (e.g., 2026-07-31)
    - Ends on 30th July of year YYYY+1 (e.g., 2027-07-30)
    - Example: 31st July 2026 to 30th July 2027 represents FY 2026-27 (display: 2026 - 2027).
    NzInvalid date string: é   é   é   é   éþÿÿÿÚ-ú - )Ú
start_yearÚend_yearÚ
start_dateÚend_dateÚfiscal_year_strÚfull_year_strÚshort_year_strÚdisplay_str)r   ÚnowÚdateÚ
isinstanceÚdatetimeÚstrr   ÚfromisoformatÚ	ExceptionÚ
ValueErrorÚmonthÚdayÚyear)	ÚdtÚparsedÚ	is_new_fyr   r   r   r   Ú	end_shortÚstart_shorts	            úC/var/www/kalinger_portal/trust-backend/accounting/financial_year.pyÚget_financial_year_infor&      sv  € ð 
€zÜ�\‰\‹^× Ñ Ó"‰Ü	�Bœ×)Ñ)Ô	*Ø�W‰W‹Y‰Ü	�BœÔ	Ü˜B“ˆÙØ‰Bð?Ü×&Ñ&×4Ñ4°RÓ8×=Ñ=Ó?�ð
 —‘˜A‘ÒB 2§8¡8¨q¡=Ò#A°R·V±V¸r±\€IÙ%�—’¨2¯7©7°Q©;€JØ˜A‰~€Hä—‘˜z¨1¨bÓ1€JÜ�}‰}˜X q¨"Ó-€Hä�H“˜b˜cÐ"€IÜ�j“/ " #Ð&€Kð !ØØ ØØ(˜\¨¨9¨+Ð6Ø&˜< q¨¨
Ð3Ø(˜M¨¨9¨+Ð6Ø$˜ S¨¨
Ð3ñ	ð 	øô ò ?Ü Ð#8¸¸Ð!=Ó>Ð>ð?ús   Á2-E ÅE3c                  ó   — t        «       S )z?
    Returns the financial year metadata for today's date.
    ©r&   © ó    r%   Úget_current_financial_yearr+   4   s   € ô #Ó$Ð$r*   c                 ó   — t        | «      d   S )zj
    Return the fiscal-year label for *dt* (defaults to now).
    Format: 'YYYY-YY' (e.g., '2026-27')
    r   r(   )r    s    r%   Úget_fiscal_year_stringr-   ;   s   € ô
 # 2Ó&Ð'8Ñ9Ð9r*   c                 ó,   — t        | «      }|d   |d   fS )zÎ
    Given a date or datetime object (defaults to now),
    returns (start_date, end_date) as datetime.date objects for the trust financial year.
    (31st July of start_year to 30th July of end_year).
    r   r   r(   )r    Úinfos     r%   Úget_financial_year_ranger0   C   s#   € ô # 2Ó&€DØ�Ñ˜t JÑ/Ð/Ð/r*   c                 ó  — | rr| dk7  rm| j                  d«      }t        |«      dk(  rCt        |d   «      dk(  rd|d   › �n|d   }t        |d   «      dk(  rd|d   › �n|d   }|› d|› �S t        | «      S | dk(  ryt        «       d	   S )
uP  
    Returns formatted display string for reports.
    - If financial_year is given (e.g. '2026-27' or '26-27'): returns '2026 - 2027'
    - If financial_year is 'all': returns 'à®…à®©à¯ˆà®¤à¯�à®¤à¯� à®¨à®¿à®¤à®¿ à®†à®£à¯�à®Ÿà¯�à®•à®³à¯�'
    - If financial_year is None: returns current financial year display (e.g. '2026 - 2027')
    Úallr   é   r   Ú20r   r   u;   à®…à®©à¯ˆà®¤à¯�à®¤à¯� à®¨à®¿à®¤à®¿ à®†à®£à¯�à®Ÿà¯�à®•à®³à¯�r   )ÚsplitÚlenr   r+   )Úfinancial_yearÚpartsÚs_yrÚe_yrs       r%   Úget_fiscal_year_displayr;   M   s¦   € ñ ˜.¨EÒ1Ø×$Ñ$ SÓ)ˆÜˆu‹:˜Š?Ü&)¨%°©(£m°qÒ&8�R˜˜a™�z‘?¸eÀA¹hˆDÜ&)¨%°©(£m°qÒ&8�R˜˜a™�z‘?¸eÀA¹hˆDØ�V˜3˜t˜fÐ%Ð%Ü�>Ó"Ð"Ø	˜5Ò	 ØLä)Ó+¨MÑ:Ð:r*   )N)
r   Údjango.utilsr   Údjango.utils.dateparser   r&   r+   r-   r0   r;   r)   r*   r%   ú<module>r>      s(   ðÛ Ý !Ý -ó+ò\%ó:ó0ô;r*   