o
    äI@h©  ã                   @   s6   d dl mZ d dlmZ d dlmZ G dd„ dƒZdS )é    )ÚBaseBankStatementParser)ÚTransaction)ÚIiko1CFileGeneratorc                
   @   sN   e Zd Zdd„ Zdefdd„Zdefdd„Zded	ed
ededef
dd„ZdS )ÚBankStatementServicec                 C   s   i | _ tƒ | _d S ©N)Úparsersr   Úiiko_generator)Úself© r
   ú4/var/www/html/app/services/bank_statement_service.pyÚ__init__   s   zBankStatementService.__init__Úkeyc                 C   s   || j |< d S r   )r   )r	   r   Úparser_classr
   r
   r   Úregister_parser
   s   z$BankStatementService.register_parserc                 C   s&   | j  |¡}|std|› dƒ‚|ƒ S )NzParser for z
 not found)r   ÚgetÚ
ValueError)r	   r   Z
parser_clsr
   r
   r   Ú
get_parser   s   zBankStatementService.get_parserÚ	file_pathÚbank_keyÚuser_innÚsenderÚreturnc           	      C   sJ   |   |¡}| |¡}|D ]}|jdk r||_q||_q| jj||d}|S )uI  
        1) ÐŸÐ°Ñ€ÑÐ¸Ñ‚ Ñ„Ð°Ð¹Ð» (Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÐ¼ ÑÐ¿Ð¸ÑÐ¾Ðº Transaction).
        2) ÐŸÐ¾Ð´ÑÑ‚Ð°Ð²Ð»ÑÐµÑ‚ user_inn Ð² Ð·Ð°Ð²Ð¸ÑÐ¸Ð¼Ð¾ÑÑ‚Ð¸ Ð¾Ñ‚ Ð·Ð½Ð°ÐºÐ° ÑÑƒÐ¼Ð¼Ñ‹.
        3) Ð’Ñ‹Ð·Ñ‹Ð²Ð°ÐµÑ‚ iiko-Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€ Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ 'sender'.
        4) Ð’Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ Ð¸Ñ‚Ð¾Ð³Ð¾Ð²Ñ‹Ð¹ Ñ‚ÐµÐºÑÑ‚.
        r   )r   )r   ÚparseÚamountÚ	payer_innZrecipient_innr   Zgenerate_file_content)	r	   r   r   r   r   ÚparserZtransactionsÚtZ
final_textr
   r
   r   Úprocess_file   s   


z!BankStatementService.process_fileN)Ú__name__Ú
__module__Ú__qualname__r   Ústrr   r   r   r
   r
   r
   r   r      s
    "r   N)Zapp.parsers.base_parserr   Zapp.models.transactionr   Z%app.generators.iiko_1c_file_generatorr   r   r
   r
   r
   r   Ú<module>   s    