U
    $£-dí  ã                   @   sD   d dl m Z  d dlT d dlmZ d dlmZ G dd„ dejjƒZdS )é    )Úcopy)Ú*)Úfields)ÚDecimalc                       s<   e Zd Zdd„ Z‡ fdd„Z‡ fdd„Z‡ fdd„Z‡  ZS )	ÚCmfDealItemsc                 C   sv   | j js$| jjs$| jjs$| jjs$d S | j p,d}|| jp8d }| jrL|| j8 }| jrlt| jd ƒ}||| 8 }|| _d S )Nr   éd   )ÚpriceÚ
is_changedZ
item_countZdiscountÚdiscount_pctr   Útotal)Úselfr   r
   © r   ú'./modules/sale/models/cmf_deal_items.pyÚ_calc_total	   s     

zCmfDealItems._calc_totalc                    s   ddddddg}t ƒ  ¡ | S )Nzproduct.prices.pricezproduct.taxzproduct.unitÚdealr   Úunit)ÚsuperÚsave_preload_fields)r   Ú_fields©Ú	__class__r   r   r      s    z CmfDealItems.save_preload_fieldsc                    sp   | j jr4| j r4| j jD ]}|jj| _ q*q| j j| _|  ¡  tƒ j||Ž}| j	rl| j
jrld| j	_
| j	j ¡  |S )Nr   )Úproductr	   Zpricesr   Úvaluer   r   r   Úsaver   r   )r   ÚargsÚkwargsr   Úresr   r   r   r      s    

zCmfDealItems.savec                    s2   |   dg¡ tƒ j||Ž}| jjs.| jj ¡  |S )Nr   )Zload_fieldsr   Údeleter   Zis_nullr   r   )r   r   r   r   r   r   r   r   '   s
    zCmfDealItems.delete)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Ú__classcell__r   r   r   r   r      s   r   N)	r   Zcmf.includeZcmfr   Zdecimalr   ZmodelsZ	CmfEntityr   r   r   r   r   Ú<module>   s   