Salta al contingut principal
Correos Express · Odoo

Transportistes a Odoo: Correos Express, OCA gratis i què cobreix cadascun

El mòdul OCA delivery_correos_express és gratuït, té branca de la 14.0 a la 19.0 i resol més del que gairebé ningú admet. Aquí tens el diff real contra el connector de pagament, extret del codi dels dos.

Connector Correos Express per a Odoo

Si expedeixes amb Correos Express i treballes amb Odoo tens dos camins: instal·lar el mòdul delivery_correos_express de l'OCA, gratuït i sota AGPL-3.0, o pagar per un connector mantingut. Aquí es compara codi: el del mòdul OCA a la branca 19.0 del repositori OCA/delivery-carrier i el del connector propi de FlexigoTech, camp a camp i crida a crida.

Resum: per a una botiga pròpia amb un contracte, un producte fix i lliurament a domicili, el mòdul OCA et val. Deixa de valer quan necessites recollida programada, lliurament en punt de conveniència, pes declarat per bulto o que un error temporal de l'API no et deixi l'albarà validat i sense etiqueta.

Què necessites abans de començar

Tres coses, i cap te la dona el mòdul. Són idèntiques triïs el camí que triïs.

  • Contracte amb Correos Express. Els dos mòduls parlen amb les teves credencials i amb la teva tarifa; cap revèn transport.
  • Quatre dades. Usuari, contrasenya, codi de client i codi de sol·licitant. Al mòdul OCA són els camps correos_express_username, correos_express_password, correos_express_customer_code i correos_express_sender_code. El de sol·licitant viatja a solicitante en donar d'alta l'enviament; el de client, a codRte i a keyCli en demanar l'etiqueta.
  • Dependències. El mòdul OCA no va sol: necessita delivery_package_number i delivery_state, del mateix repositori, i la llibreria Python unidecode. A Odoo.sh, unidecode va al requirements.txt del repositori o la instal·lació falla.

I un detall de rutes: el mòdul OCA tria entorn amb el flag prod_environment estàndard de delivery.carrier i apunta a www.test.cexpr.es/wsps/ en proves i a www.cexpr.es/wspsc/ en producció. El prefix no és el mateix als dos entorns. El nostre connector fa servir /wspsc/ als dos. Els dos prefixos responen al host de proves, així que si alguna cosa et falla allà, comença pel certificat i per les credencials.

Funcionalitat a funcionalitat: què fa cadascun

Cada fila surt de llegir els dos mòduls, no d'un fulletó. Quan la resposta és «cap dels dos», també està escrit.

FuncionalitatMòdul OCA delivery_correos_expressConnector propi FlexigoTech
Llicència i costAGPL-3.0, sense cost de llicènciaOPL-1, mòdul de pagament
Versions d'OdooBranques 14.0 a 19.0 del repositori17, 18, 19 i 20
Dependènciesdelivery_package_number, delivery_state i unidecodedelivery, stock, sale, sale_stock (tot d'Odoo)
Format d'etiquetaPDF i ZPL (tipus 1 i 2 de l'API)PDF (tipus 5, tèrmica) i ZPL; el desplegable ofereix també EPL, que viatja amb el mateix tipus que ZPL
MultibultoEnvia numBultos des de number_of_packages, però la llista de bultos va amb quilos i mesures en blancQuilos per bulto i alt, llarg i ample quan el paquet els té
ReemborsamentNo: el camp reembolso s'envia buitTampoc: s'envia buit igual
Recollida programadaNo la cridaGravar, modificar, anul·lar, hora de tall i seguiment de recollida, més creaRecogida en donar d'alta l'enviament
Punt de conveniència (PUDO)No: codDirecDestino viatja sempre buit i no hi ha consulta de puntsConsulta de punts per radi i producte B-PACK amb idPuntoExterno obligatori
Manifest / tancament de diaNo el generaTampoc com a document; hi ha mètodes contra llista d'enviaments i generació d'informes, però el tancament encara es fa al portal
Anul·lació de l'enviamentEscriu un missatge al chatter dient que no hi ha mètode per anul·larCrida el servei d'aturar lliurament i, si el contracte no el té, registra l'anul·lació com a manual
Tracking de tornadaSí: escriu estat i històric a l'albarà, amb el cron diari de delivery_stateSí: cron propi cada 30 minuts i finestra de dies configurable, 21 per defecte
Reintent davant d'error d'APINo: qualsevol fallada puja com a UserError i allà es quedaCron cada 5 minuts, espera creixent de 5 a 240 minuts i un màxim de 6 intents per albarà
Càlcul de tarifaNo el dona l'API: retorna el preu de llista del producte de transport i ho avisa per escritTampoc: retorna el preu fix configurat al transportista i escriu zero al preu exacte de l'enviament
Crides diferents a l'API3: alta d'enviament, etiqueta i seguiment21 endpoints declarats: alta, etiqueta i 19 serveis més, seguiment inclòs
Proves dins del mòdul1854

Dues files solen sorprendre. La primera és el reemborsament: cap dels dos l'envia, així que si cobres contra reemborsament, avui això es gestiona fora d'Odoo amb els dos mòduls. La segona és la tarifa: l'API de Correos Express no cotitza enviaments, i per això cap dels dos calcula res. L'OCA retorna el preu de llista del producte de transport i deixa l'avís per escrit; el connector propi retorna el preu fix del transportista. Si necessites que el carret calculi el transport, això es resol amb regles de preu a Odoo o amb el mòdul OCA delivery_price_method, no amb el connector.

On el mòdul OCA és suficient

Botiga pròpia, un contracte, lliurament a domicili

Vens al teu web, tot surt amb el mateix producte contractat i no ofereixes lliurament en punt. Imprimeixes en una Zebra amb ZPL o en una làser amb PDF. Aquest flux el cobreix el mòdul OCA sencer: alta d'enviament, número de seguiment a l'albarà, etiqueta adjunta al chatter i estat actualitzat pel cron. Aquí un mòdul de pagament no et farà res millor.

Odoo 14, 15 o 16

Nosaltres mantenim 17, 18, 19 i 20 i no farem veure el contrari. El repositori de l'OCA té branca per a 14.0, 15.0 i 16.0. Si el teu Odoo és d'aquests anys, el mòdul OCA no és l'opció barata: és l'opció.

Multibulto en què tots els bultos són iguals

Si et facturen pel pes total de l'enviament, que la llista de bultos vagi amb els quilos en blanc no et canvia res: el pes total sí que viatja. El problema només apareix quan algú necessita el pes bulto a bulto.

Tens algú que toca codi

El mòdul OCA és curt i llegible: unes 450 línies entre transportista, peticions i albarà. Si a casa hi ha qui llegeix Python, apedaçar un camp o portar la branca és feina d'una tarda i el control és teu.

On es queda curt i què et costa en feina manual

Aquí no hi ha opinió: és el que el codi no fa i, per tant, el que algú fa a mà.

  • La recollida es demana fora. El mòdul OCA no crida cap servei de recollida: l'avís diari al transportista surt del portal, del telèfon o d'una ruta fixa ja pactada.
  • No pots vendre lliurament en punt des d'Odoo. El camp del punt de destinació s'envia buit i no hi ha consulta de punts, així que una comanda amb lliurament en punt de conveniència se surt del flux de l'albarà.
  • L'anul·lació és un missatge, no una acció. El mòdul escriu al chatter que Correos Express no ofereix mètode per anul·lar un enviament registrat. És cert per a l'alta d'enviament; el servei d'aturar lliurament existeix a part i cal tenir-lo habilitat al contracte.
  • Un tall d'API deixa l'albarà a mitges. Qualsevol excepció puja com a error d'usuari i no hi ha reintent. Amb pocs enviaments al dia algú torna a prémer el botó; quan són centenars, algú ha d'anar a buscar-los un a un.
  • El botó de reimprimir etiqueta només apareix amb l'albarà validat. Està condicionat que l'estat sigui fet i que hi hagi número de seguiment. Si el teu magatzem imprimeix abans de validar, aquest botó no és on el busca.

El certificat de proves: la incidència que més es repeteix

Abans de canviar de mòdul per un error de connexió, comprova això. En cridar l'entorn de proves www.test.cexpr.es, Python falla amb CERTIFICATE_VERIFY_FAILED. No és el mòdul. Aquest host sí que serveix la cadena sencera, però emesa per la CA pròpia de Correos: el certificat de servidor el signa AC SUB 2 CORREOS i aquesta signatura puja fins a AC RAIZ CORREOS, una arrel autosignada que no és a l'emmagatzematge de CA públiques. Python només confia en aquest emmagatzematge i hi talla. Producció, www.cexpr.es, valida contra CA públiques sense tocar res.

Ho pots comprovar en deu segons amb openssl s_client -connect www.test.cexpr.es:443: la cadena que retorna acaba en una arrel autosignada de Correos. La sortida ràpida és posar verify=False, i és mala idea: afebleixes totes les crides HTTPS d'aquesta instància. El correcte és muntar un bundle PEM amb aquesta arrel i passar-lo com a verify només a les crides d'aquest transportista, perquè producció i la resta d'integracions segueixin verificant contra l'emmagatzematge per defecte. Tens el pas a pas a l'error SSL de Correos Express a Odoo.

Com es comprova que funciona de debò

La prova no és que el mòdul s'instal·li. És generar una etiqueta real contra el contracte i veure el número escrit a l'albarà. Quatre coses hi han de ser:

  • El número d'expedició al camp de seguiment de l'albarà, no només al PDF.
  • L'etiqueta desada com a adjunt, amb el número al nom del fitxer.
  • L'enllaç públic de seguiment resolent amb aquest mateix número.
  • Els codis de bulto, un per cada paquet que has declarat.
Albarà d'Odoo amb l'etiqueta de Correos Express generada i el número d'expedició escrit al picking
Albarà CENT/OUT/00136 després de l'alta: estat de flux «Etiqueta OK», número d'expedició 1823059046850141, codi de bulto i el PDF de l'etiqueta adjunt. Si la teva prova no acaba en una pantalla així, no està funcionant: està compilant.

Veredicte

Comença pel mòdul OCA. És gratuït, és a la branca de la teva versió i l'escenari que cobreix és el de la majoria de les botigues que expedeixen amb Correos Express. Instal·la'l, treu una etiqueta real i treballa amb ell un parell de setmanes.

Passat aquest temps, escriu la llista del que segueixes fent fora d'Odoo. Si en aquesta llista hi ha demanar recollida, oferir punt de conveniència, perseguir albarans sense etiqueta o declarar pes per bulto, aquí és on un mòdul de pagament es justifica: no per tenir més botons, sinó per treure aquesta llista. Si la llista és buida, ja has acabat i no has de comprar res.

Qui ho munta és una altra conversa: instal·lació, credencials i bundle del certificat costen el mateix amb el mòdul gratuït que amb el de pagament. Ho tractem a implantació de mòduls OCA i a logística a Odoo.

Per continuar

Mòdul OCA de Correos ExpressFitxa del mòdul gratuït i què cal per posar-lo en marxaConnector Correos Express de FlexigoTechEl mòdul propi: recollides, PUDO, reintents i anul·lacióComparativa completa OCA contra mòdul propiLa mateixa decisió, amb els errors d'API que veuràs en producció

Preguntes freqüents

Hi ha un mòdul de Correos Express per a Odoo gratuït?

Sí: delivery_correos_express, al repositori OCA/delivery-carrier sota AGPL-3.0 i amb branca de 14.0 a 19.0. Cobreix alta d'enviament, etiqueta en PDF o ZPL i actualització d'estat.

El mòdul OCA treu etiquetes per a impressora tèrmica?

Sí, en ZPL. El tipus d'etiqueta és un desplegable amb dues opcions, PDF i ZPL, que són els tipus 1 i 2 de l'API de Correos Express. Si la teva impressora parla un altre llenguatge, aquí el mòdul no hi arriba.

Puc oferir lliurament en punt de conveniència amb el mòdul OCA?

No des d'Odoo. El camp del punt de destinació s'envia sempre buit i el mòdul no inclou cap consulta de punts, així que la comanda amb lliurament en punt es gestiona fora de l'albarà.

Per què l'enviament em surt a 0 € a la comanda?

Perquè l'API de Correos Express no cotitza enviaments. El mòdul OCA ho diu amb totes les lletres i retorna el preu de llista del producte de transport; el connector propi retorna el preu fix del transportista i escriu zero al preu exacte de l'enviament. El transport es posa amb regles de preu a Odoo o amb el mòdul OCA delivery_price_method.

Es pot anul·lar un enviament ja registrat?

L'alta d'enviament no té anul·lació: el mòdul OCA ho escriu al chatter i allà es queda. Existeix un servei a part d'aturar lliurament, que cal tenir habilitat al contracte, i que el connector propi sí que crida.

El que fem sobre això

Connector Correos ExpressQuè fa, captures, versions i preu.

Vols que algú miri el teu cas concret?

Contracte, versió d'Odoo, volum i què fas avui fora de l'ERP. Amb això se sap si et sobra el mòdul OCA o no, i ho diem encara que la resposta sigui que et sobra.

Parlar amb un enginyer