Delivery MRW

delivery_mrw
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/17.0/delivery_mrw
VERSION
VERSION 1.0.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
COMMITTERSWeblate, OCA-git-bot, oca-ci, eduezerouali-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:19:59
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
Este módulo integra la API de MRW España con Odoo. No es válido para
integraciones de MRW en otros países, que podrían usar otras APIs.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
delivery_mrw_manifest_wizard_form mrw.manifest.wizard form New
mrw_manifest_report_view mrw_manifest_report_view ir.ui.view qweb New
mrw_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={'mrw': 'set default'} selection_add=[('mrw', 'MRW')]
  • international_shipping Boolean
    default=False
  • mrw_api_filter_type Integer
    default=0 help='0 for tracking number; 1 for reference; 2 package reference' string='Filter Type'
  • mrw_api_information_type Integer
    default=0 help='0 for Basic Information; 1 for Detailed' string='Information Type'
  • mrw_api_language Char
    default='3082' help='3082 for Spanish; 2070 for Portuguese' string='Language Code'
  • mrw_client_code Char
    string='Client Code'
  • mrw_department_code Char
    string='Department Code'
  • mrw_en_franquicia Selection
    default='N' help='Indicador de entrega en franquicia.' selection=[('N', 'Sin recogida ni entrega en franquicia.'), ('R', 'Con recogida en franquicia.'), ('E', 'Con entrega en franquicia.'), ('A', 'Con recogida y entrega en franquicia')]
  • mrw_franquicia_code Char
    string='Franquicia Code'
  • mrw_horario_from Float
  • mrw_horario_to Float
    default=23.99
  • mrw_international_service Selection
    default='PAC' help='Set the MRW Service' selection=MRW_INTERNATIONAL_SERVICES string='MRW Service'
  • mrw_label_left_margin Integer
    default=2
  • mrw_label_top_margin Integer
    default=2
  • mrw_national_service Selection
    default='0300' help='Set the MRW Service' selection=MRW_NATIONAL_SERVICES string='MRW Service'
  • mrw_notification_channel Selection
    selection=[('1', 'Email'), ('2', 'SMS')] string='Notification Channel'
  • mrw_notification_type Selection
    help='Confirmación de entrega: informa de la entrega del envío en destino.Nota: Solo para SMS.\nSeguimiento de envío: informa los diferentes estados de tránsitodel envío.\nAviso de entrega en franquicia: informa al destinatario del envíoque la mercancía está disponible en la franquicia de destino. Solotendrá sentido para entrega en franquicia, y será obligatorio.\nPreaviso de entrega: informa al destinatario del envío de la fechade entrega de la mercancía. Solo tendrá sentido cuando NO seaentrega en franquicia.\nConfirmación de recogida: informa al destinatario que el envío hasido recogido en origen. Solo tendrá sentido cuando NO seaentrega en franquicia. Nota: Solo para SMS.\n' selection=[('1', 'Confirmación de entrega (solo SMS)'), ('2', 'Seguimiento de envío'), ('3', 'Aviso de entrega en franquicia'), ('4', 'Preaviso de entrega'), ('5', 'Confirmación de recogida (solo SMS)')] string='Notification Type'
  • mrw_password Char
    string='Password'
  • mrw_reembolso Selection
    default='N' help='Indicador de reembolso. El importe del reembolso será cogido del pedido de venta.' selection=[('N', 'Sin reembolso'), ('O', 'Con reembolso comisión en origen'), ('D', 'Con reembolso comisión en destino')]
  • mrw_retorno Selection
    default='N' selection=[('N', 'Sin retorno'), ('D', 'Retorno de albarán cobro en destino'), ('S', 'Retorno de mercancia')]
  • mrw_service Char
    compute='_compute_mrw_service'
  • mrw_username Char
    string='Username'
Public methods (12)
  • action_get_manifest(self)
    Action to launch the manifest wizard
  • check_mrw_en_franquicia(self)
    @api.constrains('mrw_en_franquicia')
  • get_notifications(self, partner)
  • mrw_address(self, partner, international)
  • mrw_cancel_shipment(self, pickings)
    "Cancel the expedition :param pickings - stock.picking recordset :returns tracking_number of shippig cancelled
  • mrw_create_shipping(self, picking)
    Send the package to mrw :param picking: 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.
  • mrw_get_label(self, mrw_tracking_ref, picking)
    Generate label for picking :param picking - stock.picking record :returns pdf file
  • mrw_get_tracking_link(self, picking)
    Provide tracking link for the customer
  • mrw_rate_shipment(self, order)
    There's no public API so another price method should be used.
  • mrw_send_shipping(self, pickings)
  • mrw_tracking_state_update(self, picking)
    Tracking state update
  • remove_found_regex_from_string(self, regex, string)

New fields (2)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'mrw')] help='If no service is selected, all MRW type shippment methods will be printed' string='MRW Service'
  • date_from Date
    default=fields.Date.context_today required=True
Public methods (2)
  • get_manifest(self)
    List of shippings for the given dates
  • get_service_selection_value(self, field, picking)

New fields (0)

No new fields.

Public methods (1)
  • mrw_get_label(self)
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/16.0/delivery_mrw
VERSION
VERSION 1.0.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
COMMITTERSOCA-git-bot, oca-ci, Miguel
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:40
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 (5)
XML IDNameModelTypeStatus
delivery_mrw_manifest_wizard_form mrw.manifest.wizard form New
mrw_manifest_report_view mrw_manifest_report_view ir.ui.view qweb New
mrw_view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
mrw_view_immediate_transfer stock.immediate.transfer xpath Inherits stock.view_immediate_transfer
view_picking_withcarrier_out_form stock.picking xpath Inherits delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (22)
  • delivery_type Selection
    ondelete={'mrw': 'set default'} selection_add=[('mrw', 'MRW')]
  • international_shipping Boolean
    default=False
  • mrw_api_filter_type Integer
    default=0 help='0 for tracking number; 1 for reference; 2 package reference' string='Filter Type'
  • mrw_api_information_type Integer
    default=0 help='0 for Basic Information; 1 for Detailed' string='Information Type'
  • mrw_api_language Char
    default='3082' help='3082 for Spanish; 2070 for Portuguese' string='Language Code'
  • mrw_client_code Char
    string='Client Code'
  • mrw_department_code Char
    string='Department Code'
  • mrw_en_franquicia Selection
    default='N' help='Indicador de entrega en franquicia.' selection=[('N', 'Sin recogida ni entrega en franquicia.'), ('R', 'Con recogida en franquicia.'), ('E', 'Con entrega en franquicia.'), ('A', 'Con recogida y entrega en franquicia')]
  • mrw_franquicia_code Char
    string='Franquicia Code'
  • mrw_horario_from Float
  • mrw_horario_to Float
    default=23.99
  • mrw_international_service Selection
    default='PAC' help='Set the MRW Service' selection=MRW_INTERNATIONAL_SERVICES string='MRW Service'
  • mrw_label_left_margin Integer
    default=2
  • mrw_label_top_margin Integer
    default=2
  • mrw_national_service Selection
    default='0300' help='Set the MRW Service' selection=MRW_NATIONAL_SERVICES string='MRW Service'
  • mrw_notification_channel Selection
    selection=[('1', 'Email'), ('2', 'SMS')] string='Notification Channel'
  • mrw_notification_type Selection
    help='Confirmación de entrega: informa de la entrega del envío en destino.Nota: Solo para SMS.\nSeguimiento de envío: informa los diferentes estados de tránsitodel envío.\nAviso de entrega en franquicia: informa al destinatario del envíoque la mercancía está disponible en la franquicia de destino. Solotendrá sentido para entrega en franquicia, y será obligatorio.\nPreaviso de entrega: informa al destinatario del envío de la fechade entrega de la mercancía. Solo tendrá sentido cuando NO seaentrega en franquicia.\nConfirmación de recogida: informa al destinatario que el envío hasido recogido en origen. Solo tendrá sentido cuando NO seaentrega en franquicia. Nota: Solo para SMS.\n' selection=[('1', 'Confirmación de entrega (solo SMS)'), ('2', 'Seguimiento de envío'), ('3', 'Aviso de entrega en franquicia'), ('4', 'Preaviso de entrega'), ('5', 'Confirmación de recogida (solo SMS)')] string='Notification Type'
  • mrw_password Char
    string='Password'
  • mrw_reembolso Selection
    default='N' help='Indicador de reembolso. El importe del reembolso será cogido del pedido de venta.' selection=[('N', 'Sin reembolso'), ('O', 'Con reembolso comisión en origen'), ('D', 'Con reembolso comisión en destino')]
  • mrw_retorno Selection
    default='N' selection=[('N', 'Sin retorno'), ('D', 'Retorno de albarán cobro en destino'), ('S', 'Retorno de mercancia')]
  • mrw_service Char
    compute='_compute_mrw_service'
  • mrw_username Char
    string='Username'
Public methods (12)
  • action_get_manifest(self)
    Action to launch the manifest wizard
  • check_mrw_en_franquicia(self)
    @api.constrains('mrw_en_franquicia')
  • get_notifications(self, partner)
  • mrw_address(self, partner, international)
  • mrw_cancel_shipment(self, pickings)
    "Cancel the expedition :param pickings - stock.picking recordset :returns tracking_number of shippig cancelled
  • mrw_create_shipping(self, picking)
    Send the package to mrw :param picking: 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.
  • mrw_get_label(self, mrw_tracking_ref, picking)
    Generate label for picking :param picking - stock.picking record :returns pdf file
  • mrw_get_tracking_link(self, picking)
    Provide tracking link for the customer
  • mrw_rate_shipment(self, order)
    There's no public API so another price method should be used.
  • mrw_send_shipping(self, pickings)
  • mrw_tracking_state_update(self, picking)
    Tracking state update
  • remove_found_regex_from_string(self, regex, string)

New fields (2)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'mrw')] help='If no service is selected, all MRW type shippment methods will be printed' string='MRW Service'
  • date_from Date
    default=fields.Date.context_today required=True
Public methods (2)
  • get_manifest(self)
    List of shippings for the given dates
  • get_service_selection_value(self, field, picking)

New fields (1)
  • mrw_to_address Html
    readonly=True args: 'Address sent to MRW'
Public methods (1)
  • default_get(self, fields)

New fields (0)

No new fields.

Public methods (1)
  • mrw_get_label(self)
REPOSITORY
REPOSITORYOCA/l10n-spain
GIT
GIThttps://github.com/OCA/l10n-spain.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-spain/tree/14.0/delivery_mrw
VERSION
VERSION 1.1.4
CATEGORY
CATEGORYStock
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, cubells, Weblate, OCA-git-bot, Eric Antones, Ethan Hildick, oca-ci, mariadforgeflow
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-spain
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:49
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 (5)
XML IDNameModelTypeStatus
delivery_mrw_manifest_wizard_form mrw.manifest.wizard form New
mrw_manifest_report_view mrw_manifest_report_view ir.ui.view qweb New
mrw_view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
mrw_view_immediate_transfer stock.immediate.transfer xpath Inherits delivery_package_number.view_immediate_transfer
view_picking_withcarrier_out_form stock.picking xpath Inherits delivery.view_picking_withcarrier_out_form
Models touched (4)

New fields (22)
  • delivery_type Selection
    ondelete={'mrw': 'set default'} selection_add=[('mrw', 'MRW')]
  • international_shipping Boolean
    default=False
  • mrw_api_filter_type Integer
    default=0 help='0 for tracking number; 1 for reference; 2 package reference' string='Filter Type'
  • mrw_api_information_type Integer
    default=0 help='0 for Basic Information; 1 for Detailed' string='Information Type'
  • mrw_api_language Char
    default='3082' help='3082 for Spanish; 2070 for Portuguese' string='Language Code'
  • mrw_client_code Char
    string='Client Code'
  • mrw_department_code Char
    string='Department Code'
  • mrw_en_franquicia Selection
    default='N' help='Indicador de entrega en franquicia.' selection=[('N', 'Sin recogida ni entrega en franquicia.'), ('R', 'Con recogida en franquicia.'), ('E', 'Con entrega en franquicia.'), ('A', 'Con recogida y entrega en franquicia')]
  • mrw_franquicia_code Char
    string='Franquicia Code'
  • mrw_horario_from Float
  • mrw_horario_to Float
    default=23.99
  • mrw_international_service Selection
    default='PAC' help='Set the MRW Service' selection=MRW_INTERNATIONAL_SERVICES string='MRW Service'
  • mrw_label_left_margin Integer
    default=2
  • mrw_label_top_margin Integer
    default=2
  • mrw_national_service Selection
    default='0300' help='Set the MRW Service' selection=MRW_NATIONAL_SERVICES string='MRW Service'
  • mrw_notification_channel Selection
    selection=[('1', 'Email'), ('2', 'SMS')] string='Notification Channel'
  • mrw_notification_type Selection
    help='Confirmación de entrega: informa de la entrega del envío en destino.Nota: Solo para SMS.\nSeguimiento de envío: informa los diferentes estados de tránsitodel envío.\nAviso de entrega en franquicia: informa al destinatario del envíoque la mercancía está disponible en la franquicia de destino. Solotendrá sentido para entrega en franquicia, y será obligatorio.\nPreaviso de entrega: informa al destinatario del envío de la fechade entrega de la mercancía. Solo tendrá sentido cuando NO seaentrega en franquicia.\nConfirmación de recogida: informa al destinatario que el envío hasido recogido en origen. Solo tendrá sentido cuando NO seaentrega en franquicia. Nota: Solo para SMS.\n' selection=[('1', 'Confirmación de entrega (solo SMS)'), ('2', 'Seguimiento de envío'), ('3', 'Aviso de entrega en franquicia'), ('4', 'Preaviso de entrega'), ('5', 'Confirmación de recogida (solo SMS)')] string='Notification Type'
  • mrw_password Char
    string='Password'
  • mrw_reembolso Selection
    default='N' help='Indicador de reembolso. El importe del reembolso será cogido del pedido de venta.' selection=[('N', 'Sin reembolso'), ('O', 'Con reembolso comisión en origen'), ('D', 'Con reembolso comisión en destino')]
  • mrw_retorno Selection
    default='N' selection=[('N', 'Sin retorno'), ('D', 'Retorno de albarán cobro en destino'), ('S', 'Retorno de mercancia')]
  • mrw_service Char
    compute='_compute_mrw_service'
  • mrw_username Char
    string='Username'
Public methods (12)
  • action_get_manifest(self)
    Action to launch the manifest wizard
  • check_mrw_en_franquicia(self)
    @api.constrains('mrw_en_franquicia')
  • get_notificaciones(self, partner)
  • mrw_address(self, partner, international)
  • mrw_cancel_shipment(self, pickings)
    "Cancel the expedition :param pickings - stock.picking recordset :returns tracking_number of shippig cancelled
  • mrw_create_shipping(self, picking)
    Send the package to mrw :param picking: 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.
  • mrw_get_label(self, mrw_tracking_ref, picking)
    Generate label for picking :param picking - stock.picking record :returns pdf file
  • mrw_get_tracking_link(self, picking)
    Provide tracking link for the customer
  • mrw_rate_shipment(self, order)
    There's no public API so another price method should be used.
  • mrw_send_shipping(self, pickings)
  • mrw_tracking_state_update(self, picking)
    Tracking state update
  • remove_found_regex_from_string(self, regex, string)

New fields (2)
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain=[('delivery_type', '=', 'mrw')] help='If no service is selected, all MRW type shippment methods will be printed' string='MRW Service'
  • date_from Date
    default=fields.Date.context_today required=True
Public methods (2)
  • get_manifest(self)
    List of shippings for the given dates
  • get_service_selection_value(self, field, picking)

New fields (1)
  • mrw_to_address Html
    readonly=True args: 'Address sent to MRW'
Public methods (1)
  • default_get(self, fields)

New fields (0)

No new fields.

Public methods (1)
  • mrw_get_label(self)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/l10n-spain
PULL REQUEST
PULL REQUEST[18.0][MIG] delivery_mrw: Migration to 18.0 (#4758)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/l10n-spain
PULL REQUEST
PULL REQUEST[19.0][MIG] delivery_mrw: Migration to 19.0 (#4995)