
    i                      L    d dl Z d dl d dlmZ  G d dej                        Zy)    N)*)cmf_companyc                       e Zd ZdZej
                  j                  g dz   Zedddd fd
       Z fdZ	 fdZ
ed fd		       Z fd
Z fdZ fdZd Zed        Ze eddd      d               Zd Z fdZ xZS )
CmfCompanyT)clear_demo_dataload_demo_datasearch Nqueryfieldsfilterc                J    dg dg dg}g d|d<   t        |   ||||d|S )NOR)is_internal==N)r   r   F)nametextcodephone1phone2email1email2fields_filterr   )superr	   )clsr   r   r   argskwargs	__class__s         &./modules/person/models/cmf_company.pyr	   zCmfCompany.search   sD     '(

 #cw~vf
@F
 	
    c                 *    t         |          g dz   S )N)zdeals.status.status_typer   innkpp)r   save_preload_fieldsselfr   s    r    r%   zCmfCompany.save_preload_fields   s    w*,/hhhr!   c                 N   | j                   j                  s| j                   j                  rj| j                  s^| j                   r'| j                   j                  dk7  rt        dd       y t        j                  j                  g ddgd      | _         y t        | )          y )NsalesuP   Неправильный вид деятельности для компанииTabort)r   r   r)   r   )r   r   cache_inmemory)activityis_null
is_changedr   r   	cmf_alertmodelsCmfActivitygetr   _calc_activityr&   s    r    r4   zCmfCompany._calc_activity   s    ==  DMM$<$<##==}}))W4!"t  }A  B  %+$6$6$:$:BYcfbgx|$:$}DM r!   c                     |dk(  r*|sg }|r$|r"|j                  d      du r|dd|gdg dg dgg}|d	k(  r|sg }|dd|gg}d
g i|d<   t        |   |f|||d|S )Npersonsr   F
company_idr   r   )
user_localr   F)r8   r   Nmain_contact	CmfPersonmodels_filters)object_fieldsr   	object_id)r3   r   field_options_list)r   relation_field_namer<   r   r=   r   r   s         r    r>   zCmfCompany.field_options_list)   s    )+}/@/@/OSX/X$%tY7:<VWYF .0|T9=>F(3R'8F#$w)l/<VW`ldjl 	lr!   c                     g d}| j                  | j                         d}|D ]'  }| |   j                  s|d| |   j                   z  }) ||d<   t        |   di |S )N)cityaddressaddress_in_lawr#   bank_accountogrnr   r   r   r   website_urlr
    r    )load_fieldsfull_search_preload_fieldsvaluer   full_search_index)r'   r   text_fieldsr   fr   s        r    rL   zCmfCompany.full_search_index<   sv    : 	889 	,AAw}}!DGMM?++	, vw(2622r!   c                    | j                   rt        j                  j                  | j                   | j                        dkD  rt        j                  j                  | j                   | j                  dd| j                  g      }d}|D ]  }||j                  z  } |d| j                    d| j                   z  }t        |d	
       | j                          t        | ,  |i |}| j                  j                  r]| j                  j                  rG| j                  j                  D ].  }|j                  j                   dk(  r|j#                  dg       0 |S )N)r#   r$      idz!=)r#   r$   r   u.   Уже существует компания: u    с такими ИНН:u    и КПП:Tr*   CLOSEDcompany)r#   r1   r   countr$   listrQ   r   r0   _calc_servicedesk_allowr   savedealsrK   r/   statusstatus_typeupdate)	r'   r   r   cmp_list	alert_strrS   resdealr   s	           r    rW   zCmfCompany.saveJ   s-   88))//DHH$((/KAM((--$((RVX\^b^e^eQf-gHHI# *W\\)	* 3DHH:[
SSIit,$$&glD+F+::		 4 4

(( );;**h6YK() 
r!   c                     | j                  ddg       | j                  D ]  }d |_        |j                           | j                  D ]  }d |_        |j                           t        |   |i | y )Nzpersons.companyztasks.company)rI   r6   rS   rW   tasksr   delete)r'   r   r   persontaskr   s        r    rb   zCmfCompany.delete]   sr    +_=>ll 	F!FNKKM	 JJ 	DDLIIK	 	''r!   c                    | j                   ry | j                  dk(  ro| j                  sbd| _         | j                  j                  j                  d      d   }|j                         r"| xj                   dt        |       z  c_         y y y y )Nrc   u   Новый клиент-   rG   )r   typer   r   rK   
rpartitionisdigitint)r'   nums     r    
_calc_namezCmfCompany._calc_namej   sr    9999 )9)91DI))//,,S1!4C{{}		qS
^+	 	 *: r!   c                    t         j                  j                  t        j                        sg S t        t        j                  d      5 }t        j                  |j                               cd d d        S # 1 sw Y   y xY w)Nr)	ospathexistsconfigDEMO_IDS_FILEopenjsonloadsread)r   rN   s     r    r   zCmfCompany.load_demo_datat   sV    ww~~f223I&&&, 	(::affh'	( 	( 	(s   
#A77B u&   Удаление демо-данных)	only_oncedescriptionshow_bg_progressbarc                  @   t         j                         5  t        j                  j	                  t
        j                        r-t        j                  j                  t
        j                        s
	 d d d        y t        t
        j                  d      5 } t        j                  | j                               }d d d        g }t               }D ]  }t         j                  |      }||vs|t        j                  k7  rt|j!                  |       |j#                  dd|g      D ]J  }|t        j$                  t        j&                  fv r|j)                  dd       9|j)                  d       L |j+                  |        t        j                  j#                  dd|gdg	      D ]"  }|j,                  r|j)                  dd
       $ t        j.                  j#                  g ddg	      D ]  }d|_        |j3                  d        t5        dt6        j8                  g       t;        j<                  t>              5  t        jA                  t
        j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nro   rQ   INr   T)forceskip_owner_check)r   
is_default)r   r   F)r   use_job)r   LIKEu   Демо-данные%r   r
   )	only_datar   )event_persons)!cmfutildisable_aclrp   rq   rr   rs   rt   isfileru   rv   rw   rx   setget_model_by_idr1   
CmfProjectappendrU   CmfChatGroupCmfListrb   addr   CmfDocumentr   rW   cmf_emit_eventgcurrent_user
contextlibsuppressFileNotFoundErrorremove)	rN   ids_modelsproject_ids_idmodelobjprojectdocs	            r    r   zCmfCompany.clear_demo_data{   s/      " "	077>>&"6"67rww~~fNbNb?c"	0 "	0 f**C0 +Ajj*+G%K -//4' 1 11u-#(::dD#5F:#G BC$)<)<fnn(MM #


 M #

D
 A	B $,- ",,11$k9R\h[i1j E%%eD	E ))..6`jpiq.r )4() ,Q^^<LM$$%67 0		&../0C"	0 "	0+ +<0 0C"	0 "	0sI   AJ:J$I;82J+EJ$J*J;J	 JJ	JJc                    | j                   j                  sy | j                   s[t        j                  j	                  d      }t        j
                  j                  dd|gdd| ggg      }|rt        d| d	
       t        j                  j                  | t        j                  j                               D ]1  }|j                  d	       |j                  s"|j                          3 y )Nzsdesk-client:default)r   project_role=membersr}   r~   un   Чтобы убрать доступ в Service Desk, нужно убрать связь в проектах: Tr*   )rS   r   )r   )servicedesk_allowr/   r1   CmfProjectRoler3   CmfProjectRoleAssignrU   r0   r:   r   r   r%   rV   rW   )r'   
sdesk_roleactive_sdesk_projectsrc   s       r    rV   z"CmfCompany._calc_servicedesk_allow   s    %%00%%..228N2OJ$*$?$?$D$Dn^acmMnNWY]`d_eMfMh$D %i!$  K  La  Kb  c $& &&++DAcAcAe+f 	F***6  	r!   c                     t         j                  }| j                  rt        |          S |j                  d      ryt        |   d      S )NContactAdmins)
group_codeTut    Либо нужно быть членом группы "Редакторы Компаний и Контактов".)additional_error_msg)r   r   r   r   check_edit_permin_person_group)r'   r   r   s     r    r   zCmfCompany.check_edit_perm   sT    ~~7*,,''?'Cw&  =s&  t  	tr!   )NNN)__name__
__module____qualname__	api_allowr   r   api_methodsclassmethodr	   r%   r4   r>   rL   rW   rb   rm   r   staticmethodcmf_deferred_jobr   rV   r   __classcell__)r   s   @r    r   r      s    I((44 8
 
K !#D 	
 	
i
! l l$3&(, ( ( 2Zptu$0 v $0L$
t 
tr!   r   )r   cmf.includemodules.person.fieldsr   r   rH   r!   r    <module>r      s$      -yt'' ytr!   