
    \pe                     D    d dl Z d dl d dlmZ d dlmZ  G d de      Zy)    N)*)CmfActiveEntityfieldsc                   n     e Zd Z fdZddZd Zd Zd Zd Z fdZ	dd	 fd

Z
ed fd	       Z xZS )CmfLeadc                 *    t        t        | 
  |i |S N)superr   delete)selfargskwargs	__class__s      !./modules/sale/models/cmf_lead.pyr   zCmfLead.delete
   s    Wd*D;F;;    c                    | j                   j                  r	||| _         | j                   j                  dk(  rdn| j                   j                  }t        j	                  | | j
                  || j                         }| j                   |_        | j                  r| j                  |_        n| j                  r"t        j                  | j                  d      }nt        j                  d      }| j                  s"| j                  |_        | j                  |_        |j                          ||_        || _        | j                   r| j                   |_        nt        j#                  | j                  | j                  | j                  | j                        }|j                          |j                          |j                  j$                  |j&                  j$                  j)                  |j*                  d	      j)                  d
dd      z   |_        |j                   j-                  |       |j                          |S )Nu   Воронка продажu   Новая сделка)leadtextnameparentcompany)r   typeperson)r   )r   phoneemailr    -u    №   )r   is_nullr   modelsCmfDealr   pipeliner   lead_company_name
CmfCompanylead_contact_namelead_email_nameemail1lead_phone_namephone1savecontacts	CmfPersonvaluecodereplacecode_prefixappend)r   r   	deal_namedealr   contacts         r   create_dealzCmfLead.create_deal   s    ;;6#5 DK151A1AEb1b-hlhshshxhx	~~4diiiPTP[P[~\<<<<DL %% ++1G1Gi+X +++:))!%!5!5!%!5!5LLN"DL"DL== MMDM&&++****	 ' &G
 LLNIIK		$))//*A*A$BRBRTV*W*_*_`cekmn*ooDIMM  )		r   c                 X    | j                   r| j                  r| j                          yyy)uJ  
        TODO: Олег: сделать из этой функции конструктор сделок на основе лида с переопределением через kwargs
        TODO: Вещей вроде CmfMailbox._create_deal(self, lead) не должно существовать в принципе.
        N)is_newr   r6   r   s    r   
_calc_dealzCmfLead._calc_deal7   s$     ;;4;; ';r   c                    | j                   ry d }| j                  rt        j                  j	                  | j                  j
                  ddg      x}r| j                  r| j                  |j                  k7  rd }n| j                  r| j                  |j                  k7  rld }ni| j                  r]dd| j                  gg}| j                  r|j                  dd| j                  g       t        j                  j                  |ddg      }|r:| j                   j                  |       |j                  r|j                  | _        y y y )Nr   r   r   ==r   )filterr   )r,   r)   r!   r-   get_by_phoner.   r&   r   r'   r   r2   getr   )r   r   _filters      r   _calc_contactzCmfLead._calc_contact@   s   ==  ))66t7K7K7Q7Q[dfmZn6oovo))d.D.D.S!F))d.B.Bfll.R!F!!t';';<=G%%d.D.DEF%%)))WAU)VFMM  (~~%~~  r   c                     | j                   ry | j                  r:t        j                  j	                  | j                  j
                        | _         y y )N)r   )r   r$   r!   r%   r?   r.   r9   s    r   _calc_companyzCmfLead._calc_companyW   sA    <<!!!,,00d6L6L6R6R0SDL "r   c                     | j                   ry | j                  r)| j                  r| j                  j                   | _         y y y r
   )r   r8   r   r9   s    r   
_calc_namezCmfLead._calc_name]   s1    99;;4;;((DI ';r   c                 *    t         |          g dz   S )N)r,   r   r$   r&   r'   r)   r   )r   save_preload_fields)r   r   s    r   rG   zCmfLead.save_preload_fieldsc   s    w*, 0  	r   r   )depthc                   | j                          | j                          | j                          | j                  rB| j                  j                          t        j                  j                  g dd      | _	        | j                  j                  r| j                  r| j                  swt        j                  j                  dd| j                  g      D ]G  }|j                  j                  s| j                  |_
        |j                  s8|j!                          I | j#                          t%        | @  |d|i|}|S )N)r/   r<   salesT)r=   cache_inmemorylead_idr<   )r=   rH   )rA   rC   rE   r8   
alarm_dateset_nowr!   CmfActivityr?   activityr   
is_changedr"   listidr    r+   r:   r   )r   rH   r   r   r4   resr   s         r   r+   zCmfLead.saveh   s    ;;OO##%"..22:Qbf2gDM<<""t||DKK++ItTWW3M+N $<<''#'<<DL			$
 	glD888
r   c                 H    |dk(  r
|sg }|g dg}t        |   |f||d|S )Nr   )zstatus.status_typez!=CLOSED)r=   models_list)r   field_options_list)clsrelation_field_namer=   rW   r   r   s        r   rX   zCmfLead.field_options_listy   s=    (*DEFw)*=pfZepioppr   r
   )NN)__name__
__module____qualname__r   r6   r:   rA   rC   rE   rG   r+   classmethodrX   __classcell__)r   s   @r   r   r      sH    <(T..T)
 !" " q qr   r   )phonenumberscmf.includecommon.models.cmf_active_entityr   cmfr   r    r   r   <module>re      s!      ; wqo wqr   