o
    Q?h=                  	   @   sp  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 d dl	m
Z
 d dlmZ d dlmZmZ d d	lmZ d d
lmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d dl m!Z! d dl"m#Z# de#fddZ$defddZ%dd Z&de#fddZ'dd Z(dd Z)d/d e*d!e+d"e,d#e*fd$d%Z-de#fd&d'Z.ded(e+d)e+d*e+fd+d,Z/ded(e+fd-d.Z0dS )0    )datetimeN)SERVER_TIMESTAMPdb)submitShipmentToPlatform)Address)Application)
LastUpdate)Order	OrderItem)Product)ImagePropertyVariant)getDecorationTypesgetPlacementOptions)Shipment)ShopgetShopsByPlatformId)User)	API_Error)Paramsparamsc                 C   sR   t ddd}|D ]}zt| W q ty& } z
t| W Y d }~qd }~ww dS )N12T)
platformIdcredentials )r   updateShopOrders	Exceptionprint)r   shopsshope r"   R/var/www/html/riverr-enterprise-integrations-main/V2/functions/Orderdesk/Orders.pyupdateAllOrders   s   " r$   r    c                 C   s  | j }g }t|}t| j| j|jd}|jdd d |D ]}|d}|di }|d}|d}	|rA|	r@t|  S qt	| j| j|d	}
g }|
D ]}|d}t
| j| j|d
||ddt t |dg t|dddgd}t||d|dddddd t|dtkr|d ni D d}|j|gd}tdNi d| jd| jd| jd|d|dd |d!|d!d|dd"d#d$d#d%|dd&|dd'|d|dd(|d)t|d*t  d+t|d*t  d,|dt|dddd-t|dddg}|| qN|d.}tdNi d| jd| jd(|d| jd/d0d1d0d2t|d3 d4|d5 |d6|d7|d8|d9|d:|d;|d;d<d |d)t|d=d>d+t|d?d>d@|dAdB|ddC|dDdE|dFdG|dHdI|dJdK| j}|t||dLdLdM q|S )ON)storeIdapiKeylastUpdatedc                 S   s
   |  dS )Ndate_updatedget)xr"   r"   r#   <lambda>)   s   
 z"updateShopOrders.<locals>.<lambda>)keyidorder_metadatariverrOrderId
is_shipped)r%   r&   orderIdr   namer   pricemetadataimage)url)uidenterpriseIdplatformProductIdr   shopIdr3   description	createdAt	updatedAtr4   tagsimagescode/-c                 S   s   g | ]
\}}t ||d qS ))r3   value)r   ).0r-   rE   r"   r"   r#   
<listcomp>Q   s    z$updateShopOrders.<locals>.<listcomp>variation_list)r.   r4   sku
properties)variantsr8   r9   r   r:   platformOrderItemIdplatformOrderIdquantitydiscountr   taxsubtotaltotal	variantIdr;   r=   created_timestampr>   	productIdr@   shipping	cancelledFdraftshippingAddress
first_name 	last_nameaddress1address2citystatepostal_codecountry)r3   r]   r^   r_   r`   ziprb   countryCode
date_added%Y-%m-%d %H:%M:%Sr(   
grandTotalorder_totalshippedshippingCostshipping_totaltotalDiscountdiscount_totaltotalTax	tax_total
totalPriceproduct_totalshopNameT)r.   r"   )r.   r   r*   	getOrdersplatformShopIdr&   	timestampsortshipNotificationgetOrderItemsr   r8   r9   r   nowr   r   replacetypedictitemssaver
   r   fromtimestampappendr	   r   strptimer3   )r    r;   updates
lastUpdateordersorderrM   r5   r0   ri   
orderItemsconvertedOrderItemsitemr:   productvariantrU   	orderItemrY   convertedOrderr"   r"   r#   r       s  





"


	










r   c           
      C   s|   d}d}d}t |d}t  d}| |dd}tj|t||||d|d}	|	jd	kr5|	 d
S t	|	j
|	j g S )N&https://app.orderdesk.me/api/v2/ordersi  r(   rf   application/jsonzORDERDESK-STORE-IDzORDERDESK-API-KEYzContent-Type)limitorder_bymodified_start_datemodified_end_date)r   headers   r   )r   r   strftimery   requestsr*   r|   status_codejsonr   text)
r%   r&   r'   r7   r   r   r   r   r   resr"   r"   r#   rs      s(   rs   c           
      C   s   | j d}tdd| jj   }td| jj d|  }g }|jr_| dg }| d}|d u r?d}|D ]}td	| }t	|||| d
}	|
|	 qA|S d S )NbatchIdappsCredentialsr   zenterprises/z	/batches/orderIdspaymentStatuspendingorderInvoices)r   orderInvoice)argsr*   r   
collectiondocumentcurrentUserr9   to_dictexistscreateOrderr   )
r   r   appbatch
sentOrdersr   r   r2   r   	sentOrderr"   r"   r#   sendBatchToOrderdesk   s    r   c                 C   sH   d| d}t j|| |ddd}|jdkr| dS t|j|j)N'https://app.orderdesk.me/api/v2/orders/z/order-itemsr   r   r   r   order_itemsr   r*   r   r   r   r   )r%   r&   r2   r7   r   r"   r"   r#   rx      s   rx   c                 C   sF   d| }t j|| |ddd}|jdkr| dS t|j|j)Nz0https://app.orderdesk.me/api/v2/inventory-items/r   r   r   r   inventory_itemr   )r%   r&   inventoryIdr7   r   r"   r"   r#   getInventoryItem   s   
r   r   r   r2   r   r   c                    s  t |}t|j|_|jjdd t|jjddkr(|jjdd nd|jjr1|jjn|jj|jj	|jj
|jj|jj|jj|jj|jjd
}t  t |j}t|}|j d|jrd|jn|j } fdd| D }	d	}
tj|
| d
| dddt|j|||	|d| |j||r|dn|j|jddd}|jdvrt|j |j|j!r|j"t|# dddd |# S d S )Nr[   r      r   )
rZ   r\   companyr]   r^   r_   r`   ra   rb   phonerC   c                    s   g | ]X}|j s|j|j|j|jd tdd |jdD i dtdd |jdD i dd |j|jd dfdd	|jd
D fdd	|j	D dqS )rI   c                 s   "    | ]}| d dv r|V  qdS )r3   )SizecolorNr)   rF   pr"   r"   r#   	<genexpr>        z)createOrder.<locals>.<listcomp>.<genexpr>rJ   rE   c                 s   r   )r3   )Colorr   Nr)   r   r"   r"   r#   r      r   )r   r   )decoration_type	print_skuc              
      L   i | ]"}d   | d d d  | d d  | dqS )
print_url_	placement_
print_sider7   r*   lowerrF   r6   placementOptionsr"   r#   
<dictcomp>      L z*createOrder.<locals>.<listcomp>.<dictcomp>r@   c              
      r   )mockup_r   r   r   r7   r   r   r   r"   r#   r      r   )r3   r4   rN   rA   rH   r5   )
ignoredr3   r4   rN   r   r*   nextdecorationTypepurchaseOrderDatar@   )rF   r   decorationTypesr   r"   r#   rG      s&    
  

zcreateOrder.<locals>.<listcomp>r   r%   r&   r   r   zrhttps://riverr-enterprise-integrations-dot-riverr-enterprise-user.uc.r.appspot.com/v2/orderdesk/ship-notification/rj   )r0   ship_notify_urlstorepayment_statusshipping_cost
user_email)source_name	source_idrV   r   r/   r   r      r   r   r.   )orderDeskId)r5   )$r	   r*   r   	from_dictrY   r3   splitlenr   r]   r^   r_   r`   rc   rb   r   r   r   r8   r   numberorderNumberrM   rx   r   postr|   rr   rj   emailr   r   r   okupdater   )r   r2   r   r   r   rV   r8   usersourceIdr   r7   r   r"   r   r#   r      sd   
*
r   c           
      C   s"  | j }tj|d}|jd}tdd|j   }d| d}t	j||d|dd	d
d}|j
r| }|dg }|r|d }	t|j|j|dd|	d|	d|	d|	d|	d|	d|	d|j|jd d}	|	  ||	 t|j|j|j|	j|	j|	jd |	S d S )N)r2   r   r   r   r   
/shipmentsr%   r&   r   r   r   	shipmentsr   0Manualcarrier_codeshipment_methodcosttracking_numbertracking_urllabel_imager.   )r8   r9   r2   r   platformNamecarrierNamecarrierServicer   trackingCodetrackingUrlr6   platformShipmentIduserUidrM   pdf)r   r;   rM   r   r   r   )r.   r	   r*   r5   r   r   r   r9   r   r   r   r   r   r8   rM   r~   markAsShippedr   r   r;   r   r   r   )
r   r2   r   r   r   r7   r   datar   shipmentr"   r"   r#   rw     sZ   
rw   rM   r   r   c                 C   sT   d| d}| j }| j}tj|||ddt||dd}|jdvr(t|j|jdS )	Nr   r   r   r   )r   r   r   r   T)rt   r&   r   r   r|   r   r   r   )r    rM   r   r   r7   r%   r&   r   r"   r"   r#   submitShipmentI  s   	r  c                 C   sN   d| d}| j }| j}tj|||ddd}|jdvr#t|j|j| S )Nr   r   r   r   r   r   )rt   r&   r   r*   r   r   r   r   )r    rM   r7   r%   r&   r   r"   r"   r#   getShipmentY  s   
r  )r   N)1r   r   configs.firebaser   r   functions.Shipments.Mainr   V2.functions.Address.mainr   V2.functions.Applications.mainr   V2.functions.LastUpdater   V2.functions.Orders.mainr	   r
   V2.functions.Products.mainr   V2.functions.Products.Variantsr   r   r   V2.functions.Settings.mainr   r   V2.functions.Shipments.mainr   V2.functions.Shops.mainr   r   V2.functions.Users.mainr   V2.middlewares.authr   	V2.Paramsr   r$   r   rs   r   rx   r   r|   strboolr   rw   r  r  r"   r"   r"   r#   <module>   s4   qF0