S10 (estándar UPU)

De Wikipedia, la enciclopedia libre

La norma técnica u estándar S10 UPU (Unión Postal Univesal) define un sistema para asignar identificadores de 13 caracteres a objetos postales con el propósito de seguimiento y localización durante el envío.

Emisión y gestión de identificadores S10[editar]

Con el aumento en la liberalización y la posibilidad de múltiples servicios postales operando en el mismo país, el uso de códigos de país para designar el servicio postal es un problema. Para solucionar esto, cada país tiene un servicio postal designado que controla todos los identificadores S10 de aquel país; cualquier competidor por los servicios postales tendrá que cooperar con el dueño designado. La organización asignada por el país miembro de UPU dirigirá la creación y uso de identificadores S10, de entre todos los operadores bajo la autoridad de aquel país miembro de UPU, de tal manera que asegure que no ningún identificador S10 es reutilizado dentro de un periodo de 12 meses de calendario. La UPU recomienda un período de 24 meses calendario o más. [1]

Formato[editar]

Los identificadores constan de un código indicador del servicio de dos letras, un número de serie de ocho dígitos (en el rango de 00000000 a 99999999), un único dígito de control y un código de país ISO de dos letras que identifica a la administración postal del país emisor[1]

Formato S10 (S10 format)
1 2 3 4
AA 00000000 9 BB
  1. Código indicador del servicio (Service indicator code) (ver abajo)
  2. Número de serie (Serial number)
  3. Dígito de control (Check-digit) (ver abajo)
  4. Código de país ISO 3166-1 alpha-2 (Country code)

Código indicador del servicio (Service indicator code)[editar]

Código Interpretación[2]
AV-AZ Doméstico, bilateral, sólo para uso multilateral, identificando elementos con seguimiento RFIDde comercio electrónico
BA-BZ Para doméstico, bilateral, sólo para uso multilateral
CA-CZ Paquete de correo; el uso de CZ requiere acuerdo bilateral. No es obligatorio utilizar CV para paquetes asegurados pero si el indicador de servicio CV se usa, entonces se recomienda usarlo sólo para paquetes asegurados.
DA-DZ Para doméstico, bilateral, sólo para uso multilateral
EA-EZ EMS; el uso de EX@–EZ requiere acuerdo bilateral
GA Para doméstico, bilateral, sólo para uso multilateral
GD Para doméstico, bilateral, sólo para uso multilateral
HA-HZ Paquetes de comercio electrónico; el uso de HX–HY requiere acuerdo multilateral; el uso de HZ requiere acuerdo bilateral
JA-JZ Reservado; no puede ser asignado como valores de indicador de servicio válidos
KA-KZ Reservado; no puede ser asignado como valores de indicador de servicio válidos
LA-LZ Carta urgente de correo; el uso de LZ requiere acuerdo bilateral
MA-MZ Correo de letra: bolsas M
NA-NZ Para doméstico, bilateral, sólo para uso multilateral
PA-PZ Para doméstico, bilateral, sólo para uso multilateral
QA-QM Carta de correo: IBRS (Servicio de Respuesta Empresarial Internacional)
RA-RZ Carta de correo: certificada, pero sin entrega asegurada. El uso de RZ requiere acuerdo bilateral.
SA-SZ Reservado; no puede ser asignado como valores de indicador de servicio válidos
TA-TZ Reservado; no puede ser asignado como valores de indicador de servicio válidos
UA-UZ Carta de correo: otros elementos que no sean LA–LZ (urgente), MA–MZ (bolsas M), QA–QM (IBRS), RA–RZ (certificados), VA–VZ (asegurados), sujetos a control de aduanas, es decir, portando un CN 22 o CN 23
VA-VZ Carta de correo asegurada; el uso de VZ requiere acuerdo bilateral
WA-WZ Reservado; no puede ser asignado como valores de indicador de servicio válidos
ZA-ZZ Para doméstico, bilateral, sólo para uso multilateral

Cálculo del dígito de control (Check-digit calculation)[editar]

1) Ignore el código indicador de servicio y el código de país (ambos letras)

2) Asigne los pesos 8, 6, 4, 2, 3, 5, 9, 7 a los 8 dígitos, de izquierda a derecha

3) Calcular "S", que es la suma de cada dígito multiplicado por su peso.

Por ejemplo, para el número 47312482:

S = 48 + 76 + 34 + 12 + 23 + 45 + 89 + 27 = 200
4) Calcula el dígito de control, "C", según su definición:
C = 11 - (S mod 11)
Si C = 10, cambia a C = 0
Si C = 11, cambia a C = 5

Para el ejemplo:

47312482 C = 11 - (200 mod 11) = 11 - 2 = 9

Códigos para el cálculo en lenguaje de programación[editar]

Código Python para el cálculo del dígito de control[editar]

Para Python 3.6 o posterior:

def get_check_digit(num: int) -> int:
    """Get S10 check digit."""
    weights = [8, 6, 4, 2, 3, 5, 9, 7]
    sum = 0
    for i, digit in enumerate(f"{num:08}"):
        sum += weights[i] * int(digit)
    sum = 11 - (sum % 11)
    if sum == 10:
        sum = 0
    elif sum == 11:
        sum = 5
    return sum

Código JavaScript para el cálculo del dígito de control[editar]

function getCheckDigit(num) {
    const weights = [8, 6, 4, 2, 3, 5, 9, 7];
    const numArr = Array.from(String(num), Number);
    let sum = 0;
    numArr.forEach((n, i) => sum = sum + (n * weights[i]));
    sum = 11 - (sum % 11);
    if (sum == 10) sum = 0;
    else if (sum == 11) sum = 5;
    return sum;
}

Código Haskell para el cálculo del dígito de control[editar]

checkDigit :: [Int] -> Int
checkDigit ns
    | c == 11 = 5
    | c == 10 = 0
    | otherwise = c
    where weights = [8, 6, 4, 2, 3, 5, 9, 7]
          s = sum $ zipWith (*) weights ns
          c = 11 - (s `mod` 11)

Véase también[editar]

Referencias[editar]

  1. a b UPU, Standards Programme (17 de octubre de 2017). «S10 Identification of postal items – 13-character identifier» (PDF). Universal Postal Union: S10 Identification of postal items – 13-character identifier (2018). Consultado el 07.11.2023. 
  2. http://www.upu.int, Service Indicator Codes Archivado el 20 de abril de 2010 en Wayback Machine.

Enlaces externos[editar]