
    njS(                         d dl Z d dlmZ d dlZd dlmZmZ d dlmZmZ d dl	Z	d dl
Zd Zd Zd Zd Zd	 Zdd
Zd Zd Zd Zy)    N)settings)datetime	timedelta)	DelhiveryDeliveryMatrixc                 Z   | r| j                   j                         syd}| j                   j                         D ]K  }|j                  }|j                  }|j
                  }t        ||      }|dk(  rd}|||j                  z  z  }M |dz  }||z  }|dkD  rt        t        |            S dS )z.
    Calculate total cart weight in grams
    r   i  g?)
itemsexistsallskusku_quantitysku_unitconvert_to_gramsquantityintround)carttotal_weightitemr   r   unitweight_per_packpackaging_weights           NC:\Users\Saasvaap\Desktop\Akash\Saasvaap\DEMO\Navya-Bakers\orders\delhivery.pycalculate_cart_weightr      s     tzz((*L

 hh ##|| +8T: a!O 	$--77 !& $d*$$L (4a'73u\"#@S@    c                     |j                         j                         }|dv r| dz  S |dv r| S |dv r| dz  S |dv r| dz  S |dv r| S |dv r| dz  S t        j                  d	| d
       y)N)kgkilogram	kilogramsi  )ggramgramsgmgms)mg	milligram
milligrams)lliterliters)ml
millilitermilliliters)pcpcspiecepiecesnonosnumbernumbers   zUnknown unit: z, defaulting to 0r   )lowerstriploggingwarning)r   r   s     r   r   r   .   s    ::<D ..$	4	4	2	2$ 
)	)$	4	4 
S	S#~ 	..?@Ar   c                     t         j                  j                  |       j                  dd      j	                         }|sd d dS |d   r|d   nd |d   r|d   dS d dS )N)pincodetat_surfacetat_express)r=   r>   )r   objectsfiltervaluesfirst)r<   datas     r   get_delivery_inforD   L   s    !!(((9@@}eg 	 
 	
 /3=.AtM*t.2=.AtM* GK r   c                    d}|  d| t         j                  d}	 t        j                  ||d      }|j	                          |j                         }t        j                  d|        |j                  d      dk(  rW|j                  d	g       D ]B  }|j                  d
g       D ]+  }d|j                  dg       v s|j                  d      c c S  D y # t        $ r t        j                  d       Y y w xY w)N1https://maps.googleapis.com/maps/api/geocode/json,latlngkey      paramstimeoutzGoogle Maps response: statusOKresultsaddress_componentspostal_codetypes	long_namezGoogle Maps API failed)
r   GOOGLE_MAPS_API_KEYrequestsgetraise_for_statusjsonr9   info	Exception	exception)latlngurlrO   responserC   resultcomps           r   get_pincode_from_latlngrf   ^   s    
=C E3%.++F
4<<FFC!!#}}-dV4588H%((9b1"JJ';R@D$"(==#xx44 A 2   4234s   B"C ?C C C98C9c           
      H   d}|dk(  rd}| j                   }nd}d}| j                  }|j                  }| j                  }t        j
                  j                  |       j                         j                  }i d| j                  j                  d|j                  dt        |j                        d	|j                  d
|j                  ddd| j                  j                   d| j"                  d|dt        |      dddddt        |      ddddddddd|j                  |j$                  |j                  |j                  d|j                  |j&                  dgd|id}	d t)        j*                  |	      z   }
d!t,        j.                   d"d"d#}	 t1        j2                  ||
|d$%      }|j)                         }|j5                  d&g       }|r |d   j5                  d'      }d(| }d|||d)S d*|d+S # t6        $ r}d*t        |      d+cY d }~S d }~ww xY w),Nz9https://staging-express.delhivery.com/api/cmu/create.jsonCODPrepaidr   )ordernameaddpincitystatecountryIndiaphonerj   payment_mode
cod_amountproducts_desczBakery Itemsr   1weightshipping_modeSurfacefragile_shipmentTshipment_width20shipment_height15)shipment_lengthreturn_name
return_addreturn_cityreturn_statereturn_country
return_pinreturn_phone)	shipmentspickup_locationzformat=json&data=Token application/json)AuthorizationAcceptzContent-TyperM   )rC   headersrP   packageswaybillz'https://www.delhivery.com/tracking?awb=)successawbtracking_urlrawF)r   error)grand_totalpu_uuidpu_namedrop_addressr   r?   r@   rB   weight_grams	user_uuid
first_namehouse_number_or_namestrpin_codern   state_or_provincephone_numberorder_IDpu_location
contact_nor\   dumpsr   DELHIVERY_API_KEYrY   postrZ   r^   )rj   payment_typerb   rs   rt   pupickup_nameaddressr   shipment_datapayloadr   rc   rC   r   r   r   es                     r   create_delhivery_shipmentr   {   s   
EC u&&
 
 
B**K   G##***7==?LLL#22#w33# s7++,# 	#
 22# 7# 55# # # c*o#  # C#" #l+##&  '#* #D+#. !$/#0 "41#2 $(  "zz nn!ww " 4 4") kk "E#%
N K
O*MZ "DJJ}$==G "("<"<!=>$*G3==7GaP}} 88J+1+//),CDSEJL   ,	  !400 3 3q6223s%   AH  ;H   	H!	HH!H!c                 \   d}t        j                         t        d      z   j                  d      }t	        |       t	        |      |d|d}ddt
        j                   d	}	 t        j                  |||d
      }|j                          |j                         }t        j                  d|        t        |t              r	|r|d   ni }|j                  d      }	|j                  d      }
|	sdd dS t	        |	      |
dS # t        $ r t        j                   d       dd dcY S w xY w)Nz/https://track.delhivery.com/api/dc/expected_tat   )daysz%Y-%m-%dB2C)
origin_pindestination_pinmotpdtexpected_pickup_dater   r   )r   r   rK   rO   r   rP   zTAT API response: r   tatexpected_delivery_datez3-5)r   r   zTAT API failed)r   todayr   strftimer   r   r   rY   rZ   r[   r\   r9   r]   
isinstancelistr^   r_   )r   r   moderb   pickup_daterO   r   rc   rC   r   expected_dates              r   get_expected_delivery_timer      s,   
;C>>#iQ&77AA*MK *o/ +F %!("<"<!=>G
><<FGVT!!#}})$01dD!"47Dhhuo!9: DAA s8&3
 	

  >*+==>s   $BD 7D #D+*D+c                 D   d|  }dt         j                   dd}	 t        j                  ||d      }|j                  dk7  ry|j                         }|j                  d	g       }t        |xr' |d
   j                  di       j                  d      dk7        S #  Y yxY w)NzIhttps://staging-express.delhivery.com/c/api/pin-codes/json/?filter_codes=r   r   )r   r   rM   )r   rP   r6   Fdelivery_codesr   rU   remarkEmbargo)r   r   rY   rZ   status_coder\   bool)r<   rb   r   rc   rC   r   s         r   check_pincoder     s    UV]U^
_C "("<"<!=>$G
<<WqA 3&}}"2B7  P1!!-488BiO
 	

s   'B AB Bc                    d}|d|| ||d}	 t        j                  ||ddt        j                   id      }|j	                          |j                         }t        j                  d|        t        |t              r|r|d	   j                  d
d	      S d	S t        |t              r|j                  d
d	      S y	# t        $ r t        j                  d       Y y	w xY w)NzHhttps://staging-express.delhivery.com/api/kinko/v1/invoice/charges/.json	Delivered)mdssd_pino_pincgmptr   r   rK   r   z%Delhivery charge API success | data: r   total_amountzDelhivery charge API failed)rY   rZ   r   r   r[   r\   r9   r]   r   r   dictr^   r_   )	
pickup_pindrop_pincart_weightr   r   rb   rO   rc   rC   s	            r   get_delhivery_charger   (  s    
TC F<<$x/I/I.J&KL	
 	!!#}}<TFCDdD!5947;;~q1@q@dD!88NA.. 78s   B
B= B= !B= =CCc                 :   d}|  d| t         j                  d}t        j                  ||d      }|j	                         }d d d d d}|d   dk(  rI|d	   d
   d   D ];  }|d   }d|v r	|d   |d<   d|v r	|d   |d<   "d|v r	|d   |d<   /d|v s4|d   |d<   = |S )NrF   rG   rH   rM   rN   )streetrn   ro   r<   rQ   rR   rS   r   rT   rV   routerW   r   localityrn   administrative_area_level_1ro   rU   r<   )r   rX   rY   rZ   r\   )	r`   ra   rb   rO   rc   rC   rd   re   rV   s	            r   get_full_address_from_latlngr   O  s    
=C E3%.++F
 ||C:H==?D 	F H~OA&';<DME%#'#4x u$!%k!2v.%7"&{"3w%'$($5y! = Mr   )S)r\   django.confr   rY   r   r   orders.modelsr   r   r9   pandaspdr   r   rD   rf   r   r   r   r   r    r   r   <module>r      sM        ( 3   AF<$:`3L*>X6$Nr   