
    P
i                      H    d dl Z d dlT d dlmZ  G d dej                  ZdS )    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                ^    dg dg dg}g d|d<    t                      j        ||||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"b"buww~vf
 
@F
 
 	
    c                 N    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%    ww**,,/h/h/hhhr!   c                 0   | j         j        s| j         j        r\| j        sU| j         r"| j         j        dk    rt          dd           n*t          j                            g ddgd          | _         d S t                      
                                 d S )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    =  	DM$< 	# = ~})W44!"t  }A  B  B  B  B$*$6$:$:BYBYBYcfbgx|$:$}$}DM     r!   c                     |dk    r.|sg }|r(|r&|                     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                      j        |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    )++  Y Y}/@/@/O/OSX/X/X$%tY7:::<V<V<VWYF .00 |T9=>F(3R'8F#$)uww)l/<VW`l ldjl l 	lr!   c                     g d}|                      | j                   d}|D ]"}| |         j        r|d| |         j         z  }#||d<    t                      j        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<   s    : : : 	8999 	, 	,AAw} ,+DGM+++v(uww(226222r!   c                 @   | j         rt          j                            | j         | j                  dk    rkt          j                            | j         | j        dd| j        g          }d}|D ]}||j        z  }|d| j          d| j         z  }t          |d	
           | 	                                  t                      j        |i |}| j        j        rB| j        j        r6| j        j        D ])}|j        j        dk    r|                    dg           *|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;   8 	-)//DH$(/KKAMM(--$(RVX\^b^eQf-ggHII# * *W\)		SDHSSSSSIit,,,,$$&&&egglD+F++: 	)	 4 	)
( ) );*h66YK((((
r!   c                     |                      ddg           | j        D ]}d |_        |                                 | j        D ]}d |_        |                                  t                      j        |i | d S )Nzpersons.companyztasks.company)rI   r6   rS   rW   tasksr   delete)r'   r   r   persontaskr   s        r    rb   zCmfCompany.delete]   s    +_=>>>l 	 	F!FNKKMMMMJ 	 	DDLIIKKKK''''''r!   c                    | j         rd S | j        dk    ri| j        sdd| _         | j        j                            d          d         }|                                r&| xj         dt          |           z  c_         d S d S d S d S )Nrc   u   Новый клиент-   rG   )r   typer   r   rK   
rpartitionisdigitint)r'   nums     r    
_calc_namezCmfCompany._calc_namej   s    9 	F9  )9 1DI)/,,S11!4C{{}} ,		^S^^+				 !   , ,r!   c                    t           j                            t          j                  sg S t          t          j        d          5 }t                              |                                          cd d d            S # 1 swxY w Y   d S )Nr)	ospathexistsconfigDEMO_IDS_FILEopenjsonloadsread)r   rN   s     r    r   zCmfCompany.load_demo_datat   s    w~~f233 	I&&,, 	(::affhh''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   ,A??BBu&   Удаление демо-данных)	only_oncedescriptionshow_bg_progressbarc                     t                                           5  t          j                            t
          j                  r)t          j                            t
          j                  s	 d d d            d S t          t
          j        d          5 } t          
                    |                                           }d d d            n# 1 swxY w Y   g }t                      }|D ]}t                               |          }||vr|t          j        k    rz|                    |           |                    dd|g          D ]J}|t          j        t          j        fv r|                    dd           4|                    d           K|                    |           t          j                            dd|gdg	          D ]!}|j        r
|                    dd
           "t          j                            g ddg	          D ]}d|_        |                    d            t5          dt6          j        g           t;          j        t>                    5  t                               t
          j                   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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{   st      "" "	0 "	07>>&"677 rw~~fNb?c?c "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 f*C00 +Ajj**+ + + + + + + + + + + + + + +G%%K - -//44'' 111u---#(::dD#5F:#G#G B BC$)<fn(MMM #


 M M M M #

D
 A A A A	B $,,,!,11$k9R\h[i1jj E E% eDDDD)..6`6`6`jpiq.rr ) )4((((,Q^<LMMMM$%677 0 0		&.///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0C"	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0 "	0sa   AJ4;J4-CJ4C	J4C	FJ4+%JJ4J 	 J4#J 	$J44J8;J8c                    | j         j        sd S | j         s_t          j                            d          }t          j                            dd|gdd| ggg          }|rt          d| d	
           t          j                            | t          j
                                                  D ]3}|                    d	           |j        r|                                 4d S )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 	F% 	&.228N2OOJ$*$?$D$Dn^acmMnNWY]`d_eMfMh$D %i %i!$ &  c  La  c  c $& & & & &++DAcAcAeAe+ff 	 	F***666  	 	r!   c                     t           j        }| j        r t                                                      S |                    d          rdS 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   sq    ~ 	-77**,,,''?'CC 	4ww&&  =s&  t  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 8
 8
 8
 
K !#D 	
 	
 	
 	
 	
 	
 [	
i i i i i
! 
! 
! 
! 
! l l l l l [l$3 3 3 3 3    &( ( ( ( (, , , ( ( [( 2Zptuuu$0 $0 vu \$0L  $
t 
t 
t 
t 
t 
t 
t 
t 
tr!   r   )r   cmf.includemodules.person.fieldsr   r   rH   r!   r    <module>r      sz            - - - - - -yt yt yt yt yt' yt yt yt yt ytr!   