diff --git a/crm_rma_stock_location/README.rst b/crm_rma_stock_location/README.rst new file mode 100644 index 00000000..5c5fe154 --- /dev/null +++ b/crm_rma_stock_location/README.rst @@ -0,0 +1,101 @@ +.. 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/145/9.0 + +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 +`_. 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. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Guewen Baconnier +* Yanina Aular +* Osval Reyes +* Cyril Gaudin + +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 https://odoo-community.org. diff --git a/crm_rma_stock_location/__init__.py b/crm_rma_stock_location/__init__.py index 997253d6..c14bd409 100644 --- a/crm_rma_stock_location/__init__.py +++ b/crm_rma_stock_location/__init__.py @@ -1,23 +1,5 @@ # -*- 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 . -# -############################################################################## -from . import stock_warehouse -from . import product +from . import models +from . import wizards +from .init_hooks import post_init_hook diff --git a/crm_rma_stock_location/__openerp__.py b/crm_rma_stock_location/__openerp__.py index 08318cbb..eee04a88 100644 --- a/crm_rma_stock_location/__openerp__.py +++ b/crm_rma_stock_location/__openerp__.py @@ -1,49 +1,44 @@ # -*- coding: utf-8 -*- -############################################################################## +# Author: Guewen Baconnier, +# Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, +# Joel Grand-Guillaume, +# Yanina Aular, Osval Reyes # -# 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 . -# -############################################################################## +# © 2009-2013 Akretion +# © 2014-2016 Camptocamp SA +# © 2015 Vauxoo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -{'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': '9.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, +} diff --git a/crm_rma_stock_location/demo/stock_inventory.xml b/crm_rma_stock_location/demo/stock_inventory.xml new file mode 100644 index 00000000..3769e875 --- /dev/null +++ b/crm_rma_stock_location/demo/stock_inventory.xml @@ -0,0 +1,26 @@ + + + + Demo Stock Move: Customer > RMA + + 1 + 1000 + + 1 + + + + + + Demo Stock Move: RMA > Loss + + 1 + 1000 + + 1 + + + + + + diff --git a/crm_rma_stock_location/demo/stock_location.xml b/crm_rma_stock_location/demo/stock_location.xml new file mode 100644 index 00000000..8f5bfdc6 --- /dev/null +++ b/crm_rma_stock_location/demo/stock_location.xml @@ -0,0 +1,33 @@ + + + + RMA Demo + internal + + + + + + + + RMA - Box A + + internal + + + RMA - Box B + + internal + + + + Socket + + 70.0 + 100.0 + product + + + + + diff --git a/crm_rma_stock_location/i18n/crm_rma_stock_location.pot b/crm_rma_stock_location/i18n/crm_rma_stock_location.pot index a9c52f83..444f0d7e 100644 --- a/crm_rma_stock_location/i18n/crm_rma_stock_location.pot +++ b/crm_rma_stock_location/i18n/crm_rma_stock_location.pot @@ -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 "" diff --git a/crm_rma_stock_location/i18n/de.po b/crm_rma_stock_location/i18n/de.po new file mode 100644 index 00000000..3b53397c --- /dev/null +++ b/crm_rma_stock_location/i18n/de.po @@ -0,0 +1,258 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_rma_stock_location +# +# Translators: +# Rudolf Schnapka , 2016 +msgid "" +msgstr "" +"Project-Id-Version: rma (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-06 11:34+0000\n" +"PO-Revision-Date: 2016-05-03 15:37+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: German (http://www.transifex.com/oca/OCA-rma-8-0/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\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 "Stornieren" + +#. 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 "Lege Anlieferung an Bruch-/Verlustlagerort an" + +#. 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 "Lege Anlieferung in Aufarbeitungslagerort an" + +#. 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 "Lege Anlieferung ins Lager an" + +#. 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 "Produktschwund anlegen" + +#. 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 "Kommissionierung anlegen" + +#. module: crm_rma_stock_location +#: field:claim.make.picking.from.picking.wizard,create_uid:0 +msgid "Created by" +msgstr "Angelegt durch" + +#. module: crm_rma_stock_location +#: field:claim.make.picking.from.picking.wizard,create_date:0 +msgid "Created on" +msgstr "Angelegt am" + +#. 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 "Ziel-Standort" + +#. module: crm_rma_stock_location +#: field:claim.make.picking.from.picking.wizard,display_name:0 +msgid "Display Name" +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,__last_update:0 +msgid "Last Modified on" +msgstr "" + +#. module: crm_rma_stock_location +#: field:claim.make.picking.from.picking.wizard,write_uid:0 +msgid "Last Updated by" +msgstr "Zuletzt aktualisiert durch" + +#. module: crm_rma_stock_location +#: field:claim.make.picking.from.picking.wizard,write_date:0 +msgid "Last Updated on" +msgstr "Zuletzt aktualisiert am" + +#. module: crm_rma_stock_location +#: view:claim.make.picking.from.picking.wizard:crm_rma_stock_location.view_claim_picking_from_picking +msgid "Locations" +msgstr "Standorte" + +#. module: crm_rma_stock_location +#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:65 +#, python-format +msgid "Loss" +msgstr "Schwund" + +#. module: crm_rma_stock_location +#: field:stock.warehouse,loss_loc_id:0 +msgid "Loss Location" +msgstr "Schwundlagerort" + +#. module: crm_rma_stock_location +#: view:crm.claim:crm_rma_stock_location.crm_claim_rma_form_view_loss +msgid "New Product Loss" +msgstr "Neuer Produktschwund" + +#. module: crm_rma_stock_location +#: field:claim.make.picking.from.picking.wizard,picking_line_ids:0 +msgid "Picking lines" +msgstr "Kommissionierpositionen" + +#. module: crm_rma_stock_location +#: model:ir.model,name:crm_rma_stock_location.model_product_product +msgid "Product" +msgstr "Produkt" + +#. module: crm_rma_stock_location +#: model:ir.model,name:crm_rma_stock_location.model_product_template +msgid "Product Template" +msgstr "Produktvorlage" + +#. module: crm_rma_stock_location +#: view:product.product:crm_rma_stock_location.rma_product_product_tree_view +msgid "Product Variants" +msgstr "Produktvarianten" + +#. module: crm_rma_stock_location +#: view:stock.picking:crm_rma_stock_location.picking_in_form +msgid "Product to Loss" +msgstr "Produkt zu Schwund" + +#. module: crm_rma_stock_location +#: view:stock.picking:crm_rma_stock_location.picking_in_form +msgid "Product to refurbish stock" +msgstr "Produkt an Aufarbeitungsbestand" + +#. module: crm_rma_stock_location +#: view:stock.picking:crm_rma_stock_location.picking_in_form +msgid "Product to stock" +msgstr "Produkt an Lagerbestand" + +#. 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 "Verfügbare Produkte für RMA" + +#. 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 +#: field:product.product,rma_virtual_available:0 +#: field:product.template,rma_virtual_available:0 +#, python-format +msgid "RMA Forecasted Quantity" +msgstr "RMA prognostizierte Menge" + +#. module: crm_rma_stock_location +#: view:product.product:crm_rma_stock_location.rma_product_search_view +msgid "RMA Products" +msgstr "RMA-Produkte" + +#. 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 +#: field:product.product,rma_qty_available:0 +#: field:product.template,rma_qty_available:0 +#, python-format +msgid "RMA Quantity On Hand" +msgstr "RMA Freier Bestand" + +#. 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-Bestand" + +#. module: crm_rma_stock_location +#: code:addons/crm_rma_stock_location/models/stock_warehouse.py:56 +#, python-format +msgid "Refurbish" +msgstr "Aufarbeiten" + +#. module: crm_rma_stock_location +#: field:stock.warehouse,lot_refurbish_id:0 +msgid "Refurbish Location" +msgstr "Aufarbeitungs-Standort" + +#. 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 "Positionen zur Kommissionierung auswählen" + +#. 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 "Wähle Positionen zur Kommissionierung" + +#. module: crm_rma_stock_location +#: model:product.template,name:crm_rma_stock_location.product_socket_product_template +msgid "Socket" +msgstr "Stecker" + +#. 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 "Herkunftsort" + +#. 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 "Herkunftsort wo die Retoure-Produkte sind" + +#. 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 "Zielort für Zustellung der Retoureprodukte" + +#. module: crm_rma_stock_location +#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse +msgid "Warehouse" +msgstr "Warenlager" + +#. 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 "Assistent, um Kommissionierungen aus Reklamationspositionen anzulegen" + +#. 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 "Assistent, um Kommissionierungen aus Kommissionspositionen anzulegen" diff --git a/crm_rma_stock_location/i18n/en.po b/crm_rma_stock_location/i18n/en.po new file mode 100644 index 00000000..e266ba1c --- /dev/null +++ b/crm_rma_stock_location/i18n/en.po @@ -0,0 +1,257 @@ +# 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: 2016-05-06 11:34+0000\n" +"PO-Revision-Date: 2016-05-03 15:37+0000\n" +"Last-Translator: OCA Transbot \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,display_name:0 +msgid "Display Name" +msgstr "Display Name" + +#. 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,__last_update:0 +msgid "Last Modified on" +msgstr "Last Modified on" + +#. 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 +#: field:product.product,rma_virtual_available:0 +#: field:product.template,rma_virtual_available:0 +#, 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 +#: field:product.product,rma_qty_available:0 +#: field:product.template,rma_qty_available:0 +#, 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" diff --git a/crm_rma_stock_location/i18n/es.po b/crm_rma_stock_location/i18n/es.po new file mode 100644 index 00000000..fa3c9ee7 --- /dev/null +++ b/crm_rma_stock_location/i18n/es.po @@ -0,0 +1,257 @@ +# 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: 2016-05-06 11:34+0000\n" +"PO-Revision-Date: 2016-05-03 15:37+0000\n" +"Last-Translator: OCA Transbot \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,display_name:0 +msgid "Display Name" +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,__last_update:0 +msgid "Last Modified on" +msgstr "" + +#. 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 +#: field:product.product,rma_virtual_available:0 +#: field:product.template,rma_virtual_available:0 +#, 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 +#: field:product.product,rma_qty_available:0 +#: field:product.template,rma_qty_available:0 +#, 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" diff --git a/crm_rma_stock_location/i18n/es_MX.po b/crm_rma_stock_location/i18n/es_MX.po new file mode 100644 index 00000000..c9158d37 --- /dev/null +++ b/crm_rma_stock_location/i18n/es_MX.po @@ -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" diff --git a/crm_rma_stock_location/i18n/es_PA.po b/crm_rma_stock_location/i18n/es_PA.po new file mode 100644 index 00000000..c9158d37 --- /dev/null +++ b/crm_rma_stock_location/i18n/es_PA.po @@ -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" diff --git a/crm_rma_stock_location/i18n/es_VE.po b/crm_rma_stock_location/i18n/es_VE.po new file mode 100644 index 00000000..c9158d37 --- /dev/null +++ b/crm_rma_stock_location/i18n/es_VE.po @@ -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" diff --git a/crm_rma_stock_location/i18n/fr.po b/crm_rma_stock_location/i18n/fr.po index b1dc3b9b..bd7cc2ab 100644 --- a/crm_rma_stock_location/i18n/fr.po +++ b/crm_rma_stock_location/i18n/fr.po @@ -1,54 +1,257 @@ -# 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: 2016-05-06 11:34+0000\n" +"PO-Revision-Date: 2016-05-03 15:37+0000\n" +"Last-Translator: OCA Transbot \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,display_name:0 +msgid "Display Name" +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,__last_update:0 +msgid "Last Modified on" +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 +#: 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 #: field:product.product,rma_virtual_available:0 +#: field:product.template,rma_virtual_available:0 +#, 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 +#: 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 #: field:product.product,rma_qty_available:0 +#: field:product.template,rma_qty_available:0 +#, 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 "" diff --git a/crm_rma_stock_location/i18n/pt_BR.po b/crm_rma_stock_location/i18n/pt_BR.po new file mode 100644 index 00000000..39487c64 --- /dev/null +++ b/crm_rma_stock_location/i18n/pt_BR.po @@ -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: 2016-01-19 12:26+0000\n" +"PO-Revision-Date: 2016-03-08 03:12+0000\n" +"Last-Translator: danimaribeiro \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 "Criado por" + +#. 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 "" diff --git a/crm_rma_stock_location/i18n/ro.po b/crm_rma_stock_location/i18n/ro.po new file mode 100644 index 00000000..37cee504 --- /dev/null +++ b/crm_rma_stock_location/i18n/ro.po @@ -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 "" diff --git a/crm_rma_stock_location/i18n/sl.po b/crm_rma_stock_location/i18n/sl.po new file mode 100644 index 00000000..ee913252 --- /dev/null +++ b/crm_rma_stock_location/i18n/sl.po @@ -0,0 +1,258 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * crm_rma_stock_location +# +# Translators: +# Matjaž Mozetič , 2015 +msgid "" +msgstr "" +"Project-Id-Version: rma (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-06 11:34+0000\n" +"PO-Revision-Date: 2016-05-04 03:48+0000\n" +"Last-Translator: Matjaž Mozetič \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,display_name:0 +msgid "Display Name" +msgstr "Prikazni naziv" + +#. 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,__last_update:0 +msgid "Last Modified on" +msgstr "Zadnjič spremenjeno" + +#. 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 +#: field:product.product,rma_virtual_available:0 +#: field:product.template,rma_virtual_available:0 +#, 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 +#: field:product.product,rma_qty_available:0 +#: field:product.template,rma_qty_available:0 +#, 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" diff --git a/crm_rma_stock_location/init_hooks.py b/crm_rma_stock_location/init_hooks.py new file mode 100644 index 00000000..34fa3e92 --- /dev/null +++ b/crm_rma_stock_location/init_hooks.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# © 2015 Vauxoo +# © 2014-2016 Camptocamp SA +# Author: Guewen Baconnier, +# Osval Reyes +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import SUPERUSER_ID +from openerp.api import Environment + + +def post_init_hook(cr, registry): + with Environment.manage(): + env = Environment(cr, SUPERUSER_ID, {}) + + warehouses = env['stock.warehouse'].search([]) + warehouses.create_locations_rma() diff --git a/crm_rma_stock_location/models/__init__.py b/crm_rma_stock_location/models/__init__.py new file mode 100644 index 00000000..8c3195b0 --- /dev/null +++ b/crm_rma_stock_location/models/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- + +from . import product_product +from . import product_template +from . import stock_warehouse diff --git a/crm_rma_stock_location/models/product_product.py b/crm_rma_stock_location/models/product_product.py new file mode 100644 index 00000000..04536852 --- /dev/null +++ b/crm_rma_stock_location/models/product_product.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# © 2014-2016 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import api, fields, models +import openerp.addons.decimal_precision as dp +from openerp.tools.safe_eval import safe_eval as eval + + +class ProductProduct(models.Model): + + _inherit = 'product.product' + + rma_qty_available = fields.Float( + compute='_compute_rma_product_quantities', + 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='_compute_rma_product_quantities', + 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.depends() + def _compute_rma_product_quantities(self): + """ Compute both rma_qty_available and rma_virtual_available values + by calling product_product._product_available with RMA locations + in context. + """ + warehouse_model = self.env['stock.warehouse'] + + locations = self.env['stock.location'] + + warehouse_id = self.env.context.get('warehouse_id') + if warehouse_id: + warehouse = warehouse_model.browse(warehouse_id) + if warehouse.lot_rma_id: + locations |= warehouse.lot_rma_id + + else: + warehouses = warehouse_model.search([('lot_rma_id', '!=', False)]) + locations |= warehouses.mapped('lot_rma_id') + + if locations: + result = self.with_context( + # Sorted by parent_left to avoid a little Odoo bug + # in tests environnement + # see https://github.com/odoo/odoo/pull/11996 + location=locations.sorted( + lambda l: l.parent_left + ).mapped('id'), + )._product_available() + + else: + result = {} + + for product in self: + try: + product_qties = result[product.id] + except KeyError: + product.rma_qty_available = 0 + product.rma_virtual_available = 0 + + else: + product.rma_qty_available = product_qties['qty_available'] + product.rma_virtual_available = product_qties[ + 'virtual_available' + ] diff --git a/crm_rma_stock_location/models/product_template.py b/crm_rma_stock_location/models/product_template.py new file mode 100644 index 00000000..0de464e9 --- /dev/null +++ b/crm_rma_stock_location/models/product_template.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# © 2015 Vauxoo +# © 2014 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +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='_compute_rma_template_quantities', + digits_compute=dp.get_precision('Product Unit of Measure'), + string='RMA Quantity On Hand' + ) + rma_virtual_available = fields.Float( + compute='_compute_rma_template_quantities', + digits_compute=dp.get_precision('Product Unit of Measure'), + string='RMA Forecasted Quantity' + ) + + @api.depends('product_variant_ids.rma_qty_available', + 'product_variant_ids.rma_virtual_available') + def _compute_rma_template_quantities(self): + """ Compute rma_qty_available and rma_virtual_available + with sum of variants quantities. + """ + + for template in self: + qantities = template.product_variant_ids.read( + ['rma_qty_available', 'rma_virtual_available'] + ) + template.rma_qty_available = sum( + qty['rma_qty_available'] for qty in qantities + ) + template.rma_virtual_available = sum( + qty['rma_virtual_available'] for qty in qantities + ) diff --git a/crm_rma_stock_location/models/stock_warehouse.py b/crm_rma_stock_location/models/stock_warehouse.py new file mode 100644 index 00000000..f8e415af --- /dev/null +++ b/crm_rma_stock_location/models/stock_warehouse.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# © 2013 Camptocamp +# © 2009-2013 Akretion, +# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, +# Joel Grand-Guillaume +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +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.multi + def create_locations_rma(self): + super(StockWarehouse, self).create_locations_rma() + + location_obj = self.env['stock.location'] + + for warehouse in self: + if not warehouse.lot_refurbish_id: + location_id = location_obj.with_context( + active_test=False + ).create({ + 'name': _('Refurbish'), + 'usage': 'production', + 'location_id': warehouse.view_location_id.id, + 'company_id': warehouse.company_id.id, + 'active': True, + }) + warehouse.lot_refurbish_id = location_id + + if not warehouse.loss_loc_id: + location_id = location_obj.with_context( + active_test=False + ).create({ + 'name': _('Loss'), + 'usage': 'inventory', + 'location_id': warehouse.view_location_id.id, + 'company_id': warehouse.company_id.id, + 'active': True, + }) + warehouse.loss_loc_id = location_id diff --git a/crm_rma_stock_location/product.py b/crm_rma_stock_location/product.py deleted file mode 100644 index 114bbaf4..00000000 --- a/crm_rma_stock_location/product.py +++ /dev/null @@ -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 . -# -############################################################################## - -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'), - } diff --git a/crm_rma_stock_location/product_view.xml b/crm_rma_stock_location/product_view.xml deleted file mode 100644 index c371eead..00000000 --- a/crm_rma_stock_location/product_view.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - product.product.tree - product.product - - - - - - - - - - - product.normal.procurement.locations.inherit - product.product - - - - - - - - - - diff --git a/crm_rma_stock_location/stock_data.xml b/crm_rma_stock_location/stock_data.xml deleted file mode 100644 index d50b3f38..00000000 --- a/crm_rma_stock_location/stock_data.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - RMA - internal - - - - - - - - diff --git a/crm_rma_stock_location/stock_warehouse.py b/crm_rma_stock_location/stock_warehouse.py deleted file mode 100644 index 13f32c31..00000000 --- a/crm_rma_stock_location/stock_warehouse.py +++ /dev/null @@ -1,30 +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 . -# -############################################################################## - -from openerp.osv import orm, fields - - -class StockWarehouse(orm.Model): - _inherit = 'stock.warehouse' - - _columns = { - 'lot_rma_id': fields.many2one('stock.location', 'Location RMA'), - } diff --git a/crm_rma_stock_location/stock_warehouse_view.xml b/crm_rma_stock_location/stock_warehouse_view.xml deleted file mode 100644 index 82c72292..00000000 --- a/crm_rma_stock_location/stock_warehouse_view.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - view_warehouse_form - stock.warehouse - - - - - - - - - - diff --git a/crm_rma_stock_location/test/quantity.yml b/crm_rma_stock_location/test/quantity.yml deleted file mode 100644 index 96a77e7b..00000000 --- a/crm_rma_stock_location/test/quantity.yml +++ /dev/null @@ -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 diff --git a/crm_rma_stock_location/tests/__init__.py b/crm_rma_stock_location/tests/__init__.py new file mode 100644 index 00000000..a66e8511 --- /dev/null +++ b/crm_rma_stock_location/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- + +from . import test_crm_rma_stock_location +from . import test_make_picking_from_picking +from . import test_rma_stock diff --git a/crm_rma_stock_location/tests/test_crm_rma_stock_location.py b/crm_rma_stock_location/tests/test_crm_rma_stock_location.py new file mode 100644 index 00000000..b9255547 --- /dev/null +++ b/crm_rma_stock_location/tests/test_crm_rma_stock_location.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# © 2015 Vauxoo +# Author: Osval Reyes +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +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]) diff --git a/crm_rma_stock_location/tests/test_make_picking_from_picking.py b/crm_rma_stock_location/tests/test_make_picking_from_picking.py new file mode 100644 index 00000000..7623ec43 --- /dev/null +++ b/crm_rma_stock_location/tests/test_make_picking_from_picking.py @@ -0,0 +1,144 @@ +# -*- coding: utf-8 -*- +# © 2015 Vauxoo +# Author: Yanina Aular +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +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': 'in', + } + 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 = getattr( + self.claim_id.warehouse_id, + 'rma_%s_type_id' % picking_type_str + ).default_location_dest_id + 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 = self.claim_id.warehouse_id.loss_loc_id + self.assertEquals( + wizard_id.claim_line_dest_location_id, default_location_dest_id + ) diff --git a/crm_rma_stock_location/tests/test_rma_stock.py b/crm_rma_stock_location/tests/test_rma_stock.py new file mode 100644 index 00000000..5b6bd7a9 --- /dev/null +++ b/crm_rma_stock_location/tests/test_rma_stock.py @@ -0,0 +1,194 @@ +# -*- coding: utf-8 -*- +# © 2016 Cyril Gaudin (Camptocamp) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp.tests import TransactionCase + + +class TestRMAStock(TransactionCase): + + def setUp(self): + super(TestRMAStock, self).setUp() + self.wh_main = self.env.ref("stock.warehouse0") + + location_model = self.env['stock.location'] + self.loc_rma = location_model.create({ + 'name': 'RMA', + 'usage': 'view', + 'location_id': self.wh_main.view_location_id.id, + }) + + self.loc_box_a = location_model.create({ + 'name': 'RMA - Box A', + 'usage': 'internal', + 'location_id': self.loc_rma.id, + }) + + self.loc_box_b = location_model.create({ + 'name': 'RMA - Box B', + 'usage': 'internal', + 'location_id': self.loc_rma.id, + }) + + self.wh_main.lot_rma_id = self.loc_rma + + # Create products + self.product_socket = self.env['product.product'].create({ + 'name': 'Sockets', + }) + + self.product_shoes = self.env['product.product'].create({ + 'name': 'Shoes', + }) + + def test_rma_qty(self): + # Put 50 in box A + inventory = self.env['stock.inventory'].create({ + 'name': 'Inventory for Sockets', + 'location_id': self.loc_box_a.id, + 'filter': 'partial' + }) + inventory.prepare_inventory() + + self.env['stock.inventory.line'].create({ + 'inventory_id': inventory.id, + 'product_id': self.product_socket.id, + 'location_id': self.loc_box_a.id, + 'product_qty': 50, + }) + inventory.action_done() + + # Confirmed move for 30 in box B + self.env['stock.move'].create({ + 'name': 'Test move rma', + 'state': 'confirmed', + 'product_id': self.product_socket.id, + 'product_uom_qty': 30, + 'product_uom': self.product_socket.uom_id.id, + 'location_id': self.ref('stock.stock_location_suppliers'), + 'location_dest_id': self.loc_box_b.id, + }) + + # Should have 50 avalaible and 80 forecasted + self.assertEqual(50.0, self.product_socket.rma_qty_available) + self.assertEqual(80.0, self.product_socket.rma_virtual_available) + + # A warehouse can be specified + other_warehouse = self.env['stock.warehouse'].create({ + 'name': 'Other warehouse', + 'partner_id': self.ref('base.main_partner'), + 'code': 'WH2', + }) + + self.assertEqual( + 0.0, + self.product_socket.with_context( + warehouse_id=other_warehouse.id + ).rma_qty_available + ) + self.assertEqual( + 0.0, + self.product_socket.with_context( + warehouse_id=other_warehouse.id + ).rma_virtual_available + ) + + # Reset lot_rma_id (automatically created) + other_warehouse.lot_rma_id = False + self.product_socket.refresh() + self.assertEqual( + 0.0, + self.product_socket.with_context( + warehouse_id=other_warehouse.id + ).rma_qty_available + ) + self.assertEqual( + 0.0, + self.product_socket.with_context( + warehouse_id=other_warehouse.id + ).rma_virtual_available + ) + + def test_multi(self): + inventory = self.env['stock.inventory'].create({ + 'name': 'Inventory for Sockets', + 'location_id': self.loc_box_a.id, + 'filter': 'partial' + }) + inventory.prepare_inventory() + + # Put 20 sockets and 10 shoes in box A + self.env['stock.inventory.line'].create({ + 'inventory_id': inventory.id, + 'product_id': self.product_socket.id, + 'location_id': self.loc_box_a.id, + 'product_qty': 20, + }) + self.env['stock.inventory.line'].create({ + 'inventory_id': inventory.id, + 'product_id': self.product_shoes.id, + 'location_id': self.loc_box_a.id, + 'product_qty': 10, + }) + inventory.action_done() + + qties = self.env['product.product'].search_read( + [('id', 'in', [self.product_socket.id, self.product_shoes.id])], + ['rma_qty_available', 'rma_virtual_available'], + order='id' + ) + self.assertEqual([ + {'id': self.product_socket.id, 'rma_qty_available': 20, + 'rma_virtual_available': 20}, + {'id': self.product_shoes.id, 'rma_qty_available': 10, + 'rma_virtual_available': 10} + ], qties) + + def test_variants(self): + + self.variant_shoes = self.env['product.product'].create({ + 'product_tmpl_id': self.product_shoes.product_tmpl_id.id, + 'name': 'Variant shoes' + }) + inventory = self.env['stock.inventory'].create({ + 'name': 'Inventory for Sockets', + 'location_id': self.loc_box_a.id, + 'filter': 'partial' + }) + inventory.prepare_inventory() + + # Put 5 shoes and 4 variant shoes in box A + self.env['stock.inventory.line'].create({ + 'inventory_id': inventory.id, + 'product_id': self.product_shoes.id, + 'location_id': self.loc_box_a.id, + 'product_qty': 5, + }) + self.env['stock.inventory.line'].create({ + 'inventory_id': inventory.id, + 'product_id': self.variant_shoes.id, + 'location_id': self.loc_box_a.id, + 'product_qty': 4, + }) + inventory.action_done() + + # Confirmed move for 3 variant shoes in box B + self.env['stock.move'].create({ + 'name': 'Test move rma', + 'state': 'confirmed', + 'product_id': self.variant_shoes.id, + 'product_uom_qty': 3, + 'product_uom': self.variant_shoes.uom_id.id, + 'location_id': self.ref('stock.stock_location_suppliers'), + 'location_dest_id': self.loc_box_b.id, + }) + + self.assertEqual(5.0, self.product_shoes.rma_qty_available) + self.assertEqual(5.0, self.product_shoes.rma_virtual_available) + + self.assertEqual(4.0, self.variant_shoes.rma_qty_available) + self.assertEqual(7.0, self.variant_shoes.rma_virtual_available) + + shoes_template = self.product_shoes.product_tmpl_id + self.assertEqual(9.0, shoes_template.rma_qty_available) + self.assertEqual(12.0, shoes_template.rma_virtual_available) diff --git a/crm_rma_stock_location/views/crm_claim.xml b/crm_rma_stock_location/views/crm_claim.xml new file mode 100644 index 00000000..76f76ce0 --- /dev/null +++ b/crm_rma_stock_location/views/crm_claim.xml @@ -0,0 +1,16 @@ + + + + CRM - Claim product return Form + crm.claim + + + + + + diff --git a/crm_rma_stock_location/views/product_product.xml b/crm_rma_stock_location/views/product_product.xml new file mode 100644 index 00000000..47174164 --- /dev/null +++ b/crm_rma_stock_location/views/product_product.xml @@ -0,0 +1,44 @@ + + + + product.stock.tree.inherit + product.product + + + + + + + + + + + + + product.product.search + product.product + + + + + + + + + + RMA Stock + ir.actions.act_window + product.product + tree + form + + + {'search_default_rma_available': 1} + + + + diff --git a/crm_rma_stock_location/views/product_template.xml b/crm_rma_stock_location/views/product_template.xml new file mode 100644 index 00000000..cc7ecc45 --- /dev/null +++ b/crm_rma_stock_location/views/product_template.xml @@ -0,0 +1,29 @@ + + + + product.template.tree + product.template + + + + + + + + + + + product.form.view.rma + product.template + + + + + + + + + + + + diff --git a/crm_rma_stock_location/views/stock_picking.xml b/crm_rma_stock_location/views/stock_picking.xml new file mode 100644 index 00000000..ea1cecb3 --- /dev/null +++ b/crm_rma_stock_location/views/stock_picking.xml @@ -0,0 +1,28 @@ + + + + + crm_claim_rma.picking_in_form + stock.picking + + + +