o
    }si
                     @   s   d Z ddlZh dZdZddddd	dd
ddddddddddddeddddddddddg
Zdd
ddddZd#dedededefddZd#dedededefddZ	d edefd!d"Z
dS )$u   Map raw delivery-method strings to canonical carrier names.

Carriers: DPD · DHL · Paket24 · Pickup
Special token FREE_SHIPPING resolves to DPD for EU, DHL for non-EU.
Rules are checked in order; first keyword (substring, case-insensitive) wins.
    N>   ATBEBGCYCZDEDKEEESFIFRGRHRHUIEITLTLULVMTNLPLPTROSESISKFREE_SHIPPINGdhlDHL)matchcarrierpaket24Paket24dpdDPDglsGLSzbesplatna dostavazkostenloser versandzfree shippingzosobno preuzimanjePickupzsoldered electronics hqpickupdhl_eu)r   r%   r#   r'   r(    delivery_methodcountryrulesreturnc                 C   s   |du rt }| p	d  }|pd  }|D ]-}|dp d  }|rE||v rE|dd}|tkrA|tv r=d  S d  S |  S qdS )zReturn the canonical carrier display name (e.g. 'DPD', 'DHL', 'Paket24', 'Pickup').

    FREE_SHIPPING resolves to DPD for EU countries, DHL for others.
    Returns 'Other' if no rule matches.
    Nr+   r    r!   r%   r   Other)DEFAULT_RULESstriploweruppergetCARRIER_FREEEU_COUNTRIES)r,   r-   r.   mccrulekeywordr!    r<   @/var/www/warehouse.soldered.com/app/services/shipping_mapping.pyget_carrier(   s   r>   c                 C   s   t | ||}t|dS )zLLike get_carrier() but returns the internal key used by the order processor.other)r>   	_INTERNALr5   )r,   r-   r.   displayr<   r<   r=   get_internal_carrier>   s   rB   json_strc                 C   s>   | st S zt| }t|tr|W S W t S  ty   Y t S w )z>Parse rules from a JSON string; return DEFAULT_RULES on error.)r1   jsonloads
isinstancelist	Exception)rC   r.   r<   r<   r=   rules_from_jsonD   s   

rI   )r+   N)__doc__rD   r7   r6   r1   r@   strrG   r>   rB   rI   r<   r<   r<   r=   <module>   s0    	