o
    Q?hL                     @   s\  d dl mZ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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edededB fddZdededB fddZeddG dd deZdefddZdd Z defddZ!ded efd!d"Z"defd#d$Z#d%d& Z$defd'd(Z%defd)d*Z&defd+d,Z'dS )-    )	dataclassfieldN)db)Authorization)Address)Application)BlankProductBlankVariant)DocumentDatavalidate)VariantMapping)Shop)	API_Error)ParamsenterpriseIdshippingSpeedIdreturnc                 C   ,   t d|  d|  }|jr| S d S )Nenterprises/z/shippingSpeeds/r   documentgetexiststo_dict)r   r   doc r   P/var/www/html/riverr-enterprise-integrations-main/V2/functions/Shipments/main.pygetShippingSpeed   s   r   idc                 C   s&   t d|   }|jr| S d S )NzshippingSpeeds/r   )r   r   r   r   r   getGlobalShippingSpeed   s   r   T)kw_onlyc                   @   s   e Zd ZU eed< eed< eed< eed< eed< eed< eed< eed< eed	< eed
< eed< eed< eed< dZeed< eedZ	ee ed< dd Z
g fdee fddZdS )ShipmentorderIdplatformOrderId
platformIdplatformNameplatformShipmentIdtrackingCodetrackingUrlcarrierNamecarrierServicecostimagepdfuserUidUSDcurrency)default_factoryroutedOrderIdsc                 C   s   t |  d S N)r   )selfr   r   r   __post_init__/   s   zShipment.__post_init__c                 C   s   t d|  \}}|t|jd |j| _|  }|s!g }|D ]4}||d< |jd | |d< ddlm} |	|}|rI|j
|d< |j|d	< t d|	d| q#|S )
N	shipmentsr   r"   -r   r   OrderuserIdr   )r   
collectionaddr   updatedictr   V2.functions.Orders.mainr:   r   uidr   r   set)r4   r2   _refshipmentr   r:   	thisOrderr   r   r   save2   s   


zShipment.saveN)__name__
__module____qualname__str__annotations__floatr0   r   listr2   r5   rG   r   r   r   r   r!      s$   
 r!   paramsc           !   
      s  | j }|j|j}}| jd}| jdtjd|j dd}ddlm} ||}|r|jr2d S |j	}d }	|dkr=d	nd }
|r|j	d
}|j	d}|j	d}|j	d}|rt
dYi d|d|d|jd|jddddd|jd|dd d|d|dddt|s|nd d|jd|jdt|r|nd }|j|jr|jng d dd l}|d |j|d}tdYi | |S |j	di }	|
rt|
ntj||d}|stdd | }td!d" |D }d#d$ |D }td%d" |D }|d&krd'td(d" |D  }t| jd)d*|dkr|nd+| jd,d-| jd.d/d0}|jr<|jdkr<|j|_|	r|	d1|	d2}}t|d3}|d4v r[|j|_|d5krlt|	d6d7d5d8}d9}dd:lm} |||||||||d;}|j|jr|jng d |j|d}tdYi | |S d}d<}|jd=d>vrd?|_ |j rt!||j   std@t" dAdB}|std@|dCt# fdDd"|dEg D d }}|d} dF}nM|dk rt!|dG nt!||dHk rdIndJ  std@t" dAdB}|std@|dCt# fdKd"|dEg D d }}|d} dF}t| jd)d*|dkrH|nd+| jd,d-| jd.d/d0}d }|jdLkrmtdMdNdBdOdPdQdRdSdT}nt$| }dd:lm} |dkr|||||||||d;}ntj|| dd}ddUl%m&} |||||||||dV}|j|jr|jng d |j|d}ddWl'm(}  | |j)|j*|j|j+|j,|j-| dX tdYi | |S d S )ZNr"   appEASYPOSTshippingtyper   r9   60D7GFDlMFFd6IsK1e58GglHeQqlMKasLA3upoQcshippingLabelr)   r*   r'   rA   r   r#   r$   Manualr%   r&   r(   r+   r,   r.   r2   r-   r2      rE   rA   :No from address selected, Please set default from address.  c                 s   s6    | ]}|j st|jjt|jj|jfV  qd S r3   )ignoredr   	from_dictpurchaseOrderDatablankProductIdblankVariantIdquantity.0	orderItemr   r   r   	<genexpr>r   s   4 zshipNow.<locals>.<genexpr>c                 S   s"   g | ]\}}}t |||fqS r   r	   r   )rf   rb   rc   rd   r   r   r   
<listcomp>s   s   " zshipNow.<locals>.<listcomp>c                 s   s    | ]
\}}|j | V  qd S r3   weight)rf   blankVariantrd   r   r   r   rh   t   s    gSo3G298DNypOMvofnaR   c                 s   s    | ]\}}|V  qd S r3   r   )rf   rC   rd   r   r   r   rh   u   s    height      length   width   rp   rl   rs   ru   carrierpriorityfromAddressId)GSOGLSFlatrl      )rl   predefined_packageFirstshipNowEasypost)returnAddresspackagecountry)United StatesUSAUSzUnited States of AmericaInternational$Shipping speed not found or not set.	carrierId platformCarrierIdc                 3   .    | ]}| d   dkr| d V  qdS r   	serviceIdNr   rf   serviceshippingSpeedr   r   rh         , services	packageIdz<1oz   z<1lbz>1lbc                 3   r   r   r   r   r   r   r   rh      r   LNU7wWw9cSMHeMcAavdeMynapk82zThe Print Bar Apparelz
PO Box 153MasonOH45040r   
1111111111)nameaddress1address2citystatezipr   phone)shipNowShipstation)r   r   parcelr   submitShipmentToPlatformr*   orderr   ).currentUserrA   r   argsr   r   r@   r:   shippedmetadatar!   r   r#   isPdfr2   rG   timesleepmarkAsShippedr?   r   r   getDefaultAddressr   getOrderItemsrB   sumshopNamer   V2.functions.Shipments.EasyPostr   shippingAddressr   r   r   nextr`   "V2.functions.Shipments.Shipstationr   functions.Shipments.Mainr   r$   shopIdr'   r)   r*   )!rO   userrA   r   r"   rP   r:   r   r   rR   rz   rW   r)   r*   r'   rE   r   r>   fromAddress
orderItemsblankVariantIdsblankVariantstotalWeightr   r   r   r   r   r$   r   globalShippingSpeedr   r   r   r   r   shipNowD   s"  

	

 

,
,


$
&r   c                 C   s   | dd  dkS )Nr-   r   )urlr   r   r   r      s   r   c              	   C   sn  | j }| jd}ddlm} ||}| jdtjd|j dd}|r| }tdd	 |D }d
d |D }t	dd	 |D }	t
j|j|jd}
|
sRtddt| jdd|	dkr_|	nd| jdd| jddd}ddlm} ||||
||}ddlm} |ds||j|j|j|j|j|j| d |j|jr|jng d |j|d}i | |S d S )Nr"   r   r9   rP   rQ   rR   rS   c                 s   s,    | ]}t |jjt |jjfV  qd S r3   )r   r`   ra   rb   rc   re   r   r   r   rh      s   * z'shipNowSmartShipment.<locals>.<genexpr>c                 S      g | ]
\}}t ||qS r   ri   rf   rb   rc   r   r   r   rj          z(shipNowSmartShipment.<locals>.<listcomp>c                 s       | ]}|j V  qd S r3   rk   rf   rm   r   r   r   rh          r\   r]   r^   rp   rq   rr   rs   rt   ru   rv   rw   r   r   copiedr   rY   r[   )r   r   r   r@   r:   r   r   r   rB   r   r   r   rA   r   r?   r   r   r   r   r$   r   r#   r'   r)   r*   r   rG   r2   r   )rO   r   r"   r:   r   rP   r   r   r   r   r   r   r   rE   r   r>   r   r   r   shipNowSmartShipment   s4   
0r   batchIdc                 C   r   )Nr   z	/batches/r   )r   r   rD   r   r   r   getBatch   s   r   c           
      C   s   | j }| jd}t|j|}|stdd|d}g }tjd|j dd}|D ]1}ztt|| j	d t
||dd	}|rB|| W q) tyZ }	 zt|	| W Y d }	~	q)d }	~	ww t
|d
S )Nr   zBatch not found.  orderIdsrQ   rR   rS   )r"   rP   )r   r   )shippedOrders)r   r   r   r   r   r   r   r   r   hostnamer?   append	Exceptionprint)
rO   r   r   batchr   r   rP   r"   r   er   r   r   	shipBatch   s2   
	
r   c                 C   s   t t| d dS )NgY<@rq   )roundrM   )gramsr   r   r   
grams2Ounc  s   r   c           	      C   s   | j d}| j d}tj|| jj dd}|dkrE|j|j}}d}tjd|t	||t
|dd	}|jd
krE| }dd |D }|S g S )NcarrierCoder$   rR   rS   SHIPSTATIONz3https://ssapi.shipstation.com/carriers/listpackagesGET)r   )authrO      c                 S   s$   g | ]}t |d |ddqS )coder   )r   r   )r?   r   )rf   r   r   r   r   rj     s    
zgetPackages.<locals>.<listcomp>)r   r   r   r   r   apiKey	apiSecretrequestsrequestr   r?   status_codejson)	rO   r   r$   rP   r   r   r   responsepackagesr   r   r   getPackages  s   
r   c           
      C   s   | j d}ddlm} ||}| j d}| j d}|jdkrBt|j}ddlm} |||j	||}|s<t
dt|jd	S |jd
krgt|j}ddlm}	 |	||j	||}|sat
dt|jd	S t
d)Nr"   r   r9   r'   r)   1)submitShipmentz!Failed to submit shipment to Etsyr7   2)submitShopifyShipmentz$Failed to submit shipment to ShopifyzNot supported)r   r   r@   r:   r$   r   r   V2.functions.Etsy.Ordersr   r#   r   r?   r   functions.Shopify.Fulfillmentr   )
rO   r"   r:   r   r'   r)   shopsubmitShipmentEtsyressubmitShipmentShopifyr   r   r   submitRemainingShipmentForOrder  s$   


r   c                    s  | j }|j|j}}| jd}| jdtjd|j dd}ddlm} ||}|rE|jr2d S |dkr8d	nd }| jd
}	|rGt	|nt	j
||d}
|
sUtdd| }tdd |D }dd |D }tdd |D }|dkrxd}t| jdd|dkr|nd| jdd| jddd}t||	stdtdd}|std|d tfd!d|d"g D d } |d#}d$}t| jdd|dkr|nd| jdd| jddd}dd%lm} |dkr||||
||| }n4tj|| dd}dd&lm} |||
 | |||d'}t fd(d|D d }|r5t|d)d*S |s=td+d,t|d-d*S d S ).Nr"   rP   rQ   rR   rS   r   r9   rU   rV   r   r\   r]   r^   c                 s   s2    | ]}|j st|jjt|jjfV  qd S r3   )r_   r   r`   ra   rb   rc   re   r   r   r   rh   C  s   0 zgetRate.<locals>.<genexpr>c                 S   r   r   ri   r   r   r   r   rj   D  r   zgetRate.<locals>.<listcomp>c                 s   r   r3   rk   r   r   r   r   rh   E  r   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   r   r   r   r   c                 3   r   r   r   r   r   r   r   rh   Q  r   r   r$   r   )getSelectedRate)getRates)r   r   r   r   r   packageCodec                 3   s"    | ]}| d  kr|V  qdS )r   Nr   )rf   rate)r   r   r   rh   p  s     r+   )r+   zSelected rate not available.r   r   )r   rA   r   r   r   r   r@   r:   r   r   r   r   r   rB   r   r?   r   r   r   r   r   functions.Shipments.Shipstationr   r   )rO   r   rA   r   r"   rP   r:   r   rz   r   r   r   r   r   r   r   r   r   r$   r   r   r   getShipstationRateratesr   )r   r   r   getRate1  sj   


,

	 r   )(dataclassesr   r   r   configs.firebaser   functions.Shipstation.Authr   V2.functions.Address.mainr   V2.functions.Applications.mainr   V2.functions.BlankProducts.mainr   r	   V2.functions.mainr
   r   V2.functions.Products.Variantsr   V2.functions.Shops.mainr   V2.middlewares.authr   	V2.Paramsr   rK   r?   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s4    & 