o
    Q?hG                     @   s   d dl m Z  d dlZd dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZ d dlmZ i fddZdd Zdd Zd ddZdd Zdd Z d!ddZ!defddZ"dS )"    )datetimeN)ordersLastUpdatedsaveOrdersLastUpdated)findBlankVariantByGtin)convertOrderconvertOrderItemconvertShippingAddressdeleteOrder	saveOrder)convertProperty)	API_Error)getShopByIdgetShops
updateShop)worker)Auth)Shopc                 C   s$   dd t dddD }tt| d S )Nc                 S   s   g | ]	}| d s|qS disabledget).0shop r   Q/var/www/html/riverr-enterprise-integrations-main/functions/WooCommerce/Orders.py
<listcomp>   s    z#updateAllOrders.<locals>.<listcomp>3T)
platformIdcredentials)r   r   updateShopOrders)paramsshopsr   r   r   updateAllOrders   s   r"   c           %      C   st  | r|  d}g }|  d}|  d}|  d}|  d}|s$|s$d S |  d}t|}| dd}	t| d	d
 }
|  d}t|||}g }zt|t|
 d}W n- t	y } z!|	d7 }	|	dkrmt
|dd t|dd|	d t| W Y d }~d S d }~ww d}|D ]}| d}|dvrt| d |d7 }q| di }| dg }tdd |D }t| d}t| d}t| d}|| | | }tdUi d|d|d|d|dt| d d| d | d | d!| d"| d#| d$| d%d&d't| d(d)t| d*d+|d,| dd-| dd.kd/| dd/kd0| d1d2|d3|d4|d5|d6| d7d8|  d9}g }|D ]A}t| d:}td;d |D d }td<d |D d }td=d |D d }|r*t|| d>\} }!}"}#|r|#d? t| d>d@dAdAdB |r|#d? t| d>dCdDdDdB tdUi d|d|d|d,| ddE| ddF| dGdH| dHdI| dJd't| d(d)t| d*d|d9| d9d-| dd.kd/| dd/kdK| dKdL| dLdM| ddN|dO|"dP|#}$nltdUi d|d|d|d,| ddE| ddF| dGdH| dHdI| dJd't| d(d)t| d*d|d9| d9d-| dd.kd/| dd/kdK| dKdL| dLdM| ddN|}$||$ qZ|t|| qt|t|dQ dRt| dS| S dTS )VNiduidenterpriseIdconsumerKeyconsumerSecreturl	failCountr   	timestampiQ r   )modified_after      Tr   )shopIdcountfailedr)   status)
processing	completedshipping
line_itemsc                 s   s    | ]
}t |d V  qdS )priceN)floatr   r   ir   r   r   	<genexpr>=   s    z#updateShopOrders.<locals>.<genexpr>discount_totalshipping_total	total_taxr.   shippingAddress
first_name 	last_name	address_1	address_2citystatepostcodecountrynameaddress1address2rD   rE   ziprG   	createdAtdate_created	updatedAtdate_modified
grandTotalplatformOrderIdshippedr3   	cancelledcurrencyCodecurrencyshippingCosttotalDiscount
totalPricetotalTaxorderNumbernumbershopNamerI   	meta_datac                 s   "    | ]}| d dkr|V  qdS rI   print_images_frontNr   r   propr   r   r   r:   b        c                 s   r_   rI   print_images_backNr   rb   r   r   r   r:   c   rd   c                 s   r_   rI   blank_variantNr   rb   r   r   r   r:   d   rd   valueimages1Front_Print_Imager(   	placementrI   r#   2Back_Print_ImageplatformOrderItemIdplatformProductId
product_idquantity	variantIdvariation_idr6   totaltaxvariantPropertiesvariantvariantMapping)r.   r/   zUpdated orders => z, Deleted orders => z
No updatesr   )r   r   intr   wooAPI	getOrdersr   fromtimestamp	isoformat	Exceptionr   r   printr	   sumr7   r   r   fromisoformatformatPropsnextr   appenddictr   r
   len)%r   r.   updatesr$   r%   r&   r'   r(   
lastUpdater)   r*   r   wcapiordersedeleted_orders_countorderorder_statusr>   
orderItemsrY   rX   totalShippingrZ   rQ   convertedOrderconvertOrderItemsitempropsra   rf   rh   blankProduct_rz   r{   convertedOrderItemr   r   r   r      s|  




















	









	




r   c              	   C   s   g }| D ]M}t |ddr>|ddkr=z!|dd }|d}| D ]\}}|t|||d q(W n   Y q|t|d|d|dd q|S )	Nkeyr   _tmdatari   r   tmcp_post_fields)rI   ri   r#   r#   )strr   
startswithitemsr   r   )r   	formattedrc   datafieldsr   ri   r   r   r   r      s4   
r   d   r,   c              
   C   s   zP| j dt|||dd}|jdkrLt| }d}ddg}t| dkrI| j dt|||d	|d
d}||  |d7 }t| dks&|W S t|j	 t
yb } ztt|d }~ww )Nr   )per_pagepager+   )r       r,   r2   r3   r   ,)r   r   r+   r1   )r   r   status_codelistjsonr   joinextendr   textr   r   )r   limitr+   r   resr   order_statusesr   r   r   r   r~      s"   
 
r~   c              
   C   s^   z|  d| }|jdkr| W S t|j ty. } zt| W Y d }~d S d }~ww )Norders/r   )r   r   r   r   r   r   r   )r   orderIdr   r   r   r   r   getOrder   s   
r   c                 C   s   t |d}| d| d|S )N)noter   z/notes)r   post)r   r   r   r   r   r   r   addOrderNote   s   r   Fc           !      C   s  | r`|  d}|  d}|  d}|  d}|  d}|  d}|  d}	t|||}
t|
|}|s6dS | d	i }| d
g }tdd |D }t| d}t| d}t| d}|| | | }tdMi d|d|	d|d|dt| d d| d | d| d| d| d| d| dddt	| ddt	| dd |d!| dd"| d#d$kd%| d#d%kd&| d'd(|d)|d*|d+|d,|  d-d.| d/}| d
g }g }|D ]b}t
| d0}td1d |D d }td2d |D d }td3d |D d }td4d |D d }|rt|| d5\}}}}|r_|rL|d6 t| d5d7d8d8d9 |r_|d6 t| d5d:d;d;d9 tt|d d<}tdMi d|d|d|	d!| dd=| dd>| d?d@| d@dA| dBdt	| ddt	| dd|d-| d-d"| d#d$kd%| d#d%kdC| dCdD| dDdE| ddF|dG|dH|dI|dJt|} nqtdMi d|d|d|	d!| dd=| dd>| d?d@| d@dA| dBdt	| ddt	| dd|d-| d-d"| d#d$kd%| d#d%kdC| dCdD| dDdE| ddF|dJt|} ||  qt||dK|S dLS )NNr#   r$   r%   r&   r'   r(   r   zOrder not foundr4   r5   c                 s   s,    | ]}t |d t|d V  qdS )r6   rt   N)r7   r   r|   r8   r   r   r   r:      s   * z$updateSingleOrder.<locals>.<genexpr>r;   r<   r=   r.   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rM   rN   rO   rP   rQ   rR   rS   r1   r3   rT   rU   rV   rW   rX   rY   rZ   r]   rI   r[   r\   r^   c                 s   r_   r`   r   rb   r   r   r   r:     rd   c                 s   r_   re   r   rb   r   r   r   r:     rd   c                 s   r_   rg   r   rb   r   r   r   r:     rd   c                 s   r_   )rI   do_not_printNr   rb   r   r   r   r:     rd   ri   rj   rk   rl   rm   ro   rp   )ignoreddecorationTyperq   rr   rs   rt   ru   rv   r6   rw   rx   ry   rz   r{   productMappingr   TzNo shopr   )r   r   r}   r   r   r7   r   r   r   r   r   r   r   r   r   boolr   r
   )!r   r   readdr.   r$   r%   r&   r'   r(   r   r   r   r>   r   rY   rX   r   rZ   rQ   r   r   r   r   ra   rf   rh   r   r   r   rz   r{   r   r   r   r   r   updateSingleOrder   sf  



















	









	




r   r   c                 C   s   | j }| j}t| j||}|d| ddi t| jdd}d| d| d}|d| |d	}	t	||| d
|  t
j||	ddi||fd}
|
jdv rW|
 S dS )Nr   r1   r3   zhttps:///z(/wp-json/wc-shipment-tracking/v3/orders/z/shipment-trackingszhttps://aftership.com/)custom_tracking_providercustom_tracking_linktracking_numberz Tracking No: zContent-Typezapplication/json)r   headersauth)r      F)r&   r'   r   r}   r(   putr   removeprefixremovesuffixr   requestsr   r   r   )r   rR   carrierNametrackingCoder&   r'   r   shopurlr(   r   r   r   r   r   submitWooShipment_  s.   
r   )r   Nr,   )F)#r   r   functions.LastUpdatedr   r    functions.ManualOrders.CsvOrdersr   functions.Ordersr   r   r   r	   r
   functions.Productsr   functions.Responser   functions.Shopsr   r   r   !functions.Suppliers.BlankProductsr   functions.WooCommercer   V2.functions.Shops.mainr   r"   r   r   r~   r   r   r   r   r   r   r   r   <module>   s(     


}