o
    Zfr=                     @   s   d dl mZ d dlT d dlT d dlT d dlZdd Zdd ZG dd	 d	ejZ	G d
d dejZ
G dd dejZG dd dejZG dd dejZdS )    )serializers)*Nc                 C   F   | j dr| j d jdd }|S | j dr| j d }|S d }|S )Nrequest isShowSessionPurchaseOrderDetailcontext__contains__query_paramsget)selfr    r   /Users/waleedhassanin/Documents/snowflake_co_dev_github/snow_flake_back_end_deploy/snow_flake_api/snow_flake_payment/serializer.py#getIsShowSessionPurchaseOrderDetail      
r   c                 C   r   )Nr   isShowSessionShippingItemDetailr   )r   r   r   r   r   "getIsShowSessionShippingItemDetail   r   r   c                       s   e Zd Ze Ze Ze Ze Ze Z	dZ
dZdZdZdZdZdZdZG dd dZdd Z fddZdd	 Zd
d Zdd Zdd Zdd Z  ZS )SessionPurchaseOrderSerializerr   c                   @      e Zd ZeZg dZdS )z#SessionPurchaseOrderSerializer.Meta)idcreatedDateupdatedDate	sessionId
sessionUrlstatusisDiscountOnMultipleProductspaymentMethodIdtaxesIdorderFromIdcouponIdclientIdpaymentMethod	orderFromcouponclientsessionShippingItemListN)__name__
__module____qualname__SessionPurchaseOrdermodelfieldsr   r   r   r   Meta)       r,   c                 C   sT  t jj|jd}|D ]o}tjj|jd}|D ]G}t|}| j|j | _| j|j	|j  | _| j
|jd |j  | _
| j|jd |j  | _| j|jd |j  | _| j|jd |j  | _q|jd urytjjt|jjd}|d ury| j|j | _q
|jdkr| jd	kr| j| j
 d
 | _n| j
| _| j| j | _|jd ur| j|jj | _d S d S )NsessionPurchaseOrderIdsessionShippingItemIdofferedPriceservicetaxesr!   r   T      )SessionShippingItemobjectsfilterr   SessionPurchaseShippingItem%SessionPurchaseShippingItemSerializersumQuantitydeliveredQuantitysubTotalMinskuPricesubTotalMaxdata
sumServicesumTaxessumPaymentMethodshippingMethodIdShippingMethodr   strsumDeliverypricer   totalr   discount)r   instancer%   currentsessionPurchaseShippingItemListZsessionPurchaseShippingItemZspsisselectedShippingMethoddr   r   r   	calculate?   s.   

z(SessionPurchaseOrderSerializer.calculatec                    s   t  |}d| _d| _d| _d| _d| _d| _d| _d| _	| 
| | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< |jdkrY| jd	krY| j| j| j d
  |d< nd|d< | j	|d< |S )Nr   r?   rA   rI   rC   rD   rE   Tr6   r7   rL   rK   )superto_representationr?   rA   rI   rC   rD   rE   r=   rK   rQ   r   r   rM   ret	__class__r   r   rS   \   s*   







z0SessionPurchaseOrderSerializer.to_representationc                 C   0   t | }tjjt|jjd}t|d|idjS Nr5   
languageIdr   )	getLanguagePaymentMethodr9   r   rH   r   r   PaymentMethodSerializerrB   )r   rM   rZ   r!   r   r   r   get_paymentMethodt      z0SessionPurchaseOrderSerializer.get_paymentMethodc                 C   rX   rY   )	r\   	OrderFromr9   r   rH   r   r   OrderFromSerializerrB   )r   rM   rZ   r"   r   r   r   get_orderFromy   r`   z,SessionPurchaseOrderSerializer.get_orderFromc                 C   .   |j d urtjjt|j jd}t|jS d S Nr5   )r   Couponr9   r   rH   r   CouponSerializerrB   )r   rM   r#   r   r   r   
get_coupon~      

z)SessionPurchaseOrderSerializer.get_couponc                 C   rd   re   )r    Clientr9   r   rH   r   ClientDisplaySerializerrB   )r   rM   r$   r   r   r   
get_client   ri   z)SessionPurchaseOrderSerializer.get_clientc                 C   sn   t | }|d ur3t|dkr5t| }t| }t| }t| }tjj|j	d}t
|d||||ddjS d S d S )Nr6   r.   T)rZ   isDashboardr   
isShowItemmanyr   )r   intr\   getIsDashboardgetIsShowItemr   r8   r9   r:   r   SessionShippingItemSerializerrB   )r   rM   r   rZ   rm   rn   r   r%   r   r   r   get_sessionShippingItemList   s   z:SessionPurchaseOrderSerializer.get_sessionShippingItemList)r&   r'   r(   r   SerializerMethodFieldr!   r"   r#   r$   r%   r?   rA   rI   rC   rD   rE   r=   rK   r,   rQ   rS   r_   rc   rh   rl   ru   __classcell__r   r   rV   r   r      s,    r   c                   @   sZ   e Zd Ze Ze Ze Ze ZG dd dZ	dd Z
dd Zdd Zd	d
 ZdS )rt   c                   @   r   )z"SessionShippingItemSerializer.Meta)
r   r   r   rF   feesIdr/   shippingMethodfeessessionShippingAddressrO   N)r&   r'   r(   r8   r*   r+   r   r   r   r   r,      r-   r,   c                 C   N   t jjt|jjd r%t| }t jjt|jjd}t	|d|idj
S d S rY   )rG   r9   r:   rH   rF   r   existsr\   r   ShippingMethodSerializerrB   )r   rM   rZ   ry   r   r   r   get_shippingMethod   
   z0SessionShippingItemSerializer.get_shippingMethodc                 C   r|   rY   )Feesr9   r:   rH   rx   r   r}   r\   r   FeesSerializerrB   )r   rM   rZ   rz   r   r   r   get_fees   r   z&SessionShippingItemSerializer.get_feesc                 C   sJ   t jjt|jd r#t| }t jjt|jd}t|d|idj	S d S )Nr0   rZ   r[   )
SessionShippingAddressr9   r:   rH   r   r}   r\   r    SessionShippingAddressSerializerrB   )r   rM   rZ   r{   r   r   r   get_sessionShippingAddress   s
   z8SessionShippingItemSerializer.get_sessionShippingAddressc                 C   sd   t | }|d ur.t|dkr0t| }t| }t| }tjj|jd}t	|d|||ddj
S d S d S )Nr6   r0   T)rZ   rm   rn   ro   )r   rq   r\   rr   rs   r;   r9   r:   r   r<   rB   )r   rM   r   rZ   rm   rn   rO   r   r   r   #get_sessionPurchaseShippingItemList   s   zASessionShippingItemSerializer.get_sessionPurchaseShippingItemListN)r&   r'   r(   r   rv   ry   rz   r{   rO   r,   r   r   r   r   r   r   r   r   rt      s    rt   c                   @   s:   e Zd Ze Ze ZG dd dZdd Zdd Z	dS )r   c                   @   r   )z%SessionShippingAddressSerializer.Meta)r1   phonehomeNumberAndStreetName
townOrCitypostCode	countryIdcountyIdOrStateIdr   r   countrycountyOrStateN)r&   r'   r(   r   r*   r+   r   r   r   r   r,      r-   r,   c                 C   
   t | |S N)
getCountryr   rM   r   r   r   get_country      
z,SessionShippingAddressSerializer.get_countryc                 C   r   r   )getCountyOrStater   r   r   r   get_countyOrState   r   z2SessionShippingAddressSerializer.get_countyOrStateN)
r&   r'   r(   r   rv   r   r   r,   r   r   r   r   r   r   r      s    r   c                       sf   e Zd Ze Ze ZdZdZdZ	dZ
dZG dd dZdd Zdd Zdd	 Z fd
dZ  ZS )r<   r   c                   @   r   )z*SessionPurchaseShippingItemSerializer.Meta)r   r@   skuDiscountr>   r   r   
itemCostIdskuIdr1   itemCostskuN)r&   r'   r(   r;   r*   r+   r   r   r   r   r,      r-   r,   c                 C   s>   t | }|jd urtjjt|jjd}t|d|idjS d S rY   )	r\   r   ItemCostr9   r   rH   r   ItemCostSerializerrB   )r   rM   rZ   r   r   r   r   get_itemCost   s
   
z2SessionPurchaseShippingItemSerializer.get_itemCostc                 C   r   r   )getSKUr   r   r   r   get_sku   r   z-SessionPurchaseShippingItemSerializer.get_skuc                 C   s  t jjt|jjd}|d ur| j|j|j d  | _t	jj|j
jjd}|d ur3| j|j |j | _|j
jjd urTtjjt|j
jjjd}|d urT| j|j d | _|j| j | j }|j
jjd urtjjt|j
jjjd}|d ur|jdkr||j }|d|jd   }|| | _n||j | _t| jd d | _t| jd d | _t| jd d | _|| j }t|| _| j| j|j d  | _t| j| _d S )Nr5   d   Tr6   )r   r9   r   rH   r   r   r3   r@   priceInPercentr   r1   rx   handlingFeespackingFeesr/   r   TaxesrJ   r4   r   r]   isPercentage
fixedPricer!   mathceilr2   r   displayedPrice)r   rM   r   rz   taxesObject
finalPricepaymentMethodObjectpreTotalr   r   r   calculateItemPrice   s4   


z8SessionPurchaseShippingItemSerializer.calculateItemPricec                    sj   t  |}d| _d| _d| _d| _d| _| | | j|d< | j|d< | j|d< | j|d< | j|d< |S )Nr   r3   r4   r!   r2   r   )rR   rS   r3   r4   r!   r2   r   r   rT   rV   r   r   rS   $  s   





z7SessionPurchaseShippingItemSerializer.to_representation)r&   r'   r(   r   rv   r   r   r3   r4   r!   r2   r   r,   r   r   r   rS   rw   r   r   rV   r   r<      s    'r<   c                       sV   e Zd Ze Ze ZdZdZdZ	G dd dZ
dd Zdd Z fdd	Z  ZS )
SessionRechargeSerializerr   c                   @   r   )zSessionRechargeSerializer.Meta)r   subTotalr3   r   r   r   descriptionr   r   r   r   r4   r!   N)r&   r'   r(   SessionRecharger*   r+   r   r   r   r   r,   ;  r-   r,   c                 C   r   r   )getTaxesr   r   r   r   	get_taxesM  r   z#SessionRechargeSerializer.get_taxesc                 C   r   r   )getPaymentMethodr   r   r   r   r_   P  r   z+SessionRechargeSerializer.get_paymentMethodc                    s  t  |}d| _d| _d| _|jdkr|j|j | _n|j| _|jd urFd}|jdkr0|j}n| j}| j||jj d  | _| j| j | _|j	d urx|j	j
dkri| j|j	j }|d|j	jd   }|| j | _n| j|j	j | _| j| j | _| j|d< | j|d< | j|d< |S )Nr   r   Tr6   rD   transactionFeesrK   )rR   rS   rD   r   rK   r3   r   r   rJ   r   r   r   )r   rM   rU   currentValuer   rV   r   r   rS   S  s2   






z+SessionRechargeSerializer.to_representation)r&   r'   r(   r   rv   r4   r!   rD   r   rK   r,   r   r_   rS   rw   r   r   rV   r   r   3  s    r   )rest_frameworkr   django.db.modelsZsnow_flake_payment.modelssnow_flake.serializerr   r   r   ModelSerializerr   rt   r   r<   r   r   r   r   r   <module>   s    		z0X