
    |j                        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
 d dlmZ d dlmZmZmZmZ h dZh d	Zdd
ZddZddddZddZddZy)    )annotations)Any)fetch_accounting_row_by_idfetch_accounting_rows)BitrixClient)config)SheetsClient)	SyncStatsmark_accounting_row_deletedsync_accounting_to_sheetupsert_accounting_row>   ONCRMDYNAMICITEMADDONCRMDYNAMICITEMDELETEONCRMDYNAMICITEMUPDATE>   ONCRMDEALADDONCRMDEALDELETEONCRMDEALUPDATEc                 4    t        t        j                        S )N)r   r   bitrix_webhook_url     4/var/www/abs-group.kazgame-control.su/app/service.pycreate_bitrix_clientr      s    1122r   c                     t         j                  j                         st        dt         j                   d      t	        t         j
                  t         j                  t         j                        S )Nz'Google service account file not found: zc
Create a service account key, save it there, and share the spreadsheet with the SA email (Editor).)spreadsheet_id
sheet_nameservice_account_path)r   google_service_account_pathexistsRuntimeErrorr	   r   r   r   r   r   create_sheets_clientr!       sf    --4465f6X6X5Y Zq q
 	
 ,,$$#?? r   Fdry_runc                    t               }t        |      }t        dt        |       d       t	               }t        |||       S )NFetched  card(s) from Bitrixr"   )r   r   printlenr!   r   )r#   bitrixrowssheetss       r   run_full_syncr,   -   sA    !#F (D	HSYK3
45!#F#FD'BBr   c                    t               } t        |       }t        dt        |       d       |D ][  }t        d|j                   d|j
                   d|j                   d|j                   d|j                   d|j                          ] y )Nr%   r&   #z | )
r   r   r'   r(   	bitrix_idcategory_nametitleamountdatestatus)r)   r*   rows      r   preview_accounting_rowsr6   5   s    !#F (D	HSYK3
45 
c#"3"3!4C		{#zzl#chhZs3::,8	

r   c                   t        | j                  d      xs d      j                         }| j                  d      xs i j                  d      xs i }	 t        |j                  d            }|j                  d      }	 |t        |      nd }|r|ddd	S |t        v rdd
d	S |t        vrdd| d	S |,|t        j                  k7  rdd| dt        j                   d	S t               }t               }|dk(  rt        ||      }d||dS t        ||      }	|	t        ||      }d|dk(  rd|dS ||dS t        ||	      }d||dS # t        t
        f$ r d }Y w xY w# t        t
        f$ r d }Y w xY w)Nevent dataFIELDSIDENTITY_TYPE_IDignoredzmissing event or id)r4   reasonu   ONCRMDEAL* is for classic deals. Accounting funnels are SPA «Заявка в бухгалтерию» — use ONCRMDYNAMICITEMADD/UPDATE/DELETEzunsupported event zentityTypeId z is not accounting SPA r   ok)r4   actionbitrixIdmissingskipped_out_of_scope)strgetupperint	TypeError
ValueErrorDEAL_EVENTS
SPA_EVENTSr   entity_type_idr!   r   r   r   r   )
payloadr8   fieldsitem_id
entity_rawrM   r+   r)   rA   r5   s
             r   handle_bitrix_eventrR   @   s   G$*+113E{{6"(b--h7=2Ffjj&' ,-J,6,BZ GO#/DEEg
 	
 J#1CE7/KLL!n8M8M&M//FvG\G\F]^
 	
 "#F!#F((,VW=&gFF
$VW
5C
{,VW=06)0C,
 	
IO
 	
 #63/Ff'BBc z"  z" s$   E E# E E #E76E7N)returnr   )rS   r	   )r#   boolrS   r
   )rS   None)rN   dict[str, Any]rS   rV   )
__future__r   typingr   app.bitrix.accountingr   r   app.bitrix.clientr   
app.configr   app.sheets.clientr	   app.sheets.syncr
   r   r   r   rL   rK   r   r!   r,   r6   rR   r   r   r   <module>r^      sO    "  S *  * 

3
 &+ C
6Cr   