Skip to content

Commit

Permalink
Merge e744c53 into daac72e
Browse files Browse the repository at this point in the history
  • Loading branch information
mbcosta committed Dec 8, 2015
2 parents daac72e + e744c53 commit 14caa62
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 85 deletions.
21 changes: 21 additions & 0 deletions account_fiscal_position_rule_stock/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,22 @@
# -*- coding: utf-8 -*-
###############################################################################
#
# account_fiscal_position_rule_stock for OpenERP
# Copyright (C) 2009 Akretion <http://www.akretion.com>
# @author Renato Lima <renato.lima@akretion.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################

from . import models
7 changes: 3 additions & 4 deletions account_fiscal_position_rule_stock/__openerp__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# coding: utf-8
# -*- coding: utf-8 -*-
###############################################################################
#
# account_fiscal_position_rule_stock for OpenERP
Expand All @@ -21,7 +21,7 @@

{
'name': 'Account Fiscal Position Rule Stock',
'version': '8.0.1.0.0',
'version': '9.0.1.0.0',
'category': 'Generic Modules/Accounting',
'author': "Akretion,Odoo Community Association (OCA)",
'license': 'AGPL-3',
Expand All @@ -36,8 +36,7 @@
],
'test': [
'tests/account_fiscal_position_rule_stock_test.yml',
'tests/sale_order_test.yml',
'tests/invoice_from_picking_test.yml'
],
'installable': False,
'installable': True,
}
2 changes: 1 addition & 1 deletion account_fiscal_position_rule_stock/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
###############################################################################
#
# account_fiscal_position_rule_stock for OpenERP
Expand Down
44 changes: 26 additions & 18 deletions account_fiscal_position_rule_stock/models/stock_picking.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# coding: utf-8
# -*- coding: utf-8 -*-
###############################################################################
#
# account_fiscal_position_rule_stock for OpenERP
Expand Down Expand Up @@ -26,8 +26,8 @@ class StockMove(models.Model):
_inherit = 'stock.move'

def _prepare_picking_assign(self, cr, uid, move, context=None):
result = super(StockMove, self)._prepare_picking_assign(cr, uid,
move, context)
result = super(StockMove, self)._prepare_picking_assign(
cr, uid, move, context)

result['fiscal_position'] = \
move.procurement_id.sale_line_id.order_id.fiscal_position and \
Expand All @@ -38,40 +38,48 @@ def _prepare_picking_assign(self, cr, uid, move, context=None):
class StockPicking(models.Model):
_inherit = "stock.picking"

fiscal_position = fields.Many2one(
fiscal_position_id = fields.Many2one(
'account.fiscal.position', string='Fiscal Position'
)

def _fiscal_position_map(self, result, **kwargs):
def _fiscal_position_map(self, **kwargs):
ctx = dict(self._context)
ctx.update({'use_domain': ('use_picking', '=', True)})
return self.env['account.fiscal.position.rule'].with_context(
ctx).apply_fiscal_mapping(result, **kwargs)
ctx).apply_fiscal_mapping(**kwargs)

@api.multi
def onchange_partner_id(self, partner_id=None, company_id=None):
result = {'value': {'fiscal_position': False}}
result = {'value': {'fiscal_position_id': False}}

if not partner_id or not company_id:
return result

partner = self.env['res.partner'].browse(partner_id)
partner_address = partner.address_get(['invoice', 'delivery'])
obj_partner = self.env['res.partner'].browse(partner_id)
partner_address = obj_partner.address_get(['invoice', 'delivery'])

obj_company = self.env['res.company'].browse(company_id)
obj_partner_shipping = self.env['res.partner'].browse(partner_address['delivery'])
obj_partner_invoice = self.env['res.partner'].browse(partner_address['invoice'])

kwargs = {
'company_id': company_id,
'partner_id': partner_id,
'partner_shipping_id': partner_address['delivery'],
'partner_invoice_id': partner_address['invoice'],
'company_id': obj_company,
'partner_id': obj_partner,
'partner_shipping_id': obj_partner_shipping,
'partner_invoice_id': obj_partner_invoice,
}
return self._fiscal_position_map(result, **kwargs)

def _get_invoice_vals(self, cr, uid, key, inv_type, journal_id, move,
context=None):
obj_fiscal_position = self._fiscal_position_map(**kwargs)
if type(obj_fiscal_position) is not dict:
return {'value': {'fiscal_position_id': obj_fiscal_position.id}}

def _get_invoice_vals(self, cr, uid, key, inv_type,
journal_id, move, context=None):
inv_vals = super(StockPicking, self)._get_invoice_vals(
cr, uid, key, inv_type, journal_id, move, context=context)
inv_vals.update({
'fiscal_position': (move.picking_id.fiscal_position and
move.picking_id.fiscal_position.id),
'fiscal_position_id': (
move.picking_id.fiscal_position_id and
move.picking_id.fiscal_position_id.id),
})
return inv_vals
Original file line number Diff line number Diff line change
Expand Up @@ -9,83 +9,80 @@
-
!record {model: account.fiscal.position, id: fiscal_position_test2}:
name: External sale
company_id: base.main_company
company_id: base.main_company
-
I create a partner to sale
-
!record {model: res.partner, id: res_partner_test}:
name: Danimar
company_id: base.main_company
-
I create another partner partner
I create another partner
-
!record {model: res.partner, id: res_partner_test2}:
name: Ribeiro
company_id: base.main_company
property_account_position: fiscal_position_test2
property_account_position_id: fiscal_position_test2
-
I create a picking with the first partner
-
!record {model: stock.picking, id: stock_picking_test}:
partner_id: account_fiscal_position_rule_stock.res_partner_test
invoice_state: 2binvoiced
picking_type_id: stock.picking_type_in
move_lines:
- product_id: product.product_product_8
- product_id: product.product_product_8
product_uom_qty: 16
location_id: stock.stock_location_suppliers
location_dest_id: stock.stock_location_stock
-
I verify that the onchange was correctly triggered
-
!assert {model: stock.picking, id: account_fiscal_position_rule_stock.stock_picking_test, string: The onchange function of partner was not correctly triggered}:
- fiscal_position.id == False
- move_lines[0].product_id.id == ref('product.product_product_8')
- fiscal_position_id.id == False
- move_lines[0].product_id.id == ref('product.product_product_8')
- move_lines[0].product_uom_qty == 16
-
Now I create a account fiscal rule to set the correct fiscal position
-
!record {model: account.fiscal.position.rule, id: account_fiscal_position_rule_test}:
name: General Rule
fiscal_position_id: account_fiscal_position_rule_stock.fiscal_position_test
company_id: base.main_company
use_picking: True
company_id: base.main_company
use_picking: True
-
I create a picking with the first partner and the fiscal rule should set the fiscal position
-
!record {model: stock.picking, id: stock_picking_test2}:
partner_id: account_fiscal_position_rule_stock.res_partner_test
invoice_state: 2binvoiced
picking_type_id: stock.picking_type_in
move_lines:
- product_id: product.product_product_8
- product_id: product.product_product_8
product_uom_qty: 16
location_id: stock.stock_location_suppliers
location_dest_id: stock.stock_location_stock
-
I verify that the onchange was correctly triggered
-
!assert {model: stock.picking, id: account_fiscal_position_rule_stock.stock_picking_test2, string: Fiscal Rule is being ignored - wrong fiscal position}:
- fiscal_position.id == ref('account_fiscal_position_rule_stock.fiscal_position_test')
- move_lines[0].product_id.id == ref('product.product_product_8')
- fiscal_position_id.id == ref('account_fiscal_position_rule_stock.fiscal_position_test')
- move_lines[0].product_id.id == ref('product.product_product_8')
- move_lines[0].product_uom_qty == 16
-
I create a picking with the second partner and the fiscal rule should not set the fiscal position
because the position fiscal on partner should have higher priority
-
!record {model: stock.picking, id: stock_picking_test3}:
partner_id: account_fiscal_position_rule_stock.res_partner_test2
invoice_state: 2binvoiced
picking_type_id: stock.picking_type_in
move_lines:
- product_id: product.product_product_8
- product_id: product.product_product_8
product_uom_qty: 16
location_id: stock.stock_location_suppliers
location_dest_id: stock.stock_location_stock
-
I verify that the onchange was correctly triggered
-
!assert {model: stock.picking, id: account_fiscal_position_rule_stock.stock_picking_test3, string: Fiscal position from partner is being ignored}:
- fiscal_position.id == ref('account_fiscal_position_rule_stock.fiscal_position_test2')
- move_lines[0].product_id.id == ref('product.product_product_8')
- fiscal_position_id.id == ref('account_fiscal_position_rule_stock.fiscal_position_test2')
- move_lines[0].product_id.id == ref('product.product_product_8')
- move_lines[0].product_uom_qty == 16
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,17 @@
!record {model: account.fiscal.position.rule, id: account_fiscal_position_rule_test_invoice}:
name: General Rule
fiscal_position_id: account_fiscal_position_rule_stock.fiscal_position_test_invoice
company_id: base.main_company
company_id: base.main_company
use_picking: True
sequence: 5
-
I create a picking with the partner
-
!record {model: stock.picking, id: stock_picking_test_invoice}:
partner_id: account_fiscal_position_rule_stock.res_partner_test
invoice_state: 2binvoiced
picking_type_id: stock.picking_type_in
move_lines:
- product_id: product.product_product_8
- product_id: product.product_product_8
product_uom_qty: 16
location_id: stock.stock_location_suppliers
location_dest_id: stock.stock_location_stock
Expand All @@ -41,11 +40,14 @@
picking.action_confirm()
picking.do_transfer()
assert picking.state == 'done', "Picking state should be done"
invoice_ids = picking.action_invoice_create(
journal_id = journal_obj.search(cr, uid, [('type', '=', 'purchase')])[0],
group = False,
type = 'in_invoice')
for invoice in invoice_obj.browse(cr, uid, invoice_ids, context=context):
assert invoice.fiscal_position.id == ref('account_fiscal_position_rule_stock.fiscal_position_test_invoice'), 'Fiscal position in invoice not set correctly'
# The posibility to generate a invoice from picking were removed in version 9.0
# but it's important feature in some cases and for brazilian localization,
# by this reason i think will need to make a solution for this problem
#invoice_ids = picking.action_invoice_create(
# journal_id = journal_obj.search(cr, uid, [('type', '=', 'purchase')])[0],
# group = False,
# type = 'in_invoice')
#for invoice in invoice_obj.browse(cr, uid, invoice_ids, context=context):
# assert invoice.fiscal_position.id == ref('account_fiscal_position_rule_stock.fiscal_position_test_invoice'), 'Fiscal position in invoice not set correctly'


35 changes: 0 additions & 35 deletions account_fiscal_position_rule_stock/tests/sale_order_test.yml

This file was deleted.

2 changes: 1 addition & 1 deletion account_fiscal_position_rule_stock/views/stock_picking.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<field name="priority">24</field>
<field name="arch" type="xml">
<field name="backorder_id" position="after">
<field name="fiscal_position" attrs="{'readonly':[('invoice_state','!=','2binvoiced')]}" />
<field name="fiscal_position_id"/>
</field>
<field name="partner_id" position="attributes">
<attribute name="on_change">onchange_partner_id(partner_id, company_id, context)</attribute>
Expand Down

0 comments on commit 14caa62

Please sign in to comment.