Código fonte para l10n_br_stock_account.wizard.stock_return_picking

# -*- coding: utf-8 -*-
# Copyright (C) 2009  Renato Lima - Akretion
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html

from openerp import models, api, _
from openerp.exceptions import Warning as UserError
from openerp.tools.safe_eval import safe_eval


[documentos]class StockReturnPicking(models.TransientModel): _inherit = 'stock.return.picking' @api.model def _fiscal_position_map(self, result, **kwargs): ctx = dict(self.env.context) if ctx.get('fiscal_category_id'): kwargs['fiscal_category_id'] = ctx.get('fiscal_category_id') ctx.update({'use_domain': ('use_picking', '=', True)}) return self.env['account.fiscal.position.rule'].with_context( ctx).apply_fiscal_mapping(result, **kwargs) @api.multi
[documentos] def create_returns(self): """ Creates return picking. @param self: The object pointer. @return: A dictionary which of fields with values. """ context = dict(self.env.context) picking_obj = self.env['stock.picking'] move_obj = self.env['stock.move'] for send_picking in picking_obj.browse(context.get('active_id')): result = super(StockReturnPicking, self).create_returns() if self.invoice_state == '2binvoiced': result_domain = safe_eval(result['domain']) picking_ids = result_domain and result_domain[0] and \ result_domain[0][2] for picking in picking_obj.browse(picking_ids): fiscal_category_id = (send_picking.fiscal_category_id. refund_fiscal_category_id.id) if not fiscal_category_id: raise UserError( _('Error!'), _('This Fiscal Operation does not has Fiscal' ' Operation for Returns!')) values = { 'fiscal_category_id': fiscal_category_id, 'fiscal_position': False} partner_invoice_id = self.pool.get( 'res.partner').address_get( self._cr, self._uid, [picking.partner_id.id], ['invoice'])['invoice'] kwargs = { 'partner_id': picking.partner_id.id, 'partner_invoice_id': partner_invoice_id, 'partner_shipping_id': picking.partner_id.id, 'company_id': picking.company_id.id, 'context': context, 'fiscal_category_id': fiscal_category_id } values.update(self._fiscal_position_map( {'value': {}}, **kwargs).get('value')) picking.write(values) for move in picking.move_lines: line_fiscal_category_id = ( move.origin_returned_move_id. fiscal_category_id.refund_fiscal_category_id.id) kwargs.update( {'fiscal_category_id': line_fiscal_category_id}) self._fiscal_position_map( {'value': {}}, **kwargs).get('value') line_values = { 'invoice_state': self.invoice_state, 'fiscal_category_id': line_fiscal_category_id, } line_values.update(self._fiscal_position_map( {'value': {}}, **kwargs).get('value')) write_move = move_obj.browse(move.id) write_move.write(line_values) return result