B
    f                 @   s<   d dl Z d dlT d dlmZ d dlmZ G dd deZdS )    N)*)CmfActiveEntity)fieldsc                   sv   e Zd Z fddZdddZdd Zdd	 Zd
d Zdd Z fddZ	dd fdd
Z
ed fdd	Z  ZS )CmfLeadc                s   t t| j||S )N)superr   delete)selfargskwargs)	__class__ !./modules/sale/models/cmf_lead.pyr   
   s    zCmfLead.deleteNc             C   s"  | j jr|d k	r|| _ | j jdkr&dn| j j}tj| | j|| j d}| j |_| jr\| j|_nN| jrttj	| jdd}ntj	dd}| j
s| j|_| j|_|  ||_|| _| jr| j|_n\tj| j
| j| j| jd}|  |  |jj|jj|jd	d
dd |_|j| |  |S )Nu   Воронка продажu   Новая сделка)Zleadtextnameparentcompany)r   typeperson)r   )r   Zphoneemailr    -u    №   )r   is_nullr   modelsCmfDealr   Zpipeliner   lead_company_name
CmfCompanylead_contact_namelead_email_nameZemail1lead_phone_nameZphone1savecontacts	CmfPersonvaluecodereplaceZcode_prefixappend)r   r   Z	deal_namedealr   Zcontactr   r   r   create_deal   s:    


&zCmfLead.create_dealc             C   s   | j r| jr|   dS )uJ  
        TODO: Олег: сделать из этой функции конструктор сделок на основе лида с переопределением через kwargs
        TODO: Вещей вроде CmfMailbox._create_deal(self, lead) не должно существовать в принципе.
        N)is_newr   r(   )r   r   r   r   
_calc_deal7   s    zCmfLead._calc_dealc             C   s   | j r
d S d }| jr`tjj| jjddgd}|r| jrH| j|jkrHd }q| jr| j|j	krd }n@| jrdd| jgg}| jr|
dd| jg tjj|ddgd}|r| j 
| |jr|j| _d S )Nr   r   )r   z==r   )filterr   )r!   r   r   r"   Zget_by_phoner#   r   r   r   r   r&   getr   )r   r   Z_filterr   r   r   _calc_contact@   s&    zCmfLead._calc_contactc             C   s(   | j r
d S | jr$tjj| jjd| _ d S )N)r   )r   r   r   r   r,   r#   )r   r   r   r   _calc_companyX   s    zCmfLead._calc_companyc             C   s$   | j r
d S | jr | jr | jj | _ d S )N)r   r)   r   )r   r   r   r   
_calc_name^   s    zCmfLead._calc_namec                s   t   dddddddg S )Nr!   r   r   r   r   r   r   )r   save_preload_fields)r   )r   r   r   r0   d   s    zCmfLead.save_preload_fieldsr   )depthc               s   |    |   |   | jr@| j  tjjdddgdd| _	| j
jr| j
r| jsx<tjjdd| jgdD ]"}|j
jrl| j
|_
|jrl|  qlW |   t j|d|i|}|S )	Nr$   z==ZsalesT)r+   Zcache_inmemoryZlead_id)r+   r1   )r-   r.   r/   r)   Z
alarm_dateZset_nowr   ZCmfActivityr,   Zactivityr   Z
is_changedr   listidr   r    r*   r   )r   r1   r	   r
   r'   Zres)r   r   r   r    i   s    
zCmfLead.savec                s8   |dkr|sg }|dddgg}t  j|f||d|S )Nr   zstatus.status_typez!=ZCLOSED)r+   models_list)r   field_options_list)clsZrelation_field_namer+   r4   r
   )r   r   r   r5   z   s
    zCmfLead.field_options_list)N)NN)__name__
__module____qualname__r   r(   r*   r-   r.   r/   r0   r    classmethodr5   __classcell__r   r   )r   r   r      s   
*	r   )ZphonenumbersZcmf.includeZcommon.models.cmf_active_entityr   Zcmfr   r   r   r   r   r   <module>   s   