"""Datos semilla de los catálogos de referencia del CRM.

SAT/ISO + estándar + Medidas de Equipos (tipo_equipo con dimensiones en extra)
+ catálogos del módulo Tarifario. Globales con tenant_id NULL.
"""

GLOBAL_CATALOGS = {'tipo_registro': {'label': 'Tipo de registro',
                   'is_system': True,
                   'items': [{'code': 'cliente', 'label': 'Cliente'}, {'code': 'prospecto', 'label': 'Prospecto'}]},
 'tipo_persona': {'label': 'Tipo de persona',
                  'is_system': True,
                  'items': [{'code': 'fisica', 'label': 'Persona física'},
                            {'code': 'moral', 'label': 'Persona moral'}]},
 'estatus': {'label': 'Estatus',
             'is_system': True,
             'items': [{'code': 'active', 'label': 'Activo'}, {'code': 'inactive', 'label': 'Inactivo'}]},
 'giro': {'label': 'Giro o industria',
          'is_system': False,
          'items': [{'code': 'importadora', 'label': 'Importadora'},
                    {'code': 'exportadora', 'label': 'Exportadora'},
                    {'code': 'manufactura', 'label': 'Manufactura'},
                    {'code': 'comercializadora', 'label': 'Comercializadora'},
                    {'code': 'logistica', 'label': 'Logística y transporte'},
                    {'code': 'agencia_aduanal', 'label': 'Agencia aduanal'},
                    {'code': 'maquiladora', 'label': 'Maquiladora / IMMEX'},
                    {'code': 'servicios', 'label': 'Servicios'},
                    {'code': 'otro', 'label': 'Otro'}]},
 'clasificacion_cliente': {'label': 'Clasificación del cliente',
                           'is_system': False,
                           'items': [{'code': 'importador', 'label': 'Importador'},
                                     {'code': 'exportador', 'label': 'Exportador'},
                                     {'code': 'importador_exportador', 'label': 'Importador/Exportador'}]},
 'medio_contacto': {'label': 'Medio de contacto preferido',
                    'is_system': False,
                    'items': [{'code': 'llamada', 'label': 'Llamada telefónica'},
                              {'code': 'correo', 'label': 'Correo electrónico'},
                              {'code': 'videoconferencia', 'label': 'Videoconferencia'},
                              {'code': 'whatsapp', 'label': 'WhatsApp'},
                              {'code': 'otro', 'label': 'Otro'}]},
 'idioma': {'label': 'Idioma',
            'is_system': False,
            'items': [{'code': 'es', 'label': 'Español'},
                      {'code': 'en', 'label': 'Inglés'},
                      {'code': 'zh', 'label': 'Chino (mandarín)'},
                      {'code': 'pt', 'label': 'Portugués'},
                      {'code': 'fr', 'label': 'Francés'},
                      {'code': 'de', 'label': 'Alemán'},
                      {'code': 'ja', 'label': 'Japonés'},
                      {'code': 'ko', 'label': 'Coreano'},
                      {'code': 'it', 'label': 'Italiano'},
                      {'code': 'otro', 'label': 'Otro'}]},
 'regimen_fiscal': {'label': 'Régimen fiscal',
                    'is_system': False,
                    'items': [{'code': 'fisica', 'label': 'Persona física'},
                              {'code': 'moral', 'label': 'Persona moral'}]},
 'uso_cfdi': {'label': 'Uso de CFDI (SAT)',
              'is_system': True,
              'items': [{'code': 'G01', 'label': 'Adquisición de mercancías'},
                        {'code': 'G02', 'label': 'Devoluciones, descuentos o bonificaciones'},
                        {'code': 'G03', 'label': 'Gastos en general'},
                        {'code': 'I01', 'label': 'Construcciones'},
                        {'code': 'I02', 'label': 'Mobiliario y equipo de oficina por inversiones'},
                        {'code': 'I03', 'label': 'Equipo de transporte'},
                        {'code': 'I04', 'label': 'Equipo de cómputo y accesorios'},
                        {'code': 'I05', 'label': 'Dados, troqueles, moldes, matrices y herramental'},
                        {'code': 'I06', 'label': 'Comunicaciones telefónicas'},
                        {'code': 'I07', 'label': 'Comunicaciones satelitales'},
                        {'code': 'I08', 'label': 'Otra maquinaria y equipo'},
                        {'code': 'D01', 'label': 'Honorarios médicos, dentales y gastos hospitalarios'},
                        {'code': 'D02', 'label': 'Gastos médicos por incapacidad o discapacidad'},
                        {'code': 'D03', 'label': 'Gastos funerales'},
                        {'code': 'D04', 'label': 'Donativos'},
                        {'code': 'D05', 'label': 'Intereses por créditos hipotecarios'},
                        {'code': 'D06', 'label': 'Aportaciones voluntarias al SAR'},
                        {'code': 'D07', 'label': 'Primas por seguros de gastos médicos'},
                        {'code': 'D08', 'label': 'Gastos de transportación escolar obligatoria'},
                        {'code': 'D09', 'label': 'Depósitos en cuentas para el ahorro'},
                        {'code': 'D10', 'label': 'Pagos por servicios educativos (colegiaturas)'},
                        {'code': 'S01', 'label': 'Sin efectos fiscales'},
                        {'code': 'CP01', 'label': 'Pagos'},
                        {'code': 'CN01', 'label': 'Nómina'},
                        {'code': 'P01', 'label': 'Por definir'}]},
 'forma_pago': {'label': 'Forma de pago (SAT)',
                'is_system': True,
                'items': [{'code': '1', 'label': 'Efectivo'},
                          {'code': '2', 'label': 'Cheque nominativo'},
                          {'code': '3', 'label': 'Transferencia electrónica de fondos'},
                          {'code': '4', 'label': 'Tarjeta de crédito'},
                          {'code': '5', 'label': 'Monedero electrónico'},
                          {'code': '6', 'label': 'Dinero electrónico'},
                          {'code': '8', 'label': 'Vales de despensa'},
                          {'code': '12', 'label': 'Dación en pago'},
                          {'code': '13', 'label': 'Pago por subrogación'},
                          {'code': '14', 'label': 'Pago por consignación'},
                          {'code': '15', 'label': 'Condonación'},
                          {'code': '17', 'label': 'Compensación'},
                          {'code': '23', 'label': 'Novación'},
                          {'code': '24', 'label': 'Confusión'},
                          {'code': '25', 'label': 'Remisión de deuda'},
                          {'code': '26', 'label': 'Prescripción o caducidad'},
                          {'code': '27', 'label': 'A satisfacción del acreedor'},
                          {'code': '28', 'label': 'Tarjeta de débito'},
                          {'code': '29', 'label': 'Tarjeta de servicios'},
                          {'code': '30', 'label': 'Aplicación de anticipos'},
                          {'code': '31', 'label': 'Intermediario pagos'},
                          {'code': '99', 'label': 'Por definir'}]},
 'metodo_pago': {'label': 'Método de pago (SAT)',
                 'is_system': True,
                 'items': [{'code': 'PPD', 'label': 'Pago en parcialidades o diferido'},
                           {'code': 'PUE', 'label': 'Pago en una sola exhibición'}]},
 'moneda': {'label': 'Moneda (ISO 4217)',
            'is_system': True,
            'items': [{'code': 'CRC', 'label': 'Colón costarricense'},
                      {'code': 'CUC', 'label': 'Peso Convertible'},
                      {'code': 'CUP', 'label': 'Peso Cubano'},
                      {'code': 'CVE', 'label': 'Cabo Verde Escudo'},
                      {'code': 'CZK', 'label': 'Corona checa'},
                      {'code': 'DJF', 'label': 'Franco de Djibouti'},
                      {'code': 'DKK', 'label': 'Corona danesa'},
                      {'code': 'DOP', 'label': 'Peso Dominicano'},
                      {'code': 'DZD', 'label': 'Dinar argelino'},
                      {'code': 'EGP', 'label': 'Libra egipcia'},
                      {'code': 'ERN', 'label': 'Nakfa'},
                      {'code': 'ETB', 'label': 'Birr etíope'},
                      {'code': 'EUR', 'label': 'Euro'},
                      {'code': 'FJD', 'label': 'Dólar de Fiji'},
                      {'code': 'FKP', 'label': 'Libra malvinense'},
                      {'code': 'GBP', 'label': 'Libra Esterlina'},
                      {'code': 'GEL', 'label': 'Lari'},
                      {'code': 'GHS', 'label': 'Cedi de Ghana'},
                      {'code': 'GIP', 'label': 'Libra de Gibraltar'},
                      {'code': 'GMD', 'label': 'Dalasi'},
                      {'code': 'GNF', 'label': 'Franco guineano'},
                      {'code': 'GTQ', 'label': 'Quetzal'},
                      {'code': 'GYD', 'label': 'Dólar guyanés'},
                      {'code': 'HKD', 'label': 'Dolar De Hong Kong'},
                      {'code': 'HNL', 'label': 'Lempira'},
                      {'code': 'HRK', 'label': 'Kuna'},
                      {'code': 'HTG', 'label': 'Gourde'},
                      {'code': 'HUF', 'label': 'Florín'},
                      {'code': 'IDR', 'label': 'Rupia'},
                      {'code': 'ILS', 'label': 'Nuevo Shekel Israelí'},
                      {'code': 'INR', 'label': 'Rupia india'},
                      {'code': 'IQD', 'label': 'Dinar iraquí'},
                      {'code': 'IRR', 'label': 'Rial iraní'},
                      {'code': 'ISK', 'label': 'Corona islandesa'},
                      {'code': 'JMD', 'label': 'Dólar Jamaiquino'},
                      {'code': 'JOD', 'label': 'Dinar jordano'},
                      {'code': 'JPY', 'label': 'Yen'},
                      {'code': 'KES', 'label': 'Chelín keniano'},
                      {'code': 'KGS', 'label': 'Som'},
                      {'code': 'KHR', 'label': 'Riel'},
                      {'code': 'KMF', 'label': 'Franco Comoro'},
                      {'code': 'KPW', 'label': 'Corea del Norte ganó'},
                      {'code': 'KRW', 'label': 'Won'},
                      {'code': 'KWD', 'label': 'Dinar kuwaití'},
                      {'code': 'KYD', 'label': 'Dólar de las Islas Caimán'},
                      {'code': 'KZT', 'label': 'Tenge'},
                      {'code': 'LAK', 'label': 'Kip'},
                      {'code': 'LBP', 'label': 'Libra libanesa'},
                      {'code': 'LKR', 'label': 'Rupia de Sri Lanka'},
                      {'code': 'LRD', 'label': 'Dólar liberiano'},
                      {'code': 'LSL', 'label': 'Loti'},
                      {'code': 'LYD', 'label': 'Dinar libio'},
                      {'code': 'MAD', 'label': 'Dirham marroquí'},
                      {'code': 'MDL', 'label': 'Leu moldavo'},
                      {'code': 'MGA', 'label': 'Ariary malgache'},
                      {'code': 'MKD', 'label': 'Denar'},
                      {'code': 'MMK', 'label': 'Kyat'},
                      {'code': 'MNT', 'label': 'Tugrik'},
                      {'code': 'MOP', 'label': 'Pataca'},
                      {'code': 'MRO', 'label': 'Ouguiya'},
                      {'code': 'MUR', 'label': 'Rupia de Mauricio'},
                      {'code': 'MVR', 'label': 'Rupia'},
                      {'code': 'MWK', 'label': 'Kwacha'},
                      {'code': 'MXN', 'label': 'Peso Mexicano'},
                      {'code': 'MXV', 'label': 'México Unidad de Inversión (UDI)'},
                      {'code': 'MYR', 'label': 'Ringgit malayo'},
                      {'code': 'MZN', 'label': 'Mozambique Metical'},
                      {'code': 'NAD', 'label': 'Dólar de Namibia'},
                      {'code': 'NGN', 'label': 'Naira'},
                      {'code': 'NIO', 'label': 'Córdoba Oro'},
                      {'code': 'NOK', 'label': 'Corona noruega'},
                      {'code': 'NPR', 'label': 'Rupia nepalí'},
                      {'code': 'NZD', 'label': 'Dólar de Nueva Zelanda'},
                      {'code': 'OMR', 'label': 'Rial omaní'},
                      {'code': 'PAB', 'label': 'Balboa'},
                      {'code': 'PEN', 'label': 'Nuevo Sol'},
                      {'code': 'PGK', 'label': 'Kina'},
                      {'code': 'PHP', 'label': 'Peso filipino'},
                      {'code': 'PKR', 'label': 'Rupia de Pakistán'},
                      {'code': 'PLN', 'label': 'Zloty'},
                      {'code': 'PYG', 'label': 'Guaraní'},
                      {'code': 'QAR', 'label': 'Qatar Rial'},
                      {'code': 'RON', 'label': 'Leu rumano'},
                      {'code': 'RSD', 'label': 'Dinar serbio'},
                      {'code': 'RUB', 'label': 'Rublo ruso'},
                      {'code': 'RWF', 'label': 'Franco ruandés'},
                      {'code': 'SAR', 'label': 'Riyal saudí'},
                      {'code': 'SBD', 'label': 'Dólar de las Islas Salomón'},
                      {'code': 'SCR', 'label': 'Rupia de Seychelles'},
                      {'code': 'SDG', 'label': 'Libra sudanesa'},
                      {'code': 'SEK', 'label': 'Corona sueca'},
                      {'code': 'SGD', 'label': 'Dolar De Singapur'},
                      {'code': 'SHP', 'label': 'Libra de Santa Helena'},
                      {'code': 'SLL', 'label': 'Leona'},
                      {'code': 'SOS', 'label': 'Chelín somalí'},
                      {'code': 'SRD', 'label': 'Dólar de Suriname'},
                      {'code': 'SSP', 'label': 'Libra sudanesa Sur'},
                      {'code': 'STD', 'label': 'Dobra'},
                      {'code': 'SVC', 'label': 'Colon El Salvador'},
                      {'code': 'SYP', 'label': 'Libra Siria'},
                      {'code': 'SZL', 'label': 'Lilangeni'},
                      {'code': 'THB', 'label': 'Baht'},
                      {'code': 'TJS', 'label': 'Somoni'},
                      {'code': 'TMT', 'label': 'Turkmenistán nuevo manat'},
                      {'code': 'TND', 'label': 'Dinar tunecino'},
                      {'code': 'TOP', 'label': "Pa'anga"},
                      {'code': 'TRY', 'label': 'Lira turca'},
                      {'code': 'TTD', 'label': 'Dólar de Trinidad y Tobago'},
                      {'code': 'TWD', 'label': 'Nuevo dólar de Taiwán'},
                      {'code': 'TZS', 'label': 'Shilling tanzano'},
                      {'code': 'UAH', 'label': 'Hryvnia'},
                      {'code': 'UGX', 'label': 'Shilling de Uganda'},
                      {'code': 'USD', 'label': 'Dolar americano'},
                      {'code': 'USN', 'label': 'Dólar estadounidense (día siguiente)'},
                      {'code': 'UYI', 'label': 'Peso Uruguay en Unidades Indexadas (URUIURUI)'},
                      {'code': 'UYU', 'label': 'Peso Uruguayo'},
                      {'code': 'UZS', 'label': 'Uzbekistán Sum'},
                      {'code': 'VEF', 'label': 'Bolívar'},
                      {'code': 'VND', 'label': 'Dong'},
                      {'code': 'VUV', 'label': 'Vatu'},
                      {'code': 'WST', 'label': 'Tala'},
                      {'code': 'XAF', 'label': 'Franco CFA BEAC'},
                      {'code': 'XAG', 'label': 'Plata'},
                      {'code': 'XAU', 'label': 'Oro'},
                      {'code': 'XBA', 'label': 'Unidad de Mercados de Bonos Unidad Europea Composite (EURCO)'},
                      {'code': 'XBB', 'label': 'Unidad Monetaria de Bonos de Mercados Unidad Europea (UEM-6)'},
                      {'code': 'XBC', 'label': 'Mercados de Bonos Unidad Europea unidad de cuenta a 9 (UCE-9)'},
                      {'code': 'XBD', 'label': 'Mercados de Bonos Unidad Europea unidad de cuenta a 17 (UCE-17)'},
                      {'code': 'XCD', 'label': 'Dólar del Caribe Oriental'},
                      {'code': 'XDR', 'label': 'DEG (Derechos Especiales de Giro)'},
                      {'code': 'XOF', 'label': 'Franco CFA BCEAO'},
                      {'code': 'XPD', 'label': 'Paladio'},
                      {'code': 'XPF', 'label': 'Franco CFP'},
                      {'code': 'XPT', 'label': 'Platino'},
                      {'code': 'XSU', 'label': 'Sucre'},
                      {'code': 'XTS', 'label': 'Códigos reservados específicamente para propósitos de prueba'},
                      {'code': 'XUA', 'label': 'Unidad ADB de Cuenta'},
                      {'code': 'XXX',
                       'label': 'Los códigos asignados para las transacciones en que intervenga ninguna moneda'},
                      {'code': 'YER', 'label': 'Rial yemení'},
                      {'code': 'ZAR', 'label': 'Rand'},
                      {'code': 'ZMW', 'label': 'Kwacha zambiano'},
                      {'code': 'ZWL', 'label': 'Zimbabwe Dólar'},
                      {'code': 'NULL', 'label': 'NULL'}]},
 'pais': {'label': 'País (ISO 3166)',
          'is_system': True,
          'items': [{'code': 'ABW', 'label': 'Aruba'},
                    {'code': 'AFG', 'label': 'Afganistán'},
                    {'code': 'AGO', 'label': 'Angola'},
                    {'code': 'AIA', 'label': 'Anguila'},
                    {'code': 'ALA', 'label': 'Islas Åland'},
                    {'code': 'ALB', 'label': 'Albania'},
                    {'code': 'AND', 'label': 'Andorra'},
                    {'code': 'ARE', 'label': 'Emiratos Árabes Unidos (Los)'},
                    {'code': 'ARG', 'label': 'Argentina'},
                    {'code': 'ARM', 'label': 'Armenia'},
                    {'code': 'ASM', 'label': 'Samoa Americana'},
                    {'code': 'ATA', 'label': 'Antártida'},
                    {'code': 'ATF', 'label': 'Territorios Australes Franceses (los)'},
                    {'code': 'ATG', 'label': 'Antigua y Barbuda'},
                    {'code': 'AUS', 'label': 'Australia'},
                    {'code': 'AUT', 'label': 'Austria'},
                    {'code': 'AZE', 'label': 'Azerbaiyán'},
                    {'code': 'BDI', 'label': 'Burundi'},
                    {'code': 'BEL', 'label': 'Bélgica'},
                    {'code': 'BEN', 'label': 'Benín'},
                    {'code': 'BES', 'label': 'Bonaire, San Eustaquio y Saba'},
                    {'code': 'BFA', 'label': 'Burkina Faso'},
                    {'code': 'BGD', 'label': 'Bangladés'},
                    {'code': 'BGR', 'label': 'Bulgaria'},
                    {'code': 'BHR', 'label': 'Baréin'},
                    {'code': 'BHS', 'label': 'Bahamas (las)'},
                    {'code': 'BIH', 'label': 'Bosnia y Herzegovina'},
                    {'code': 'BLM', 'label': 'San Bartolomé'},
                    {'code': 'BLR', 'label': 'Bielorrusia'},
                    {'code': 'BLZ', 'label': 'Belice'},
                    {'code': 'BMU', 'label': 'Bermudas'},
                    {'code': 'BOL', 'label': 'Bolivia, Estado Plurinacional de'},
                    {'code': 'BRA', 'label': 'Brasil'},
                    {'code': 'BRB', 'label': 'Barbados'},
                    {'code': 'BRN', 'label': 'Brunéi Darussalam'},
                    {'code': 'BTN', 'label': 'Bután'},
                    {'code': 'BVT', 'label': 'Isla Bouvet'},
                    {'code': 'BWA', 'label': 'Botsuana'},
                    {'code': 'CAF', 'label': 'República Centroafricana (la)'},
                    {'code': 'CAN', 'label': 'Canadá'},
                    {'code': 'CCK', 'label': 'Islas Cocos (Keeling)'},
                    {'code': 'CHE', 'label': 'Suiza'},
                    {'code': 'CHL', 'label': 'Chile'},
                    {'code': 'CHN', 'label': 'China'},
                    {'code': 'CIV', 'label': "Côte d'Ivoire"},
                    {'code': 'CMR', 'label': 'Camerún'},
                    {'code': 'COD', 'label': 'Congo (la República Democrática del)'},
                    {'code': 'COG', 'label': 'Congo'},
                    {'code': 'COK', 'label': 'Islas Cook (las)'},
                    {'code': 'COL', 'label': 'Colombia'},
                    {'code': 'COM', 'label': 'Comoras'},
                    {'code': 'CPV', 'label': 'Cabo Verde'},
                    {'code': 'CRI', 'label': 'Costa Rica'},
                    {'code': 'CUB', 'label': 'Cuba'},
                    {'code': 'CUW', 'label': 'Curaçao'},
                    {'code': 'CXR', 'label': 'Isla de Navidad'},
                    {'code': 'CYM', 'label': 'Islas Caimán (las)'},
                    {'code': 'CYP', 'label': 'Chipre'},
                    {'code': 'CZE', 'label': 'República Checa (la)'},
                    {'code': 'DEU', 'label': 'Alemania'},
                    {'code': 'DJI', 'label': 'Yibuti'},
                    {'code': 'DMA', 'label': 'Dominica'},
                    {'code': 'DNK', 'label': 'Dinamarca'},
                    {'code': 'DOM', 'label': 'República Dominicana (la)'},
                    {'code': 'DZA', 'label': 'Argelia'},
                    {'code': 'ECU', 'label': 'Ecuador'},
                    {'code': 'EGY', 'label': 'Egipto'},
                    {'code': 'ERI', 'label': 'Eritrea'},
                    {'code': 'ESH', 'label': 'Sahara Occidental'},
                    {'code': 'ESP', 'label': 'España'},
                    {'code': 'EST', 'label': 'Estonia'},
                    {'code': 'ETH', 'label': 'Etiopía'},
                    {'code': 'FIN', 'label': 'Finlandia'},
                    {'code': 'FJI', 'label': 'Fiyi'},
                    {'code': 'FLK', 'label': 'Islas Malvinas [Falkland] (las)'},
                    {'code': 'FRA', 'label': 'Francia'},
                    {'code': 'FRO', 'label': 'Islas Feroe (las)'},
                    {'code': 'FSM', 'label': 'Micronesia (los Estados Federados de)'},
                    {'code': 'GAB', 'label': 'Gabón'},
                    {'code': 'GBR', 'label': 'Reino Unido (el)'},
                    {'code': 'GEO', 'label': 'Georgia'},
                    {'code': 'GGY', 'label': 'Guernsey'},
                    {'code': 'GHA', 'label': 'Ghana'},
                    {'code': 'GIB', 'label': 'Gibraltar'},
                    {'code': 'GIN', 'label': 'Guinea'},
                    {'code': 'GLP', 'label': 'Guadalupe'},
                    {'code': 'GMB', 'label': 'Gambia (La)'},
                    {'code': 'GNB', 'label': 'Guinea-Bisáu'},
                    {'code': 'GNQ', 'label': 'Guinea Ecuatorial'},
                    {'code': 'GRC', 'label': 'Grecia'},
                    {'code': 'GRD', 'label': 'Granada'},
                    {'code': 'GRL', 'label': 'Groenlandia'},
                    {'code': 'GTM', 'label': 'Guatemala'},
                    {'code': 'GUF', 'label': 'Guayana Francesa'},
                    {'code': 'GUM', 'label': 'Guam'},
                    {'code': 'GUY', 'label': 'Guyana'},
                    {'code': 'HKG', 'label': 'Hong Kong'},
                    {'code': 'HMD', 'label': 'Isla Heard e Islas McDonald'},
                    {'code': 'HND', 'label': 'Honduras'},
                    {'code': 'HRV', 'label': 'Croacia'},
                    {'code': 'HTI', 'label': 'Haití'},
                    {'code': 'HUN', 'label': 'Hungría'},
                    {'code': 'IDN', 'label': 'Indonesia'},
                    {'code': 'IMN', 'label': 'Isla de Man'},
                    {'code': 'IND', 'label': 'India'},
                    {'code': 'IOT', 'label': 'Territorio Británico del Océano Índico (el)'},
                    {'code': 'IRL', 'label': 'Irlanda'},
                    {'code': 'IRN', 'label': 'Irán (la República Islámica de)'},
                    {'code': 'IRQ', 'label': 'Irak'},
                    {'code': 'ISL', 'label': 'Islandia'},
                    {'code': 'ISR', 'label': 'Israel'},
                    {'code': 'ITA', 'label': 'Italia'},
                    {'code': 'JAM', 'label': 'Jamaica'},
                    {'code': 'JEY', 'label': 'Jersey'},
                    {'code': 'JOR', 'label': 'Jordania'},
                    {'code': 'JPN', 'label': 'Japón'},
                    {'code': 'KAZ', 'label': 'Kazajistán'},
                    {'code': 'KEN', 'label': 'Kenia'},
                    {'code': 'KGZ', 'label': 'Kirguistán'},
                    {'code': 'KHM', 'label': 'Camboya'},
                    {'code': 'KIR', 'label': 'Kiribati'},
                    {'code': 'KNA', 'label': 'San Cristóbal y Nieves'},
                    {'code': 'KOR', 'label': 'Corea (la República de)'},
                    {'code': 'KWT', 'label': 'Kuwait'},
                    {'code': 'LAO', 'label': 'Lao, (la) República Democrática Popular'},
                    {'code': 'LBN', 'label': 'Líbano'},
                    {'code': 'LBR', 'label': 'Liberia'},
                    {'code': 'LBY', 'label': 'Libia'},
                    {'code': 'LCA', 'label': 'Santa Lucía'},
                    {'code': 'LIE', 'label': 'Liechtenstein'},
                    {'code': 'LKA', 'label': 'Sri Lanka'},
                    {'code': 'LSO', 'label': 'Lesoto'},
                    {'code': 'LTU', 'label': 'Lituania'},
                    {'code': 'LUX', 'label': 'Luxemburgo'},
                    {'code': 'LVA', 'label': 'Letonia'},
                    {'code': 'MAC', 'label': 'Macao'},
                    {'code': 'MAF', 'label': 'San Martín (parte francesa)'},
                    {'code': 'MAR', 'label': 'Marruecos'},
                    {'code': 'MCO', 'label': 'Mónaco'},
                    {'code': 'MDA', 'label': 'Moldavia (la República de)'},
                    {'code': 'MDG', 'label': 'Madagascar'},
                    {'code': 'MDV', 'label': 'Maldivas'},
                    {'code': 'MEX', 'label': 'México'},
                    {'code': 'MHL', 'label': 'Islas Marshall (las)'},
                    {'code': 'MKD', 'label': 'Macedonia (la antigua República Yugoslava de)'},
                    {'code': 'MLI', 'label': 'Malí'},
                    {'code': 'MLT', 'label': 'Malta'},
                    {'code': 'MMR', 'label': 'Myanmar'},
                    {'code': 'MNE', 'label': 'Montenegro'},
                    {'code': 'MNG', 'label': 'Mongolia'},
                    {'code': 'MNP', 'label': 'Islas Marianas del Norte (las)'},
                    {'code': 'MOZ', 'label': 'Mozambique'},
                    {'code': 'MRT', 'label': 'Mauritania'},
                    {'code': 'MSR', 'label': 'Montserrat'},
                    {'code': 'MTQ', 'label': 'Martinica'},
                    {'code': 'MUS', 'label': 'Mauricio'},
                    {'code': 'MWI', 'label': 'Malaui'},
                    {'code': 'MYS', 'label': 'Malasia'},
                    {'code': 'MYT', 'label': 'Mayotte'},
                    {'code': 'NAM', 'label': 'Namibia'},
                    {'code': 'NCL', 'label': 'Nueva Caledonia'},
                    {'code': 'NER', 'label': 'Níger (el)'},
                    {'code': 'NFK', 'label': 'Isla Norfolk'},
                    {'code': 'NGA', 'label': 'Nigeria'},
                    {'code': 'NIC', 'label': 'Nicaragua'},
                    {'code': 'NIU', 'label': 'Niue'},
                    {'code': 'NLD', 'label': 'Países Bajos (los)'},
                    {'code': 'NOR', 'label': 'Noruega'},
                    {'code': 'NPL', 'label': 'Nepal'},
                    {'code': 'NRU', 'label': 'Nauru'},
                    {'code': 'NZL', 'label': 'Nueva Zelanda'},
                    {'code': 'OMN', 'label': 'Omán'},
                    {'code': 'PAK', 'label': 'Pakistán'},
                    {'code': 'PAN', 'label': 'Panamá'},
                    {'code': 'PCN', 'label': 'Pitcairn'},
                    {'code': 'PER', 'label': 'Perú'},
                    {'code': 'PHL', 'label': 'Filipinas (las)'},
                    {'code': 'PLW', 'label': 'Palaos'},
                    {'code': 'PNG', 'label': 'Papúa Nueva Guinea'},
                    {'code': 'POL', 'label': 'Polonia'},
                    {'code': 'PRI', 'label': 'Puerto Rico'},
                    {'code': 'PRK', 'label': 'Corea (la República Democrática Popular de)'},
                    {'code': 'PRT', 'label': 'Portugal'},
                    {'code': 'PRY', 'label': 'Paraguay'},
                    {'code': 'PSE', 'label': 'Palestina, Estado de'},
                    {'code': 'PYF', 'label': 'Polinesia Francesa'},
                    {'code': 'QAT', 'label': 'Catar'},
                    {'code': 'REU', 'label': 'Reunión'},
                    {'code': 'ROU', 'label': 'Rumania'},
                    {'code': 'RUS', 'label': 'Rusia, (la) Federación de'},
                    {'code': 'RWA', 'label': 'Ruanda'},
                    {'code': 'SAU', 'label': 'Arabia Saudita'},
                    {'code': 'SDN', 'label': 'Sudán (el)'},
                    {'code': 'SEN', 'label': 'Senegal'},
                    {'code': 'SGP', 'label': 'Singapur'},
                    {'code': 'SGS', 'label': 'Georgia del sur y las islas sandwich del sur'},
                    {'code': 'SHN', 'label': 'Santa Helena, Ascensión y Tristán de Acuña'},
                    {'code': 'SJM', 'label': 'Svalbard y Jan Mayen'},
                    {'code': 'SLB', 'label': 'Islas Salomón (las)'},
                    {'code': 'SLE', 'label': 'Sierra leona'},
                    {'code': 'NULL', 'label': 'NULL'}]},
 'estado': {'label': 'Estado / Provincia',
            'is_system': True,
            'items': [{'code': 'AGU', 'label': 'Aguascalientes', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'BCN', 'label': 'Baja California', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'BCS', 'label': 'Baja California Sur', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'CAM', 'label': 'Campeche', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'CHP', 'label': 'Chiapas', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'CHH', 'label': 'Chihuahua', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'CMX', 'label': 'Ciudad de México', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'COA', 'label': 'Coahuila', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'COL', 'label': 'Colima', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'DUR', 'label': 'Durango', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'GUA', 'label': 'Guanajuato', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'GRO', 'label': 'Guerrero', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'HID', 'label': 'Hidalgo', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'JAL', 'label': 'Jalisco', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'MEX', 'label': 'Estado de México', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'MIC', 'label': 'Michoacán', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'MOR', 'label': 'Morelos', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'NAY', 'label': 'Nayarit', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'NLE', 'label': 'Nuevo León', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'OAX', 'label': 'Oaxaca', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'PUE', 'label': 'Puebla', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'QUE', 'label': 'Querétaro', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'ROO', 'label': 'Quintana Roo', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'SLP', 'label': 'San Luis Potosí', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'SIN', 'label': 'Sinaloa', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'SON', 'label': 'Sonora', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'TAB', 'label': 'Tabasco', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'TAM', 'label': 'Tamaulipas', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'TLA', 'label': 'Tlaxcala', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'VER', 'label': 'Veracruz', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'YUC', 'label': 'Yucatán', 'parent_catalog': 'pais', 'parent_code': 'MEX'},
                      {'code': 'ZAC', 'label': 'Zacatecas', 'parent_catalog': 'pais', 'parent_code': 'MEX'}]},
 'tipo_domicilio': {'label': 'Tipo de domicilio',
                    'is_system': False,
                    'items': [{'code': 'fiscal', 'label': 'Fiscal'},
                              {'code': 'oficina', 'label': 'Oficina'},
                              {'code': 'sucursal', 'label': 'Sucursal'},
                              {'code': 'bodega', 'label': 'Bodega'},
                              {'code': 'patio', 'label': 'Patio'},
                              {'code': 'terminal', 'label': 'Terminal'},
                              {'code': 'almacen', 'label': 'Almacén'}]},
 'area': {'label': 'Área / Departamento',
          'is_system': False,
          'items': [{'code': 'ventas', 'label': 'Ventas'},
                    {'code': 'operaciones', 'label': 'Operaciones'},
                    {'code': 'facturacion', 'label': 'Facturación'},
                    {'code': 'cobranza', 'label': 'Cobranza'},
                    {'code': 'servicio_cliente', 'label': 'Servicio al cliente'}]},
 'cobertura': {'label': 'Cobertura',
               'is_system': True,
               'items': [{'code': 'nacional', 'label': 'Nacional'},
                         {'code': 'internacional', 'label': 'Internacional'}]},
 'clasificacion_proveedor': {'label': 'Clasificación del proveedor',
                             'is_system': False,
                             'items': [{'code': 'naviera', 'label': 'Naviera'},
                                       {'code': 'aerolinea', 'label': 'Aerolínea'},
                                       {'code': 'transportista_terrestre', 'label': 'Transportista Terrestre'},
                                       {'code': 'ferrocarril', 'label': 'Ferrocarril'},
                                       {'code': 'agente_aduanal', 'label': 'Agente Aduanal'},
                                       {'code': 'agente_carga', 'label': 'Agente de Carga'},
                                       {'code': 'agente_corresponsal', 'label': 'Agente Corresponsal'},
                                       {'code': 'almacen', 'label': 'Almacén'},
                                       {'code': 'aseguradora', 'label': 'Aseguradora'},
                                       {'code': 'paqueteria', 'label': 'Paquetería'},
                                       {'code': 'otro', 'label': 'Otro'}]},
 'tipo_equipo': {'label': 'Tipo de equipo / contenedor',
                 'is_system': True,
                 'items': [{'code': '40DC',
                            'label': "40' Standard",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 12.035,
                                      'ancho_m': 2.35,
                                      'alto_m': 2.392,
                                      'capacidad_m3': 67.7,
                                      'tara_kg': 3700,
                                      'carga_max_kg': 26790}},
                           {'code': '20DC',
                            'label': "20' Standard",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 5.9,
                                      'ancho_m': 2.35,
                                      'alto_m': 2.392,
                                      'capacidad_m3': 33.2,
                                      'tara_kg': 2230,
                                      'carga_max_kg': 21770}},
                           {'code': '20OT',
                            'label': "20' Open Top",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 5.894,
                                      'ancho_m': 2.311,
                                      'alto_m': 2.354,
                                      'capacidad_m3': 32.23,
                                      'tara_kg': 2400,
                                      'carga_max_kg': 30490}},
                           {'code': '20FR',
                            'label': "20' Flat Rack",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 5.62,
                                      'ancho_m': 2.23,
                                      'alto_m': 2.233,
                                      'tara_kg': 2530,
                                      'carga_max_kg': 21470}},
                           {'code': '40HC',
                            'label': "40' High Cube",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 12.036,
                                      'ancho_m': 2.35,
                                      'alto_m': 2.697,
                                      'capacidad_m3': 76.3,
                                      'tara_kg': 3970,
                                      'carga_max_kg': 26510}},
                           {'code': '20PL',
                            'label': "20' Platform",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 6.058,
                                      'ancho_m': 2.438,
                                      'alto_m': 0.37,
                                      'tara_kg': 2520,
                                      'carga_max_kg': 27960}},
                           {'code': '20FRC',
                            'label': "20' Flat Rack Collapsible",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 5.618,
                                      'ancho_m': 2.206,
                                      'alto_m': 2.233,
                                      'tara_kg': 2750,
                                      'carga_max_kg': 27730}},
                           {'code': '20BK',
                            'label': "20' Bulk",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 5.93,
                                      'ancho_m': 2.35,
                                      'alto_m': 2.34,
                                      'capacidad_m3': 32.0,
                                      'tara_kg': 2450,
                                      'carga_max_kg': 21350}},
                           {'code': '20TK',
                            'label': "20' Tank",
                            'extra': {'modo': 'maritimo',
                                      'largo_m': 6.058,
                                      'ancho_m': 2.438,
                                      'alto_m': 2.438,
                                      'tara_kg': 4100,
                                      'carga_max_kg': 26200}},
                           {'code': 'LD2',
                            'label': 'LD2',
                            'extra': {'modo': 'aereo',
                                      'capacidad_m3': 3.5,
                                      'tara_kg': 30,
                                      'carga_max_kg': 1225,
                                      'nota': 'Aviones 767'}},
                           {'code': 'LD3',
                            'label': 'LD3',
                            'extra': {'modo': 'aereo',
                                      'capacidad_m3': 4.2,
                                      'tara_kg': 80,
                                      'carga_max_kg': 1587,
                                      'nota': 'B747/B777/DC10/MD-11/A310/A330/A340'}},
                           {'code': 'LBD',
                            'label': 'LBD (Flex Door)',
                            'extra': {'modo': 'aereo',
                                      'capacidad_m3': 7.0,
                                      'tara_kg': 123,
                                      'carga_max_kg': 2449,
                                      'nota': 'Aviones 767'}},
                           {'code': 'LD6',
                            'label': 'LD6',
                            'extra': {'modo': 'aereo',
                                      'capacidad_m3': 8.9,
                                      'tara_kg': 175,
                                      'carga_max_kg': 3175,
                                      'nota': 'B747/B777/DC10/MD-11/A310/A330/A340'}},
                           {'code': 'PAG',
                            'label': 'PAP / PIP / PAG',
                            'extra': {'modo': 'aereo',
                                      'capacidad_m3': 10.0,
                                      'tara_kg': 120,
                                      'carga_max_kg': 6033,
                                      'nota': 'Boeing 747/767/777/DC10'}},
                           {'code': 'LD9',
                            'label': 'LD9 AAP',
                            'extra': {'modo': 'aereo',
                                      'capacidad_m3': 10.0,
                                      'tara_kg': 85,
                                      'carga_max_kg': 1588,
                                      'nota': 'Boeing 747/777/DC10'}},
                           {'code': 'XAW',
                            'label': 'XAW',
                            'extra': {'modo': 'aereo',
                                      'capacidad_m3': 14.0,
                                      'tara_kg': 170,
                                      'carga_max_kg': 5000,
                                      'nota': 'Boeing 747/777/DC10'}},
                           {'code': 'PMC',
                            'label': 'PMC',
                            'extra': {'modo': 'aereo',
                                      'capacidad_m3': 12.7,
                                      'tara_kg': 130,
                                      'carga_max_kg': 6804,
                                      'nota': 'Boeing 747/767/777'}},
                           {'code': 'LD8',
                            'label': 'LD8',
                            'extra': {'modo': 'aereo', 'capacidad_m3': 7.2, 'tara_kg': 120, 'carga_max_kg': 2450}},
                           {'code': 'DV48',
                            'label': "Dry Van 48'",
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 14.63,
                                      'ancho_m': 2.59,
                                      'alto_m': 2.3,
                                      'capacidad_m3': 98.0,
                                      'carga_max_kg': 20412,
                                      'pallets': 22}},
                           {'code': 'SD',
                            'label': 'Legal Step Deck (Single Drop)',
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 11.58,
                                      'ancho_m': 2.59,
                                      'alto_m': 3.05,
                                      'carga_max_kg': 20865}},
                           {'code': 'TANK',
                            'label': 'Tanker',
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 16.15,
                                      'ancho_m': 2.59,
                                      'alto_m': 2.3,
                                      'capacidad_l': 22712}},
                           {'code': 'DV53',
                            'label': "Dry Van 53'",
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 16.15,
                                      'ancho_m': 2.59,
                                      'alto_m': 2.3,
                                      'capacidad_m3': 99.11,
                                      'carga_max_kg': 20412,
                                      'pallets': 26}},
                           {'code': 'DD',
                            'label': 'Double Drop (Low Boy)',
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 8.53,
                                      'ancho_m': 2.59,
                                      'alto_m': 3.51,
                                      'carga_max_kg': 18144}},
                           {'code': 'RF48',
                            'label': "48' Reefer Trailer",
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 14.63,
                                      'ancho_m': 2.4,
                                      'alto_m': 2.3,
                                      'capacidad_m3': 90.0,
                                      'carga_max_kg': 19958,
                                      'pallets': 20}},
                           {'code': 'FB48',
                            'label': "48' Legal Flatbed",
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 14.63,
                                      'ancho_m': 2.59,
                                      'alto_m': 2.59,
                                      'carga_max_kg': 21772}},
                           {'code': 'PUP28',
                            'label': "Pup Trailer 28'",
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 8.53,
                                      'ancho_m': 2.59,
                                      'alto_m': 2.3,
                                      'capacidad_m3': 57.45,
                                      'carga_max_kg': 9979,
                                      'pallets': 14}},
                           {'code': 'IM53',
                            'label': "Intermodal 53' Container",
                            'extra': {'modo': 'terrestre',
                                      'largo_m': 16.15,
                                      'ancho_m': 2.59,
                                      'alto_m': 2.3,
                                      'capacidad_m3': 99.11,
                                      'carga_max_kg': 19958,
                                      'pallets': 24}}]},
 'modo_tarifario': {'label': 'Modo de tarifario',
                    'is_system': True,
                    'items': [{'code': 'aereo', 'label': 'Aéreo'},
                              {'code': 'maritimo_fcl', 'label': 'Marítimo FCL'},
                              {'code': 'maritimo_lcl', 'label': 'Marítimo LCL'},
                              {'code': 'terrestre', 'label': 'Terrestre'}]},
 'unidad_tarifa': {'label': 'Unidad de tarifa',
                   'is_system': True,
                   'items': [{'code': 'per_kg', 'label': 'Por kg'},
                             {'code': 'per_wm', 'label': 'Por peso/medida (W/M)'},
                             {'code': 'per_container', 'label': 'Por contenedor'},
                             {'code': 'flat', 'label': 'Tarifa plana'}]},
 'concepto_cargo': {'label': 'Concepto de cargo',
                    'is_system': False,
                    'items': [{'code': 'combustible', 'label': 'Combustible (BAF/FSC)'},
                              {'code': 'dgr', 'label': 'Mercancía peligrosa (DGR)'},
                              {'code': 'moc', 'label': 'MOC (mínimo origen)'},
                              {'code': 'afs', 'label': 'AFS'},
                              {'code': 'thc', 'label': 'THC (manejo en terminal)'},
                              {'code': 'maniobras', 'label': 'Maniobras'},
                              {'code': 'almacenaje', 'label': 'Almacenaje'},
                              {'code': 'seguro', 'label': 'Seguro'},
                              {'code': 'despacho', 'label': 'Despacho aduanal'},
                              {'code': 'documentacion', 'label': 'Documentación'},
                              {'code': 'custodia', 'label': 'Custodia'},
                              {'code': 'otro', 'label': 'Otro'}]}}

TENANT_CATALOG_LABELS = {'servicio': 'Servicios que ofrece',
 'puerto': 'Puertos donde opera',
 'aeropuerto': 'Aeropuertos donde opera',
 'aduana': 'Aduanas donde opera'}

# ---------------------------------------------------------------------------
# Catálogos del proceso comercial (Solicitud de servicio → Cotización).
# Alimentan los selects de la solicitud y del ciclo Oportunidad→Cotización.
# is_system = catálogos base que el cliente no puede borrar (sólo activar/desactivar).
# ---------------------------------------------------------------------------
GLOBAL_CATALOGS.update({
    'tipo_operacion': {'label': 'Tipo de operación',
                       'is_system': True,
                       'items': [{'code': 'importacion', 'label': 'Importación'},
                                 {'code': 'exportacion', 'label': 'Exportación'}]},
    'medio_transporte': {'label': 'Medio de transporte',
                         'is_system': True,
                         'items': [{'code': 'maritimo', 'label': 'Marítimo'},
                                   {'code': 'aereo', 'label': 'Aéreo'},
                                   {'code': 'terrestre', 'label': 'Terrestre'},
                                   {'code': 'ferroviario', 'label': 'Ferroviario'},
                                   {'code': 'multimodal', 'label': 'Multimodal'}]},
    'tipo_servicio': {'label': 'Tipo de servicio',
                      'is_system': True,
                      'items': [{'code': 'puerto_puerto', 'label': 'Puerto a puerto'},
                                {'code': 'puerto_puerta', 'label': 'Puerto a puerta'},
                                {'code': 'puerta_puerto', 'label': 'Puerta a puerto'},
                                {'code': 'puerta_puerta', 'label': 'Puerta a puerta'}]},
    'prioridad': {'label': 'Prioridad',
                  'is_system': False,
                  'items': [{'code': 'baja', 'label': 'Baja'},
                            {'code': 'normal', 'label': 'Normal'},
                            {'code': 'alta', 'label': 'Alta'},
                            {'code': 'urgente', 'label': 'Urgente'}]},
    'tipo_mercancia': {'label': 'Tipo de mercancía',
                       'is_system': False,
                       'items': [{'code': 'general', 'label': 'Carga general'},
                                 {'code': 'perecedera', 'label': 'Perecedera'},
                                 {'code': 'peligrosa', 'label': 'Peligrosa (IMO)'},
                                 {'code': 'refrigerada', 'label': 'Refrigerada'},
                                 {'code': 'granel', 'label': 'Granel'},
                                 {'code': 'sobredimensionada', 'label': 'Sobredimensionada'},
                                 {'code': 'valiosa', 'label': 'Valiosa'},
                                 {'code': 'otro', 'label': 'Otro'}]},
    'unidad_medida': {'label': 'Unidad de medida',
                      'is_system': False,
                      'items': [{'code': 'cm', 'label': 'Centímetros (cm)'},
                                {'code': 'm', 'label': 'Metros (m)'},
                                {'code': 'in', 'label': 'Pulgadas (in)'},
                                {'code': 'ft', 'label': 'Pies (ft)'},
                                {'code': 'kg', 'label': 'Kilogramos (kg)'},
                                {'code': 'lb', 'label': 'Libras (lb)'},
                                {'code': 'm3', 'label': 'Metros cúbicos (m³)'}]},
    'tipo_embalaje': {'label': 'Tipo de embalaje',
                      'is_system': False,
                      'items': [{'code': 'caja', 'label': 'Caja'},
                                {'code': 'pallet', 'label': 'Pallet'},
                                {'code': 'tarima', 'label': 'Tarima'},
                                {'code': 'huacal', 'label': 'Huacal'},
                                {'code': 'saco', 'label': 'Saco'},
                                {'code': 'tambor', 'label': 'Tambor'},
                                {'code': 'rollo', 'label': 'Rollo'},
                                {'code': 'atado', 'label': 'Atado'},
                                {'code': 'granel', 'label': 'Granel'},
                                {'code': 'otro', 'label': 'Otro'}]},
    'servicio_adicional': {'label': 'Servicios adicionales',
                           'is_system': False,
                           'items': [{'code': 'seguro', 'label': 'Seguro de la mercancía'},
                                     {'code': 'despacho_aduanal', 'label': 'Despacho aduanal'},
                                     {'code': 'transporte_terrestre', 'label': 'Transporte terrestre'},
                                     {'code': 'almacenaje', 'label': 'Almacenaje'},
                                     {'code': 'maniobras', 'label': 'Maniobras'},
                                     {'code': 'custodia', 'label': 'Custodia'},
                                     {'code': 'revalidacion', 'label': 'Revalidación'},
                                     {'code': 'inspeccion', 'label': 'Inspección'},
                                     {'code': 'otro', 'label': 'Otro'}]},
    'tipo_documento': {'label': 'Tipo de documento',
                       'is_system': False,
                       'items': [{'code': 'factura_comercial', 'label': 'Factura comercial'},
                                 {'code': 'packing_list', 'label': 'Packing list'},
                                 {'code': 'certificado_origen', 'label': 'Certificado de origen'},
                                 {'code': 'hoja_seguridad_msds', 'label': 'Hoja de seguridad (MSDS)'},
                                 {'code': 'ficha_tecnica', 'label': 'Ficha técnica'},
                                 {'code': 'carta_instrucciones', 'label': 'Carta de instrucciones'},
                                 {'code': 'otro', 'label': 'Otro'}]},
    'incoterm': {'label': 'Incoterm (2020)',
                 'is_system': True,
                 'items': [{'code': 'EXW', 'label': 'EXW — Ex Works (en fábrica)'},
                           {'code': 'FCA', 'label': 'FCA — Free Carrier (franco transportista)'},
                           {'code': 'FAS', 'label': 'FAS — Free Alongside Ship (franco al costado del buque)'},
                           {'code': 'FOB', 'label': 'FOB — Free On Board (franco a bordo)'},
                           {'code': 'CFR', 'label': 'CFR — Cost and Freight (costo y flete)'},
                           {'code': 'CIF', 'label': 'CIF — Cost, Insurance and Freight (costo, seguro y flete)'},
                           {'code': 'CPT', 'label': 'CPT — Carriage Paid To (transporte pagado hasta)'},
                           {'code': 'CIP', 'label': 'CIP — Carriage and Insurance Paid To (transporte y seguro pagados hasta)'},
                           {'code': 'DAP', 'label': 'DAP — Delivered At Place (entregado en lugar)'},
                           {'code': 'DPU', 'label': 'DPU — Delivered At Place Unloaded (entregado en lugar descargado)'},
                           {'code': 'DDP', 'label': 'DDP — Delivered Duty Paid (entregado con derechos pagados)'}]},
})

# Formas de pago SAT de un dígito → dos dígitos (01, 02, 03, 04, 05, 06, 08).
# El SAT exige dos posiciones; se corrige el catálogo base.
for _fp in GLOBAL_CATALOGS.get('forma_pago', {}).get('items', []):
    if len(_fp['code']) == 1:
        _fp['code'] = _fp['code'].zfill(2)

# Ubicaciones por país (ciudad/puerto/aeropuerto), dependientes de `pais`.
from .seed_locations import LOCATION_CATALOGS  # noqa: E402

GLOBAL_CATALOGS.update(LOCATION_CATALOGS)
