
    bj                    |    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	m
Z
mZmZmZ dd	ZddZddZddZdddZdS )    )annotations)
Connection)HTTPException)record_audit_event)new_idnowrow_to_dictvalidate_account_typevalidate_currencypayloaddictreturnc           	        t          |                     d          pd                                          }|st          dd          |                     d          pd }|                     d          pt	          d          ||t          |                     d	          pd
          t          |                     d          pd          |                     d          pd dS )Nname   zname is requiredstatus_codedetaillinked_account_idbudget_account_idbaccaccount_typeothercurrencyCHFnotes)r   r   r   r   r   r   )strgetstripr   r   r
   r   )r   r   r   s      /home/agent/.hermes/worktrees/FinanceManager-sprint3-reconciliation-snapshot-foundation/src/jarvis_finance/services/budget_accounts.py_normalise_payloadr"      s    w{{6""(b))//11D H4FGGGG$788@D$[[)<==O.-gkk..I.I.TWUU%gkk*&=&=&FGGW%%-      connr   c                   t          |          }|d         rB|                     d|d         f                                          }|st          dd          t	          d          |d          d|d	          d|d
          g |dS )Nr   z)SELECT 1 FROM accounts WHERE account_id=?r   z linked_account_id does not existr   previewr   u    · r   r   )
preview_idsummarywarningsr   )r"   executefetchoner   r   )r$   r   
normalisedexistss       r!   create_budget_account_previewr.      s    #G,,J%& \IJWjLkKmnnwwyy 	\C8Z[[[[Y'' (ffj.HffjYcNdff	  r#   c                b   t          |          }t                      }|                     d|d         |d         |d         |d         |d         |d         ||f           t          | dd	d
|d         ||                    d          d          }|                                  d|d         |ddS )Nz
        INSERT INTO budget_accounts(
            budget_account_id, linked_account_id, name, account_type, currency,
            is_active, archived_at, notes, created_at, updated_at
        ) VALUES (?, ?, ?, ?, ?, 1, NULL, ?, ?, ?)
        r   r   r   r   r   r   vue_dashboardcreatebudget_accountuser)sourceactionentity_type	entity_id
new_valuesuser_text_note
created_by	confirmedzBudgetkonto gespeichertstatusr7   audit_idmessage)r"   r   r*   r   r   commit)r$   r   r,   tsr>   s        r!   confirm_create_budget_accountrB   (   s   #G,,J	BLL	 *+*+v~&z"w		
  $ "$x]m  zD  EX  zY  fp  AK  AO  AO  PW  AX  AX  ek  l  l  lHKKMMM!
;N0O]e  sL  M  M  Mr#   
account_idr   c                N   |                      d|f                                          }|st          dd          t                      }|                      d|||f           t	          | ddd|t          |          d	|d
dd	  	        }|                                  d||ddS )Nz7SELECT * FROM budget_accounts WHERE budget_account_id=?i  zbudget account not foundr   z]UPDATE budget_accounts SET is_active=0, archived_at=?, updated_at=? WHERE budget_account_id=?r0   archiver2   r   )	is_activearchived_atTr3   )r4   r5   r6   r7   
old_valuesr8   r;   r:   archivedzBudgetkonto archiviertr<   )r*   r+   r   r   r   r	   r@   )r$   rC   rowrA   r>   s        r!   archive_budget_accountrK   B   s	   
,,PS]R_
`
`
i
i
k
kC P4NOOOO	BLLpsuwy  |F  sG  H  H  H!$y^n  {E  R]  ^a  Rb  Rb  }~  OQ  oR  oR  ^b  ou  v  v  vHKKMMM zx\tuuur#   Tinclude_archivedbool
list[dict]c                |    |rdnd}|                      d| d                                          }d |D             S )Nr   zWHERE is_active = 1zSELECT * FROM budget_accounts z ORDER BY is_active DESC, namec                \    g | ])}t          |          d t          |d                    iz  *S )rF   )r	   rM   ).0rs     r!   
<listcomp>z(list_budget_accounts.<locals>.<listcomp>P   s4    OOOQKNNk4++?+?@@OOOr#   )r*   fetchall)r$   rL   whererowss       r!   list_budget_accountsrW   M   sN    "=BB(=E<<^^^^__hhjjDOO$OOOOr#   N)r   r   r   r   )r$   r   r   r   r   r   )r$   r   rC   r   r   r   )T)r$   r   rL   rM   r   rN   )
__future__r   sqlite3r   fastapir   jarvis_finance.audit.logr   %jarvis_finance.services.budget_commonr   r   r	   r
   r   r"   r.   rB   rK   rW    r#   r!   <module>r^      s    " " " " " "       ! ! ! ! ! ! 7 7 7 7 7 7 t t t t t t t t t t t t t t      M M M M4v v v vP P P P P P Pr#   