Merge branch '8.0' into 8.0-squash_crm_rma_claim_make_claim_module_between_oca_vauxoo

This commit is contained in:
Yanina Aular (Vauxoo)
2015-12-29 10:11:46 -04:30
110 changed files with 14110 additions and 4060 deletions

View File

@@ -44,11 +44,13 @@ Available addons
----------------
addon | version | summary
--- | --- | ---
[crm_claim_rma](crm_claim_rma/) | 8.0.1.2.0 | RMA Claim (Product Return Management)
[crm_claim_rma](crm_claim_rma/) | 8.0.1.1.1 | RMA Claim (Product Return Management)
[crm_claim_rma_code](crm_claim_rma_code/) | 8.0.1.0.0 | CRM Claim RMA Code
[crm_rma_location](crm_rma_location/) | 8.0.1.0.0 | RMA Location
[crm_rma_lot_mass_return](crm_rma_lot_mass_return/) | 8.0.1.0.0 | RMA Claims Mass Return by Lot
[crm_rma_prodlot_invoice](crm_rma_prodlot_invoice/) | 8.0.1.0.0 | CRM Claim Prodlot Invoice
[crm_rma_prodlot_supplier](crm_rma_prodlot_supplier/) | 8.0.1.0.0 | Claim Prodlot Supplier
[crm_rma_stock_location](crm_rma_stock_location/) | 8.0.1.0.0 | RMA Stock Location
[product_warranty](product_warranty/) | 8.0.1.0.0 | Product warranty
Unported addons
@@ -57,10 +59,7 @@ addon | version | summary
--- | --- | ---
[crm_claim_categ_as_name](crm_claim_categ_as_name/) | 1.0 (unported) | crm_claim_categ_as_name
[crm_claim_ext](crm_claim_ext/) | 1.0 (unported) | CRM claim extension
[crm_rma_advance_location](crm_rma_advance_location/) | 1.0 (unported) | RMA Claims Advance Location
[crm_rma_by_shop](crm_rma_by_shop/) | 1.0 (unported) | RMA Claims by shop
[crm_rma_lot_mass_return](crm_rma_lot_mass_return/) | 1.0 (unported) | RMA Claims Mass Return by Lot
[crm_rma_stock_location](crm_rma_stock_location/) | 1.0 (unported) | RMA Stock Location
[//]: # (end addons)

View File

@@ -0,0 +1,75 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
==========================
CRM Claim Product Supplier
==========================
This module adds information in claim lines to keep supplier and supplier
invoice when creating/editing a claim.
As this module shows, this is not used directly be the end user, it may be used
as complementary for another modules to explode information stored by this one.
Installation
============
To install this module, just select it from available modules
Configuration
=============
Aditional configuration is not needed
Usage
=====
* End-user direct usage is not possible, all the functionality contained in this
module is done under the hood and no view is included
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/145/8.0
For further information, please visit:
* https://www.odoo.com/forum/help-1
Known issues / Roadmap
======================
No issues exists yet
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
`here <https://github.com/OCA/rma/issues/new?body=module:%20crm_claim_product_supplier%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Contributors
------------
* Yanina Aular <yanina.aular@vauxoo.com>
* Osval Reyes <osval@vauxoo.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit http://odoo-community.org.

View File

@@ -1,9 +1,8 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2013 Camptocamp
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
# Copyright 2015 Vauxoo
# Author: Yanina Aular
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -19,5 +18,5 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import stock
from . import wizard
from . import models

View File

@@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Yanina Aular
#
# 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/>.
#
##############################################################################
{
'name': 'CRM Claim Product Supplier',
'version': '8.0.1.0.0',
'author': 'Vauxoo, Odoo Community Association (OCA)',
'website': 'http://www.vauxoo.com/',
'license': 'AGPL-3',
'category': 'Generic Modules/CRM & SRM',
'depends': [
'crm_rma_lot_mass_return',
],
'installable': True,
'auto_install': False,
}

View File

@@ -0,0 +1,21 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_claim_product_supplier
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-14 19:24+0000\n"
"PO-Revision-Date: 2015-08-14 19:24+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: crm_claim_product_supplier
#: model:ir.model,name:crm_claim_product_supplier.model_claim_line
msgid "List of product to return"
msgstr ""

View File

@@ -0,0 +1,16 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_claim_product_supplier
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-17 18:01+0000\n"
"PO-Revision-Date: 2015-07-17 18:01+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Yanina Aular
#
# 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 claim_line

View File

@@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Yanina Aular
#
# 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 openerp import fields, models
class ClaimLine(models.Model):
_inherit = 'claim.line'
supplier_id = fields.Many2one(comodel_name='res.partner',
related='prodlot_id.supplier_id')
supplier_invoice_id = fields.Many2one(
comodel_name='account.invoice',
related="prodlot_id.supplier_invoice_line_id.invoice_id")

View File

@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author: Guewen Baconnier
# Copyright 2014 Camptocamp SA
# Copyright 2015 Vauxoo
# Author: Osval Reyes
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -19,12 +19,4 @@
#
##############################################################################
from openerp.osv import orm, fields
class StockWarehouse(orm.Model):
_inherit = 'stock.warehouse'
_columns = {
'lot_rma_id': fields.many2one('stock.location', 'Location RMA'),
}
from . import test_crm_claim_product_supplier

View File

@@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Osval Reyes
#
# 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 openerp.tests.common import TransactionCase
class TestCrmClaimProductSupplier(TransactionCase):
def setUp(self):
super(TestCrmClaimProductSupplier, self).setUp()
self.sale_order_id = self.env.ref(
'crm_rma_lot_mass_return.so_wizard_rma_1')
self.invoice_id = self.sale_order_id.invoice_ids[0]
self.metasearch_wizard = self.env['returned.lines.from.serial.wizard']
self.lot_id = self.env.ref(
'crm_rma_lot_mass_return.lot_purchase_wizard_rma_item_5')
# Create the claim with a claim line
self.claim_id = self.env['crm.claim'].create({
'name': 'TEST CLAIM',
'claim_type': self.ref('crm_claim_type.'
'crm_claim_type_customer'),
'partner_id': self.sale_order_id.partner_id.id,
})
wizard_id = self.metasearch_wizard.with_context({
'active_model': self.claim_id._name,
'active_id': self.claim_id.id,
'active_ids': [self.claim_id.id]
}).create({})
# Get ids for invoice lines
lines_list_id = wizard_id.onchange_load_products(
self.lot_id.name + '\n', [(6, 0, [])]
)['domain']['lines_list_id'][0][2]
# Get ids for invoice lines
lines_list_id = self.env['claim.line.wizard'].search(
[('lot_id.name', '=', 'IPAD0001')]).mapped('id')
wizard_id.option_ids = lines_list_id
wizard_id.lines_list_id = [(6, 0, lines_list_id)]
wizard_id.add_claim_lines()
def test_01_product_supplier(self):
claim_line_id = self.claim_id.claim_line_ids[0]
self.assertTrue(claim_line_id.supplier_id)
self.assertTrue(claim_line_id.supplier_invoice_id)

View File

@@ -71,6 +71,7 @@ Contributors:
* Joel Grand-Guillaume <joel.grandguillaume@camptocamp.com>
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
* Javier Carrasco <javier.carrasco@eezee-it.com>
* Yanina Aular <yanina.aular@vauxoo.com>
* Osval Reyes <osval@vauxoo.com>

1049
crm_claim_rma/i18n/en.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1049
crm_claim_rma/i18n/ro.po Normal file

File diff suppressed because it is too large Load Diff

1050
crm_claim_rma/i18n/sl.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_claim_rma_code
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-03 17:05+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: English (http://www.transifex.com/oca/OCA-rma-8-0/language/en/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: crm_claim_rma_code
#: field:crm.claim.type,ir_sequence_id:0
msgid "Sequence Code"
msgstr "Sequence Code"

View File

@@ -0,0 +1,24 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_claim_rma_code
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-05 22:30+0000\n"
"PO-Revision-Date: 2015-12-11 20:25+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-rma-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: crm_claim_rma_code
#: field:crm.claim.type,ir_sequence_id:0
msgid "Sequence Code"
msgstr "Zaporedna številka"

View File

@@ -1,65 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2013 Camptocamp
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
#
# 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/>.
#
##############################################################################
{'name': 'RMA Claims Advance Location',
'version': '1.0',
'category': 'Generic Modules/CRM & SRM',
'depends': ['crm_claim_rma',
'crm_rma_stock_location',
],
'author': "Akretion,Odoo Community Association (OCA)",
'license': 'AGPL-3',
'website': 'http://www.akretion.com',
'description': """
RMA Claim Advance Location
==========================
This module adds the following location on warehouses :
* Carrier Loss
* RMA
* Breakage Loss
* Refurbish
* Mistake Loss
And also various wizards on icoming deliveries that allow you to move your goods easily in those
new locations from a done reception.
Using this module make the logistic flow of return a bit more complexe:
* Returning product goes into RMA location with a incoming shipment
* From the incoming shipment, forward them to another places (stock, loss,...)
WARNING: Use with caution, this module is currently not yet completely debugged and is waiting his author to be.
""",
'images': [],
'demo': [],
'data': ['wizard/claim_make_picking_from_picking_view.xml',
'wizard/claim_make_picking_view.xml',
'stock_view.xml',
'stock_data.xml',
'claim_rma_view.xml',
],
'installable': False,
'application': True,
}

View File

@@ -1,20 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="crm_claim_rma_form_view">
<field name="name">CRM - Claim product return Form</field>
<field name="model">crm.claim</field>
<field name="inherit_id" ref="crm_claim_rma.crm_claim_rma_form_view"/>
<field name="arch" type="xml">
<xpath expr="//button[@string='New Delivery']" position="after">
<button name="%(action_claim_picking_loss)d"
string="New Product Loss" states="open"
type="action" target="new"
context="{'warehouse_id': warehouse_id,
'partner_id': partner_id}"/>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@@ -1,122 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * crm_rma_advance_location
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-15 13:27+0000\n"
"PO-Revision-Date: 2013-11-15 13:27+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: crm_rma_advance_location
#: model:ir.actions.act_window,name:crm_rma_advance_location.action_claim_picking_loss
msgid "Create Products Loss"
msgstr ""
#. module: crm_rma_advance_location
#: model:ir.actions.act_window,name:crm_rma_advance_location.action_used_picking_from_claim_picking
msgid "Create Incomming Shipment to Refurbish Location"
msgstr ""
#. module: crm_rma_advance_location
#: view:claim_make_picking_from_picking.wizard:0
msgid "Locations"
msgstr ""
#. module: crm_rma_advance_location
#: view:claim_make_picking_from_picking.wizard:0
msgid "Select lines for picking"
msgstr ""
#. module: crm_rma_advance_location
#: model:stock.location,name:crm_rma_advance_location.stock_location_breakage_loss
msgid "Breakage Loss"
msgstr ""
#. module: crm_rma_advance_location
#: model:ir.model,name:crm_rma_advance_location.model_claim_make_picking_wizard
msgid "Wizard to create pickings from claim lines"
msgstr ""
#. module: crm_rma_advance_location
#: model:stock.location,name:crm_rma_advance_location.stock_location_carrier_loss
msgid "Carrier Loss"
msgstr ""
#. module: crm_rma_advance_location
#: model:stock.location,name:crm_rma_advance_location.stock_location_mistake_loss
msgid "Mistake Loss"
msgstr ""
#. module: crm_rma_advance_location
#: model:ir.actions.act_window,name:crm_rma_advance_location.action_loss_picking_from_claim_picking
msgid "Create Incomming Shipment to Breakkage Loss Location"
msgstr ""
#. module: crm_rma_advance_location
#: view:stock.picking.in:0
msgid "Product to refurbish stock"
msgstr ""
#. module: crm_rma_advance_location
#: model:ir.model,name:crm_rma_advance_location.model_stock_warehouse
msgid "Warehouse"
msgstr ""
#. module: crm_rma_advance_location
#: model:stock.location,name:crm_rma_advance_location.stock_location_rma
msgid "RMA"
msgstr ""
#. module: crm_rma_advance_location
#: model:stock.location,name:crm_rma_advance_location.stock_location_refurbish
msgid "Refurbish"
msgstr ""
#. module: crm_rma_advance_location
#: view:stock.picking.in:0
msgid "Product to stock"
msgstr ""
#. module: crm_rma_advance_location
#: model:ir.actions.act_window,name:crm_rma_advance_location.action_stock_picking_from_claim_picking
msgid "Create Incomming Shipment to Stock"
msgstr ""
#. module: crm_rma_advance_location
#: view:claim_make_picking_from_picking.wizard:0
msgid "Create picking"
msgstr ""
#. module: crm_rma_advance_location
#: view:claim_make_picking_from_picking.wizard:0
msgid "Cancel"
msgstr ""
#. module: crm_rma_advance_location
#: view:crm.claim:0
msgid "New Product Loss"
msgstr ""
#. module: crm_rma_advance_location
#: model:ir.model,name:crm_rma_advance_location.model_claim_make_picking_from_picking_wizard
msgid "Wizard to create pickings from picking lines"
msgstr ""
#. module: crm_rma_advance_location
#: view:stock.picking.in:0
msgid "Product to Loss"
msgstr ""
#. module: crm_rma_advance_location
#: view:claim_make_picking_from_picking.wizard:0
msgid "Select lines to add in picking"
msgstr ""

View File

@@ -1,39 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2013 Camptocamp
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
#
# 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 openerp.osv import fields, orm
class stock_warehouse(orm.Model):
_inherit = "stock.warehouse"
_columns = {
'lot_carrier_loss_id': fields.many2one(
'stock.location',
'Location Carrier Loss'),
'lot_breakage_loss_id': fields.many2one(
'stock.location',
'Location Breakage Loss'),
'lot_refurbish_id': fields.many2one(
'stock.location',
'Location Refurbish'),
}

View File

@@ -1,36 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--
Default Values for : Stock Location
-->
<record id="stock_location_carrier_loss" model="stock.location">
<field name="name">Carrier Loss</field>
<field name="usage">internal</field>
<field name="location_id" ref="stock.stock_location_company"/>
</record>
<record id="stock_location_breakage_loss" model="stock.location">
<field name="name">Breakage Loss</field>
<field name="usage">internal</field>
<field name="location_id" ref="stock.stock_location_company"/>
</record>
<record id="stock_location_refurbish" model="stock.location">
<field name="name">Refurbish</field>
<field name="usage">internal</field>
<field name="location_id" ref="stock.stock_location_company"/>
</record>
<record id="stock_location_mistake_loss" model="stock.location">
<field name="name">Mistake Loss</field>
<field name="usage">internal</field>
<field name="location_id" ref="stock.stock_location_company"/>
</record>
<!--
Default Values for : Stock Warehouse
-->
<record id="stock.warehouse0" model="stock.warehouse">
<field name="lot_breakage_loss_id" ref="stock_location_breakage_loss"/>
<field name="lot_carrier_loss_id" ref="stock_location_carrier_loss"/>
<field name="lot_refurbish_id" ref="stock_location_refurbish"/>
</record>
</data>
</openerp>

View File

@@ -1,53 +0,0 @@
# -*- coding: utf-8 -*-
#########################################################################
# #
# #
#########################################################################
# #
# crm_claim_rma for OpenERP #
# Copyright (C) 2009-2012 Akretion, Emmanuel Samyn, #
# Benoît GUILLOT <benoit.guillot@akretion.com> #
#This program is free software: you can redistribute it and/or modify #
#it under the terms of the GNU 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 General Public License for more details. #
# #
#You should have received a copy of the GNU General Public License #
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
#########################################################################
from openerp.osv import orm
class claim_make_picking(orm.TransientModel):
_inherit = 'claim_make_picking.wizard'
def _get_dest_loc(self, cr, uid, context=None):
""" Get default destination location """
loc_id = super(claim_make_picking, self)._get_dest_loc(cr, uid, context=context)
if context is None:
context = {}
warehouse_obj = self.pool.get('stock.warehouse')
warehouse_id = context.get('warehouse_id')
if context.get('picking_type') == 'in':
loc_id = warehouse_obj.read(
cr, uid,
warehouse_id,
['lot_rma_id'],
context=context)['lot_rma_id'][0]
elif context.get('picking_type') == 'loss':
loc_id = warehouse_obj.read(
cr, uid,
warehouse_id,
['lot_carrier_loss_id'],
context=context)['lot_carrier_loss_id'][0]
return loc_id
_defaults = {
'claim_line_dest_location': _get_dest_loc,
}

View File

@@ -1,169 +0,0 @@
# -*- coding: utf-8 -*-
#########################################################################
# #
# #
#########################################################################
# #
# crm_claim_rma for OpenERP #
# Copyright (C) 2009-2012 Akretion, Emmanuel Samyn, #
# Benoît GUILLOT <benoit.guillot@akretion.com> #
#This program is free software: you can redistribute it and/or modify #
#it under the terms of the GNU 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 General Public License for more details. #
# #
#You should have received a copy of the GNU General Public License #
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
#########################################################################
from openerp.osv import fields, orm
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
from openerp import netsvc
import time
class claim_make_picking_from_picking(orm.TransientModel):
_name = 'claim_make_picking_from_picking.wizard'
_description = 'Wizard to create pickings from picking lines'
_columns = {
'picking_line_source_location': fields.many2one('stock.location',
'Source Location',
help="Location where the returned products are from.",
required=True),
'picking_line_dest_location': fields.many2one('stock.location',
'Dest. Location',
help="Location where the system will stock the returned products.",
required=True),
'picking_line_ids': fields.many2many('stock.move',
'claim_picking_line_picking',
'claim_picking_id',
'picking_line_id',
'Picking lines'),
}
def _get_default_warehouse(self, cr, uid, context=None):
warehouse_id=self.pool.get('crm.claim')._get_default_warehouse(cr, uid, context=context)
return warehouse_id
def _get_picking_lines(self, cr, uid, context):
return self.pool.get('stock.picking').read(cr, uid,
context['active_id'], ['move_lines'], context=context)['move_lines']
# Get default source location
def _get_source_loc(self, cr, uid, context):
if context is None:
context = {}
warehouse_obj = self.pool.get('stock.warehouse')
warehouse_id = self._get_default_warehouse(cr, uid, context=context)
return warehouse_obj.read(cr, uid,
warehouse_id, ['lot_rma_id'], context=context)['lot_rma_id'][0]
# Get default destination location
def _get_dest_loc(self, cr, uid, context):
if context is None:
context = {}
warehouse_id = self._get_default_warehouse(cr, uid, context=context)
warehouse_obj = self.pool.get('stock.warehouse')
if context.get('picking_type'):
context_loc = context.get('picking_type')[8:]
loc_field = 'lot_%s_id' %context.get('picking_type')[8:]
loc_id = warehouse_obj.read(cr, uid,
warehouse_id, [loc_field], context=context)[loc_field][0]
return loc_id
_defaults = {
'picking_line_source_location': _get_source_loc,
'picking_line_dest_location': _get_dest_loc,
'picking_line_ids': _get_picking_lines,
}
def action_cancel(self,cr,uid,ids,conect=None):
return {'type': 'ir.actions.act_window_close',}
# If "Create" button pressed
def action_create_picking_from_picking(self, cr, uid, ids, context=None):
picking_obj = self.pool.get('stock.picking')
move_obj = self.pool.get('stock.move')
view_obj = self.pool.get('ir.ui.view')
if context is None:
context = {}
p_type = 'internal'
if context.get('picking_type'):
context_type = context.get('picking_type')[8:]
note = 'Internal picking from RMA to %s' %context_type
name = 'Internal picking to %s' %context_type
view_id = view_obj.search(cr, uid, [
('xml_id', '=', 'view_picking_form'),
('model', '=', 'stock.picking'),
('type', '=', 'form'),
('name', '=', 'stock.picking.form')
], context=context)[0]
wizard = self.browse(cr, uid, ids[0], context=context)
prev_picking = picking_obj.browse(cr, uid,
context['active_id'], context=context)
partner_id = prev_picking.partner_id.id
# create picking
picking_id = picking_obj.create(cr, uid, {
'origin': prev_picking.origin,
'type': p_type,
'move_type': 'one', # direct
'state': 'draft',
'date': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
'partner_id': prev_picking.partner_id.id,
'invoice_state': "none",
'company_id': prev_picking.company_id.id,
'location_id': wizard.picking_line_source_location.id,
'location_dest_id': wizard.picking_line_dest_location.id,
'note' : note,
'claim_id': prev_picking.claim_id.id,
})
# Create picking lines
for wizard_picking_line in wizard.picking_line_ids:
move_id = move_obj.create(cr, uid, {
'name' : wizard_picking_line.product_id.name_template, # Motif : crm id ? stock_picking_id ?
'priority': '0',
#'create_date':
'date': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
'date_expected': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
'product_id': wizard_picking_line.product_id.id,
'product_qty': wizard_picking_line.product_qty,
'product_uom': wizard_picking_line.product_uom.id,
'partner_id': prev_picking.partner_id.id,
'prodlot_id': wizard_picking_line.prodlot_id.id,
# 'tracking_id':
'picking_id': picking_id,
'state': 'draft',
'price_unit': wizard_picking_line.price_unit,
# 'price_currency_id': claim_id.company_id.currency_id.id, # from invoice ???
'company_id': prev_picking.company_id.id,
'location_id': wizard.picking_line_source_location.id,
'location_dest_id': wizard.picking_line_dest_location.id,
'note': note,
})
wizard_move = move_obj.write(cr, uid,
wizard_picking_line.id,
{'move_dest_id': move_id},
context=context)
wf_service = netsvc.LocalService("workflow")
if picking_id:
wf_service.trg_validate(uid,
'stock.picking', picking_id,'button_confirm', cr)
picking_obj.action_assign(cr, uid, [picking_id])
domain = "[('type','=','%s'),('partner_id','=',%s)]"%(p_type, partner_id)
return {
'name': '%s' % name,
'view_type': 'form',
'view_mode': 'form',
'view_id': view_id,
'domain' : domain,
'res_model': 'stock.picking',
'res_id': picking_id,
'type': 'ir.actions.act_window',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -1,46 +1,48 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_location
#
# * crm_rma_location
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-17 19:39+0000\n"
"PO-Revision-Date: 2015-07-17 19:39+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-03 17:06+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-rma-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: crm_rma_location
#: code:addons/crm_rma_location/stock.py:60
#: code:addons/crm_rma_location/models/stock_warehouse.py:73
#, python-format
msgid " Sequence in"
msgstr "Secuencia de entrada"
#. module: crm_rma_location
#: code:addons/crm_rma_location/stock.py:72
#: code:addons/crm_rma_location/models/stock_warehouse.py:83
#, python-format
msgid " Sequence internal"
msgstr "Secuencia interna"
#. module: crm_rma_location
#: code:addons/crm_rma_location/stock.py:66
#: code:addons/crm_rma_location/models/stock_warehouse.py:78
#, python-format
msgid " Sequence out"
msgstr "Secuencia de salida"
#. module: crm_rma_location
#: code:addons/crm_rma_location/stock.py:166
#: code:addons/crm_rma_location/models/stock_warehouse.py:161
#, python-format
msgid "RMA"
msgstr "RMA"
#. module: crm_rma_location
#: code:addons/crm_rma_location/stock.py:120
#: code:addons/crm_rma_location/models/stock_warehouse.py:115
#, python-format
msgid "RMA Delivery Orders"
msgstr "Órdenes de envío de RMA"
@@ -51,7 +53,7 @@ msgid "RMA In Type"
msgstr "Entradas en RMA"
#. module: crm_rma_location
#: code:addons/crm_rma_location/stock.py:134
#: code:addons/crm_rma_location/models/stock_warehouse.py:129
#, python-format
msgid "RMA Internal Transfers"
msgstr "Transferencias internas en RMA"
@@ -72,7 +74,7 @@ msgid "RMA Out Type"
msgstr "Salidas en RMA"
#. module: crm_rma_location
#: code:addons/crm_rma_location/stock.py:108
#: code:addons/crm_rma_location/models/stock_warehouse.py:103
#, python-format
msgid "RMA Receipts"
msgstr "Recepciones de RMA"
@@ -81,4 +83,3 @@ msgstr "Recepciones de RMA"
#: model:ir.model,name:crm_rma_location.model_stock_warehouse
msgid "Warehouse"
msgstr "Almacén"

View File

@@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_location
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-03 17:05+0000\n"
"Last-Translator: <>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-rma-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:73
#, python-format
msgid " Sequence in"
msgstr ""
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:83
#, python-format
msgid " Sequence internal"
msgstr ""
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:78
#, python-format
msgid " Sequence out"
msgstr ""
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:161
#, python-format
msgid "RMA"
msgstr "RMA"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:115
#, python-format
msgid "RMA Delivery Orders"
msgstr ""
#. module: crm_rma_location
#: field:stock.warehouse,rma_in_type_id:0
msgid "RMA In Type"
msgstr ""
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:129
#, python-format
msgid "RMA Internal Transfers"
msgstr ""
#. module: crm_rma_location
#: field:stock.warehouse,rma_int_type_id:0
msgid "RMA Internal Type"
msgstr ""
#. module: crm_rma_location
#: field:stock.warehouse,lot_rma_id:0
msgid "RMA Location"
msgstr ""
#. module: crm_rma_location
#: field:stock.warehouse,rma_out_type_id:0
msgid "RMA Out Type"
msgstr ""
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:103
#, python-format
msgid "RMA Receipts"
msgstr ""
#. module: crm_rma_location
#: model:ir.model,name:crm_rma_location.model_stock_warehouse
msgid "Warehouse"
msgstr "Entrepôt"

View File

@@ -0,0 +1,86 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_location
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-12 22:57+0000\n"
"PO-Revision-Date: 2015-12-13 06:20+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-rma-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:73
#, python-format
msgid " Sequence in"
msgstr "Vhodno zaporedje"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:83
#, python-format
msgid " Sequence internal"
msgstr "Interno zaporedje"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:78
#, python-format
msgid " Sequence out"
msgstr "Izhodno zaporedje"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:161
#, python-format
msgid "RMA"
msgstr "Pooblastilo vračila blaga - PVB"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:115
#, python-format
msgid "RMA Delivery Orders"
msgstr "PVB dobavni nalogi"
#. module: crm_rma_location
#: field:stock.warehouse,rma_in_type_id:0
msgid "RMA In Type"
msgstr "PVB vhodni tip"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:129
#, python-format
msgid "RMA Internal Transfers"
msgstr "PVB interni transferji"
#. module: crm_rma_location
#: field:stock.warehouse,rma_int_type_id:0
msgid "RMA Internal Type"
msgstr "PVB interni tip"
#. module: crm_rma_location
#: field:stock.warehouse,lot_rma_id:0
msgid "RMA Location"
msgstr "PVB lokacija"
#. module: crm_rma_location
#: field:stock.warehouse,rma_out_type_id:0
msgid "RMA Out Type"
msgstr "PVB izhodni tip"
#. module: crm_rma_location
#: code:addons/crm_rma_location/models/stock_warehouse.py:103
#, python-format
msgid "RMA Receipts"
msgstr "PVB prejemi"
#. module: crm_rma_location
#: model:ir.model,name:crm_rma_location.model_stock_warehouse
msgid "Warehouse"
msgstr "Skladišče"

View File

@@ -0,0 +1,86 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:alt: License: AGPL-3
============================
RMA Claim Mass Return by Lot
============================
This module adds possibility to return a whole lot of product from an invoice
and create a incoming shipment for them based on serial/lot for a product or
invoice number.
Installation
============
To install this module, just select it from availables modules
Configuration
=============
No configuration is need for this module
Usage
=====
To use this module, you need to:
* Go into Sales > After-Sale services > Claims
* A button named "Mass return from serial/lot or invoice" will appear in the
form view when creating or editing an existing claim.
* Enter into the wizard and introduce serial/lot for an invoiced product or
invoice number and press enter.
* A list of selectable items it will show below or next to the input box
depending upon is introduced either invoice number or serial/lot number
respectively. When finish adding, click on Validate button and then Ok
to exit of wizard and continue editing the claim.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/145/8.0
For further information, please visit:
* https://www.odoo.com/forum/help-1
Known issues / Roadmap
======================
* No issues are registered
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
`here <https://github.com/OCA/rma/issues/new?body=module:%20crm_rma_lot_mass_return%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Contributors
------------
* Yanina Aular <yanina.aular@vauxoo.com>
* Osval Reyes <osval@vauxoo.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit http://odoo-community.org.

View File

@@ -1,9 +1,11 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Copyright 2013 Camptocamp
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
# Joel Grand-Guillaume
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -19,4 +21,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import wizard
from . import models
from . import wizards

View File

@@ -1,9 +1,12 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Copyright 2013 Camptocamp
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
# Joel Grand-Guillaume,
# Yanina Aular, Osval Reyes
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -20,31 +23,29 @@
#
##############################################################################
{'name': 'RMA Claims Mass Return by Lot',
'version': '1.0',
'category': 'Generic Modules/CRM & SRM',
'depends': ['crm_claim_rma'
],
'author': "Akretion,Odoo Community Association (OCA)",
'license': 'AGPL-3',
'website': 'http://www.akretion.com',
'description': """
RMA Claim Mass Return by Lot
============================
This module adds possibility to return a whole lot of product from a Claim
and create a incoming shipment for them.
WARNING: This module is currently not yet completely debugged and is waiting his author to be.
""",
'images': [],
'demo': [],
'data': [
'wizard/returned_lines_from_serial_wizard_view.xml',
'crm_rma_view.xml',
],
'installable': False,
'application': True,
{
'name': 'RMA Claims Mass Return by Lot',
'version': '8.0.1.0.0',
'category': 'Generic Modules/CRM & SRM',
'author': 'Vauxoo,Akretion,Odoo Community Association (OCA)',
'license': 'AGPL-3',
'website': 'http://www.vauxoo.com, http://www.akretion.com',
'depends': [
'crm_claim_rma',
'crm_rma_prodlot_invoice',
'crm_rma_prodlot_supplier',
],
'data': [
'wizards/returned_lines_from_serial_wizard.xml',
'views/crm_claim.xml',
'templates/search_view.xml'
],
'demo': [
'demo/stock_production_lot.xml',
'demo/purchase_order.xml',
'demo/sale_order.xml',
'demo/transfer_details.xml',
],
'installable': True,
'auto_install': False
}

View File

@@ -1,16 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="crm_claim_rma_form_view">
<field name="name">CRM - Claim product return Form</field>
<field name="model">crm.claim</field>
<field name="inherit_id" ref="crm_claim_rma.crm_claim_rma_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[@string='Product Return']/group/group[2]" position="inside">
<button name="%(action_create_return_serial)d" string="Mass return from serial/lot" states="draft,open" type="action" target="new"/>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,69 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!-- Purchase Order -->
<record id="po_wizard_rma_1" model="purchase.order">
<field name="name">POWIZARDCLAIM001</field>
<field name="date_order">2015-05-08 18:17:05</field>
<field name="invoice_method">order</field>
<field name="partner_id" ref="base.res_partner_21"/>
<field name="currency_id" ref="base.EUR"/>
<field name="pricelist_id" ref="purchase.list0"/>
<field name="location_id" ref="stock.stock_location_stock"/>
</record>
<!-- Purchase Order Lines-->
<record id="po_wizard_rma_1_line_1" model="purchase.order.line">
<field name="name">POWIZARDCLAIM001 Line 1</field>
<field name="order_id" ref="po_wizard_rma_1"/>
<field name="product_id" ref="product.product_product_38"/>
<field name="product_qty">10</field>
<field name="price_unit">60.0</field>
<field name="date_planned">2015-05-08</field>
</record>
<record id="po_wizard_rma_1_line_2" model="purchase.order.line">
<field name="name">POWIZARDCLAIM001 Line 2</field>
<field name="order_id" ref="po_wizard_rma_1"/>
<field name="product_id" ref="product.product_product_39"/>
<field name="product_qty">10</field>
<field name="price_unit">66.0</field>
<field name="date_planned">2015-05-08</field>
</record>
<record id="po_wizard_rma_1_line_3" model="purchase.order.line">
<field name="name">POWIZARDCLAIM001 Line 3</field>
<field name="order_id" ref="po_wizard_rma_1"/>
<field name="product_id" ref="product.product_product_6"/>
<field name="product_qty">10</field>
<field name="price_unit">800.0</field>
<field name="date_planned">2015-05-08</field>
</record>
<record id="po_wizard_rma_1_line_4" model="purchase.order.line">
<field name="name">POWIZARDCLAIM001 Line 4</field>
<field name="order_id" ref="po_wizard_rma_1"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_qty">7</field>
<field name="price_unit">1299.0</field>
<field name="date_planned">2015-05-08</field>
</record>
<!-- Confirm Purchase Order, (Invoice and Picking is created automatically) -->
<workflow action="purchase_confirm"
model="purchase.order"
ref="po_wizard_rma_1"/>
<workflow action="purchase_approve"
model="purchase.order"
ref="po_wizard_rma_1"/>
<workflow action="invoice_open" model="account.invoice">
<value eval="obj(ref('po_wizard_rma_1')).invoice_ids[0].id" model="purchase.order"/>
</workflow>
</data>
</openerp>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record id="so_wizard_rma_1" model="sale.order">
<field name="name">SOWIZARDCLAIM001</field>
<field name="date_order">2015-05-08 18:17:05</field>
<field name="partner_id" ref="base.res_partner_12"/>
<field name="currency_id" ref="base.EUR"/>
<field name="pricelist_id" ref="product.list0"/>
</record>
<record id="so_wizard_rma_1_line_1" model="sale.order.line">
<field name="name">SOWIZARDCLAIM001 Line 1</field>
<field name="order_id" ref="so_wizard_rma_1"/>
<field name="product_id" ref="product.product_product_38"/>
<field name="product_uom_qty">1</field>
<field name="price_unit">65.0</field>
</record>
<record id="so_wizard_rma_1_line_2" model="sale.order.line">
<field name="name">SOWIZARDCLAIM001 Line 2</field>
<field name="order_id" ref="so_wizard_rma_1"/>
<field name="product_id" ref="product.product_product_39"/>
<field name="product_uom_qty">2</field>
<field name="price_unit">66.0</field>
</record>
<record id="so_wizard_rma_1_line_3" model="sale.order.line">
<field name="name">SOWIZARDCLAIM001 Line 3</field>
<field name="order_id" ref="so_wizard_rma_1"/>
<field name="product_id" ref="product.product_product_6"/>
<field name="product_uom_qty">1</field>
<field name="price_unit">800.0</field>
</record>
<record id="so_wizard_rma_1_line_4" model="sale.order.line">
<field name="name">SOWIZARDCLAIM001 Line 4</field>
<field name="order_id" ref="so_wizard_rma_1"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_qty">5</field>
<field name="price_unit">1299.0</field>
</record>
<workflow action="order_confirm" model="sale.order" ref="so_wizard_rma_1"/>
<workflow action="manual_invoice" model="sale.order" ref="so_wizard_rma_1" uid="base.user_root"/>
<workflow action="invoice_open" model="account.invoice">
<value eval="obj(ref('so_wizard_rma_1')).invoice_ids[0].id" model="sale.order"/>
</workflow>
<function model="account.invoice" name="pay_and_reconcile">
<!-- ids = --> <value eval="obj(ref('so_wizard_rma_1')).invoice_ids[0].id" model="sale.order"/>
<!-- amount = --> <value eval="30000"/>
<!-- account_id = --> <value eval="ref('account.cash')"/>
<!-- period_id = --> <value eval="ref('account.period_10')"/>
<!-- journal_id = --> <value eval="ref('account.bank_journal')"/>
<!-- writeoff_acc_id = --> <value eval="ref('account.cash')"/>
<!-- writeoff_period_id = --> <value eval="ref('account.period_10')"/>
<!-- writeoff_journal_id = --> <value eval="ref('account.bank_journal')"/>
<!-- context = --> <value eval="{}"/>
<!-- name = --> <value eval="str('Payment WIzard RMA')"/>
</function>
</data>
</openerp>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record id="lot_purchase_wizard_rma_item_1" model="stock.production.lot">
<field name="name">MAC0001</field>
<field name="ref">MAC0001</field>
<field name="product_id" ref="product.product_product_8"/>
</record>
<record id="lot_purchase_wizard_rma_item_2" model="stock.production.lot">
<field name="name">MAC0002</field>
<field name="ref">MAC0002</field>
<field name="product_id" ref="product.product_product_8"/>
</record>
<record id="lot_purchase_wizard_rma_item_3" model="stock.production.lot">
<field name="name">MAC0003</field>
<field name="ref">MAC0003</field>
<field name="product_id" ref="product.product_product_8"/>
</record>
<record id="lot_purchase_wizard_rma_item_4" model="stock.production.lot">
<field name="name">MAC0004</field>
<field name="ref">MAC0004</field>
<field name="product_id" ref="product.product_product_8"/>
</record>
<record id="lot_purchase_wizard_rma_item_5" model="stock.production.lot">
<field name="name">IPAD0001</field>
<field name="ref">IPAD0001</field>
<field name="product_id" ref="product.product_product_6"/>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,196 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<!--Transfer of Products in the Picking of Purchase Order -->
<record id="transfer_purchase_wizard_rma" model="stock.transfer_details">
<field name="picking_id" model="stock.picking" search="[('origin', '=', 'POWIZARDCLAIM001')]"/>
<field name="picking_source_location_id" ref="stock.stock_location_suppliers"/>
<field name="picking_destination_location_id" ref="stock.stock_location_stock"/>
</record>
<!-- Transfer Detail Items of Product Transfer -->
<record id="transfer_purchase_wizard_rma_item_1" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_1"/>
</record>
<record id="transfer_purchase_wizard_rma_item_2" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_2"/>
</record>
<record id="transfer_purchase_wizard_rma_item_3" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_3"/>
</record>
<record id="transfer_purchase_wizard_rma_item_4" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_4"/>
</record>
<record id="transfer_purchase_wizard_rma_item_5" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_6"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_5"/>
</record>
<!-- two MAC without lot -->
<record id="transfer_purchase_wizard_rma_item_6" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">2</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
</record>
<record id="transfer_purchase_wizard_rma_item_7" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_39"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
</record>
<record id="transfer_purchase_wizard_rma_item_8" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_39"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
</record>
<record id="transfer_purchase_wizard_rma_item_9" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_purchase_wizard_rma"/>
<field name="product_id" ref="product.product_product_38"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_suppliers"/>
<field name="destinationloc_id" ref="stock.stock_location_stock"/>
</record>
<!-- Make transfer of product -->
<function model="stock.transfer_details"
name="do_detailed_transfer" eval="[ref('transfer_purchase_wizard_rma')]"/>
<!-- Transfer of Products in the Picking of Purchase Order 2 -->
<record id="transfer_sale_wizard_rma" model="stock.transfer_details">
<field name="picking_id" model="stock.picking" search="[('origin', '=', 'SOWIZARDCLAIM001')]"/>
<field name="picking_source_location_id" ref="stock.stock_location_stock"/>
<field name="picking_destination_location_id" ref="stock.stock_location_customers"/>
</record>
<!-- Transfer Detail Items Part 2 of Product Transfer -->
<record id="transfer_sale_wizard_rma_item_1" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_sale_wizard_rma"/>
<field name="product_id" ref="product.product_product_38"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_stock"/>
<field name="destinationloc_id" ref="stock.stock_location_customers"/>
</record>
<record id="transfer_sale_wizard_rma_item_2" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_sale_wizard_rma"/>
<field name="product_id" ref="product.product_product_39"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">2</field>
<field name="sourceloc_id" ref="stock.stock_location_stock"/>
<field name="destinationloc_id" ref="stock.stock_location_customers"/>
</record>
<record id="transfer_sale_wizard_rma_item_3" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_sale_wizard_rma"/>
<field name="product_id" ref="product.product_product_6"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_stock"/>
<field name="destinationloc_id" ref="stock.stock_location_customers"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_5"/>
</record>
<record id="transfer_sale_wizard_rma_item_4" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_sale_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_stock"/>
<field name="destinationloc_id" ref="stock.stock_location_customers"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_1"/>
</record>
<record id="transfer_sale_wizard_rma_item_5" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_sale_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_stock"/>
<field name="destinationloc_id" ref="stock.stock_location_customers"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_2"/>
</record>
<record id="transfer_sale_wizard_rma_item_6" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_sale_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_stock"/>
<field name="destinationloc_id" ref="stock.stock_location_customers"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_3"/>
</record>
<record id="transfer_sale_wizard_rma_item_7" model="stock.transfer_details_items">
<field name="transfer_id" ref="transfer_sale_wizard_rma"/>
<field name="product_id" ref="product.product_product_8"/>
<field name="product_uom_id" ref="product.product_uom_unit"/>
<field name="quantity">1</field>
<field name="sourceloc_id" ref="stock.stock_location_stock"/>
<field name="destinationloc_id" ref="stock.stock_location_customers"/>
<field name="lot_id" ref="lot_purchase_wizard_rma_item_4"/>
</record>
<!-- Make transfer of product -->
<function model="stock.transfer_details"
name="do_detailed_transfer" eval="[ref('transfer_sale_wizard_rma')]"/>
</data>
</openerp>

View File

@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-15 13:30+0000\n"
"PO-Revision-Date: 2013-11-15 13:30+0000\n"
"POT-Creation-Date: 2015-10-16 03:32+0000\n"
"PO-Revision-Date: 2015-10-16 03:32+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,52 +16,160 @@ msgstr ""
"Plural-Forms: \n"
#. module: crm_rma_lot_mass_return
#: view:crm.claim:0
msgid "Mass return from serial/lot"
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:90
#, python-format
msgid "-->"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned_lines_from_serial.wizard:0
msgid "Claim short description"
#: model:ir.model,name:crm_rma_lot_mass_return.model_crm_claim
msgid "Claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned_lines_from_serial.wizard:0
msgid "Select serial numbers to create"
#: field:returned.lines.from.serial.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.actions.act_window,name:crm_rma_lot_mass_return.action_create_return_serial
msgid "action_create_return_serial"
#: field:returned.lines.from.serial.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scan_data:0
msgid "Field used to load and show the products"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,lines_id:0
msgid "Field used to load the ids of invoice lines in invoices writed"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scaned_data:0
msgid "Field used to load the ids of products loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Field used to show the current status of the lots loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,current_status:0
msgid "Field used to show the current status of the product loaded(Name and quantity)"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,id:0
msgid "ID"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,lines_id:0
msgid "Invoice Lines to Select"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Lots selected"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "Mass return from serial/lot or invoice"
msgstr ""
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:93
#, python-format
msgid "Ok"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,partner_id:0
msgid "Partner"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,scan_data:0
#: field:returned.lines.from.serial.wizard,scaned_data:0
msgid "Products"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:141
#, python-format
msgid "Search Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,current_status:0
msgid "Status"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:299
#, python-format
msgid "The following Serial/Lot numbers were not added, because all of them (listed below) are currently in use:\n"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:221
#, python-format
msgid "The product or invoice %s was not found"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "True"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Validate the actual picking, it will execute all the validations and the inventory will be affected"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_returned_lines_from_serial_wizard
msgid "Wizard to create product return lines from serial numbers"
msgid "Wizard to create product return lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned_lines_from_serial.wizard:0
msgid "Quantity returned"
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Invoice Number to search the products in lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned_lines_from_serial.wizard:0
msgid "Save and close"
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Serial/Lot Number to search the product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned_lines_from_serial.wizard:0
msgid "Save and new"
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You add new returns in claim, are you sure?."
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned_lines_from_serial.wizard:0
msgid "Cancel"
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You should use this windows on this way."
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned_lines_from_serial.wizard:0
msgid "Serial / Lot Number"
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "_Validate"
msgstr ""

View File

@@ -0,0 +1,310 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-19 22:20+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: English (http://www.transifex.com/oca/OCA-rma-8-0/language/en/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:67
#, python-format
msgid "(ID: %s) - %s - %s"
msgstr "(ID: %s) - %s - %s"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:72
#, python-format
msgid "(ID: %s) - %s - %s - %s"
msgstr "(ID: %s) - %s - %s - %s"
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:90
#, python-format
msgid "-->"
msgstr "-->"
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "Add claim lines using serial or invoice number"
msgstr "Add claim lines using serial or invoice number"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Add items to the claim"
msgstr "Add items to the claim"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "All the valid lines will be added to the claim"
msgstr "All the valid lines will be added to the claim"
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_crm_claim
msgid "Claim"
msgstr "Claim"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_uid:0
#: field:returned.lines.from.serial.wizard,create_uid:0
msgid "Created by"
msgstr "Created by"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_date:0
#: field:returned.lines.from.serial.wizard,create_date:0
msgid "Created on"
msgstr "Created on"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Damaged Delivered Product"
msgstr "Damaged Delivered Product"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS"
msgstr "Example: A4JD6JHS"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS*4*The display is break"
msgstr "Example: A4JD6JHS*4*The display is break"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Exchange request"
msgstr "Exchange request"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scan_data:0
msgid "Field used to load and show the products"
msgstr "Field used to load and show the products"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,option_ids:0
msgid "Field used to load the ids of invoice lines in invoices writed"
msgstr "Field used to load the ids of invoice lines in invoices writed"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scaned_data:0
msgid "Field used to load the ids of products loaded"
msgstr "Field used to load the ids of products loaded"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Field used to show the current status of the lots loaded"
msgstr "Field used to show the current status of the lots loaded"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,current_status:0
msgid ""
"Field used to show the current status of the product loaded(Name and "
"quantity)"
msgstr "Field used to show the current status of the product loaded(Name and quantity)"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,id:0 field:returned.lines.from.serial.wizard,id:0
msgid "ID"
msgstr "ID"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Imperfection"
msgstr "Imperfection"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,invoice_line_id:0
#: help:claim.line.wizard,invoice_line_id:0
msgid "Invoice Line"
msgstr "Invoice Line"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,option_ids:0
msgid "Invoice Lines to Select"
msgstr "Invoice Lines to Select"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_uid:0
#: field:returned.lines.from.serial.wizard,write_uid:0
msgid "Last Updated by"
msgstr "Last Updated by"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_date:0
#: field:returned.lines.from.serial.wizard,write_date:0
msgid "Last Updated on"
msgstr "Last Updated on"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Legal retractation"
msgstr "Legal retractation"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Lost during transport"
msgstr "Lost during transport"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,lot_id:0
msgid "Lot"
msgstr "Lot"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Not specified"
msgstr "Not specified"
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:93
#, python-format
msgid "Ok"
msgstr "Ok"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Order Cancellation"
msgstr "Order Cancellation"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Other"
msgstr "Other"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,partner_id:0
msgid "Partner"
msgstr "Partner"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Perfect Conditions"
msgstr "Perfect Conditions"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Client"
msgstr "Physical Damage by Client"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Company"
msgstr "Physical Damage by Company"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,product_id:0
msgid "Product"
msgstr "Product"
#. module: crm_rma_lot_mass_return
#: help:claim.line.wizard,lot_id:0 help:claim.line.wizard,product_id:0
msgid "Product to claim"
msgstr "Product to claim"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,scan_data:0
#: field:returned.lines.from.serial.wizard,scaned_data:0
msgid "Products"
msgstr "Products"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Products selected"
msgstr "Products selected"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:210
#, python-format
msgid "Search Product"
msgstr "Search Product"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Serial/Lot Number*reason number*Description here"
msgstr "Serial/Lot Number*reason number*Description here"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Shipping error"
msgstr "Shipping error"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,current_status:0
msgid "Status"
msgstr "Status"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:590
#, python-format
msgid ""
"The following Serial/Lot numbers won't be added, because all of them (listed below) are currently in use:\n"
"\n"
" %s"
msgstr "The following Serial/Lot numbers won't be added, because all of them (listed below) are currently in use:\n\n %s"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid ""
"The format for writing the reason for the claim and\n"
" the description is:"
msgstr "The format for writing the reason for the claim and\n the description is:"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:399
#, python-format
msgid "The product or invoice %s was not found"
msgstr "The product or invoice %s was not found"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "The reasons for the claim can be"
msgstr "The reasons for the claim can be"
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "True"
msgstr "True"
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_returned_lines_from_serial_wizard
msgid "Wizard to create product return lines"
msgstr "Wizard to create product return lines"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Invoice Number to search the products in lines"
msgstr "Write the Invoice Number to search the products in lines"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Serial/Lot Number to search the product"
msgstr "Write the Serial/Lot Number to search the product"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You are about to add new lines to the claim, Do you want to continue?."
msgstr "You are about to add new lines to the claim, Do you want to continue?."
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You should use this windows on this way."
msgstr "You should use this windows on this way."
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "or"
msgstr "or"

View File

@@ -0,0 +1,310 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-19 22:20+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-rma-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:67
#, python-format
msgid "(ID: %s) - %s - %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:72
#, python-format
msgid "(ID: %s) - %s - %s - %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:90
#, python-format
msgid "-->"
msgstr "-->"
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "Add claim lines using serial or invoice number"
msgstr "Agregar devoluciones usando número de serial o de factura"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Add items to the claim"
msgstr "Añadir productos a la reclamación"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "All the valid lines will be added to the claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_crm_claim
msgid "Claim"
msgstr "Reclamo"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_uid:0
#: field:returned.lines.from.serial.wizard,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_date:0
#: field:returned.lines.from.serial.wizard,create_date:0
msgid "Created on"
msgstr "Creado en"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Damaged Delivered Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS*4*The display is break"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Exchange request"
msgstr "Solicitar cambio"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scan_data:0
msgid "Field used to load and show the products"
msgstr "Campo usado para cargar y ver los productos"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,option_ids:0
msgid "Field used to load the ids of invoice lines in invoices writed"
msgstr "Campo usado para cargar los ids de las líneas de factura en facturas editadas"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scaned_data:0
msgid "Field used to load the ids of products loaded"
msgstr "Campo usado para cargar los ids de los productos cargados"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Field used to show the current status of the lots loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,current_status:0
msgid ""
"Field used to show the current status of the product loaded(Name and "
"quantity)"
msgstr "Campo usado para visualizar el estado actual de los productos cargados (Nombre y cantidad)"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,id:0 field:returned.lines.from.serial.wizard,id:0
msgid "ID"
msgstr "ID"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Imperfection"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,invoice_line_id:0
#: help:claim.line.wizard,invoice_line_id:0
msgid "Invoice Line"
msgstr "Línea de factura"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,option_ids:0
msgid "Invoice Lines to Select"
msgstr "Líneas de factura a seleccionar"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_uid:0
#: field:returned.lines.from.serial.wizard,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización hecha por"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_date:0
#: field:returned.lines.from.serial.wizard,write_date:0
msgid "Last Updated on"
msgstr "Última actualización hecha en"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Legal retractation"
msgstr "Retractación legal"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Lost during transport"
msgstr "Perdido durante el transporte"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,lot_id:0
msgid "Lot"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Not specified"
msgstr "No especificado"
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:93
#, python-format
msgid "Ok"
msgstr "Ok"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Order Cancellation"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Other"
msgstr "Otro"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,partner_id:0
msgid "Partner"
msgstr "Socio"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Perfect Conditions"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Client"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Company"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,product_id:0
msgid "Product"
msgstr "Producto"
#. module: crm_rma_lot_mass_return
#: help:claim.line.wizard,lot_id:0 help:claim.line.wizard,product_id:0
msgid "Product to claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,scan_data:0
#: field:returned.lines.from.serial.wizard,scaned_data:0
msgid "Products"
msgstr "Productos"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Products selected"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:210
#, python-format
msgid "Search Product"
msgstr "Buscar producto"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Serial/Lot Number*reason number*Description here"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Shipping error"
msgstr "Error de envío"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,current_status:0
msgid "Status"
msgstr "Estado"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:590
#, python-format
msgid ""
"The following Serial/Lot numbers won't be added, because all of them (listed below) are currently in use:\n"
"\n"
" %s"
msgstr "los siguientes números de seriales no pueden ser agregados, porque todos ellos (listados abajo) están actualmente en uso:\n\n %s"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid ""
"The format for writing the reason for the claim and\n"
" the description is:"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:399
#, python-format
msgid "The product or invoice %s was not found"
msgstr "El producto o factura %s no fué encontrado"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "The reasons for the claim can be"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "True"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_returned_lines_from_serial_wizard
msgid "Wizard to create product return lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Invoice Number to search the products in lines"
msgstr "Escribir el número de factura para buscar los productos en las líneas"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Serial/Lot Number to search the product"
msgstr "Escribir el número de serie o lote para buscar el producto."
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You are about to add new lines to the claim, Do you want to continue?."
msgstr "Se agregarán nuevas líneas a la reclamación, ¿Desea continuar?"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You should use this windows on this way."
msgstr "Deberías usar ésta ventana"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "or"
msgstr "o"

View File

@@ -0,0 +1,16 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-17 19:54+0000\n"
"PO-Revision-Date: 2015-07-17 19:54+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1,16 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-17 19:54+0000\n"
"PO-Revision-Date: 2015-07-17 19:54+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1,16 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-17 19:54+0000\n"
"PO-Revision-Date: 2015-07-17 19:54+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1,310 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-19 22:20+0000\n"
"Last-Translator: <>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-rma-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:67
#, python-format
msgid "(ID: %s) - %s - %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:72
#, python-format
msgid "(ID: %s) - %s - %s - %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:90
#, python-format
msgid "-->"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "Add claim lines using serial or invoice number"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Add items to the claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "All the valid lines will be added to the claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_crm_claim
msgid "Claim"
msgstr "Réclamation"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_uid:0
#: field:returned.lines.from.serial.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_date:0
#: field:returned.lines.from.serial.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Damaged Delivered Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS*4*The display is break"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Exchange request"
msgstr "Demande d'échange"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scan_data:0
msgid "Field used to load and show the products"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,option_ids:0
msgid "Field used to load the ids of invoice lines in invoices writed"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scaned_data:0
msgid "Field used to load the ids of products loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Field used to show the current status of the lots loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,current_status:0
msgid ""
"Field used to show the current status of the product loaded(Name and "
"quantity)"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,id:0 field:returned.lines.from.serial.wizard,id:0
msgid "ID"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Imperfection"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,invoice_line_id:0
#: help:claim.line.wizard,invoice_line_id:0
msgid "Invoice Line"
msgstr "Ligne de facture"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,option_ids:0
msgid "Invoice Lines to Select"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_uid:0
#: field:returned.lines.from.serial.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_date:0
#: field:returned.lines.from.serial.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Legal retractation"
msgstr "Rétracation légale"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Lost during transport"
msgstr "Perte pendant le transport"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,lot_id:0
msgid "Lot"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Not specified"
msgstr "Non spécifié"
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:93
#, python-format
msgid "Ok"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Order Cancellation"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Other"
msgstr "Autre"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,partner_id:0
msgid "Partner"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Perfect Conditions"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Client"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Company"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,product_id:0
msgid "Product"
msgstr "Produit"
#. module: crm_rma_lot_mass_return
#: help:claim.line.wizard,lot_id:0 help:claim.line.wizard,product_id:0
msgid "Product to claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,scan_data:0
#: field:returned.lines.from.serial.wizard,scaned_data:0
msgid "Products"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Products selected"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:210
#, python-format
msgid "Search Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Serial/Lot Number*reason number*Description here"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Shipping error"
msgstr "Erreur d'expédition"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,current_status:0
msgid "Status"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:590
#, python-format
msgid ""
"The following Serial/Lot numbers won't be added, because all of them (listed below) are currently in use:\n"
"\n"
" %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid ""
"The format for writing the reason for the claim and\n"
" the description is:"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:399
#, python-format
msgid "The product or invoice %s was not found"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "The reasons for the claim can be"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "True"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_returned_lines_from_serial_wizard
msgid "Wizard to create product return lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Invoice Number to search the products in lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Serial/Lot Number to search the product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You are about to add new lines to the claim, Do you want to continue?."
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You should use this windows on this way."
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "or"
msgstr "ou"

View File

@@ -0,0 +1,310 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-19 22:20+0000\n"
"Last-Translator: <>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-rma-8-0/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:67
#, python-format
msgid "(ID: %s) - %s - %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:72
#, python-format
msgid "(ID: %s) - %s - %s - %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:90
#, python-format
msgid "-->"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "Add claim lines using serial or invoice number"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Add items to the claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "All the valid lines will be added to the claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_crm_claim
msgid "Claim"
msgstr "Solicitação"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_uid:0
#: field:returned.lines.from.serial.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_date:0
#: field:returned.lines.from.serial.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Damaged Delivered Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS*4*The display is break"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Exchange request"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scan_data:0
msgid "Field used to load and show the products"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,option_ids:0
msgid "Field used to load the ids of invoice lines in invoices writed"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scaned_data:0
msgid "Field used to load the ids of products loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Field used to show the current status of the lots loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,current_status:0
msgid ""
"Field used to show the current status of the product loaded(Name and "
"quantity)"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,id:0 field:returned.lines.from.serial.wizard,id:0
msgid "ID"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Imperfection"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,invoice_line_id:0
#: help:claim.line.wizard,invoice_line_id:0
msgid "Invoice Line"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,option_ids:0
msgid "Invoice Lines to Select"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_uid:0
#: field:returned.lines.from.serial.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_date:0
#: field:returned.lines.from.serial.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Legal retractation"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Lost during transport"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,lot_id:0
msgid "Lot"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Not specified"
msgstr ""
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:93
#, python-format
msgid "Ok"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Order Cancellation"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Other"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,partner_id:0
msgid "Partner"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Perfect Conditions"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Client"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Company"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,product_id:0
msgid "Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:claim.line.wizard,lot_id:0 help:claim.line.wizard,product_id:0
msgid "Product to claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,scan_data:0
#: field:returned.lines.from.serial.wizard,scaned_data:0
msgid "Products"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Products selected"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:210
#, python-format
msgid "Search Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Serial/Lot Number*reason number*Description here"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Shipping error"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,current_status:0
msgid "Status"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:590
#, python-format
msgid ""
"The following Serial/Lot numbers won't be added, because all of them (listed below) are currently in use:\n"
"\n"
" %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid ""
"The format for writing the reason for the claim and\n"
" the description is:"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:399
#, python-format
msgid "The product or invoice %s was not found"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "The reasons for the claim can be"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "True"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_returned_lines_from_serial_wizard
msgid "Wizard to create product return lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Invoice Number to search the products in lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Serial/Lot Number to search the product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You are about to add new lines to the claim, Do you want to continue?."
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You should use this windows on this way."
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "or"
msgstr ""

View File

@@ -0,0 +1,310 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-19 22:20+0000\n"
"Last-Translator: <>\n"
"Language-Team: Romanian (http://www.transifex.com/oca/OCA-rma-8-0/language/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ro\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:67
#, python-format
msgid "(ID: %s) - %s - %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:72
#, python-format
msgid "(ID: %s) - %s - %s - %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:90
#, python-format
msgid "-->"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "Add claim lines using serial or invoice number"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Add items to the claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "All the valid lines will be added to the claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_crm_claim
msgid "Claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_uid:0
#: field:returned.lines.from.serial.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_date:0
#: field:returned.lines.from.serial.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Damaged Delivered Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS*4*The display is break"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Exchange request"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scan_data:0
msgid "Field used to load and show the products"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,option_ids:0
msgid "Field used to load the ids of invoice lines in invoices writed"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scaned_data:0
msgid "Field used to load the ids of products loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Field used to show the current status of the lots loaded"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,current_status:0
msgid ""
"Field used to show the current status of the product loaded(Name and "
"quantity)"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,id:0 field:returned.lines.from.serial.wizard,id:0
msgid "ID"
msgstr "ID"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Imperfection"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,invoice_line_id:0
#: help:claim.line.wizard,invoice_line_id:0
msgid "Invoice Line"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,option_ids:0
msgid "Invoice Lines to Select"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_uid:0
#: field:returned.lines.from.serial.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_date:0
#: field:returned.lines.from.serial.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Legal retractation"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Lost during transport"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,lot_id:0
msgid "Lot"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Not specified"
msgstr ""
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:93
#, python-format
msgid "Ok"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Order Cancellation"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Other"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,partner_id:0
msgid "Partner"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Perfect Conditions"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Client"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Company"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,product_id:0
msgid "Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: help:claim.line.wizard,lot_id:0 help:claim.line.wizard,product_id:0
msgid "Product to claim"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,scan_data:0
#: field:returned.lines.from.serial.wizard,scaned_data:0
msgid "Products"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Products selected"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:210
#, python-format
msgid "Search Product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Serial/Lot Number*reason number*Description here"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Shipping error"
msgstr ""
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,current_status:0
msgid "Status"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:590
#, python-format
msgid ""
"The following Serial/Lot numbers won't be added, because all of them (listed below) are currently in use:\n"
"\n"
" %s"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid ""
"The format for writing the reason for the claim and\n"
" the description is:"
msgstr ""
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:399
#, python-format
msgid "The product or invoice %s was not found"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "The reasons for the claim can be"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "True"
msgstr ""
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_returned_lines_from_serial_wizard
msgid "Wizard to create product return lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Invoice Number to search the products in lines"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Serial/Lot Number to search the product"
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You are about to add new lines to the claim, Do you want to continue?."
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You should use this windows on this way."
msgstr ""
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "or"
msgstr ""

View File

@@ -0,0 +1,311 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_lot_mass_return
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-12 22:57+0000\n"
"PO-Revision-Date: 2015-12-13 06:18+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-rma-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:67
#, python-format
msgid "(ID: %s) - %s - %s"
msgstr "(ID: %s) - %s - %s"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:72
#, python-format
msgid "(ID: %s) - %s - %s - %s"
msgstr "(ID: %s) - %s - %s - %s"
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:90
#, python-format
msgid "-->"
msgstr "-->"
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "Add claim lines using serial or invoice number"
msgstr "Dodajanje postavk zahtevka z uporabo serijske številke ali številke računa"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Add items to the claim"
msgstr "Dodajanje artiklov v zahtevek"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "All the valid lines will be added to the claim"
msgstr "Vse veljavne postavke bodo dodane v zahtevek"
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_crm_claim
msgid "Claim"
msgstr "Zahtevek"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_uid:0
#: field:returned.lines.from.serial.wizard,create_uid:0
msgid "Created by"
msgstr "Ustvaril"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,create_date:0
#: field:returned.lines.from.serial.wizard,create_date:0
msgid "Created on"
msgstr "Ustvarjeno"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Damaged Delivered Product"
msgstr "Poškodovan dobavljeni proizvod"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS"
msgstr "Primer: A4JD6JHS"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Example: A4JD6JHS*4*The display is break"
msgstr "Primer: A4JD6JHS*4*Zaslon je okvarjen"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Exchange request"
msgstr "Zahteva po zamenjavi"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scan_data:0
msgid "Field used to load and show the products"
msgstr "Polje, ki se uporablja za nalaganje in prikaz proizvodov"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,option_ids:0
msgid "Field used to load the ids of invoice lines in invoices writed"
msgstr "Polje, ki se uporablja za id-je postavk računa pri zapisu"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,scaned_data:0
msgid "Field used to load the ids of products loaded"
msgstr "Polje, ki se uporablja za nalaganje id-jev naloženih proizvodov"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Field used to show the current status of the lots loaded"
msgstr "Polje, ki se uporablja za prikaz trenutnega statusa naloženih lotov"
#. module: crm_rma_lot_mass_return
#: help:returned.lines.from.serial.wizard,current_status:0
msgid ""
"Field used to show the current status of the product loaded(Name and "
"quantity)"
msgstr "Polje, ki se uporablja za prikaz trenutnega statusa naloženega proizvoda (naziv in količina)"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,id:0 field:returned.lines.from.serial.wizard,id:0
msgid "ID"
msgstr "ID"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Imperfection"
msgstr "Nepopolnost"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,invoice_line_id:0
#: help:claim.line.wizard,invoice_line_id:0
msgid "Invoice Line"
msgstr "Postavka računa"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,option_ids:0
msgid "Invoice Lines to Select"
msgstr "Postavke računa za izbor"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_uid:0
#: field:returned.lines.from.serial.wizard,write_uid:0
msgid "Last Updated by"
msgstr "Zadnji posodobil"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,write_date:0
#: field:returned.lines.from.serial.wizard,write_date:0
msgid "Last Updated on"
msgstr "Zadnjič posodobljeno"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Legal retractation"
msgstr "Pravni preklic"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Lost during transport"
msgstr "Izgubljen med prevozom"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,lot_id:0
msgid "Lot"
msgstr "Lot"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Not specified"
msgstr "Ni določeno"
#. module: crm_rma_lot_mass_return
#. openerp-web
#: code:addons/crm_rma_lot_mass_return/static/src/js/barcode_text.js:93
#, python-format
msgid "Ok"
msgstr "V redu"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Order Cancellation"
msgstr "Preklic naročila"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Other"
msgstr "Drugo"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,partner_id:0
msgid "Partner"
msgstr "Partner"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Perfect Conditions"
msgstr "Brezhibno stanje"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Client"
msgstr "Fizično poškodoval kupec"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Physical Damage by Company"
msgstr "Fizično poškodovala družba"
#. module: crm_rma_lot_mass_return
#: field:claim.line.wizard,product_id:0
msgid "Product"
msgstr "Proizvod"
#. module: crm_rma_lot_mass_return
#: help:claim.line.wizard,lot_id:0 help:claim.line.wizard,product_id:0
msgid "Product to claim"
msgstr "Proizvod za reklamacijo"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,scan_data:0
#: field:returned.lines.from.serial.wizard,scaned_data:0
msgid "Products"
msgstr "Proizvodi"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,lines_list_id:0
msgid "Products selected"
msgstr "Izbrani proizvodi"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:210
#, python-format
msgid "Search Product"
msgstr "Iskanje proizvoda"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Serial/Lot Number*reason number*Description here"
msgstr "Serijska številka/št. lota*številka razloga*opis"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Shipping error"
msgstr "Napaka odpreme"
#. module: crm_rma_lot_mass_return
#: field:returned.lines.from.serial.wizard,current_status:0
msgid "Status"
msgstr "Status"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:590
#, python-format
msgid ""
"The following Serial/Lot numbers won't be added, because all of them (listed below) are currently in use:\n"
"\n"
" %s"
msgstr "Sledeče serijske številke/številke lotov ne bodo dodane, ker so vse (spodaj naštete) trenutno v uporabi:\n\n %s"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid ""
"The format for writing the reason for the claim and\n"
" the description is:"
msgstr "Format zapisa razloga za zahtevek in\n opis je:"
#. module: crm_rma_lot_mass_return
#: code:addons/crm_rma_lot_mass_return/wizards/returned_lines_from_serial.py:399
#, python-format
msgid "The product or invoice %s was not found"
msgstr "Proizvod ali račun %s ni najden"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "The reasons for the claim can be"
msgstr "Razlogi za zahtevek so lahko"
#. module: crm_rma_lot_mass_return
#: view:crm.claim:crm_rma_lot_mass_return.crm_claim_rma_form_view_meta
msgid "True"
msgstr "Pravilno"
#. module: crm_rma_lot_mass_return
#: model:ir.model,name:crm_rma_lot_mass_return.model_returned_lines_from_serial_wizard
msgid "Wizard to create product return lines"
msgstr "Čarovnik za ustvarjanje postavk vračila proizvoda"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Invoice Number to search the products in lines"
msgstr "Zapišite številko računa za iskanje proizvodov v postavkah"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "Write the Serial/Lot Number to search the product"
msgstr "Zapišite serijsko ali številko lota za iskanje proizvoda"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You are about to add new lines to the claim, Do you want to continue?."
msgstr "Dodali boste nove postavke v zahtevek. Želite nadaljevati?"
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "You should use this windows on this way."
msgstr "Ta okna bi morali uporabljati na tak način."
#. module: crm_rma_lot_mass_return
#: view:returned.lines.from.serial.wizard:crm_rma_lot_mass_return.view_enter_product
msgid "or"
msgstr "ali"

View File

@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Osval Reyes, Yanina Aular
#
# 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 crm_claim

View File

@@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Osval Reyes, Yanina Aular
#
# 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 openerp import api, models
class CrmClaim(models.Model):
_inherit = 'crm.claim'
@api.model
def _get_stock_moves_with_code(self, code='incoming'):
"""
@code: Type of operation code.
Returns all stock_move with filtered by type of
operation.
"""
stockmove = self.env['stock.move']
receipts = self.env['stock.picking.type']
spt_receipts = receipts.search([('code',
'=',
code)])
spt_receipts = [spt.id for spt in spt_receipts]
sm_receipts = stockmove.search([('picking_type_id',
'in',
spt_receipts)])
return sm_receipts
@api.multi
def render_metasearch_view(self):
context = self._context.copy()
context.update({
'active_model': self._name,
'active_ids': self.ids,
'active_id': self.id or False,
})
wizard = self.env['returned.lines.from.serial.wizard'].\
with_context(context).create({})
return wizard.render_metasearch_view()

View File

@@ -0,0 +1,115 @@
openerp.crm_rma_lot_mass_return = function(openerp) {
var _t = openerp.web._t,
_lt = openerp.web._lt;
var QWeb = openerp.web.qweb;
/*
This widget is suposed to be used only in places where you need to load several
barcodes at same time. In order to save locally information and trigger save
data "ala onchange" but without lose the focus.
*/
openerp.web.form.BarcodeText = openerp.web.form.FieldText.extend({
events: {
'keyup': function(e) {
if (e.which === $.ui.keyCode.ENTER) {
this.store_dom_value();
e.stopPropagation();
}
},
'keypress': function(e) {
if (e.which === $.ui.keyCode.ENTER) {
this.store_dom_value();
e.stopPropagation();
}
},
'change textarea': function(e) {
this.store_dom_value();
e.stopPropagation();
$('textarea[name="scan_data"]').focus();
$('textarea[name="scan_data"]').trigger('focus');
},
},
});
openerp.web.form.ChangeFocus = openerp.web.form.FieldChar.extend({
events: {
'keyup': function(e) {
if (e.which === $.ui.keyCode.ENTER) {
$('textarea[name="scan_data"]').focus();
this.store_dom_value();
e.stopPropagation();
}
},
'keypress': function(e) {
if (e.which === 0 || e.which === $.ui.keyCode.TAB) {
$('textarea[name="scan_data"]').focus();
this.store_dom_value();
e.stopPropagation();
}
},
'change input': function(e) {
this.store_dom_value();
e.stopPropagation();
$('.packing_cache_button').click(function(e) {
$('body').off("keypress");
});
$('body').keypress(function(p) {
if ($._data($('body')[0], 'events').keypress.length > 1) {
$._data($('body')[0], 'events').keypress.pop();
}
var search = p.target.parentElement.className.search('pack_search');
if (p.target.name != 'scan_data' && search < 0 && p.keyCode === $.ui.keyCode.ENTER){
playAlert.volume(0.9);
playAlert('purr');
}
});
$('textarea[name="scan_data"]').focus();
$('textarea[name="scan_data"]').trigger('focus');
},
},
});
openerp.web.FormView.include({
on_processed_onchange: function(result){
try {
var result2 = result;
if (!_.isEmpty(result2.warning) && this.model == 'returned.lines.from.serial.wizard') {
playAlert.volume(0.9);
playAlert('purr');
new openerp.web.Dialog(this, {
size: 'medium',
title: result2.warning.title,
buttons: [{
text: _t("-->"),
click: function() {}
}, {
text: _t("Ok"),
click: function() {
this.parents('.modal').modal('hide');
}
}]
}, QWeb.render("CrashManager.warning", result2.warning)).open();
$("span:contains('-->')").focus();
} else {
this._super.apply(this, arguments);
}
} catch (e) {
console.error(e);
openerp.webclient.crashmanager.show_message(e);
return $.Deferred().reject();
}
},
});
openerp.web.form.widgets.add('barcode_text', 'openerp.web.form.BarcodeText');
openerp.web.form.widgets.add('change_focus', 'openerp.web.form.ChangeFocus');
};

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="assets_backend" name="search_product assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/crm_rma_lot_mass_return/static/lib/alert.js"></script>
<script type="text/javascript" src="/crm_rma_lot_mass_return/static/src/js/barcode_text.js"></script>
</xpath>
</template>
</data>
</openerp>

View File

@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Osval Reyes,
# Yanina Aular
#
# 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 test_crm_rma_lot_mass_return
from . import test_crm_rma_lot_mass_return_2
from . import test_constrains

View File

@@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Yanina Aular
#
# 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 openerp.tests.common import TransactionCase
from openerp.exceptions import ValidationError
class TestConstrains(TransactionCase):
"""
- The product in claim.line.wizard must be the same
that product of invoice line
"""
def setUp(self):
super(TestConstrains, self).setUp()
self.claim_line_wizard = self.env['claim.line.wizard']
def test_product_constrain(self):
msg = "The product of the invoice .* is not same that product .*"
with self.assertRaisesRegexp(ValidationError, msg):
self.claim_line_wizard.\
create({
'product_id': self.env.ref('product.'
'product_product_8').id,
'invoice_line_id':
self.env.ref('account.demo_invoice_0_'
'line_rpanrearpanelshe0').id,
})

View File

@@ -0,0 +1,199 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Osval Reyes,
# Yanina Aular
#
# 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 datetime import date
from openerp.tests.common import TransactionCase
class TestCrmRmaLotMassReturn(TransactionCase):
"""
Test cases for CRM RMA Lot Mass Return Module
"""
def setUp(self):
super(TestCrmRmaLotMassReturn, self).setUp()
self.metasearch_wizard = self.env['returned.lines.from.serial.wizard']
self.partner_id = self.env['res.partner'].browse(
self.ref('base.res_partner_2'))
self.invoice_id, self.lot_ids = self.create_sale_invoice()
self.claim_id = self.env['crm.claim'].\
create({
'name': 'Test',
'claim_type': self.ref('crm_claim_type.'
'crm_claim_type_customer'),
'partner_id': self.invoice_id.partner_id.id,
'pick': True
})
def create_sale_order(self, order_policy='manual'):
sale_order_id = self.env['sale.order'].create({
'partner_id': self.partner_id.id,
'note': 'Sale Order Test',
'order_policy': order_policy,
'payment_term': self.ref('account.account_payment_term'),
'order_line': [(0, 0, {
'name': 'Test',
'product_id': self.ref('product.product_product_8'),
'product_uom_qty': 2
})]
})
sale_order_id.action_button_confirm()
return sale_order_id
def test_01_render_metasearch_view(self):
res = self.claim_id.render_metasearch_view()
self.assertEqual(res['res_model'], self.metasearch_wizard._name)
def test_02_load_products(self):
wizard_id = self.metasearch_wizard.with_context({
'active_model': self.claim_id._name,
'active_id': self.claim_id.id,
'active_ids': [self.claim_id.id]
}).create({})
# Get ids for invoice lines
lines_list_id = wizard_id.onchange_load_products(
self.invoice_id.number +
'*5*description here' + '\n' + self.lot_ids[0].name,
[(6, 0, [])])
lines_list_id = lines_list_id['domain']['lines_list_id'][0][2]
option_ids = wizard_id.onchange_load_products(
self.invoice_id.number, [(6, 0, [])])['value']['option_ids'][0][2]
wizard_id.option_ids = option_ids
wizard_id.lines_list_id = [(6, 0, lines_list_id)]
# the invoice lines are two
self.assertEqual(len(lines_list_id), 2)
# Validate it has exactly as much records as the taken invoice has
self.assertEqual(len(lines_list_id),
int(self.invoice_id.invoice_line.quantity))
wizard_id._set_message()
wizard_id.add_claim_lines()
# Claim record it must have same line count as the invoice
qty = 0
for inv_line in self.invoice_id.invoice_line:
qty += inv_line.quantity
self.assertEqual(len(self.claim_id.claim_line_ids),
int(qty))
def sale_validate_invoice(self, sale):
sale_advance_obj = self.env['sale.advance.payment.inv']
context = {
'active_model': 'sale.order',
'active_ids': [sale.id],
'active_id': sale.id,
}
wizard_invoice_id = sale_advance_obj.with_context(context).create({
'advance_payment_method': 'all',
})
wizard_invoice_id.with_context(context).create_invoices()
invoice_id = sale.invoice_ids[0]
invoice_id.signal_workflow('invoice_open')
# check if invoice is open
self.assertEqual(invoice_id.state, 'open')
pay_account_id = self.env['account.account'].\
browse(self.ref("account.cash"))
journal_id = self.env['account.journal'].\
browse(self.ref("account.bank_journal"))
date_start = date.today().replace(day=1, month=1).strftime('%Y-%m-%d')
period_id = self.env['account.fiscalyear'].search(
[('date_start', '=', date_start)]).period_ids[8]
invoice_id.pay_and_reconcile(
invoice_id.amount_total, pay_account_id.id,
period_id.id, journal_id.id, pay_account_id.id,
period_id.id, journal_id.id,
name="Payment for Invoice")
# in order to proceed is necessary to get the sale order invoiced
# and the invoice paid as well
self.assertTrue(sale.invoiced)
self.assertEqual(invoice_id.state, 'paid')
return invoice_id
def create_sale_invoice(self):
sale_order_id = self.create_sale_order('manual')
lot_ids = []
for picking_id in sale_order_id.picking_ids:
picking_id.force_assign()
# create wizard
wizard_id = self.env['stock.transfer_details'].create({
'picking_id': picking_id.id,
})
# make the transfers
for move_id in picking_id.move_lines:
wizard_item_id = self.env['stock.transfer_details_items'].\
create({
'transfer_id': wizard_id.id,
'product_id': move_id.product_id.id,
'quantity': move_id.product_qty,
'sourceloc_id': move_id.location_id.id,
'destinationloc_id':
self.ref('stock.stock_location_stock'),
'lot_id': False,
'product_uom_id': move_id.product_uom.id,
})
lot_id = self.env['stock.production.lot'].create({
'product_id': move_id.product_id.id,
'name': 'Test Lot %s%s' % (move_id.id,
move_id.product_id.id)
})
# keep lot_id for later check
lot_ids.append(lot_id)
wizard_item_id.write({
'lot_id': lot_id.id
})
wizard_id.do_detailed_transfer()
# Before continue, invoice must be open to get a number value
# and this is needed by the wizard
invoice_id = self.sale_validate_invoice(sale_order_id)
return invoice_id, lot_ids

View File

@@ -0,0 +1,209 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Osval Reyes,
# Yanina Aular
#
# 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 openerp.tests.common import TransactionCase
import re
class TestCrmRmaLotMassReturn2(TransactionCase):
"""
Test cases for CRM RMA Lot Mass Return Module
"""
def setUp(self):
super(TestCrmRmaLotMassReturn2, self).setUp()
self.metasearch_wizard = self.env['returned.lines.from.serial.wizard']
self.sale_order = self.env.ref('crm_rma_lot_mass_return.'
'so_wizard_rma_1')
self.lot_ids_mac0001 = self.env.ref('crm_rma_lot_mass_return.'
'lot_purchase_wizard_rma_item_1')
self.lot_ids_mac0003 = self.env.ref('crm_rma_lot_mass_return.'
'lot_purchase_wizard_rma_item_3')
self.claim_id_1 = self.env['crm.claim'].\
create({
'name': 'CLAIM001',
'claim_type': self.ref('crm_claim_type.'
'crm_claim_type_customer'),
'partner_id': self.sale_order.partner_id.id,
'pick': True
})
self.claim_id_2 = self.env['crm.claim'].\
create({
'name': 'CLAIM002',
'claim_type': self.ref('crm_claim_type.'
'crm_claim_type_customer'),
'partner_id': self.sale_order.partner_id.id,
'pick': True
})
def test_01_load_products(self):
wizard_id = self.metasearch_wizard.with_context({
'active_model': self.claim_id_1._name,
'active_id': self.claim_id_1.id,
'active_ids': [self.claim_id_1.id]
}).create({})
# Get ids for invoice lines
lines_list_id = wizard_id.onchange_load_products(
self.sale_order.invoice_ids[0].number +
'*5*description here' + '\n' + self.lot_ids_mac0001.name,
[(6, 0, [])])['domain']['lines_list_id'][0][2]
option_ids = wizard_id.onchange_load_products(
self.sale_order.invoice_ids[0].number +
'*5*description here' + '\n' + self.lot_ids_mac0001.name,
[(6, 0, [])])['value']['option_ids'][0][2]
wizard_id.option_ids = option_ids
items_to_select = self.env['claim.line.wizard'].browse(lines_list_id)
mac0001 = items_to_select.search([('lot_id.name', '=', 'MAC0001')])
mac0002 = items_to_select.search([('lot_id.name', '=', 'MAC0002')])
wizard_id.lines_list_id = [(6, 0, [mac0001.id, mac0002.id])]
# 1 Ink Cartridge, 2 Toner Cartridge, 1 iPad, 5 iMac
self.assertEqual(len(lines_list_id), 9)
qty = 0
for inv_line in self.sale_order.invoice_ids[0].invoice_line:
qty += inv_line.quantity
# Validate it has exactly as much records as the taken invoice has
self.assertEqual(len(lines_list_id), int(qty))
wizard_id._set_message()
wizard_id.add_claim_lines()
# 2 Macs
self.assertEqual(len(self.claim_id_1.claim_line_ids), 2)
def test_02_load_products(self):
wizard_id = self.metasearch_wizard.with_context({
'active_model': self.claim_id_2._name,
'active_id': self.claim_id_2.id,
'active_ids': [self.claim_id_2.id]
}).create({})
line_str = self.sale_order.invoice_ids[0].number + '*5*A description\n'
# Get ids for invoice lines
lines_list_id = wizard_id.onchange_load_products(
line_str, [(6, 0, [])])['domain']['lines_list_id'][0][2]
option_ids = wizard_id.onchange_load_products(
line_str, [(6, 0, [])])['value']['option_ids'][0][2]
wizard_id.option_ids = option_ids
cl_wizard = self.env['claim.line.wizard'].browse(lines_list_id)
mac0001 = cl_wizard.search([('lot_id.name', '=', 'MAC0001')])
mac0003 = cl_wizard.search([('lot_id.name', '=', 'MAC0003')])
toner0001 = cl_wizard.search([('product_id.name',
'=', 'Toner Cartridge')])
toner0002 = toner0001[1]
toner0001 = toner0001[0]
ink0001 = cl_wizard.search([('product_id.name', '=', 'Ink Cartridge')])
wizard_id.lines_list_id = [(6, 0, [mac0001.id, mac0003.id,
toner0001.id, toner0002.id,
ink0001.id])]
# 1 Ink Cartridge, 2 Toner Cartridge, 1 iPad, 5 iMac
self.assertEqual(len(lines_list_id), 9)
qty = 0
for inv_line in self.sale_order.invoice_ids[0].invoice_line:
qty += inv_line.quantity
# Validate it has exactly as much records as the taken invoice has
self.assertEqual(len(lines_list_id), int(qty))
wizard_id.add_claim_lines()
# 2 Macs
self.assertEqual(len(self.claim_id_2.claim_line_ids), 5)
def test_03_claim_line_creation_and_error_message(self):
"""
Challenge the wizard when a claim line is created, to set claim_origin
and the name correctly in a claim line itself, and also it tests the
message displayed to the user when is introduced an Serial/Lot numbers
that already is part of another claim.
"""
subject_list = self.env['claim.line'].SUBJECT_LIST
lot_name = "MAC0001"
subject_index = 3
scanned_data = lot_name + '*' + \
str(subject_index) + '*A short description to test\n'
wizard_id = self.metasearch_wizard.with_context({
'active_model': self.claim_id_2._name,
'active_id': self.claim_id_2.id,
'active_ids': [self.claim_id_2.id]
}).create({})
wizard_id.scan_data = scanned_data
# Get ids for invoice lines
lines_list_id = wizard_id.onchange_load_products(
scanned_data, [(6, 0, [])])['domain']['lines_list_id'][0][2]
wizard_id.option_id = wizard_id.onchange_load_products(
scanned_data, [(6, 0, [])])['value']['option_ids'][0][2]
items_to_select = self.env['claim.line.wizard'].browse(lines_list_id)
mac0001 = items_to_select.search([('lot_id.name', '=', lot_name)])
wizard_id.lines_list_id = [(6, 0, [mac0001.id])]
self.assertEqual(len(lines_list_id), 1)
wizard_id.add_claim_lines()
self.assertEqual(len(self.claim_id_2.claim_line_ids), 1)
line_id = self.claim_id_2.claim_line_ids
self.assertEqual(
subject_list[subject_index - 1][0], line_id.claim_origin)
self.assertEqual(scanned_data, line_id.prodlot_id.name + '*' +
str(subject_index) + '*' + line_id.name + '\n')
# create again the wizard
wizard_id = self.metasearch_wizard.with_context({
'active_model': self.claim_id_2._name,
'active_id': self.claim_id_2.id,
'active_ids': [self.claim_id_2.id]
}).create({})
wizard_id.scan_data = scanned_data
# Get ids for invoice lines
lines_list_id = wizard_id.onchange_load_products(
scanned_data, [(6, 0, [])])['domain']['lines_list_id'][0][2]
wizard_id.option_id = wizard_id.onchange_load_products(
scanned_data, [(6, 0, [])])['value']['option_ids'][0][2]
cl_wizard = self.env['claim.line.wizard'].browse(lines_list_id)
clw_id = cl_wizard.search([('lot_id.name', '=', lot_name)])
wizard_id.lines_list_id = [(6, 0, [clw_id.id])]
self.assertEqual(len(lines_list_id), 1)
wizard_id._set_message()
wizard_id.add_claim_lines()
self.assertEqual(len(self.claim_id_2.claim_line_ids), 1)
# if the message exists, then it's being displayed
regex = re.compile(".*" + lot_name + ".*")
self.assertTrue(regex.search(wizard_id.message))

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="crm_claim_rma_form_view_meta" model="ir.ui.view">
<field name="name">CRM - Claim product return Form</field>
<field name="model">crm.claim</field>
<field name="inherit_id" ref="crm_claim_rma.crm_claim_rma_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[@string='Claim Description']//div[@name='serial']" position="inside">
<button name="render_metasearch_view"
string="Add claim lines using serial or invoice number" type="object"/>
</xpath>
<xpath expr="//field[@name='invoice_id']" position="attributes">
<attribute name="invisible">True</attribute>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@@ -1,267 +0,0 @@
# -*- coding: utf-8 -*-
#########################################################################
# #
# #
#########################################################################
# #
# Copyright (C) 2009-2011 Akretion, Emmanuel Samyn #
# #
#This program is free software: you can redistribute it and/or modify #
#it under the terms of the GNU 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 General Public License for more details. #
# #
#You should have received a copy of the GNU General Public License #
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
#########################################################################
from openerp.osv import fields, orm
class returned_lines_from_serial(orm.TransientModel):
_name = 'returned_lines_from_serial.wizard'
_description = 'Wizard to create product return lines from serial numbers'
_columns = {
'prodlot_id_1': fields.many2one('stock.production.lot',
'Serial / Lot Number 1', required=True),
'prodlot_id_2': fields.many2one('stock.production.lot',
'Serial / Lot Number 2'),
'prodlot_id_3': fields.many2one('stock.production.lot',
'Serial / Lot Number 3'),
'prodlot_id_4': fields.many2one('stock.production.lot',
'Serial / Lot Number 4'),
'prodlot_id_5': fields.many2one('stock.production.lot',
'Serial / Lot Number 5'),
'qty_1' : fields.float('Quantity 1', digits=(12,2), required=True),
'qty_2' : fields.float('Quantity 2', digits=(12,2)),
'qty_3' : fields.float('Quantity 3', digits=(12,2)),
'qty_4' : fields.float('Quantity 4', digits=(12,2)),
'qty_5' : fields.float('Quantity 5', digits=(12,2)),
'claim_1': fields.selection([('none','Not specified'),
('legal','Legal retractation'),
('cancellation','Order cancellation'),
('damaged','Damaged delivered product'),
('error','Shipping error'),
('exchange','Exchange request'),
('lost','Lost during transport'),
('other','Other')], 'Claim Subject',
required=True,
help="To describe the product problem"),
'claim_2': fields.selection([('none','Not specified'),
('legal','Legal retractation'),
('cancellation','Order cancellation'),
('damaged','Damaged delivered product'),
('error','Shipping error'),
('exchange','Exchange request'),
('lost','Lost during transport'),
('other','Other')], 'Claim Subject',
required=True,
help="To describe the line product problem"),
'claim_3': fields.selection([('none','Not specified'),
('legal','Legal retractation'),
('cancellation','Order cancellation'),
('damaged','Damaged delivered product'),
('error','Shipping error'),
('exchange','Exchange request'),
('lost','Lost during transport'),
('other','Other')], 'Claim Subject',
required=True,
help="To describe the line product problem"),
'claim_4': fields.selection([('none','Not specified'),
('legal','Legal retractation'),
('cancellation','Order cancellation'),
('damaged','Damaged delivered product'),
('error','Shipping error'),
('exchange','Exchange request'),
('lost','Lost during transport'),
('other','Other')], 'Claim Subject',
required=True,
help="To describe the line product problem"),
'claim_5': fields.selection([('none','Not specified'),
('legal','Legal retractation'),
('cancellation','Order cancellation'),
('damaged','Damaged delivered product'),
('error','Shipping error'),
('exchange','Exchange request'),
('lost','Lost during transport'),
('other','Other')], 'Claim Subject',
required=True,
help="To describe the line product problem"),
'partner_id': fields.many2one('res.partner', 'Partner'),
}
# Get partner from case is set to filter serials
def _get_default_partner_id(self, cr, uid, context):
return self.pool.get('crm.claim').read(cr, uid,
context['active_id'], ['partner_id'])['partner_id'][0]
_defaults = {
'qty_1': lambda *a: 1.0,
'qty_2': lambda *a: 1.0,
'qty_3': lambda *a: 1.0,
'qty_4': lambda *a: 1.0,
'qty_5': lambda *a: 1.0,
'claim_1': lambda *a: "none",
'claim_2': lambda *a: "none",
'claim_3': lambda *a: "none",
'claim_4': lambda *a: "none",
'claim_5': lambda *a: "none",
'partner_id': _get_default_partner_id,
}
# If "Cancel" button pressed
def action_cancel(self,cr,uid,ids,conect=None):
return {'type': 'ir.actions.act_window_close',}
# If "Add & close" button pressed
def action_add_and_close(self, cr, uid, ids, context=None):
self.add_return_lines(cr, uid, ids, context)
return {'type': 'ir.actions.act_window_close',}
# If "Add & new" button pressed
def action_add_and_new(self, cr, uid, ids, context=None):
self.add_return_lines(cr, uid, ids, context)
return {
'context': context,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'returned_lines_from_serial.wizard',
'view_id': False,
'type': 'ir.actions.act_window',
'target': 'new',
}
# Method to get the product id from set
def get_product_id(self, cr, uid,ids,product_set, context=None):
product_id = False
for product in self.prodlot_2_product(cr, uid,[product_set]):
product_id = product
return product_id
# Method to create return lines
def add_return_lines(self, cr, uid, ids, context=None):
result = self.browse(cr,uid,ids)[0]
return_line = self.pool.get('claim.line')
# Refactor code : create 1 "createmethode" called by each if with values as parameters
return_line.create(cr, uid, {
'claim_id': context['active_id'],
'claim_origine': result.claim_1,
'product_id' : self.get_product_id(cr, uid, ids,
result.prodlot_id_1.id, context=context),
#'invoice_id' : self.prodlot_2_invoice(cr, uid,[result.prodlot_id_1.id],[result.prodlot_id_1.product_id.id]), #PRODLOT_ID can be in many invoice !!
'product_returned_quantity' : result.qty_1,
'prodlot_id' : result.prodlot_id_1.id,
'selected' : False,
'state' : 'draft',
#'guarantee_limit' : warranty['value']['guarantee_limit'],
#'warning' : warranty['value']['warning'],
})
if result.prodlot_id_2.id :
return_line.create(cr, uid, {
'claim_id': context['active_id'],
'claim_origine': result.claim_2,
'product_id' : self.get_product_id(cr, uid, ids,
result.prodlot_id_2.id, context=context),
# 'invoice_id' : self.prodlot_2_invoice(cr, uid,[result.prodlot_id_1.id]),
'product_returned_quantity' : result.qty_2,
'prodlot_id' : result.prodlot_id_2.id,
'selected' : False,
'state' : 'draft',
#'guarantee_limit' : warranty['value']['guarantee_limit'],
#'warning' : warranty['value']['warning'],
})
if result.prodlot_id_3.id :
return_line.create(cr, uid, {
'claim_id': context['active_id'],
'claim_origine': result.claim_3,
'product_id' : self.get_product_id(cr, uid, ids,
result.prodlot_id_3.id, context=context),
# 'invoice_id' : self.prodlot_2_invoice(cr, uid,[result.prodlot_id_1.id]),
'product_returned_quantity' : result.qty_3,
'prodlot_id' : result.prodlot_id_3.id,
'selected' : False,
'state' : 'draft',
#'guarantee_limit' : warranty['value']['guarantee_limit'],
#'warning' : warranty['value']['warning'],
})
if result.prodlot_id_4.id :
return_line.create(cr, uid, {
'claim_id': context['active_id'],
'claim_origine': result.claim_4,
'product_id' : self.get_product_id(cr, uid, ids,
result.prodlot_id_4.id, context=context),
# 'invoice_id' : self.prodlot_2_invoice(cr, uid,[result.prodlot_id_1.id]),
'product_returned_quantity' : result.qty_4,
'prodlot_id' : result.prodlot_id_4.id,
'selected' : False,
'state' : 'draft',
#'guarantee_limit' : warranty['value']['guarantee_limit'],
#'warning' : warranty['value']['warning'],
})
if result.prodlot_id_5.id :
return_line.create(cr, uid, {
'claim_id': context['active_id'],
'claim_origine': result.claim_5,
'product_id' : self.get_product_id(cr, uid, ids,
result.prodlot_id_5.id, context=context),
# 'invoice_id' : self.prodlot_2_invoice(cr, uid,[result.prodlot_id_1.id],[result.prodlot_id_1.product_id.id]),
'product_returned_quantity' : result.qty_5,
'prodlot_id' : result.prodlot_id_5.id,
'selected' : False,
'state' : 'draft',
#'guarantee_type':
#'guarantee_limit' : warranty['value']['guarantee_limit'],
#'warning' : warranty['value']['warning'],
})
return True
def prodlot_2_product(self,cr, uid, prodlot_ids):
stock_move_ids = self.pool.get('stock.move').search(cr, uid,
[('prodlot_id', 'in', prodlot_ids)])
res = self.pool.get('stock.move').read(cr, uid,
stock_move_ids, ['product_id'])
return set([x['product_id'][0] for x in res if x['product_id']])
def prodlot_2_invoice(self,cr, uid, prodlot_id,product_id):
# get stock_move_ids
stock_move_ids = self.pool.get('stock.move').search(cr, uid,
[('prodlot_id', 'in', prodlot_id)])
# if 1 id
# (get stock picking (filter on out ?))
# get invoice_ids from stock_move_id where invoice.line.product = prodlot_product and invoice customer = claim_partner
# if 1 id
# return invoice_id
# else
# else : move_in / move_out ; 1 move per order line so if many order lines with same lot, ...
#
#return set(self.stock_move_2_invoice(cr, uid, stock_move_ids))
return True
def stock_move_2_invoice(self, cr, uid, stock_move_ids):
inv_line_ids = []
res = self.pool.get('stock.move').read(cr, uid,
stock_move_ids, ['sale_line_id'])
sale_line_ids = [x['sale_line_id'][0] for x in res if x['sale_line_id']]
if not sale_line_ids:
return []
sql_base = "select invoice_id from sale_order_line_invoice_rel where \
order_line_id in ("
cr.execute(sql_base + ','.join(map(lambda x: str(x),sale_line_ids))+')')
res = cr.fetchall()
for i in res:
for j in i:
inv_line_ids.append(j)
res = self.pool.get('account.invoice.line').read(cr, uid,
inv_line_ids,['invoice_id'])
return [x['invoice_id'][0] for x in res if x['invoice_id']]

View File

@@ -1,73 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
#########################################################################
# #
# #
#########################################################################
# #
# Copyright (C) 2009-2011 Akretion, Emmanuel Samyn #
# #
#This program is free software: you can redistribute it and/or modify #
#it under the terms of the GNU 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 General Public License for more details. #
# #
#You should have received a copy of the GNU General Public License #
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
#########################################################################
-->
<openerp>
<data>
<!-- SELECT FORM VIEW -->
<record id="view_create_return_serial_form" model="ir.ui.view">
<field name="name">returned_lines_from_serial_wiew</field>
<field name="model">returned_lines_from_serial.wizard</field>
<field name="arch" type="xml">
<form string="Select serial numbers to create">
<group col="3" colspan="4">
<separator string="Serial / Lot Number" colspan="1"/>
<separator string="Quantity returned" colspan="1"/>
<separator string="Claim short description" colspan="1"/>
<field name="prodlot_id_1" nolabel="1"/>
<field name="qty_1" nolabel="1"/>
<field name="claim_1" nolabel="1"/>
<field name="prodlot_id_2" nolabel="1"/>
<field name="qty_2" nolabel="1"/>
<field name="claim_2" nolabel="1"/>
<field name="prodlot_id_3" nolabel="1"/>
<field name="qty_3" nolabel="1"/>
<field name="claim_3" nolabel="1"/>
<field name="prodlot_id_4" nolabel="1"/>
<field name="qty_4" nolabel="1"/>
<field name="claim_4" nolabel="1"/>
<field name="prodlot_id_5" nolabel="1"/>
<field name="qty_5" nolabel="1"/>
<field name="claim_5" nolabel="1"/>
</group>
<group col="4" colspan="2">
<button special="cancel" string="Cancel" name="action_cancel" type="object" icon='gtk-cancel'/>
<button name="action_add_and_close" string="Save and close" icon='gtk-ok' type="object"/>
<button name="action_add_and_new" string="Save and new" icon='gtk-add' type="object"/>
</group>
</form>
</field>
</record>
<!-- SELECT ACTION -->
<record id="action_create_return_serial" model="ir.actions.act_window">
<field name="name">action_create_return_serial</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">returned_lines_from_serial.wizard</field>
<field name="src_model">crm.claim</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@@ -1,9 +1,12 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Copyright 2013 Camptocamp
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
# Joel Grand-Guillaume,
# Yanina Aular, Osval Reyes
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -19,4 +22,5 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import returned_lines_from_serial

View File

@@ -0,0 +1,595 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Copyright (C) 2009-2011 Akretion
# Author: Emmanuel Samyn,
# Yanina Aular,
# Osval Reyes
#
# 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 openerp import _, api, fields, models
from openerp.exceptions import ValidationError
class ClaimLineWizard(models.TransientModel):
_name = "claim.line.wizard"
product_id = fields.Many2one("product.product",
string="Product",
help="Product to claim")
lot_id = fields.Many2one("stock.production.lot",
string="Lot",
help="Product to claim")
invoice_line_id = fields.Many2one("account.invoice.line",
required=True,
string="Invoice Line",
help="Invoice Line")
name = fields.Char(compute="_get_complete_name",
string="Complete Lot Name",)
@api.constrains('product_id', 'invoice_line_id')
def _check_product_id(self):
for record in self:
if record.product_id != \
record.invoice_line_id.product_id:
raise ValidationError("The product of the"
" invoice %s is not same"
" that product %s" %
(record.invoice_line_id.product_id.name,
record.product_id.name))
@api.depends('invoice_line_id', 'lot_id', 'product_id')
def _get_complete_name(self):
for wizard in self:
invoice_number = wizard.invoice_line_id.invoice_id.number
product_name = wizard.product_id.name
lot_name = False
if wizard.lot_id:
lot_name = wizard.lot_id.name
if not lot_name:
name = _("(ID: %s) - %s - %s") % \
(wizard.id,
product_name,
invoice_number)
else:
name = _("(ID: %s) - %s - %s - %s") % \
(wizard.id,
product_name,
invoice_number,
lot_name)
wizard.name = name
class ReturnedLinesFromSerial(models.TransientModel):
_name = 'returned.lines.from.serial.wizard'
_description = 'Wizard to create product return lines'
' from serial numbers or invoices'
# Get partner from case is set to filter serials
@api.model
def _get_default_partner_id(self):
"""
Obtain partner from the claim
"""
crm_claim_model = self.env['crm.claim']
claim_id = self.env.context.get('active_id')
partner_record = crm_claim_model.browse(claim_id).\
partner_id
return partner_record and partner_record[0] or \
self.env['res.partner']
@api.model
def create_claim_line(self, claim_id, claim_origin,
product_record, claim_line_wizard,
qty, name):
clima_line = self.env['claim.line']
if claim_line_wizard.lot_id:
inv_line = self.prodlot_2_invoice_line(
claim_line_wizard.lot_id.name)
lot_id = claim_line_wizard.lot_id.id
else:
inv_line = claim_line_wizard.invoice_line_id
lot_id = False
line_rec = clima_line.create({
'claim_id': claim_id,
'claim_origin': claim_origin,
'product_id': product_record and product_record.id or False,
'name': name and name or (product_record and
product_record.name or
inv_line.name),
'invoice_line_id': inv_line.id,
'product_returned_quantity': qty,
'prodlot_id': lot_id,
})
line_rec.set_warranty()
# If "Cancel" button pressed
@api.multi
def action_cancel(self):
return {'type': 'ir.actions.act_window_close'}
partner_id = fields.Many2one('res.partner',
'Partner',
default=_get_default_partner_id)
def _get_claim_type(self):
claim_id = self.env.context.get('active_id')
claim_record = self.env['crm.claim'].browse(claim_id)
current_claim_type = claim_record.claim_type
customer_claim_type = \
self.env.ref('crm_claim_type.crm_claim_type_customer')
supplier_claim_type = \
self.env.ref('crm_claim_type.crm_claim_type_supplier')
return current_claim_type, customer_claim_type, supplier_claim_type
@api.model
def prodlot_2_invoice_line(self, prodlot):
"""
Return the last line of customer invoice
based in serial/lot number
"""
lot_obj = self.env['stock.production.lot']
current_claim_type, customer_claim_type, supplier_claim_type = \
self._get_claim_type()
prodlot = lot_obj.search([('name', '=', str(prodlot))])
if supplier_claim_type == current_claim_type:
if prodlot.supplier_invoice_line_id:
return prodlot.supplier_invoice_line_id
elif customer_claim_type == current_claim_type:
if prodlot.invoice_line_id:
return prodlot.invoice_line_id
else:
if prodlot.invoice_line_id:
return prodlot.invoice_line_id
elif prodlot.supplier_invoice_line_id:
return prodlot.supplier_invoice_line_id
return False
lines_list_id = fields.Many2many('claim.line.wizard',
'claim_line_wizard_returned',
'wizard_id',
'claim_line_wizard_id',
string='Products selected',
help='Field used to show the current '
'status of the lots '
'loaded')
option_ids = fields.Many2many('claim.line.wizard',
string='Invoice Lines to Select',
help='Field used to load the ids of '
'invoice lines in invoices writed')
scan_data = fields.Text('Products',
help='Field used to load and show the '
'products')
scaned_data = fields.Text('Products',
help='Field used to load the ids of '
'products loaded')
current_status = fields.Text('Status',
help='Field used to show the current '
'status of the product '
'loaded(Name and quantity)')
@api.multi
def get_metasearch_view_brw(self):
"""
@return: view with metasearch field
"""
view_id = self.env.\
ref('crm_rma_lot_mass_return.view_enter_product')
return view_id
@api.multi
def render_metasearch_view(self):
"""
Render wizard view with metasearch field
"""
view = self.get_metasearch_view_brw()
if view:
return {
'name': _('Search Product'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'returned.lines.from.serial.wizard',
'view_id': view.id,
'views': [(view.id, 'form')],
'target': 'new',
'res_id': self.id,
}
@api.model
def get_data_of_products(self, input_data):
data_line = []
for item in input_data and input_data.split('\n') or []:
if '*' in item:
comput = item.split('*')
data_it_1 = '0'
data_it_2 = ''
if len(comput) >= 2:
data_it_1 = comput[1]
if len(comput) >= 3:
data_it_2 = comput[2]
if comput[0]:
data_line.append((comput[0], (data_it_1, data_it_2)))
else:
if item.strip():
data_line.append((item.strip(), ('0', '')))
return data_line
def _get_lots_from_scan_data(self, input_data):
input_lines = self.get_data_of_products(input_data)
invoice = self.env['account.invoice']
lot = self.env['stock.production.lot']
prodlot_set_ids = set()
lot_set_ids = []
lots_lot_set_ids = []
if not input_lines:
return False, False, False
current_claim_type, customer_claim_type, supplier_claim_type = \
self._get_claim_type()
claim_line_wizard = self.env['claim.line.wizard']
for line in input_lines:
# if there is no invoice/serial in it
if not line[0]:
continue
number_serial = line[0].encode('utf8')
# search invoices first
invoice_ids = invoice.search([('number', '=', number_serial)])
element_searched = False
if invoice_ids:
if supplier_claim_type == current_claim_type:
invoice_field = 'supplier_invoice_line_id'
elif customer_claim_type == current_claim_type:
invoice_field = 'invoice_line_id'
for inv in invoice_ids:
for inv_line in inv.invoice_line:
clw = claim_line_wizard.\
search([('invoice_line_id', '=', inv_line.id)])
enter = False
lot_ids = lot.\
search([(invoice_field, '=',
inv_line.id)])
if len(clw) < int(inv_line.quantity):
for asd in clw:
if asd not in lot_set_ids:
lot_set_ids.append(asd)
lot_ids = lot_ids - asd.lot_id
num_to_create = int(inv_line.quantity) - len(clw)
for num in xrange(0, num_to_create):
clw = \
claim_line_wizard.\
create({
'product_id':
inv_line.product_id.id,
'invoice_line_id': inv_line.id,
})
if lot_ids:
lot = lot_ids[0]
clw.write({'lot_id': lot.id})
lot_ids = lot_ids - lot
for asd in clw:
if asd not in lot_set_ids:
lot_set_ids.append(asd)
enter = True
if not enter:
for asd in clw:
if asd not in lot_set_ids:
if lot_ids:
lot = lot_ids[0]
asd.write({'lot_id': lot.id})
lot_ids = lot_ids - lot
lot_set_ids.append(asd)
element_searched = lot_set_ids
else:
# if not, it must be a serial lot number
prodlot_ids = lot
if supplier_claim_type == current_claim_type:
prodlot_ids = \
lot.search([('name', '=', number_serial),
('supplier_invoice_line_id', '!=', False)])
invoice_line = prodlot_ids.supplier_invoice_line_id
elif customer_claim_type == current_claim_type:
prodlot_ids = \
lot.search([('name', '=', number_serial),
('invoice_line_id', '!=', False)])
invoice_line = prodlot_ids.invoice_line_id
else:
prodlot_ids = \
lot.search([('name', '=', number_serial), '|',
('supplier_invoice_line_id', '!=', False),
('invoice_line_id', '!=', False),
])
if prodlot_ids.invoice_line_id:
invoice_line = prodlot_ids.invoice_line_id
else:
invoice_line = prodlot_ids.supplier_invoice_line_id
if prodlot_ids:
for lot_id in prodlot_ids:
clw = claim_line_wizard.\
search([('lot_id', '=', lot_id.id)])
if not clw:
clw = \
claim_line_wizard.\
create({
'product_id': lot_id.product_id.id,
'lot_id': lot_id.id,
'invoice_line_id': invoice_line.id,
})
for asd in clw:
if asd not in lot_set_ids:
lot_set_ids.append(asd)
element_searched = True
for item in prodlot_ids:
item_name = item.product_id \
and item.product_id.name.encode('utf8') or False
prodlot_set_ids |= {'%s+%s' % (item.id, item_name)}
for asd in lot_set_ids:
if asd not in lots_lot_set_ids:
lots_lot_set_ids.append(asd)
# if at least one line is not found, then return error
if not element_searched:
return False, line[0], False
# all lines were found, then return those lots
return lot_set_ids, prodlot_set_ids, lots_lot_set_ids
@api.multi
def onchange_load_products(self, input_data, lines_list_id):
"""
Load claim lines from partner invoices or related production lots
into the current claim massively
"""
lot_lots_ids = []
prodlot_set_ids = set()
lines_set_ids = []
current_status = scaned_data = ''
elements_searched, line_found, lot_lots_ids = \
self._get_lots_from_scan_data(input_data)
if not elements_searched and not line_found:
return {
'value': {
'option_ids': [],
'current_status': current_status,
'scaned_data': scaned_data,
},
'domain': {
'lines_list_id': [('id', 'in', [])]
}
}
if not elements_searched and not lot_lots_ids and line_found:
return {
'warning': {
'message': (_('The product or invoice %s'
' was not found') % line_found)},
}
else:
lines_set_ids = elements_searched
prodlot_set_ids = line_found
for line in prodlot_set_ids:
name = line.split('+')
current_status += name[1] + '\n'
scaned_data += name[0] + '\n'
lines_set_ids = [asd.id for asd in lines_set_ids]
return {
'value': {
'option_ids': [(6, 0, lines_set_ids)],
'current_status': current_status,
'scaned_data': scaned_data,
},
'domain': {
'lines_list_id': [('id', 'in', lines_set_ids)]
}
}
def _get_lot_ids(self):
lot = self.env['stock.production.lot']
lot_ids = set()
if self.scaned_data:
lot_ids |= {lot_id
for lid in self.scaned_data.strip().split('\n')
for lot_id in lot.browse(int(lid))}
claim_line_wizard = self.env['claim.line.wizard']
lot_ids_2 = []
for wizard_id in lot_ids:
clws = claim_line_wizard.search([('lot_id', '=', wizard_id.id)])
for clw in clws:
lot_ids_2.append(clw)
lot_ids = set(lot_ids_2)
if self.lines_list_id:
lot_ids |= {lid for lid in self.lines_list_id}
return lot_ids
@api.model
def _get_invalid_lots_set(self, claim_line_wizard_ids, add=False):
"""
Return only those lots are related to claim lines
"""
claim_line_wizard = self.env['claim.line.wizard']
valid = claim_line_wizard.browse(claim_line_wizard_ids)
invalid_lots = []
for clw in claim_line_wizard.browse(claim_line_wizard_ids):
if clw.lot_id:
invalid_lot = self.env['claim.line'].search([
('invoice_line_id', '=', clw.invoice_line_id.id),
('product_id', '=', clw.product_id.id),
('prodlot_id', '=', clw.lot_id.id),
])
if not invalid_lot:
valid = valid - clw
if invalid_lot:
invalid_lots.append(clw)
for clw in valid.mapped('invoice_line_id'):
# mac1, None -> claim.line
invalid_lot = self.env['claim.line'].search([
('invoice_line_id', '=', clw.id),
('product_id', '=', clw.product_id.id),
])
# mac1, mac2, mac3, mac4, None -> breaked down
clws = self.env['claim.line.wizard'].\
search([('invoice_line_id', '=', clw.id),
])
if invalid_lot:
for item in invalid_lot:
if item.prodlot_id:
add = clws.search([
('lot_id', '=', item.prodlot_id.id),
('id', 'in', clws.mapped('id')),
('id', 'not in', [rdy.id for rdy in invalid_lots]),
])
else:
add = clws.search([
('lot_id', '=', False),
('id', 'in', clws.mapped('id')),
('id', 'not in', [rdy.id for rdy in invalid_lots]),
])
if add:
invalid_lots.append(add[0])
# mac1, None -> like claim.line.wizard
return invalid_lots and invalid_lots or []
@api.multi
def add_claim_lines(self):
info = self.get_data_of_products(self.scan_data)
lot_ids = self._get_lot_ids()
lot_ids = [lid.id for lid in lot_ids]
clw_ids = set(self._get_lot_ids()) - \
set(self._get_invalid_lots_set(lot_ids, True))
clw_ids = list(clw_ids)
# It creates only those claim lines that have a valid production lot,
# i. e. not using in others claims
info = dict(info)
if clw_ids:
for clw_id in clw_ids:
product_id = clw_id.product_id
claim_line_info = False
if clw_id.lot_id.name in info:
claim_line_info = info.get(clw_id.lot_id.name, False)
elif clw_id.invoice_line_id.invoice_id.number in info:
claim_line_info = \
info.get(clw_id.invoice_line_id.invoice_id.number,
False)
num = claim_line_info and claim_line_info[0] or '0'
name = claim_line_info and claim_line_info[1] or ''
if num.isdigit():
num = int(num)
else:
num = 0
current_claim_type, customer_claim_type, \
supplier_claim_type = \
self._get_claim_type()
self.create_claim_line(self.env.context.get('active_id'),
self.env[
'claim.line']._get_subject(num),
product_id, clw_id, 1, name)
# Clean items in wizard model
if len(clw_ids) == 1:
ids_to_delete = "(%s)" % str(clw_ids[0].id)
else:
ids_to_delete = "%s" % str(tuple([clw.id for clw in clw_ids]))
self._cr.execute("DELETE FROM claim_line_wizard where id IN %s"
% ids_to_delete)
# normal execution
self.action_cancel()
@api.multi
def change_list(self, lines):
return {
'value': {
'lines_list_id': lines,
}
}
message = fields.Text(string='Message',
compute='_set_message'
)
@api.depends('current_status', 'lines_list_id', 'scan_data')
def _set_message(self):
"""
Notify for missing (not added) claim lines that are in use in others
claims
"""
for wizard in self:
msg = ''
all_lots = wizard._get_lots_from_scan_data(wizard.scan_data)
not_valid_lot_ids = set()
if all_lots[0]:
all_lots_0 = [item for item in all_lots[0]]
not_valid_lot_ids = set(all_lots_0)
if all_lots[2]:
all_lots_2 = [item for item in all_lots[2]]
not_valid_lot_ids |= set(all_lots_2)
if not_valid_lot_ids:
not_valid_lot_ids = [item.id for
item in list(not_valid_lot_ids)]
not_valid_lot_ids = wizard.\
_get_invalid_lots_set(not_valid_lot_ids)
not_valid_lot_ids = list(set(not_valid_lot_ids))
claim_with_lots_msg = ""
for line_id in not_valid_lot_ids:
claim_with_lots_msg += "\t- %s\n" % \
line_id.name
if claim_with_lots_msg:
msg = _("The following Serial/Lot numbers won't be added,"
" because all of them (listed below)"
" are currently in"
" use:\n\n %s") % (claim_with_lots_msg) or ''
wizard.message = msg

View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_enter_product" model="ir.ui.view">
<field name="name">returned_lines_from_serial_wiew</field>
<field name="model">returned.lines.from.serial.wizard</field>
<field name="arch" type="xml">
<form>
<div class='row'>
<div class="col-md-10 col-sm-10 col-lg-10">
<div class="panel panel-default">
<div class="panel-heading">
<h2><field name="partner_id" readonly="1"/></h2>
<field class="oe_form_box_info oe_text_center"
name='message'
readonly="1"
attrs="{'invisible':[('message', '=', '')]}"/>
<group>
<field name="scaned_data" invisible="1"/>
</group>
</div>
</div>
<table class="table table-hover">
<tbody>
<td>
<field name="current_status" readonly="1" widget="barcode_text" nolabel='1'/>
</td>
<td>
<field name="scan_data"
widget='barcode_text'
on_change="onchange_load_products(scan_data, option_ids)"
nolabel='1'/>
</td>
</tbody>
</table>
</div>
<div class="col-md-10 col-sm-10 col-lg-10">
<div class="row">
<div class="pull-right" name="buttons">
<button name="add_claim_lines"
help="All the valid lines will be added to the claim"
confirm="You are about to add new lines to the claim, Do you want to continue?."
string="Add items to the claim" colspan="1" type="object" class="oe_highlight"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class='col-md-4 col-sm-4 col-lg-4'>
<div class="row">
<field name="option_ids" invisible="1"/>
<field name="lines_list_id"
domain="[('id', 'in', [])]"
widget="many2many_checkboxes" on_change="change_list(lines_list_id)"/>
</div>
</div>
<div class='col-md-16 col-sm-16 col-lg-16'>
<div class="row">
<!-- Invoice lines list -->
</div>
</div>
<div class='col-md-4 col-sm-4 col-lg-4'>
<div class="row">
</div>
</div>
</div>
<footer>
<p class="oe_help">
You should use this windows on this way.
<ol>
<li>Write the Serial/Lot Number to search the product</li>
or
<li>Write the Invoice Number to search the products in lines</li>
<li>Example: A4JD6JHS</li>
</ol>
The format for writing the reason for the claim and
the description is:
<ol>
<li>Serial/Lot Number*reason number*Description here</li>
<li>Example: A4JD6JHS*4*The display is break</li>
</ol>
The reasons for the claim can be
<ol>
<li>Not specified</li>
<li>Legal retractation</li>
<li>Order Cancellation</li>
<li>Damaged Delivered Product</li>
<li>Shipping error</li>
<li>Exchange request</li>
<li>Lost during transport</li>
<li>Perfect Conditions</li>
<li>Imperfection</li>
<li>Physical Damage by Client</li>
<li>Physical Damage by Company</li>
<li>Other</li>
</ol>
</p>
</footer>
</form>
</field>
</record>
</data>
</openerp>

View File

@@ -1,19 +1,58 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_prodlot_invoice
#
# * crm_rma_prodlot_invoice
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-17 19:54+0000\n"
"PO-Revision-Date: 2015-07-17 19:54+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-03 17:06+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-rma-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: crm_rma_prodlot_invoice
#: code:addons/crm_rma_prodlot_invoice/models/stock_production_lot.py:39
#, python-format
msgid "%s - Lot Number: %s - %s"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: field:stock.production.lot,invoice_line_id:0
msgid "Customer Invoice Line"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: help:stock.production.lot,invoice_line_id:0
msgid "Invoice Line Of Product to Customer Invoice"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_production_lot
msgid "Lot/Serial"
msgstr "Lote/No. de Serie"
#. module: crm_rma_prodlot_invoice
#: code:addons/crm_rma_prodlot_invoice/models/stock_production_lot.py:41
#, python-format
msgid "No lot number"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_picking
msgid "Picking List"
msgstr "Listado de recogida"
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_transfer_details
msgid "Picking wizard"
msgstr "Asistente de albarán"
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_sale_order

View File

@@ -0,0 +1,65 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_prodlot_invoice
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-03 17:06+0000\n"
"Last-Translator: <>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-rma-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: crm_rma_prodlot_invoice
#: code:addons/crm_rma_prodlot_invoice/models/stock_production_lot.py:39
#, python-format
msgid "%s - Lot Number: %s - %s"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: field:stock.production.lot,invoice_line_id:0
msgid "Customer Invoice Line"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: help:stock.production.lot,invoice_line_id:0
msgid "Invoice Line Of Product to Customer Invoice"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_production_lot
msgid "Lot/Serial"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: code:addons/crm_rma_prodlot_invoice/models/stock_production_lot.py:41
#, python-format
msgid "No lot number"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_picking
msgid "Picking List"
msgstr "Opération de manutention"
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_transfer_details
msgid "Picking wizard"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_sale_order
msgid "Sales Order"
msgstr ""
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_sale_order_line
msgid "Sales Order Line"
msgstr ""

View File

@@ -0,0 +1,66 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_prodlot_invoice
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-12 22:57+0000\n"
"PO-Revision-Date: 2015-12-14 06:38+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-rma-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: crm_rma_prodlot_invoice
#: code:addons/crm_rma_prodlot_invoice/models/stock_production_lot.py:39
#, python-format
msgid "%s - Lot Number: %s - %s"
msgstr "%s - Lot številka: %s - %s"
#. module: crm_rma_prodlot_invoice
#: field:stock.production.lot,invoice_line_id:0
msgid "Customer Invoice Line"
msgstr "Postavka izdanega računa"
#. module: crm_rma_prodlot_invoice
#: help:stock.production.lot,invoice_line_id:0
msgid "Invoice Line Of Product to Customer Invoice"
msgstr "Postavka proizvoda v postavko izdanega računa"
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_production_lot
msgid "Lot/Serial"
msgstr "Lot/Serijska"
#. module: crm_rma_prodlot_invoice
#: code:addons/crm_rma_prodlot_invoice/models/stock_production_lot.py:41
#, python-format
msgid "No lot number"
msgstr "Ni številke računa"
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_picking
msgid "Picking List"
msgstr "Zbirni seznam"
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_stock_transfer_details
msgid "Picking wizard"
msgstr "Zbirni čarovnik"
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_sale_order
msgid "Sales Order"
msgstr "Prodajni nalog"
#. module: crm_rma_prodlot_invoice
#: model:ir.model,name:crm_rma_prodlot_invoice.model_sale_order_line
msgid "Sales Order Line"
msgstr "Postavka prodajnega naloga"

40
crm_rma_prodlot_supplier/i18n/es.po Executable file → Normal file
View File

@@ -1,25 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_prodlot_supplier
#
# * crm_rma_prodlot_supplier
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-17 19:57+0000\n"
"PO-Revision-Date: 2015-07-17 19:57+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-03 17:06+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-rma-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_production_lot
msgid "Lot/Serial"
msgstr "Lote/No. de Serie"
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_picking
msgid "Picking List"
msgstr "Listado de recogida"
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_transfer_details
msgid "Picking wizard"
@@ -30,7 +37,24 @@ msgstr "Asistente de albarán"
msgid "Supplier"
msgstr "Proveedor"
#. module: crm_rma_prodlot_supplier
#: field:stock.production.lot,supplier_invoice_line_id:0
msgid "Supplier Invoice Line"
msgstr ""
#. module: crm_rma_prodlot_supplier
#: help:stock.production.lot,supplier_invoice_line_id:0
msgid "Supplier invoice with the purchase of goods sold to customer"
msgstr ""
#. module: crm_rma_prodlot_supplier
#: help:stock.production.lot,supplier_id:0
msgid "Supplier of good in claim"
msgstr "Proveedor del producto en la reclamación"
#. module: crm_rma_prodlot_supplier
#: view:stock.transfer_details:crm_rma_prodlot_supplier.view_lot_form_supplier_context
msgid ""
"{'product_id': product_id,\n"
" 'active_id': active_id}"
msgstr ""

View File

@@ -0,0 +1,60 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_prodlot_supplier
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-24 16:07+0000\n"
"PO-Revision-Date: 2015-11-03 17:06+0000\n"
"Last-Translator: <>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-rma-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_production_lot
msgid "Lot/Serial"
msgstr ""
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_picking
msgid "Picking List"
msgstr "Opération de manutention"
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_transfer_details
msgid "Picking wizard"
msgstr ""
#. module: crm_rma_prodlot_supplier
#: field:stock.production.lot,supplier_id:0
msgid "Supplier"
msgstr "Fournisseur"
#. module: crm_rma_prodlot_supplier
#: field:stock.production.lot,supplier_invoice_line_id:0
msgid "Supplier Invoice Line"
msgstr ""
#. module: crm_rma_prodlot_supplier
#: help:stock.production.lot,supplier_invoice_line_id:0
msgid "Supplier invoice with the purchase of goods sold to customer"
msgstr ""
#. module: crm_rma_prodlot_supplier
#: help:stock.production.lot,supplier_id:0
msgid "Supplier of good in claim"
msgstr ""
#. module: crm_rma_prodlot_supplier
#: view:stock.transfer_details:crm_rma_prodlot_supplier.view_lot_form_supplier_context
msgid ""
"{'product_id': product_id,\n"
" 'active_id': active_id}"
msgstr ""

View File

@@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_prodlot_supplier
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-12 22:57+0000\n"
"PO-Revision-Date: 2015-12-14 06:37+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-rma-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_production_lot
msgid "Lot/Serial"
msgstr "Lot/Serijska"
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_picking
msgid "Picking List"
msgstr "Zbirni seznam"
#. module: crm_rma_prodlot_supplier
#: model:ir.model,name:crm_rma_prodlot_supplier.model_stock_transfer_details
msgid "Picking wizard"
msgstr "Zbirni čarovnik"
#. module: crm_rma_prodlot_supplier
#: field:stock.production.lot,supplier_id:0
msgid "Supplier"
msgstr "Dobavitelj"
#. module: crm_rma_prodlot_supplier
#: field:stock.production.lot,supplier_invoice_line_id:0
msgid "Supplier Invoice Line"
msgstr "Postavka prejetega računa"
#. module: crm_rma_prodlot_supplier
#: help:stock.production.lot,supplier_invoice_line_id:0
msgid "Supplier invoice with the purchase of goods sold to customer"
msgstr "Prejeti račun z nabavljenim blagom za nadaljnjo prodajo kupcu"
#. module: crm_rma_prodlot_supplier
#: help:stock.production.lot,supplier_id:0
msgid "Supplier of good in claim"
msgstr "Dobavitelj blaga v zahtevku"
#. module: crm_rma_prodlot_supplier
#: view:stock.transfer_details:crm_rma_prodlot_supplier.view_lot_form_supplier_context
msgid ""
"{'product_id': product_id,\n"
" 'active_id': active_id}"
msgstr "{'product_id': product_id,\n 'active_id': active_id}"

View File

@@ -0,0 +1,96 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
==================
RMA Stock Location
==================
Allow the user to know how much for a product is available 'On Hand' and how much
is virtually (expected to be) available for RMA locations. Adding for the
different product views (Tree, Form and Kanban) information about it.
Both quantities are computed and include its children locations.
It is useful to use it as a quick snapshot for RMA from product perspective.
It also adds the following location on warehouses :
* Loss
* Refurbished
Several wizards on incoming deliveries that allow you to move your
goods easily in those new locations from a done reception.
Using this module make the logistic flow of return a bit more complex:
* Returning product goes into RMA location with a incoming shipment
* From the incoming shipment, forward them to another places (stock, loss, refurbish)
Installation
============
To install this module, just select it from availables modules.
Configuration
=============
No configuration is needed
Usage
=====
* Go to Sales > After-sale Services and note that 'RMA Quantity On Hand' and
'RMA Forecasted Quantity' has been included and they'll be shown when at least
when a product has either on hand or forecasted quantities available.
* In the other hand, it provides three wizards to make stock moves (transfers)
allowing to do product returns (incoming), send a product to loss or, to a refurbished
location.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/8.0/145
For further information, please visit:
* https://www.odoo.com/forum/help-1
Known issues / Roadmap
======================
* Optimization is possible when searching virtual quantities in the search function
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/rma/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
`here <https://github.com/OCA/rma/issues/new?body=module:%20crm_rma_stock_location%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Contributors
------------
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
* Yanina Aular <yanina.aular@vauxoo.com>
* Osval Reyes <osval@vauxoo.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit http://odoo-community.org.

View File

@@ -1,8 +1,10 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author: Guewen Baconnier
# Copyright 2015 Vauxoo
# Copyright 2014 Camptocamp SA
# Author: Guewen Baconnier,
# Osval Reyes
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -19,5 +21,6 @@
#
##############################################################################
from . import stock_warehouse
from . import product
from . import models
from . import wizards
from .init_hooks import post_init_hook

View File

@@ -1,8 +1,13 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author: Guewen Baconnier
# Copyright 2014 Camptocamp SA
# Copyright 2015 Vauxoo
# Copyright 2013-2014 Camptocamp SA
# Copyright 2009-2013 Akretion,
# Author: Guewen Baconnier,
# Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
# Joel Grand-Guillaume,
# Yanina Aular, Osval Reyes
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -19,31 +24,35 @@
#
##############################################################################
{'name': 'RMA Stock Location',
'version': '1.0',
'author': "Camptocamp,Odoo Community Association (OCA)",
'maintainer': 'Camptocamp',
'license': 'AGPL-3',
'category': 'Generic Modules/CRM & SRM',
'depends': ['stock',
'procurement',
],
'description': """
RMA Stock Location
==================
A RMA location can be selected on the warehouses.
The product views displays the quantity available and virtual in this
RMA location (including the children locations).
""",
'website': 'http://www.camptocamp.com',
'data': ['stock_data.xml',
'stock_warehouse_view.xml',
'product_view.xml',
],
'test': ['test/quantity.yml',
],
'installable': False,
'auto_install': False,
}
{
'name': 'RMA Stock Location',
'version': '8.0.1.0.0',
'author': "Akretion,Vauxoo,Camptocamp,Odoo Community Association (OCA)",
'maintainer': 'Camptocamp',
'website': 'http://www.camptocamp.com,http://www.vauxoo.com',
'license': 'AGPL-3',
'category': 'Generic Modules/CRM & SRM',
'depends': [
'crm_claim_rma',
'crm_claim',
'stock_account',
'procurement',
'crm_rma_location',
],
'data': [
'wizards/claim_make_picking_from_picking_view.xml',
'wizards/claim_make_picking_view.xml',
'views/product_product.xml',
'views/product_template.xml',
'views/crm_claim.xml',
'views/stock_picking.xml',
'views/stock_warehouse.xml',
],
'demo': [
'demo/stock_location.xml',
'demo/stock_inventory.xml',
],
'post_init_hook': 'post_init_hook',
'installable': True,
'auto_install': False,
}

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="rma_stock_location_move_01" model="stock.move">
<field name="name">Demo Stock Move: Customer > RMA</field>
<field name="product_id" ref="product.product_product_24"/>
<field name="product_uom">1</field>
<field name="product_uom_qty">1000</field>
<field name="company_id" ref="base.main_company"/>
<field name="priority">1</field> <!-- Normal -->
<field name="picking_type_id" ref="stock.picking_type_in"/>
<field name="location_id" ref="stock.stock_location_customers"/>
<field name="location_dest_id" search="[('name', '=', 'RMA'), ('location_id.name', '=', 'WH')]"/>
</record>
<record id="rma_stock_location_move_03" model="stock.move">
<field name="name">Demo Stock Move: RMA > Loss</field>
<field name="product_id" ref="product.product_product_24"/>
<field name="product_uom">1</field>
<field name="product_uom_qty">1000</field>
<field name="company_id" ref="base.main_company"/>
<field name="priority">1</field> <!-- Normal -->
<field name="picking_type_id" ref="stock.picking_type_internal"/>
<field name="location_id" search="[('name', '=', 'RMA'), ('location_id.name', '=', 'WH')]"/>
<field name="location_dest_id" ref="stock.stock_location_stock"/>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="location_rma" model="stock.location">
<field name="name">RMA Demo</field>
<field name="usage">internal</field>
</record>
<record id="stock.stock_warehouse_shop0" model="stock.warehouse">
<field name="lot_rma_id" ref="location_rma"/>
</record>
<record id="location_rma_a" model="stock.location">
<field name="name">RMA - Box A</field>
<field name="location_id" ref="location_rma"/>
<field name="usage">internal</field>
</record>
<record id="location_rma_b" model="stock.location">
<field name="name">RMA - Box B</field>
<field name="location_id" ref="location_rma"/>
<field name="usage">internal</field>
</record>
<record id="product_socket" model="product.product">
<field name="name">Socket</field>
<field name="categ_id" ref="product.product_category_1"/>
<field name="standard_price">70.0</field>
<field name="list_price">100.0</field>
<field name="type">product</field>
<field name="uom_id" ref="product.product_uom_unit"/>
<field name="uom_po_id" ref="product.product_uom_unit"/>
</record>
</data>
</openerp>

View File

@@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
# * crm_rma_stock_location
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-09-12 11:27+0000\n"
"PO-Revision-Date: 2014-09-12 11:27+0000\n"
"POT-Creation-Date: 2015-11-25 21:48+0000\n"
"PO-Revision-Date: 2015-11-25 21:48+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,39 +16,221 @@ msgstr ""
"Plural-Forms: \n"
#. module: crm_rma_stock_location
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_stock_warehouse_lot_rma_id
#: field:stock.warehouse,lot_rma_id:0
msgid "Location RMA"
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Cancel"
msgstr ""
#. module: crm_rma_stock_location
#: code:_description:0
#: model:ir.model,name:crm_rma_stock_location.model_product_product
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_loss_picking_from_claim_picking
msgid "Create Incoming Shipment to Breakage Loss Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_used_picking_from_claim_picking
msgid "Create Incoming Shipment to Refurbish Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_stock_picking_from_claim_picking
msgid "Create Incoming Shipment to Stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_claim_picking_loss
msgid "Create a Product Loss"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Create picking"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:89
#: field:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Dest. Location"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,id:0
msgid "ID"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: crm_rma_stock_location
#: help:claim.make.picking.from.picking.wizard,picking_line_source_location:0
msgid "Source location where the returned products are"
msgstr ""
#. module: crm_rma_stock_location
#: help:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
msgid "Target location to send returned products"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Locations"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:62
#, python-format
msgid "Loss"
msgstr ""
#. module: crm_rma_stock_location
#: field:stock.warehouse,loss_loc_id:0
msgid "Loss Location"
msgstr ""
#. module: crm_rma_stock_location
#: view:crm.claim:crm_rma_stock_location.crm_claim_rma_form_view_loss
msgid "New Product Loss"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,picking_line_ids:0
msgid "Picking lines"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_product
msgid "Product"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.stock_location_rma
msgid "RMA"
#: model:ir.model,name:crm_rma_stock_location.model_product_template
msgid "Product Template"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_product_product_rma_virtual_available
#: field:product.product,rma_virtual_available:0
#: view:product.product:crm_rma_stock_location.rma_product_product_tree_view
msgid "Product Variants"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to Loss"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to refurbish stock"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_a
msgid "RMA - Box A"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_b
msgid "RMA - Box B"
msgstr ""
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Available Products"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma
msgid "RMA Demo"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:42
#, python-format
msgid "RMA Forecasted Quantity"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_product_product_rma_qty_available
#: field:product.product,rma_qty_available:0
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Products"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:36
#, python-format
msgid "RMA Quantity On Hand"
msgstr ""
#. module: crm_rma_stock_location
#: code:_description:0
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:56
#, python-format
msgid "Refurbish"
msgstr ""
#. module: crm_rma_stock_location
#: field:stock.warehouse,lot_refurbish_id:0
msgid "Refurbish Location"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines for picking"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines to add in picking"
msgstr ""
#. module: crm_rma_stock_location
#: model:product.template,name:crm_rma_stock_location.product_socket_product_template
msgid "Socket"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:85
#: field:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.rma_product_variant_action
#: model:ir.ui.menu,name:crm_rma_stock_location.menu_stock_rma
msgid "RMA Stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
msgid "Warehouse"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_wizard
msgid "Wizard to create pickings from claim lines"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_from_picking_wizard
msgid "Wizard to create pickings from picking lines"
msgstr ""

View File

@@ -0,0 +1,243 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-03 01:39+0000\n"
"PO-Revision-Date: 2015-12-02 21:49+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: English (http://www.transifex.com/oca/OCA-rma-8-0/language/en/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Cancel"
msgstr "Cancel"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_loss_picking_from_claim_picking
msgid "Create Incoming Shipment to Breakage Loss Location"
msgstr "Create Incoming Shipment to Breakage Loss Location"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_used_picking_from_claim_picking
msgid "Create Incoming Shipment to Refurbish Location"
msgstr "Create Incoming Shipment to Refurbish Location"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_stock_picking_from_claim_picking
msgid "Create Incoming Shipment to Stock"
msgstr "Create Incoming Shipment to Stock"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_claim_picking_loss
msgid "Create a Product Loss"
msgstr "Create a Product Loss"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Create picking"
msgstr "Create picking"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_uid:0
msgid "Created by"
msgstr "Created by"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_date:0
msgid "Created on"
msgstr "Created on"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:89
#: field:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Dest. Location"
msgstr "Dest. Location"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,id:0
msgid "ID"
msgstr "ID"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_uid:0
msgid "Last Updated by"
msgstr "Last Updated by"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_date:0
msgid "Last Updated on"
msgstr "Last Updated on"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Locations"
msgstr "Locations"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:65
#, python-format
msgid "Loss"
msgstr "Loss"
#. module: crm_rma_stock_location
#: field:stock.warehouse,loss_loc_id:0
msgid "Loss Location"
msgstr "Loss Location"
#. module: crm_rma_stock_location
#: view:crm.claim:crm_rma_stock_location.crm_claim_rma_form_view_loss
msgid "New Product Loss"
msgstr "New Product Loss"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,picking_line_ids:0
msgid "Picking lines"
msgstr "Picking lines"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_product
msgid "Product"
msgstr "Product"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_template
msgid "Product Template"
msgstr "Product Template"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_product_tree_view
msgid "Product Variants"
msgstr "Product Variants"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to Loss"
msgstr "Product to Loss"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to refurbish stock"
msgstr "Product to refurbish stock"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to stock"
msgstr "Product to stock"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_a
msgid "RMA - Box A"
msgstr "RMA - Box A"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_b
msgid "RMA - Box B"
msgstr "RMA - Box B"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Available Products"
msgstr "RMA Available Products"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma
msgid "RMA Demo"
msgstr "RMA Demo"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:42
#: code:addons/crm_rma_stock_location/models/product_template.py:42
#, python-format
msgid "RMA Forecasted Quantity"
msgstr "RMA Forecasted Quantity"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Products"
msgstr "RMA Products"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:36
#: code:addons/crm_rma_stock_location/models/product_template.py:36
#, python-format
msgid "RMA Quantity On Hand"
msgstr "RMA Quantity On Hand"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.rma_product_variant_action
#: model:ir.ui.menu,name:crm_rma_stock_location.menu_stock_rma
msgid "RMA Stock"
msgstr "RMA Stock"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:56
#, python-format
msgid "Refurbish"
msgstr "Refurbish"
#. module: crm_rma_stock_location
#: field:stock.warehouse,lot_refurbish_id:0
msgid "Refurbish Location"
msgstr "Refurbish Location"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines for picking"
msgstr "Select lines for picking"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines to add in picking"
msgstr "Select lines to add in picking"
#. module: crm_rma_stock_location
#: model:product.template,name:crm_rma_stock_location.product_socket_product_template
msgid "Socket"
msgstr "Socket"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:85
#: field:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source Location"
msgstr "Source Location"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:86
#: help:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source location where the returned products are"
msgstr "Source location where the returned products are"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:90
#: help:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Target location to send returned products"
msgstr "Target location to send returned products"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
msgid "Warehouse"
msgstr "Warehouse"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_wizard
msgid "Wizard to create pickings from claim lines"
msgstr "Wizard to create pickings from claim lines"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_from_picking_wizard
msgid "Wizard to create pickings from picking lines"
msgstr "Wizard to create pickings from picking lines"

View File

@@ -0,0 +1,243 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-03 01:39+0000\n"
"PO-Revision-Date: 2015-12-02 21:49+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-rma-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Cancel"
msgstr "Cancelar"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_loss_picking_from_claim_picking
msgid "Create Incoming Shipment to Breakage Loss Location"
msgstr "Crear un envío de entrada hacia la ubicación de pérdida de productos dañados"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_used_picking_from_claim_picking
msgid "Create Incoming Shipment to Refurbish Location"
msgstr "Crear un envío de entrada hacia la ubicación de productos restaurados"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_stock_picking_from_claim_picking
msgid "Create Incoming Shipment to Stock"
msgstr "Crear un envío de entrada a Existencias"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_claim_picking_loss
msgid "Create a Product Loss"
msgstr "Registrar una pérdida de producto"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Create picking"
msgstr "Crear un albarán"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_date:0
msgid "Created on"
msgstr "Creado el"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:89
#: field:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Dest. Location"
msgstr "Ubicación destino"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,id:0
msgid "ID"
msgstr "ID"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_uid:0
msgid "Last Updated by"
msgstr "Actualizado por"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_date:0
msgid "Last Updated on"
msgstr "Actualizado el"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Locations"
msgstr "Ubicaciones"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:65
#, python-format
msgid "Loss"
msgstr "Pérdida"
#. module: crm_rma_stock_location
#: field:stock.warehouse,loss_loc_id:0
msgid "Loss Location"
msgstr "Ubicación de Pérdida"
#. module: crm_rma_stock_location
#: view:crm.claim:crm_rma_stock_location.crm_claim_rma_form_view_loss
msgid "New Product Loss"
msgstr "Nueva Pérdida de Producto"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,picking_line_ids:0
msgid "Picking lines"
msgstr "Líneas de albarán"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_product
msgid "Product"
msgstr "Producto"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_template
msgid "Product Template"
msgstr "Producto Plantilla"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_product_tree_view
msgid "Product Variants"
msgstr "Variantes del Producto"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to Loss"
msgstr "Producto a Pérdida"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to refurbish stock"
msgstr "Producto a Existencias de restaurados"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to stock"
msgstr "Producto a Existencias"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_a
msgid "RMA - Box A"
msgstr "RMA - Caja A"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_b
msgid "RMA - Box B"
msgstr "RMA - Caja B"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Available Products"
msgstr "Productos disponibles en RMA"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma
msgid "RMA Demo"
msgstr "Demostración RMA"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:42
#: code:addons/crm_rma_stock_location/models/product_template.py:42
#, python-format
msgid "RMA Forecasted Quantity"
msgstr "Pronóstico de Cantidades en RMA"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Products"
msgstr "Productos en RMA"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:36
#: code:addons/crm_rma_stock_location/models/product_template.py:36
#, python-format
msgid "RMA Quantity On Hand"
msgstr "Cantidades Disponibles en RMA"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.rma_product_variant_action
#: model:ir.ui.menu,name:crm_rma_stock_location.menu_stock_rma
msgid "RMA Stock"
msgstr "Existencias en RMA"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:56
#, python-format
msgid "Refurbish"
msgstr "Restaurar"
#. module: crm_rma_stock_location
#: field:stock.warehouse,lot_refurbish_id:0
msgid "Refurbish Location"
msgstr "Ubicación de Restaurados"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines for picking"
msgstr "Seleccionar lineas para albarán"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines to add in picking"
msgstr "Seleccionar lineas a agregar en albarán"
#. module: crm_rma_stock_location
#: model:product.template,name:crm_rma_stock_location.product_socket_product_template
msgid "Socket"
msgstr "Sócate"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:85
#: field:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source Location"
msgstr "Ubicación origen"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:86
#: help:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source location where the returned products are"
msgstr "Ubicación origen de los productos devueltos"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:90
#: help:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Target location to send returned products"
msgstr "Ubicación destino de los productos devueltos"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
msgid "Warehouse"
msgstr "Almacén"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_wizard
msgid "Wizard to create pickings from claim lines"
msgstr "Asistente para create albaranes desde lineas de reclamo"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_from_picking_wizard
msgid "Wizard to create pickings from picking lines"
msgstr "Asistente para create albaranes desde lineas de albaranes"

View File

@@ -0,0 +1,16 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-18 00:48+0000\n"
"PO-Revision-Date: 2015-07-18 00:48+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1,16 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-18 00:48+0000\n"
"PO-Revision-Date: 2015-07-18 00:48+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -0,0 +1,16 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-07-18 00:48+0000\n"
"PO-Revision-Date: 2015-07-18 00:48+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

View File

@@ -1,54 +1,243 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
# * crm_rma_stock_location
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-09-12 11:28+0000\n"
"PO-Revision-Date: 2014-09-12 11:28+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"POT-Creation-Date: 2015-12-03 01:39+0000\n"
"PO-Revision-Date: 2015-12-02 21:49+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-rma-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: crm_rma_stock_location
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_stock_warehouse_lot_rma_id
#: field:stock.warehouse,lot_rma_id:0
msgid "Location RMA"
msgstr "Emplacement RMA"
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Cancel"
msgstr "Annuler"
#. module: crm_rma_stock_location
#: code:_description:0
#: model:ir.model,name:crm_rma_stock_location.model_product_product
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_loss_picking_from_claim_picking
msgid "Create Incoming Shipment to Breakage Loss Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_used_picking_from_claim_picking
msgid "Create Incoming Shipment to Refurbish Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_stock_picking_from_claim_picking
msgid "Create Incoming Shipment to Stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_claim_picking_loss
msgid "Create a Product Loss"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Create picking"
msgstr "Créer expédition/réception"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:89
#: field:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Dest. Location"
msgstr "Emplacement de destination"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,id:0
msgid "ID"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Locations"
msgstr "Emplacements"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:65
#, python-format
msgid "Loss"
msgstr ""
#. module: crm_rma_stock_location
#: field:stock.warehouse,loss_loc_id:0
msgid "Loss Location"
msgstr ""
#. module: crm_rma_stock_location
#: view:crm.claim:crm_rma_stock_location.crm_claim_rma_form_view_loss
msgid "New Product Loss"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,picking_line_ids:0
msgid "Picking lines"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_product
msgid "Product"
msgstr "Article"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.stock_location_rma
msgid "RMA"
msgstr "RMA"
#: model:ir.model,name:crm_rma_stock_location.model_product_template
msgid "Product Template"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_product_product_rma_virtual_available
#: field:product.product,rma_virtual_available:0
#: view:product.product:crm_rma_stock_location.rma_product_product_tree_view
msgid "Product Variants"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to Loss"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to refurbish stock"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_a
msgid "RMA - Box A"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_b
msgid "RMA - Box B"
msgstr ""
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Available Products"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma
msgid "RMA Demo"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:42
#: code:addons/crm_rma_stock_location/models/product_template.py:42
#, python-format
msgid "RMA Forecasted Quantity"
msgstr "Quantité RMA prévue"
#. module: crm_rma_stock_location
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_product_product_rma_qty_available
#: field:product.product,rma_qty_available:0
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Products"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:36
#: code:addons/crm_rma_stock_location/models/product_template.py:36
#, python-format
msgid "RMA Quantity On Hand"
msgstr "Quantité RMA en stock"
#. module: crm_rma_stock_location
#: code:_description:0
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
#: model:ir.actions.act_window,name:crm_rma_stock_location.rma_product_variant_action
#: model:ir.ui.menu,name:crm_rma_stock_location.menu_stock_rma
msgid "RMA Stock"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:56
#, python-format
msgid "Refurbish"
msgstr ""
#. module: crm_rma_stock_location
#: field:stock.warehouse,lot_refurbish_id:0
msgid "Refurbish Location"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines for picking"
msgstr "Selectionner les lignes pour l'expédition/réception"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines to add in picking"
msgstr ""
#. module: crm_rma_stock_location
#: model:product.template,name:crm_rma_stock_location.product_socket_product_template
msgid "Socket"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:85
#: field:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source Location"
msgstr "Emplacement source"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:86
#: help:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source location where the returned products are"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:90
#: help:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Target location to send returned products"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
msgid "Warehouse"
msgstr "Entrepôt"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_wizard
msgid "Wizard to create pickings from claim lines"
msgstr "Assistant pour créer des expédition/réceptions à partir des lignes de réclamation"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_from_picking_wizard
msgid "Wizard to create pickings from picking lines"
msgstr ""

View File

@@ -0,0 +1,243 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-03 01:39+0000\n"
"PO-Revision-Date: 2015-12-02 21:49+0000\n"
"Last-Translator: <>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-rma-8-0/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Cancel"
msgstr "Cancelar"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_loss_picking_from_claim_picking
msgid "Create Incoming Shipment to Breakage Loss Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_used_picking_from_claim_picking
msgid "Create Incoming Shipment to Refurbish Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_stock_picking_from_claim_picking
msgid "Create Incoming Shipment to Stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_claim_picking_loss
msgid "Create a Product Loss"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Create picking"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:89
#: field:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Dest. Location"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,id:0
msgid "ID"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Locations"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:65
#, python-format
msgid "Loss"
msgstr ""
#. module: crm_rma_stock_location
#: field:stock.warehouse,loss_loc_id:0
msgid "Loss Location"
msgstr ""
#. module: crm_rma_stock_location
#: view:crm.claim:crm_rma_stock_location.crm_claim_rma_form_view_loss
msgid "New Product Loss"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,picking_line_ids:0
msgid "Picking lines"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_product
msgid "Product"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_template
msgid "Product Template"
msgstr ""
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_product_tree_view
msgid "Product Variants"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to Loss"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to refurbish stock"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_a
msgid "RMA - Box A"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_b
msgid "RMA - Box B"
msgstr ""
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Available Products"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma
msgid "RMA Demo"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:42
#: code:addons/crm_rma_stock_location/models/product_template.py:42
#, python-format
msgid "RMA Forecasted Quantity"
msgstr ""
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Products"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:36
#: code:addons/crm_rma_stock_location/models/product_template.py:36
#, python-format
msgid "RMA Quantity On Hand"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.rma_product_variant_action
#: model:ir.ui.menu,name:crm_rma_stock_location.menu_stock_rma
msgid "RMA Stock"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:56
#, python-format
msgid "Refurbish"
msgstr ""
#. module: crm_rma_stock_location
#: field:stock.warehouse,lot_refurbish_id:0
msgid "Refurbish Location"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines for picking"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines to add in picking"
msgstr ""
#. module: crm_rma_stock_location
#: model:product.template,name:crm_rma_stock_location.product_socket_product_template
msgid "Socket"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:85
#: field:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source Location"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:86
#: help:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source location where the returned products are"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:90
#: help:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Target location to send returned products"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
msgid "Warehouse"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_wizard
msgid "Wizard to create pickings from claim lines"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_from_picking_wizard
msgid "Wizard to create pickings from picking lines"
msgstr ""

View File

@@ -0,0 +1,243 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-03 01:39+0000\n"
"PO-Revision-Date: 2015-12-02 21:49+0000\n"
"Last-Translator: <>\n"
"Language-Team: Romanian (http://www.transifex.com/oca/OCA-rma-8-0/language/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ro\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Cancel"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_loss_picking_from_claim_picking
msgid "Create Incoming Shipment to Breakage Loss Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_used_picking_from_claim_picking
msgid "Create Incoming Shipment to Refurbish Location"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_stock_picking_from_claim_picking
msgid "Create Incoming Shipment to Stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_claim_picking_loss
msgid "Create a Product Loss"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Create picking"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_uid:0
msgid "Created by"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_date:0
msgid "Created on"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:89
#: field:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Dest. Location"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,id:0
msgid "ID"
msgstr "ID"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Locations"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:65
#, python-format
msgid "Loss"
msgstr ""
#. module: crm_rma_stock_location
#: field:stock.warehouse,loss_loc_id:0
msgid "Loss Location"
msgstr ""
#. module: crm_rma_stock_location
#: view:crm.claim:crm_rma_stock_location.crm_claim_rma_form_view_loss
msgid "New Product Loss"
msgstr ""
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,picking_line_ids:0
msgid "Picking lines"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_product
msgid "Product"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_template
msgid "Product Template"
msgstr ""
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_product_tree_view
msgid "Product Variants"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to Loss"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to refurbish stock"
msgstr ""
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to stock"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_a
msgid "RMA - Box A"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_b
msgid "RMA - Box B"
msgstr ""
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Available Products"
msgstr ""
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma
msgid "RMA Demo"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:42
#: code:addons/crm_rma_stock_location/models/product_template.py:42
#, python-format
msgid "RMA Forecasted Quantity"
msgstr ""
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Products"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:36
#: code:addons/crm_rma_stock_location/models/product_template.py:36
#, python-format
msgid "RMA Quantity On Hand"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.rma_product_variant_action
#: model:ir.ui.menu,name:crm_rma_stock_location.menu_stock_rma
msgid "RMA Stock"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:56
#, python-format
msgid "Refurbish"
msgstr ""
#. module: crm_rma_stock_location
#: field:stock.warehouse,lot_refurbish_id:0
msgid "Refurbish Location"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines for picking"
msgstr ""
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines to add in picking"
msgstr ""
#. module: crm_rma_stock_location
#: model:product.template,name:crm_rma_stock_location.product_socket_product_template
msgid "Socket"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:85
#: field:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source Location"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:86
#: help:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source location where the returned products are"
msgstr ""
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:90
#: help:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Target location to send returned products"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
msgid "Warehouse"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_wizard
msgid "Wizard to create pickings from claim lines"
msgstr ""
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_from_picking_wizard
msgid "Wizard to create pickings from picking lines"
msgstr ""

View File

@@ -0,0 +1,244 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * crm_rma_stock_location
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: rma (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-12 22:57+0000\n"
"PO-Revision-Date: 2015-12-14 06:36+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-rma-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Cancel"
msgstr "Preklic"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_loss_picking_from_claim_picking
msgid "Create Incoming Shipment to Breakage Loss Location"
msgstr "Ustvari vstopno pošiljko na lokacijo izgub iz okvar"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_used_picking_from_claim_picking
msgid "Create Incoming Shipment to Refurbish Location"
msgstr "Ustvari vstopno pošiljko na lokacijo prenovljenih zalog"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_stock_picking_from_claim_picking
msgid "Create Incoming Shipment to Stock"
msgstr "Ustvari vstopno pošiljko med zaloge"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.action_claim_picking_loss
msgid "Create a Product Loss"
msgstr "Ustvari izgubo proizvoda"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Create picking"
msgstr "Ustvari zbirnik"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_uid:0
msgid "Created by"
msgstr "Ustvaril"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,create_date:0
msgid "Created on"
msgstr "Ustvarjeno"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:89
#: field:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Dest. Location"
msgstr "Ciljna lokacija"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,id:0
msgid "ID"
msgstr "ID"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_uid:0
msgid "Last Updated by"
msgstr "Zadnji posodobil"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,write_date:0
msgid "Last Updated on"
msgstr "Zadnjič posodobljeno"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Locations"
msgstr "Lokacije"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:65
#, python-format
msgid "Loss"
msgstr "Izguba"
#. module: crm_rma_stock_location
#: field:stock.warehouse,loss_loc_id:0
msgid "Loss Location"
msgstr "Lokacija izgub"
#. module: crm_rma_stock_location
#: view:crm.claim:crm_rma_stock_location.crm_claim_rma_form_view_loss
msgid "New Product Loss"
msgstr "Nova izguba proizvoda"
#. module: crm_rma_stock_location
#: field:claim.make.picking.from.picking.wizard,picking_line_ids:0
msgid "Picking lines"
msgstr "Postavke zbirnika"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_product
msgid "Product"
msgstr "Proizvod"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_product_template
msgid "Product Template"
msgstr "Predloga proizvoda"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_product_tree_view
msgid "Product Variants"
msgstr "Različice proizvoda"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to Loss"
msgstr "Proizvod med izgube"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to refurbish stock"
msgstr "Proizvod med prenovljene zaloge"
#. module: crm_rma_stock_location
#: view:stock.picking:crm_rma_stock_location.picking_in_form
msgid "Product to stock"
msgstr "Proizvod v zaloge"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_a
msgid "RMA - Box A"
msgstr "PVB - zaboj A"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma_b
msgid "RMA - Box B"
msgstr "PVB - zaboj B"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Available Products"
msgstr "PVB proizvodi na voljo"
#. module: crm_rma_stock_location
#: model:stock.location,name:crm_rma_stock_location.location_rma
msgid "RMA Demo"
msgstr "PVB demonstracija"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:42
#: code:addons/crm_rma_stock_location/models/product_template.py:42
#, python-format
msgid "RMA Forecasted Quantity"
msgstr "PVB napovedana količina"
#. module: crm_rma_stock_location
#: view:product.product:crm_rma_stock_location.rma_product_search_view
msgid "RMA Products"
msgstr "PVB proizvodi"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/product_product.py:36
#: code:addons/crm_rma_stock_location/models/product_template.py:36
#, python-format
msgid "RMA Quantity On Hand"
msgstr "PVB količina pri roki"
#. module: crm_rma_stock_location
#: model:ir.actions.act_window,name:crm_rma_stock_location.rma_product_variant_action
#: model:ir.ui.menu,name:crm_rma_stock_location.menu_stock_rma
msgid "RMA Stock"
msgstr "PVB zaloge"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:56
#, python-format
msgid "Refurbish"
msgstr "Prenavljanje"
#. module: crm_rma_stock_location
#: field:stock.warehouse,lot_refurbish_id:0
msgid "Refurbish Location"
msgstr "Lokacija prenavljanja"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines for picking"
msgstr "Izberite postavke za zbirnik"
#. module: crm_rma_stock_location
#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking
msgid "Select lines to add in picking"
msgstr "Izberi postavke, ki se dodajo v zbirnik"
#. module: crm_rma_stock_location
#: model:product.template,name:crm_rma_stock_location.product_socket_product_template
msgid "Socket"
msgstr "Vtičnica"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:85
#: field:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source Location"
msgstr "Izvorna lokacija"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:86
#: help:claim.make.picking.from.picking.wizard,picking_line_source_location:0
#, python-format
msgid "Source location where the returned products are"
msgstr "Izvorna lokacija, kjer so vrnjeni proizvodi"
#. module: crm_rma_stock_location
#: code:addons/crm_rma_stock_location/wizards/claim_make_picking_from_picking.py:90
#: help:claim.make.picking.from.picking.wizard,picking_line_dest_location:0
#, python-format
msgid "Target location to send returned products"
msgstr "Ciljna lokacija, kamor se pošilja vrnjene proizvode"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
msgid "Warehouse"
msgstr "Skladišče"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_wizard
msgid "Wizard to create pickings from claim lines"
msgstr "Čarovnik za ustvarjanje zbirnikov iz postavk zahtevka"
#. module: crm_rma_stock_location
#: model:ir.model,name:crm_rma_stock_location.model_claim_make_picking_from_picking_wizard
msgid "Wizard to create pickings from picking lines"
msgstr "Čarovnik za ustvarjanje zbirnikov iz zbirnih postavk"

View File

@@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Copyright 2014 Camptocamp SA
# Author: Guewen Baconnier,
# Osval Reyes
#
# 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 openerp import SUPERUSER_ID
def post_init_hook(cr, registry):
stock_wh = registry['stock.warehouse']
for wh_id in stock_wh.browse(cr, SUPERUSER_ID,
stock_wh.search(cr, SUPERUSER_ID, [])):
vals = stock_wh.create_locations_rma(cr, SUPERUSER_ID, wh_id)
stock_wh.write(cr, SUPERUSER_ID, wh_id.id, vals)

View File

@@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Copyright 2013-2014 Camptocamp SA
# Copyright 2009-2013 Akretion,
# Author: Guewen Baconnier,
# Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
# Joel Grand-Guillaume,
# Osval Reyes
#
# 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 product_product
from . import product_template
from . import stock_warehouse

View File

@@ -0,0 +1,132 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author: Guewen Baconnier
# Copyright 2014 Camptocamp SA
#
# 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 openerp import _, api, fields, models
import openerp.addons.decimal_precision as dp
from openerp.tools.float_utils import float_round
from openerp.tools.safe_eval import safe_eval as eval
class ProductProduct(models.Model):
_inherit = 'product.product'
rma_qty_available = fields.Float(
compute='_rma_product_available',
digits_compute=dp.get_precision('Product Unit of Measure'),
search='_search_rma_product_quantity',
string=_('RMA Quantity On Hand'))
rma_virtual_available = fields.Float(
compute='_rma_product_available',
digits_compute=dp.get_precision('Product Unit of Measure'),
search='_search_rma_product_quantity',
string=_('RMA Forecasted Quantity'))
def _search_rma_product_quantity(self, operator, value):
res = []
# to prevent sql injections
assert operator in ('<', '>', '=', '!=',
'<=', '>='), 'Invalid domain operator'
assert isinstance(value, (float, int)), 'Invalid domain right operand'
if operator == '=':
operator = '=='
ids = []
product_ids = self.search([])
if product_ids:
for element in product_ids:
localdict = {'virtual': element.rma_virtual_available,
'qty': element.rma_qty_available,
'value': value}
if eval('qty %s value or virtual %s value' %
(operator, operator), localdict):
ids.append(element.id)
res.append(('id', 'in', ids))
return res
@api.multi
def _rma_product_available(self):
"""
Finds the incoming and outgoing quantity of product for the RMA
locations.
"""
context = self.env.context
warehouse_id = context.get('warehouse_id')
ctx = context.copy()
location_ids = set()
for product in self:
if warehouse_id and warehouse_id.lot_rma_id:
location_ids.add(warehouse_id.lot_rma_id.id)
else:
warehouse_ids = self.env['stock.warehouse'].search([])
if not warehouse_ids:
return
for warehouse_id in warehouse_ids:
if warehouse_id.lot_rma_id:
location_ids.add(warehouse_id.lot_rma_id.id)
if not location_ids:
return
ctx['location'] = list(location_ids)
domain_products = [('product_id', 'in', [product.id])]
domain_quant, domain_move_in, domain_move_out = \
product.with_context(ctx)._get_domain_locations()
domain_move_in += product.with_context(ctx)._get_domain_dates() + \
[('state', 'not in', ('done', 'cancel', 'draft'))] + \
domain_products
domain_move_out += product.with_context(ctx).\
_get_domain_dates() + \
[('state', 'not in', ('done', 'cancel', 'draft'))] + \
domain_products
domain_quant += domain_products
moves_in = []
moves_out = []
lot_id = context.get('lot_id')
if lot_id:
domain_quant.append(('lot_id', '=', lot_id))
else:
moves_in = self.env['stock.move'].\
with_context(ctx).read_group(domain_move_in,
['product_id', 'product_qty'],
['product_id'])
moves_out = self.env['stock.move'].\
with_context(ctx).read_group(domain_move_out,
['product_id', 'product_qty'],
['product_id'])
quants = self.env['stock.quant'].with_context(ctx).read_group(
domain_quant, ['product_id', 'qty'], ['product_id'])
quants = dict([(item.get('product_id')[0],
item.get('qty')) for item in quants])
moves_in = dict([(item.get('product_id')[0],
item.get('product_qty')) for item in moves_in])
moves_out = dict([(item.get('product_id')[0],
item.get('product_qty')) for item in moves_out])
product.rma_qty_available = \
float_round(quants.get(product.id, 0.0),
precision_rounding=product.uom_id.rounding)
product.rma_virtual_available = \
float_round(quants.get(product.id, 0.0) +
moves_in.get(product.id, 0.0) -
moves_out.get(product.id, 0.0),
precision_rounding=product.uom_id.rounding)

View File

@@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Copyright 2014 Camptocamp SA
# Author: Guewen Baconnier,
# Osval Reyes
#
# 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 openerp import _, api, fields, models
import openerp.addons.decimal_precision as dp
class ProductTemplate(models.Model):
_inherit = 'product.template'
rma_qty_available = fields.Float(compute='_rma_template_available',
digits_compute=dp.
get_precision('Product Unit '
'of Measure'),
string=_('RMA Quantity On Hand'))
rma_virtual_available = fields.Float(compute='_rma_template_available',
digits_compute=dp.
get_precision('Product Unit'
' of Measure'),
string=_('RMA Forecasted Quantity'))
@api.multi
def _rma_template_available(self):
for product in self:
product.rma_qty_available = sum(
product.mapped('product_variant_ids.rma_virtual_available'))
product.rma_virtual_available = sum(
product.mapped('product_variant_ids.rma_virtual_available'))

View File

@@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2013 Camptocamp
# Copyright 2009-2013 Akretion,
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
# Joel Grand-Guillaume
#
# 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 openerp import _, api, fields, models
class StockWarehouse(models.Model):
_inherit = "stock.warehouse"
loss_loc_id = fields.Many2one('stock.location', 'Loss Location')
lot_refurbish_id = fields.Many2one('stock.location', 'Refurbish Location')
@api.model
def create_locations_rma(self, wh_id):
vals = {}
location_obj = self.env['stock.location']
context_with_inactive = self.env.context.copy()
context_with_inactive['active_test'] = False
wh_loc_id = wh_id.view_location_id.id
vals_new = super(StockWarehouse, self).create_locations_rma(wh_id)
loc_vals = {
'location_id': wh_loc_id,
'active': True,
}
if vals.get('company_id'):
loc_vals['company_id'] = vals.get('company_id')
if not wh_id.lot_refurbish_id:
loc_vals.update({
'name': _('Refurbish'),
'usage': 'production'
})
location_id = location_obj.with_context(context_with_inactive).\
create(loc_vals)
vals['lot_refurbish_id'] = location_id.id
if not wh_id.loss_loc_id:
loc_vals.update({
'name': _('Loss'),
'usage': 'inventory'
})
location_id = location_obj.with_context(context_with_inactive).\
create(loc_vals)
vals['loss_loc_id'] = location_id.id
vals.update(vals_new)
return vals

View File

@@ -1,106 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author: Guewen Baconnier
# Copyright 2014 Camptocamp SA
#
# 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 openerp.osv import orm, fields
import openerp.addons.decimal_precision as dp
class ProductProduct(orm.Model):
_inherit = 'product.product'
def _rma_product_available(self, cr, uid, ids, field_names=None, arg=False,
context=None):
""" Finds the incoming and outgoing quantity of product for the RMA
locations.
"""
if field_names is None:
field_names = []
if context is None:
context = {}
warehouse_obj = self.pool['stock.warehouse']
res = {}
for id in ids:
res[id] = {}.fromkeys(field_names, 0.0)
for field in field_names:
ctx = context.copy()
warehouse_id = ctx.get('warehouse_id')
# no dependency on 'sale', the same oddness is done in
# 'stock' so I kept it here
if ctx.get('shop') and self.pool.get('sale.shop'):
shop_obj = self.pool['sale.shop']
shop_id = ctx['shop']
warehouse = shop_obj.read(cr, uid, shop_id,
['warehouse_id'],
context=ctx)
warehouse_id = warehouse['warehouse_id'][0]
if warehouse_id:
rma_id = warehouse_obj.read(cr, uid,
warehouse_id,
['lot_rma_id'],
context=ctx)['lot_rma_id'][0]
if rma_id:
ctx['location'] = rma_id
else:
location_ids = set()
wids = warehouse_obj.search(cr, uid, [], context=context)
if not wids:
return res
for wh in warehouse_obj.browse(cr, uid, wids, context=context):
if wh.lot_rma_id:
location_ids.add(wh.lot_rma_id.id)
if not location_ids:
return res
ctx['location'] = list(location_ids)
ctx['compute_child'] = True
compute = {
'rma_qty_available': {
'states': ('done', ),
'what': ('in', 'out')
},
'rma_virtual_available': {
'states': ('confirmed', 'waiting', 'assigned', 'done'),
'what': ('in', 'out')
}
}
ctx.update(compute[field])
stock = self.get_product_available(cr, uid, ids, context=ctx)
for id in ids:
res[id][field] = stock.get(id, 0.0)
return res
_columns = {
'rma_qty_available': fields.function(
_rma_product_available,
type='float',
multi='rma_qty',
digits_compute=dp.get_precision('Product Unit of Measure'),
string='RMA Quantity On Hand'),
'rma_virtual_available': fields.function(
_rma_product_available,
type='float',
multi='rma_qty',
digits_compute=dp.get_precision('Product Unit of Measure'),
string='RMA Forecasted Quantity'),
}

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<record id="product_product_tree_view" model="ir.ui.view">
<field name="name">product.product.tree</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_product_tree_view"/>
<field name="arch" type="xml">
<field name="virtual_available" position="after">
<field name="rma_qty_available"/>
<field name="rma_virtual_available"/>
</field>
</field>
</record>
<record id="view_normal_procurement_locations_form" model="ir.ui.view">
<field name="name">product.normal.procurement.locations.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
<field name="arch" type="xml">
<field name="virtual_available" position="after">
<field name="rma_qty_available" class="oe_inline"/>
<field name="rma_virtual_available" class="oe_inline"/>
</field>
</field>
</record>
</data>
</openerp>

View File

@@ -1,15 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record id="stock_location_rma" model="stock.location">
<field name="name">RMA</field>
<field name="usage">internal</field>
<field name="location_id" ref="stock.stock_location_company"/>
</record>
<record id="stock.warehouse0" model="stock.warehouse">
<field name="lot_rma_id" ref="stock_location_rma"/>
</record>
</data>
</openerp>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<record id="view_warehouse_form" model="ir.ui.view">
<field name="name">view_warehouse_form</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="stock.view_warehouse" />
<field name="arch" type="xml">
<xpath expr="/form/group/group/field[@name='lot_output_id']" position="after">
<field name="lot_rma_id"/>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@@ -1,72 +0,0 @@
-
I create RMA locations
-
!record {model: stock.location, id: location_rma}:
name: RMA
usage: view
-
!record {model: stock.location, id: location_rma_a}:
name: RMA - Box A
usage: internal
location_id: location_rma
-
!record {model: stock.location, id: location_rma_b}:
name: RMA - Box B
usage: internal
location_id: location_rma
-
I set the RMA location on the warehouse
-
!record {model: stock.warehouse, id: stock.warehouse0}:
lot_rma_id: location_rma
-
I create a product
-
!record {model: product.product, id: product_socket}:
default_code: 002
name: Sockets
type: product
categ_id: product.product_category_1
list_price: 100.0
standard_price: 70.0
uom_id: product.product_uom_unit
uom_po_id: product.product_uom_unit
-
I create a physical inventory with 50 units in Box A and 30 in Box B
-
!record {model: stock.inventory, id: stock_inventory_socket}:
name: Inventory for Sockets
-
!record {model: stock.inventory.line, id: stock_inventory_line_socket_1}:
product_id: product_socket
product_uom: product.product_uom_unit
inventory_id: stock_inventory_socket
product_qty: 50.0
location_id: location_rma_a
-
!record {model: stock.inventory.line, id: stock_inventory_line_socket_2}:
product_id: product_socket
product_uom: product.product_uom_unit
inventory_id: stock_inventory_socket
product_qty: 30.0
location_id: location_rma_b
-
I confirm the physical inventory
-
!python {model: stock.inventory}: |
self.action_confirm(cr, uid, [ref('stock_inventory_socket')], context=context)
-
I confirm the move in Box A
-
!python {model: stock.inventory}: |
inventory = self.browse(cr, uid, ref('stock_inventory_socket'), context=context)
assert len(inventory.move_ids) == len(inventory.inventory_line_id), "moves are not correspond."
for move in inventory.move_ids:
if move.location_dest_id.id == ref('location_rma_a'):
move.action_done()
-
I check my RMA quantities, I should have 50 on hands and 80 forecasted
-
!assert {model: product.product, id: product_socket, string: RMA quantity is wrong}:
- rma_qty_available == 50
- rma_virtual_available == 80

View File

@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Yanina Aular, Osval Reyes
#
# 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 test_crm_rma_stock_location
from . import test_make_picking_from_picking

View File

@@ -0,0 +1,78 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright 2015 Vauxoo
# Author: Osval Reyes
#
# 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 openerp.tests.common import TransactionCase
class TestCrmRmaStockLocation(TransactionCase):
def setUp(self):
super(TestCrmRmaStockLocation, self).setUp()
self.inventory = self.env['stock.inventory']
self.inventory_line = self.env['stock.inventory.line']
self.location_id = self.env['stock.location'].search(
[('name', '=', 'RMA'), ('location_id.name', '=', 'WH')])
self.warehouse_id = self.env['stock.warehouse'].browse(
self.ref('stock.warehouse0'))
self.lot_rma_id = self.warehouse_id.lot_rma_id
self.product_uom_id = self.ref('product.product_uom_unit')
self.product_socket_id = self.env['product.product'].browse(
self.ref('crm_rma_stock_location.product_socket'))
def test_01_test(self):
inventory_id = self.inventory.create({
'name': 'Test Inventory 001',
'location_id': self.location_id.id,
'filter': 'product',
'product_id': self.product_socket_id.id,
})
inventory_line_id_a = self.inventory_line.create({
'inventory_id': inventory_id.id,
'product_id': self.product_socket_id.id,
'product_uom_id': self.product_uom_id,
'product_qty': 100,
'location_id': self.lot_rma_id.id
})
inventory_line_id_b = self.inventory_line.create({
'inventory_id': inventory_id.id,
'product_id': self.product_socket_id.id,
'product_uom_id': self.product_uom_id,
'product_qty': 10,
'location_id': self.lot_rma_id.id
})
inventory_id.prepare_inventory()
inventory_id.action_done()
qty = inventory_line_id_a.product_qty + inventory_line_id_b.product_qty
self.assertEquals(self.product_socket_id.rma_qty_available, qty)
self.assertEquals(self.product_socket_id.rma_virtual_available, qty)
self.assertEquals(
self.product_socket_id.product_tmpl_id.rma_qty_available, qty)
self.assertEquals(
self.product_socket_id.product_tmpl_id.rma_virtual_available, qty)
res = self.product_socket_id._search_rma_product_quantity(
'=',
inventory_line_id_a.product_qty + inventory_line_id_b.product_qty)
self.assertEquals(self.product_socket_id.id, res[0][2][0])

View File

@@ -0,0 +1,159 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Author: Yanina Aular
# Copyright 2015 Vauxoo
#
# 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 openerp.tests.common import TransactionCase
class TestPickingFromPicking(TransactionCase):
def setUp(self):
super(TestPickingFromPicking, self).setUp()
self.stock_warehouse = self.env['stock.warehouse']
self.claim_id = self.create_claim()
self.wizardmakepicking = self.env['claim_make_picking.wizard']
self.claim_picking_wizard = \
self.env['claim.make.picking.from.picking.wizard']
self.get_default_locations()
def create_claim(self):
claim_id = self.env['crm.claim'].browse(
self.ref("crm_claim.crm_claim_6"))
claim_id.write({
'claim_line_ids': [(0, 0, {
'name': str(claim_id.id) + 'test 1',
'claim_origin': u'damaged',
'product_id': self.ref('product.product_product_8')
}), (0, 0, {
'name': str(claim_id.id) + 'test 2',
'claim_origin': u'none',
'product_id': self.ref('product.product_product_6')
})]
})
return claim_id
def get_default_locations(self):
"""
Return locations for RMA, Loss and Refurbish
"""
self.main_warehouse_id = self.stock_warehouse.browse(
self.ref("stock.warehouse0"))
self.loc_rma = self.main_warehouse_id.lot_rma_id
self.loss_loc = self.main_warehouse_id.loss_loc_id
self.loc_refurbish = self.main_warehouse_id.lot_refurbish_id
def test_01_get_dest_loc(self):
# Create Picking from Customers to RMA
# with button New Products Return
wiz_context = {
'active_id': self.claim_id.id,
'warehouse_id': self.claim_id.warehouse_id.id,
'partner_id': self.claim_id.partner_id.id,
'picking_type': self.claim_id.warehouse_id.rma_in_type_id.id,
}
wizard_id = self.wizardmakepicking.with_context(wiz_context).create({})
res = wizard_id.action_create_picking()
stock_picking_id = res.get('res_id')
# Create Picking 'Product to stock'
context = {
'active_id': stock_picking_id,
'picking_type': 'picking_stock',
}
claim_wizard = self.claim_picking_wizard.\
with_context(context).create({})
self.assertEquals(claim_wizard.picking_line_source_location.id,
self.loc_rma.id)
self.assertEquals(claim_wizard.picking_line_dest_location.id,
self.main_warehouse_id.lot_stock_id.id)
self.assertEquals(len(claim_wizard.picking_line_ids),
len(self.claim_id.claim_line_ids))
# Review number of picking lines with claim lines
picking_lines = claim_wizard.picking_line_ids
claim_lines = self.claim_id.claim_line_ids
for num in xrange(0, len(picking_lines)):
band = False
for num2 in xrange(0, len(claim_lines)):
if claim_lines[num].product_id.id == \
picking_lines[num2].product_id.id:
band = True
self.assertEquals(True, band)
claim_wizard.with_context(context).action_create_picking_from_picking()
# Create Picking 'Product to Loss'
claim_wizard = self.claim_picking_wizard.\
with_context({
'active_id': stock_picking_id,
'picking_type': 'picking_loss',
}).create({})
self.assertEquals(claim_wizard.picking_line_source_location.id,
self.loc_rma.id)
self.assertEquals(claim_wizard.picking_line_dest_location.id,
self.loss_loc.id)
def assert_picking_type(self, picking_type_str=''):
new_context = {
'active_id': self.claim_id.id,
'warehouse_id': self.claim_id.warehouse_id.id,
'partner_id': self.claim_id.partner_id.id,
'picking_type': picking_type_str,
}
wizard_id = self.wizardmakepicking.with_context(new_context).create({})
default_location_dest_id = eval(
'self.claim_id.warehouse_id.'
'rma_%s_type_id.default_location_dest_id' % picking_type_str)
self.assertEquals(
wizard_id.claim_line_dest_location_id, default_location_dest_id)
def test_02_picking_types_in_out_int(self):
self.assert_picking_type('in')
self.assert_picking_type('out')
self.assert_picking_type('int')
def test_03_picking_type_loss(self):
new_context = {
'active_id': self.claim_id.id,
'warehouse_id': self.claim_id.warehouse_id.id,
'partner_id': self.claim_id.partner_id.id,
'picking_type': 'loss',
}
wizard_id = self.wizardmakepicking.with_context(new_context).create({})
default_location_dest_id = eval(
'self.claim_id.warehouse_id.loss_loc_id')
self.assertEquals(
wizard_id.claim_line_dest_location_id, default_location_dest_id)

View File

@@ -0,0 +1,19 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="crm_claim_rma_form_view_loss">
<field name="name">CRM - Claim product return Form</field>
<field name="model">crm.claim</field>
<field name="inherit_id" ref="crm_claim_rma.crm_claim_rma_form_view"/>
<field name="arch" type="xml">
<xpath expr="//button[@string='New Delivery']" position="after">
<button name="%(action_claim_picking_loss)d"
string="New Product Loss"
type="action" target="new"
context="{'warehouse_id': warehouse_id,
'partner_id': partner_id}"/>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="rma_product_product_tree_view" model="ir.ui.view">
<field name="name">product.stock.tree.inherit</field>
<field name="model">product.product</field>
<field name="arch" type="xml">
<tree string="Product Variants" create="false">
<field name="default_code"/>
<field name="name"/>
<field name="attribute_value_ids" widget="many2many_tags"/>
<field name="rma_qty_available"/>
<field name="rma_virtual_available"/>
</tree>
</field>
</record>
<record id="rma_product_search_view" model="ir.ui.view">
<field name="name">product.product.search</field>
<field name="model">product.product</field>
<field name="arch" type="xml">
<search string="RMA Products">
<separator/>
<filter name="rma_available" string="RMA Available Products"
domain="['|', ('rma_qty_available','&gt;',0), ('rma_virtual_available','&gt;',0)]"/>
</search>
</field>
</record>
<record id="rma_product_variant_action" model="ir.actions.act_window">
<field name="name">RMA Stock</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.product</field>
<field name="view_mode">tree</field>
<field name="view_type">form</field>
<field name="view_id" ref="rma_product_product_tree_view"/>
<field name="search_view_id" ref="rma_product_search_view"/>
<field name="context">{'search_default_rma_available': 1}</field>
</record>
<menuitem action="rma_product_variant_action"
id="menu_stock_rma" parent="base.menu_aftersale"
name="RMA Stock"
sequence="100"/>
</data>
</openerp>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_template_property_form" model="ir.ui.view">
<field name="name">product.normal.procurement.locations.inherit</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="stock.view_template_property_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='virtual_available']" position="after">
<field name="rma_qty_available"/>
<field name="rma_virtual_available"/>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@@ -2,25 +2,23 @@
<openerp>
<data>
<!-- INHERITED VIEW FOR THE OBJECT : stock_picking -->
<record id="picking_in_form" model="ir.ui.view">
<field name="name">crm_claim_rma.picking_in_form</field>
<field name="model">stock.picking.in</field>
<field name="inherit_id" ref="stock.view_picking_in_form" />
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<!-- Those wizard aren't working yet -->
<xpath expr="/form/header/button[@string='Return Products']" position="after">
<button name="%(action_stock_picking_from_claim_picking)d"
<xpath expr="//field[@name='state']" position="before">
<button name="%(action_stock_picking_from_claim_picking)d"
string="Product to stock" type="action"
attrs="{'invisible':['|',
('state','&lt;&gt;','done'),
('claim_id', '=', False)]}"/>
<button name="%(action_loss_picking_from_claim_picking)d"
<button name="%(action_loss_picking_from_claim_picking)d"
string="Product to Loss" type="action"
attrs="{'invisible':['|',
('state','&lt;&gt;','done'),
('claim_id', '=', False)]}"/>
<button name="%(action_used_picking_from_claim_picking)d"
<button name="%(action_used_picking_from_claim_picking)d"
string="Product to refurbish stock" type="action"
attrs="{'invisible':['|',
('state','&lt;&gt;','done'),
@@ -28,20 +26,5 @@
</xpath>
</field>
</record>
<record id="warehouse_form" model="ir.ui.view">
<field name="name">crm_claim_rma.warehouse_form</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="crm_rma_stock_location.view_warehouse_form" />
<field name="arch" type="xml">
<xpath expr="/form/group/group/field[@name='lot_rma_id']" position="after">
<field name="lot_carrier_loss_id"/>
<field name="lot_breakage_loss_id"/>
<field name="lot_refurbish_id"/>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="warehouse_form" model="ir.ui.view">
<field name="name">crm_claim_rma.warehouse_form</field>
<field name="model">stock.warehouse</field>
<field name="inherit_id" ref="crm_rma_location.view_warehouse_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='lot_rma_id']" position="after">
<field name="loss_loc_id"/>
<field name="lot_refurbish_id"/>
</xpath>
</field>
</record>
</data>
</openerp>

Some files were not shown because too many files have changed in this diff Show More