o
    µQ?hÇL  ã                   @   sR  d dl Z d dlmZ d dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZ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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, de-fdd„Z.de-de/fdd„Z0de-de/fdd„Z1dd„ Z2dd„ Z3de-fdd„Z4de-fdd„Z5dS ) é    N)Údatetime)ÚSERVER_TIMESTAMPÚ
ArrayUnionÚdb)ÚconvertImageÚconvertProductÚconvertPropertyÚconvertVariantÚgetColorImagesÚgetProductByIdÚgetProductRefÚgetProductsMappingÚgetProductVariantsÚgetProductVariantsMappingÚgetVariantMappingÚsaveProduct)ÚaddToPopupStoreÚsaveProductMappingÚsubmitToShopify)Ú	API_Error)Ú
apiVersion)ÚconnectionInventoryLocationÚcreateFulfillmentServiceÚgetFulfillmentService)ÚgetShopById)ÚgetBlankProductÚgetBlankVariantÚgetBlankVariants)ÚProductÚVariant)ÚProperty)ÚShopÚparamsc                 C   s‚  |   d¡}|  d¡|  d¡}}|   d¡}|   d¡}|   d¡}g }g }g }	g }
g }|  d¡}|D ]Ÿ}z	t|  d¡ƒ}W n tyK } ztdƒ‚d }~ww |  d	¡}|sWtd
ƒ‚d|v r_tdƒ‚||
v rgtdƒ‚|
 |¡ |  d¡}| dd„ |D ƒ¡ t||td|  d¡ƒtd|  d¡ƒg|d}||d< |  d¡}|	 |  d¡¡ t||  d¡|  d¡|  dg ¡||  d¡g |  d|  d¡¡d}| |||f¡ | |¡ q0t	|dd| |t
tt ¡  ¡ ƒƒ|rä|nt|ƒ|  d¡|  d¡tt|  dg ¡d d„ |  d!¡D ƒd"}tt|	ƒ|d#t|ƒ|  d$|  d$d%¡¡|  d|  dd%¡¡|td&}|
|d'< ||d< ||d(< |  d)d¡|d)< t||ƒ}||d< |S )*NÚcurrentUserÚuidÚenterpriseIdÚproductDetailsÚselectedBlankNicknamesÚ
variationsÚpricez:Price should be valid number. Remove any currency symbols.ÚskuzSKU is required.ú/zSKU should not contain '/'.z$SKU must be unique for each variant.Úimagesc                 S   s   g | ]}|  d ¡‘qS ©Úid©Úget©Ú.0Úi© r4   úU/var/www/html/riverr-enterprise-integrations-main/functions/products/ManualProduct.pyÚ
<listcomp>E   s    z!manualProduct.<locals>.<listcomp>ÚColorÚcolorÚSizeÚsize)r.   r)   Ú
propertiesr*   r.   ÚvariantÚblankProductIdÚgtinÚdecorationType)r.   r=   ÚblankVariantIdr,   r*   r>   Ú
placementsr?   Ú0ÚtitleÚdescriptionÚtagsc              	   S   s.   g | ]}t | d ¡| d¡| dd¡d‘qS )Úurlr.   ÚprimaryT)r.   rG   )r   r0   )r2   Úimager4   r4   r5   r6   g   s   . Úavatars)r$   Ú
platformIdÚshopIdr%   ÚplatformProductIdr)   ÚnamerD   Ú	createdAtÚ	updatedAtrE   r,   FÚprintOnDemandT)ÚblankProductIdsr%   ÚignoredÚimageIdsrP   r?   r$   rO   ÚskusÚproductMappingÚ	printType)r0   ÚfloatÚ	Exceptionr   ÚappendÚextendr	   r   Údictr   ÚstrÚintr   ÚnowÚ	timestampÚminr   r   ÚsaveManualProduct)r"   r#   r$   r%   r&   r'   r(   ÚvariantsrS   rQ   ÚdoneSKUsÚpricesr)   Ú	variationÚer*   r,   ÚconvertedVariantÚmappingÚvariantMappingÚproductrU   r.   r4   r4   r5   ÚmanualProduct   s    




€ÿ


ü

ø

ôø

rk   rj   rb   c           	      C   sÊ   |   d¡rt d|   d¡› ¡}| | ¡ n
t d¡ | ¡\}}|j}| t|d¡ |D ]5}|\}}}||d< | d¡ |  d¡¡ |¡ | d¡ |  d¡¡ |¡ | d¡ |  d¡¡ |¡ q-|S )	Nr.   zmanualProducts/ÚmanualProductsr-   ÚmanualProductIdrb   ÚvariantsMappingr(   )	r0   r   ÚdocumentÚsetÚ
collectionÚaddr.   Úupdater[   ©	rj   rb   ÚrefÚ_r.   r<   rg   ri   re   r4   r4   r5   ra   |   s   

ra   c           	      C   s¢   t  d¡ | ¡}|\}}|j}| t|d¡ |D ]5}|\}}}||d< | d¡ | d¡¡ |¡ | d¡ | d¡¡ |¡ | d¡ | d¡¡ |¡ q|S )Nrl   r-   rm   rb   r.   rn   r(   )	r   rq   rr   r.   rs   r[   ro   r0   rp   rt   r4   r4   r5   ÚsaveCsvProductsŒ   s   
rw   c                 C   ó$   t  d| › d¡ ¡ }dd„ |D ƒS )NúproductsMapping/z/placementsc                 S   ó   i | ]}|j r|j| ¡ “qS r4   ©Úexistsr.   Úto_dict©r2   Údocr4   r4   r5   Ú
<dictcomp>œ   ó    z(getProductPlacements.<locals>.<dictcomp>©r   rq   r0   ©Ú	productIdru   r4   r4   r5   ÚgetProductPlacementsš   ó   r…   c                 C   rx   )Nry   z/colorImagesc                 S   rz   r4   r{   r~   r4   r4   r5   r€       r   z)getProductColorImages.<locals>.<dictcomp>r‚   rƒ   r4   r4   r5   ÚgetProductColorImagesž   r†   r‡   Údatac                 C   s¼  |   d¡}|   d¡}|   d¡}|   d¡}t|ƒ}t|ƒ}t|ƒ\}}t|ƒ}	t|ƒ}
tdd„ |D ƒƒs5d S |  d¡rA|   d¡sAd S |sI|sI|sId S t|  d	¡|  d
¡|  dg ¡|  dg ¡|  dd¡|  dd¡d|d< ||d< i |d< |rw|n|  dd¡|d< g }g }dd„ |D ƒ}|D ]W}|  |  d¡¡}|s› d S |  d¡}t|  d¡|  d¡ƒ}|s¶t	d||ƒ  d S t||  dg ¡||  d¡|  d¡|  dd¡d}||d< ||d< | 
|||f¡ | 
|¡ qŒ||d< t|d < t|d!< ||d< |rú||d< t||ƒ}t d"¡ |¡ t||d#¡ t d$¡ |¡ t|  d%¡g|gd&¡ |
 ¡ D ]\}} t d$¡ |¡ d'¡ |¡ | ¡ q&|	 ¡ D ]\}} t d$¡ |¡ d(¡ |¡ | ¡ qA||d< |S ))Nr„   rV   Úhiddenr.   c                 s   s    | ]}|  d ¡V  qdS )r*   Nr/   ©r2   Úvr4   r4   r5   Ú	<genexpr>¬   s   € z1createManualProductFromMapping.<locals>.<genexpr>ÚparentProductIdÚcreaterM   rD   rE   r,   r)   r   rP   T)rC   rD   rE   rI   r)   rP   r&   rU   r'   rB   c                 S   s   i | ]}|  d ¡|“qS r-   r/   rŠ   r4   r4   r5   r€   ¿   s    z2createManualProductFromMapping.<locals>.<dictcomp>r*   r=   r@   zCant create manual productr8   r:   )r.   r,   r<   r8   r:   r)   rT   rN   rO   Úproducts)rm   r   rl   rK   )ÚactiveShopsÚactiveProductsÚcolorImagesrA   )r0   r   r   r   r…   r‡   Úallr[   r   ÚprintrY   r   ra   r   rq   ro   rs   Úitemsrp   )rˆ   r„   rV   r‰   r.   rj   rb   rU   rn   rA   r’   ÚproductVariantsrT   r<   ri   r*   ÚblankVariantre   r8   ÚplacementIdr4   r4   r5   ÚcreateManualProductFromMapping¢   sz   








ú



ú
(66r™   c           (         sê  |   d¡}|   dg ¡‰ |   d¡}|   d¡}|  d¡|  d¡}}t|ƒ}t|ƒ‰ˆ r3‡ fdd„ˆD ƒ‰|s<td	|ƒ d S |  d
¡}|  d¡}|  dg ¡}	|  d¡}
t|dƒ}|s^tdƒ d S |  d¡}|dkrltddƒ‚|dkròg }g }g }ˆD ](}|  dd¡}||vr¡|  dd¡}|  d¡}| t|tdƒ|d¡ | |¡ qytdt	t
|ƒƒdg}|  d¡}|› dt› d}|  d¡d d!œ}|  d"¡}|d#krìtd|dtd$d%d„ td&tˆƒd& ƒD ƒdg}‡fd'd„ˆD ƒ}t||d|	t|
d(g||d)}tj|t t|d*¡|d+}|jd,krë| ¡   d-¡}t|  d¡ƒ}|  d.¡}t|ƒ}|s=td/ƒ tt||t|  d¡|d0d1ƒ}|D ]}|  d2¡}t||||  d3¡ƒ} q?|rë|rët||||||||	t|
d4g|   d5d¡tt|d6}|  d7¡}g }!g }"|D ]8‰|! ttˆ  d¡ƒˆ  d5¡ˆ  d8¡‡fd9d„|D ƒd:¡ |" ttˆ  d¡ƒˆ  d8¡g d;|ˆ  d8¡d<¡ q|t||!ƒ}#t|#tt|gd;d|#d= d>}$d?d@„ ˆD ƒ}%t|$|"|%g dA tt|#dd|#d= ddBƒ}&t|#|| dCS t|j|jƒ‚|dDkrsg }!ˆD ](‰|! ttˆ  d¡ƒdEˆ  d¡tdFdGˆ  dG¡dHtddˆ  d¡dHgd:¡ qût||t  !|¡t|
d4g|	|!dI\}#}'g }"|!D ]‰|" tˆj"ˆj#g d;|ˆj#d<¡ q;t|#tt|gd;d|#d= d>}$t|$|"ƒ tt|#dd|#d= dJƒ}&t|#dKS d S )LNr=   ÚblankVariantIdsrK   r#   r$   r%   c                    s   g | ]}|  d ¡ˆ v r|‘qS r-   r/   )r2   r—   )rš   r4   r5   r6   ë   r   z&createDraftProduct.<locals>.<listcomp>zNO BLANKrM   rD   rE   ÚprimaryImageTzNO SHOPrJ   Ú1zPlatform not supported.i  Ú2r:   Ú r.   é
   )Úoption1r)   r*   r9   )rM   ÚvaluesrF   z/admin/api/z/products.jsonÚaccessTokenzapplication/json)zX-Shopify-Access-TokenzContent-TypeÚtypeÚnesterzSheet #c                 S   s   g | ]}t |ƒ‘qS r4   )r\   r1   r4   r4   r5   r6   #  s    é   c              	      s2   g | ]}t | d ¡ˆ  |¡d d| d¡d‘qS )r:   r¥   Ú10r.   )r    Úoption2r)   r*   )r[   r0   ÚindexrŠ   )ÚblankVariantsr4   r5   r6   &  s    
þ

þ)Úsrc)rC   Ú	body_htmlÚ	publishedrE   r,   Úoptionsrb   )rj   )rˆ   ÚheaderséÉ   rj   rb   zNo fulfillment service found.)r$   r%   )rK   Úshopr#   Úinventory_item_idÚlocation_id)rF   r)   )r$   rJ   rK   r%   rL   rM   rD   rE   r,   r)   rN   rO   r£   r­   r*   c                    s8   g | ]}t | d ¡| d¡ˆ  d| d¡› ¡d‘qS )rM   r.   ÚoptionÚposition©rM   r.   Úvalue)r   r0   )r2   r³   )r‹   r4   r5   r6   c  s    ,ÿ)r.   r)   r*   r;   F)r.   r*   r,   rP   r=   r@   Úmanual)r.   rN   rO   rQ   rP   rV   r   c                 S   s   i | ]}|  d ¡|  d¡“qS )r8   r,   r/   rŠ   r4   r4   r5   r€   |  r   z&createDraftProduct.<locals>.<dictcomp>)r’   rA   )r„   rV   rŽ   r.   r‰   )r„   rL   ÚresÚ13r   r7   r8   rµ   )rM   rD   r°   r,   rE   rb   )r„   rV   rŽ   r.   )r„   )$r0   r   r   r”   r   r   rY   r[   r\   Úlistrp   r   ÚrangeÚlenÚrequestsÚpostÚjsonÚdumpsÚstatus_coder   r   r   r   r   r	   r   r   r™   Útextr   r    r   r!   Ú	from_dictr.   r*   )(r"   r=   rK   r#   r$   r%   ÚblankProductrM   rD   rE   r›   r°   rJ   Úformatted_variantsÚcolorsÚsizesr<   r:   r*   r­   rF   Úlisting_urlr®   ÚproductTyperj   ÚrequestÚlistingrL   r•   ÚfulfillmentServiceÚitemr±   r¸   ÚconvertedVariantsÚmappedVariantsr„   rU   r’   rk   rv   r4   )rš   r©   r‹   r5   ÚcreateDraftProductá   sœ  










ü
€
þû


þþû

þ
ù
þþ


ó

ÿüÿ
úÿ

ù	û
ýýúüÿ

úúÿ
ù
	ü
ÆrÐ   )6r¿   r   r½   Úconfigs.firebaser   r   r   Úfunctions.Productsr   r   r   r	   r
   r   r   r   r   r   r   r   Ú functions.products.SubmitProductr   r   r   Úfunctions.Responser   Úfunctions.Shopify.Authr   Úfunctions.Shopify.Fulfillmentr   r   r   Úfunctions.Shopsr   Ú!functions.Suppliers.BlankProductsr   r   r   ÚV2.functions.Products.mainr   r   ÚV2.functions.Products.Variantsr    ÚV2.functions.Shops.mainr!   r[   rk   rº   ra   rw   r…   r‡   r™   rÐ   r4   r4   r4   r5   Ú<module>   s*    8_?