Delivery Schenker

delivery_schenker
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_schenker
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYStock
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Studio73
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Studio73
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, sergio, oca-ci
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
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 zeep
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module links the [DB Schenker](https://www.dbschenker.com) booking
and tracking APIs with Odoo delivery system.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
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 (3)

New fields (22)
  • delivery_type Selection
    ondelete={'schenker': 'set default'} selection_add=[('schenker', 'DB Schenker')]
  • schenker_access_key Char
    help='Schenker Access Key' string='Access Key'
  • schenker_barcode_a4_separated Boolean
    default=False help='For A4 define if the labels shall be printed on separate pages' string='Barcode Separated'
  • schenker_barcode_a4_start_pos Integer
    default=1 help='For A4 format you can define the starting position' string='Barcode Start Position'
  • schenker_barcode_format Selection
    default='A6' selection=[('A4', 'A4'), ('A6', 'A6')] string='Barcode Format'
  • schenker_barcode_mail Char
    help='Optional: send a barcode copy to this email address' string='Barcode Copy Email'
  • schenker_booking_type Selection
    default='land' help='Choose Schenker booking type. Only land is currently supported' selection=[('land', 'Land'), ('air', 'Air'), ('ocean_fcl', 'Ocean FCL'), ('ocean_lcl', 'Ocean LCL')] string='Booking Type'
  • schenker_default_package_type_id Many2one → stock.package.type
    comodel_name='stock.package.type' domain=[('package_carrier_type', '=', 'schenker')] help="If not delivery package or the package doesn't have defined the packaging it will default to this type" string='Default Package Type'
  • schenker_express Boolean
    help='Defines if shipment is express' string='Express'
  • schenker_food_related Boolean
    help='Defines if shipment is food related' string='Food Related'
  • schenker_group_id Char
    string='Group'
  • schenker_heated_transport Boolean
    help='Defines if shipment is required heated transport' string='Heated Transport'
  • schenker_home_delivery Boolean
    help='Defines if shipment is required home delivery' string='Home Delivery'
  • schenker_incoterm_id Many2one → account.incoterms
    comodel_name='account.incoterms' help="It will be overriden by the sale order one if it's specified." string='Default Incoterm'
  • schenker_indoor_delivery Boolean
    help='Defines if indoor delivery is required' string='Indoor Delivery'
  • schenker_measure_unit Selection
    default='VOLUME' help='The proper request will be formed accordingly from the picking' selection=[('VOLUME', 'Volume'), ('LOADING_METERS', 'Loading meters'), ('PIECES', 'Pieces'), ('PALLET_SPACE', 'Pallet space')] string='Measure Unit'
  • schenker_own_pickup Boolean
    help='Defines if shipment is required own pickup' string='Own Pickup'
  • schenker_pharmaceuticals Boolean
    help='Defines if shipment is pharmaceutical' string='Pharmaceuticals'
  • schenker_service_air Selection
    help='Air shipping product options. Depending on your customer account, some services could not be available' selection=[('f', 'DB SCHENKERjetcargo first'), ('s', 'DB SCHENKERjetcargo special'), ('b', 'DB SCHENKERjetcargo business'), ('e', 'DB SCHENKERjetcargo economy'), ('eagd', 'DB SCHENKERjetexpress gold'), ('easv', 'DB SCHENKERjetexpress silver')] string='Air service'
  • schenker_service_land Selection
    help='Land shipping product options. Depending on your customer account, some services could not be available' selection=[('CON', 'DBSchenkerconcepts'), ('DIR', 'DBSchenkerdirects'), ('LPA', 'DBSchenkerparcel Logistics Parcel'), ('PAL', 'DBSchenkerpallets'), ('PRI', 'DBSchenkerprivpark'), ('auc0', 'austroexpress PUNKT 10'), ('auc2', 'austroexpress PUNKT 12'), ('auc8', 'austroexpress PUNKT 8'), ('aucc', 'austroexpress PUNKT 17'), ('auco', 'austrocargo'), ('ecsp', 'SCHENKERsystem-plus'), ('ect1', 'DB SCHENKERspeed 10'), ('ect2', 'DB SCHENKERspeed 12'), ('sch2', 'DB SCHENKERtop 12'), ('schs', 'DB SCHENKERsystem international'), ('sysd', 'DB SCHENKERsystem domestic'), ('scht', 'DB SCHENKERtop'), ('schx', 'DB SCHENKERsystem fix'), ('ecpa', 'DB SCHENKERparcel'), ('ect8', 'DB SCHENKERspeed 8'), ('ectn', 'DB SCHENKERspeed'), ('40', 'DB SCHENKERsystem classic'), ('41', 'DB SCHENKERsystem speed'), ('42', 'DB SCHENKERsystem fixday'), ('43', 'DBSchenker System'), ('44', 'DBSchenker System Premium'), ('71', 'DB SCHENKERdirect')] string='Land service'
  • schenker_service_type Selection
    help='Defines service type: D2D, D2P, P2D, P2P, D2A, A2D, A2A. Depending on the Transport mode the service will be validated. For instance if the transport mode is AIR, the service type A2A (AirportToAirport)' selection=[('D2D', 'Door-to-door'), ('D2P', 'Door-to-port'), ('P2D', 'Port-to-door'), ('D2A', 'Door-to-airport'), ('A2D', 'Airport-to-door'), ('A2A', 'Aiport-to-airport')] string='Service Type'
  • schenker_user Char
    string='User'
Public methods (8)
  • onchange_schenker_booking_type(self)
    @api.onchange('schenker_booking_type')
    Avoid by UX that the user could choose another shipping method. In the future, this can be removed as long as those method have the proper support
  • onchange_schenker_measure_unit(self)
    @api.onchange('schenker_measure_unit')
    Avoid by UX that the user could choose another measure unit. Proper pallet calculation structure should be provided to use the other API options. A hook method is provided though.
  • schenker_cancel_shipment(self, pickings)
    Cancel the expedition :param pickings - stock.picking recordset :returns pdf file
  • schenker_get_label(self, reference)
    Generate label for picking :param picking - stock.picking record :returns pdf file
  • schenker_get_tracking_link(self, picking)
    Provide tracking link for the customer
  • schenker_rate_shipment(self, order)
    There's no public API so another price method should be used.
  • schenker_send_shipping(self, pickings)
    Send booking request to Schenker :param pickings: A recordset of pickings :return list: A list of dictionaries although in practice it's called one by one and only the first item in the dict is taken. Due to this design, we have to inject vals in the context to be able to add them to the message.
  • schenker_tracking_state_update(self, picking)
    Tracking state update

New fields (2)
  • package_carrier_type Selection
    selection_add=[('schenker', 'DB Schenker')]
  • schenker_stackable Boolean
    help='Define if the package is stackable by default' string='Stackable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • schenker_get_label(self)
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_schenker
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYStock
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Studio73
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Studio73
COMMITTERS
COMMITTERSOCA-git-bot, javierjcf, 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
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 zeep
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module links the [DB Schenker](https://www.dbschenker.com) booking
and tracking APIs with Odoo delivery system.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
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 (3)

New fields (22)
  • delivery_type Selection
    ondelete={'schenker': 'set default'} selection_add=[('schenker', 'DB Schenker')]
  • schenker_access_key Char
    help='Schenker Access Key' string='Access Key'
  • schenker_barcode_a4_separated Boolean
    default=False help='For A4 define if the labels shall be printed on separate pages' string='Barcode Separated'
  • schenker_barcode_a4_start_pos Integer
    default=1 help='For A4 format you can define the starting position' string='Barcode Start Position'
  • schenker_barcode_format Selection
    default='A6' selection=[('A4', 'A4'), ('A6', 'A6')] string='Barcode Format'
  • schenker_barcode_mail Char
    help='Optional: send a barcode copy to this email address' string='Barcode Copy Email'
  • schenker_booking_type Selection
    default='land' help='Choose Schenker booking type. Only land is currently supported' selection=[('land', 'Land'), ('air', 'Air'), ('ocean_fcl', 'Ocean FCL'), ('ocean_lcl', 'Ocean LCL')] string='Booking Type'
  • schenker_default_package_type_id Many2one → stock.package.type
    comodel_name='stock.package.type' domain=[('package_carrier_type', '=', 'schenker')] help="If not delivery package or the package doesn't have defined the packaging it will default to this type" string='Default Package Type'
  • schenker_express Boolean
    help='Defines if shipment is express' string='Express'
  • schenker_food_related Boolean
    help='Defines if shipment is food related' string='Food Related'
  • schenker_group_id Char
    string='Group'
  • schenker_heated_transport Boolean
    help='Defines if shipment is required heated transport' string='Heated Transport'
  • schenker_home_delivery Boolean
    help='Defines if shipment is required home delivery' string='Home Delivery'
  • schenker_incoterm_id Many2one → account.incoterms
    comodel_name='account.incoterms' help="It will be overriden by the sale order one if it's specified." string='Default Incoterm'
  • schenker_indoor_delivery Boolean
    help='Defines if indoor delivery is required' string='Indoor Delivery'
  • schenker_measure_unit Selection
    default='VOLUME' help='The proper request will be formed accordingly from the picking' selection=[('VOLUME', 'Volume'), ('LOADING_METERS', 'Loading meters'), ('PIECES', 'Pieces'), ('PALLET_SPACE', 'Pallet space')] string='Measure Unit'
  • schenker_own_pickup Boolean
    help='Defines if shipment is required own pickup' string='Own Pickup'
  • schenker_pharmaceuticals Boolean
    help='Defines if shipment is pharmaceutical' string='Pharmaceuticals'
  • schenker_service_air Selection
    help='Air shipping product options. Depending on your customer account, some services could not be available' selection=[('f', 'DB SCHENKERjetcargo first'), ('s', 'DB SCHENKERjetcargo special'), ('b', 'DB SCHENKERjetcargo business'), ('e', 'DB SCHENKERjetcargo economy'), ('eagd', 'DB SCHENKERjetexpress gold'), ('easv', 'DB SCHENKERjetexpress silver')] string='Air service'
  • schenker_service_land Selection
    help='Land shipping product options. Depending on your customer account, some services could not be available' selection=[('CON', 'DBSchenkerconcepts'), ('DIR', 'DBSchenkerdirects'), ('LPA', 'DBSchenkerparcel Logistics Parcel'), ('PAL', 'DBSchenkerpallets'), ('PRI', 'DBSchenkerprivpark'), ('auc0', 'austroexpress PUNKT 10'), ('auc2', 'austroexpress PUNKT 12'), ('auc8', 'austroexpress PUNKT 8'), ('aucc', 'austroexpress PUNKT 17'), ('auco', 'austrocargo'), ('ecsp', 'SCHENKERsystem-plus'), ('ect1', 'DB SCHENKERspeed 10'), ('ect2', 'DB SCHENKERspeed 12'), ('sch2', 'DB SCHENKERtop 12'), ('schs', 'DB SCHENKERsystem international'), ('sysd', 'DB SCHENKERsystem domestic'), ('scht', 'DB SCHENKERtop'), ('schx', 'DB SCHENKERsystem fix'), ('ecpa', 'DB SCHENKERparcel'), ('ect8', 'DB SCHENKERspeed 8'), ('ectn', 'DB SCHENKERspeed'), ('40', 'DB SCHENKERsystem classic'), ('41', 'DB SCHENKERsystem speed'), ('42', 'DB SCHENKERsystem fixday'), ('43', 'DBSchenker System'), ('44', 'DBSchenker System Premium'), ('71', 'DB SCHENKERdirect')] string='Land service'
  • schenker_service_type Selection
    help='Defines service type: D2D, D2P, P2D, P2P, D2A, A2D, A2A. Depending on the Transport mode the service will be validated. For instance if the transport mode is AIR, the service type A2A (AirportToAirport)' selection=[('D2D', 'Door-to-door'), ('D2P', 'Door-to-port'), ('P2D', 'Port-to-door'), ('D2A', 'Door-to-airport'), ('A2D', 'Airport-to-door'), ('A2A', 'Aiport-to-airport')] string='Service Type'
  • schenker_user Char
    string='User'
Public methods (8)
  • onchange_schenker_booking_type(self)
    @api.onchange('schenker_booking_type')
    Avoid by UX that the user could choose another shipping method. In the future, this can be removed as long as those method have the proper support
  • onchange_schenker_measure_unit(self)
    @api.onchange('schenker_measure_unit')
    Avoid by UX that the user could choose another measure unit. Proper pallet calculation structure should be provided to use the other API options. A hook method is provided though.
  • schenker_cancel_shipment(self, pickings)
    Cancel the expedition :param pickings - stock.picking recordset :returns pdf file
  • schenker_get_label(self, reference)
    Generate label for picking :param picking - stock.picking record :returns pdf file
  • schenker_get_tracking_link(self, picking)
    Provide tracking link for the customer
  • schenker_rate_shipment(self, order)
    There's no public API so another price method should be used.
  • schenker_send_shipping(self, pickings)
    Send booking request to Schenker :param pickings: A recordset of pickings :return list: A list of dictionaries although in practice it's called one by one and only the first item in the dict is taken. Due to this design, we have to inject vals in the context to be able to add them to the message.
  • schenker_tracking_state_update(self, picking)
    Tracking state update

New fields (2)
  • package_carrier_type Selection
    selection_add=[('schenker', 'DB Schenker')]
  • schenker_stackable Boolean
    help='Define if the package is stackable by default' string='Stackable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • schenker_get_label(self)
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_schenker
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYStock
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Studio73
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Studio73
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, ferran-S73
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
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 zeep
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
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 (3)

New fields (22)
  • delivery_type Selection
    ondelete={'schenker': 'set default'} selection_add=[('schenker', 'DB Schenker')]
  • schenker_access_key Char
    help='Schenker Access Key' string='Access Key'
  • schenker_barcode_a4_separated Boolean
    default=False help='For A4 define if the labels shall be printed on separate pages' string='Barcode Separated'
  • schenker_barcode_a4_start_pos Integer
    default=1 help='For A4 format you can define the starting position' string='Barcode Start Position'
  • schenker_barcode_format Selection
    default='A6' selection=[('A4', 'A4'), ('A6', 'A6')] string='Barcode Format'
  • schenker_barcode_mail Char
    help='Optional: send a barcode copy to this email address' string='Barcode Copy Email'
  • schenker_booking_type Selection
    default='land' help='Choose Schenker booking type. Only land is currently supported' selection=[('land', 'Land'), ('air', 'Air'), ('ocean_fcl', 'Ocean FCL'), ('ocean_lcl', 'Ocean LCL')] string='Booking Type'
  • schenker_default_package_type_id Many2one → stock.package.type
    comodel_name='stock.package.type' domain=[('package_carrier_type', '=', 'schenker')] help="If not delivery package or the package doesn't have defined the packaging it will default to this type" string='Default Package Type'
  • schenker_express Boolean
    help='Defines if shipment is express' string='Express'
  • schenker_food_related Boolean
    help='Defines if shipment is food related' string='Food Related'
  • schenker_group_id Char
    string='Group'
  • schenker_heated_transport Boolean
    help='Defines if shipment is required heated transport' string='Heated Transport'
  • schenker_home_delivery Boolean
    help='Defines if shipment is required home delivery' string='Home Delivery'
  • schenker_incoterm_id Many2one → account.incoterms
    comodel_name='account.incoterms' help="It will be overriden by the sale order one if it's specified." string='Default Incoterm'
  • schenker_indoor_delivery Boolean
    help='Defines if indoor delivery is required' string='Indoor Delivery'
  • schenker_measure_unit Selection
    default='VOLUME' help='The proper request will be formed accordingly from the picking' selection=[('VOLUME', 'Volume'), ('LOADING_METERS', 'Loading meters'), ('PIECES', 'Pieces'), ('PALLET_SPACE', 'Pallet space')] string='Measure Unit'
  • schenker_own_pickup Boolean
    help='Defines if shipment is required own pickup' string='Own Pickup'
  • schenker_pharmaceuticals Boolean
    help='Defines if shipment is pharmaceutical' string='Pharmaceuticals'
  • schenker_service_air Selection
    help='Air shipping product options. Depending on your customer account, some services could not be available' selection=[('f', 'DB SCHENKERjetcargo first'), ('s', 'DB SCHENKERjetcargo special'), ('b', 'DB SCHENKERjetcargo business'), ('e', 'DB SCHENKERjetcargo economy'), ('eagd', 'DB SCHENKERjetexpress gold'), ('easv', 'DB SCHENKERjetexpress silver')] string='Air service'
  • schenker_service_land Selection
    help='Land shipping product options. Depending on your customer account, some services could not be available' selection=[('CON', 'DBSchenkerconcepts'), ('DIR', 'DBSchenkerdirects'), ('LPA', 'DBSchenkerparcel Logistics Parcel'), ('PAL', 'DBSchenkerpallets'), ('PRI', 'DBSchenkerprivpark'), ('auc0', 'austroexpress PUNKT 10'), ('auc2', 'austroexpress PUNKT 12'), ('auc8', 'austroexpress PUNKT 8'), ('aucc', 'austroexpress PUNKT 17'), ('auco', 'austrocargo'), ('ecsp', 'SCHENKERsystem-plus'), ('ect1', 'DB SCHENKERspeed 10'), ('ect2', 'DB SCHENKERspeed 12'), ('sch2', 'DB SCHENKERtop 12'), ('schs', 'DB SCHENKERsystem international'), ('sysd', 'DB SCHENKERsystem domestic'), ('scht', 'DB SCHENKERtop'), ('schx', 'DB SCHENKERsystem fix'), ('ecpa', 'DB SCHENKERparcel'), ('ect8', 'DB SCHENKERspeed 8'), ('ectn', 'DB SCHENKERspeed'), ('40', 'DB SCHENKERsystem classic'), ('41', 'DB SCHENKERsystem speed'), ('42', 'DB SCHENKERsystem fixday'), ('43', 'DBSchenker System'), ('44', 'DBSchenker System Premium'), ('71', 'DB SCHENKERdirect')] string='Land service'
  • schenker_service_type Selection
    help='Defines service type: D2D, D2P, P2D, P2P, D2A, A2D, A2A. Depending on the Transport mode the service will be validated. For instance if the transport mode is AIR, the service type A2A (AirportToAirport)' selection=[('D2D', 'Door-to-door'), ('D2P', 'Door-to-port'), ('P2D', 'Port-to-door'), ('D2A', 'Door-to-airport'), ('A2D', 'Airport-to-door'), ('A2A', 'Aiport-to-airport')] string='Service Type'
  • schenker_user Char
    string='User'
Public methods (8)
  • onchange_schenker_booking_type(self)
    @api.onchange('schenker_booking_type')
    Avoid by UX that the user could choose another shipping method. In the future, this can be removed as long as those method have the proper support
  • onchange_schenker_measure_unit(self)
    @api.onchange('schenker_measure_unit')
    Avoid by UX that the user could choose another measure unit. Proper pallet calculation structure should be provided to use the other API options. A hook method is provided though.
  • schenker_cancel_shipment(self, pickings)
    Cancel the expedition :param pickings - stock.picking recordset :returns pdf file
  • schenker_get_label(self, reference)
    Generate label for picking :param picking - stock.picking record :returns pdf file
  • schenker_get_tracking_link(self, picking)
    Provide tracking link for the customer
  • schenker_rate_shipment(self, order)
    There's no public API so another price method should be used.
  • schenker_send_shipping(self, pickings)
    Send booking request to Schenker :param pickings: A recordset of pickings :return list: A list of dictionaries although in practice it's called one by one and only the first item in the dict is taken. Due to this design, we have to inject vals in the context to be able to add them to the message.
  • schenker_tracking_state_update(self, picking)
    Tracking state update

New fields (2)
  • package_carrier_type Selection
    selection_add=[('schenker', 'DB Schenker')]
  • schenker_stackable Boolean
    help='Define if the package is stackable by default' string='Stackable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • schenker_get_label(self)
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_schenker
VERSION
VERSION 2.2.1
CATEGORY
CATEGORYStock
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Studio73
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Studio73
COMMITTERS
COMMITTERSoca-travis, Weblate, OCA-git-bot, Ethan Hildick, Michael Tietz, oca-ci, Joshua Lauer, vnikolayev1
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 (2)
XML IDNameModelTypeStatus
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 (3)

New fields (25)
  • delivery_type Selection
    ondelete={'schenker': 'set default'} selection_add=[('schenker', 'DB Schenker')]
  • schenker_access_key Char
    help='Schenker Access Key' string='Access Key'
  • schenker_address_number Char
    help='ID assigned by Schenker to you.\nWill be part of the sender or if set, the invoice address.' args: 'Address ID'
  • schenker_barcode_a4_separated Boolean
    default=False help='For A4 define if the labels shall be printed on separate pages' string='Barcode Separated'
  • schenker_barcode_a4_start_pos Integer
    default=1 help='For A4 format you can define the starting position' string='Barcode Start Position'
  • schenker_barcode_format Selection
    default='A6' selection=[('A4', 'A4'), ('A6', 'A6')] string='Barcode Format'
  • schenker_barcode_mail Char
    help='Optional: send a barcode copy to this email address' string='Barcode Copy Email'
  • schenker_booking_type Selection
    default='land' help='Choose Schenker booking type. Only land is currently supported' selection=[('land', 'Land'), ('air', 'Air'), ('ocean_fcl', 'Ocean FCL'), ('ocean_lcl', 'Ocean LCL')] string='Booking Type'
  • schenker_default_packaging_id Many2one → product.packaging
    comodel_name='product.packaging' domain=[('package_carrier_type', '=', 'schenker')] help="If not delivery package or the package doesn't have defined the packagingit will default to this type" string='Default Package Type'
  • schenker_express Boolean
    help='Defines if shipment is express' string='Express'
  • schenker_food_related Boolean
    help='Defines if shipment is food related' string='Food Related'
  • schenker_group_id Char
    string='Group'
  • schenker_heated_transport Boolean
    help='Defines if shipment is required heated transport' string='Heated Transport'
  • schenker_home_delivery Boolean
    help='Defines if shipment is required home delivery' string='Home Delivery'
  • schenker_incoterm_id Many2one → account.incoterms
    comodel_name='account.incoterms' help="It will be overriden by the sale order one if it's specified." string='Default Incoterm'
  • schenker_indoor_delivery Boolean
    help='Defines if indoor delivery is required' string='Indoor Delivery'
  • schenker_measure_unit Selection
    default='VOLUME' help='The proper request will be formed accordingly from the picking' selection=[('VOLUME', 'Volume'), ('LOADING_METERS', 'Loading meters'), ('PIECES', 'Pieces'), ('PALLET_SPACE', 'Pallet space')] string='Measure Unit'
  • schenker_own_pickup Boolean
    help='Defines if shipment is required own pickup' string='Own Pickup'
  • schenker_partner_invoice_id Many2one → res.partner
    help='If set, this contact will be sent as invoice address to Schenker.\nIf Address ID is set, it will be part of it instead of the sender' ondelete='restrict' args: 'res.partner', 'Invoice Address'
  • schenker_pharmaceuticals Boolean
    help='Defines if shipment is pharmaceutical' string='Pharmaceuticals'
  • schenker_service_air Selection
    help='Air shipping product options. Depending on your customer account, some services could not be available' selection=[('f', 'DB SCHENKERjetcargo first'), ('s', 'DB SCHENKERjetcargo special'), ('b', 'DB SCHENKERjetcargo business'), ('e', 'DB SCHENKERjetcargo economy'), ('eagd', 'DB SCHENKERjetexpress gold'), ('easv', 'DB SCHENKERjetexpress silver')] string='Air service'
  • schenker_service_land Selection
    help='Land shipping product options. Depending on your customer account, some services could not be available' selection=[('CON', 'DBSchenkerconcepts'), ('DIR', 'DBSchenkerdirects'), ('LPA', 'DBSchenkerparcel Logistics Parcel'), ('PAL', 'DBSchenkerpallets'), ('PRI', 'DBSchenkerprivpark'), ('auc0', 'austroexpress PUNKT 10'), ('auc2', 'austroexpress PUNKT 12'), ('auc8', 'austroexpress PUNKT 8'), ('aucc', 'austroexpress PUNKT 17'), ('auco', 'austrocargo'), ('ecsp', 'SCHENKERsystem-plus'), ('ect1', 'DB SCHENKERspeed 10'), ('ect2', 'DB SCHENKERspeed 12'), ('sch2', 'DB SCHENKERtop 12'), ('schs', 'DB SCHENKERsystem international'), ('sysd', 'DB SCHENKERsystem domestic'), ('scht', 'DB SCHENKERtop'), ('schx', 'DB SCHENKERsystem fix'), ('ecpa', 'DB SCHENKERparcel'), ('ect8', 'DB SCHENKERspeed 8'), ('ectn', 'DB SCHENKERspeed'), ('40', 'DB SCHENKERsystem classic'), ('41', 'DB SCHENKERsystem speed'), ('42', 'DB SCHENKERsystem fixday'), ('43', 'DBSchenker System'), ('44', 'DBSchenker System Premium'), ('71', 'DB SCHENKERdirect')] string='Land service'
  • schenker_service_type Selection
    help='Defines service type: D2D, D2P, P2D, P2P, D2A, A2D, A2A. Depending on the Transport mode the service will be validated. For instance if the transport mode is AIR, the service type A2A (AirportToAirport)' selection=[('D2D', 'Door-to-door'), ('D2P', 'Door-to-port'), ('P2D', 'Port-to-door'), ('D2A', 'Door-to-airport'), ('A2D', 'Airport-to-door'), ('A2A', 'Aiport-to-airport')] string='Service Type'
  • schenker_submit_booking Boolean
    default=True help='Submit Booking On Schenker site.\nIf set, submits booking on site automatically.\nIf not set, user has to submit booking manually.' string='Submit Booking'
  • schenker_user Char
    string='User'
Public methods (8)
  • onchange_schenker_booking_type(self)
    @api.onchange('schenker_booking_type')
    Avoid by UX that the user could choose another shipping method. In the future, this can be removed as long as those method have the proper support
  • onchange_schenker_measure_unit(self)
    @api.onchange('schenker_measure_unit')
    Avoid by UX that the user could choose another measure unit. Proper pallet calculation structure should be provided to use the other API options. A hook method is provided though.
  • schenker_cancel_shipment(self, pickings)
    Cancel the expedition :param pickings - stock.picking recordset :returns pdf file
  • schenker_get_label(self, reference)
    Generate label for picking :param picking - stock.picking record :returns pdf file
  • schenker_get_tracking_link(self, picking)
    Provide tracking link for the customer
  • schenker_rate_shipment(self, order)
    There's no public API so another price method should be used.
  • schenker_send_shipping(self, pickings)
    Send booking request to Schenker :param pickings: A recordset of pickings :return list: A list of dictionaries although in practice it's called one by one and only the first item in the dict is taken. Due to this design, we have to inject vals in the context to be able to add them to the message.
  • schenker_tracking_state_update(self, picking)
    Tracking state update

New fields (2)
  • package_carrier_type Selection
    selection_add=[('schenker', 'DB Schenker')]
  • schenker_stackable Boolean
    help='Define if the package is stackable by default' string='Stackable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • schenker_get_label(self)
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_schenker
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYStock
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA)
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA)
COMMITTERS
COMMITTERSdavid, oca-travis, Weblate, OCA-git-bot
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 (2)
XML IDNameModelTypeStatus
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 (3)

New fields (22)
  • delivery_type Selection
    selection_add=[('schenker', 'DB Schenker')]
  • schenker_access_key Char
    help='Schenker Access Key' string='Access Key'
  • schenker_barcode_a4_separated Boolean
    default=False help='For A4 define if the labels shall be printed on separate pages' string='Barcode Separated'
  • schenker_barcode_a4_start_pos Integer
    default=1 help='For A4 format you can define the starting position' string='Barcode Start Position'
  • schenker_barcode_format Selection
    default='A6' selection=[('A4', 'A4'), ('A6', 'A6')] string='Barcode Format'
  • schenker_barcode_mail Char
    help='Optional: send a barcode copy to this email address' string='Barcode Copy Email'
  • schenker_booking_type Selection
    default='land' help='Choose Schenker booking type. Only land is currently supported' selection=[('land', 'Land'), ('air', 'Air'), ('ocean_fcl', 'Ocean FCL'), ('ocean_lcl', 'Ocean LCL')] string='Booking Type'
  • schenker_default_packaging_id Many2one → product.packaging
    comodel_name='product.packaging' domain=[('package_carrier_type', '=', 'schenker')] help="If not delivery package or the package doesn't have defined the packagingit will default to this type" string='Default Package Type'
  • schenker_express Boolean
    help='Defines if shipment is express' string='Express'
  • schenker_food_related Boolean
    help='Defines if shipment is food related' string='Food Related'
  • schenker_group_id Char
    string='Group'
  • schenker_heated_transport Boolean
    help='Defines if shipment is required heated transport' string='Heated Transport'
  • schenker_home_delivery Boolean
    help='Defines if shipment is required home delivery' string='Home Delivery'
  • schenker_incoterm_id Many2one → account.incoterms
    comodel_name='account.incoterms' help="It will be overriden by the sale order one if it's specified." string='Default Incoterm'
  • schenker_indoor_delivery Boolean
    help='Defines if indoor delivery is required' string='Indoor Delivery'
  • schenker_measure_unit Selection
    default='VOLUME' help='The proper request will be formed accordingly from the picking' selection=[('VOLUME', 'Volume'), ('LOADING_METERS', 'Loading meters'), ('PIECES', 'Pieces'), ('PALLET_SPACE', 'Pallet space')] string='Measure Unit'
  • schenker_own_pickup Boolean
    help='Defines if shipment is required own pickup' string='Own Pickup'
  • schenker_pharmaceuticals Boolean
    help='Defines if shipment is pharmaceutical' string='Pharmaceuticals'
  • schenker_service_air Selection
    help='Air shipping product options. Depending on your customer account, some services could not be available' selection=[('f', 'DB SCHENKERjetcargo first'), ('s', 'DB SCHENKERjetcargo special'), ('b', 'DB SCHENKERjetcargo business'), ('e', 'DB SCHENKERjetcargo economy'), ('eagd', 'DB SCHENKERjetexpress gold'), ('easv', 'DB SCHENKERjetexpress silver')] string='Air service'
  • schenker_service_land Selection
    help='Land shipping product options. Depending on your customer account, some services could not be available' selection=[('CON', 'DBSchenkerconcepts'), ('DIR', 'DBSchenkerdirects'), ('LPA', 'DBSchenkerparcel Logistics Parcel'), ('PAL', 'DBSchenkerpallets'), ('PRI', 'DBSchenkerprivpark'), ('auc0', 'austroexpress PUNKT 10'), ('auc2', 'austroexpress PUNKT 12'), ('auc8', 'austroexpress PUNKT 8'), ('aucc', 'austroexpress PUNKT 17'), ('auco', 'austrocargo'), ('ecsp', 'SCHENKERsystem-plus'), ('ect1', 'DB SCHENKERspeed 10'), ('ect2', 'DB SCHENKERspeed 12'), ('sch2', 'DB SCHENKERtop 12'), ('schs', 'DB SCHENKERsystem international'), ('sysd', 'DB SCHENKERsystem domestic'), ('scht', 'DB SCHENKERtop'), ('schx', 'DB SCHENKERsystem fix'), ('ecpa', 'DB SCHENKERparcel'), ('ect8', 'DB SCHENKERspeed 8'), ('ectn', 'DB SCHENKERspeed'), ('40', 'DB SCHENKERsystem classic'), ('41', 'DB SCHENKERsystem speed'), ('42', 'DB SCHENKERsystem fixday'), ('43', 'DBSchenker System'), ('44', 'DBSchenker System Premium'), ('71', 'DB SCHENKERdirect')] string='Land service'
  • schenker_service_type Selection
    help='Defines service type: D2D, D2P, P2D, P2P, D2A, A2D, A2A. Depending on the Transport mode the service will be validated. For instance if the transport mode is AIR, the service type A2A (AirportToAirport)' selection=[('D2D', 'Door-to-door'), ('D2P', 'Door-to-port'), ('P2D', 'Port-to-door'), ('D2A', 'Door-to-airport'), ('A2D', 'Airport-to-door'), ('A2A', 'Aiport-to-airport')] string='Service Type'
  • schenker_user Char
    string='User'
Public methods (8)
  • onchange_schenker_booking_type(self)
    @api.onchange('schenker_booking_type')
    Avoid by UX that the user could choose another shipping method. In the future, this can be removed as long as those method have the proper support
  • onchange_schenker_measure_unit(self)
    @api.onchange('schenker_measure_unit')
    Avoid by UX that the user could choose another measure unit. Proper pallet calculation structure should be provided to use the other API options. A hook method is provided though.
  • schenker_cancel_shipment(self, pickings)
    Cancel the expedition :param pickings - stock.picking recordset :returns pdf file
  • schenker_get_label(self, reference)
    Generate label for picking :param picking - stock.picking record :returns pdf file
  • schenker_get_tracking_link(self, picking)
    Provide tracking link for the customer
  • schenker_rate_shipment(self, order)
    There's no public API so another price method should be used.
  • schenker_send_shipping(self, pickings)
    Send booking request to Schenker :param pickings: A recordset of pickings :return list: A list of dictionaries although in practice it's called one by one and only the first item in the dict is taken. Due to this design, we have to inject vals in the context to be able to add them to the message.
  • schenker_tracking_state_update(self, picking)
    Tracking state update

New fields (2)
  • package_carrier_type Selection
    selection_add=[('schenker', 'DB Schenker')]
  • schenker_stackable Boolean
    help='Define if the package is stackable by default' string='Stackable'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • schenker_get_label(self)