
    xjX	                    n    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZ ddZddZddZddZdS )    )annotations)Decimal)
Connection)record_audit_event)create_alert   )upsert_fx_ratevalueobjectreturnr   c                :    t          t          |                     S N)r   str)r
   s    #src/jarvis_finance/fx/conversion.py_decr      s    3u::    connConnection | Nonecurrencyr   	rate_datec           
        |pd                                                                 }|dk    rt          d          S | t          d| d|           |                     d||f                                          }|rt          |d                   S t          | dd	d
d| d| ||d           |                                  t          d| d|           )N CHF1zMissing FX rate for z/CHF on z
        SELECT rate FROM fx_rates
        WHERE base_currency = ? AND quote_currency = 'CHF' AND rate_date = ?
        ORDER BY created_at DESC LIMIT 1
        ratekritischfx
missing_fx)r   r   )prioritycategoryrule_idmessageevidence)	upperstripr   
ValueErrorexecutefetchoner   r   commit)r   r   r   rows       r   get_fx_rate_to_chfr+      s   B%%''--//H5s|||MMM)MMNNN
,,	
 
9  hjj   !CK   DxDDDD&Y??    	KKMMM
IHIIiII
J
JJr   amountc                *    | t          |||          z  S r   )r+   )r,   r   r   r   s       r   convert_to_chfr.   ,   s    &tXyAAAAr   r   base_currencyr   notec                  |                                 st          d          t          | |                                                                 d||ddd          }t	          | ddd||                                                                 d|t          |          d	|d
d	  	        }|                                  |S )Nz"manual FX override requires a noter   manual_overridehistorical_overrideok)r/   quote_currencyr   r   provider	rate_typequality_statusmanual_fx_overridefx_rate)r/   r5   r   r   Tsystem)sourceactionentity_type	entity_id
new_valuesuser_text_note	confirmed
created_by)r%   r&   r	   r$   r   r   r)   )r   r/   r   r   r0   
fx_rate_idaudit_ids          r   set_manual_fx_overriderF   0   s     ::<< ?=>>>#))++1133"'	 	 	J "##%2%8%8%:%:%@%@%B%BV[js  ~A  BF  ~G  ~G  H  H
 
 
H 	KKMMMOr   N)r
   r   r   r   )r   r   r   r   r   r   r   r   )
r,   r   r   r   r   r   r   r   r   r   )r   r   r/   r   r   r   r   r   r0   r   r   r   )
__future__r   decimalr   sqlite3r   jarvis_finance.audit.logr   jarvis_finance.quality.alertsr   ratesr	   r   r+   r.   rF    r   r   <module>rN      s    " " " " " "             7 7 7 7 7 7 6 6 6 6 6 6 ! ! ! ! ! !   K K K K8B B B B           r   