
    ajU                        d dl mZ d dl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mZmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ d Zd Zd Zd Zd Zd ZdS )    )annotationsN)HTTPException)confirm_create_budget_account)confirm_create_categoryimport_budget_csv_text)$classify_swisslos_internal_transfersconfirm_transaction_candidatelist_transaction_candidates preview_batch_confirm_candidates)get_budget_status_by_category)list_budget_transactionslist_budget_transfers)connect_memory)apply_migrationsc                 @    t                      } t          |            | S )N)r   r   conns    2tests/unit/test_budget_internal_transfer_hotfix.pydbr      s     DTK    c                    t          | dddd          d         }t          | dddd          d         }t          | ddd	          d         }|||fS )
N
RaiffeisencashCHF)nameaccount_typecurrency	entity_idAKB HaushaltskontozEssen & Haushaltexpense)r   category_type)r   r   )r   raifakbfoods       r   
setup_baser&      sw    (V\jo/p/pqqr}~D
'7K]cqv.w.w
x
x  zE  FC"42DW`)a)abbcnoDd?r   c                V    t          | dddd           t          | dddd           d S )	Nraiffeisen_bankzIBAN;Booked At;Text;Credit/Debit Amount;Balance;Valuta Date
CH1280808006766055632;2026-01-26;Einkauf TWINT SWISSLOS E-COMMERCE;-100.00;0;2026-01-26
z*260518_Konto_Raiffeisen_20260518085941.csvFsource_file_labeldry_runakb_bankzBuchung;Valuta;Buchungstext;Belastung;Gutschrift;Saldo CHF
26.01.2026;26.01.2026;TWINT-Zahlung SWISSLOS E-COMMERCE, BASEL;100.00;;0
zKontoauszug_360 Tage_AKB.csvr   r   s    r   seed_swisslosr-   "   s`     	aF     	Q8     r   c                 j   t                      } t          |            t          |            t          |           }|d         dk    sJ t	          | d          }t	          | ddd          }t          d |D                       sJ t          d	 |D                       }|d
         dk    sJ |d         dk    sJ |d         J |d         dk    sJ |d         dk    sJ |d         dk    sJ |                     d                                          }|d         dk    sJ d|d         v sJ d S )Nupdated_count   2026)budget_year	transfersTr2   tabinclude_referencec              3  *   K   | ]}d |d         vV  dS )SWISSLOSdescriptionN .0rs     r   	<genexpr>z_test_swisslos_raiffeisen_candidate_is_transfer_and_not_normal_review_expense.<locals>.<genexpr>:   s,      BBaz=!11BBBBBBr   c              3  2   K   | ]}|d          dk    |V  dS source_typer(   Nr:   r;   s     r   r>   z_test_swisslos_raiffeisen_candidate_is_transfer_and_not_normal_review_expense.<locals>.<genexpr>;   s2      MMQq'7;L'L'Lq'L'L'L'LMMr   statustransfer_candidateclassificationproposed_category_id	rule_nameu9   Raiffeisen TWINT Swisslos → AKB Haushaltskonto Transferbudget_impactneutraltransfer_target_account_namer    zjSELECT target_action, notes FROM budget_import_rules WHERE rule_id='rule_raiffeisen_swisslos_akb_transfer'target_actionnotes)	r   r&   r-   r	   r   allnextexecutefetchone)r   resultnormalr3   rowstored_rules         r   Ltest_swisslos_raiffeisen_candidate_is_transfer_and_not_normal_review_expenserT   3   s   44DD!!!=#6#6#61$77F/"a''''(6BBBF+Df+imnnnIBB6BBBBBBBB
MM)MMM
M
MCx=00000 $88888%&...{ZZZZZ9,,,,-.2FFFFF,,   L  M  M  V  V  X  XK'+?????;w#7777777r   c            	        t                      } t          |           \  }}}t          |            t          |            t	          d t          | ddd          D                       }t          j        t                    5 }t          | |d         g|d           d d d            n# 1 swxY w Y   |j
        j        d         d	         d
         dk    sJ t          j        t                    5  t          | |d         |ddd           d d d            n# 1 swxY w Y   t          | |d         ||ddd          }|d         dk    sJ t          | d          sJ t          | dd          g k    sJ t          | dd          g k    sJ t          t          | dd                    dk    sJ t!          | d          g k    sJ |                     d                                          d	         dk    sJ d S )Nc              3  2   K   | ]}|d          dk    |V  dS r@   r:   r;   s     r   r>   zltest_transfer_candidate_confirm_creates_transfer_not_income_or_expense_and_batch_skips_it.<locals>.<genexpr>J   sh        i  i1  CD  ER  CS  Wh  Ch  ChQ  Ch  Ch  Ch  Ch  i  ir   r1   r3   Tr4   transaction_candidate_id)candidate_ids
account_idr2   	conflictsr   reasontransfer_candidate_blockedtransfer)rY   transaction_typer2   )from_account_idto_account_idr^   r2   rB   	confirmed)yearr!   )rb   r^   income   zJSELECT COUNT(*) FROM audit_log WHERE action='candidate_transfer_confirmed'r0   )r   r&   r-   r	   rM   r   pytestraisesr   r   valuedetailr
   r   r   lenr   rN   rO   )r   r#   r$   _food	candidateblockedrP   s          r   Ytest_transfer_candidate_confirm_creates_transfer_not_income_or_expense_and_batch_skips_itrm   G   s/   44DJt$4$4!sEmD6I6I6I(...  i  i ;DfZey} ~ ~ ~  i  i  i  i  iI	}	%	% K(iHb>c=dqu  DJ  	K  	K  	K  	KK K K K K K K K K K K K K K K=,Q/9=YYYYY	}	%	% ` `%dI6P,Qbf  }G  X^  T_  T_  	`  	`  	`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` +4;U1Vlp  DG  ]g  x~  Y  Y  @  @F({**** F333333#Dv	RRRVXXXXX#DvQQQUWWWWW'6JWWWXX\]]]]](F;;;rAAAA<<deennppqrswxxxxxxxs$   B**B.1B.2DD!Dc                    t                      } t          |            t          | dddd           t          |           }t	          | ddd	          d
         }|d         dk    sJ |d         dk    sJ |d         du sJ d S )Nr(   zIBAN;Booked At;Text;Credit/Debit Amount;Balance;Valuta Date
CH1280808006766055632;2026-05-13;Einkauf TWINT SWISSLOS E-COMMERCE;-100.00;0;2026-05-13
zraiffeisen.csvFr)   r1   r3   Tr4   r   unmatched_countr0   transfer_pair_status	unmatchedrequires_review)r   r&   r   r	   r   )r   rP   rR   s      r   8test_unmatched_swisslos_transfer_remains_review_requiredrs   \   s    44DD!!!4!2  5M  aq  {@  A  A  A  A1$77F
%dKcg
h
h
hij
kC#$))))%&+5555 !T))))))r   )
__future__r   re   fastapir   'jarvis_finance.services.budget_accountsr   )jarvis_finance.services.budget_categoriesr   *jarvis_finance.services.budget_csv_importsr   &jarvis_finance.services.budget_importsr	   r
   r   r   'jarvis_finance.services.budget_overviewr   +jarvis_finance.services.budget_transactionsr   r   jarvis_finance.storage.databaser   !jarvis_finance.storage.migrationsr   r   r&   r-   rT   rm   rs   r:   r   r   <module>r~      s\   " " " " " "  ! ! ! ! ! ! Q Q Q Q Q Q M M M M M M M M M M M M            R Q Q Q Q Q g g g g g g g g : : : : : : > > > > > >      "8 8 8(y y y** * * * *r   