Código fonte para l10n_br_delivery.models.sale
# -*- coding: utf-8 -*-
# Copyright (C) 2009 Renato Lima - Akretion
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
import time
from openerp import models, api, _
from openerp.exceptions import Warning as UserError
[documentos]class SaleOrder(models.Model):
_inherit = 'sale.order'
@api.model
def _prepare_invoice(self, order, lines):
"""Prepare the dict of values to create the new invoice for a
sale order. This method may be overridden to implement custom
invoice generation (making sure to call super() to establish
a clean extension chain).
:param browse_record order: sale.order record to invoice
:param list(int) line: list of invoice line IDs that must be
attached to the invoice
:return: dict of value to create() the invoice
"""
result = super(SaleOrder, self)._prepare_invoice(order, lines)
if order.carrier_id:
result['carrier_id'] = order.carrier_id.id
return result
# TODO Inplement this in object stock.move method _picking_assign
# def _prepare_order_picking(self, cr, uid, order, context=None):
# result = super(SaleOrder, self)._prepare_order_picking(
# cr, uid, order, context)
#
# # FIXME - Confirmado bug do OpenERP
# # https://bugs.launchpad.net/bugs/1161138
# # Esse campo já deveria ser copiado pelo módulo nativo delivery
# result['incoterm'] = order.incoterm and order.incoterm.id or False
# return result
@api.multi
[documentos] def delivery_set(self):
# Copia do modulo delivery
# Exceto pelo final que adiciona ao campo total do frete.
carrier_obj = self.env['delivery.carrier']
for order in self:
carrier = carrier_obj.browse(order.carrier_id.id)
grid_id = carrier.grid_get(contact_id=order.partner_shipping_id.id)
if not grid_id:
raise UserError(_('No Grid Available!'),
_('No grid matching for this carrier!'))
if order.state not in ('draft'):
raise UserError(_('Order not in Draft State!'),
_('The order state have to be draft \
to add delivery lines.'))
grid = self.env['delivery.grid'].browse(grid_id)
order.amount_freight = grid.get_price(
order, time.strftime('%Y-%m-%d'))[0]