U
    $-d                     @   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   ==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   r1   r&   r-   r   r   r   _calc_companyW   s    zCmfLead._calc_companyc                 C   s$   | j r
d S | jr | jr | jj | _ d S r   )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_fieldsr-   r   r   r   r5   c   s         zCmfLead.save_preload_fieldsr   )depthc                   s   |    |   |   | jr>| j  tjjdddgd| _	| j
jr| j
r| jstjjdd| jgdD ]"}|j
jrh| j
|_
|jrh|  qh|   t j|d|i|}|S )Nr'   r/   Zsales)r0   Zlead_idr6   )r2   r3   r4   r,   Z
alarm_dateZset_nowr   ZCmfActivityr1   Zactivityr   Z
is_changedr   listidr   r#   r.   r   )r
   r6   r   r   r*   resr   r   r   r#   h   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)r0   models_list)r   field_options_list)clsZrelation_field_namer0   r:   r   r   r   r   r;   y   s
    zCmfLead.field_options_list)N)NN)__name__
__module____qualname__r	   r+   r.   r2   r3   r4   r5   r#   classmethodr;   __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   