Delivery CTT Express

delivery_cttexpress
REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/18.0/delivery_cttexpress
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Angel Rivas, eugenio
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/delivery-carrier:
    - delivery_package_number
    - delivery_state
    - delivery_price_method
odoo/odoo:
    - stock_delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - delivery
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
CTT Express Iberic Web Services API intration with Odoo. Valid for
Portugal and Spain.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
delivery_manifest_wizard_form cttexpress.manifest.wizard form New
delivery_pickup_wizard_form cttexpress.pickup.wizard form New
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_picking_withcarrier_out_form stock.picking xpath Inherits stock_delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (6)
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' readonly=True string='Manifests'
  • carrier_ids Many2many → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')] help='Leave empty to gather all the CTT account manifests' string='Filter accounts'
  • document_type Selection
    default='XLSX' required=True selection=[('XLSX', 'Excel'), ('PDF', 'PDF')] string='Format'
  • from_date Date
    default=fields.Date.context_today required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
  • to_date Date
    default=fields.Date.context_today required=True
Public methods (1)
  • get_manifest(self)
    List of shippings for the given dates as CTT provides them

New fields (6)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')]
  • code Char
    readonly=True
  • delivery_date Date
    default=fields.Date.context_today required=True
  • max_hour Float
    default=23.99 required=True
  • min_hour Float
    required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
Public methods (1)
  • create_pickup_request(self)
    Get the pickup code

New fields (10)
  • cttexpress_agency Char
    string='Agency code'
  • cttexpress_contract Char
    string='Contract code'
  • cttexpress_customer Char
    string='Customer code'
  • cttexpress_document_format Selection
    default='PDF' selection=[('PDF', 'PDF'), ('PNG', 'PNG'), ('BMP', 'BMP')] string='Document format'
  • cttexpress_document_model_code Selection
    default='SINGLE' selection=[('SINGLE', 'Single'), ('MULTI1', 'Multi 1'), ('MULTI3', 'Multi 3'), ('MULTI4', 'Multi 4')] string='Document model'
  • cttexpress_document_offset Integer
    string='Document Offset'
  • cttexpress_password Char
    string='Password'
  • cttexpress_shipping_type Selection
    selection=CTTEXPRESS_SERVICES string='Shipping type'
  • cttexpress_user Char
    string='CTT Express User'
  • delivery_type Selection
    ondelete={'cttexpress': 'set default'} selection_add=[('cttexpress', 'CTT Express')]
Public methods (6)
  • action_ctt_validate_user(self)
    Maps to API's ValidateUser method :raises UserError: If the user credentials aren't valid
  • cttexpress_cancel_shipment(self, pickings)
    Cancel the expedition :param recordset: pickings `stock.picking` recordset :returns boolean: True if success
  • cttexpress_get_label(self, reference)
    Generate label for picking :param str reference: shipping reference :returns tuple: (file_content, file_name)
  • cttexpress_get_tracking_link(self, picking)
    Wildcard method for CTT Express tracking link. :param record picking: `stock.picking` record :return str: tracking url
  • cttexpress_send_shipping(self, pickings)
    CTT Express wildcard method called when a picking is confirmed :param record pickings: `stock.picking` recordset :raises UserError: On any API error :return dict: With tracking number and delivery price (always 0)
  • cttexpress_tracking_state_update(self, picking)
    Wildcard method for CTT Express tracking followup :param recod picking: `stock.picking` record

New fields (0)

No new fields.

Public methods (1)
  • cttexpress_get_label(self)
    Get label for current picking :return tuple: (filename, filecontent)
REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/17.0/delivery_cttexpress
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, OCA-git-bot, David, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/delivery-carrier:
    - delivery_package_number
    - delivery_state
    - delivery_price_method
odoo/odoo:
    - stock_delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - delivery
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
CTT Express Iberic Web Services API intration with Odoo. Valid for
Portugal and Spain.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
delivery_manifest_wizard_form cttexpress.manifest.wizard form New
delivery_pickup_wizard_form cttexpress.pickup.wizard form New
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_picking_withcarrier_out_form stock.picking xpath Inherits stock_delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (6)
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' readonly=True string='Manifests'
  • carrier_ids Many2many → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')] help='Leave empty to gather all the CTT account manifests' string='Filter accounts'
  • document_type Selection
    default='XLSX' required=True selection=[('XLSX', 'Excel'), ('PDF', 'PDF')] string='Format'
  • from_date Date
    default=fields.Date.context_today required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
  • to_date Date
    default=fields.Date.context_today required=True
Public methods (1)
  • get_manifest(self)
    List of shippings for the given dates as CTT provides them

New fields (6)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')]
  • code Char
    readonly=True
  • delivery_date Date
    default=fields.Date.context_today required=True
  • max_hour Float
    default=23.99 required=True
  • min_hour Float
    required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
Public methods (1)
  • create_pickup_request(self)
    Get the pickup code

New fields (10)
  • cttexpress_agency Char
    string='Agency code'
  • cttexpress_contract Char
    string='Contract code'
  • cttexpress_customer Char
    string='Customer code'
  • cttexpress_document_format Selection
    default='PDF' selection=[('PDF', 'PDF'), ('PNG', 'PNG'), ('BMP', 'BMP')] string='Document format'
  • cttexpress_document_model_code Selection
    default='SINGLE' selection=[('SINGLE', 'Single'), ('MULTI1', 'Multi 1'), ('MULTI3', 'Multi 3'), ('MULTI4', 'Multi 4')] string='Document model'
  • cttexpress_document_offset Integer
    string='Document Offset'
  • cttexpress_password Char
    string='Password'
  • cttexpress_shipping_type Selection
    selection=CTTEXPRESS_SERVICES string='Shipping type'
  • cttexpress_user Char
    string='User'
  • delivery_type Selection
    ondelete={'cttexpress': 'set default'} selection_add=[('cttexpress', 'CTT Express')]
Public methods (6)
  • action_ctt_validate_user(self)
    Maps to API's ValidateUser method :raises UserError: If the user credentials aren't valid
  • cttexpress_cancel_shipment(self, pickings)
    Cancel the expedition :param recordset: pickings `stock.picking` recordset :returns boolean: True if success
  • cttexpress_get_label(self, reference)
    Generate label for picking :param str reference: shipping reference :returns tuple: (file_content, file_name)
  • cttexpress_get_tracking_link(self, picking)
    Wildcard method for CTT Express tracking link. :param record picking: `stock.picking` record :return str: tracking url
  • cttexpress_send_shipping(self, pickings)
    CTT Express wildcard method called when a picking is confirmed :param record pickings: `stock.picking` recordset :raises UserError: On any API error :return dict: With tracking number and delivery price (always 0)
  • cttexpress_tracking_state_update(self, picking)
    Wildcard method for CTT Express tracking followup :param recod picking: `stock.picking` record

New fields (0)

No new fields.

Public methods (1)
  • cttexpress_get_label(self)
    Get label for current picking :return tuple: (filename, filecontent)
REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/16.0/delivery_cttexpress
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, David, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:52
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/delivery-carrier:
    - delivery_package_number
    - delivery_state
    - delivery_price_method
odoo/odoo:
    - delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - sale_management
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
delivery_manifest_wizard_form cttexpress.manifest.wizard form New
delivery_pickup_wizard_form cttexpress.pickup.wizard form New
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_picking_withcarrier_out_form stock.picking xpath Inherits delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (6)
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' readonly=True string='Manifests'
  • carrier_ids Many2many → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')] help='Leave empty to gather all the CTT account manifests' string='Filter accounts'
  • document_type Selection
    default='XLSX' required=True selection=[('XLSX', 'Excel'), ('PDF', 'PDF')] string='Format'
  • from_date Date
    default=fields.Date.context_today required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
  • to_date Date
    default=fields.Date.context_today required=True
Public methods (1)
  • get_manifest(self)
    List of shippings for the given dates as CTT provides them

New fields (6)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')]
  • code Char
    readonly=True
  • delivery_date Date
    default=fields.Date.context_today required=True
  • max_hour Float
    default=23.99 required=True
  • min_hour Float
    required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
Public methods (1)
  • create_pickup_request(self)
    Get the pickup code

New fields (10)
  • cttexpress_agency Char
    string='Agency code'
  • cttexpress_contract Char
    string='Contract code'
  • cttexpress_customer Char
    string='Customer code'
  • cttexpress_document_format Selection
    default='PDF' selection=[('PDF', 'PDF'), ('PNG', 'PNG'), ('BMP', 'BMP')] string='Document format'
  • cttexpress_document_model_code Selection
    default='SINGLE' selection=[('SINGLE', 'Single'), ('MULTI1', 'Multi 1'), ('MULTI3', 'Multi 3'), ('MULTI4', 'Multi 4')] string='Document model'
  • cttexpress_document_offset Integer
    string='Document Offset'
  • cttexpress_password Char
    string='Password'
  • cttexpress_shipping_type Selection
    selection=CTTEXPRESS_SERVICES string='Shipping type'
  • cttexpress_user Char
    string='User'
  • delivery_type Selection
    ondelete={'cttexpress': 'set default'} selection_add=[('cttexpress', 'CTT Express')]
Public methods (6)
  • action_ctt_validate_user(self)
    Maps to API's ValidateUser method :raises UserError: If the user credentials aren't valid
  • cttexpress_cancel_shipment(self, pickings)
    Cancel the expedition :param recordset: pickings `stock.picking` recordset :returns boolean: True if success
  • cttexpress_get_label(self, reference)
    Generate label for picking :param str reference: shipping reference :returns tuple: (file_content, file_name)
  • cttexpress_get_tracking_link(self, picking)
    Wildcard method for CTT Express tracking link. :param record picking: `stock.picking` record :return str: tracking url
  • cttexpress_send_shipping(self, pickings)
    CTT Express wildcard method called when a picking is confirmed :param record pickings: `stock.picking` recordset :raises UserError: On any API error :return dict: With tracking number and delivery price (always 0)
  • cttexpress_tracking_state_update(self, picking)
    Wildcard method for CTT Express tracking followup :param recod picking: `stock.picking` record

New fields (0)

No new fields.

Public methods (1)
  • cttexpress_get_label(self)
    Get label for current picking :return tuple: (filename, filecontent)
REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/15.0/delivery_cttexpress
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, David, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:38
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/delivery-carrier:
    - delivery_package_number
    - delivery_state
    - delivery_price_method
odoo/odoo:
    - delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
    - sale_management
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES zeep
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
delivery_manifest_wizard_form cttexpress.manifest.wizard form New
delivery_pickup_wizard_form cttexpress.pickup.wizard form New
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_picking_withcarrier_out_form stock.picking xpath Inherits delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (6)
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' readonly=True string='Manifests'
  • carrier_ids Many2many → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')] help='Leave empty to gather all the CTT account manifests' string='Filter accounts'
  • document_type Selection
    default='XLSX' required=True selection=[('XLSX', 'Excel'), ('PDF', 'PDF')] string='Format'
  • from_date Date
    default=fields.Date.context_today required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
  • to_date Date
    default=fields.Date.context_today required=True
Public methods (1)
  • get_manifest(self)
    List of shippings for the given dates as CTT provides them

New fields (6)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')]
  • code Char
    readonly=True
  • delivery_date Date
    default=fields.Date.context_today required=True
  • max_hour Float
    default=23.99 required=True
  • min_hour Float
    required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
Public methods (1)
  • create_pickup_request(self)
    Get the pickup code

New fields (10)
  • cttexpress_agency Char
    string='Agency code'
  • cttexpress_contract Char
    string='Contract code'
  • cttexpress_customer Char
    string='Customer code'
  • cttexpress_document_format Selection
    default='PDF' selection=[('PDF', 'PDF'), ('PNG', 'PNG'), ('BMP', 'BMP')] string='Document format'
  • cttexpress_document_model_code Selection
    default='SINGLE' selection=[('SINGLE', 'Single'), ('MULTI1', 'Multi 1'), ('MULTI3', 'Multi 3'), ('MULTI4', 'Multi 4')] string='Document model'
  • cttexpress_document_offset Integer
    string='Document Offset'
  • cttexpress_password Char
    string='Password'
  • cttexpress_shipping_type Selection
    selection=CTTEXPRESS_SERVICES string='Shipping type'
  • cttexpress_user Char
    string='User'
  • delivery_type Selection
    ondelete={'cttexpress': 'set default'} selection_add=[('cttexpress', 'CTT Express')]
Public methods (6)
  • action_ctt_validate_user(self)
    Maps to API's ValidateUser method :raises UserError: If the user credentials aren't valid
  • cttexpress_cancel_shipment(self, pickings)
    Cancel the expedition :param recordset: pickings `stock.picking` recordset :returns boolean: True if success
  • cttexpress_get_label(self, reference)
    Generate label for picking :param str reference: shipping reference :returns tuple: (file_content, file_name)
  • cttexpress_get_tracking_link(self, picking)
    Wildcard method for CTT Express tracking link. :param record picking: `stock.picking` record :return str: tracking url
  • cttexpress_send_shipping(self, pickings)
    CTT Express wildcard method called when a picking is confirmed :param record pickings: `stock.picking` recordset :raises UserError: On any API error :return dict: With tracking number and delivery price (always 0)
  • cttexpress_tracking_state_update(self, picking)
    Wildcard method for CTT Express tracking followup :param recod picking: `stock.picking` record

New fields (0)

No new fields.

Public methods (1)
  • cttexpress_get_label(self)
    Get label for current picking :return tuple: (filename, filecontent)
REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/14.0/delivery_cttexpress
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, David, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/delivery-carrier:
    - delivery_package_number
    - delivery_state
odoo/odoo:
    - delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
    - sale_management
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES zeep
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
delivery_manifest_wizard_form cttexpress.manifest.wizard form New
delivery_pickup_wizard_form cttexpress.pickup.wizard form New
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_picking_withcarrier_out_form stock.picking xpath Inherits delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (6)
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' readonly=True string='Manifests'
  • carrier_ids Many2many → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')] help='Leave empty to gather all the CTT account manifests' string='Filter accounts'
  • document_type Selection
    default='XLSX' required=True selection=[('XLSX', 'Excel'), ('PDF', 'PDF')] string='Format'
  • from_date Date
    default=fields.Date.context_today required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
  • to_date Date
    default=fields.Date.context_today required=True
Public methods (1)
  • get_manifest(self)
    List of shippings for the given dates as CTT provides them

New fields (6)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')]
  • code Char
    readonly=True
  • delivery_date Date
    default=fields.Date.context_today required=True
  • max_hour Float
    default=23.99 required=True
  • min_hour Float
    required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
Public methods (1)
  • create_pickup_request(self)
    Get the pickup code

New fields (10)
  • cttexpress_agency Char
    string='Agency code'
  • cttexpress_contract Char
    string='Contract code'
  • cttexpress_customer Char
    string='Customer code'
  • cttexpress_document_format Selection
    default='PDF' selection=[('PDF', 'PDF'), ('PNG', 'PNG'), ('BMP', 'BMP')] string='Document format'
  • cttexpress_document_model_code Selection
    default='SINGLE' selection=[('SINGLE', 'Single'), ('MULTI1', 'Multi 1'), ('MULTI3', 'Multi 3'), ('MULTI4', 'Multi 4')] string='Document model'
  • cttexpress_document_offset Integer
    string='Document Offset'
  • cttexpress_password Char
    string='Password'
  • cttexpress_shipping_type Selection
    selection=CTTEXPRESS_SERVICES string='Shipping type'
  • cttexpress_user Char
    string='User'
  • delivery_type Selection
    ondelete={'cttexpress': 'set default'} selection_add=[('cttexpress', 'CTT Express')]
Public methods (6)
  • action_ctt_validate_user(self)
    Maps to API's ValidateUser method :raises UserError: If the user credentials aren't valid
  • cttexpress_cancel_shipment(self, pickings)
    Cancel the expedition :param recordset: pickings `stock.picking` recordset :returns boolean: True if success
  • cttexpress_get_label(self, reference)
    Generate label for picking :param str reference: shipping reference :returns tuple: (file_content, file_name)
  • cttexpress_get_tracking_link(self, picking)
    Wildcard method for CTT Express tracking link. :param record picking: `stock.picking` record :return str: tracking url
  • cttexpress_send_shipping(self, pickings)
    CTT Express wildcard method called when a picking is confirmed :param record pickings: `stock.picking` recordset :raises UserError: On any API error :return dict: With tracking number and delivery price (always 0)
  • cttexpress_tracking_state_update(self, picking)
    Wildcard method for CTT Express tracking followup :param recod picking: `stock.picking` record

New fields (0)

No new fields.

Public methods (1)
  • cttexpress_get_label(self)
    Get label for current picking :return tuple: (filename, filecontent)
REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/13.0/delivery_cttexpress
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, David, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/delivery-carrier:
    - delivery_package_number
    - delivery_state
odoo/odoo:
    - delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
    - sale_management
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES zeep
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
delivery_manifest_wizard_form cttexpress.manifest.wizard form New
delivery_pickup_wizard_form cttexpress.pickup.wizard form New
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_picking_withcarrier_out_form stock.picking xpath Inherits delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (6)
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' readonly=True string='Manifests'
  • carrier_ids Many2many → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')] help='Leave empty to gather all the CTT account manifests' string='Filter accounts'
  • document_type Selection
    default='XLSX' required=True selection=[('XLSX', 'Excel'), ('PDF', 'PDF')] string='Format'
  • from_date Date
    default=fields.Date.context_today required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
  • to_date Date
    default=fields.Date.context_today required=True
Public methods (1)
  • get_manifest(self)
    List of shippings for the given dates as CTT provides them

New fields (6)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')]
  • code Char
    readonly=True
  • delivery_date Date
    default=fields.Date.context_today required=True
  • max_hour Float
    default=23.99 required=True
  • min_hour Float
    required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
Public methods (1)
  • create_pickup_request(self)
    Get the pickup code

New fields (11)
  • cttexpress_agency Char
    string='Agency code'
  • cttexpress_contract Char
    string='Contract code'
  • cttexpress_customer Char
    string='Customer code'
  • cttexpress_document_format Selection
    default='PDF' selection=[('PDF', 'PDF'), ('PNG', 'PNG'), ('BMP', 'BMP')] string='Document format'
  • cttexpress_document_model_code Selection
    default='SINGLE' selection=[('SINGLE', 'Single'), ('MULTI1', 'Multi 1'), ('MULTI3', 'Multi 3'), ('MULTI4', 'Multi 4')] string='Document model'
  • cttexpress_document_offset Integer
    string='Document Offset'
  • cttexpress_label_delay Float
    default=1 help='The server might not be ready to deliver the label right after the shipping is saved. We need to introduce a little delay. Tipacally 1 s will be enough' string='Label Fetch Delay (seconds)'
  • cttexpress_password Char
    string='Password'
  • cttexpress_shipping_type Selection
    selection=CTTEXPRESS_SERVICES string='Shipping type'
  • cttexpress_user Char
    string='User'
  • delivery_type Selection
    selection_add=[('cttexpress', 'CTT Express')]
Public methods (6)
  • action_ctt_validate_user(self)
    Maps to API's ValidateUser method :raises UserError: If the user credentials aren't valid
  • cttexpress_cancel_shipment(self, pickings)
    Cancel the expedition :param recordset: pickings `stock.picking` recordset :returns boolean: True if success
  • cttexpress_get_label(self, reference)
    Generate label for picking :param str reference: shipping reference :returns tuple: (file_content, file_name)
  • cttexpress_get_tracking_link(self, picking)
    Wildcard method for CTT Express tracking link. :param record picking: `stock.picking` record :return str: tracking url
  • cttexpress_send_shipping(self, pickings)
    CTT Express wildcard method called when a picking is confirmed :param record pickings: `stock.picking` recordset :raises UserError: On any API error :return dict: With tracking number and delivery price (always 0)
  • cttexpress_tracking_state_update(self, picking)
    Wildcard method for CTT Express tracking followup :param recod picking: `stock.picking` record

New fields (0)

No new fields.

Public methods (1)
  • cttexpress_get_label(self)
    Get label for current picking :return tuple: (filename, filecontent)
REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/12.0/delivery_cttexpress
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSPedro M. Baeza, Weblate, OCA-git-bot, David, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/delivery-carrier:
    - delivery_package_number
    - delivery_state
odoo/odoo:
    - delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - stock_account
    - stock
    - barcodes
    - sale_management
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES zeep
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
delivery_manifest_wizard_form cttexpress.manifest.wizard form New
delivery_pickup_wizard_form cttexpress.pickup.wizard form New
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_picking_withcarrier_out_form stock.picking xpath Inherits delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (6)
  • attachment_ids Many2many → ir.attachment
    comodel_name='ir.attachment' readonly=True string='Manifests'
  • carrier_ids Many2many → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')] help='Leave empty to gather all the CTT account manifests' string='Filter accounts'
  • document_type Selection
    default='XLSX' required=True selection=[('XLSX', 'Excel'), ('PDF', 'PDF')] string='Format'
  • from_date Date
    default=fields.Date.context_today required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
  • to_date Date
    default=fields.Date.context_today required=True
Public methods (1)
  • get_manifest(self)
    List of shippings for the given dates as CTT provides them

New fields (6)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'cttexpress')]
  • code Char
    readonly=True
  • delivery_date Date
    default=fields.Date.context_today required=True
  • max_hour Float
    default=23.99 required=True
  • min_hour Float
    required=True
  • state Selection
    default='new' readonly=True selection=[('new', 'new'), ('done', 'done')]
Public methods (1)
  • create_pickup_request(self)
    Get the pickup code

New fields (11)
  • cttexpress_agency Char
    string='Agency code'
  • cttexpress_contract Char
    string='Contract code'
  • cttexpress_customer Char
    string='Customer code'
  • cttexpress_document_format Selection
    default='PDF' selection=[('PDF', 'PDF'), ('PNG', 'PNG'), ('BMP', 'BMP')] string='Document format'
  • cttexpress_document_model_code Selection
    default='SINGLE' selection=[('SINGLE', 'Single'), ('MULTI1', 'Multi 1'), ('MULTI3', 'Multi 3'), ('MULTI4', 'Multi 4')] string='Document model'
  • cttexpress_document_offset Integer
    string='Document Offset'
  • cttexpress_label_delay Float
    default=1 help='The server might not be ready to deliver the label right after the shipping is saved. We need to introduce a little delay. Tipacally 1 s will be enough' string='Label Fetch Delay (seconds)'
  • cttexpress_password Char
    string='Password'
  • cttexpress_shipping_type Selection
    selection=CTTEXPRESS_SERVICES string='Shipping type'
  • cttexpress_user Char
    string='User'
  • delivery_type Selection
    selection_add=[('cttexpress', 'CTT Express')]
Public methods (6)
  • action_ctt_validate_user(self)
    Maps to API's ValidateUser method :raises UserError: If the user credentials aren't valid
  • cttexpress_cancel_shipment(self, pickings)
    Cancel the expedition :param recordset: pickings `stock.picking` recordset :returns boolean: True if success
  • cttexpress_get_label(self, reference)
    Generate label for picking :param str reference: shipping reference :returns tuple: (file_content, file_name)
  • cttexpress_get_tracking_link(self, picking)
    Wildcard method for CTT Express tracking link. :param record picking: `stock.picking` record :return str: tracking url
  • cttexpress_send_shipping(self, pickings)
    CTT Express wildcard method called when a picking is confirmed :param record pickings: `stock.picking` recordset :raises UserError: On any API error :return dict: With tracking number and delivery price (always 0)
  • cttexpress_tracking_state_update(self, picking)
    Wildcard method for CTT Express tracking followup :param recod picking: `stock.picking` record

New fields (0)

No new fields.

Public methods (1)
  • cttexpress_get_label(self)
    Get label for current picking :return tuple: (filename, filecontent)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/delivery-carrier
PULL REQUEST
PULL REQUEST[19.0][MIG] delivery_cttexpress: Migration to 19.0 (#1157)