o
    µQ?h¡D  ã                   @   s¶  d dl Z d dlmZ d dl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 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mZ d dlmZ d dl m!Z! de!fdd„Z"defdd„Z#d4dede$fdd„Z%d5dede$de&de&d e'f
d!d"„Z(dede$fd#d$„Z)ded%e$d&e$fd'd(„Z*dede$de$d e'e+ fd)d*„Z,dede$d e+dB fd+d$„Z)dede$d,e$d-e$fd.d/„Z-de!fd0d1„Z.de!fd2d3„Z/dS )6é    N)Údatetime)Údb)Ú	findOrder)ÚAddress)ÚApplication)Ú
EtsyClient)ÚgetShippingProfile)ÚImage)Ú
LastUpdate)ÚOrder)Ú	OrderItem)ÚPropertyÚVariant)ÚShopÚgetShopsByPlatformId)Ú	API_Error)ÚParamsÚparamsc                 C   s,   t ddd}dd„ |D ƒ}tdd„ |D ƒƒS )NÚ1T)Ú
platformIdÚcredentialsc                 S   s,   g | ]}t |jd k|j|j|jgƒr|‘qS )Úv3)ÚallÚ
apiVersionÚaccessTokenÚ	tokenTypeÚ	expiresAt)Ú.0Ús© r   úM/var/www/html/riverr-enterprise-integrations-main/V2/functions/Etsy/Orders.pyÚ
<listcomp>   s   , z#updateAllOrders.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r   )ÚupdateShopOrders©r   Úshopr   r   r    r!      s    )r   Ústr)r   Úshopsr   r   r    ÚupdateAllOrders   s   r'   r$   c                    sP  z‰| j }g }t | j¡}t |¡}t|j| ƒ}t|| j|j	d}|j
dd„ d td|t|ƒƒ |D ]:}| d¡}| d¡}	g }
|	D ]}i }| d¡r…| d	¡r…t|| d¡ƒ}|r…| d	¡‰ t‡ fd
d„| d¡D ƒd ƒ‰ ˆ r…t| d¡| d¡| d¡d|d< tdZi 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¡ | d¡ “d"| d¡ d¡| d¡ d¡ | d¡ “d#t| d$¡ƒ“d%| d¡“d&|“d't | d(¡¡“d)t | d(¡¡“d*t t|| d¡| d+¡ƒ¡“d,| j| j  t| d¡ƒ “d-|“Ž}| d.g ¡}| t| d$¡|j| d/¡d0d1„ |D ƒd2¡ |
 |¡ qD| j}|r¦| d3¡s¦tt  | j d4¡¡t|ƒ| d5¡d6}|r¦| d7¡}| d8¡|d3< | d9¡|d:< | d;¡|d;< | d<¡|d<< | d=¡|d>< | d?¡|d@< t!dZi d| j“d| j“d&|“d| j“dAdB“dCdB“dDt"| d%¡| d3¡| d:¡| d;¡| d<¡| d>¡| d@¡| d@¡| dE¡dF	“d|“d't | d(¡¡“d)t | dG¡¡“dH| dI¡ d¡| dI¡ d¡ “dJ| dK¡“dL| dI¡ dM¡“dN| dO¡ d¡| dO¡ d¡ “dP| dQ¡ d¡| dQ¡ d¡ “dR| dS¡ d¡| dS¡ d¡ “dT| dU¡ d¡| dU¡ d¡ “dV| j#“Ž}| | $|
¡¡ q3tdW|t|ƒƒ |rˆ|j$t|ƒ|dX  dG¡dY |W S  t%y§ } ztt& '¡ ƒ t|ƒW  Y d }~S d }~ww )[N)ÚclientÚplatformShopIdÚlastUpdatedc                 S   s
   |   d¡S )NÚupdated_timestamp©Úget)Úxr   r   r    Ú<lambda>#   s   
 z"updateShopOrders.<locals>.<lambda>)Úkeyzupdating ordersÚ
receipt_idÚtransactionsÚshipping_template_idÚshipping_upgradec                 3   s"    | ]}|  d ¡ˆ kr|V  qdS )Úupgrade_nameNr,   )r   Úupgrade©ÚselectedUpgrader   r    Ú	<genexpr>0   s   €  z#updateShopOrders.<locals>.<genexpr>Úshipping_profile_upgradesÚtitleÚorigin_country_nameÚdestination_country_name)ÚnameÚcarrierÚserviceÚshippingÚuidÚenterpriseIdr   ÚplatformProductIdÚ
listing_idÚplatformOrderItemIdÚtransaction_idÚplatformOrderIdÚquantityÚpriceÚamountÚdivisorÚdiscountr   ÚtaxÚsubtotalÚtotalÚ	variantIdÚ
product_idr>   ÚshopIdÚ	createdAtÚcreated_timestampÚ	updatedAtÚimageÚlisting_image_idÚ	productIdÚmetadataÚ
variationsÚskuc                 S   ó,   g | ]}t | d ¡| d¡| d¡d‘qS ©Úformatted_nameÚproperty_idÚformatted_value)r>   ÚidÚvalue©r   r-   ©r   Ú	variationr   r   r    r!   S   ó    üýÿz$updateShopOrders.<locals>.<listcomp>©rb   rJ   r\   Ú
propertiesÚ
first_lineÚshipstationShopIdr)   ©ÚorderNumberÚstoreIdÚshipToÚstreet1Ústreet2Úsecond_lineÚcityÚstateÚ
postalCodeÚzipÚcountryÚcountry_isoÚ	cancelledFÚdraftÚshippingAddressÚbuyer_email©	r>   Úaddress1Úaddress2rs   rt   rv   rw   ÚcountryCodeÚemailr+   Ú
grandTotalÚ
grandtotalÚshippedÚ
is_shippedÚcurrencyCodeÚcurrency_codeÚshippingCostÚtotal_shipping_costÚtotalDiscountÚdiscount_amtÚtotalTaxÚtotal_tax_costÚ
totalPriceÚtotal_priceÚshopNamezupdated orderséÿÿÿÿ)ÚcountÚ	timestampr   )(rb   r   r-   ÚappIdr
   r   ÚapiKeyÚgetEtsyShopOrdersr)   r“   ÚsortÚprintÚlenr   ÚnextÚdictr   rB   rC   r   r%   r   Úfromtimestampr	   Ú	from_dictÚgetListingImageÚ
addVariantr   rJ   ÚappendÚshipstationConnectionÚfindShipstationOrderr   r   r   r>   ÚsaveÚ	ExceptionÚ	tracebackÚ
format_exc)r$   rS   ÚupdatesÚapplicationÚ
lastUpdater(   ÚordersÚorderrH   ÚitemsÚ
orderItemsÚitemrZ   ÚshippingProfileÚ	orderItemr[   r¡   ÚshipstationOrderr{   ÚconvertedOrderÚer   r7   r    r"      s$  






ýÿþý
ü
ûú
ù ø	÷
ö*õ*ôó
òñðïîíìûüÿ&
ÿþýüûú÷ùîíì ë
êé è ç æ åä"€þr"   FrH   c                 C   s€  z+| j }t | j¡}t|j| ƒ}t||ƒ}|r*| d¡}g }|D ]ê}	tdKi d| j“d| j	“d| j
“d|	 d¡“d|	 d¡“d	|“d
|	 d
¡“d|	 di ¡ dd¡|	 di ¡ dd¡ “dd“dd“d|	 di ¡ dd¡|	 di ¡ dd¡ |	 d
d¡ “d|	 di ¡ dd¡|	 di ¡ dd¡ |	 d
d¡ “dt|	 d¡ƒ“d|	 d¡“d|“dt |	 dt ¡  ¡ ¡¡“dt |	 dt ¡  ¡ ¡¡“dt t|t|	 d¡ƒt|	 d¡ƒƒ¡“d| j
| j  t|	 d¡ƒ “Ž}
|	 dg ¡}|
 t|	 d¡|
j|	 d ¡d!d"„ |D ƒd#¡ | |
¡ q"| j}|r^| d$¡s^tt | j d%¡¡t|ƒ| d&¡d'}|r^| d(¡}| d)¡|d$< | d*¡|d+< | d,¡|d,< | d-¡|d-< | d.¡|d/< | d0¡|d1< tdKi d| j“d| j
“d|“d| j	“d2d3“d4d3“d5t| d¡| d$¡| d+¡| d,¡| d-¡| d/¡| d1¡| d1¡| d6¡d7	“d	|“dt | d¡¡“dt | d8¡¡“d9| d:¡ d¡| d:¡ d¡ “d;| d<¡“d=| d:¡ d>¡“d?| d@¡ d¡| d@¡ d¡ “dA| dB¡ d¡| dB¡ d¡ “dC| dD¡ d¡| dD¡ d¡ “dE| dF¡ d¡| dF¡ d¡ “dG| j“Ž}t|j|dH|dIdJW S W d S  ty? } zt t|ƒƒ‚d }~ww )LNr2   rB   rC   r   rD   rE   rF   rG   rH   rI   rJ   rK   r   rL   é   rM   rN   rO   rP   rQ   rR   r>   r;   rS   rT   rU   rV   rW   rX   rY   r[   r\   c                 S   r]   r^   rd   re   r   r   r    r!   ´   rg   z%updateSingleOrder.<locals>.<listcomp>rh   rj   rk   r)   rl   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   Frz   r{   r|   r}   r+   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r   rŽ   r   r   T)ÚrewriteÚreadd)rb   r   )!rb   r   r-   r”   r   r•   ÚgetEtsyOrderr   rB   rC   r   r%   r   rœ   Únowr“   r	   r   rž   rŸ   r   rJ   r    r¡   r¢   r   r   r   r>   r›   r£   r¤   r   )r$   rH   ÚreadddrS   Úappr(   r«   r¬   r­   r®   r°   r[   r¡   r±   r{   r²   r³   r   r   r    ÚupdateSingleOrderŽ   sø   

ÿþý
ü
ûú
ù(ø	÷
ö4õ4ôó
òñðï&îíûüÿ&
ÿþýüûú÷ùîíì ë
êé è ç æ åä­T€ÿr»   éd   r(   r)   r*   ÚlimitÚreturnc                 C   sv   d|› d}| j |td||ttjt | jjr| jjnd¡d ¡ ƒddd}|j	d	kr4| 
¡   d
g ¡S t|j|j	ƒ‚)Nú.https://openapi.etsy.com/v3/application/shops/z	/receiptsÚupdatedÚUTC)ÚtzT)Úsort_onr½   Úmin_last_modifiedÚmax_last_modifiedÚwas_paid)r   éÈ   Úresults)r-   r›   Úintr   r¸   ÚpytzÚtimezoner$   r“   Ústatus_codeÚjsonr   Útext)r(   r)   r*   r½   ÚurlÚresr   r   r    r–   ë   s   (ûþ

r–   c                 C   s4   d| j j› d|› }|  |¡}|jdkr| ¡ S d S ©Nr¿   ú
/receipts/rÇ   )r$   r)   r-   rÌ   rÍ   ©r(   rH   rÏ   rÐ   r   r   r    r·   û   s   
r·   rD   ÚimageIdc                 C   sF   d|› d|› }|   |¡}|jdkrt| ¡   d¡|dS tdddS )Nz1https://openapi.etsy.com/v3/application/listings/z/images/rÇ   Úurl_fullxfull)rÏ   rb   Ú )rb   rÏ   )r-   rÌ   r›   rÍ   )r(   rD   rÔ   rÏ   rÐ   r   r   r    rž     s   
þrž   c                 C   sD   d|› d|› d}|   |¡}|jdkr| ¡   dg ¡S t|j|jƒ‚)Nr¿   rÒ   z/transactionsrÇ   rÈ   )r-   rÌ   rÍ   r   rÎ   )r(   r)   rH   rÏ   rÐ   r   r   r    ÚgetEtsyOrderItems  s   
r×   c                 C   s>   d| j j› d|› }|  |¡}|jdkr| ¡ S t|jƒ d S rÑ   )r$   r)   r-   rÌ   rÍ   r˜   rÎ   rÓ   r   r   r    r·     s   


ÚtrackingCodeÚcarrierNamec                 C   sd   t  | j¡}t|j| ƒ}d| j› d|› d}|j|t||ddd}|jdkr)dS t	|j
|jƒ dS )	Nr¿   rÒ   ú	/trackingT)Úcarrier_nameÚtracking_codeÚsend_bcc©rÏ   rÍ   rÇ   F)r   r-   r”   r   r•   r)   Úpostr›   rÌ   r˜   rÎ   )r$   rH   rØ   rÙ   rº   r(   rÏ   rÐ   r   r   r    ÚsubmitShipment  s   ýþrà   c           	      C   sÂ   | j  d¡}t d¡ dd|¡ ¡ }t|ƒr_|d  ¡ }t |¡}t |j	¡}t
 |j¡}t|j|ƒ}d|j› d|j› d}|j|t| d¡| d	¡d
d}|jdkrVdS t|j|jƒ dS d S )NÚorderIdÚ	shipmentsú==r   r¿   rÒ   rÚ   rÙ   rØ   )rÛ   rÜ   rÞ   rÇ   TF)Úargsr-   r   Ú
collectionÚwherer™   Úto_dictr   r   rS   r   r”   r   r•   r)   rH   rß   r›   rÌ   r˜   rÎ   )	r   rá   Úshipmentr«   r$   rº   r(   rÏ   rÐ   r   r   r    ÚsubmitShipmentForOrder)  s(   
þþïré   c              
   C   s0  t dddƒ}dd„ t d¡ dd|¡ ¡ D ƒ}d	d„ |D ƒ}td
d„ |D ƒƒ}dd„ |D ƒ}dd„ | ¡ D ƒ}|D ]\}t|jƒ |j	dkr•| |j
¡}| |j¡}t|j|ƒ}	t|	|jƒ}
|
r•|
 d¡s•t|jdƒ t d¡ dd|j¡ ¡ }t|ƒdkr•|d  ¡ }t|jt||j| d¡| d¡ƒƒ q9d S )Niæ  é
   é   c                 S   s   g | ]	}t  | ¡ ¡‘qS r   )r   r   rç   )r   Údocr   r   r    r!   A  s    z+submitRemainingShipment.<locals>.<listcomp>rª   Ú	shippedAtú>c                 S   s   g | ]}|j s|‘qS r   )Úrouted©r   r«   r   r   r    r!   B  s    c                 s   s    | ]}|j V  qd S )N)rS   rð   r   r   r    r9   C  s   € z*submitRemainingShipment.<locals>.<genexpr>c                 S   s   i | ]}|t  |¡“qS r   )r   r-   )r   rS   r   r   r    Ú
<dictcomp>D  s    z+submitRemainingShipment.<locals>.<dictcomp>c                 S   s   i | ]
}|j t |j ¡“qS r   )r”   r   r-   r#   r   r   r    rñ   E  s    r   r…   zNOT SHIPPEDrâ   rá   rã   r   rØ   rÙ   )r   r   rå   ræ   r-   ÚsetÚvaluesr˜   rb   r   rS   r”   r   r•   r·   rH   r™   rç   rà   )r   Úafterrª   ÚshopIdsr&   Úappsr«   r$   rº   r(   rÐ   rè   r   r   r    ÚsubmitRemainingShipment?  s*   "

$€ôr÷   )F)r¼   )0r¥   r   rÊ   Úconfigs.firebaser   Úfunctions.Shipstation.Ordersr   r¢   ÚV2.functions.Address.mainr   ÚV2.functions.Applications.mainr   ÚV2.functions.Etsy.Authr   ÚV2.functions.Etsy.Productsr   ÚV2.functions.Images.mainr	   ÚV2.functions.LastUpdater
   ÚV2.functions.Orders.mainr   ÚV2.functions.Orders.OrderItemr   ÚV2.functions.Products.Variantsr   r   ÚV2.functions.Shops.mainr   r   ÚV2.middlewares.authr   Ú	V2.Paramsr   r'   r"   r%   r»   rÉ   Úlistr–   r·   rž   r›   r×   rà   ré   r÷   r   r   r   r    Ú<module>   s8    s ]
