U
    \d                     @   sD   d dl T d dlmZ d dlmZ d dlmZ G dd dejjZ	dS )    )*)fields)CmfActiveEntity)Decimalc                       sT   e Zd Z fddZdd Zdd fdd
Z fd	d
Zed fdd	Z  Z	S )
CmfProductc                    s$   |  ddg |   t   d S )Nzprices.start_datezprices.price)Zload_fields_calc_current_pricesuper_update_cache_fieldsself	__class__ #./modules/crm/models/cmf_product.pyr	   
   s    zCmfProduct._update_cache_fieldsc                 C   sB   | j d krtd| _ | jsd S t| jdd dd}|d j| _ d S )Nr   c                 S   s   | j jS )N)Z
start_datevalue)pr   r   r   <lambda>       z0CmfProduct._calc_current_price.<locals>.<lambda>T)keyreverse)current_pricer   ZpricessortedZprice)r   Zsorted_pricesr   r   r   r      s    

zCmfProduct._calc_current_pricer   )depthc                   s8   | j sd| _ | jstj | _tt| j|ddi|S )N   r   r   )taxunitmodelsZCmfUnitgetr   r   save)r   r   argskwargsr   r   r   r      s
    zCmfProduct.savec                    s   t   dddg S )Nr   r   r   )r   save_preload_fieldsr
   r   r   r   r!       s    zCmfProduct.save_preload_fieldsNc                    s(   t  |}|s$|tjddg7 }|S )NZ
item_counttotal)r   import_shop_fieldsr   ZCmfDealItems)clsZfields_nameresr   r   r   r#   #   s    zCmfProduct.import_shop_fields)N)
__name__
__module____qualname__r	   r   r   r!   classmethodr#   __classcell__r   r   r   r   r      s   
r   N)
Zcmf.includeZcmfr   Zcommon.models.cmf_active_entityr   decimalr   r   Z	CmfEntityr   r   r   r   r   <module>   s   