o
    Q?hU                     @   sf  d dl m Z  d dlZd dl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 d	l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dddZi ddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5i d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDddEddFddGddHddIddJd!dKd#dLd%dMd'i dNd)dOd+dPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmi dndodpdqdrdsdtd-dud/dvd1dwd3dxd5dyd7dzd9d{d;d|d=d}d?d~dAddCddddddddddddddd
Z de!de!de"dB fddZ#de!de!de!de$e	e
f fddZ%de"de!fddZ&dde"fddZ'defddZ(dede"fddZ)dede"fddZ*de!dedB fddZ+dede"fddZ,dede$e!e"B e-f fddZ.dS )    )datetimeN)
ArrayUniondb)Address)BlankProductBlankVariant)Image)Order)	OrderItem)printifyTime)Location)PrintifyParams)PropertyVariantVariantMapping)User)PrintifyError1267)frontbackright_sleeveleft_sleevez300-WHI-SMAz3001-White-Sz300-WHI-MEDz3001-White-Mz300-WHI-LARz3001-White-Lz300-WHI-XLAz3001-White-XLz300-WHI-XXLz3001-White-2XLz300-WHI-XXXz3001-White-3XLz300-BLA-SMAz3001-Black-Sz300-BLA-MEDz3001-Black-Mz300-BLA-LARz3001-Black-Lz300-BLA-XLAz3001-Black-XLz300-BLA-XXLz3001-Black-2XLz300-BLA-XXXz3001-Black-3XLz500-BLA-SMAz5000-Black-Sz500-BLA-MEDz5000-Black-Mz500-BLA-LARz5000-Black-Lz500-BLA-XLAz5000-Black-XLz500-BLA-XXLz5000-Black-2XLz500-BLA-XXXz5000-Black-3XLz500-WHI-SMAz5000-White-Sz500-WHI-MEDz5000-White-Mz500-WHI-LARz5000-White-Lz500-WHI-XLAz5000-White-XLz500-WHI-XXLz5000-White-2XLz500-WHI-XXXz5000-White-3XLzBLC-3001-WHITE-SzBLC-3001-WHITE-MzBLC-3001-WHITE-LzBLC-3001-WHITE-XLzBLC-3001-WHITE-2XLzBLC-3001-WHITE-3XLzBLC-3001-BLACK-SzBLC-3001-BLACK-MzBLC-3001-BLACK-LzBLC-3001-BLACK-XLzBLC-3001-BLACK-2XLzBLC-3001-BLACK-3XLzBLC-3001-ATHEATHER-Sz3001CVC-Athletic Heather-SzBLC-3001-ATHEATHER-Mz3001CVC-Athletic Heather-MzBLC-3001-ATHEATHER-Lz3001CVC-Athletic Heather-LzBLC-3001-ATHEATHER-XLz3001CVC-Athletic Heather-XLzBLC-3001-ATHEATHER-2XLz3001CVC-Athletic Heather-2XLzBLC-3001-ATHEATHER-3XLz3001CVC-Athletic Heather-3XLzBLC-3001-NAVY-Sz3001-Navy-SzBLC-3001-NAVY-Mz3001-Navy-MzBLC-3001-NAVY-Lz3001-Navy-LzBLC-3001-NAVY-XLz3001-Navy-XLzBLC-3001-NAVY-2XLz3001-Navy-2XLzBLC-3001-NAVY-3XLz3001-Navy-3XLzBLC-3001-DAHEATHERGREY-Sz3001CVC-Dark Grey Heather-SzBLC-3001-DAHEATHERGREY-Mz3001CVC-Dark Grey Heather-MzBLC-3001-DAHEATHERGREY-Lz3001CVC-Dark Grey Heather-LzBLC-3001-DAHEATHERGREY-XLz3001CVC-Dark Grey Heather-XLzBLC-3001-DAHEATHERGREY-2XLz3001CVC-Dark Grey Heather-2XLzBLC-3001-DAHEATHERGREY-3XLz3001CVC-Dark Grey Heather-3XLzGLD-5000-BLACK-SzGLD-5000-BLACK-MzGLD-5000-BLACK-LzGLD-5000-BLACK-XLzGLD-5000-BLACK-2XLzGLD-5000-BLACK-3XLzGLD-5000-WHITE-SzGLD-5000-WHITE-MzGLD-5000-WHITE-LzGLD-5000-WHITE-XLzGLD-5000-WHITE-2XLzGLD-5000-WHITE-3XLzGLD-5000-NAVY-Sz5000-Navy-SzGLD-5000-NAVY-Mz5000-Navy-Mz5000-Navy-Lz5000-Navy-XLz5000-Navy-2XLz5000-Navy-3XLz5000-Sport Grey-Sz5000-Sport Grey-Mz5000-Sport Grey-Lz5000-Sport Grey-XLz5000-Sport Grey-2XLz5000-Sport Grey-3XL)
zGLD-5000-NAVY-LzGLD-5000-NAVY-XLzGLD-5000-NAVY-2XLzGLD-5000-NAVY-3XLzGLD-5000-SPGREY-SzGLD-5000-SPGREY-MzGLD-5000-SPGREY-LzGLD-5000-SPGREY-XLzGLD-5000-SPGREY-2XLzGLD-5000-SPGREY-3XLenterpriseId
locationIdreturnc                 C   s"   t d|  d|  }| S )Nzenterprises/z/locations/)r   documentgetto_dict)r   r   ref r"   Q/var/www/html/riverr-enterprise-integrations-main/V2/functions/Printify/Orders.pygetLocationl   s   r$   blankIdcolorsizec              
      s  t ddd| dddddd }t|dkr|d }d	d
 |jddd|| | | g D }dd
 |jddd|| | | g D   fdd
|D }t|dkr|jd	|d  }t
| t| fS dS )NblankProductsblankProductId==publicT
supplierIdSSr   c                 S      g | ]}|j qS r"   id.0docr"   r"   r#   
<listcomp>u       z*getBlankProductFromSku.<locals>.<listcomp>blankVariantsr&   inc                 S   r.   r"   r/   r1   r"   r"   r#   r4   x   r5   r'   c                    s   g | ]}| v r|qS r"   r"   )r2   r0   
sizesQueryr"   r#   r4   {   s    )NN)r   
collectionwherer   len	referencelowerupper
capitalizer   r   	from_dictr    r   )r%   r&   r'   
blankQueryblankcolorsQueryvariantQuery
variantDocr"   r8   r#   getBlankProductFromSkuq   s$   ,rG   printifyOrderc                 C   s&   t d| d }||  |jS )NPrintifyOrders/r0   )r   r   r   setr0   )rH   r!   r"   r"   r#   savePrintifyOrder   s   
rK   
address_toaddressc                 C   s   | sdS |  d|  d}}|  d}|  d|  d|  d}}}|  d}| d	|| d
|| d|| d|| d|| d|| d|i D ]\}	}
|
sb|	dv r\qQd|	f  S qQdS )N)FrM   
first_name	last_nameaddress1cityregionzipcountryz	.address1z.first_namez
.last_namez.cityz.statez.zipz.country)zaddress_from.first_namezaddress_from.last_nameF)TN)r   items)rM   typerN   rO   rP   rQ   statezipCoderT   namefieldr"   r"   r#   checkAddress   s(   
"







	


r[   paramsc           !         s  | j | j}|d}d}| jr|sd}tj| j}n| j}|r(|d= | j}tj|r3t	|j	|sGt
ddd| jd dd	gd
td|d  }|rk|rkttdd|d dd	gddfS |jr|stdtdd|d dd	gddfS |rtddd|dddd }t|dkrt|d  }|jrt
dddd|jrt
ddddi | |}|d}ttt  }	|d }
t|
d }|\}}|s|s| jsdnd d d!d	gdd"fS |d#}t|d#}|\}}|s|s| jsdnd d#d$d	gdd"fS tdi d%|d%d&|d&d'|d'd(|d(d)|d(d*|d+rV|d,rV|d+ d-|d, n|d.d/|d/d0|d0d.|d.d1|d1d2|d3d4jd5jd6td7td8d9}| }|d:}|st|s| jsdnd td:d;d	gdd"fS |d<d=vs|d>d?vrt|s| jsdnd d:d;d	gdd"fS |d@g s|sdnd d@dAd	gd|sdfS d"fS |dBg }|dCg }tdi d4jd5jd6tjdDd7tjdDdEd9dFdGdHd9dItd|dJd9dKddLd|j dddMt|
d%|
d&|
d'|
d(|
d(|
d+ d-|
d, |
d/|
d0|
d.|
d1|
d3dNdOt||||dP| tt j!dQdRdS D dTgdUdVddWdXdYddZ|rd[|j" nd\d]t|dkrt#d^dS |D ng }g }D ]T  fd_dS d`g $ D }t% dadb}|s dadb}|rdc|vrt
|sdnd |sdnd"td@dd| ded	gdf|&dc\}}}t'|||\}}|s;|s;t
|s'dnd |s-dnd"td@dd| ded	gdft(|j|j|tjdDtjdDjjd9|dgdS |D |j|dh}t)di dddiddjd9dkd9dld dEd9d6tjdDd7tjdDdHd9d5jd4jdmt* dni do dni dpdqdrdsdS  dni $ D dt dtd* dadu dd|dvddw|dxt+||tjdDtjdDjj|dX|jt,dy|dzt,d{|dzgd9d|d}|d~d|j- | dL|j-d|ddXddddXdJd9dd}|.| q|j|dd} | |d< t/| |s8| js8t| d|j0d|fS t| |rC| jsCdnd d|fS )Nupdating        facility_idzSpecified facility r   z is invalid)rV   messagestatus_codeerrorsrI   r0   otherzOrder with ID 'z' already exists)re     failed)statusre   i0  ordersplatformOrderIdr*   
platformId11r   i  expiredzOrder has already been shipped.)rd   coderb   z Order has already been canceled.rL   zInvalid To Address.i  address_fromzInvalid From Address.rP   address2rQ   rT   countryCoderY   rN   rO    companyemailphonerS   rW   rR   uidr   	createdAt	updatedAtdefaultFshippingz$Invalid carrier & method combinationcarrier)USPSUPSDHLGSOpriority)	FlatPriorityStandardExpressFirstCaliforniaParcelServiceGround	2ndDayAir
NextDayAirrU   zNo items in order.tagspackage_inserts)tz	cancelledcurrencyCodeUSDdraft
grandTotalshippedshippingCostshopIdshippingAddress)rP   rq   rQ   rT   rr   rY   ru   rv   rt   rS   rW   metadatasamplecreatedc                 S   s   g | ]}| d qS r/   )r   r2   itemr"   r"   r#   r4   C  s    z)submitProductionOrder.<locals>.<listcomp>)timeactionaffected_items)fromAddressIdr{   r   r   locationeventstotalDiscount
totalPrice   totalTaxshopNamezPrintify - Printifylabelsc                 S   s    g | ]}t d |dddqS )Nurlrb   )r0   r   rV   )dictr   )r2   mr"   r"   r#   r4   J  s     c                    sH   g | ] \}}t t |t|ttjj|d qS ))r0   rY   	placementrx   ry   r   rw   r   )	r   strindexPRINTIFY_PLACEMENTr   r   nowr   rw   )r2   r   r   r   rU   timezoneuserr"   r#   r4   N  s    
print_filessku -zItem with SKU z cannot be fulfilled.)ri   rd   re   c                 S   r.   r"   )r   )r2   imager"   r"   r#   r4   }  r5   )r)   blankVariantIdr0   rx   ry   r   rw   ignoredimages
placements	productIdr   discountbatchedr   batchIdr   preview_filesr   r   )r   r   c                 S   s,   g | ]\}}|d v rt ||t|dqS ))r   r   )r   rY   r   )r   r   r   )r2   rY   r   r"   r"   r#   r4     s    quantityplatformOrderItemIdpricepurchaseOrderDatavariantColor)rY   valueSize)r0   r   rx   ry   r   rw   rY   r   r   
propertiesdeletedplatformProductIdr   	variantIdsubtotaltaxtotalprintOnDemandT)
orderItemsrewritereference_idsuccess)r   ri   r0   )r   ri   r"   )1currentUserargsr   r0   r   r   r   pytzutcr   r   r   r   r   existsr:   r;   r<   r	   rA   r    r   r   r   intr   r   	timestampr[   r   rw   saver   zonerY   r   rU   PRINTIFY_SKUSsplitrG   r   r
   r   r   r   r   appendrK   rk   )!r\   orderr]   rd   r   queryrj   riverrOrderprintifyOrderIdorderNumberrL   toAddressValidvalidrZ   rp   fromAddressValidfromAddressr   r{   r   r   convertedOrderconvertedOrderItemsprintImagesr   r%   r&   r'   blankProductblankVariantr   	orderItemorderIdr"   r   r#   submitProductionOrder   s  

	(



	
	




:


	





 			

'()*"+-







	
(





./01234568r   c                 C   s0   t d| j  }|jr| S tddd)NrI   r`   z
Not found.)rd   ri   )r   r   r0   r   r   r    r   )r\   r   r"   r"   r#   getPrintifyOrder  s   r   c                 C   s   t ddd| jddd }t|dkr=t|d  }t	|j
dr.|j
dn|jr3dnd	|j
d
g dS tdt	| jddgd)Nrj   rk   r*   rl   rm   r   ri   r   r   r   )ri   r   r`   Order not found.r0   rb   rc   )r   r:   r;   r0   r   r<   r	   rA   r    r   r   r   r   )r\   docsr   r"   r"   r#   getPrintifyOrderEvents  s   $$r   r   c                 C   sD   t dddddd|  }t|dkr t|d  S d S )Nrj   rl   r*   rm   rk   r   )r   r:   r;   r   r<   r	   rA   r    )r   r   r"   r"   r#   findPrintifyOrder  s   "r   c                 C   s$   d| j d< | j| j d< d | _t| S )NTr]   r0   )r   r0   r   )r\   r"   r"   r#   updatePrintifyOrder  s   
r   c           	      C   s@  | j }t|}| jdg }|stdt|ddgd|jr)tdt|ddgd|jr7tdt|ddgd| }g }|D ]+}|jrPtdt|j	d	dgd|j
r_tdt|j	d
dgd|j	|v rj||j  q?|rdd |D }|D ]}||vrtdt|ddgdqv|j|d tdddfS tdt|ddgd)NrU   r`   r   r   rc   rg   z4The order is already shipped and cannot be canceled.z5The order is already canceled and cannot be canceled.z?Order line item is already cancelled and could not be canceled.z?Order line item is already fulfilled and could not be canceled.c                 S   r.   r"   )r   r   r"   r"   r#   r4     r5   z'cancelPrintifyOrder.<locals>.<listcomp>zOrder line item not found.)orderItemIdsr   )ri      )r0   r   r   r   r   r   r   r   getOrderItemsr   r   r   cancel)	r\   r   r   rU   r   cancelledItemsr   platformOrderItemIdsitemIdr"   r"   r#   cancelPrintifyOrder  sp   


r  )rL   )/r   pydashr   configs.firebaser   r   V2.functions.Address.mainr   V2.functions.BlankProducts.mainr   r   V2.functions.Images.mainr   V2.functions.Orders.mainr	   V2.functions.Orders.OrderItemr
   V2.functions.Printify.Authr   V2.functions.Printify.Paramsr   r   ParamsV2.functions.Products.Variantsr   r   r   V2.functions.Users.mainr   V2.middlewares.authr   r   r   r   r   r$   tuplerG   rK   r[   r   r   r   r   r   r   r  r"   r"   r"   r#   <module>   sh   	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEQ"  ."