o
    Q?hI?                     @   s*  d dl m Z  d dlmZmZmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ ddd	d d d d d
i f	ddZd*ddZd
d
i ddi d d d d d
i i g dg fde de dededededefddZd+ddZdd Zdd Zdd Zd efd!d"Zd,d efd#d$Z	%	&	'd-d(d)Zd
S ).    )datetime)SERVER_TIMESTAMP
ArrayUniondb)convertAmount)findProductgetColorImagesgetProductsMappinggetProductVariant)	API_Error)getUserShops)ShopFUSDNc                 K   sJ  g }|
rdg}|	r|
sdg}t di d| d|d|d|d|dt|d	|d
|dtt|ddt||dt|	dt|
dt|dtt|ddt||dtt|ddt||dtt|ddt||d|r|tt|dntt|ddt||d|d|d|rt|ng |}|S |}|S )N	cancelledshippeduid
platformIdshopIdenterpriseIdshippingAddressplatformOrderId	createdAt	updatedAt
grandTotal   grandTotalObjcurrencyCodeshippingCostshippingCostObjtotalDiscounttotalDiscountObjtotalTaxtotalTaxObj
totalPricetotalPriceObjorderNumbermetadata
statusTags )dictstrroundfloatr   boolr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r#   r%   r&   kwargsr'   convertedOrderr(   r(   E/var/www/html/riverr-enterprise-integrations-main/functions/Orders.pyconvertOrder   sv   
	





r1   c                 C   sN   t | |	|||||||||  d| d| d| d| d| |
r#|
dS |dS )Nz 
z , z 
 z, )nameemailphoneaddress1address2citystatezipcountrycompanyformattedAddresscountryCode)r)   )r2   r5   r7   r8   r9   r:   r;   r4   r6   r3   r=   r(   r(   r0   convertShippingAddressA   s    $r>   r   r   r2   discounttotaltaxsubtotalc           %   	   K   sJ  t |}t |}t|}|rt|nd}t |}t |}|s*|dvr*t| |||d}|d}|s7|| | }|s>|d}|sEt||}|sP|sPt||\}}|dg }|sZi }|| |re||d< g }|r|dr|drt||d|dd	}|r|}|s|d
g }|s|r|d ni }d} d }!|r|d}!|!s|r|d}!|!dv r|d
}"|"D ]}#|#dsd}  nqt	d2i d| d|d|d|d|d|ddd|d|d|dt
t|ddt|ddt
t|ddt|ddt
t|dd t|dd!t
t|dd"t|dd#|r%t
t|dnt
|| dd$|r5t|dnt|| dd%|d&t|d'|d(|rM|ni d)|	d*|
d+|d,t|d,dd-t|d.t|d/|rq|nt|d/d0t|d,d o| d1| d
|d|!|}$|$S d1| d
|d|!|}$|$S )3Nr   )5)r   idr2   
propertiesblankProductIdblankVariantId)rF   rG   imagesFdecorationType)37	printFileTr   r   r   r   	productIdpurchaseOrderimageplatformOrderItemIdplatformProductIdpricer   priceObjr   r?   discountObjr@   totalObjrA   taxObjrB   subtotalObjr   quantity	variantIdvariantr   r   purchaseOrderDataprintOnDemandr   r   ignoreddraftprintFilePendingr(   )r*   intr,   r   getr
   r	   extendr   r)   r+   r   r-   )%r   r   r   rQ   r   rP   rX   rR   rY   r   r   r   productr2   rZ   r   r   rO   r?   r@   rA   rB   printingImagesproductMappingvariantMappingvariantPropertiesr]   rH   r.   rM   rE   colorImagesr_   rI   
printFilesi	orderItemr(   r(   r0   convertOrderItemQ   s   

2

	




  !"$'!"$'rl   c              
   C   s  |  d|  d|  d}}}t|||}t }g }	tdd |D r)dg}	|r|s|  d|  d|  d	}
}}|j}| }| d| d}}|sT|rV|S |r[dg}	|r`dg}	t|
|||	d
}||j	| t
ddd|  }|D ]}| d|d< ||j	| q}n*|r4|r4| }| d| d}}|j}|s|r|S || d< g }g }g }d}|D ]?}||d< ||d< | | d }||d< || d || || d |jt
d||| d |d7 }q|| d< || d< t|| d< |r|| d< t|rdg}	|rdg}	|r%dg}	|	| d< |j|j	| | d nt
d| \}}|j}g }g }g }d}|D ]?}||d< ||d< | | d }||d< || d || || d |jt
d||dd |d7 }qKt|rdg}	|j|t||rt|ng |rt|ng t|tdd |D |	ddd |  |S )Nr   r   r   c                 S      g | ]}| d qS )r]   ra   .0rj   r(   r(   r0   
<listcomp>       zsaveOrder.<locals>.<listcomp>r]   r   r   r   )r   r   r   r'   
orderItemsorderId==rZ   rD      indexrP   rM   r^   )mergeitemIds
productIdsmappedItemsr'   ordersTc                 S   rm   )r_   rn   ro   r(   r(   r0   rq     rr   )rD   rz   ry   r^   r_   r'   )ra   getOrderRefr   batchallrD   to_dictr)   update	reference
collectionwhereappendsetdocumentanyaddr   commit)orderrs   rewritesreaddr   r   r   refr~   r'   r   r   r   rt   oldOrder
wasShippedwasCancelledr   rk   anyDraftrz   ry   rj   orderItemId_r(   r(   r0   	saveOrder   s   ""




r   c              
   C   s   z1t | } td| }|  tddd|  }|D ]}|j  qtd|  d W d S  t	yN } ztd|  d|  W Y d }~d S d }~ww )	Nr|   rs   r   ru   zOrder z1 and associated order items deleted successfully.zError deleting order z and associated order items: )
r*   r   r   r   deleter   ra   r   print	Exception)rt   	order_reforder_items
order_itemer(   r(   r0   deleteOrder  s   "r   c                 C   s<   t ddd|dd|dd|  }|r|d S d S )Nr|   r   ru   r   r   r   )r   r   r   ra   )r   r   r   r   r(   r(   r0   r}   '  s   ,r}   c              
      s(  ddl m ddlm ddlm ddlm ddlm  ddlm ddlm ddlm | 	d	d}t
|dd}fdd|D }fd	d|D }fd
d|D }fdd|D }fdd|D }fdd|D } fdd|D }	fdd|D }
t|||||||	|
d}|S )Nr   )updateShopOrderscurrentUserr   T)credentialsc                    (   g | ]}| d dkr t|qS )r   1ra   r   	from_dictrp   shop)updateUserEtsyOrdersr(   r0   rq   @     ( z$updateUserOrders.<locals>.<listcomp>c                    "   g | ]}| d dkr |qS )r   2rn   r   )updateUserShopifyOrdersr(   r0   rq   A     " c                    r   )r   rJ   rn   r   )updateUserWoocommerceOrdersr(   r0   rq   B  r   c                    r   )r   4rn   r   )updateuserSquareOrdersr(   r0   rq   C  r   c                    r   )r   rC   rn   r   )updateUserShipstationOrdersr(   r0   rq   D  r   c                    r   )r   10r   r   )updateUserSquarespaceOrdersr(   r0   rq   E  r   c                    r   )r   8r   r   )updateUserBigcartelOrdersr(   r0   rq   F  r   c                    r   )r   12r   r   )updateUserOrderDeskOrdersr(   r0   rq   G  r   )etsyshopifywoosquareshipstationsquarespace	bigcartel	orderdesk)functions.Shipstation.Ordersr   functions.Shopify.Ordersfunctions.Square.Ordersfunctions.WooCommerce.OrdersV2.functions.Bigcartel.OrdersV2.functions.Etsy.OrdersV2.functions.Orderdesk.OrdersV2.functions.Squarespace.Ordersra   r   r)   )paramsr   shopsr   r   r   r   r   r   r   r   resr(   )r   r   r   r   r   r   r   r   r0   updateUserOrders-  s:   
r   rt   c                 C   s&   t d|  }|jr| S i S )Nr|   )r   r   r   ra   existsr   )rt   r   r(   r(   r0   getOrderT  s   r   c                 C   s   t d|  }|r@t d| }|jr@t ddd| }|D ]}|jtdt	d q'|jtdgdt	d |jrlt ddd|  }|D ]}|jtdt	d qQ|jtdgdt	d d S t
d	d
)Nr|   rs   rt   ru   T)r   	shippedAtr   )r'   r   r   zOrder not found.i  )r   r   r   ra   r   r   r   r   r)   r   r   )rt   routedOrderIdr   	routedRefrs   rk   r(   r(   r0   orderMarkShipped[  s:   


r   printingr   CUSTOMc              	   C   s"   t tt  | |||||dS )N)rD   r   r   urltype	placementr2   )r)   r*   r   now	timestamp)r   r   r   r   r   r2   r(   r(   r0   convertImagesz  s   r   )NNNNN)FF)N)r   r   r   )r   configs.firebaser   r   r   functions.Invoicesr   functions.Productsr   r   r	   r
   functions.Responser   functions.Shopsr   V2.functions.Shops.mainr   r1   r>   r*   r,   rl   r   r   r}   r   r   r   r   r(   r(   r(   r0   <module>   sv    

5


h]'#