title: Filtrowanie punktów odbioru w SEIGI Delivery Manager
Dokumentacja funkcji sdm_filter_points()
Kluczowe pola danych
-
$datum['type']- Ustandaryzowany przez nas skrót typu punktu (np.
PARCEL_LOCKER,PICKUP,PICKUP_PARCEL). - Nie zawsze odzwierciedla pełen zestaw możliwości punktu, bo przewoźnicy mogą zmieniać swoje kategorie.
- Ustandaryzowany przez nas skrót typu punktu (np.
-
$datum['type_specific']- Oryginalny kod lub flaga przekazana przez przewoźnika (może być
null). - Jeśli jest
nulllub nieprecyzyjny, można próbować rozpoznać typ na podstawie nazwy ($datum['name']) lub innych pól.
- Oryginalny kod lub flaga przekazana przez przewoźnika (może być
Prosty przykład implementacji
function sdm_filter_points($mapData, $idCarrier, $object, $type, $bounds = null){
$allowed_types = ['PARCEL_LOCKER', 'PICKUP', 'PICKUP_PARCEL']; // All types allowed
// $allowed_types = ['PARCEL_LOCKER']; // Only Parcel Lockers allowed
// $allowed_types = ['PICKUP_PARCEL']; // Only Pickup Parcels allowed
// $allowed_types = ['PICKUP']; // Only Pickup Parcels allowed
if($bounds) {
foreach ($bounds as $index => $bound) {
$bound_key = $bound['lat'] . '-' . $bound['lon'];
foreach($mapData['data'][$bound_key] as $key => $datum){
// Instead of $datum['type'] you can also check $datum['type_specific']. This once is provided by Carrier company
if(!in_array($datum['type'], $allowed_types)){
unset($mapData['data'][$bound_key][$key]);
}
}
$mapData['data'][$bound_key] = array_values($mapData['data'][$bound_key]);
}
} else {
foreach($mapData['data'] as $key => $datum){
// Instead of $datum['type'] you can also check $datum['type_specific']. This once is provided by Carrier company
if(!in_array($datum['type'], $allowed_types)){
unset($mapData['data'][$key]);
}
}
}
return $mapData;
}
Uwagi
- Nie każda firma zwraca pełny
type_specific— w razie potrzeby typ można wywnioskować z polanamelub opisu.