
    |j                        d dl mZ d dlZd dlmc mZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZ d Zd ZddZddZ ddZ!dS )    )annotationsN)confirm_create_budget_accountcreate_budget_account_preview)confirm_create_category)import_budget_csv_text)list_transaction_candidatesmark_candidate_type)get_budget_overview)confirm_budget_transactionconfirm_transferlist_budget_transactionslist_budget_transfers)connect_memory)apply_migrationsc                 @    t                      } t          |            | S )N)r   r   )conns    S/home/agent/.hermes/repos/FinanceManager/tests/unit/test_budget_workflow_help_ux.pydbr      s     DTK    c                   t          | dddd          d         }t          | dddd          d         }t          | dddd          d         }t          | d	d
d          d         }t          | ddd          d         }|||||fS )NRaiffeisen MarcelcheckingCHF)nameaccount_typecurrency	entity_idAKB MelanieVISAcredit_cardzEssen & Haushaltexpense)r   category_typeLohnincome)r   r   )r   
raiffeisenakbvisafoodr$   s         r   
setup_baser)      s    .t>Qcm  |A  6B  6B  C  C  DO  PJ
'}V`ns.t.t
u
u  wB  CC(P]kp/q/qrrs~D"42DW`)a)abbcnoD$TFX+V+VWWXcdFsD$..r   returnNonec                    t                      } t          |           \  }}}}}t          | |ddddd|d           t          | |ddd	d
d|d           t          | ||dddddd          }|d         }|s:ddt	          j        |          iz  }t          t	          j        |                    d }d}	d}
d}t          | |	|
|          }t          |          }d}||k    }|st	          j
        d|fd||f          dt          j                    v st	          j        t                    rt	          j        t                    nddt          j                    v st	          j        t                    rt	          j        t                    nddt          j                    v st	          j        |           rt	          j        |           ndt	          j        |	          t	          j        |
          t	          j        |          t	          j        |          t	          j        |          t	          j        |          d	z  }dd|iz  }t          t	          j        |                    d x}	x}
x}x}x}x}}d}	d}
d}t          | |	|
|          }t          |          }d}||k    }|st	          j
        d|fd||f          dt          j                    v st	          j        t                    rt	          j        t                    nddt          j                    v st	          j        t                    rt	          j        t                    nddt          j                    v st	          j        |           rt	          j        |           ndt	          j        |	          t	          j        |
          t	          j        |          t	          j        |          t	          j        |          t	          j        |          d	z  }dd|iz  }t          t	          j        |                    d x}	x}
x}x}x}x}}t          | d          }|d          d!         }d"}	||	k    }|slt	          j
        d|fd#||	f          t	          j        |          t	          j        |	          d$z  }d%d&|iz  }t          t	          j        |                    d x}x}}	|d          d'         }d(}	||	k    }|slt	          j
        d|fd#||	f          t	          j        |          t	          j        |	          d$z  }d%d&|iz  }t          t	          j        |                    d x}x}}	|d          d)         }d}	||	k    }|slt	          j
        d|fd#||	f          t	          j        |          t	          j        |	          d$z  }d%d&|iz  }t          t	          j        |                    d x}x}}	t          | d*+          }|d,         }d}	||	k    }|slt	          j
        d|fd#||	f          t	          j        |          t	          j        |	          d$z  }d%d&|iz  }t          t	          j        |                    d x}x}}	|d-         }d
}	||	k    }|slt	          j
        d|fd#||	f          t	          j        |          t	          j        |	          d$z  }d%d&|iz  }t          t	          j        |                    d x}x}}	d S ).Nr!   z
2026-01-05
Supermarktz10.00r   
account_idtransaction_typetransaction_datedescriptionamount_originalcurrency_originalcategory_idr$   z
2026-01-06r#   z20.00z5.00z
2026-01-07u   Haushaltsübertraginternal_transferfrom_account_idto_account_idr3   r4   r1   r2   transfer_typeaudit_idassert %(py1)spy1	confirmed2026r0   statusyear   ==)z%(py12)s
{%(py12)s = %(py0)s(%(py10)s
{%(py10)s = %(py1)s(%(py2)s, transaction_type=%(py4)s, status=%(py6)s, year=%(py8)s)
})
} == %(py15)slenr   r   )	py0r=   py2py4py6py8py10py12py15zassert %(py17)spy17rB   r   from_account_namer   z%(py1)s == %(py4)sr=   rI   assert %(py6)srJ   to_account_namer   r:   z2026-01)monthactual_expense_chfactual_income_chf)r   r)   r   r   
@pytest_ar	_safereprAssertionError_format_explanationr   rF   _call_reprcompare@py_builtinslocals_should_repr_global_namer   r
   )r   r%   r&   _visar(   r$   transfer@py_assert0@py_format2@py_assert3@py_assert5@py_assert7@py_assert9@py_assert11@py_assert14@py_assert13@py_format16@py_format18	transfers@py_assert2@py_format5@py_format7overviews                          r   Vtest_transfers_do_not_count_as_income_or_expense_and_are_listed_with_cashflow_accountsrs      s   44D+5d+;+;(JUD&tJT]s  Q]  ry  PU  fj  &k  &k  l  l  ltCXkw  IO  dk  BG  X^  &_  &_  `  `  `*WZou  MR  ht  EY  l  '@  '@  A  AHJ?HpQ\pcip'yQ\cijjjp3jkkpoppkopppppppppppkoppppppppppppp3ppppp3ppppppppppppp'ppppp'ppppppppppppppppppppppppyppppQ\ppppcippppjppppkppppopppppppppppppppppppppppppppppppppppp?GoP[obho'xP[bhiiio3ijjonoojnooooooooooojnooooooooooooo3ooooo3ooooooooooooo'ooooo'ooooooooooooooooooooooooxooooP[oooobhooooioooojoooonoooooooooooooooooooooooooooooooooooo%d888IQ<+,C0CC,0CCCCCCCCCCC,0CCCCCC,CCCC0CCCCCCCCCCCCCCCCCCCCCCCCCCCCQ<)*;m;*m;;;;;;;;;;*m;;;;;*;;;;m;;;;;;;;;;;;;;;;;;;;;;;;;;;Q<(?,??(,???????????(,??????(????,????????????????????????????"4y999H()4W4)W4444444444)W44444)4444W444444444444444444444444444'(3G3(G3333333333(G33333(3333G33333333333333333333333333333r   c                    t                      } t          |           \  }}}}}t          | ddddd          }t          | |d                   d         }t	          | |dd	d
dd|d           t          | ||dddddd           t          | ||dddddd           t          | ddd          }t          | d          }	d |D             }
d
g}|
|k    }|slt          j	        d|fd|
|f          t          j
        |
          t          j
        |          dz  }dd|iz  }t          t          j        |                    d x}
x}}d  |	D             }
ddh}|
|k    }|slt          j	        d|fd|
|f          t          j
        |
          t          j
        |          dz  }dd|iz  }t          t          j        |                    d x}
x}}d! |	D             }t          |          }|sd"d#t          j                    v st          j        t                    rt          j
        t                    nd#t          j
        |          t          j
        |          d$z  }t          t          j        |                    d x}}d S )%NTrue Wealth Cashinvestment_cashr   u(   Investment-Transfer-Ziel; keine Beträge)r   r   r   notespayloadr   r!   z
2026-02-01Apothekez7.00r.   z100.00z
2026-02-02zVISA Kartenabrechnungcredit_card_paymentr7   z200.00z
2026-02-03zTrue Wealth Einzahlunginvestment_transferr>   r?   r@   rP   c                    g | ]
}|d          S )r2    ).0txs     r   
<listcomp>zutest_credit_card_and_true_wealth_transfers_are_not_expenses_and_true_wealth_cash_can_be_previewed.<locals>.<listcomp><   s    111"B}111r   rD   rR   rS   rT   rJ   c                    h | ]
}|d          S )r:   r}   r~   ts     r   	<setcomp>zttest_credit_card_and_true_wealth_transfers_are_not_expenses_and_true_wealth_cash_can_be_previewed.<locals>.<setcomp>=   s    2221Ao222r   c              3  .   K   | ]}|d          dk    V  dS )rU   ru   Nr}   r   s     r   	<genexpr>zttest_credit_card_and_true_wealth_transfers_are_not_expenses_and_true_wealth_cash_can_be_previewed.<locals>.<genexpr>>   s.      MMaq"#'99MMMMMMr   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}any)rG   rH   rI   )r   r)   r   r   r   r   r   r   rY   r]   rZ   r[   r\   r   r^   r_   r`   )r   r%   _akbr'   r(   _income
tw_previewtrue_wealth_cashexpensesrn   rc   re   ro   rp   rq   @py_assert1s                   r   atest_credit_card_and_true_wealth_transfers_are_not_expenses_and_true_wealth_cash_can_be_previewedr   0   s   44D,6t,<,<)JdD'.t>Pbs  BG  R|  6}  6}  ~  ~J4T:i;PQQR]^tJT]s  Q[  pv  MR  cg  &h  &h  i  i  iTzDem  EJ  `l  }T  g|  }  }  ~  ~  ~TzL\qy  QV  lx  Ia  tI  J  J  K  K  K'yQ\cijjjH%d888I11111Aj\A1\AAAAAAAAAA1\AAAAA1AAAA\AAAAAAAAAAAAAAAAAAAAAAAAAAA22	222d7LNc6dd26ddddddddddd26dddddd2dddd6ddddddddddddddddddddddddddddMM9MMMM3MMMMMMMMMMMMMMMM3MMMMM3MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMr   c                 0   t                      } t          |           \  }}}}}d}t          | d|dd|           t          | ddd	          }|d
         }t	          | |d         dd          }	|d         }
d}|
|k    }|slt          j        d|fd|
|f          t          j        |
          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}}|	d         }
d}|
|k    }|slt          j        d|fd|
|f          t          j        |
          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}}|	d         }
|
s:ddt          j        |
          iz  }t          t          j	        |                    d }
| 
                    d                                          d
         }
d
}|
|k    }|slt          j        d|fd|
|f          t          j        |
          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}}| 
                    d|d         f                                          d
         }
d}|
|k    }|slt          j        d|fd|
|f          t          j        |
          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}
x}}d S )NzIBAN;Booked At;Text;Credit/Debit Amount;Balance;Valuta Date
CH1;2026-03-01;True Wealth Einzahlung;-200.00;0;2026-03-01
CH1;2026-03-02;AKB Umbuchung eigenes Konto;-50.00;0;2026-03-02
raiffeisen_bankzraiffeisen.csvF)source_file_labeldry_runincome_category_idTdateasc)include_referencesort_bysort_dirr   transaction_candidate_idr{   zUAT: True Wealth Cash targetclassificationrD   rR   rS   rT   rJ   r;   r<   r=   z(SELECT COUNT(*) FROM budget_transactionsz0SELECT COUNT(*) FROM audit_log WHERE entity_id=?rC   )>=)z%(py1)s >= %(py4)s)r   r)   r   r   r	   rY   r]   rZ   r[   r\   executefetchone)r   _raiffeisenr   ra   _foodr$   csv_textrowstrue_wealthresultrc   re   ro   rp   rq   rd   s                   r   Ytest_transfer_review_marks_true_wealth_target_and_writes_audit_without_productive_bookingr   A   s   44D.8.>.>+KueV KH4!2HP`jo  EK  L  L  L  L&ttV^cdddDq'K {3M'NPe  hF  G  GF'(A,AA(,AAAAAAAAAAA(,AAAAAA(AAAA,AAAAAAAAAAAAAAAAAAAAAAAAAAAA"#<'<<#'<<<<<<<<<<<#'<<<<<<#<<<<'<<<<<<<<<<<<<<<<<<<<<<<<<<<<*<<BCCLLNNqQVUVVQUVVVVVVVVVVVQUVVVVVVQVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVV<<J[YsMtLvww  A  A  C  C  DE  F  K  JK  K  F  JK  K  K  K  K  K  K  K  K  K  K  F  JK  K  K  K  K  K  F  K  K  K  K  JK  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  K  Kr   )r*   r+   )"
__future__r   builtinsr^   _pytest.assertion.rewrite	assertionrewriterY   'jarvis_finance.services.budget_accountsr   r   )jarvis_finance.services.budget_categoriesr   *jarvis_finance.services.budget_csv_importsr   &jarvis_finance.services.budget_importsr   r	   'jarvis_finance.services.budget_overviewr
   +jarvis_finance.services.budget_transactionsr   r   r   r   jarvis_finance.storage.databaser   !jarvis_finance.storage.migrationsr   r   r)   rs   r   r   r}   r   r   <module>r      sr   " " " " " "               p p p p p p p p M M M M M M M M M M M M c c c c c c c c G G G G G G V  V  V  V  V  V  V  V  V  V  V  V : : : : : : > > > > > >  / / /4 4 4 4(N N N N"K K K K K Kr   