- These methods allows to automaticaly compute the delivery price
+ These methods allow to automatically compute the delivery price
according to your settings; on the sales order (based on the
quotation) or the invoice (based on the delivery orders).
- Invoiced to
- [[ o.sale_id and o.sale_id.partner_invoice_id and o.sale_id.partner_invoice_id.name or '']]
- [[ o.sale_id and o.sale_id.partner_invoice_id and display_address(o.sale_id.partner_invoice_id) ]]
-
-
- [[ o.partner_id and o.partner_id and o.partner_id.name or '' ]]
- [[ o.partner_id and o.partner_id and display_address(o.partner_id) ]]
-
-
-
- Delivery Order : [[ o.name ]]
-
-
-
-
-
-
- Order Ref.
-
-
- Order Date
-
-
- Shipping Date
-
-
- Carrier
-
-
- Weight
-
-
-
-
-
-
- [[ o.sale_id and o.sale_id.name ]]
-
-
- [[ formatLang(o.date,date_time=True) ]]
-
-
- [[ formatLang(o.min_date,date_time = True) ]]
-
-
- [[ o.carrier_id and o.carrier_id.name or '' ]]
-
-
- [[ formatLang(o.weight) ]]
-
-
-
-
-
-
-
-
-
- Description
-
-
- Lot
-
-
- Quantity
-
-
-
-
- [[repeatIn(o.move_lines,'line')]]
-
-
-
- [[line.product_id.code ]] [[ line.product_id and line.product_id.name or '']]
-
-
- [[ (line.prodlot_id and (line.prodlot_id.name + (line.prodlot_id.ref and ('/' + line.prodlot_id.ref) or ''))) or ' ' ]]
-
-
- [[ formatLang(line.product_qty) ]] [[ line.product_uom and line.product_uom.name ]]
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/delivery/sale.py b/addons/delivery/sale.py
index c5d032ca8a8..1bfeabfe15d 100644
--- a/addons/delivery/sale.py
+++ b/addons/delivery/sale.py
@@ -91,6 +91,5 @@ class sale_order(osv.Model):
'product_id': grid.carrier_id.product_id.id,
'price_unit': grid_obj.get_price(cr, uid, grid.id, order, time.strftime('%Y-%m-%d'), context),
'tax_id': [(6, 0, taxes_ids)],
- 'type': 'make_to_stock',
'is_delivery': True
})
diff --git a/addons/delivery/stock.py b/addons/delivery/stock.py
index 42c24b4a27d..38f8d0769fc 100644
--- a/addons/delivery/stock.py
+++ b/addons/delivery/stock.py
@@ -30,7 +30,6 @@ class stock_picking(osv.osv):
def _cal_weight(self, cr, uid, ids, name, args, context=None):
res = {}
- uom_obj = self.pool.get('product.uom')
for picking in self.browse(cr, uid, ids, context=context):
total_weight = total_weight_net = 0.00
@@ -51,6 +50,7 @@ class stock_picking(osv.osv):
result[line.picking_id.id] = True
return result.keys()
+
_columns = {
'carrier_id':fields.many2one("delivery.carrier","Carrier"),
'volume': fields.float('Volume'),
@@ -67,7 +67,7 @@ class stock_picking(osv.osv):
'carrier_tracking_ref': fields.char('Carrier Tracking Ref', size=32),
'number_of_packages': fields.integer('Number of Packages'),
'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",),
- }
+ }
def _prepare_shipping_invoice_line(self, cr, uid, picking, invoice, context=None):
"""Prepare the invoice line to add to the shipping costs to the shipping's
@@ -118,26 +118,21 @@ class stock_picking(osv.osv):
'invoice_line_tax_id': [(6, 0, taxes_ids)],
}
- def action_invoice_create(self, cr, uid, ids, journal_id=False,
- group=False, type='out_invoice', context=None):
- invoice_obj = self.pool.get('account.invoice')
- picking_obj = self.pool.get('stock.picking')
+ def _create_invoice_from_picking(self, cr, uid, picking, vals, context=None):
invoice_line_obj = self.pool.get('account.invoice.line')
- result = super(stock_picking, self).action_invoice_create(cr, uid,
- ids, journal_id=journal_id, group=group, type=type,
- context=context)
- for picking in picking_obj.browse(cr, uid, result.keys(), context=context):
- invoice = invoice_obj.browse(cr, uid, result[picking.id], context=context)
- invoice_line = self._prepare_shipping_invoice_line(cr, uid, picking, invoice, context=context)
- if invoice_line:
- invoice_line_obj.create(cr, uid, invoice_line)
- invoice_obj.button_compute(cr, uid, [invoice.id], context=context)
- return result
- def _get_default_uom(self,cr,uid,c):
- uom_categ, uom_categ_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'product', 'product_uom_categ_kgm')
- return self.pool.get('product.uom').search(cr, uid, [('category_id', '=', uom_categ_id),('factor','=',1)])[0]
+ invoice_id = super(stock_picking, self)._create_invoice_from_picking(cr, uid, picking, vals, context=context)
+ invoice = self.browse(cr, uid, invoice_id, context=context)
+ invoice_line = self._prepare_shipping_invoice_line(cr, uid, picking, invoice, context=context)
+ if invoice_line:
+ invoice_line_obj.create(cr, uid, invoice_line)
+ return invoice_id
+
+ def _get_default_uom(self, cr, uid, context=None):
+ uom_categ_id = self.pool.get('ir.model.data').xmlid_to_res_id(cr, uid, 'product.product_uom_categ_kgm')
+ return self.pool.get('product.uom').search(cr, uid, [('category_id', '=', uom_categ_id), ('factor', '=', 1)])[0]
+
_defaults = {
- 'weight_uom_id': lambda self,cr,uid,c: self._get_default_uom(cr,uid,c)
+ 'weight_uom_id': lambda self, cr, uid, c: self._get_default_uom(cr, uid, c),
}
@@ -177,73 +172,14 @@ class stock_move(osv.osv):
}),
'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of Measure (Unit of Measure) is the unit of measurement for Weight",),
}
- def _get_default_uom(self,cr,uid,c):
- uom_categ, uom_categ_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'product', 'product_uom_categ_kgm')
+
+ def _get_default_uom(self, cr, uid, context=None):
+ uom_categ_id = self.pool.get('ir.model.data').xmlid_to_res_id(cr, uid, 'product.product_uom_categ_kgm')
return self.pool.get('product.uom').search(cr, uid, [('category_id', '=', uom_categ_id),('factor','=',1)])[0]
+
_defaults = {
- 'weight_uom_id': lambda self,cr,uid,c: self._get_default_uom(cr,uid,c)
+ 'weight_uom_id': lambda self, cr, uid, c: self._get_default_uom(cr, uid, c),
}
-# Redefinition of the new fields in order to update the model stock.picking.out in the orm
-# FIXME: this is a temporary workaround because of a framework bug (ref: lp996816). It should be removed as soon as
-# the bug is fixed
-
-# TODO in trunk: Remove the duplication below using a mixin class!
-
-class stock_picking_out(osv.osv):
- _inherit = 'stock.picking.out'
-
- def _cal_weight(self, cr, uid, ids, name, args, context=None):
- return self.pool.get('stock.picking')._cal_weight(cr, uid, ids, name, args, context=context)
-
-
- def _get_picking_line(self, cr, uid, ids, context=None):
- return self.pool.get('stock.picking')._get_picking_line(cr, uid, ids, context=context)
-
- _columns = {
- 'carrier_id':fields.many2one("delivery.carrier","Carrier"),
- 'volume': fields.float('Volume'),
- 'weight': fields.function(_cal_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
- store={
- 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
- 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
- }),
- 'weight_net': fields.function(_cal_weight, type='float', string='Net Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
- store={
- 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
- 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
- }),
- 'carrier_tracking_ref': fields.char('Carrier Tracking Ref', size=32),
- 'number_of_packages': fields.integer('Number of Packages'),
- 'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",),
- }
-
-class stock_picking_in(osv.osv):
- _inherit = 'stock.picking.in'
-
- def _cal_weight(self, cr, uid, ids, name, args, context=None):
- return self.pool.get('stock.picking')._cal_weight(cr, uid, ids, name, args, context=context)
-
- def _get_picking_line(self, cr, uid, ids, context=None):
- return self.pool.get('stock.picking')._get_picking_line(cr, uid, ids, context=context)
-
- _columns = {
- 'carrier_id':fields.many2one("delivery.carrier","Carrier"),
- 'volume': fields.float('Volume'),
- 'weight': fields.function(_cal_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
- store={
- 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
- 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
- }),
- 'weight_net': fields.function(_cal_weight, type='float', string='Net Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
- store={
- 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 20),
- 'stock.move': (_get_picking_line, ['product_id','product_qty','product_uom','product_uos_qty'], 20),
- }),
- 'carrier_tracking_ref': fields.char('Carrier Tracking Ref', size=32),
- 'number_of_packages': fields.integer('Number of Packages'),
- 'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",),
- }
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/delivery/test/delivery_cost.yml b/addons/delivery/test/delivery_cost.yml
index 34ecb165ee1..efa22ca5df7 100644
--- a/addons/delivery/test/delivery_cost.yml
+++ b/addons/delivery/test/delivery_cost.yml
@@ -1,55 +1,85 @@
-
In order to test Carrier Cost,
+-
+ Create sale order with Normal Delivery Charges
+-
+ !record {model: sale.order, id: sale_normal_delivery_charges}:
+ partner_id: base.res_partner_18
+ partner_invoice_id: base.res_partner_18
+ partner_shipping_id: base.res_partner_18
+ pricelist_id: product.list0
+ order_policy: 'picking'
+ order_line:
+ - name: 'PC Assamble + 2GB RAM'
+ product_id: product.product_product_4
+ product_uom_qty: 1
+ product_uos_qty: 1
+ product_uom: product.product_uom_unit
+ price_unit: 750.00
+ carrier_id: normal_delivery_carrier
-
I add delivery cost in Sale order.
+
-
!python {model: sale.order}: |
- self.delivery_set(cr, uid, [ref("sale.sale_order_6")], context=context)
+ self.delivery_set(cr, uid, [ref("sale_normal_delivery_charges")], context=context)
+
-
I check sale order after added delivery cost.
-
!python {model: sale.order.line}: |
- line_ids = self.search(cr, uid, [('order_id','=', ref('sale.sale_order_6')), ('product_id','=', ref('product_product_delivery'))])
+ line_ids = self.search(cr, uid, [('order_id','=', ref('sale_normal_delivery_charges')), ('product_id','=', ref('product_product_delivery'))])
assert len(line_ids), "Delivery cost is not Added"
line_data = self.browse(cr ,uid ,line_ids[0] ,context)
assert line_data.price_subtotal == 10, "Delivey cost is not correspond."
-
I confirm the sale order.
-
- !workflow {model: sale.order, action: order_confirm, ref: sale.sale_order_6}
+ !workflow {model: sale.order, action: order_confirm, ref: sale_normal_delivery_charges}
-
I create Invoice from shipment.
-
!python {model: stock.invoice.onshipping}: |
sale = self.pool.get('sale.order')
- sale_order = sale.browse(cr, uid, ref("sale.sale_order_6"))
+ sale_order = sale.browse(cr, uid, ref("sale_normal_delivery_charges"))
ship_ids = [x.id for x in sale_order.picking_ids]
wiz_id = self.create(cr, uid, {'journal_id': ref('account.sales_journal')},
{'active_ids': ship_ids, 'active_model': 'stock.picking'})
self.create_invoice(cr, uid, [wiz_id], {"active_ids": ship_ids, "active_id": ship_ids[0]})
-
- I print a Delivery Order report.
--
- !python {model: stock.picking}: |
- import os
- import openerp.report
- from openerp import tools
- sale = self.pool.get('sale.order')
- sale_order = sale.browse(cr, uid, ref("sale.sale_order_6"))
- ship_ids = [x.id for x in sale_order.picking_ids]
- data, format = openerp.report.render_report(cr, uid, ship_ids, 'sale.shipping', {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'delivery-shipping'+format), 'wb+').write(data)
+ Create one more sale order with Free Delivery Charges
+-
+ !record {model: sale.order, id: sale_free_delivery_charges}:
+ partner_id: base.res_partner_7
+ partner_invoice_id: base.res_partner_address_13
+ partner_shipping_id: base.res_partner_address_13
+ pricelist_id: product.list0
+ order_policy: 'manual'
+ order_line:
+ - name: 'Service on demand'
+ product_id: product.product_product_consultant
+ product_uom_qty: 24
+ product_uos_qty: 24
+ product_uom: product.product_uom_hour
+ price_unit: 75.00
+ order_line:
+ - name: 'On Site Assistance'
+ product_id: product.product_product_2
+ product_uom_qty: 30
+ product_uos_qty: 30
+ product_uom: product.product_uom_hour
+ price_unit: 38.25
+ carrier_id: free_delivery_carrier
-
I add free delivery cost in Sale order.
-
!python {model: sale.order}: |
- self.delivery_set(cr, uid, [ref("sale.sale_order_2")], context=context)
+ self.delivery_set(cr, uid, [ref("sale_free_delivery_charges")], context=context)
-
I check sale order after added delivery cost.
-
!python {model: sale.order.line}: |
- line_ids = self.search(cr, uid, [('order_id','=', ref('sale.sale_order_2')), ('product_id','=', ref('product_product_delivery'))])
+ line_ids = self.search(cr, uid, [('order_id','=', ref('sale_free_delivery_charges')), ('product_id','=', ref('product_product_delivery'))])
assert len(line_ids), "Delivery cost is not Added"
line_data = self.browse(cr ,uid ,line_ids[0] ,context)
assert line_data.price_subtotal == 0, "Delivey cost is not correspond."
@@ -61,5 +91,4 @@
{}
-
!python {model: sale.config.settings}: |
- self.execute(cr, uid, [ref('default_delivery_policy')], context=context)
-
+ self.execute(cr, uid, [ref('default_delivery_policy')], context=context)
\ No newline at end of file
diff --git a/addons/delivery/views/report_shipping.xml b/addons/delivery/views/report_shipping.xml
new file mode 100644
index 00000000000..042ec4f85ac
--- /dev/null
+++ b/addons/delivery/views/report_shipping.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
diff --git a/addons/project/report/project_report.py b/addons/project/report/project_report.py
index 5a473469b2d..e3f2cd6668b 100644
--- a/addons/project/report/project_report.py
+++ b/addons/project/report/project_report.py
@@ -48,7 +48,7 @@ class report_project_task_user(osv.osv):
help="Number of Days to Open the task"),
'delay_endings_days': fields.float('Overpassed Deadline', digits=(16,2), readonly=True),
'nbr': fields.integer('# of tasks', readonly=True),
- 'priority': fields.selection([('4', 'Very Low'), ('3', 'Low'), ('2', 'Medium'), ('1', 'Urgent'), ('0', 'Very urgent')],
+ 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')],
string='Priority', readonly=True),
'state': fields.selection([('draft', 'Draft'), ('open', 'In Progress'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')],'Status', readonly=True),
'company_id': fields.many2one('res.company', 'Company', readonly=True),
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index e07d4dbe957..6c06f14d5fa 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -57,6 +57,7 @@ class project_issue(osv.Model):
},
'kanban_state': {
'project_issue.mt_issue_blocked': lambda self, cr, uid, obj, ctx=None: obj.kanban_state == 'blocked',
+ 'project_issue.mt_issue_ready': lambda self, cr, uid, obj, ctx=None: obj.kanban_state == 'done',
},
}
@@ -250,7 +251,7 @@ class project_issue(osv.Model):
" * Normal is the default situation\n"
" * Blocked indicates something is preventing the progress of this issue\n"
" * Ready for next stage indicates the issue is ready to be pulled to the next stage",
- readonly=True, required=False),
+ required=False),
'email_from': fields.char('Email', size=128, help="These people will receive email.", select=1),
'email_cc': fields.char('Watchers Emails', size=256, help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'date_open': fields.datetime('Opened', readonly=True,select=True),
@@ -260,7 +261,7 @@ class project_issue(osv.Model):
'date_last_stage_update': fields.datetime('Last Stage Update', select=True),
'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel."),
'categ_ids': fields.many2many('project.category', string='Tags'),
- 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
+ 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority', select=True),
'version_id': fields.many2one('project.issue.version', 'Version'),
'stage_id': fields.many2one ('project.task.type', 'Stage',
track_visibility='onchange', select=True,
@@ -295,7 +296,7 @@ class project_issue(osv.Model):
'active': 1,
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
- 'priority': crm.AVAILABLE_PRIORITIES[2][0],
+ 'priority': '1',
'kanban_state': 'normal',
'date_last_stage_update': fields.datetime.now,
'user_id': lambda obj, cr, uid, context: uid,
@@ -305,19 +306,6 @@ class project_issue(osv.Model):
'stage_id': _read_group_stage_ids
}
- def set_priority(self, cr, uid, ids, priority, *args):
- return self.write(cr, uid, ids, {'priority' : priority})
-
- def set_high_priority(self, cr, uid, ids, *args):
- """Set lead priority to high
- """
- return self.set_priority(cr, uid, ids, '1')
-
- def set_normal_priority(self, cr, uid, ids, *args):
- """Set lead priority to normal
- """
- return self.set_priority(cr, uid, ids, '3')
-
def copy(self, cr, uid, id, default=None, context=None):
issue = self.read(cr, uid, id, ['name'], context=context)
if not default:
@@ -375,15 +363,6 @@ class project_issue(osv.Model):
# Stage management
# -------------------------------------------------------
- def set_kanban_state_blocked(self, cr, uid, ids, context=None):
- return self.write(cr, uid, ids, {'kanban_state': 'blocked'}, context=context)
-
- def set_kanban_state_normal(self, cr, uid, ids, context=None):
- return self.write(cr, uid, ids, {'kanban_state': 'normal'}, context=context)
-
- def set_kanban_state_done(self, cr, uid, ids, context=None):
- return self.write(cr, uid, ids, {'kanban_state': 'done'}, context=context)
-
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
""" Override of the base.stage method
Parameter of the stage search taken from the issue:
diff --git a/addons/project_issue/project_issue_data.xml b/addons/project_issue/project_issue_data.xml
index d60106dffd2..fced1bd8c72 100644
--- a/addons/project_issue/project_issue_data.xml
+++ b/addons/project_issue/project_issue_data.xml
@@ -48,6 +48,12 @@ Access all issues from the top Project menu, and access the issues of a specific
Issue blocked
+
+ Issue Ready for Next Stage
+ project.issue
+
+ Issue Ready for Next Stage
+ Stage Changedproject.issue
diff --git a/addons/project_issue/project_issue_demo.xml b/addons/project_issue/project_issue_demo.xml
index e16b8702551..e19141aab59 100644
--- a/addons/project_issue/project_issue_demo.xml
+++ b/addons/project_issue/project_issue_demo.xml
@@ -35,7 +35,7 @@
- 5
+ 0
@@ -51,7 +51,7 @@
- 3
+ 1
@@ -64,7 +64,7 @@
- 4
+ 0
@@ -79,7 +79,7 @@
- 3
+ 1
@@ -92,7 +92,7 @@
- 3
+ 1
@@ -105,7 +105,7 @@
- 3
+ 1
@@ -172,7 +172,7 @@
- 4
+ 0
@@ -199,7 +199,7 @@
- 3
+ 1
@@ -213,7 +213,7 @@
- 3
+ 1
@@ -226,7 +226,7 @@
- 4
+ 0
diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml
index 247acbb696f..4e53c056772 100644
--- a/addons/project_issue/project_issue_view.xml
+++ b/addons/project_issue/project_issue_view.xml
@@ -52,13 +52,12 @@
options="{'fold_field': 'fold'}"/>
+
+
+
-
-
-
-
@@ -78,7 +77,7 @@
-
+
@@ -217,34 +216,15 @@
-
+ ]]>
+
+
+
+
+
+ Purchase Order - Send by Email
+ ${object.validator.email or ''}
+ ${object.company_id.name} Order (Ref ${object.name or 'n/a' })
+ ${object.partner_id.id}
+
+
+
+ PO_${(object.name or '').replace('/','_')}
+ ${object.partner_id.lang}
+
+
+
Hello ${object.partner_id.name},
+
+
Here is a ${object.state in ('draft', 'sent') and 'request for quotation' or 'purchase order confirmation'} from ${object.company_id.name}:
+
REFERENCES
Order number: ${object.name}
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 457523d6d97..6ff6feae376 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -19,13 +19,12 @@
#
##############################################################################
-import time
import pytz
from openerp import SUPERUSER_ID, workflow
from datetime import datetime
from dateutil.relativedelta import relativedelta
from operator import attrgetter
-
+from openerp.tools.safe_eval import safe_eval as eval
from openerp.osv import fields, osv
from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
@@ -102,13 +101,13 @@ class purchase_order(osv.osv):
for id in ids:
res[id] = [0.0,0.0]
cr.execute('''SELECT
- p.purchase_id,sum(m.product_qty), m.state
+ p.order_id, sum(m.product_qty), m.state
FROM
stock_move m
LEFT JOIN
- stock_picking p on (p.id=m.picking_id)
+ purchase_order_line p on (p.id=m.purchase_line_id)
WHERE
- p.purchase_id IN %s GROUP BY m.state, p.purchase_id''',(tuple(ids),))
+ p.order_id IN %s GROUP BY m.state, p.order_id''',(tuple(ids),))
for oid,nbr,state in cr.fetchall():
if state=='cancel':
continue
@@ -147,6 +146,26 @@ class purchase_order(osv.osv):
limit=1)
return res and res[0] or False
+ def _get_picking_in(self, cr, uid, context=None):
+ obj_data = self.pool.get('ir.model.data')
+ return obj_data.get_object_reference(cr, uid, 'stock','picking_type_in') and obj_data.get_object_reference(cr, uid, 'stock','picking_type_in')[1] or False
+
+ def _get_picking_ids(self, cr, uid, ids, field_names, args, context=None):
+ res = {}
+ for po_id in ids:
+ res[po_id] = []
+ query = """
+ SELECT picking_id, po.id FROM stock_picking p, stock_move m, purchase_order_line pol, purchase_order po
+ WHERE po.id in %s and po.id = pol.order_id and pol.id = m.purchase_line_id and m.picking_id = p.id
+ GROUP BY picking_id, po.id
+
+ """
+ cr.execute(query, (tuple(ids), ))
+ picks = cr.fetchall()
+ for pick_id, po_id in picks:
+ res[po_id].append(pick_id)
+ return res
+
def _count_all(self, cr, uid, ids, field_name, arg, context=None):
return {
purchase.id: {
@@ -158,9 +177,10 @@ class purchase_order(osv.osv):
STATE_SELECTION = [
('draft', 'Draft PO'),
- ('sent', 'RFQ Sent'),
+ ('sent', 'RFQ'),
+ ('bid', 'Bid Received'),
('confirmed', 'Waiting Approval'),
- ('approved', 'Purchase Order'),
+ ('approved', 'Purchase Confirmed'),
('except_picking', 'Shipping Exception'),
('except_invoice', 'Invoice Exception'),
('done', 'Done'),
@@ -179,7 +199,7 @@ class purchase_order(osv.osv):
help="Reference of the document that generated this purchase order request; a sales order or an internal procurement request."
),
'partner_ref': fields.char('Supplier Reference', states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, size=64,
- help="Reference of the sales order or quotation sent by your supplier. It's mainly used to do the matching when you receive the products as this reference is usually written on the delivery order sent by your supplier."),
+ help="Reference of the sales order or bid sent by your supplier. It's mainly used to do the matching when you receive the products as this reference is usually written on the delivery order sent by your supplier."),
'date_order':fields.date('Order Date', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}, select=True, help="Date on which this document has been created."),
'date_approve':fields.date('Date Approved', readonly=1, select=True, help="Date on which purchase order has been approved"),
'partner_id':fields.many2one('res.partner', 'Supplier', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]},
@@ -189,16 +209,15 @@ class purchase_order(osv.osv):
help="Put an address if you want to deliver directly from the supplier to the customer. " \
"Otherwise, keep empty to deliver to your own company."
),
- 'warehouse_id': fields.many2one('stock.warehouse', 'Destination Warehouse'),
'location_id': fields.many2one('stock.location', 'Destination', required=True, domain=[('usage','<>','view')], states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]} ),
'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)],'done':[('readonly',True)]}, help="The pricelist sets the currency used for this purchase order. It also computes the supplier price for the selected products/quantities."),
'currency_id': fields.many2one('res.currency','Currency', readonly=True, required=True,states={'draft': [('readonly', False)],'sent': [('readonly', False)]}),
- 'state': fields.selection(STATE_SELECTION, 'Status', readonly=True, help="The status of the purchase order or the quotation request. A quotation is a purchase order in a 'Draft' status. Then the order has to be confirmed by the user, the status switch to 'Confirmed'. Then the supplier must confirm the order to change the status to 'Approved'. When the purchase order is paid and received, the status becomes 'Done'. If a cancel action occurs in the invoice or in the reception of goods, the status becomes in exception.", select=True),
+ 'state': fields.selection(STATE_SELECTION, 'Status', readonly=True, help="The status of the purchase order or the quotation request. A request for quotation is a purchase order in a 'Draft' status. Then the order has to be confirmed by the user, the status switch to 'Confirmed'. Then the supplier must confirm the order to change the status to 'Approved'. When the purchase order is paid and received, the status becomes 'Done'. If a cancel action occurs in the invoice or in the reception of goods, the status becomes in exception.", select=True),
'order_line': fields.one2many('purchase.order.line', 'order_id', 'Order Lines', states={'approved':[('readonly',True)],'done':[('readonly',True)]}),
'validator' : fields.many2one('res.users', 'Validated by', readonly=True),
'notes': fields.text('Terms and Conditions'),
'invoice_ids': fields.many2many('account.invoice', 'purchase_invoice_rel', 'purchase_id', 'invoice_id', 'Invoices', help="Invoices generated for a purchase order"),
- 'picking_ids': fields.one2many('stock.picking.in', 'purchase_id', 'Picking List', readonly=True, help="This is the list of incoming shipments that have been generated for this purchase order."),
+ 'picking_ids': fields.function(_get_picking_ids, method=True, type='one2many', relation='stock.picking', string='Picking List', help="This is the list of reception operations that have been generated for this purchase order."),
'shipped':fields.boolean('Received', readonly=True, select=True, help="It indicates that a picking has been done"),
'shipped_rate': fields.function(_shipped_rate, string='Received Ratio', type='float'),
'invoiced': fields.function(_invoiced, string='Invoice Received', type='boolean', help="It indicates that an invoice has been paid"),
@@ -214,24 +233,30 @@ class purchase_order(osv.osv):
'purchase.order.line': (_get_order, ['date_planned'], 10),
}
),
- 'amount_untaxed': fields.function(_amount_all, digits_compute= dp.get_precision('Account'), string='Untaxed Amount',
+ 'amount_untaxed': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Untaxed Amount',
store={
'purchase.order.line': (_get_order, None, 10),
}, multi="sums", help="The amount without tax", track_visibility='always'),
- 'amount_tax': fields.function(_amount_all, digits_compute= dp.get_precision('Account'), string='Taxes',
+ 'amount_tax': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Taxes',
store={
'purchase.order.line': (_get_order, None, 10),
}, multi="sums", help="The tax amount"),
- 'amount_total': fields.function(_amount_all, digits_compute= dp.get_precision('Account'), string='Total',
+ 'amount_total': fields.function(_amount_all, digits_compute=dp.get_precision('Account'), string='Total',
store={
'purchase.order.line': (_get_order, None, 10),
- }, multi="sums",help="The total amount"),
+ }, multi="sums", help="The total amount"),
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position'),
'payment_term_id': fields.many2one('account.payment.term', 'Payment Term'),
- 'product_id': fields.related('order_line','product_id', type='many2one', relation='product.product', string='Product'),
- 'create_uid': fields.many2one('res.users', 'Responsible'),
- 'company_id': fields.many2one('res.company','Company',required=True,select=1, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}),
+ 'incoterm_id': fields.many2one('stock.incoterms', 'Incoterm', help="International Commercial Terms are a series of predefined commercial terms used in international transactions."),
+ 'product_id': fields.related('order_line', 'product_id', type='many2one', relation='product.product', string='Product'),
+ 'create_uid': fields.many2one('res.users', 'Responsible'),
+ 'company_id': fields.many2one('res.company', 'Company', required=True, select=1, states={'confirmed': [('readonly', True)], 'approved': [('readonly', True)]}),
'journal_id': fields.many2one('account.journal', 'Journal'),
+ 'bid_date': fields.date('Bid Received On', readonly=True, help="Date on which the bid was received"),
+ 'bid_validity': fields.date('Bid Valid Until', help="Date on which the bid expired"),
+ 'picking_type_id': fields.many2one('stock.picking.type', 'Deliver To', help="This will determine picking type of incoming shipment", required=True,
+ states={'confirmed': [('readonly', True)], 'approved': [('readonly', True)], 'done': [('readonly', True)]}),
+ 'related_location_id': fields.related('picking_type_id', 'default_location_dest_id', type='many2one', relation='stock.location', string="Related location", store=True),
'shipment_count': fields.function(_count_all, type='integer', string='Incoming Shipments', multi=True),
'invoice_count': fields.function(_count_all, type='integer', string='Invoices', multi=True)
}
@@ -243,9 +268,10 @@ class purchase_order(osv.osv):
'invoice_method': 'order',
'invoiced': 0,
'pricelist_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').browse(cr, uid, context['partner_id']).property_product_pricelist_purchase.id,
- 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'purchase.order', context=c),
+ 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'purchase.order', context=c),
'journal_id': _get_journal,
- 'currency_id': lambda self, cr, uid, context: self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id
+ 'currency_id': lambda self, cr, uid, context: self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id,
+ 'picking_type_id': _get_picking_in,
}
_sql_constraints = [
('name_uniq', 'unique(name, company_id)', 'Order Reference must be unique per Company!'),
@@ -279,6 +305,20 @@ class purchase_order(osv.osv):
return super(purchase_order, self).unlink(cr, uid, unlink_ids, context=context)
+ def set_order_line_status(self, cr, uid, ids, status, context=None):
+ line = self.pool.get('purchase.order.line')
+ order_line_ids = []
+ proc_obj = self.pool.get('procurement.order')
+ for order in self.browse(cr, uid, ids, context=context):
+ order_line_ids += [po_line.id for po_line in order.order_line]
+ if order_line_ids:
+ line.write(cr, uid, order_line_ids, {'state': status}, context=context)
+ if order_line_ids and status == 'cancel':
+ procs = proc_obj.search(cr, uid, [('purchase_line_id', 'in', order_line_ids)], context=context)
+ if procs:
+ proc_obj.write(cr, uid, procs, {'state': 'exception'}, context=context)
+ return True
+
def button_dummy(self, cr, uid, ids, context=None):
return True
@@ -287,22 +327,26 @@ class purchase_order(osv.osv):
return {}
return {'value': {'currency_id': self.pool.get('product.pricelist').browse(cr, uid, pricelist_id, context=context).currency_id.id}}
+ #Destination address is used when dropshipping
def onchange_dest_address_id(self, cr, uid, ids, address_id):
if not address_id:
return {}
address = self.pool.get('res.partner')
- values = {'warehouse_id': False}
+ values = {}
supplier = address.browse(cr, uid, address_id)
if supplier:
location_id = supplier.property_stock_customer.id
values.update({'location_id': location_id})
return {'value':values}
- def onchange_warehouse_id(self, cr, uid, ids, warehouse_id):
- if not warehouse_id:
- return {}
- warehouse = self.pool.get('stock.warehouse').browse(cr, uid, warehouse_id)
- return {'value':{'location_id': warehouse.lot_input_id.id, 'dest_address_id': False}}
+ def onchange_picking_type_id(self, cr, uid, ids, picking_type_id, context=None):
+ value = {}
+ if picking_type_id:
+ picktype = self.pool.get("stock.picking.type").browse(cr, uid, picking_type_id, context=context)
+ if picktype.default_location_dest_id:
+ value.update({'location_id': picktype.default_location_dest_id.id})
+ value.update({'related_location_id': picktype.default_location_dest_id and picktype.default_location_dest_id.id or False})
+ return {'value': value}
def onchange_partner_id(self, cr, uid, ids, partner_id):
partner = self.pool.get('res.partner')
@@ -374,54 +418,48 @@ class purchase_order(osv.osv):
def view_picking(self, cr, uid, ids, context=None):
'''
- This function returns an action that display existing pîcking orders of given purchase order ids.
+ This function returns an action that display existing picking orders of given purchase order ids.
'''
+ if context is None:
+ context = {}
mod_obj = self.pool.get('ir.model.data')
+ dummy, action_id = tuple(mod_obj.get_object_reference(cr, uid, 'stock', 'action_picking_tree'))
+ action = self.pool.get('ir.actions.act_window').read(cr, uid, action_id, context=context)
+
pick_ids = []
for po in self.browse(cr, uid, ids, context=context):
pick_ids += [picking.id for picking in po.picking_ids]
- action_model, action_id = tuple(mod_obj.get_object_reference(cr, uid, 'stock', 'action_picking_tree4'))
- action = self.pool[action_model].read(cr, uid, action_id, context=context)
- ctx = eval(action['context'])
- ctx.update({
- 'search_default_purchase_id': ids[0]
- })
- if pick_ids and len(pick_ids) == 1:
- form_view_ids = [view_id for view_id, view in action['views'] if view == 'form']
- view_id = form_view_ids and form_view_ids[0] or False
- action.update({
- 'views': [],
- 'view_mode': 'form',
- 'view_id': view_id,
- 'res_id': pick_ids[0]
- })
-
- action.update({
- 'context': ctx,
- })
+ #override the context to get rid of the default filtering on picking type
+ action['context'] = {}
+ #choose the view_mode accordingly
+ if len(pick_ids) > 1:
+ action['domain'] = "[('id','in',[" + ','.join(map(str, pick_ids)) + "])]"
+ else:
+ res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_form')
+ action['views'] = [(res and res[1] or False, 'form')]
+ action['res_id'] = pick_ids and pick_ids[0] or False
return action
def wkf_approve_order(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'approved', 'date_approve': fields.date.context_today(self,cr,uid,context=context)})
return True
- def print_confirm(self,cr,uid,ids,context=None):
- print "Confirmed"
-
- def print_double(self,cr,uid,ids,context=None):
- print "double Approval"
-
- def print_router(self,cr,uid,ids,context=None):
- print "Routed"
+ def wkf_bid_received(self, cr, uid, ids, context=None):
+ return self.write(cr, uid, ids, {'state':'bid', 'bid_date': fields.date.context_today(self,cr,uid,context=context)})
def wkf_send_rfq(self, cr, uid, ids, context=None):
'''
This function opens a window to compose an email, with the edi purchase template message loaded by default
'''
+ if not context:
+ context= {}
ir_model_data = self.pool.get('ir.model.data')
try:
- template_id = ir_model_data.get_object_reference(cr, uid, 'purchase', 'email_template_edi_purchase')[1]
+ if context.get('send_rfq', False):
+ template_id = ir_model_data.get_object_reference(cr, uid, 'purchase', 'email_template_edi_purchase')[1]
+ else:
+ template_id = ir_model_data.get_object_reference(cr, uid, 'purchase', 'email_template_edi_purchase_done')[1]
except ValueError:
template_id = False
try:
@@ -456,7 +494,6 @@ class purchase_order(osv.osv):
self.signal_send_rfq(cr, uid, ids)
return self.pool['report'].get_action(cr, uid, ids, 'purchase.report_purchasequotation', context=context)
- #TODO: implement messages system
def wkf_confirm_order(self, cr, uid, ids, context=None):
todo = []
for po in self.browse(cr, uid, ids, context=context):
@@ -464,8 +501,7 @@ class purchase_order(osv.osv):
raise osv.except_osv(_('Error!'),_('You cannot confirm a purchase order without any purchase order line.'))
for line in po.order_line:
if line.state=='draft':
- todo.append(line.id)
-
+ todo.append(line.id)
self.pool.get('purchase.order.line').action_confirm(cr, uid, todo, context)
for id in ids:
self.write(cr, uid, [id], {'state' : 'confirmed', 'validator' : uid})
@@ -544,12 +580,17 @@ class purchase_order(osv.osv):
if not len(ids):
return False
self.write(cr, uid, ids, {'state':'draft','shipped':0})
+ self.set_order_line_status(cr, uid, ids, 'draft', context=context)
for p_id in ids:
# Deleting the existing instance of workflow for PO
self.delete_workflow(cr, uid, [p_id]) # TODO is it necessary to interleave the calls?
self.create_workflow(cr, uid, [p_id])
return True
+ def wkf_po_done(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {'state': 'done'}, context=context)
+ self.set_order_line_status(cr, uid, ids, 'done', context=context)
+
def action_invoice_create(self, cr, uid, ids, context=None):
"""Generates invoice for given ids of purchase orders and links that invoice ID to purchase order.
:param ids: list of ids of purchase orders.
@@ -594,7 +635,7 @@ class purchase_order(osv.osv):
return res
def invoice_done(self, cr, uid, ids, context=None):
- self.write(cr, uid, ids, {'state':'approved'}, context=context)
+ self.write(cr, uid, ids, {'state': 'approved'}, context=context)
return True
def has_stockable_product(self, cr, uid, ids, *args):
@@ -607,90 +648,86 @@ class purchase_order(osv.osv):
def action_cancel(self, cr, uid, ids, context=None):
for purchase in self.browse(cr, uid, ids, context=context):
for pick in purchase.picking_ids:
- if pick.state not in ('draft','cancel'):
+ if pick.state not in ('draft', 'cancel'):
raise osv.except_osv(
- _('Unable to cancel this purchase order.'),
+ _('Unable to cancel the purchase order %s.') % (purchase.name),
_('First cancel all receptions related to this purchase order.'))
self.pool.get('stock.picking') \
.signal_button_cancel(cr, uid, map(attrgetter('id'), purchase.picking_ids))
for inv in purchase.invoice_ids:
- if inv and inv.state not in ('cancel','draft'):
+ if inv and inv.state not in ('cancel', 'draft'):
raise osv.except_osv(
_('Unable to cancel this purchase order.'),
_('You must first cancel all invoices related to this purchase order.'))
self.pool.get('account.invoice') \
.signal_invoice_cancel(cr, uid, map(attrgetter('id'), purchase.invoice_ids))
- self.write(cr,uid,ids,{'state':'cancel'})
-
+ self.write(cr, uid, ids, {'state': 'cancel'})
+ self.set_order_line_status(cr, uid, ids, 'cancel', context=context)
self.signal_purchase_cancel(cr, uid, ids)
return True
- def date_to_datetime(self, cr, uid, userdate, context=None):
- """ Convert date values expressed in user's timezone to
- server-side UTC timestamp, assuming a default arbitrary
- time of 12:00 AM - because a time is needed.
-
- :param str userdate: date string in in user time zone
- :return: UTC datetime string for server-side use
- """
- # TODO: move to fields.datetime in server after 7.0
- user_date = datetime.strptime(userdate, DEFAULT_SERVER_DATE_FORMAT)
- if context and context.get('tz'):
- tz_name = context['tz']
- else:
- tz_name = self.pool.get('res.users').read(cr, SUPERUSER_ID, uid, ['tz'])['tz']
- if tz_name:
- utc = pytz.timezone('UTC')
- context_tz = pytz.timezone(tz_name)
- user_datetime = user_date + relativedelta(hours=12.0)
- local_timestamp = context_tz.localize(user_datetime, is_dst=False)
- user_datetime = local_timestamp.astimezone(utc)
- return user_datetime.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
- return user_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
-
- def _prepare_order_picking(self, cr, uid, order, context=None):
- return {
- 'name': self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.in'),
- 'origin': order.name + ((order.origin and (':' + order.origin)) or ''),
- 'date': self.date_to_datetime(cr, uid, order.date_order, context),
- 'partner_id': order.partner_id.id,
- 'invoice_state': '2binvoiced' if order.invoice_method == 'picking' else 'none',
- 'type': 'in',
- 'purchase_id': order.id,
- 'company_id': order.company_id.id,
- 'move_lines' : [],
- }
-
- def _prepare_order_line_move(self, cr, uid, order, order_line, picking_id, context=None):
- ''' prepare the stock move data from the PO line '''
- return {
+ def _prepare_order_line_move(self, cr, uid, order, order_line, picking_id, group_id, context=None):
+ ''' prepare the stock move data from the PO line. This function returns a list of dictionary ready to be used in stock.move's create()'''
+ product_uom = self.pool.get('product.uom')
+ price_unit = order_line.price_unit
+ if order_line.product_uom.id != order_line.product_id.uom_id.id:
+ price_unit *= order_line.product_uom.factor
+ if order.currency_id.id != order.company_id.currency_id.id:
+ #we don't round the price_unit, as we may want to store the standard price with more digits than allowed by the currency
+ price_unit = self.pool.get('res.currency').compute(cr, uid, order.currency_id.id, order.company_id.currency_id.id, price_unit, round=False, context=context)
+ res = []
+ move_template = {
'name': order_line.name or '',
'product_id': order_line.product_id.id,
- 'product_qty': order_line.product_qty,
- 'product_uos_qty': order_line.product_qty,
'product_uom': order_line.product_uom.id,
'product_uos': order_line.product_uom.id,
- 'date': self.date_to_datetime(cr, uid, order.date_order, context),
- 'date_expected': self.date_to_datetime(cr, uid, order_line.date_planned, context),
+ 'date': fields.date.date_to_datetime(self, cr, uid, order.date_order, context),
+ 'date_expected': fields.date.date_to_datetime(self, cr, uid, order_line.date_planned, context),
'location_id': order.partner_id.property_stock_supplier.id,
'location_dest_id': order.location_id.id,
'picking_id': picking_id,
'partner_id': order.dest_address_id.id or order.partner_id.id,
- 'move_dest_id': order_line.move_dest_id.id,
+ 'move_dest_id': False,
'state': 'draft',
- 'type':'in',
'purchase_line_id': order_line.id,
'company_id': order.company_id.id,
- 'price_unit': order_line.price_unit
+ 'price_unit': price_unit,
+ 'picking_type_id': order.picking_type_id.id,
+ 'group_id': group_id,
+ 'procurement_id': False,
+ 'origin': order.name,
+ 'route_ids': order.picking_type_id.warehouse_id and [(6, 0, [x.id for x in order.picking_type_id.warehouse_id.route_ids])] or [],
+ 'warehouse_id':order.picking_type_id.warehouse_id.id,
}
- def _create_pickings(self, cr, uid, order, order_lines, picking_id=False, context=None):
- """Creates pickings and appropriate stock moves for given order lines, then
- confirms the moves, makes them available, and confirms the picking.
+ diff_quantity = order_line.product_qty
+ for procurement in order_line.procurement_ids:
+ procurement_qty = product_uom._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, to_uom_id=order_line.product_uom.id)
+ tmp = move_template.copy()
+ tmp.update({
+ 'product_uom_qty': min(procurement_qty, diff_quantity),
+ 'product_uos_qty': min(procurement_qty, diff_quantity),
+ 'move_dest_id': procurement.move_dest_id.id, # blabla
+ 'group_id': procurement.group_id.id or group_id, # blabla to check ca devrait etre bon et groupé dans le meme picking qd meme
+ 'procurement_id': procurement.id,
+ })
+ diff_quantity -= min(procurement_qty, diff_quantity)
+ res.append(tmp)
+ #if the order line has a bigger quantity than the procurement it was for (manually changed or minimal quantity), then
+ #split the future stock move in two because the route followed may be different.
+ if diff_quantity > 0:
+ move_template['product_uom_qty'] = diff_quantity
+ move_template['product_uos_qty'] = diff_quantity
+ res.append(move_template)
+ return res
- If ``picking_id`` is provided, the stock moves will be added to it, otherwise
- a standard outgoing picking will be created to wrap the stock moves, as returned
- by :meth:`~._prepare_order_picking`.
+ def _create_stock_moves(self, cr, uid, order, order_lines, picking_id=False, context=None):
+ """Creates appropriate stock moves for given order lines, whose can optionally create a
+ picking if none is given or no suitable is found, then confirms the moves, makes them
+ available, and confirms the pickings.
+
+ If ``picking_id`` is provided, the stock moves will be added to it, otherwise a standard
+ incoming picking will be created to wrap the stock moves (default behavior of the stock.move)
Modules that wish to customize the procurements or partition the stock moves over
multiple stock pickings may override this method and call ``super()`` with
@@ -701,39 +738,69 @@ class purchase_order(osv.osv):
and moves should be created.
:param int picking_id: optional ID of a stock picking to which the created stock moves
will be added. A new picking will be created if omitted.
- :return: list of IDs of pickings used/created for the given order lines (usually just one)
+ :return: None
"""
- stock_picking = self.pool.get('stock.picking')
- if not picking_id:
- picking_id = stock_picking.create(cr, uid, self._prepare_order_picking(cr, uid, order, context=context))
- todo_moves = []
stock_move = self.pool.get('stock.move')
+ todo_moves = []
+ new_group = self.pool.get("procurement.group").create(cr, uid, {'name': order.name, 'partner_id': order.partner_id.id}, context=context)
+
for order_line in order_lines:
if not order_line.product_id:
continue
+
if order_line.product_id.type in ('product', 'consu'):
- move = stock_move.create(cr, uid, self._prepare_order_line_move(cr, uid, order, order_line, picking_id, context=context))
- if order_line.move_dest_id and order_line.move_dest_id.state != 'done':
- order_line.move_dest_id.write({'location_id': order.location_id.id})
- todo_moves.append(move)
- stock_move.action_confirm(cr, uid, todo_moves)
+ for vals in self._prepare_order_line_move(cr, uid, order, order_line, picking_id, new_group, context=context):
+ move = stock_move.create(cr, uid, vals, context=context)
+ todo_moves.append(move)
+
+ todo_moves = stock_move.action_confirm(cr, uid, todo_moves)
stock_move.force_assign(cr, uid, todo_moves)
- stock_picking.signal_button_confirm(cr, uid, [picking_id])
- return [picking_id]
+
+ def test_moves_done(self, cr, uid, ids, context=None):
+ '''PO is done at the delivery side if all the incoming shipments are done'''
+ for purchase in self.browse(cr, uid, ids, context=context):
+ for picking in purchase.picking_ids:
+ if picking.state != 'done':
+ return False
+ return True
+
+ def test_moves_except(self, cr, uid, ids, context=None):
+ ''' PO is in exception at the delivery side if one of the picking is canceled
+ and the other pickings are completed (done or canceled)
+ '''
+ at_least_one_canceled = False
+ alldoneorcancel = True
+ for purchase in self.browse(cr, uid, ids, context=context):
+ for picking in purchase.picking_ids:
+ if picking.state == 'cancel':
+ at_least_one_canceled = True
+ if picking.state not in ['done', 'cancel']:
+ alldoneorcancel = False
+ return at_least_one_canceled and alldoneorcancel
+
+ def move_lines_get(self, cr, uid, ids, *args):
+ res = []
+ for order in self.browse(cr, uid, ids, context={}):
+ for line in order.order_line:
+ res += [x.id for x in line.move_ids]
+ return res
def action_picking_create(self, cr, uid, ids, context=None):
- picking_ids = []
for order in self.browse(cr, uid, ids):
- picking_ids.extend(self._create_pickings(cr, uid, order, order.order_line, None, context=context))
-
- # Must return one unique picking ID: the one to connect in the subflow of the purchase order.
- # In case of multiple (split) pickings, we should return the ID of the critical one, i.e. the
- # one that should trigger the advancement of the purchase workflow.
- # By default we will consider the first one as most important, but this behavior can be overridden.
- return picking_ids[0] if picking_ids else False
+ picking_id = self.pool.get('stock.picking').create(cr, uid, {'picking_type_id': order.picking_type_id.id, 'partner_id': order.dest_address_id.id or order.partner_id.id}, context=context)
+ self._create_stock_moves(cr, uid, order, order.order_line, picking_id, context=context)
def picking_done(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'shipped':1,'state':'approved'}, context=context)
+ # Do check on related procurements:
+ proc_obj = self.pool.get("procurement.order")
+ po_lines = []
+ for po in self.browse(cr, uid, ids, context=context):
+ po_lines += [x.id for x in po.order_line]
+ if po_lines:
+ procs = proc_obj.search(cr, uid, [('purchase_line_id', 'in', po_lines)], context=context)
+ if procs:
+ proc_obj.check(cr, uid, procs, context=context)
self.message_post(cr, uid, ids, body=_("Products received"), context=context)
return True
@@ -745,7 +812,7 @@ class purchase_order(osv.osv):
'shipped':False,
'invoiced':False,
'invoice_ids': [],
- 'picking_ids': [],
+ 'origin': '',
'partner_ref': '',
'name': self.pool.get('ir.sequence').get(cr, uid, 'purchase.order'),
})
@@ -775,7 +842,7 @@ class purchase_order(osv.osv):
list_key = []
for field in fields:
field_val = getattr(br, field)
- if field in ('product_id', 'move_dest_id', 'account_analytic_id'):
+ if field in ('product_id', 'account_analytic_id'):
if not field_val:
field_val = False
if isinstance(field_val, browse_record):
@@ -792,21 +859,22 @@ class purchase_order(osv.osv):
context = {}
# Compute what the new orders should contain
-
new_orders = {}
+ order_lines_to_move = []
for porder in [order for order in self.browse(cr, uid, ids, context=context) if order.state == 'draft']:
order_key = make_key(porder, ('partner_id', 'location_id', 'pricelist_id'))
new_order = new_orders.setdefault(order_key, ({}, []))
new_order[1].append(porder.id)
order_infos = new_order[0]
+
if not order_infos:
order_infos.update({
'origin': porder.origin,
'date_order': porder.date_order,
'partner_id': porder.partner_id.id,
'dest_address_id': porder.dest_address_id.id,
- 'warehouse_id': porder.warehouse_id.id,
+ 'picking_type_id': porder.picking_type_id.id,
'location_id': porder.location_id.id,
'pricelist_id': porder.pricelist_id.id,
'state': 'draft',
@@ -823,21 +891,7 @@ class purchase_order(osv.osv):
order_infos['origin'] = (order_infos['origin'] or '') + ' ' + porder.origin
for order_line in porder.order_line:
- line_key = make_key(order_line, ('name', 'date_planned', 'taxes_id', 'price_unit', 'product_id', 'move_dest_id', 'account_analytic_id'))
- o_line = order_infos['order_line'].setdefault(line_key, {})
- if o_line:
- # merge the line with an existing line
- o_line['product_qty'] += order_line.product_qty * order_line.product_uom.factor / o_line['uom_factor']
- else:
- # append a new "standalone" line
- for field in ('product_qty', 'product_uom'):
- field_val = getattr(order_line, field)
- if isinstance(field_val, browse_record):
- field_val = field_val.id
- o_line[field] = field_val
- o_line['uom_factor'] = order_line.product_uom and order_line.product_uom.factor or 1.0
-
-
+ order_lines_to_move += [order_line.id]
allorders = []
orders_info = {}
@@ -851,7 +905,7 @@ class purchase_order(osv.osv):
for key, value in order_data['order_line'].iteritems():
del value['uom_factor']
value.update(dict(key))
- order_data['order_line'] = [(0, 0, value) for value in order_data['order_line'].itervalues()]
+ order_data['order_line'] = [(6, 0, order_lines_to_move)]
# create the new order
context.update({'mail_create_nolog': True})
@@ -863,7 +917,8 @@ class purchase_order(osv.osv):
# make triggers pointing to the old orders point to the new order
for old_id in old_ids:
self.redirect_workflow(cr, uid, [(old_id, neworder_id)])
- self.signal_purchase_cancel(cr, uid, [old_id]) # TODO Is it necessary to interleave the calls?
+ self.signal_purchase_cancel(cr, uid, [old_id])
+
return orders_info
@@ -894,7 +949,6 @@ class purchase_order_line(osv.osv):
'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True),
'product_id': fields.many2one('product.product', 'Product', domain=[('purchase_ok','=',True)], change_default=True),
'move_ids': fields.one2many('stock.move', 'purchase_line_id', 'Reservation', readonly=True, ondelete='set null'),
- 'move_dest_id': fields.many2one('stock.move', 'Reservation Destination', ondelete='set null'),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Product Price')),
'price_subtotal': fields.function(_amount_line, string='Subtotal', digits_compute= dp.get_precision('Account')),
'order_id': fields.many2one('purchase.order', 'Order Reference', select=True, required=True, ondelete='cascade'),
@@ -909,7 +963,7 @@ class purchase_order_line(osv.osv):
'invoiced': fields.boolean('Invoiced', readonly=True),
'partner_id': fields.related('order_id','partner_id',string='Partner',readonly=True,type="many2one", relation="res.partner", store=True),
'date_order': fields.related('order_id','date_order',string='Order Date',readonly=True,type="date"),
-
+ 'procurement_ids': fields.one2many('procurement.order', 'purchase_line_id', string='Associated procurements'),
}
_defaults = {
'product_uom' : _get_uom_id,
@@ -924,21 +978,19 @@ class purchase_order_line(osv.osv):
def copy_data(self, cr, uid, id, default=None, context=None):
if not default:
default = {}
- default.update({'state':'draft', 'move_ids':[],'invoiced':0,'invoice_lines':[]})
+ default.update({'state':'draft', 'move_ids':[], 'invoiced':0, 'invoice_lines':[], 'procurement_ids': False})
return super(purchase_order_line, self).copy_data(cr, uid, id, default, context)
def unlink(self, cr, uid, ids, context=None):
- procurement_ids_to_cancel = []
- for line in self.browse(cr, uid, ids, context=context):
- if line.move_dest_id:
- procurement_ids_to_cancel.extend(procurement.id for procurement in line.move_dest_id.procurements)
+ procurement_obj = self.pool.get('procurement.order')
+ procurement_ids_to_cancel = procurement_obj.search(cr, uid, [('purchase_line_id', 'in', ids)], context=context)
if procurement_ids_to_cancel:
- self.pool['procurement.order'].action_cancel(cr, uid, procurement_ids_to_cancel)
+ self.pool['procurement.order'].cancel(cr, uid, procurement_ids_to_cancel)
return super(purchase_order_line, self).unlink(cr, uid, ids, context=context)
def onchange_product_uom(self, cr, uid, ids, pricelist_id, product_id, qty, uom_id,
partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
- name=False, price_unit=False, context=None):
+ name=False, price_unit=False, state='draft', context=None):
"""
onchange handler of product_uom.
"""
@@ -949,7 +1001,7 @@ class purchase_order_line(osv.osv):
context = dict(context, purchase_uom_check=True)
return self.onchange_product_id(cr, uid, ids, pricelist_id, product_id, qty, uom_id,
partner_id, date_order=date_order, fiscal_position_id=fiscal_position_id, date_planned=date_planned,
- name=name, price_unit=price_unit, context=context)
+ name=name, price_unit=price_unit, state=state, context=context)
def _get_date_planned(self, cr, uid, supplier_info, date_order_str, context=None):
"""Return the datetime value to use as Schedule Date (``date_planned``) for
@@ -966,6 +1018,12 @@ class purchase_order_line(osv.osv):
supplier_delay = int(supplier_info.delay) if supplier_info else 0
return datetime.strptime(date_order_str, DEFAULT_SERVER_DATE_FORMAT) + relativedelta(days=supplier_delay)
+ def action_cancel(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
+ for po_line in self.browse(cr, uid, ids, context=context):
+ if all([l.state == 'cancel' for l in po_line.order_id.order_line]):
+ self.pool.get('purchase.order').action_cancel(cr, uid, [po_line.order_id.id], context=context)
+
def _check_product_uom_group(self, cr, uid, context=None):
group_uom = self.pool.get('ir.model.data').get_object(cr, uid, 'product', 'group_uom')
res = [user for user in group_uom.users if user.id == uid]
@@ -974,7 +1032,7 @@ class purchase_order_line(osv.osv):
def onchange_product_id(self, cr, uid, ids, pricelist_id, product_id, qty, uom_id,
partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
- name=False, price_unit=False, context=None):
+ name=False, price_unit=False, state='draft', context=None):
"""
onchange handler of product_id.
"""
@@ -1047,12 +1105,14 @@ class purchase_order_line(osv.osv):
if qty:
res['value'].update({'product_qty': qty})
- # - determine price_unit and taxes_id
- if pricelist_id:
- price = product_pricelist.price_get(cr, uid, [pricelist_id],
- product.id, qty or 1.0, partner_id or False, {'uom': uom_id, 'date': date_order})[pricelist_id]
- else:
- price = product.standard_price
+ price = price_unit
+ if state not in ('sent','bid'):
+ # - determine price_unit and taxes_id
+ if pricelist_id:
+ price = product_pricelist.price_get(cr, uid, [pricelist_id],
+ product.id, qty or 1.0, partner_id or False, {'uom': uom_id, 'date': date_order})[pricelist_id]
+ else:
+ price = product.standard_price
taxes = account_tax.browse(cr, uid, map(lambda x: x.id, product.supplier_taxes_id))
fpos = fiscal_position_id and account_fiscal_position.browse(cr, uid, fiscal_position_id, context=context) or False
@@ -1062,29 +1122,50 @@ class purchase_order_line(osv.osv):
return res
product_id_change = onchange_product_id
- product_uom_change = onchange_product_uom
+ product_uom_change = onchange_product_uom
def action_confirm(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'confirmed'}, context=context)
return True
+class procurement_rule(osv.osv):
+ _inherit = 'procurement.rule'
+
+ def _get_action(self, cr, uid, context=None):
+ return [('buy', _('Buy'))] + super(procurement_rule, self)._get_action(cr, uid, context=context)
+
class procurement_order(osv.osv):
_inherit = 'procurement.order'
_columns = {
- 'purchase_id': fields.many2one('purchase.order', 'Purchase Order'),
+ 'purchase_line_id': fields.many2one('purchase.order.line', 'Purchase Order Line'),
+ 'purchase_id': fields.related('purchase_line_id', 'order_id', type='many2one', relation='purchase.order', string='Purchase Order'),
}
- def check_buy(self, cr, uid, ids, context=None):
- ''' return True if the supply method of the mto product is 'buy'
- '''
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
- for procurement in self.browse(cr, uid, ids, context=context):
- if procurement.product_id.supply_method <> 'buy':
- return False
- return True
+ def propagate_cancel(self, cr, uid, procurement, context=None):
+ if procurement.rule_id.action == 'buy' and procurement.purchase_line_id:
+ purchase_line_obj = self.pool.get('purchase.order.line')
+ if procurement.purchase_line_id.product_qty > procurement.product_qty and procurement.purchase_line_id.order_id.state == 'draft':
+ purchase_line_obj.write(cr, uid, [procurement.purchase_line_id.id], {'product_qty': procurement.purchase_line_id.product_qty - procurement.product_qty}, context=context)
+ else:
+ purchase_line_obj.action_cancel(cr, uid, [procurement.purchase_line_id.id], context=context)
+ return super(procurement_order, self).propagate_cancel(cr, uid, procurement, context=context)
- def check_supplier_info(self, cr, uid, ids, context=None):
+ def _run(self, cr, uid, procurement, context=None):
+ if procurement.rule_id and procurement.rule_id.action == 'buy':
+ #make a purchase order for the procurement
+ return self.make_po(cr, uid, [procurement.id], context=context)[procurement.id]
+ return super(procurement_order, self)._run(cr, uid, procurement, context=context)
+
+ def _check(self, cr, uid, procurement, context=None):
+ if procurement.purchase_line_id and procurement.purchase_line_id.order_id.shipped: # TOCHECK: does it work for several deliveries?
+ return True
+ return super(procurement_order, self)._check(cr, uid, procurement, context=context)
+
+ def _check_supplier_info(self, cr, uid, ids, context=None):
+ ''' Check the supplier info field of a product and write an error message on the procurement if needed.
+ Returns True if all needed information is there, False if some configuration mistake is detected.
+ '''
partner_obj = self.pool.get('res.partner')
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
for procurement in self.browse(cr, uid, ids, context=context):
@@ -1109,15 +1190,6 @@ class procurement_order(osv.osv):
return True
-
- def action_po_assign(self, cr, uid, ids, context=None):
- """ This is action which call from workflow to assign purchase order to procurements
- @return: True
- """
- res = self.make_po(cr, uid, ids, context=context)
- res = res.values()
- return len(res) and res[0] or 0 #TO CHECK: why workflow is generated error if return not integer value
-
def create_procurement_purchase_order(self, cr, uid, procurement, po_vals, line_vals, context=None):
"""Create the purchase order from the procurement, using
the provided field values, after adding the given purchase
@@ -1161,112 +1233,114 @@ class procurement_order(osv.osv):
seller_delay = int(procurement.product_id.seller_delay)
return schedule_date - relativedelta(days=seller_delay)
- def _get_warehouse(self, procurement, user_company):
- """
- Return the warehouse containing the procurment stock location (or one of it ancestors)
- If none match, returns then first warehouse of the company
- """
- # TODO refactor the domain once we implement the "parent_of" domain operator
- # NOTE This method has been copied in the `purchase_requisition` module to ensure
- # retro-compatibility. This code duplication will be deleted in next stable version.
- # Do not forget to update both version in case of modification.
- company_id = (procurement.company_id or user_company).id
- domains = [
- [
- '&', ('company_id', '=', company_id),
- '|', '&', ('lot_stock_id.parent_left', '<', procurement.location_id.parent_left),
- ('lot_stock_id.parent_right', '>', procurement.location_id.parent_right),
- ('lot_stock_id', '=', procurement.location_id.id)
- ],
- [('company_id', '=', company_id)]
- ]
+ def _get_product_supplier(self, cr, uid, procurement, context=None):
+ ''' returns the main supplier of the procurement's product given as argument'''
+ return procurement.product_id.seller_id
- cr, uid = procurement._cr, procurement._uid
- context = procurement._context
- Warehouse = self.pool['stock.warehouse']
- for domain in domains:
- ids = Warehouse.search(cr, uid, domain, context=context)
- if ids:
- return ids[0]
- return False
-
- def make_po(self, cr, uid, ids, context=None):
- """ Make purchase order from procurement
- @return: New created Purchase Orders procurement wise
- """
- res = {}
+ def _get_po_line_values_from_proc(self, cr, uid, procurement, partner, company, schedule_date, context=None):
if context is None:
context = {}
- company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
- partner_obj = self.pool.get('res.partner')
uom_obj = self.pool.get('product.uom')
pricelist_obj = self.pool.get('product.pricelist')
prod_obj = self.pool.get('product.product')
acc_pos_obj = self.pool.get('account.fiscal.position')
+
+ seller_qty = procurement.product_id.seller_qty
+ pricelist_id = partner.property_product_pricelist_purchase.id
+ uom_id = procurement.product_id.uom_po_id.id
+ qty = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, uom_id)
+ if seller_qty:
+ qty = max(qty, seller_qty)
+ price = pricelist_obj.price_get(cr, uid, [pricelist_id], procurement.product_id.id, qty, partner.id, {'uom': uom_id})[pricelist_id]
+
+ #Passing partner_id to context for purchase order line integrity of Line name
+ new_context = context.copy()
+ new_context.update({'lang': partner.lang, 'partner_id': partner.id})
+ product = prod_obj.browse(cr, uid, procurement.product_id.id, context=new_context)
+ taxes_ids = procurement.product_id.supplier_taxes_id
+ taxes = acc_pos_obj.map_tax(cr, uid, partner.property_account_position, taxes_ids)
+ name = product.partner_ref
+ if product.description_purchase:
+ name += '\n' + product.description_purchase
+
+ return {
+ 'name': name,
+ 'product_qty': qty,
+ 'product_id': procurement.product_id.id,
+ 'product_uom': uom_id,
+ 'price_unit': price or 0.0,
+ 'date_planned': schedule_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
+ 'taxes_id': [(6, 0, taxes)],
+ }
+
+ def make_po(self, cr, uid, ids, context=None):
+ """ Resolve the purchase from procurement, which may result in a new PO creation, a new PO line creation or a quantity change on existing PO line.
+ Note that some operations (as the PO creation) are made as SUPERUSER because the current user may not have rights to do it (mto product launched by a sale for example)
+
+ @return: dictionary giving for each procurement its related resolving PO line.
+ """
+ res = {}
+ company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
+ po_obj = self.pool.get('purchase.order')
+ po_line_obj = self.pool.get('purchase.order.line')
seq_obj = self.pool.get('ir.sequence')
+ pass_ids = []
+ linked_po_ids = []
+ sum_po_line_ids = []
for procurement in self.browse(cr, uid, ids, context=context):
- res_id = procurement.move_id.id
- partner = procurement.product_id.seller_id # Taken Main Supplier of Product of Procurement.
- seller_qty = procurement.product_id.seller_qty
- partner_id = partner.id
- address_id = partner_obj.address_get(cr, uid, [partner_id], ['delivery'])['delivery']
- pricelist_id = partner.property_product_pricelist_purchase.id
- uom_id = procurement.product_id.uom_po_id.id
-
- qty = uom_obj._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, uom_id)
- if seller_qty:
- qty = max(qty,seller_qty)
-
- price = pricelist_obj.price_get(cr, uid, [pricelist_id], procurement.product_id.id, qty, partner_id, {'uom': uom_id})[pricelist_id]
-
- schedule_date = self._get_purchase_schedule_date(cr, uid, procurement, company, context=context)
- purchase_date = self._get_purchase_order_date(cr, uid, procurement, company, schedule_date, context=context)
-
- #Passing partner_id to context for purchase order line integrity of Line name
- new_context = context.copy()
- new_context.update({'lang': partner.lang, 'partner_id': partner_id})
-
- product = prod_obj.browse(cr, uid, procurement.product_id.id, context=new_context)
- taxes_ids = procurement.product_id.supplier_taxes_id
- taxes = acc_pos_obj.map_tax(cr, uid, partner.property_account_position, taxes_ids)
-
- name = product.partner_ref
- if product.description_purchase:
- name += '\n'+ product.description_purchase
- line_vals = {
- 'name': name,
- 'product_qty': qty,
- 'product_id': procurement.product_id.id,
- 'product_uom': uom_id,
- 'price_unit': price or 0.0,
- 'date_planned': schedule_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
- 'move_dest_id': res_id,
- 'taxes_id': [(6,0,taxes)],
- }
- name = seq_obj.get(cr, uid, 'purchase.order') or _('PO: %s') % procurement.name
- po_vals = {
- 'name': name,
- 'origin': procurement.origin,
- 'partner_id': partner_id,
- 'location_id': procurement.location_id.id,
- 'warehouse_id': self._get_warehouse(procurement, company),
- 'pricelist_id': pricelist_id,
- 'date_order': purchase_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
- 'company_id': procurement.company_id.id,
- 'fiscal_position': partner.property_account_position and partner.property_account_position.id or False,
- 'payment_term_id': partner.property_supplier_payment_term.id or False,
- }
- res[procurement.id] = self.create_procurement_purchase_order(cr, uid, procurement, po_vals, line_vals, context=new_context)
- self.write(cr, uid, [procurement.id], {'state': 'running', 'purchase_id': res[procurement.id]})
- self.message_post(cr, uid, ids, body=_("Draft Purchase Order created"), context=context)
+ partner = self._get_product_supplier(cr, uid, procurement, context=context)
+ if not partner:
+ self.message_post(cr, uid, [procurement.id], _('There is no supplier associated to product %s') % (procurement.product_id.name))
+ res[procurement.id] = False
+ else:
+ schedule_date = self._get_purchase_schedule_date(cr, uid, procurement, company, context=context)
+ line_vals = self._get_po_line_values_from_proc(cr, uid, procurement, partner, company, schedule_date, context=context)
+ #look for any other draft PO for the same supplier, to attach the new line on instead of creating a new draft one
+ available_draft_po_ids = po_obj.search(cr, uid, [
+ ('partner_id', '=', partner.id), ('state', '=', 'draft'), ('picking_type_id', '=', procurement.rule_id.picking_type_id.id),
+ ('location_id', '=', procurement.location_id.id), ('company_id', '=', procurement.company_id.id), ('dest_address_id', '=', procurement.partner_dest_id.id)], context=context)
+ if available_draft_po_ids:
+ po_id = available_draft_po_ids[0]
+ #look for any other PO line in the selected PO with same product and UoM to sum quantities instead of creating a new po line
+ available_po_line_ids = po_line_obj.search(cr, uid, [('order_id', '=', po_id), ('product_id', '=', line_vals['product_id']), ('product_uom', '=', line_vals['product_uom'])], context=context)
+ if available_po_line_ids:
+ po_line = po_line_obj.browse(cr, uid, available_po_line_ids[0], context=context)
+ po_line_obj.write(cr, SUPERUSER_ID, po_line.id, {'product_qty': po_line.product_qty + line_vals['product_qty']}, context=context)
+ po_line_id = po_line.id
+ sum_po_line_ids.append(procurement.id)
+ else:
+ line_vals.update(order_id=po_id)
+ po_line_id = po_line_obj.create(cr, SUPERUSER_ID, line_vals, context=context)
+ linked_po_ids.append(procurement.id)
+ else:
+ purchase_date = self._get_purchase_order_date(cr, uid, procurement, company, schedule_date, context=context)
+ name = seq_obj.get(cr, uid, 'purchase.order') or _('PO: %s') % procurement.name
+ po_vals = {
+ 'name': name,
+ 'origin': procurement.origin,
+ 'partner_id': partner.id,
+ 'location_id': procurement.location_id.id,
+ 'picking_type_id': procurement.rule_id.picking_type_id.id,
+ 'pricelist_id': partner.property_product_pricelist_purchase.id,
+ 'date_order': purchase_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
+ 'company_id': procurement.company_id.id,
+ 'fiscal_position': partner.property_account_position and partner.property_account_position.id or False,
+ 'payment_term_id': partner.property_supplier_payment_term.id or False,
+ 'dest_address_id': procurement.partner_dest_id.id,
+ }
+ po_id = self.create_procurement_purchase_order(cr, SUPERUSER_ID, procurement, po_vals, line_vals, context=context)
+ po_line_id = po_obj.browse(cr, uid, po_id, context=context).order_line[0].id
+ pass_ids.append(procurement.id)
+ res[procurement.id] = po_line_id
+ self.write(cr, uid, [procurement.id], {'purchase_line_id': po_line_id}, context=context)
+ if pass_ids:
+ self.message_post(cr, uid, pass_ids, body=_("Draft Purchase Order created"), context=context)
+ if linked_po_ids:
+ self.message_post(cr, uid, linked_po_ids, body=_("Purchase line created and linked to an existing Purchase Order"), context=context)
+ if sum_po_line_ids:
+ self.message_post(cr, uid, sum_po_line_ids, body=_("Quantity added in existing Purchase Order Line"), context=context)
return res
- def _product_virtual_get(self, cr, uid, order_point):
- procurement = order_point.procurement_id
- if procurement and procurement.state != 'exception' and procurement.purchase_id and procurement.purchase_id.state in ('draft', 'confirmed'):
- return None
- return super(procurement_order, self)._product_virtual_get(cr, uid, order_point)
-
class mail_mail(osv.Model):
_name = 'mail.mail'
@@ -1274,7 +1348,9 @@ class mail_mail(osv.Model):
def _postprocess_sent_message(self, cr, uid, mail, context=None, mail_sent=True):
if mail_sent and mail.model == 'purchase.order':
- self.pool.get('purchase.order').signal_send_rfq(cr, uid, [mail.res_id])
+ obj = self.pool.get('purchase.order').browse(cr, uid, mail.res_id, context=context)
+ if obj.state == 'draft':
+ self.pool.get('purchase.order').signal_send_rfq(cr, uid, [mail.res_id])
return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context, mail_sent=mail_sent)
@@ -1364,4 +1440,15 @@ class account_invoice_line(osv.Model):
readonly=True),
}
+class product_product(osv.osv):
+ _inherit = "product.product"
+
+ def _get_buy_route(self, cr, uid, context=None):
+ buy_route = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'purchase', 'route_warehouse0_buy')[1]
+ return [buy_route]
+
+ _defaults = {
+ 'route_ids': _get_buy_route,
+ }
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/purchase/purchase_data.xml b/addons/purchase/purchase_data.xml
index afd9560e350..3c70629b675 100644
--- a/addons/purchase/purchase_data.xml
+++ b/addons/purchase/purchase_data.xml
@@ -42,12 +42,6 @@
- When you sell this service to a customer, a draft purchase order
- will be created in order to subcontract the job
- to
- .
-
-
- When you sell this product, OpenERP will trigger a draft
- purchase order to buy the required quantities to the supplier.
- The delivery order will be ready after having received the
- products.
-
-
-
-
-
product.search.purchase.formproduct.product
diff --git a/addons/purchase/purchase_workflow.xml b/addons/purchase/purchase_workflow.xml
index ec4632c45a9..810c0a74064 100644
--- a/addons/purchase/purchase_workflow.xml
+++ b/addons/purchase/purchase_workflow.xml
@@ -19,6 +19,12 @@
functionwrite({'state':'sent'})
+
+
+ bid
+ function
+ wkf_bid_received()
+ confirmed
@@ -31,7 +37,7 @@
cancelfunctionTrue
- write({'state':'cancel'})
+ action_cancel()
@@ -73,21 +79,22 @@
picking
- subflow
-
+ functionaction_picking_create()
+
+
+
picking_donepicking_done()function
- subflow.delivery_donedone
- write({'state':'done'})
+ wkf_po_done()functionTrueAND
@@ -103,16 +110,26 @@
send_rfq
-
-
+
+ purchase_confirm
+
+
+
+ bid_received
+ purchase_cancel
+
+
+
+ purchase_cancel
+
@@ -172,7 +189,7 @@
- subflow.cancel
+ picking_cancel
@@ -182,7 +199,8 @@
- subflow.done
+ picking_done
+
@@ -203,32 +221,5 @@
invoiced
-
-
-
- buy
- subflow
-
- action_po_assign()
-
-
-
-
-
- check_buy() and check_supplier_info()
-
-
-
-
-
- subflow.delivery_done
-
-
-
-
-
- subflow.cancel
-
-
diff --git a/addons/purchase/report/purchase_report.py b/addons/purchase/report/purchase_report.py
index ada1d83cdaf..2483f79410c 100644
--- a/addons/purchase/report/purchase_report.py
+++ b/addons/purchase/report/purchase_report.py
@@ -40,7 +40,7 @@ class purchase_report(osv.osv):
('done', 'Done'),
('cancel', 'Cancelled')],'Order Status', readonly=True),
'product_id':fields.many2one('product.product', 'Product', readonly=True),
- 'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', readonly=True),
+ 'picking_type_id': fields.many2one('stock.warehouse', 'Warehouse', readonly=True),
'location_id': fields.many2one('stock.location', 'Destination', readonly=True),
'partner_id':fields.many2one('res.partner', 'Supplier', readonly=True),
'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', readonly=True),
@@ -75,7 +75,7 @@ class purchase_report(osv.osv):
s.dest_address_id,
s.pricelist_id,
s.validator,
- s.warehouse_id as warehouse_id,
+ s.picking_type_id as picking_type_id,
s.partner_id as partner_id,
s.create_uid as user_id,
s.company_id as company_id,
@@ -88,13 +88,14 @@ class purchase_report(osv.osv):
extract(epoch from age(l.date_planned,s.date_order))/(24*60*60)::decimal(16,2) as delay_pass,
count(*) as nbr,
sum(l.price_unit*l.product_qty)::decimal(16,2) as price_total,
- avg(100.0 * (l.price_unit*l.product_qty) / NULLIF(t.standard_price*l.product_qty/u.factor*u2.factor, 0.0))::decimal(16,2) as negociation,
- sum(t.standard_price*l.product_qty/u.factor*u2.factor)::decimal(16,2) as price_standard,
+ avg(100.0 * (l.price_unit*l.product_qty) / NULLIF(ip.value_float*l.product_qty/u.factor*u2.factor, 0.0))::decimal(16,2) as negociation,
+ sum(ip.value_float*l.product_qty/u.factor*u2.factor)::decimal(16,2) as price_standard,
(sum(l.product_qty*l.price_unit)/NULLIF(sum(l.product_qty/u.factor*u2.factor),0.0))::decimal(16,2) as price_average
from purchase_order_line l
join purchase_order s on (l.order_id=s.id)
left join product_product p on (l.product_id=p.id)
left join product_template t on (p.product_tmpl_id=t.id)
+ LEFT JOIN ir_property ip ON (ip.name='standard_price' AND ip.res_id=CONCAT('product.template,',t.id) AND ip.company_id=s.company_id)
left join product_uom u on (u.id=l.product_uom)
left join product_uom u2 on (u2.id=t.uom_id)
group by
@@ -115,7 +116,7 @@ class purchase_report(osv.osv):
t.categ_id,
s.date_order,
s.state,
- s.warehouse_id,
+ s.picking_type_id,
u.uom_type,
u.category_id,
t.uom_id,
diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml
index 50b22f40a05..fc171e42efa 100644
--- a/addons/purchase/report/purchase_report_view.xml
+++ b/addons/purchase/report/purchase_report_view.xml
@@ -30,7 +30,7 @@
-
+
@@ -43,7 +43,7 @@
-
+
@@ -70,7 +70,7 @@
groups="purchase.group_purchase_manager"/>
-
+
diff --git a/addons/purchase/res_config.py b/addons/purchase/res_config.py
index 0d293631a1a..50525b165b6 100644
--- a/addons/purchase/res_config.py
+++ b/addons/purchase/res_config.py
@@ -39,8 +39,8 @@ class purchase_config_settings(osv.osv_memory):
'group_uom':fields.boolean("Manage different units of measure for products",
implied_group='product.group_uom',
help="""Allows you to select and maintain different units of measure for products."""),
- 'group_costing_method':fields.boolean("Compute product cost price based on average cost",
- implied_group='product.group_costing_method',
+ 'group_costing_method':fields.boolean("Use 'Real Price' or 'Average' costing methods.",
+ implied_group='stock_account.group_inventory_valuation',
help="""Allows you to compute product cost price based on average cost."""),
'module_warning': fields.boolean("Alerts by products or supplier",
help='Allow to configure notification on products and trigger them when a user wants to purchase a given product or a given supplier.\n'
@@ -49,16 +49,23 @@ class purchase_config_settings(osv.osv_memory):
'module_purchase_double_validation': fields.boolean("Force two levels of approvals",
help='Provide a double validation mechanism for purchases exceeding minimum amount.\n'
'-This installs the module purchase_double_validation.'),
- 'module_purchase_requisition': fields.boolean("Manage purchase requisitions",
- help='Purchase Requisitions are used when you want to request quotations from several suppliers for a given set of products.\n'
- 'You can configure per product if you directly do a Request for Quotation '
- 'to one supplier or if you want a purchase requisition to negotiate with several suppliers.'),
+ 'module_purchase_requisition': fields.boolean("Manage calls for bids",
+ help="""Calls for bids are used when you want to generate requests for quotations to several suppliers for a given set of products.
+ You can configure per product if you directly do a Request for Quotation
+ to one supplier or if you want a Call for Bids to compare offers from several suppliers."""),
+ 'group_advance_purchase_requisition': fields.boolean("Choose from several bids in a call for bids",
+ implied_group='purchase.group_advance_bidding',
+ help="""In the process of a public bidding, you can compare the bid lines and choose for each requested product from which bid you
+ buy which quantity"""),
'module_purchase_analytic_plans': fields.boolean('Use multiple analytic accounts on purchase orders',
help='Allows the user to maintain several analysis plans. These let you split lines on a purchase order between several accounts and analytic plans.\n'
'-This installs the module purchase_analytic_plans.'),
'group_analytic_account_for_purchases': fields.boolean('Analytic accounting for purchases',
implied_group='purchase.group_analytic_accounting',
help="Allows you to specify an analytic account on purchase orders."),
+ 'module_stock_dropshipping': fields.boolean("Manage dropshipping",
+ help='\nCreates the dropship route and add more complex tests'
+ '-This installs the module stock_dropshipping.'),
}
_defaults = {
diff --git a/addons/purchase/res_config_view.xml b/addons/purchase/res_config_view.xml
index 276dc892392..4eaba80c306 100644
--- a/addons/purchase/res_config_view.xml
+++ b/addons/purchase/res_config_view.xml
@@ -66,6 +66,10 @@
+
+
+
+
@@ -76,6 +80,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/purchase/security/ir.model.access.csv b/addons/purchase/security/ir.model.access.csv
index 3c8d072c536..2b8f68c64e0 100644
--- a/addons/purchase/security/ir.model.access.csv
+++ b/addons/purchase/security/ir.model.access.csv
@@ -39,10 +39,6 @@ access_account_move,account.move,account.model_account_move,group_purchase_user,
access_account_move_line,account.move.line,account.model_account_move_line,group_purchase_user,1,0,0,0
access_account_analytic_line,account.analytic.line,account.model_account_analytic_line,group_purchase_user,1,0,0,0
access_account_move_reconcile,account.move.reconcile,account.model_account_move_reconcile,group_purchase_user,1,0,0,0
-access_report_stock_move,report.stock.move.manager,stock.model_report_stock_move,group_purchase_manager,1,0,0,0
-access_report_stock_move_user,report.stock.move.user,stock.model_report_stock_move,group_purchase_user,1,0,0,0
-access_stock_production_lot_user,stock.production.lot user,stock.model_stock_production_lot,group_purchase_user,1,1,1,0
-access_stock_production_lot_revision,stock.production.lot.revision,stock.model_stock_production_lot_revision,group_purchase_user,1,1,1,0
access_res_partner_purchase_manager,res.partner.purchase.manager,base.model_res_partner,group_purchase_manager,1,1,1,0
access_product_uom_categ_purchase_manager,product.uom.categ purchase_manager,product.model_product_uom_categ,purchase.group_purchase_manager,1,1,1,1
access_product_uom_purchase_manager,product.uom purchase_manager,product.model_product_uom,purchase.group_purchase_manager,1,1,1,1
@@ -61,7 +57,8 @@ access_product_pricelist_version_purchase_manager,product.pricelist.version purc
access_product_pricelist_item_purchase_manager,product.pricelist.item purchase_manager,product.model_product_pricelist_item,purchase.group_purchase_manager,1,1,1,1
access_account_account_purchase_manager,account.account purchase manager,account.model_account_account,purchase.group_purchase_manager,1,0,0,0
access_account_journal_purchase_manager,account.journal purchase manager,account.model_account_journal,purchase.group_purchase_manager,1,0,0,0
-access_stock_tracking_purchase_user,stock.tracking purchase.user,stock.model_stock_tracking,purchase.group_purchase_user,1,1,1,0
access_stock_location_purchase_manager,stock.location purchase manager,stock.model_stock_location,purchase.group_purchase_manager,1,0,0,0
-access_stock_warehouse_orderpoint_manager,stock.warehouse.orderpoint,procurement.model_stock_warehouse_orderpoint,purchase.group_purchase_manager,1,0,0,0
-access_stock_warehouse_orderpoint_manager,stock.warehouse.orderpoint,procurement.model_stock_warehouse_orderpoint,group_purchase_user,1,0,0,0
+access_stock_warehouse_orderpoint_manager,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,purchase.group_purchase_manager,1,0,0,0
+access_stock_warehouse_orderpoint_manager,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,group_purchase_user,1,0,0,0
+access_product_price_history_purchase_user,prices.history purchase user,product.model_product_price_history,purchase.group_purchase_user,1,0,0,0
+access_product_price_history_purchase_manager,prices.history purchase manager,product.model_product_price_history,purchase.group_purchase_manager,1,1,1,1
diff --git a/addons/purchase/security/purchase_security.xml b/addons/purchase/security/purchase_security.xml
index 4e1cf8b6107..d8b2d320fb1 100644
--- a/addons/purchase/security/purchase_security.xml
+++ b/addons/purchase/security/purchase_security.xml
@@ -21,6 +21,11 @@
+
+ Advance bidding process
+
+
+
diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py
index 2d5dea89d35..69d970b7be6 100644
--- a/addons/purchase/stock.py
+++ b/addons/purchase/stock.py
@@ -20,6 +20,7 @@
##############################################################################
from openerp.osv import fields, osv
+from openerp.tools.translate import _
class stock_move(osv.osv):
_inherit = 'stock.move'
@@ -29,116 +30,145 @@ class stock_move(osv.osv):
readonly=True),
}
+ def write(self, cr, uid, ids, vals, context=None):
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ res = super(stock_move, self).write(cr, uid, ids, vals, context=context)
+ from openerp import workflow
+ if vals.get('state') in ['done', 'cancel']:
+ for move in self.browse(cr, uid, ids, context=context):
+ if move.purchase_line_id and move.purchase_line_id.order_id:
+ order_id = move.purchase_line_id.order_id.id
+ if self.pool.get('purchase.order').test_moves_done(cr, uid, [order_id], context=context):
+ workflow.trg_validate(uid, 'purchase.order', order_id, 'picking_done', cr)
+ if self.pool.get('purchase.order').test_moves_except(cr, uid, [order_id], context=context):
+ workflow.trg_validate(uid, 'purchase.order', order_id, 'picking_cancel', cr)
+ return res
+
+ def copy(self, cr, uid, id, default=None, context=None):
+ if not default:
+ default = {}
+ if not default.get('split_from'):
+ #we don't want to propagate the link to the purchase order line except in case of move split
+ default.update({
+ 'purchase_line_id': False,
+ })
+ return super(stock_move, self).copy(cr, uid, id, default, context)
-#
-# Inherit of picking to add the link to the PO
-#
class stock_picking(osv.osv):
_inherit = 'stock.picking'
+
+ def _get_to_invoice(self, cr, uid, ids, name, args, context=None):
+ res = {}
+ for picking in self.browse(cr, uid, ids, context=context):
+ res[picking.id] = False
+ for move in picking.move_lines:
+ if move.purchase_line_id and move.purchase_line_id.order_id.invoice_method == 'picking':
+ if not move.move_orig_ids:
+ res[picking.id] = True
+ return res
+
+ def _get_picking_to_recompute(self, cr, uid, ids, context=None):
+ picking_ids = set()
+ for move in self.pool.get('stock.move').browse(cr, uid, ids, context=context):
+ if move.picking_id and move.purchase_line_id:
+ picking_ids.add(move.picking_id.id)
+ return list(picking_ids)
+
_columns = {
- 'purchase_id': fields.many2one('purchase.order', 'Purchase Order',
- ondelete='set null', select=True),
+ 'reception_to_invoice': fields.function(_get_to_invoice, type='boolean', string='Invoiceable on incoming shipment?',
+ help='Does the picking contains some moves related to a purchase order invoiceable on the reception?',
+ store={
+ 'stock.move': (_get_picking_to_recompute, ['purchase_line_id', 'picking_id'], 10),
+ }),
}
+
+class stock_warehouse(osv.osv):
+ _inherit = 'stock.warehouse'
+ _columns = {
+ 'buy_to_resupply': fields.boolean('Purchase to resupply this warehouse',
+ help="When products are bought, they can be delivered to this warehouse"),
+ 'buy_pull_id': fields.many2one('procurement.rule', 'BUY rule'),
+ }
_defaults = {
- 'purchase_id': False,
+ 'buy_to_resupply': True,
}
- def _get_partner_to_invoice(self, cr, uid, picking, context=None):
- """ Inherit the original function of the 'stock' module
- We select the partner of the sale order as the partner of the customer invoice
- """
- if picking.purchase_id:
- return picking.purchase_id.partner_id
- return super(stock_picking, self)._get_partner_to_invoice(cr, uid, picking, context=context)
+ def _get_buy_pull_rule(self, cr, uid, warehouse, context=None):
+ route_obj = self.pool.get('stock.location.route')
+ data_obj = self.pool.get('ir.model.data')
+ try:
+ buy_route_id = data_obj.get_object_reference(cr, uid, 'stock', 'route_warehouse0_buy')[1]
+ except:
+ buy_route_id = route_obj.search(cr, uid, [('name', 'like', _('Buy'))], context=context)
+ buy_route_id = buy_route_id and buy_route_id[0] or False
+ if not buy_route_id:
+ raise osv.except_osv(_('Error!'), _('Can\'t find any generic Buy route.'))
- def _prepare_invoice(self, cr, uid, picking, partner, inv_type, journal_id, context=None):
- """ Inherit the original function of the 'stock' module in order to override some
- values if the picking has been generated by a purchase order
- """
- invoice_vals = super(stock_picking, self)._prepare_invoice(cr, uid, picking, partner, inv_type, journal_id, context=context)
- if picking.purchase_id:
- invoice_vals['fiscal_position'] = picking.purchase_id.fiscal_position.id
- invoice_vals['payment_term'] = picking.purchase_id.payment_term_id.id
- # Fill the date_due on the invoice, for usability purposes.
- # Note that when an invoice with a payment term is validated, the
- # date_due is always recomputed from the invoice date and the payment
- # term.
- if picking.purchase_id.payment_term_id and context.get('date_inv'):
- invoice_vals['date_due'] = self.pool.get('account.invoice').onchange_payment_term_date_invoice(cr, uid, [], picking.purchase_id.payment_term_id.id, context.get('date_inv'))['value'].get('date_due')
- return invoice_vals
+ return {
+ 'name': self._format_routename(cr, uid, warehouse, _(' Buy'), context=context),
+ 'location_id': warehouse.in_type_id.default_location_dest_id.id,
+ 'route_id': buy_route_id,
+ 'action': 'buy',
+ 'picking_type_id': warehouse.in_type_id.id,
+ 'propagate': False,
+ 'warehouse_id': warehouse.id,
+ }
- def get_currency_id(self, cursor, user, picking):
- if picking.purchase_id:
- return picking.purchase_id.currency_id.id
- else:
- return super(stock_picking, self).get_currency_id(cursor, user, picking)
+ def create_routes(self, cr, uid, ids, warehouse, context=None):
+ pull_obj = self.pool.get('procurement.rule')
+ res = super(stock_warehouse, self).create_routes(cr, uid, ids, warehouse, context=context)
+ if warehouse.buy_to_resupply:
+ buy_pull_vals = self._get_buy_pull_rule(cr, uid, warehouse, context=context)
+ buy_pull_id = pull_obj.create(cr, uid, buy_pull_vals, context=context)
+ res['buy_pull_id'] = buy_pull_id
+ return res
- def _get_comment_invoice(self, cursor, user, picking):
- if picking.purchase_id and picking.purchase_id.notes:
- if picking.note:
- return picking.note + '\n' + picking.purchase_id.notes
+ def write(self, cr, uid, ids, vals, context=None):
+ pull_obj = self.pool.get('procurement.rule')
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+
+ if 'buy_to_resupply' in vals:
+ if vals.get("buy_to_resupply"):
+ for warehouse in self.browse(cr, uid, ids, context=context):
+ if not warehouse.buy_pull_id:
+ buy_pull_vals = self._get_buy_pull_rule(cr, uid, warehouse, context=context)
+ buy_pull_id = pull_obj.create(cr, uid, buy_pull_vals, context=context)
+ vals['buy_pull_id'] = buy_pull_id
else:
- return picking.purchase_id.notes
- return super(stock_picking, self)._get_comment_invoice(cursor, user, picking)
+ for warehouse in self.browse(cr, uid, ids, context=context):
+ if warehouse.buy_pull_id:
+ buy_pull_id = pull_obj.unlink(cr, uid, warehouse.buy_pull_id.id, context=context)
+ return super(stock_warehouse, self).write(cr, uid, ids, vals, context=None)
- def _get_price_unit_invoice(self, cursor, user, move_line, type):
- if move_line.purchase_line_id:
- if move_line.purchase_line_id.order_id.invoice_method == 'picking':
- return move_line.price_unit
- else:
- return move_line.purchase_line_id.price_unit
- return super(stock_picking, self)._get_price_unit_invoice(cursor, user, move_line, type)
+ def get_all_routes_for_wh(self, cr, uid, warehouse, context=None):
+ all_routes = super(stock_warehouse, self).get_all_routes_for_wh(cr, uid, warehouse, context=context)
+ if warehouse.buy_to_resupply and warehouse.buy_pull_id and warehouse.buy_pull_id.route_id:
+ all_routes += [warehouse.buy_pull_id.route_id.id]
+ return all_routes
- def _get_discount_invoice(self, cursor, user, move_line):
- if move_line.purchase_line_id:
- return 0.0
- return super(stock_picking, self)._get_discount_invoice(cursor, user, move_line)
+ def _get_all_products_to_resupply(self, cr, uid, warehouse, context=None):
+ res = super(stock_warehouse, self)._get_all_products_to_resupply(cr, uid, warehouse, context=context)
+ if warehouse.buy_pull_id and warehouse.buy_pull_id.route_id:
+ for product_id in res:
+ for route in self.pool.get('product.product').browse(cr, uid, product_id, context=context).route_ids:
+ if route.id == warehouse.buy_pull_id.route_id.id:
+ res.remove(product_id)
+ break
+ return res
- def _get_taxes_invoice(self, cursor, user, move_line, type):
- if move_line.purchase_line_id:
- return [x.id for x in move_line.purchase_line_id.taxes_id]
- return super(stock_picking, self)._get_taxes_invoice(cursor, user, move_line, type)
+ def _handle_renaming(self, cr, uid, warehouse, name, code, context=None):
+ res = super(stock_warehouse, self)._handle_renaming(cr, uid, warehouse, name, code, context=context)
+ pull_obj = self.pool.get('procurement.rule')
+ #change the buy pull rule name
+ if warehouse.buy_pull_id:
+ pull_obj.write(cr, uid, warehouse.buy_pull_id.id, {'name': warehouse.buy_pull_id.name.replace(warehouse.name, name, 1)}, context=context)
+ return res
- def _get_account_analytic_invoice(self, cursor, user, picking, move_line):
- if picking.purchase_id and move_line.purchase_line_id:
- return move_line.purchase_line_id.account_analytic_id.id
- return super(stock_picking, self)._get_account_analytic_invoice(cursor, user, picking, move_line)
-
- def _invoice_line_hook(self, cursor, user, move_line, invoice_line_id):
- if move_line.purchase_line_id:
- invoice_line_obj = self.pool.get('account.invoice.line')
- purchase_line_obj = self.pool.get('purchase.order.line')
- purchase_line_obj.write(cursor, user, [move_line.purchase_line_id.id], {
- 'invoice_lines': [(4, invoice_line_id)],
- })
- return super(stock_picking, self)._invoice_line_hook(cursor, user, move_line, invoice_line_id)
-
- def _invoice_hook(self, cursor, user, picking, invoice_id):
- purchase_obj = self.pool.get('purchase.order')
- if picking.purchase_id:
- purchase_obj.write(cursor, user, [picking.purchase_id.id], {'invoice_ids': [(4, invoice_id)]})
- return super(stock_picking, self)._invoice_hook(cursor, user, picking, invoice_id)
-
-class stock_partial_picking(osv.osv_memory):
- _inherit = 'stock.partial.picking'
-
- # Overridden to inject the purchase price as true 'cost price' when processing
- # incoming pickings.
- def _product_cost_for_average_update(self, cr, uid, move):
- if move.picking_id.purchase_id:
- return {'cost': move.purchase_line_id.price_unit,
- 'currency': move.picking_id.purchase_id.currency_id.id}
- return super(stock_partial_picking, self)._product_cost_for_average_update(cr, uid, move)
-
-# Redefinition of the new field in order to update the model stock.picking.in in the orm
-# FIXME: this is a temporary workaround because of a framework bug (ref: lp996816). It should be removed as soon as
-# the bug is fixed
-class stock_picking_in(osv.osv):
- _inherit = 'stock.picking.in'
- _columns = {
- 'purchase_id': fields.many2one('purchase.order', 'Purchase Order',
- ondelete='set null', select=True),
- 'warehouse_id': fields.related('purchase_id', 'warehouse_id', type='many2one', relation='stock.warehouse', string='Destination Warehouse', readonly=True),
- }
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+ def change_route(self, cr, uid, ids, warehouse, new_reception_step=False, new_delivery_step=False, context=None):
+ res = super(stock_warehouse, self).change_route(cr, uid, ids, warehouse, new_reception_step=new_reception_step, new_delivery_step=new_delivery_step, context=context)
+ if warehouse.in_type_id.default_location_dest_id != warehouse.buy_pull_id.location_id:
+ self.pool.get('procurement.rule').write(cr, uid, warehouse.buy_pull_id.id, {'location_id': warehouse.in_type_id.default_location_dest_id.id}, context=context)
+ return res
diff --git a/addons/purchase/stock_view.xml b/addons/purchase/stock_view.xml
index 33972c90fb6..2a514535714 100644
--- a/addons/purchase/stock_view.xml
+++ b/addons/purchase/stock_view.xml
@@ -12,27 +12,13 @@
-
- Incoming Picking Inherited
- stock.picking.in
-
-
-
-
-
-
-
-
-
-
-
stock.picking.in.search.inherit
- stock.picking.in
-
+ stock.picking
+
-
+
@@ -62,16 +48,26 @@
+
+
+ Stock Warehouse Inherited
+ stock.warehouse
+
+
+
+
+
+
+
-
+ On Incoming Shipments
- stock.picking.in
+ stock.pickingir.actions.act_windowformtree,form,calendar
- [('type','=','in'),('purchase_id.invoice_method','=','picking')]
- {"default_type": "in", "contact_display": "partner_address", "search_default_done": 1, "search_default_to_invoice": 1}
-
+ {"default_type": "in", "contact_display": "partner_address", "search_default_done": 1, "search_default_reception_to_invoice": 1}
+
Click to create a new incoming shipment.
@@ -84,8 +80,8 @@
-
diff --git a/addons/purchase/test/average_price.yml b/addons/purchase/test/average_price.yml
new file mode 100644
index 00000000000..5d5d6e33943
--- /dev/null
+++ b/addons/purchase/test/average_price.yml
@@ -0,0 +1,135 @@
+-
+ Set a product as using average price.
+-
+ !record {model: product.product, id: product_average_icecream}:
+ default_code: AVG
+ name: Average Ice Cream
+ type: product
+ categ_id: product.product_category_1
+ uom_id: product.product_uom_kgm
+ uom_po_id: product.product_uom_kgm
+ valuation: real_time
+ cost_method: average
+ property_stock_account_input: account.o_expense
+ property_stock_account_output: account.o_income
+ description: Average Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
+-
+ I create a draft Purchase Order for first incoming shipment for 10 pieces at 60€
+-
+ !record {model: purchase.order, id: purchase_order_average1}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_average_icecream
+ product_qty: 10.0
+ product_uom: product.product_uom_kgm
+ price_unit: 60.0
+ name: 'Average Ice Cream'
+-
+ I confirm the first purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_average1}
+-
+ I check the "Approved" status of purchase order 1
+-
+ !assert {model: purchase.order, id: purchase_order_average1}:
+ - state == 'approved'
+-
+ Process the reception of purchase order 1
+-
+ !python {model: stock.picking}: |
+ pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_average1")).picking_ids
+ self.do_transfer(cr, uid, [pick_ids[0].id])
+-
+ Check the standard price of the product (average icecream).
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref("product_average_icecream"))
+ assert product.qty_available == 10.0, 'Wrong quantity in stock after first reception'
+ assert product.standard_price == 60.0, 'Standard price should be the price of the first reception!'
+-
+ I create a draft Purchase Order for second incoming shipment for 30 pieces at 80€
+-
+ !record {model: purchase.order, id: purchase_order_average2}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_average_icecream
+ product_qty: 30.0
+ product_uom: product.product_uom_kgm
+ price_unit: 80.0
+ name: 'Average Ice Cream'
+-
+ I confirm the second purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_average2}
+-
+ Process the reception of purchase order 2
+-
+ !python {model: stock.picking}: |
+ pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_average2")).picking_ids
+ self.do_transfer(cr, uid, [pick_ids[0].id])
+-
+ Check the standard price
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_average_icecream")).standard_price == 75.0, 'After second reception, we should have an average price of 75.0 on the product'
+-
+ Create picking to send some goods
+-
+ !record {model: stock.picking, id: outgoing_average_shipment}:
+ picking_type_id: stock.picking_type_out
+-
+ Create move for picking
+-
+ !record {model: stock.move, id: outgoing_shipment_average_icecream}:
+ picking_id: outgoing_average_shipment
+ product_id: product_average_icecream
+ product_uom: product.product_uom_kgm
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+ product_uom_qty: 20.0
+-
+ I assign this outgoing shipment and process the delivery
+-
+ !python {model: stock.picking}: |
+ self.action_assign(cr, uid, [ref("outgoing_average_shipment")])
+ self.do_transfer(cr, uid, [ref("outgoing_average_shipment")])
+-
+ Check the standard price (60 * 10 + 30 * 80) / 40 = 75.0 did not change
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_average_icecream")).standard_price == 75.0, 'Standard price should not have changed with outgoing picking!'
+ assert self.browse(cr, uid, ref("product_average_icecream")).qty_available == 20.0, 'Pieces were not picked correctly as the quantity on hand is wrong'
+-
+ Make a new purchase order with 500 g Average Ice Cream at a price of 0.2€/g
+-
+ !record {model: purchase.order, id: purchase_order_average3}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_average_icecream
+ product_qty: 500.0
+ product_uom: product.product_uom_gram
+ price_unit: 0.2
+ name: 'Average Ice Cream'
+-
+ I confirm the first purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_average3}
+-
+ Process the reception of purchase order 3 in grams
+-
+ !python {model: stock.picking}: |
+ pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_average3")).picking_ids
+ self.do_transfer(cr, uid, [pick_ids[0].id])
+-
+ Check price is (75.0*20 + 200*0.5) / 20.5 = 78.04878
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref("product_average_icecream"))
+ assert product.qty_available == 20.5, 'Reception of purchase order in grams leads to wrong quantity in stock'
+ assert round(self.browse(cr, uid, ref("product_average_icecream")).standard_price, 2) == 78.05, 'Standard price as average price of third reception with other UoM incorrect! Got %s instead of 78.05' % (round(self.browse(cr, uid, ref("product_average_icecream")).standard_price, 2),)
diff --git a/addons/purchase/test/costmethodchange.yml b/addons/purchase/test/costmethodchange.yml
new file mode 100644
index 00000000000..f6b79587985
--- /dev/null
+++ b/addons/purchase/test/costmethodchange.yml
@@ -0,0 +1,142 @@
+-
+ Set a product as using average price.
+-
+ !record {model: product.product, id: product_variable_icecream}:
+ default_code: AVG
+ name: Variable Ice Cream
+ type: product
+ categ_id: product.product_category_1
+ uom_id: product.product_uom_kgm
+ uom_po_id: product.product_uom_kgm
+ procure_method: make_to_stock
+ valuation: real_time
+ cost_method: average
+ property_stock_account_input: account.o_expense
+ property_stock_account_output: account.o_income
+ description: Average Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
+-
+ I create a draft Purchase Order for first incoming shipment for 10 pieces at 60€
+-
+ !record {model: purchase.order, id: purchase_order_variable1}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_variable_icecream
+ product_qty: 10.0
+ product_uom: product.product_uom_categ_kgm
+ price_unit: 60.0
+ name: 'Average Ice Cream'
+-
+ I create a draft Purchase Order for second incoming shipment for 30 pieces at 80€
+-
+ !record {model: purchase.order, id: purchase_order_variable2}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_variable_icecream
+ product_qty: 30.0
+ product_uom: product.product_uom_categ_kgm
+ price_unit: 80.0
+ name: 'Average Ice Cream'
+-
+ I confirm the first purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_variable1}
+-
+ I confirm the second purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_variable2}
+-
+ I check the "Approved" status of purchase order 1
+-
+ !assert {model: purchase.order, id: purchase_order_variable1}:
+ - state == 'approved'
+-
+ Process the reception of purchase order 1
+-
+ !python {model: stock.partial.picking}: |
+ pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_variable1")).picking_ids
+ partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick_ids[0].id]})
+ self.do_transfer(cr, uid, [partial_id])
+-
+ Check the standard price of the product (variable icecream).
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref("product_variable_icecream"))
+ assert product.qty_available == 10.0, 'Wrong quantity in stock after first reception'
+ assert product.standard_price == 60.0, 'Standard price should be the price of the first reception!'
+-
+ Process the reception of purchase order 2
+-
+ !python {model: stock.partial.picking}: |
+ pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_variable2")).picking_ids
+ partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick_ids[0].id]})
+ self.do_transfer(cr, uid, [partial_id])
+-
+ Check the standard price and change the product's cost method towards fifo
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_variable_icecream")).standard_price == 75.0, 'After second reception, we should have an average price of 75.0 on the product'
+ self.write(cr, uid, [ref("product_variable_icecream")], {'cost_method': 'real'}, context=context)
+-
+ Create picking to send some goods
+-
+ !record {model: stock.picking, id: outgoing_variable_shipment}:
+ type: out
+-
+ Create move for picking
+-
+ !record {model: stock.move, id: outgoing_shipment_variable_icecream}:
+ picking_id: outgoing_variable_shipment
+ product_id: product_variable_icecream
+ product_uom: product.product_uom_kgm
+ product_qty: 20.0
+ type: out
+-
+ I confirm outgoing shipment of 20 kg of Variable Ice Cream.
+-
+ !workflow {model: stock.picking, action: button_confirm, ref: outgoing_variable_shipment}
+-
+ Process the delivery of the outgoing shipment
+-
+ !python {model: stock.partial.picking}: |
+ partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [ref("outgoing_variable_shipment")], 'default_type':'out'})
+ self.do_transfer(cr, uid, [partial_id])
+-
+ Check the standard price (60 * 10 + 30 * 80) / 40 = 75.0 did not change
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_variable_icecream")).standard_price == 75.0, 'Standard price should not have changed with outgoing picking!'
+ assert self.browse(cr, uid, ref("product_variable_icecream")).qty_available == 20.0, 'Pieces were not picked correctly as the quantity on hand is wrong'
+-
+ I create a draft Purchase Order for third incoming shipment for 20 pieces at 60 euro
+-
+ !record {model: purchase.order, id: purchase_order_variable3}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_variable_icecream
+ product_qty: 20.0
+ product_uom: product.product_uom_categ_kgm
+ price_unit: 60.0
+ name: 'Variable Ice Cream'
+-
+ I confirm this third purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_variable3}
+-
+ Process the reception of purchase order 3
+-
+ !python {model: stock.partial.picking}: |
+ pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_variable3")).picking_ids
+ partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick_ids[0].id]})
+ self.do_transfer(cr, uid, [partial_id])
+-
+ Change the cost method back to average and check price on product changed back to 70.0 = (20*60 + 10*60 + 30*80) / 60
+-
+ !python {model: product.product}: |
+ self.write(cr, uid, [ref("product_variable_icecream")], {'cost_method': 'average'}, context=context)
+ assert self.browse(cr, uid, ref("product_variable_icecream")).standard_price == 70.0, 'After third reception and changing to average again, we should have an average price of 70.0 on the product'
diff --git a/addons/purchase/test/fifo_price.yml b/addons/purchase/test/fifo_price.yml
new file mode 100644
index 00000000000..07bcd4f3070
--- /dev/null
+++ b/addons/purchase/test/fifo_price.yml
@@ -0,0 +1,385 @@
+-
+ Set a product as using fifo price
+-
+ !record {model: product.product, id: product_fifo_icecream}:
+ default_code: FIFO
+ name: FIFO Ice Cream
+ type: product
+ categ_id: product.product_category_1
+ list_price: 100.0
+ standard_price: 70.0
+ uom_id: product.product_uom_kgm
+ uom_po_id: product.product_uom_kgm
+ cost_method: real
+ valuation: real_time
+ property_stock_account_input: account.o_expense
+ property_stock_account_output: account.o_income
+ description: FIFO Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
+-
+ I create a draft Purchase Order for first in move for 10 kg at 50 euro
+-
+ !record {model: purchase.order, id: purchase_order_fifo1}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_fifo_icecream
+ product_qty: 10.0
+ product_uom: product.product_uom_kgm
+ price_unit: 50.0
+ name: 'FIFO Ice Cream'
+-
+ I confirm the first purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fifo1}
+-
+ I check the "Approved" status of purchase order 1
+-
+ !assert {model: purchase.order, id: purchase_order_fifo1}:
+ - state == 'approved'
+-
+ Process the reception of purchase order 1 and set date
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fifo1")).picking_ids[0]
+ picking_obj.do_transfer(context=context)
+-
+ Check the standard price of the product (fifo icecream), that should have not changed because the standard price is supposed to be updated only when goods are going out of the stock
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_fifo_icecream")).standard_price == 70.0, 'Standard price should not have changed!'
+-
+ I create a draft Purchase Order for second shipment for 30 kg at 80 euro
+-
+ !record {model: purchase.order, id: purchase_order_fifo2}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_fifo_icecream
+ product_qty: 30.0
+ product_uom: product.product_uom_kgm
+ price_unit: 80.0
+ name: 'FIFO Ice Cream'
+-
+ I confirm the second purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fifo2}
+-
+ Process the reception of purchase order 2
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fifo2")).picking_ids[0]
+ picking_obj.do_transfer(context=context)
+-
+ Check the standard price of the product, that should have not changed because the standard price is supposed to be updated only when goods are going out of the stock
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_fifo_icecream")).standard_price == 70.0, 'Standard price as fifo price of second reception incorrect!'
+-
+ Let us send some goods
+-
+ !record {model: stock.picking, id: outgoing_fifo_shipment}:
+ picking_type_id: stock.picking_type_out
+-
+ Picking needs movement from stock
+-
+ !record {model: stock.move, id: outgoing_shipment_fifo_icecream}:
+ picking_id: outgoing_fifo_shipment
+ product_id: product_fifo_icecream
+ product_uom: product.product_uom_kgm
+ product_uom_qty: 20.0
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+ picking_type_id: stock.picking_type_out
+-
+ I assign this outgoing shipment
+-
+ !python {model: stock.picking}: |
+ self.action_assign(cr, uid, [ref("outgoing_fifo_shipment")])
+-
+ Process the delivery of the outgoing shipment
+-
+ !python {model: stock.picking}: |
+ pick_obj = self.pool.get('stock.picking').browse(cr, uid, ref("outgoing_fifo_shipment"))
+ pick_obj.do_transfer(context=context)
+-
+ Check product standard price changed to 65.0 (because last outgoing shipment was made of 10 kg at 50€ and 10 kg at 80€)
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_fifo_icecream")).standard_price == 65.0, "Product price not updated accordingly. %s found instead of 65" %(self.browse(cr, uid, ref("product_fifo_icecream")).standard_price,)
+-
+ Do a delivery of an extra 500 g (delivery order)
+-
+ !record {model: stock.picking, id: outgoing_fifo_shipment_uom}:
+ picking_type_id: stock.picking_type_out
+-
+ Picking needs movement from stock
+-
+ !record {model: stock.move, id: outgoing_shipment_fifo_icecream_gram}:
+ picking_id: outgoing_fifo_shipment_uom
+ product_id: product_fifo_icecream
+ product_uom: product.product_uom_gram
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+ product_uom_qty: 500.0
+ picking_type_id: stock.picking_type_out
+-
+ I assign this outgoing shipment
+-
+ !python {model: stock.picking}: |
+ self.action_assign(cr, uid, [ref("outgoing_fifo_shipment_uom")])
+-
+ Process the delivery of the outgoing shipment
+-
+ !python {model: stock.picking}: |
+ pick_obj = self.pool.get('stock.picking').browse(cr, uid, ref("outgoing_fifo_shipment_uom"))
+ pick_obj.do_transfer(context=context)
+-
+ Check product price changed to 80.0 (because last outgoing shipment was made of 0.5 kg at 80€)
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_fifo_icecream")).standard_price == 80.0, "Product price not updated accordingly. %s found instead of 80" %(self.browse(cr, uid, ref("product_fifo_icecream")).standard_price,)
+-
+ We will temporarily change the currency rate on the sixth of June to have the same results all year
+-
+ !record {model: res.currency.rate, id: base.rateUSDbis}:
+ rate: 1.2834
+ currency_id: base.USD
+ name: !eval time.strftime('%Y-06-06')
+-
+ Create new pricelist in usd
+-
+ !record {model: product.pricelist, id: supplier_pricelist_usd}:
+ name: Supplier Pricelist
+ type: purchase
+ currency_id: base.USD
+ version_id:
+ - name: v1.0
+ items_id:
+ - name: First version
+ sequence: 1
+ price_min_margin: 2
+ price_max_margin: 5
+ product_id: product_fifo_icecream
+ base: -2
+-
+ Purchase order in usd
+-
+ I create a draft Purchase Order for 30000 g at 0.150 USD/g and 10 kg at 150 USD/kg
+-
+ !record {model: purchase.order, id: purchase_order_fifo_usd}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: supplier_pricelist_usd
+ order_line:
+ - product_id: product_fifo_icecream
+ product_qty: 30000
+ product_uom: product.product_uom_gram
+ price_unit: 0.150
+ name: 'FIFO Ice Cream'
+ - product_id: product_fifo_icecream
+ product_qty: 10.0
+ product_uom: product.product_uom_kgm
+ price_unit: 150.0
+-
+ I confirm the purchase order in USD
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fifo_usd}
+-
+ Process the reception of purchase order with usd
+-
+ !python {model: stock.picking}: |
+ pick_obj = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fifo_usd")).picking_ids[0]
+ pick_obj.do_transfer(context=context)
+-
+ We create delivery order of 49.5 kg
+-
+ !record {model: stock.picking, id: outgoing_fifo_shipment_cur}:
+ picking_type_id: stock.picking_type_out
+-
+ Picking needs movement from stock
+-
+ !record {model: stock.move, id: outgoing_shipment_fifo_icecream_cur}:
+ picking_id: outgoing_fifo_shipment_cur
+ product_id: product_fifo_icecream
+ product_uom: product.product_uom_kgm
+ product_uom_qty: 49.5
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+ picking_type_id: stock.picking_type_out
+-
+ I assign this outgoing shipment
+-
+ !python {model: stock.picking}: |
+ self.action_assign(cr, uid, [ref("outgoing_fifo_shipment_cur")])
+-
+ Process the delivery of the outgoing shipment
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.pool.get('stock.picking').browse(cr, uid, ref("outgoing_fifo_shipment_cur"))
+ picking_obj.do_transfer(context=context)
+-
+ Check rounded price is 102 euro (because last outgoing shipment was made of 19.5kg at 80€ and 30kg at $150 (rate=1.2834)
+-
+ !python {model: product.product}: |
+ assert round(self.browse(cr, uid, ref("product_fifo_icecream")).standard_price) == 102, "Product price not updated accordingly. %s found instead of 102 (rounded values)" %(round(self.browse(cr, uid, ref("product_fifo_icecream")).standard_price),)
+-
+ Do a delivery of an extra 10 kg
+-
+ !record {model: stock.picking, id: outgoing_fifo_shipment_ret}:
+ picking_type_id: stock.picking_type_out
+-
+ Picking needs movement from stock
+-
+ !record {model: stock.move, id: outgoing_shipment_fifo_icecream_ret}:
+ picking_id: outgoing_fifo_shipment_ret
+ product_id: product_fifo_icecream
+ product_uom: product.product_uom_kgm
+ product_uom_qty: 10.0
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+ picking_type_id: stock.picking_type_out
+-
+ I assign this outgoing shipment
+-
+ !python {model: stock.picking}: |
+ self.action_assign(cr, uid, [ref("outgoing_fifo_shipment_ret")])
+-
+ Process the delivery of the outgoing shipment
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.pool.get('stock.picking').browse(cr, uid, ref("outgoing_fifo_shipment_ret"))
+ picking_obj.do_transfer(context=context)
+-
+ Check rounded price is 150.0 / 1.2834
+-
+ !python {model: product.product}: |
+ product = self.browse(cr, uid, ref("product_fifo_icecream"))
+ assert round(product.standard_price) == round(150.0 / 1.2834), "Product price not updated accordingly. %s found instead of %s" %(product.standard_price, round(150.0/1.2834))
+ assert product.qty_available == 0.0, 'Wrong quantity in stock after first reception'
+-
+ Let us create some outs to get negative stock for a new product using the same config
+-
+ !record {model: product.product, id: product_fifo_negative}:
+ default_code: NEG
+ name: FIFO Negative
+ type: product
+ categ_id: product.product_category_1
+ list_price: 100.0
+ standard_price: 70.0
+ uom_id: product.product_uom_kgm
+ uom_po_id: product.product_uom_kgm
+ cost_method: real
+ valuation: real_time
+ property_stock_account_input: account.o_expense
+ property_stock_account_output: account.o_income
+ description:
+-
+ Create outpicking. We create delivery order of 100 kg.
+-
+ !record {model: stock.picking, id: outgoing_fifo_shipment_neg}:
+ picking_type_id: stock.picking_type_out
+-
+ Picking needs movement from stock
+-
+ !record {model: stock.move, id: outgoing_shipment_fifo_icecream_neg}:
+ picking_id: outgoing_fifo_shipment_neg
+ product_id: product_fifo_negative
+ product_uom: product.product_uom_kgm
+ product_uom_qty: 100.0
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+ picking_type_id: stock.picking_type_out
+-
+ Process the delivery of the first outgoing shipment
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.browse(cr, uid, ref("outgoing_fifo_shipment_neg"))
+ picking_obj.do_transfer(context=context)
+-
+ The behavior of fifo/lifo is not garantee if the quants are created at the same second, so i just wait one second
+-
+ !python {model: stock.picking}: |
+ import time
+ time.sleep(1)
+-
+ Let us create another out of 400 kg
+-
+ !record {model: stock.picking, id: outgoing_fifo_shipment_neg2}:
+ picking_type_id: stock.picking_type_out
+-
+ Picking needs movement from stock
+-
+ !record {model: stock.move, id: outgoing_shipment_fifo_icecream_neg2}:
+ picking_id: outgoing_fifo_shipment_neg2
+ product_id: product_fifo_negative
+ product_uom: product.product_uom_kgm
+ product_uom_qty: 400.0
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+ picking_type_id: stock.picking_type_out
+-
+ Process the delivery of the outgoing shipments
+-
+ !python {model: stock.picking}: |
+ picking_obj1 = self.browse(cr, uid, ref("outgoing_fifo_shipment_neg2"))
+ picking_obj1.do_transfer(context=context)
+
+-
+ Receive purchase order with 50 kg FIFO Ice Cream at 50 euro/kg
+-
+ !record {model: purchase.order, id: purchase_order_fifo_neg}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_fifo_negative
+ product_qty: 50.0
+ product_uom: product.product_uom_kgm
+ price_unit: 50.0
+ name: 'FIFO Ice Cream'
+-
+ I confirm the first purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fifo_neg}
+-
+ Process the reception of purchase order 1
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fifo_neg")).picking_ids[0]
+ picking_obj.do_transfer(context=context)
+-
+ Assert price on product is still the old price as the out move has not been received fully yet
+-
+ !python {model: product.product}: |
+
+ assert self.browse(cr, uid, ref("product_fifo_negative")).standard_price == 70, 'The product price should not have been updated'
+-
+ Receive purchase order with 60 kg FIFO Ice Cream at 80 euro/kg
+-
+ !record {model: purchase.order, id: purchase_order_fifo_neg2}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_fifo_negative
+ product_qty: 60.0
+ product_uom: product.product_uom_kgm
+ price_unit: 80
+ name: 'FIFO Ice Cream'
+-
+ I confirm the second negative purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fifo_neg2}
+-
+ Process the reception of purchase order 2
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fifo_neg2")).picking_ids[0]
+ picking_obj.do_transfer(context=context)
+-
+ The price of the product should have changed back to 65.0
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_fifo_negative")).standard_price == 65.0, "Product price not updated accordingly. %s found instead of 65" %(self.browse(cr, uid, ref("product_fifo_negative")).standard_price,)
diff --git a/addons/purchase/test/fifo_returns.yml b/addons/purchase/test/fifo_returns.yml
new file mode 100644
index 00000000000..50cddf25675
--- /dev/null
+++ b/addons/purchase/test/fifo_returns.yml
@@ -0,0 +1,80 @@
+-
+ Set a product as using fifo price
+-
+ !record {model: product.product, id: product_fiforet_icecream}:
+ default_code: FIFO
+ name: FIFO Ice Cream
+ type: product
+ standard_price: 0.0
+ categ_id: product.product_category_1
+ uom_id: product.product_uom_kgm
+ uom_po_id: product.product_uom_kgm
+ cost_method: real
+ valuation: real_time
+ property_stock_account_input: account.o_expense
+ property_stock_account_output: account.o_income
+ description: FIFO Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
+-
+ I create a draft Purchase Order for first in move for 10 kg at 50 euro
+-
+ !record {model: purchase.order, id: purchase_order_fiforet1}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_fiforet_icecream
+ product_qty: 10.0
+ product_uom: product.product_uom_kgm
+ price_unit: 50.0
+ name: 'FIFO Ice Cream'
+-
+ I create a draft Purchase Order for second shipment for 30 kg at 80 euro
+-
+ !record {model: purchase.order, id: purchase_order_fiforet2}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: 1
+ order_line:
+ - product_id: product_fiforet_icecream
+ product_qty: 30.0
+ product_uom: product.product_uom_kgm
+ price_unit: 80.0
+ name: 'FIFO Ice Cream'
+-
+ I confirm the first purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fiforet1}
+-
+ Process the reception of purchase order 1
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fiforet1")).picking_ids[0]
+ self.do_transfer(cr,uid,[picking_obj.id], context=context)
+-
+ Check the standard price of the product (fifo icecream)
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_fiforet_icecream")).standard_price == 0.0, 'Standard price should not have changed!'
+-
+ I confirm the second purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_fiforet2}
+-
+ Process the reception of purchase order 2
+-
+ !python {model: stock.picking}: |
+ picking_obj = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fiforet2")).picking_ids[0]
+ self.do_transfer(cr,uid,[picking_obj.id], context=context)
+-
+ Return the goods of purchase order 2
+-
+ !python {model: stock.return.picking}: |
+ pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_fiforet2")).picking_ids
+ return_id = self.create(cr, uid, {}, context={'active_model':'stock.picking', 'active_id': pick_ids[0].id})
+ return_picking_id, dummy = self._create_returns(cr, uid, [return_id], context={'active_id': pick_ids[0].id})
+ self.pool.get('stock.picking').do_transfer(cr, uid, [return_picking_id])
+-
+ Check the standard price of the product changed to 80.0 as we returned the quants of purchase order 2
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_fiforet_icecream")).standard_price == 80.0, 'Standard price should have changed to 80.0! %s found instead' % (self.browse(cr, uid, ref("product_fiforet_icecream")).standard_price,)
diff --git a/addons/purchase/test/process/generate_invoice_from_reception.yml b/addons/purchase/test/process/generate_invoice_from_reception.yml
index 565f52f258f..6e3a7d3d8e0 100644
--- a/addons/purchase/test/process/generate_invoice_from_reception.yml
+++ b/addons/purchase/test/process/generate_invoice_from_reception.yml
@@ -16,9 +16,9 @@
-
Now I create an invoice for order on reception.
-
- !python {model: stock.picking}: |
- pick_ids = self.search(cr, uid, [('purchase_id','=',ref('purchase_order_2'))])
- self.action_invoice_create(cr, uid, pick_ids, ref('account.expenses_journal'))
+ !python {model: purchase.order}: |
+ pick_ids = [self.browse(cr, uid, ref("purchase_order_2")).id]
+ self.action_invoice_create(cr, uid, pick_ids)
-
I check that the invoice of order.
-
diff --git a/addons/purchase/test/process/merge_order.yml b/addons/purchase/test/process/merge_order.yml
index dcf2616e79e..ff977033ee7 100644
--- a/addons/purchase/test/process/merge_order.yml
+++ b/addons/purchase/test/process/merge_order.yml
@@ -8,10 +8,10 @@
-
!python {model: purchase.order}: |
context.update({"mail_create_nolog" : True })
- new_id = self.do_merge(cr, uid, [ref('purchase_order_4'), ref('purchase_order_7')], context=context)
order3 = self.browse(cr, uid, ref('purchase_order_4'))
order7 = self.browse(cr, uid, ref('purchase_order_7'))
total_qty = sum([x.product_qty for x in order3.order_line] + [x.product_qty for x in order7.order_line])
+ new_id = self.do_merge(cr, uid, [ref('purchase_order_4'), ref('purchase_order_7')], context=context)
assert order3.state == 'cancel', "Merged order should be canceled"
assert order7.state == 'cancel', "Merged order should be canceled"
@@ -25,14 +25,12 @@
product_uom.append(line.product_uom.id)
res.update({'product_ids': product_id,'product_uom':product_uom})
return res
-
for order in self.browse(cr, uid, new_id.keys()):
total_new_qty = [x.product_qty for x in order.order_line]
total_new_qty = sum(total_new_qty)
assert total_new_qty == total_qty,"product quantities are not correspond"
assert order.partner_id == order3.partner_id ,"partner is not correspond"
- assert order.warehouse_id == order3.warehouse_id or order7.warehouse_id,"Warehouse is not correspond"
assert order.state == 'draft',"New created order state should be in draft"
assert order.pricelist_id == order3.pricelist_id,"Price list is not correspond"
assert order.date_order == order3.date_order ,"Date of order is not correspond"
diff --git a/addons/purchase/test/process/rfq2order2done.yml b/addons/purchase/test/process/rfq2order2done.yml
index ff9158b3c09..54de507286c 100644
--- a/addons/purchase/test/process/rfq2order2done.yml
+++ b/addons/purchase/test/process/rfq2order2done.yml
@@ -45,10 +45,9 @@
-
Reception is ready for process so now done the reception.
-
- !python {model: stock.partial.picking}: |
- pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_1")).picking_ids
- partial_id = self.create(cr, uid, {},context={'active_model': 'stock.picking','active_ids': [pick_ids[0].id]})
- self.do_partial(cr, uid, [partial_id])
+ !python {model: stock.picking}: |
+ pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_1")).picking_ids[0]
+ pick_ids.do_transfer(context=context)
-
I check that purchase order is shipped.
-
diff --git a/addons/purchase/test/process/run_scheduler.yml b/addons/purchase/test/process/run_scheduler.yml
index 8ac84a37125..d4c1da13cd7 100644
--- a/addons/purchase/test/process/run_scheduler.yml
+++ b/addons/purchase/test/process/run_scheduler.yml
@@ -1,18 +1,26 @@
-
- In order to test the scheduler to generate RFQ.
+ In order to test the scheduler to generate RFQ, I create a new product
+-
+ !record {model: product.product, id: scheduler_product}:
+ name: scheduler prod
+ type: product
+ seller_ids:
+ - delay: 1
+ name: base.res_partner_2
+ min_qty: 5.0
+-
+ Add Buy route
+-
+ !python {model: product.product, id: scheduler_product}: |
+ self.write(cr, uid, [ref("scheduler_product")], {"route_ids": [(4, ref("purchase.route_warehouse0_buy"))]})
-
I create a procurement order.
-
!record {model: procurement.order, id: procurement_order_testcase0}:
location_id: stock.stock_location_stock
name: Test scheduler for RFQ
- procure_method: make_to_order
- product_id: product.product_product_45
+ product_id: scheduler_product
product_qty: 15.0
--
- I confirm on procurement order.
--
- !workflow {model: procurement.order, action: button_confirm, ref: procurement_order_testcase0}
-
I run the scheduler.
-
@@ -23,14 +31,12 @@
-
!python {model: procurement.order}: |
procurement = self.browse(cr, uid, ref('procurement_order_testcase0'))
- assert procurement.purchase_id, 'RFQ should be generated!'
+ assert procurement.purchase_line_id, 'RFQ should be generated!'
-
I delete the line from the purchase order and check that the move and the procurement are cancelled
-
!python {model: procurement.order}: |
procurement = self.browse(cr, uid, ref('procurement_order_testcase0'))
- move = procurement.purchase_id.order_line[0].move_dest_id
- procurement.purchase_id.order_line[0].unlink()
- assert move.state == 'cancel', 'Move should be cancelled'
+ procurement.purchase_line_id.unlink()
procurement.refresh()
assert procurement.state == 'cancel', 'Procurement should be cancelled'
diff --git a/addons/purchase/views/report_purchaseorder.xml b/addons/purchase/views/report_purchaseorder.xml
index c03e535ff75..300149e4f1d 100644
--- a/addons/purchase/views/report_purchaseorder.xml
+++ b/addons/purchase/views/report_purchaseorder.xml
@@ -16,9 +16,9 @@
- Click to start a new purchase requisition process.
+ Click to start a new Call for Bids process.
- A purchase requisition is the step before a request for quotation.
- In a purchase requisition (or purchase tender), you can record the
- products you need to buy and trigger the creation of RfQs to
- suppliers. After the negotiation, once you have reviewed all the
- supplier's offers, you can validate some and cancel others.
+ A Call for Bids is a procedure for generating competing offers from
+ different bidders. In the call for bids, you can record the
+ products you need to buy and generate the creation of RfQs to
+ suppliers. Once the bids have been registered, you can review and
+ compare them and you can validate some and cancel others.
diff --git a/addons/resource/resource.py b/addons/resource/resource.py
index 962cad9eb92..58acc0cd170 100644
--- a/addons/resource/resource.py
+++ b/addons/resource/resource.py
@@ -436,7 +436,7 @@ class resource_calendar(osv.osv):
working_intervals = self.get_working_intervals_of_day(cr, uid, id, **call_args)
- if id is None and not working_interval: # no calendar -> consider working 8 hours
+ if id is None and not working_intervals: # no calendar -> consider working 8 hours
remaining_hours -= 8.0
elif working_intervals:
if backwards:
diff --git a/addons/sale/__openerp__.py b/addons/sale/__openerp__.py
index 2faeb5b3693..96a3dde5075 100644
--- a/addons/sale/__openerp__.py
+++ b/addons/sale/__openerp__.py
@@ -58,8 +58,8 @@ The Dashboard for the Sales Manager will include
""",
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
- 'images': ['images/sale_dashboard.jpeg','images/Sale_order_line_to_invoice.jpeg','images/sale_order.jpeg','images/sales_analysis.jpeg'],
- 'depends': ['sale_team','account_voucher','report'],
+ 'images': ['images/Sale_order_line_to_invoice.jpeg','images/sale_order.jpeg','images/sales_analysis.jpeg'],
+ 'depends': ['sale_team','account_voucher', 'procurement', 'report'],
'data': [
'wizard/sale_make_invoice_advance.xml',
'wizard/sale_line_invoice.xml',
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index c8ab29ffe34..34886a22991 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -27,7 +27,7 @@ from dateutil import relativedelta
import time
from openerp.osv import fields, osv
from openerp.tools.translate import _
-from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP, float_compare
+from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
import openerp.addons.decimal_precision as dp
from openerp import workflow
@@ -46,12 +46,13 @@ class sale_order(osv.osv):
if not default:
default = {}
default.update({
- 'date_order': fields.date.context_today(self, cr, uid, context=context),
+ 'date_order': fields.datetime.now(),
'state': 'draft',
'invoice_ids': [],
'date_confirm': False,
'client_order_ref': '',
'name': self.pool.get('ir.sequence').get(cr, uid, 'sale.order'),
+ 'procurement_group_id': False,
})
return super(sale_order, self).copy(cr, uid, id, default, context=context)
@@ -183,11 +184,14 @@ class sale_order(osv.osv):
('waiting_date', 'Waiting Schedule'),
('progress', 'Sales Order'),
('manual', 'Sale to Invoice'),
+ ('shipping_except', 'Shipping Exception'),
('invoice_except', 'Invoice Exception'),
('done', 'Done'),
- ], 'Status', readonly=True, track_visibility='onchange',
- help="Gives the status of the quotation or sales order. \nThe exception status is automatically set when a cancel operation occurs in the processing of a document linked to the sales order. \nThe 'Waiting Schedule' status is set when the invoice is confirmed but waiting for the scheduler to run on the order date.", select=True),
- 'date_order': fields.date('Date', required=True, readonly=True, select=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}),
+ ], 'Status', readonly=True, help="Gives the status of the quotation or sales order.\
+ \nThe exception status is automatically set when a cancel operation occurs \
+ in the invoice validation (Invoice Exception) or in the picking list process (Shipping Exception).\nThe 'Waiting Schedule' status is set when the invoice is confirmed\
+ but waiting for the scheduler to run on the order date.", select=True),
+ 'date_order': fields.datetime('Date', required=True, readonly=True, select=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}),
'create_date': fields.datetime('Creation Date', readonly=True, select=True, help="Date on which sales order is created."),
'date_confirm': fields.date('Confirmation Date', readonly=True, select=True, help="Date on which sales order is confirmed."),
'user_id': fields.many2one('res.users', 'Salesperson', states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, select=True, track_visibility='onchange'),
@@ -230,20 +234,20 @@ class sale_order(osv.osv):
},
multi='sums', help="The total amount."),
- 'invoice_quantity': fields.selection([('order', 'Ordered Quantities')], 'Invoice on', help="The sales order will automatically create the invoice proposition (draft invoice).", required=True, readonly=True, states={'draft': [('readonly', False)]}),
'payment_term': fields.many2one('account.payment.term', 'Payment Term'),
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position'),
'company_id': fields.many2one('res.company', 'Company'),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
+ 'procurement_group_id': fields.many2one('procurement.group', 'Procurement group'),
+
}
_defaults = {
- 'date_order': fields.date.context_today,
+ 'date_order': fields.datetime.now,
'order_policy': 'manual',
'company_id': _get_default_company,
'state': 'draft',
'user_id': lambda obj, cr, uid, context: uid,
'name': lambda obj, cr, uid, context: '/',
- 'invoice_quantity': 'order',
'partner_invoice_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['invoice'])['invoice'],
'partner_shipping_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['delivery'])['delivery'],
'note': lambda self, cr, uid, context: self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.sale_note,
@@ -304,7 +308,7 @@ class sale_order(osv.osv):
partner_lang = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context).lang
context_lang.update({'lang': partner_lang})
return self.pool.get('res.users').browse(cr, uid, uid, context=context_lang).company_id.sale_note
-
+
def onchange_partner_id(self, cr, uid, ids, part, context=None):
if not part:
return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'payment_term': False, 'fiscal_position': False}}
@@ -330,7 +334,7 @@ class sale_order(osv.osv):
def create(self, cr, uid, vals, context=None):
if context is None:
- context = {}
+ context = {}
if vals.get('name', '/') == '/':
vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'sale.order') or '/'
if vals.get('partner_id') and any(f not in vals for f in ['partner_invoice_id', 'partner_shipping_id', 'pricelist_id']):
@@ -636,8 +640,138 @@ class sale_order(osv.osv):
}
def action_done(self, cr, uid, ids, context=None):
+ for order in self.browse(cr, uid, ids, context=context):
+ self.pool.get('sale.order.line').write(cr, uid, [line.id for line in order.order_line], {'state': 'done'}, context=context)
return self.write(cr, uid, ids, {'state': 'done'}, context=context)
+ def _prepare_order_line_procurement(self, cr, uid, order, line, group_id=False, context=None):
+ date_planned = self._get_date_planned(cr, uid, order, line, order.date_order, context=context)
+ return {
+ 'name': line.name,
+ 'origin': order.name,
+ 'date_planned': date_planned,
+ 'product_id': line.product_id.id,
+ 'product_qty': line.product_uom_qty,
+ 'product_uom': line.product_uom.id,
+ 'product_uos_qty': (line.product_uos and line.product_uos_qty) or line.product_uom_qty,
+ 'product_uos': (line.product_uos and line.product_uos.id) or line.product_uom.id,
+ 'company_id': order.company_id.id,
+ 'group_id': group_id,
+ 'invoice_state': (order.order_policy == 'picking') and '2binvoiced' or 'none',
+ 'sale_line_id': line.id
+ }
+
+ def _get_date_planned(self, cr, uid, order, line, start_date, context=None):
+ date_planned = datetime.strptime(start_date, DEFAULT_SERVER_DATETIME_FORMAT) + timedelta(days=line.delay or 0.0)
+ return date_planned
+
+ def _prepare_procurement_group(self, cr, uid, order, context=None):
+ return {'name': order.name, 'partner_id': order.partner_shipping_id.id}
+
+ def procurement_needed(self, cr, uid, ids, context=None):
+ #when sale is installed only, there is no need to create procurements, that's only
+ #further installed modules (project_mrp, sale_stock) that will change this.
+ sale_line_obj = self.pool.get('sale.order.line')
+ res = []
+ for order in self.browse(cr, uid, ids, context=context):
+ res.append(sale_line_obj.need_procurement(cr, uid, [line.id for line in order.order_line], context=context))
+ return any(res)
+
+ def action_ignore_delivery_exception(self, cr, uid, ids, context=None):
+ for sale_order in self.browse(cr, uid, ids, context=context):
+ self.write(cr, uid, ids, {'state': 'progress' if sale_order.invoice_exists else 'manual'}, context=context)
+ return True
+
+ def action_ship_create(self, cr, uid, ids, context=None):
+ """Create the required procurements to supply sales order lines, also connecting
+ the procurements to appropriate stock moves in order to bring the goods to the
+ sales order's requested location.
+
+ :return: True
+ """
+ procurement_obj = self.pool.get('procurement.order')
+ sale_line_obj = self.pool.get('sale.order.line')
+ for order in self.browse(cr, uid, ids, context=context):
+ proc_ids = []
+ vals = self._prepare_procurement_group(cr, uid, order, context=context)
+ if not order.procurement_group_id:
+ group_id = self.pool.get("procurement.group").create(cr, uid, vals, context=context)
+ order.write({'procurement_group_id': group_id}, context=context)
+
+ for line in order.order_line:
+ #Try to fix exception procurement (possible when after a shipping exception the user choose to recreate)
+ if line.procurement_ids:
+ #first check them to see if they are in exception or not (one of the related moves is cancelled)
+ procurement_obj.check(cr, uid, [x.id for x in line.procurement_ids if x.state not in ['cancel', 'done']])
+ line.refresh()
+ #run again procurement that are in exception in order to trigger another move
+ proc_ids += [x.id for x in line.procurement_ids if x.state == 'exception']
+ elif sale_line_obj.need_procurement(cr, uid, [line.id], context=context):
+ if (line.state == 'done') or not line.product_id:
+ continue
+ vals = self._prepare_order_line_procurement(cr, uid, order, line, group_id=group_id, context=context)
+ proc_id = procurement_obj.create(cr, uid, vals, context=context)
+ proc_ids.append(proc_id)
+ #Confirm procurement order such that rules will be applied on it
+ #note that the workflow normally ensure proc_ids isn't an empty list
+ procurement_obj.run(cr, uid, proc_ids, context=context)
+
+ #if shipping was in exception and the user choose to recreate the delivery order, write the new status of SO
+ if order.state == 'shipping_except':
+ val = {'state': 'progress', 'shipped': False}
+
+ if (order.order_policy == 'manual'):
+ for line in order.order_line:
+ if (not line.invoiced) and (line.state not in ('cancel', 'draft')):
+ val['state'] = 'manual'
+ break
+ order.write(val)
+ return True
+
+ # if mode == 'finished':
+ # returns True if all lines are done, False otherwise
+ # if mode == 'canceled':
+ # returns True if there is at least one canceled line, False otherwise
+ def test_state(self, cr, uid, ids, mode, *args):
+ assert mode in ('finished', 'canceled'), _("invalid mode for test_state")
+ finished = True
+ canceled = False
+ write_done_ids = []
+ write_cancel_ids = []
+ for order in self.browse(cr, uid, ids, context={}):
+
+ #TODO: Need to rethink what happens when cancelling
+ for line in order.order_line:
+ states = [x.state for x in line.procurement_ids]
+ cancel = states and all([x == 'cancel' for x in states])
+ doneorcancel = all([x in ('done', 'cancel') for x in states])
+ if cancel:
+ canceled = True
+ if line.state != 'exception':
+ write_cancel_ids.append(line.id)
+ if not doneorcancel:
+ finished = False
+ if doneorcancel and not cancel:
+ write_done_ids.append(line.id)
+
+ if write_done_ids:
+ self.pool.get('sale.order.line').write(cr, uid, write_done_ids, {'state': 'done'})
+ if write_cancel_ids:
+ self.pool.get('sale.order.line').write(cr, uid, write_cancel_ids, {'state': 'exception'})
+
+ if mode == 'finished':
+ return finished
+ elif mode == 'canceled':
+ return canceled
+
+
+ def procurement_lines_get(self, cr, uid, ids, *args):
+ res = []
+ for order in self.browse(cr, uid, ids, context={}):
+ for line in order.order_line:
+ res += [x.id for x in line.procurement_ids]
+ return res
+
def onchange_fiscal_position(self, cr, uid, ids, fiscal_position, order_lines, context=None):
'''Update taxes of order lines for each line where a product is defined
@@ -687,6 +821,11 @@ class sale_order(osv.osv):
# - use it in report if there is a uos
class sale_order_line(osv.osv):
+ def need_procurement(self, cr, uid, ids, context=None):
+ #when sale is installed only, there is no need to create procurements, that's only
+ #further installed modules (project_mrp, sale_stock) that will change this.
+ return False
+
def _amount_line(self, cr, uid, ids, field_name, arg, context=None):
tax_obj = self.pool.get('account.tax')
cur_obj = self.pool.get('res.currency')
@@ -722,6 +861,7 @@ class sale_order_line(osv.osv):
WHERE rel.invoice_id = ANY(%s)""", (list(ids),))
return [i[0] for i in cr.fetchall()]
+
_name = 'sale.order.line'
_description = 'Sales Order Line'
_columns = {
@@ -733,10 +873,9 @@ class sale_order_line(osv.osv):
'invoiced': fields.function(_fnct_line_invoiced, string='Invoiced', type='boolean',
store={
'account.invoice': (_order_lines_from_invoice, ['state'], 10),
- 'sale.order.line': (lambda self,cr,uid,ids,ctx=None: ids, ['invoice_lines'], 10)}),
+ 'sale.order.line': (lambda self,cr,uid,ids,ctx=None: ids, ['invoice_lines'], 10)
+ }),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Product Price'), readonly=True, states={'draft': [('readonly', False)]}),
- 'type': fields.selection([('make_to_stock', 'from stock'), ('make_to_order', 'on order')], 'Procurement Method', required=True, readonly=True, states={'draft': [('readonly', False)]},
- help="From stock: When needed, the product is taken from the stock or we wait for replenishment.\nOn order: When needed, the product is purchased or produced."),
'price_subtotal': fields.function(_amount_line, string='Subtotal', digits_compute= dp.get_precision('Account')),
'tax_id': fields.many2many('account.tax', 'sale_order_tax', 'order_line_id', 'tax_id', 'Taxes', readonly=True, states={'draft': [('readonly', False)]}),
'address_allotment_id': fields.many2one('res.partner', 'Allotment Partner',help="A partner to whom the particular product needs to be allotted."),
@@ -755,6 +894,8 @@ class sale_order_line(osv.osv):
'order_partner_id': fields.related('order_id', 'partner_id', type='many2one', relation='res.partner', store=True, string='Customer'),
'salesman_id':fields.related('order_id', 'user_id', type='many2one', relation='res.users', store=True, string='Salesperson'),
'company_id': fields.related('order_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
+ 'delay': fields.float('Delivery Lead Time', required=True, help="Number of days between the order confirmation and the shipping of the products to the customer", readonly=True, states={'draft': [('readonly', False)]}),
+ 'procurement_ids': fields.one2many('procurement.order', 'sale_line_id', 'Procurements'),
}
_order = 'order_id desc, sequence, id'
_defaults = {
@@ -764,20 +905,18 @@ class sale_order_line(osv.osv):
'product_uos_qty': 1,
'sequence': 10,
'state': 'draft',
- 'type': 'make_to_stock',
'price_unit': 0.0,
+ 'delay': 0.0,
}
def _get_line_qty(self, cr, uid, line, context=None):
- if (line.order_id.invoice_quantity=='order'):
- if line.product_uos:
- return line.product_uos_qty or 0.0
+ if line.product_uos:
+ return line.product_uos_qty or 0.0
return line.product_uom_qty
def _get_line_uom(self, cr, uid, line, context=None):
- if (line.order_id.invoice_quantity=='order'):
- if line.product_uos:
- return line.product_uos.id
+ if line.product_uos:
+ return line.product_uos.id
return line.product_uom.id
def _prepare_order_line_invoice_line(self, cr, uid, line, account_id=False, context=None):
@@ -908,17 +1047,17 @@ class sale_order_line(osv.osv):
def copy_data(self, cr, uid, id, default=None, context=None):
if not default:
default = {}
- default.update({'state': 'draft', 'invoice_lines': []})
+ default.update({'state': 'draft', 'invoice_lines': [], 'procurement_ids': []})
return super(sale_order_line, self).copy_data(cr, uid, id, default, context=context)
def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,
uom=False, qty_uos=0, uos=False, name='', partner_id=False,
lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, context=None):
context = context or {}
- lang = lang or context.get('lang',False)
+ lang = lang or context.get('lang', False)
if not partner_id:
raise osv.except_osv(_('No Customer Defined!'), _('Before choosing a product,\n select a customer in the sales form.'))
- warning = {}
+ warning = False
product_uom_obj = self.pool.get('product.uom')
partner_obj = self.pool.get('res.partner')
product_obj = self.pool.get('product.product')
@@ -1090,8 +1229,17 @@ class account_invoice(osv.Model):
'section_id': lambda self, cr, uid, c=None: self.pool.get('res.users').browse(cr, uid, uid, c).default_section_id.id or False,
}
+
+class procurement_order(osv.osv):
+ _inherit = 'procurement.order'
+ _columns = {
+ 'sale_line_id': fields.many2one('sale.order.line', string='Sale Order Line'),
+ }
+
+
class product_product(osv.Model):
_inherit = 'product.product'
+
def _sales_count(self, cr, uid, ids, field_name, arg, context=None):
SaleOrderLine = self.pool['sale.order.line']
return {
@@ -1100,5 +1248,8 @@ class product_product(osv.Model):
}
_columns = {
'sales_count': fields.function(_sales_count, string='# Sales', type='integer'),
+
}
+
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale/sale_demo.xml b/addons/sale/sale_demo.xml
index 0c6e92e86ff..2e0019598f7 100644
--- a/addons/sale/sale_demo.xml
+++ b/addons/sale/sale_demo.xml
@@ -252,6 +252,7 @@
+ Test/001
diff --git a/addons/sale/sale_unit_test.xml b/addons/sale/sale_unit_test.xml
index 8d7d54d9640..4521bb0e59b 100644
--- a/addons/sale/sale_unit_test.xml
+++ b/addons/sale/sale_unit_test.xml
@@ -18,7 +18,6 @@
45022
- make_to_stock
@@ -28,7 +27,6 @@
9033
- make_to_stock
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 6d263f4fdab..25163d9e5b8 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -149,7 +149,6 @@
-
@@ -510,8 +509,6 @@
-
-
res.company.form.inherit
diff --git a/addons/sale/sale_workflow.xml b/addons/sale/sale_workflow.xml
index 53542c754bc..831a0a9d12c 100644
--- a/addons/sale/sale_workflow.xml
+++ b/addons/sale/sale_workflow.xml
@@ -19,7 +19,7 @@
sentfunctionwrite({'state':'sent'})
-
+
@@ -162,5 +162,140 @@
+
+
+
+
+
+
+ wait_ship
+
+
+
+
+ cancel3
+ True
+ stopall
+ action_cancel()
+
+
+
+
+ ship
+ function
+ action_ship_create()
+
+
+
+
+ ship_ignore
+ function
+ action_ignore_delivery_exception()
+
+
+
+
+ ship_end
+ dummy
+
+
+
+
+ ship_cancel
+ True
+ stopall
+ action_cancel()
+
+
+
+
+ ship_except
+ function
+ write({'state':'shipping_except'})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (order_policy=='picking')
+
+
+
+
+
+ order_policy=='prepaid'
+
+
+
+
+
+ cancel
+
+
+
+
+
+ procurement_needed() and ((order_policy!='prepaid') or invoiced)
+
+
+
+
+ not procurement_needed()
+
+
+
+
+
+
+
+
+
+
+ procurement.order
+ procurement_lines_get()
+ test_state('finished')
+
+
+
+
+
+ ship_except
+
+
+
+
+
+ ship_recreate
+
+
+
+
+
+ ship_corrected
+
+
+
+
+
+
+
+
+
+
+ ship_cancel
+
+
+
diff --git a/addons/sale/security/ir.model.access.csv b/addons/sale/security/ir.model.access.csv
index 5fea141bd2b..74a06d201f3 100644
--- a/addons/sale/security/ir.model.access.csv
+++ b/addons/sale/security/ir.model.access.csv
@@ -1,4 +1,4 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sale_order,sale.order,model_sale_order,base.group_sale_salesman,1,1,1,0
access_sale_order_line,sale.order.line,model_sale_order_line,base.group_sale_salesman,1,1,1,1
access_sale_order_line_accountant,sale.order.line accountant,model_sale_order_line,account.group_account_user,1,1,0,0
@@ -33,11 +33,14 @@ access_product_ul_sale_manager,product.ul salemanager,product.model_product_ul,b
access_product_category_sale_manager,product.category salemanager,product.model_product_category,base.group_sale_manager,1,1,1,1
access_product_supplierinfo_user,product.supplierinfo.user,product.model_product_supplierinfo,base.group_sale_salesman,1,0,0,0
access_product_supplierinfo_sale_manager,product.supplierinfo salemanager,product.model_product_supplierinfo,base.group_sale_manager,1,1,1,1
-access_pricelist_partnerinfo_sale_manager,pricelist.partnerinfo salemanager,product.model_pricelist_partnerinfo,base.group_sale_manager,1,1,1,1
+access_pricelist_partnerinfo_sale_manager,pricelist.partnerinfo salemanager,product.model_pricelist_partnerinfo,base.group_sale_manager,1,1,1,1
access_product_price_type_sale_manager,product.price.type salemanager,product.model_product_price_type,base.group_sale_manager,1,1,1,1
access_product_pricelist_type_sale_manager,product.pricelist.type salemanager,product.model_product_pricelist_type,base.group_sale_manager,1,1,1,1
access_product_pricelist_sale_manager,product.pricelist salemanager,product.model_product_pricelist,base.group_sale_manager,1,1,1,1
access_product_group_res_partner_sale_manager,res_partner group_sale_manager,base.model_res_partner,base.group_sale_manager,1,1,1,0
access_product_pricelist_version_sale_manager,product.pricelist.version sale_manager,product.model_product_pricelist_version,base.group_sale_manager,1,1,1,1
access_account_invoice_report_salesman,account.invoice.report salesman,account.model_account_invoice_report,base.group_sale_salesman,1,0,0,0
-access_account_move_line_salesman,account.move.line invoice,account.model_account_move_line,base.group_sale_salesman,1,0,0,0
\ No newline at end of file
+access_account_move_line_salesman,account.move.line invoice,account.model_account_move_line,base.group_sale_salesman,1,0,0,0
+access_product_price_history_salemanager,prices.history sale manager,product.model_product_price_history,base.group_sale_manager,1,1,1,1
+access_product_price_history_account_user,prices.history account user,product.model_product_price_history,account.group_account_user,1,0,0,0
+access_product_price_history_sale_use,prices.history sale use,product.model_product_price_history,base.group_sale_salesman,1,0,0,0
diff --git a/addons/sale_journal/sale_journal.py b/addons/sale_journal/sale_journal.py
index 73fd5b672f1..6a9ca22490d 100644
--- a/addons/sale_journal/sale_journal.py
+++ b/addons/sale_journal/sale_journal.py
@@ -60,18 +60,6 @@ class picking(osv.osv):
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
}
-class stock_picking_in(osv.osv):
- _inherit = "stock.picking.in"
- _columns = {
- 'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
- }
-
-class stock_picking_out(osv.osv):
- _inherit = "stock.picking.out"
- _columns = {
- 'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
- }
-
class sale(osv.osv):
_inherit = "sale.order"
diff --git a/addons/sale_journal/sale_journal_view.xml b/addons/sale_journal/sale_journal_view.xml
index 9d41103252e..d5867cb749a 100644
--- a/addons/sale_journal/sale_journal_view.xml
+++ b/addons/sale_journal/sale_journal_view.xml
@@ -85,61 +85,6 @@
-
- stock.picking.journal.view.tree
- stock.picking
-
-
-
-
-
-
-
-
-
- stock.picking.journal.view.form
- stock.picking.in
-
-
-
-
-
-
-
-
-
- stock.picking.journal.view.tree
- stock.picking.in
-
-
-
-
-
-
-
-
-
- stock.picking.journal.view.form
- stock.picking.out
-
-
-
-
-
-
-
-
-
- stock.picking.journal.view.tree
- stock.picking.out
-
-
-
-
-
-
-
-
res.partner.journal.property.form.inheritres.partner
@@ -165,37 +110,18 @@
+
+
stock.picking.internal.search.inheritstock.picking
-
+
-
- stock.picking.out.search.inherit
- stock.picking.out
-
-
-
-
-
-
-
-
-
- stock.picking.in.search.inherit
- stock.picking.in
-
-
-
-
-
-
-
diff --git a/addons/sale_margin/test/sale_margin.yml b/addons/sale_margin/test/sale_margin.yml
index 197f51a9681..666e0602fb7 100644
--- a/addons/sale_margin/test/sale_margin.yml
+++ b/addons/sale_margin/test/sale_margin.yml
@@ -6,7 +6,6 @@
-
!record {model: sale.order, id: sale_order_so11}:
date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
name: Test_SO011
order_line:
- name: '[CARD] Graphics Card'
@@ -17,7 +16,6 @@
product_id: product.product_product_24
product_uos_qty: 100.0
th_weight: 0.0
- type: make_to_stock
order_policy: manual
partner_id: base.res_partner_4
partner_invoice_id: base.res_partner_address_7
diff --git a/addons/sale_mrp/__openerp__.py b/addons/sale_mrp/__openerp__.py
index bc9b84cd471..7f9c1c2dc56 100644
--- a/addons/sale_mrp/__openerp__.py
+++ b/addons/sale_mrp/__openerp__.py
@@ -40,7 +40,10 @@ from sales order. It adds sales name and sales Reference on production order.
'sale_mrp_view.xml',
],
'demo': [],
- 'test':['test/sale_mrp.yml'],
+ 'test':[
+ 'test/cancellation_propagated.yml',
+ 'test/sale_mrp.yml',
+ ],
'installable': True,
'auto_install': True,
}
diff --git a/addons/sale_mrp/sale_mrp.py b/addons/sale_mrp/sale_mrp.py
index ffdf0384913..1852326c86f 100644
--- a/addons/sale_mrp/sale_mrp.py
+++ b/addons/sale_mrp/sale_mrp.py
@@ -64,9 +64,9 @@ class mrp_production(osv.osv):
if parent_move_line:
move = move_obj.browse(cr, uid, parent_move_line)
if field_name == 'name':
- res[production.id] = move.sale_line_id and move.sale_line_id.order_id.name or False
+ res[production.id] = move.procurement_id and move.procurement_id.sale_line_id and move.procurement_id.sale_line_id.order_id.name or False
if field_name == 'client_order_ref':
- res[production.id] = move.sale_line_id and move.sale_line_id.order_id.client_order_ref or False
+ res[production.id] = move.procurement_id and move.procurement_id.sale_line_id and move.procurement_id.sale_line_id.order_id.client_order_ref or False
return res
def _hook_create_post_procurement(self, cr, uid, production, procurement_id, context=None):
@@ -74,8 +74,8 @@ class mrp_production(osv.osv):
if move.move_dest_id:
return get_parent_move(move.move_dest_id)
return move
-
- res = super(mrp_production, self)._hook_create_post_procurement(cr, uid, production, procurement_id, context)
+
+ res = super(mrp_production, self)._hook_create_post_procurement(cr, uid, production, procurement_id, context)
if production.move_prod_id:
parent_move_line = get_parent_move(production.move_prod_id)
if parent_move_line and parent_move_line.sale_line_id:
@@ -89,9 +89,17 @@ class mrp_production(osv.osv):
class sale_order(osv.Model):
- _inherit ='sale.order'
+ _inherit = 'sale.order'
- def _prepare_order_line_procurement(self, cr, uid, order, line, move_id, date_planned, context=None):
- result = super(sale_order, self)._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, context)
+ def _prepare_order_line_procurement(self, cr, uid, order, line, group_id=False, context=None):
+ result = super(sale_order, self)._prepare_order_line_procurement(cr, uid, order, line, group_id=group_id, context=context)
result['property_ids'] = [(6, 0, [x.id for x in line.property_ids])]
return result
+
+
+class sale_order_line(osv.osv):
+
+ _inherit = 'sale.order.line'
+ _columns = {
+ 'property_ids': fields.many2many('mrp.property', 'sale_order_line_property_rel', 'order_id', 'property_id', 'Properties', readonly=True, states={'draft': [('readonly', False)]}),
+ }
diff --git a/addons/sale_mrp/test/cancellation_propagated.yml b/addons/sale_mrp/test/cancellation_propagated.yml
new file mode 100644
index 00000000000..0005e15db53
--- /dev/null
+++ b/addons/sale_mrp/test/cancellation_propagated.yml
@@ -0,0 +1,92 @@
+-
+ I first create a warehouse with pick-pack-ship and reception in 2 steps
+-
+ !record {model: stock.warehouse, id: wh_pps}:
+ name: WareHouse PickPackShip
+ code: whpps
+ reception_steps: 'two_steps'
+ delivery_steps: 'pick_pack_ship'
+ manufacture_to_resupply: True
+-
+ Next I create a new product in this warehouse
+-
+ !record {model: product.product, id: product_manu}:
+ name: "My MTO Product"
+ type: product
+ uom_id: product.product_uom_unit
+ uom_po_id: product.product_uom_unit
+-
+ I create a bom for this product
+-
+ !record {model: mrp.bom, id: mrp_bom_test1}:
+ company_id: base.main_company
+ name: My BOM
+ product_id: product_manu
+ product_qty: 1.0
+ type: normal
+ bom_lines:
+ - company_id: base.main_company
+ name: GrapWorks Software
+ product_id: product.product_product_44
+ product_qty: 1.0
+-
+ And set routes on product to be MTO and manufacture
+-
+ !python {model: product.product}: |
+ route_warehouse0_manufacture = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).manufacture_pull_id.route_id.id
+ route_warehouse0_mto = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).mto_pull_id.route_id.id
+ self.write(cr, uid, ref('product_manu'), { 'route_ids': [(6, 0, [route_warehouse0_mto,route_warehouse0_manufacture])]}, context=context)
+-
+ I create a sales order
+-
+ !record {model: sale.order, id: sale_order_product_manu}:
+ partner_id: base.res_partner_3
+ note: Create Sales order
+ warehouse_id: wh_pps
+ order_line:
+ - product_id: product_manu
+ product_uom_qty: 5.00
+
+-
+ Confirm sales order
+-
+ !workflow {model: sale.order, action: order_confirm, ref: sale_order_product_manu}
+-
+ I run scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ Check the propagation when we cancel the main procurement
+ * Retrieve related procurements and check that there are all running
+ * Check that the purchase order has been well created
+ * Cancel the main procurement
+ * Check that all procurements related and the purchase order has been well cancelled
+-
+ !python {model: procurement.order}: |
+ # Retrieve related procu
+ so = self.pool.get('sale.order').browse(cr, uid, ref('sale_order_product_manu'))
+ procu_ids = self.search(cr, uid, [('group_id.name', '=', so.name)])
+ assert len(procu_ids)>0, 'No procurements are found for sale order "%s" (with id : %d)' %(so.name, so.id)
+
+ # Check that all procurements are running
+ for procu in self.browse(cr, uid, procu_ids, context=context):
+ assert procu.state == u'running', 'Procurement with id %d should be "running" but is with a state : %s!' %(procu.id, procu.state)
+
+ # Check that one production order exist
+ prodor_ids = [proc.production_id for proc in self.browse(cr, uid, procu_ids) if proc.production_id]
+ assert len(prodor_ids) > 0, 'No production order found !'
+
+ # Cancel the main procurement
+ main_procu_id = self.search(cr, uid, [('origin', '=', so.name)])
+ assert len(main_procu_id) == 1, 'Main procurement not identified !'
+ self.cancel(cr, uid, main_procu_id,context=context)
+ assert self.browse(cr, uid, main_procu_id[0]).state == u'cancel', 'Main procurement should be cancelled !'
+
+ # Check that all procurements related are cancelled
+ for procu in self.browse(cr, uid, procu_ids, context=context):
+ assert procu.state == u'cancel', 'Procurement with id %d should be with the state "cancel" but is with a state : %s!' %(procu.id, procu.state)
+
+ # Check that the production order is cancelled
+ for prodor in self.pool.get('mrp.production').browse(cr, uid, [prodor.id for prodor in prodor_ids], context=context):
+ assert prodor.state == u'cancel', 'Production order %d should be cancelled but is in state : %s!' %(prodor.id, prodor.state)
diff --git a/addons/sale_mrp/test/sale_mrp.yml b/addons/sale_mrp/test/sale_mrp.yml
index f0ec2de6efc..85e25b502f3 100644
--- a/addons/sale_mrp/test/sale_mrp.yml
+++ b/addons/sale_mrp/test/sale_mrp.yml
@@ -1,5 +1,5 @@
-
- In order to test the sale_mrp module in OpenERP,I start by creating a new product 'Slider Mobile'
+ In order to test the sale_mrp module in OpenERP, I start by creating a new product 'Slider Mobile'
-
I define product category Mobile Products Sellable.
-
@@ -15,13 +15,10 @@
-
!record {model: product.template, id: product_template_slidermobile0}:
categ_id: product_category_allproductssellable0
- cost_method: standard
list_price: 200.0
mes_type: fixed
name: Slider Mobile
- procure_method: make_to_order
standard_price: 189.0
- supply_method: produce
type: product
uom_id: product.product_uom_unit
uom_po_id: product.product_uom_unit
@@ -30,11 +27,9 @@
-
!record {model: product.product, id: product_product_slidermobile0}:
categ_id: product_category_allproductssellable0
- cost_method: standard
list_price: 200.0
mes_type: fixed
name: Slider Mobile
- procure_method: make_to_order
seller_delay: '1'
seller_ids:
- delay: 1
@@ -42,10 +37,16 @@
min_qty: 2.0
qty: 5.0
standard_price: 189.0
- supply_method: produce
type: product
uom_id: product.product_uom_unit
uom_po_id: product.product_uom_unit
+-
+ I add the routes manufacture and mto to the product
+-
+ !python {model: product.product, id: scheduler_product}: |
+ route_warehouse0_manufacture = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).manufacture_pull_id.route_id.id
+ route_warehouse0_mto = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).mto_pull_id.route_id.id
+ self.write(cr, uid, ref('product_product_slidermobile0'), { 'route_ids': [(6, 0, [route_warehouse0_mto,route_warehouse0_manufacture])]}, context=context)
-
I create a Bill of Material record for Slider Mobile
-
@@ -65,7 +66,6 @@
!record {model: sale.order, id: sale_order_so0}:
client_order_ref: ref1
date_order: !eval time.strftime('%Y-%m-%d')
- invoice_quantity: order
name: Test_SO001
order_line:
- name: Slider Mobile
@@ -76,7 +76,6 @@
delay: 7.0
product_id: product_product_slidermobile0
product_uos_qty: 500.0
- type: make_to_order
order_policy: manual
partner_id: base.res_partner_4
partner_invoice_id: base.res_partner_address_7
@@ -101,23 +100,25 @@
!python {model: procurement.order}: |
sale_order_obj = self.pool.get('sale.order')
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- self.signal_button_check(cr, uid, proc_ids)
+ proc_ids = self.search(cr, uid, [('origin','like',so.name)])
+ self.run(cr, uid, proc_ids)
-
I verify that a procurement state is "running"
-
!python {model: procurement.order}: |
sale_order_obj = self.pool.get('sale.order')
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- proc_ids = self.search(cr, uid, [('origin','=',so.name) and ('state','=','running')])
- assert proc_ids, 'Procurement is not in the running state!'
+ proc_ids = self.search(cr, uid, [('origin','like',so.name)])
+ # Check that all procurement are running
+ for procu in self.browse(cr,uid,proc_ids,context=context):
+ assert procu.state == u'running', 'Procurement with id %d should be with a state "running" but is with a state : %s!' %(procu.id,procu.state)
-
I verify that a manufacturing order has been generated, and that its name and reference are correct
-
!python {model: sale.order}: |
mnf_obj = self.pool.get('mrp.production')
so = self.browse(cr, uid, ref("sale_order_so0"))
- mnf_id = mnf_obj.search(cr, uid, [('origin','=',so.name)])
+ mnf_id = mnf_obj.search(cr, uid, [('origin','like',so.name)])
assert mnf_id, 'Manufacturing order has not been generated'
mo = mnf_obj.browse(cr, uid, mnf_id)[0]
assert mo.sale_name == so.name, 'Wrong Name for the Manufacturing Order. Expected %s, Got %s' % (so.name, mo.name)
diff --git a/addons/stock/tests/__init__.py b/addons/sale_mrp/tests/__init__.py
similarity index 95%
rename from addons/stock/tests/__init__.py
rename to addons/sale_mrp/tests/__init__.py
index 39ebd5e451f..0ca809f8e9c 100644
--- a/addons/stock/tests/__init__.py
+++ b/addons/sale_mrp/tests/__init__.py
@@ -19,10 +19,10 @@
#
##############################################################################
-from . import test_multicompany
+from . import test_move_explode
checks = [
- test_multicompany,
+ test_move_explode,
]
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale_mrp/tests/test_move_explode.py b/addons/sale_mrp/tests/test_move_explode.py
new file mode 100644
index 00000000000..5bb8e8550cc
--- /dev/null
+++ b/addons/sale_mrp/tests/test_move_explode.py
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Business Applications
+# Copyright (c) 2012-TODAY OpenERP S.A.
+#
+# 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.tests import common
+
+
+class TestMoveExplode(common.TransactionCase):
+
+ def setUp(self):
+ super(TestMoveExplode, self).setUp()
+ cr, uid = self.cr, self.uid
+
+ # Usefull models
+ self.ir_model_data = self.registry('ir.model.data')
+ self.sale_order_line = self.registry('sale.order.line')
+ self.sale_order = self.registry('sale.order')
+ self.mrp_bom = self.registry('mrp.bom')
+
+ #product that has a phantom bom
+ self.product_bom_id = self.ir_model_data.get_object_reference(cr, uid, 'product', 'product_product_4')[1]
+ #bom with that product
+ self.bom_id = self.ir_model_data.get_object_reference(cr, uid, 'mrp', 'mrp_bom_24')[1]
+ #partner agrolait
+ self.partner_id = self.ir_model_data.get_object_reference(cr, uid, 'base', 'res_partner_1')[1]
+
+ def test_00_sale_move_explode(self):
+ """check that when creating a sale order with a product that has a phantom BoM, move explode into content of the
+ BoM"""
+ cr, uid, context = self.cr, self.uid, {}
+ #create sale order with one sale order line containing product with a phantom bom
+ so_id = self.sale_order.create(cr, uid, vals={'partner_id': self.partner_id}, context=context)
+ self.sale_order_line.create(cr, uid, values={'order_id': so_id, 'product_id': self.product_bom_id, 'product_uom_qty': 1}, context=context)
+ #confirm sale order
+ self.sale_order.action_button_confirm(cr, uid, [so_id], context=context)
+ #get all move associated to that sale_order
+ browse_move_ids = self.sale_order.browse(cr, uid, so_id, context=context).picking_ids[0].move_lines
+ move_ids = [x.id for x in browse_move_ids]
+ #we should have same amount of move as the component in the phatom bom
+ bom = self.mrp_bom.browse(cr, uid, self.bom_id, context=context)
+ bom_component_length = self.mrp_bom._bom_explode(cr, uid, bom, 1, [])
+ self.assertEqual(len(move_ids), len(bom_component_length[0]))
diff --git a/addons/sale_order_dates/sale_order_dates.py b/addons/sale_order_dates/sale_order_dates.py
index f3ff971be9f..61d28f2bbce 100644
--- a/addons/sale_order_dates/sale_order_dates.py
+++ b/addons/sale_order_dates/sale_order_dates.py
@@ -23,7 +23,7 @@ from datetime import datetime, timedelta
from openerp.osv import fields, osv
from openerp.tools.translate import _
-from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
+from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
class sale_order_dates(osv.osv):
"""Add several date fields to Sale Orders, computed or user-entered"""
@@ -32,21 +32,17 @@ class sale_order_dates(osv.osv):
def copy(self, cr, uid, id, default=None, context=None):
"""Don't copy the requested date along with the Sales Order"""
default = dict(default or {}, requested_date=False)
- return super(sale_order_dates, self).copy(cr, uid, id, default=default,
- context=context)
-
- def _get_date_planned(self, cr, uid, order, line, start_date, context=None):
+ return super(sale_order_dates, self).copy(cr, uid, id, default=default, context=context)
+
+ def _get_date_planned(self, cr, uid, order, line, start_date, context=None):
"""Compute the expected date from the requested date, not the order date"""
if order and order.requested_date:
- planned_str = self.date_to_datetime(cr, uid,
- order.requested_date, context)
- date_planned = datetime.strptime(planned_str,
- DEFAULT_SERVER_DATETIME_FORMAT)
+ date_planned = datetime.strptime(order.requested_date, DEFAULT_SERVER_DATETIME_FORMAT)
date_planned -= timedelta(days=order.company_id.security_lead)
return date_planned.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
return super(sale_order_dates, self)._get_date_planned(
cr, uid, order, line, start_date, context=context)
-
+
def _get_effective_date(self, cr, uid, ids, name, arg, context=None):
"""Read the shipping date from the related packings"""
# TODO: would be better if it returned the date the picking was processed?
@@ -67,14 +63,11 @@ class sale_order_dates(osv.osv):
res = {}
dates_list = []
for order in self.browse(cr, uid, ids, context=context):
- order_datetime_str = self.date_to_datetime(cr, uid, order.date_order,
- context)
- order_datetime = datetime.strptime(order_datetime_str,
- DEFAULT_SERVER_DATETIME_FORMAT)
dates_list = []
+ order_datetime = datetime.strptime(order.date_order, DEFAULT_SERVER_DATETIME_FORMAT)
for line in order.order_line:
dt = order_datetime + timedelta(days=line.delay or 0.0)
- dt_s = dt.strftime(DEFAULT_SERVER_DATE_FORMAT)
+ dt_s = dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
dates_list.append(dt_s)
if dates_list:
res[order.id] = min(dates_list)
@@ -83,8 +76,7 @@ class sale_order_dates(osv.osv):
def onchange_requested_date(self, cr, uid, ids, requested_date,
commitment_date, context=None):
"""Warn if the requested dates is sooner than the commitment date"""
- if (requested_date and commitment_date
- and requested_date < commitment_date):
+ if (requested_date and commitment_date and requested_date < commitment_date):
return {'warning': {
'title': _('Requested date is too soon!'),
'message': _("The date requested by the customer is "
@@ -96,11 +88,11 @@ class sale_order_dates(osv.osv):
_columns = {
'commitment_date': fields.function(_get_commitment_date, store=True,
- type='date', string='Commitment Date',
+ type='datetime', string='Commitment Date',
help="Date by which the products are sure to be delivered. This is "
"a date that you can promise to the customer, based on the "
"Product Lead Times."),
- 'requested_date': fields.date('Requested Date',
+ 'requested_date': fields.datetime('Requested Date',
readonly=True, states={'draft': [('readonly', False)]},
help="Date by which the customer has requested the items to be "
"delivered.\n"
diff --git a/addons/sale_order_dates/test/requested_date.yml b/addons/sale_order_dates/test/requested_date.yml
index d05191a4d99..0e8f7fb1816 100644
--- a/addons/sale_order_dates/test/requested_date.yml
+++ b/addons/sale_order_dates/test/requested_date.yml
@@ -18,15 +18,12 @@
!python {model: sale.order}: |
from datetime import datetime, timedelta
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
-
+ from openerp.osv import fields
so = self.browse(cr, uid, ref("sale.sale_order_6"))
security_delay = timedelta(days=so.company_id.security_lead)
- requested_date = datetime.strptime(
- self.date_to_datetime(cr, uid, so.requested_date),
- DEFAULT_SERVER_DATETIME_FORMAT)
- right_date = (requested_date - security_delay).strftime(
- DEFAULT_SERVER_DATETIME_FORMAT)
+ requested_date = datetime.strptime(so.requested_date, DEFAULT_SERVER_DATETIME_FORMAT)
+ right_date = (requested_date - security_delay).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
for line in so.order_line:
- assert line.procurement_id, "No Procurement was created"
- assert line.procurement_id.date_planned == right_date, "The planned date for the Procurement Order is wrong"
- assert line.procurement_id.move_id.date_expected == right_date, "The expected date for the Stock Move is wrong"
+ assert line.procurement_ids, "No Procurement was created"
+ assert line.procurement_ids[0].date_planned == right_date, "The planned date for the Procurement Order is wrong"
+ assert line.procurement_ids[0].move_ids and line.procurement_ids[0].move_ids[0].date_expected == right_date, "The expected date for the Stock Move is wrong"
diff --git a/addons/sale_stock/__init__.py b/addons/sale_stock/__init__.py
index b5899113530..72b3d5672d5 100644
--- a/addons/sale_stock/__init__.py
+++ b/addons/sale_stock/__init__.py
@@ -20,9 +20,7 @@
##############################################################################
import sale_stock
-import stock
import report
import company
import res_config
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/sale_stock/__openerp__.py b/addons/sale_stock/__openerp__.py
index 356d2715d2b..dececc36e87 100644
--- a/addons/sale_stock/__openerp__.py
+++ b/addons/sale_stock/__openerp__.py
@@ -45,26 +45,25 @@ You can choose flexible invoicing methods:
'author': 'OpenERP SA',
'website': 'http://www.openerp.com',
'images': ['images/deliveries_to_invoice.jpeg'],
- 'depends': ['sale', 'stock', 'procurement'],
+ 'depends': ['sale', 'stock_account'],
'data': [
- 'security/sale_stock_security.xml',
- 'security/ir.model.access.csv',
- 'company_view.xml',
- 'sale_stock_view.xml',
- 'sale_stock_workflow.xml',
- 'stock_view.xml',
- 'res_config_view.xml',
- 'report/sale_report_view.xml',
- ],
- 'demo': ['sale_stock_demo.xml'],
- 'test': ['test/sale_stock_users.yml',
- 'test/cancel_order_sale_stock.yml',
- 'test/picking_order_policy.yml',
- 'test/prepaid_order_policy.yml',
- 'test/sale_order_onchange.yml',
- ],
+ 'security/sale_stock_security.xml',
+ 'security/ir.model.access.csv',
+ 'company_view.xml',
+ 'sale_stock_view.xml',
+ 'sale_stock_workflow.xml',
+ 'stock_view.xml',
+ 'res_config_view.xml',
+ 'report/sale_report_view.xml',
+ ],
+ 'demo': ['sale_stock_demo.xml'],
+ 'test': [
+ 'test/sale_stock_users.yml',
+ 'test/cancel_order_sale_stock.yml',
+ 'test/picking_order_policy.yml',
+ 'test/prepaid_order_policy.yml',
+ 'test/sale_order_onchange.yml',
+ ],
'installable': True,
'auto_install': True,
-
}
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale_stock/company.py b/addons/sale_stock/company.py
index 5be1dbd524d..129c412187a 100644
--- a/addons/sale_stock/company.py
+++ b/addons/sale_stock/company.py
@@ -34,5 +34,3 @@ class company(osv.osv):
_defaults = {
'security_lead': 0.0,
}
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale_stock/report/__init__.py b/addons/sale_stock/report/__init__.py
index 418927acc78..db31a38b3f3 100644
--- a/addons/sale_stock/report/__init__.py
+++ b/addons/sale_stock/report/__init__.py
@@ -18,4 +18,5 @@
# along with this program. If not, see .
#
##############################################################################
-import sale_report
\ No newline at end of file
+
+import sale_report
diff --git a/addons/sale_stock/report/sale_report.py b/addons/sale_stock/report/sale_report.py
index 7a8234fa7fa..2d126fcdb2a 100644
--- a/addons/sale_stock/report/sale_report.py
+++ b/addons/sale_stock/report/sale_report.py
@@ -46,4 +46,3 @@ class sale_report(osv.osv):
def _group_by(self):
return super(sale_report, self)._group_by() + ", s.warehouse_id, s.shipped"
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale_stock/res_config.py b/addons/sale_stock/res_config.py
index 16af83dd5ac..8c1d5c87f99 100644
--- a/addons/sale_stock/res_config.py
+++ b/addons/sale_stock/res_config.py
@@ -51,6 +51,9 @@ class sale_configuration(osv.osv_memory):
help="Allows you to tag sales order lines with properties."),
'module_project_timesheet': fields.boolean("Project Timesheet"),
'module_project_mrp': fields.boolean("Project MRP"),
+ 'group_route_so_lines': fields.boolean('Choose MTO, drop shipping,... on sales order lines',
+ implied_group='sale_stock.group_route_so_lines',
+ help="Allows you to choose a delivery route on sales order lines"),
}
_defaults = {
@@ -80,7 +83,7 @@ class sale_configuration(osv.osv_memory):
ir_values.set_default(cr, SUPERUSER_ID, 'sale.order', 'picking_policy', default_picking_policy)
res = super(sale_configuration, self).set_sale_defaults(cr, uid, ids, context)
return res
-
+
def onchange_invoice_methods(self, cr, uid, ids, group_invoice_so_lines, group_invoice_deli_orders, context=None):
if not group_invoice_deli_orders:
return {'value': {'default_order_policy': 'manual'}}
diff --git a/addons/sale_stock/res_config_view.xml b/addons/sale_stock/res_config_view.xml
index b039251d827..89c2f191915 100644
--- a/addons/sale_stock/res_config_view.xml
+++ b/addons/sale_stock/res_config_view.xml
@@ -1,7 +1,6 @@
-
sale settingssale.config.settings
@@ -25,14 +24,14 @@
-
+
-
+
@@ -62,9 +61,14 @@
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index b2ee991bf0e..0020ebf1d8e 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -22,48 +22,22 @@
from datetime import datetime, timedelta
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP, float_compare
from openerp.osv import fields, osv
+from openerp.tools.safe_eval import safe_eval as eval
from openerp.tools.translate import _
import pytz
from openerp import SUPERUSER_ID
class sale_order(osv.osv):
_inherit = "sale.order"
-
+
def copy(self, cr, uid, id, default=None, context=None):
if not default:
default = {}
default.update({
'shipped': False,
- 'picking_ids': [],
+ 'picking_ids': []
})
return super(sale_order, self).copy(cr, uid, id, default, context=context)
-
- def shipping_policy_change(self, cr, uid, ids, policy, context=None):
- if not policy:
- return {}
- inv_qty = 'order'
- if policy == 'prepaid':
- inv_qty = 'order'
- elif policy == 'picking':
- inv_qty = 'procurement'
- return {'value': {'invoice_quantity': inv_qty}}
-
- def write(self, cr, uid, ids, vals, context=None):
- if vals.get('order_policy', False):
- if vals['order_policy'] == 'prepaid':
- vals.update({'invoice_quantity': 'order'})
- elif vals['order_policy'] == 'picking':
- vals.update({'invoice_quantity': 'procurement'})
- return super(sale_order, self).write(cr, uid, ids, vals, context=context)
-
- def create(self, cr, uid, vals, context=None):
- if vals.get('order_policy', False):
- if vals['order_policy'] == 'prepaid':
- vals.update({'invoice_quantity': 'order'})
- if vals['order_policy'] == 'picking':
- vals.update({'invoice_quantity': 'procurement'})
- order = super(sale_order, self).create(cr, uid, vals, context=context)
- return order
def _get_default_warehouse(self, cr, uid, context=None):
company_id = self.pool.get('res.users')._get_company(cr, uid, context=context)
@@ -72,60 +46,50 @@ class sale_order(osv.osv):
return False
return warehouse_ids[0]
- # This is False
- def _picked_rate(self, cr, uid, ids, name, arg, context=None):
- if not ids:
- return {}
+ def _get_shipped(self, cr, uid, ids, name, args, context=None):
res = {}
- tmp = {}
- for id in ids:
- tmp[id] = {'picked': 0.0, 'total': 0.0}
- cr.execute('''SELECT
- p.sale_id as sale_order_id, sum(m.product_qty) as nbr, mp.state as procurement_state, m.state as move_state, p.type as picking_type
- FROM
- stock_move m
- LEFT JOIN
- stock_picking p on (p.id=m.picking_id)
- LEFT JOIN
- procurement_order mp on (mp.move_id=m.id)
- WHERE
- p.sale_id IN %s GROUP BY m.state, mp.state, p.sale_id, p.type''', (tuple(ids),))
-
- for item in cr.dictfetchall():
- if item['move_state'] == 'cancel':
- continue
-
- if item['picking_type'] == 'in':#this is a returned picking
- tmp[item['sale_order_id']]['total'] -= item['nbr'] or 0.0 # Deducting the return picking qty
- if item['procurement_state'] == 'done' or item['move_state'] == 'done':
- tmp[item['sale_order_id']]['picked'] -= item['nbr'] or 0.0
+ for sale in self.browse(cr, uid, ids, context=context):
+ group = sale.procurement_group_id
+ if group:
+ res[sale.id] = all([proc.state in ['cancel', 'done'] for proc in group.procurement_ids])
else:
- tmp[item['sale_order_id']]['total'] += item['nbr'] or 0.0
- if item['procurement_state'] == 'done' or item['move_state'] == 'done':
- tmp[item['sale_order_id']]['picked'] += item['nbr'] or 0.0
-
- for order in self.browse(cr, uid, ids, context=context):
- if order.shipped:
- res[order.id] = 100.0
- else:
- res[order.id] = tmp[order.id]['total'] and (100.0 * tmp[order.id]['picked'] / tmp[order.id]['total']) or 0.0
+ res[sale.id] = False
return res
-
+
+ def _get_orders(self, cr, uid, ids, context=None):
+ res = set()
+ for move in self.browse(cr, uid, ids, context=context):
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ res.add(move.procurement_id.sale_line_id.order_id.id)
+ return list(res)
+
+ def _get_orders_procurements(self, cr, uid, ids, context=None):
+ res = set()
+ for proc in self.pool.get('procurement.order').browse(cr, uid, ids, context=context):
+ if proc.state =='done' and proc.sale_line_id:
+ res.add(proc.sale_line_id.order_id.id)
+ return list(res)
+
+ def _get_picking_ids(self, cr, uid, ids, name, args, context=None):
+ res = {}
+ for sale in self.browse(cr, uid, ids, context=context):
+ if not sale.procurement_group_id:
+ res[sale.id] = []
+ continue
+ res[sale.id] = self.pool.get('stock.picking').search(cr, uid, [('group_id', '=', sale.procurement_group_id.id)], context=context)
+ return res
+
+ def _prepare_order_line_procurement(self, cr, uid, order, line, group_id=False, context=None):
+ vals = super(sale_order, self)._prepare_order_line_procurement(cr, uid, order, line, group_id=group_id, context=context)
+ location_id = order.partner_shipping_id.property_stock_customer.id
+ vals['location_id'] = location_id
+ routes = line.route_id and [(4, line.route_id.id)] or []
+ vals['route_ids'] = routes
+ vals['warehouse_id'] = order.warehouse_id and order.warehouse_id.id or False
+ vals['partner_dest_id'] = order.partner_shipping_id.id
+ return vals
+
_columns = {
- 'state': fields.selection([
- ('draft', 'Draft Quotation'),
- ('sent', 'Quotation Sent'),
- ('cancel', 'Cancelled'),
- ('waiting_date', 'Waiting Schedule'),
- ('progress', 'Sales Order'),
- ('manual', 'Sale to Invoice'),
- ('shipping_except', 'Shipping Exception'),
- ('invoice_except', 'Invoice Exception'),
- ('done', 'Done'),
- ], 'Status', readonly=True,help="Gives the status of the quotation or sales order.\
- \nThe exception status is automatically set when a cancel operation occurs \
- in the invoice validation (Invoice Exception) or in the picking list process (Shipping Exception).\nThe 'Waiting Schedule' status is set when the invoice is confirmed\
- but waiting for the scheduler to run on the order date.", select=True),
'incoterm': fields.many2one('stock.incoterms', 'Incoterm', help="International Commercial Terms are a series of predefined commercial terms used in international transactions."),
'picking_policy': fields.selection([('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')],
'Shipping Policy', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]},
@@ -136,33 +100,17 @@ class sale_order(osv.osv):
('prepaid', 'Before Delivery'),
], 'Create Invoice', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]},
help="""On demand: A draft invoice can be created from the sales order when needed. \nOn delivery order: A draft invoice can be created from the delivery order when the products have been delivered. \nBefore delivery: A draft invoice is created from the sales order and must be paid before the products can be delivered."""),
- 'picking_ids': fields.one2many('stock.picking.out', 'sale_id', 'Related Picking', readonly=True, help="This is a list of delivery orders that has been generated for this sales order."),
- 'shipped': fields.boolean('Delivered', readonly=True, help="It indicates that the sales order has been delivered. This field is updated only after the scheduler(s) have been launched."),
- 'picked_rate': fields.function(_picked_rate, string='Picked', type='float'),
+ 'shipped': fields.function(_get_shipped, string='Delivered', type='boolean', store={
+ 'procurement.order': (_get_orders_procurements, ['state'], 10)
+ }),
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True),
- 'invoice_quantity': fields.selection([('order', 'Ordered Quantities'), ('procurement', 'Shipped Quantities')], 'Invoice on',
- help="The sales order will automatically create the invoice proposition (draft invoice).\
- You have to choose if you want your invoice based on ordered ", required=True, readonly=True, states={'draft': [('readonly', False)]}),
+ 'picking_ids': fields.function(_get_picking_ids, method=True, type='one2many', relation='stock.picking', string='Picking associated to this sale'),
}
_defaults = {
- 'warehouse_id': _get_default_warehouse,
- 'picking_policy': 'direct',
- 'order_policy': 'manual',
- 'invoice_quantity': 'order',
- }
-
- # Form filling
- def unlink(self, cr, uid, ids, context=None):
- sale_orders = self.read(cr, uid, ids, ['state'], context=context)
- unlink_ids = []
- for s in sale_orders:
- if s['state'] in ['draft', 'cancel']:
- unlink_ids.append(s['id'])
- else:
- raise osv.except_osv(_('Invalid Action!'), _('In order to delete a confirmed sales order, you must cancel it. \nTo do so, you must first cancel all related delivery order(s).'))
-
- return osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
-
+ 'warehouse_id': _get_default_warehouse,
+ 'picking_policy': 'direct',
+ 'order_policy': 'manual',
+ }
def onchange_warehouse_id(self, cr, uid, ids, warehouse_id, context=None):
val = {}
if warehouse_id:
@@ -173,33 +121,39 @@ class sale_order(osv.osv):
def action_view_delivery(self, cr, uid, ids, context=None):
'''
- This function returns an action that display existing delivery orders of given sales order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.
+ This function returns an action that display existing delivery orders
+ of given sales order ids. It can either be a in a list or in a form
+ view, if there is only one delivery order to show.
'''
+
mod_obj = self.pool.get('ir.model.data')
act_obj = self.pool.get('ir.actions.act_window')
- result = mod_obj.get_object_reference(cr, uid, 'stock', 'action_picking_tree')
+ result = mod_obj.get_object_reference(cr, uid, 'stock', 'action_picking_tree_all')
id = result and result[1] or False
result = act_obj.read(cr, uid, [id], context=context)[0]
+
#compute the number of delivery orders to display
pick_ids = []
for so in self.browse(cr, uid, ids, context=context):
pick_ids += [picking.id for picking in so.picking_ids]
+
#choose the view_mode accordingly
if len(pick_ids) > 1:
- result['domain'] = "[('id','in',["+','.join(map(str, pick_ids))+"])]"
+ result['domain'] = "[('id','in',[" + ','.join(map(str, pick_ids)) + "])]"
else:
- res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_out_form')
+ res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_form')
result['views'] = [(res and res[1] or False, 'form')]
result['res_id'] = pick_ids and pick_ids[0] or False
return result
def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_invoice = False, context=None):
- picking_obj = self.pool.get('stock.picking')
- res = super(sale_order,self).action_invoice_create( cr, uid, ids, grouped=grouped, states=states, date_invoice = date_invoice, context=context)
+ move_obj = self.pool.get("stock.move")
+ res = super(sale_order,self).action_invoice_create(cr, uid, ids, grouped=grouped, states=states, date_invoice = date_invoice, context=context)
for order in self.browse(cr, uid, ids, context=context):
if order.order_policy == 'picking':
- picking_obj.write(cr, uid, map(lambda x: x.id, order.picking_ids), {'invoice_state': 'invoiced'})
+ for picking in order.picking_ids:
+ move_obj.write(cr, uid, [x.id for x in picking.move_lines], {'invoice_state': 'invoiced'}, context=context)
return res
def action_cancel(self, cr, uid, ids, context=None):
@@ -214,13 +168,7 @@ class sale_order(osv.osv):
raise osv.except_osv(
_('Cannot cancel sales order!'),
_('You must first cancel all delivery order(s) attached to this sales order.'))
- if pick.state == 'cancel':
- for mov in pick.move_lines:
- proc_ids = proc_obj.search(cr, uid, [('move_id', '=', mov.id)])
- if proc_ids:
- proc_obj.signal_button_check(cr, uid, proc_ids)
- for r in self.read(cr, uid, ids, ['picking_ids']):
- stock_obj.signal_button_cancel(cr, uid, r['picking_ids'])
+ stock_obj.signal_button_cancel(cr, uid, [p.id for p in sale.picking_ids])
return super(sale_order, self).action_cancel(cr, uid, ids, context=context)
def action_wait(self, cr, uid, ids, context=None):
@@ -231,234 +179,18 @@ class sale_order(osv.osv):
self.write(cr, uid, [o.id], {'order_policy': 'manual'}, context=context)
return res
- def procurement_lines_get(self, cr, uid, ids, *args):
- res = []
- for order in self.browse(cr, uid, ids, context={}):
- for line in order.order_line:
- if line.procurement_id:
- res.append(line.procurement_id.id)
- return res
-
- def date_to_datetime(self, cr, uid, userdate, context=None):
- """ Convert date values expressed in user's timezone to
- server-side UTC timestamp, assuming a default arbitrary
- time of 12:00 AM - because a time is needed.
-
- :param str userdate: date string in in user time zone
- :return: UTC datetime string for server-side use
- """
- # TODO: move to fields.datetime in server after 7.0
- user_date = datetime.strptime(userdate, DEFAULT_SERVER_DATE_FORMAT)
- if context and context.get('tz'):
- tz_name = context['tz']
- else:
- tz_name = self.pool.get('res.users').read(cr, SUPERUSER_ID, uid, ['tz'])['tz']
- if tz_name:
- utc = pytz.timezone('UTC')
- context_tz = pytz.timezone(tz_name)
- user_datetime = user_date + timedelta(hours=12.0)
- local_timestamp = context_tz.localize(user_datetime, is_dst=False)
- user_datetime = local_timestamp.astimezone(utc)
- return user_datetime.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
- return user_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
-
- # if mode == 'finished':
- # returns True if all lines are done, False otherwise
- # if mode == 'canceled':
- # returns True if there is at least one canceled line, False otherwise
- def test_state(self, cr, uid, ids, mode, *args):
- assert mode in ('finished', 'canceled'), _("invalid mode for test_state")
- finished = True
- canceled = False
- write_done_ids = []
- write_cancel_ids = []
- for order in self.browse(cr, uid, ids, context={}):
- for line in order.order_line:
- if (not line.procurement_id) or (line.procurement_id.state=='done'):
- if line.state != 'done':
- write_done_ids.append(line.id)
- else:
- finished = False
- if line.procurement_id:
- if (line.procurement_id.state == 'cancel'):
- canceled = True
- if line.state != 'exception':
- write_cancel_ids.append(line.id)
- if write_done_ids:
- self.pool.get('sale.order.line').write(cr, uid, write_done_ids, {'state': 'done'})
- if write_cancel_ids:
- self.pool.get('sale.order.line').write(cr, uid, write_cancel_ids, {'state': 'exception'})
-
- if mode == 'finished':
- return finished
- elif mode == 'canceled':
- return canceled
-
- def _prepare_order_line_procurement(self, cr, uid, order, line, move_id, date_planned, context=None):
- return {
- 'name': line.name,
- 'origin': order.name,
- 'date_planned': date_planned,
- 'product_id': line.product_id.id,
- 'product_qty': line.product_uom_qty,
- 'product_uom': line.product_uom.id,
- 'product_uos_qty': (line.product_uos and line.product_uos_qty)\
- or line.product_uom_qty,
- 'product_uos': (line.product_uos and line.product_uos.id)\
- or line.product_uom.id,
- 'location_id': order.warehouse_id.lot_stock_id.id,
- 'procure_method': line.type,
- 'move_id': move_id,
- 'company_id': order.company_id.id,
- 'note': line.name,
- }
-
- def _prepare_order_line_move(self, cr, uid, order, line, picking_id, date_planned, context=None):
- location_id = order.warehouse_id.lot_stock_id.id
- output_id = order.warehouse_id.lot_output_id.id
- return {
- 'name': line.name,
- 'picking_id': picking_id,
- 'product_id': line.product_id.id,
- 'date': date_planned,
- 'date_expected': date_planned,
- 'product_qty': line.product_uom_qty,
- 'product_uom': line.product_uom.id,
- 'product_uos_qty': (line.product_uos and line.product_uos_qty) or line.product_uom_qty,
- 'product_uos': (line.product_uos and line.product_uos.id)\
- or line.product_uom.id,
- 'product_packaging': line.product_packaging.id,
- 'partner_id': line.address_allotment_id.id or order.partner_shipping_id.id,
- 'location_id': location_id,
- 'location_dest_id': output_id,
- 'sale_line_id': line.id,
- 'tracking_id': False,
- 'state': 'draft',
- #'state': 'waiting',
- 'company_id': order.company_id.id,
- 'price_unit': line.product_id.standard_price or 0.0
- }
-
- def _prepare_order_picking(self, cr, uid, order, context=None):
- pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
- return {
- 'name': pick_name,
- 'origin': order.name,
- 'date': self.date_to_datetime(cr, uid, order.date_order, context),
- 'type': 'out',
- 'state': 'auto',
- 'move_type': order.picking_policy,
- 'sale_id': order.id,
- 'partner_id': order.partner_shipping_id.id,
- 'note': order.note,
- 'invoice_state': (order.order_policy=='picking' and '2binvoiced') or 'none',
- 'company_id': order.company_id.id,
- }
-
- def ship_recreate(self, cr, uid, order, line, move_id, proc_id):
- """
- Define ship_recreate for process after shipping exception
- param order: sales order to which the order lines belong
- param line: sales order line records to procure
- param move_id: the ID of stock move
- param proc_id: the ID of procurement
- """
- move_obj = self.pool.get('stock.move')
- proc_obj = self.pool.get('procurement.order')
- if move_id and order.state == 'shipping_except':
- current_move = move_obj.browse(cr, uid, move_id)
- moves = []
- for picking in order.picking_ids:
- if picking.id != current_move.picking_id.id and picking.state != 'cancel':
- moves.extend(move for move in picking.move_lines if move.state != 'cancel' and move.sale_line_id.id == line.id)
- if moves:
- product_qty = current_move.product_qty
- product_uos_qty = current_move.product_uos_qty
- for move in moves:
- product_qty -= move.product_qty
- product_uos_qty -= move.product_uos_qty
- if product_qty > 0 or product_uos_qty > 0:
- move_obj.write(cr, uid, [move_id], {'product_qty': product_qty, 'product_uos_qty': product_uos_qty})
- proc_obj.write(cr, uid, [proc_id], {'product_qty': product_qty, 'product_uos_qty': product_uos_qty})
- else:
- current_move.unlink()
- proc_obj.unlink(cr, uid, [proc_id])
- return True
-
def _get_date_planned(self, cr, uid, order, line, start_date, context=None):
- """Compute the Stock Move date for the Sale Order Line"""
- start_date = self.date_to_datetime(cr, uid, start_date, context)
- date_planned = datetime.strptime(start_date, DEFAULT_SERVER_DATETIME_FORMAT) + timedelta(days=line.delay or 0.0)
+ date_planned = super(sale_order, self)._get_date_planned(cr, uid, order, line, start_date, context=context)
date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
return date_planned
- def _create_pickings_and_procurements(self, cr, uid, order, order_lines, picking_id=False, context=None):
- """Create the required procurements to supply sales order lines, also connecting
- the procurements to appropriate stock moves in order to bring the goods to the
- sales order's requested location.
-
- If ``picking_id`` is provided, the stock moves will be added to it, otherwise
- a standard outgoing picking will be created to wrap the stock moves, as returned
- by :meth:`~._prepare_order_picking`.
-
- Modules that wish to customize the procurements or partition the stock moves over
- multiple stock pickings may override this method and call ``super()`` with
- different subsets of ``order_lines`` and/or preset ``picking_id`` values.
-
- :param browse_record order: sales order to which the order lines belong
- :param list(browse_record) order_lines: sales order line records to procure
- :param int picking_id: optional ID of a stock picking to which the created stock moves
- will be added. A new picking will be created if ommitted.
- :return: True
- """
- move_obj = self.pool.get('stock.move')
- picking_obj = self.pool.get('stock.picking')
- procurement_obj = self.pool.get('procurement.order')
- proc_ids = []
-
- for line in order_lines:
- if line.state == 'done':
- continue
-
- date_planned = self._get_date_planned(cr, uid, order, line, order.date_order, context=context)
-
- if line.product_id:
- if line.product_id.type in ('product', 'consu'):
- if not picking_id:
- picking_id = picking_obj.create(cr, uid, self._prepare_order_picking(cr, uid, order, context=context))
- move_id = move_obj.create(cr, uid, self._prepare_order_line_move(cr, uid, order, line, picking_id, date_planned, context=context))
- else:
- # a service has no stock move
- move_id = False
-
- proc_id = procurement_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, context=context))
- proc_ids.append(proc_id)
- line.write({'procurement_id': proc_id})
- self.ship_recreate(cr, uid, order, line, move_id, proc_id)
-
- if picking_id:
- picking_obj.signal_button_confirm(cr, uid, [picking_id])
- procurement_obj.signal_button_confirm(cr, uid, proc_ids)
-
- val = {}
- if order.state == 'shipping_except':
- val['state'] = 'progress'
- val['shipped'] = False
-
- if (order.order_policy == 'manual'):
- for line in order.order_line:
- if (not line.invoiced) and (line.state not in ('cancel', 'draft')):
- val['state'] = 'manual'
- break
- order.write(val)
- return True
-
- def action_ship_create(self, cr, uid, ids, context=None):
- for order in self.browse(cr, uid, ids, context=context):
- self._create_pickings_and_procurements(cr, uid, order, order.order_line, None, context=context)
- return True
+ def _prepare_procurement_group(self, cr, uid, order, context=None):
+ res = super(sale_order, self)._prepare_procurement_group(cr, uid, order, context=None)
+ res.update({'move_type': order.picking_policy})
+ return res
def action_ship_end(self, cr, uid, ids, context=None):
+ super(sale_order, self).action_ship_end(cr, uid, ids, context=context)
for order in self.browse(cr, uid, ids, context=context):
val = {'shipped': True}
if order.state == 'shipping_except':
@@ -468,15 +200,12 @@ class sale_order(osv.osv):
if (not line.invoiced) and (line.state not in ('cancel', 'draft')):
val['state'] = 'manual'
break
- for line in order.order_line:
- towrite = []
- if line.state == 'exception':
- towrite.append(line.id)
- if towrite:
- self.pool.get('sale.order.line').write(cr, uid, towrite, {'state': 'done'}, context=context)
res = self.write(cr, uid, [order.id], val)
return True
+
+
+
def has_stockable_products(self, cr, uid, ids, *args):
for order in self.browse(cr, uid, ids):
for order_line in order.order_line:
@@ -486,6 +215,15 @@ class sale_order(osv.osv):
class sale_order_line(osv.osv):
+ _inherit = 'sale.order.line'
+
+ def need_procurement(self, cr, uid, ids, context=None):
+ #when sale is installed alone, there is no need to create procurements, but with sale_stock
+ #we must create a procurement for each product that is not a service.
+ for line in self.browse(cr, uid, ids, context=context):
+ if line.product_id and line.product_id.type != 'service':
+ return True
+ return super(sale_order_line, self).need_procurement(cr, uid, ids, context=context)
def _number_packages(self, cr, uid, ids, field_name, arg, context=None):
res = {}
@@ -496,35 +234,16 @@ class sale_order_line(osv.osv):
res[line.id] = 1
return res
- _inherit = 'sale.order.line'
- _columns = {
- 'delay': fields.float('Delivery Lead Time', required=True, help="Number of days between the order confirmation and the shipping of the products to the customer", readonly=True, states={'draft': [('readonly', False)]}),
- 'procurement_id': fields.many2one('procurement.order', 'Procurement'),
- 'property_ids': fields.many2many('mrp.property', 'sale_order_line_property_rel', 'order_id', 'property_id', 'Properties', readonly=True, states={'draft': [('readonly', False)]}),
+ _columns = {
'product_packaging': fields.many2one('product.packaging', 'Packaging'),
- 'move_ids': fields.one2many('stock.move', 'sale_line_id', 'Inventory Moves', readonly=True),
'number_packages': fields.function(_number_packages, type='integer', string='Number Packages'),
+ 'route_id': fields.many2one('stock.location.route', 'Route', domain=[('sale_selectable', '=', True)]),
}
+
_defaults = {
- 'delay': 0.0,
'product_packaging': False,
}
- def _get_line_qty(self, cr, uid, line, context=None):
- if line.procurement_id and not (line.order_id.invoice_quantity=='order'):
- return self.pool.get('procurement.order').quantity_get(cr, uid,
- line.procurement_id.id, context=context)
- else:
- return super(sale_order_line, self)._get_line_qty(cr, uid, line, context=context)
-
-
- def _get_line_uom(self, cr, uid, line, context=None):
- if line.procurement_id and not (line.order_id.invoice_quantity=='order'):
- return self.pool.get('procurement.order').uom_get(cr, uid,
- line.procurement_id.id, context=context)
- else:
- return super(sale_order_line, self)._get_line_uom(cr, uid, line, context=context)
-
def button_cancel(self, cr, uid, ids, context=None):
res = super(sale_order_line, self).button_cancel(cr, uid, ids, context=context)
for line in self.browse(cr, uid, ids, context=context):
@@ -532,7 +251,7 @@ class sale_order_line(osv.osv):
if move_line.state != 'cancel':
raise osv.except_osv(
_('Cannot cancel sales order line!'),
- _('You must first cancel stock moves attached to this sales order line.'))
+ _('You must first cancel stock moves attached to this sales order line.'))
return res
def copy_data(self, cr, uid, id, default=None, context=None):
@@ -555,14 +274,11 @@ class sale_order_line(osv.osv):
res = self.product_id_change(cr, uid, ids, pricelist=pricelist,
product=product, qty=qty, uom=uom, partner_id=partner_id,
packaging=packaging, flag=False, context=context)
- warning_msgs = res.get('warning') and res['warning']['message']
+ warning_msgs = res.get('warning') and res['warning'].get('message', '') or ''
products = product_obj.browse(cr, uid, product, context=context)
if not products.packaging:
packaging = result['product_packaging'] = False
- elif not packaging and products.packaging and not flag:
- packaging = products.packaging[0].id
- result['product_packaging'] = packaging
if packaging:
default_uom = products.uom_id and products.uom_id.id
@@ -588,12 +304,12 @@ class sale_order_line(osv.osv):
return {'value': result, 'warning': warning}
- def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,
+
+ def product_id_change_with_wh(self, cr, uid, ids, pricelist, product, qty=0,
uom=False, qty_uos=0, uos=False, name='', partner_id=False,
- lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, context=None):
+ lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, warehouse_id=False, context=None):
context = context or {}
product_uom_obj = self.pool.get('product.uom')
- partner_obj = self.pool.get('res.partner')
product_obj = self.pool.get('product.product')
warning = {}
res = super(sale_order_line, self).product_id_change(cr, uid, ids, pricelist, product, qty=qty,
@@ -607,29 +323,48 @@ class sale_order_line(osv.osv):
#update of result obtained in super function
product_obj = product_obj.browse(cr, uid, product, context=context)
res['value']['delay'] = (product_obj.sale_delay or 0.0)
- res['value']['type'] = product_obj.procure_method
-
- #check if product is available, and if not: raise an error
- uom2 = False
- if uom:
- uom2 = product_uom_obj.browse(cr, uid, uom, context=context)
- if product_obj.uom_id.category_id.id != uom2.category_id.id:
- uom = False
- if not uom2:
- uom2 = product_obj.uom_id
# Calling product_packaging_change function after updating UoM
res_packing = self.product_packaging_change(cr, uid, ids, pricelist, product, qty, uom, partner_id, packaging, context=context)
res['value'].update(res_packing.get('value', {}))
warning_msgs = res_packing.get('warning') and res_packing['warning']['message'] or ''
- compare_qty = float_compare(product_obj.virtual_available * uom2.factor, qty * product_obj.uom_id.factor, precision_rounding=product_obj.uom_id.rounding)
- if (product_obj.type=='product') and int(compare_qty) == -1 \
- and (product_obj.procure_method=='make_to_stock'):
- warn_msg = _('You plan to sell %.2f %s but you only have %.2f %s available !\nThe real stock is %.2f %s. (without reservations)') % \
- (qty, uom2 and uom2.name or product_obj.uom_id.name,
- max(0,product_obj.virtual_available), product_obj.uom_id.name,
- max(0,product_obj.qty_available), product_obj.uom_id.name)
- warning_msgs += _("Not enough stock ! : ") + warn_msg + "\n\n"
+
+ #determine if the product is MTO or not (for a further check)
+ isMto = False
+ if warehouse_id:
+ warehouse = self.pool.get('stock.warehouse').browse(cr, uid, warehouse_id, context=context)
+ for product_route in product_obj.route_ids:
+ if warehouse.mto_pull_id and warehouse.mto_pull_id.route_id and warehouse.mto_pull_id.route_id.id == product_route.id:
+ isMto = True
+ break
+ else:
+ try:
+ mto_route_id = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'route_warehouse0_mto').id
+ except:
+ # if route MTO not found in ir_model_data, we treat the product as in MTS
+ mto_route_id = False
+ if mto_route_id:
+ for product_route in product_obj.route_ids:
+ if product_route.id == mto_route_id:
+ isMto = True
+ break
+
+ #check if product is available, and if not: raise a warning, but do this only for products that aren't processed in MTO
+ if not isMto:
+ uom2 = False
+ if uom:
+ uom2 = product_uom_obj.browse(cr, uid, uom, context=context)
+ if product_obj.uom_id.category_id.id != uom2.category_id.id:
+ uom = False
+ if not uom2:
+ uom2 = product_obj.uom_id
+ compare_qty = float_compare(product_obj.virtual_available * uom2.factor, qty * product_obj.uom_id.factor, precision_rounding=product_obj.uom_id.rounding)
+ if (product_obj.type=='product') and int(compare_qty) == -1:
+ warn_msg = _('You plan to sell %.2f %s but you only have %.2f %s available !\nThe real stock is %.2f %s. (without reservations)') % \
+ (qty, uom2 and uom2.name or product_obj.uom_id.name,
+ max(0,product_obj.virtual_available), product_obj.uom_id.name,
+ max(0,product_obj.qty_available), product_obj.uom_id.name)
+ warning_msgs += _("Not enough stock ! : ") + warn_msg + "\n\n"
#update of warning messages
if warning_msgs:
@@ -640,33 +375,82 @@ class sale_order_line(osv.osv):
res.update({'warning': warning})
return res
+class stock_move(osv.osv):
+ _inherit = 'stock.move'
-class sale_advance_payment_inv(osv.osv_memory):
- _inherit = "sale.advance.payment.inv"
+ def action_cancel(self, cr, uid, ids, context=None):
+ sale_ids = []
+ for move in self.browse(cr, uid, ids, context=context):
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ sale_ids.append(move.procurement_id.sale_line_id.order_id.id)
+ if sale_ids:
+ self.pool.get('sale.order').signal_ship_except(cr, uid, sale_ids)
+ return super(stock_move, self).action_cancel(cr, uid, ids, context=context)
- def _create_invoices(self, cr, uid, inv_values, sale_id, context=None):
- result = super(sale_advance_payment_inv, self)._create_invoices(cr, uid, inv_values, sale_id, context=context)
+ def _create_invoice_line_from_vals(self, cr, uid, move, invoice_line_vals, context=None):
+ invoice_line_id = self.pool.get('account.invoice.line').create(cr, uid, invoice_line_vals, context=context)
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ sale_line = move.procurement_id.sale_line_id
+ self.pool.get('sale.order.line').write(cr, uid, [sale_line.id], {
+ 'invoice_lines': [(4, invoice_line_id)]
+ }, context=context)
+ self.pool.get('sale.order').write(cr, uid, [sale_line.order_id.id], {
+ 'invoice_ids': [(4, invoice_line_vals['invoice_id'])],
+ })
+ return invoice_line_id
+
+ def _get_master_data(self, cr, uid, move, company, context=None):
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ sale_order = move.procurement_id.sale_line_id.order_id
+ return sale_order.partner_invoice_id, sale_order.user_id.id, sale_order.pricelist_id.currency_id.id
+ return super(stock_move, self)._get_master_data(cr, uid, move, company, context=context)
+
+ def _get_invoice_line_vals(self, cr, uid, move, partner, inv_type, context=None):
+ res = super(stock_move, self)._get_invoice_line_vals(cr, uid, move, partner, inv_type, context=context)
+ if move.procurement_id and move.procurement_id.sale_line_id:
+ sale_line = move.procurement_id.sale_line_id
+ res['invoice_line_tax_id'] = [(6, 0, [x.id for x in sale_line.tax_id])]
+ res['account_analytic_id'] = sale_line.order_id.project_id and sale_line.order_id.project_id.id or False
+ res['price_unit'] = sale_line.price_unit
+ res['discount'] = sale_line.discount
+ return res
+
+
+class stock_location_route(osv.osv):
+ _inherit = "stock.location.route"
+ _columns = {
+ 'sale_selectable': fields.boolean("Selectable on Sales Order Line")
+ }
+
+
+class stock_picking(osv.osv):
+ _inherit = "stock.picking"
+
+ def _get_sale_id(self, cr, uid, ids, name, args, context=None):
+ sale_obj = self.pool.get("sale.order")
+ res = {}
+ for picking in self.browse(cr, uid, ids, context=context):
+ res[picking.id] = False
+ if picking.group_id:
+ sale_ids = sale_obj.search(cr, uid, [('procurement_group_id', '=', picking.group_id.id)], context=context)
+ if sale_ids:
+ res[picking.id] = sale_ids[0]
+ return res
+
+ _columns = {
+ 'sale_id': fields.function(_get_sale_id, type="many2one", relation="sale.order", string="Sale Order"),
+ }
+
+ def _create_invoice_from_picking(self, cr, uid, picking, vals, context=None):
sale_obj = self.pool.get('sale.order')
sale_line_obj = self.pool.get('sale.order.line')
- wizard = self.browse(cr, uid, [result], context)
- sale = sale_obj.browse(cr, uid, sale_id, context=context)
-
- # If invoice on picking: add the cost on the SO
- # If not, the advance will be deduced when generating the final invoice
- line_name = inv_values.get('invoice_line') and inv_values.get('invoice_line')[0][2].get('name') or ''
- line_tax = inv_values.get('invoice_line') and inv_values.get('invoice_line')[0][2].get('invoice_line_tax_id') or False
- if sale.order_policy == 'picking':
- vals = {
- 'order_id': sale.id,
- 'name': line_name,
- 'price_unit': -inv_amount,
- 'product_uom_qty': wizard.qtty or 1.0,
- 'product_uos_qty': wizard.qtty or 1.0,
- 'product_uos': res.get('uos_id', False),
- 'product_uom': res.get('uom_id', False),
- 'product_id': wizard.product_id.id or False,
- 'discount': False,
- 'tax_id': line_tax,
- }
- sale_line_obj.create(cr, uid, vals, context=context)
- return result
+ invoice_line_obj = self.pool.get('account.invoice.line')
+ invoice_id = super(stock_picking, self)._create_invoice_from_picking(cr, uid, picking, vals, context=context)
+ if picking.group_id:
+ sale_ids = sale_obj.search(cr, uid, [('procurement_group_id', '=', picking.group_id.id)], context=context)
+ if sale_ids:
+ sale_line_ids = sale_line_obj.search(cr, uid, [('order_id', 'in', sale_ids), ('product_id.type', '=', 'service'), ('invoiced', '=', False)], context=context)
+ if sale_line_ids:
+ created_lines = sale_line_obj.invoice_line_create(cr, uid, sale_line_ids, context=context)
+ invoice_line_obj.write(cr, uid, created_lines, {'invoice_id': invoice_id}, context=context)
+ return invoice_id
diff --git a/addons/sale_stock/sale_stock_demo.xml b/addons/sale_stock/sale_stock_demo.xml
index 42c09b7e9f0..9359e0a7875 100644
--- a/addons/sale_stock/sale_stock_demo.xml
+++ b/addons/sale_stock/sale_stock_demo.xml
@@ -38,26 +38,6 @@
-
- make_to_order
-
-
-
- make_to_order
-
-
-
- make_to_order
-
-
-
- make_to_order
-
-
-
- produce
-
-
diff --git a/addons/sale_stock/sale_stock_view.xml b/addons/sale_stock/sale_stock_view.xml
index a926a16dc14..130bcef5ed7 100644
--- a/addons/sale_stock/sale_stock_view.xml
+++ b/addons/sale_stock/sale_stock_view.xml
@@ -15,7 +15,7 @@
+ attrs="{'invisible': ['|','|','|',('picking_ids','=',False),('picking_ids','=',[]), ('state', 'not in', ('progress','manual', 'done')),('shipped','=',True)]}" groups="base.group_user"/>
@@ -26,48 +26,52 @@
-
+
-
+
-
-
+ on_change="product_id_change_with_wh(parent.pricelist_id,product_id,product_uom_qty,False,product_uos_qty,False,name,parent.partner_id, False, True, parent.date_order, product_packaging, parent.fiscal_position, False, parent.warehouse_id, context)"/>
+
+
+
+
+
+
+
+
-
+ on_change="product_id_change_with_wh(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, False, False, parent.date_order, product_packaging, parent.fiscal_position, True, parent.warehouse_id, context)"/>
+
-
+
days
-
+
-
-
-
-
-
-
-
@@ -75,10 +79,15 @@
-
-
+
+
+
+
+
+
+
@@ -109,5 +118,40 @@
groups="sale.group_delivery_invoice_address"
/>
+
+ stock.picking.search.inherit
+ stock.picking
+
+
+
+
+
+
+
+
+
+
+ sale.order.line.form.sale.stock.location
+ sale.order.line
+
+
+
+
+
+
+
+
+
+
+
+ sale.order.line.tree.sale.stock.location
+
+ sale.order.line
+
+
+
+
+
+
diff --git a/addons/sale_stock/sale_stock_workflow.xml b/addons/sale_stock/sale_stock_workflow.xml
index bb40661ba0f..30816750035 100644
--- a/addons/sale_stock/sale_stock_workflow.xml
+++ b/addons/sale_stock/sale_stock_workflow.xml
@@ -1,119 +1,6 @@
-
-
-
-
-
- wait_ship
-
-
-
-
- cancel3
- True
- stopall
- action_cancel()
-
-
-
-
- ship
- function
- action_ship_create()
-
-
-
- ship_except
- function
- write({'state':'shipping_except'})
-
-
-
-
- ship_end
- function
- action_ship_end()
-
-
-
-
- ship_cancel
- True
- stopall
- action_cancel()
-
-
-
-
-
-
-
-
-
-
-
-
- (order_policy=='picking')
-
-
-
-
-
- order_policy=='prepaid'
-
-
-
-
-
- cancel
-
-
-
-
-
- (order_policy!='prepaid') or invoiced
-
-
-
-
-
-
-
-
-
-
- procurement.order
- procurement_lines_get()
- test_state('finished')
-
-
-
-
-
- test_state('canceled')
-
-
-
-
-
-
- ship_recreate
-
-
-
-
-
- ship_corrected
-
-
-
-
-
- ship_cancel
-
-
diff --git a/addons/sale_stock/security/ir.model.access.csv b/addons/sale_stock/security/ir.model.access.csv
index 5fb48828d8f..bf643224ab2 100644
--- a/addons/sale_stock/security/ir.model.access.csv
+++ b/addons/sale_stock/security/ir.model.access.csv
@@ -6,11 +6,10 @@ access_procurement_salesman,procurement.order salesman,procurement.model_procure
access_procurement_manager,procurement.order manager,procurement.model_procurement_order,base.group_sale_manager,1,1,1,1
access_sale_order_stock_worker,sale.order stock worker,model_sale_order,stock.group_stock_user,1,1,0,0
access_sale_order_line_stock_worker,sale.order.line stock worker,model_sale_order_line,stock.group_stock_user,1,1,0,0
-access_report_stock_move_sales,report.stock.move.sale,stock.model_report_stock_move,base.group_sale_manager,1,1,1,1
access_stock_picking_sales,stock.picking.sales,stock.model_stock_picking,base.group_sale_manager,1,1,1,1
access_product_packaging_user,product.packaging.user,product.model_product_packaging,base.group_sale_salesman,1,1,1,0
access_product_packaging_manager,product.packaging.manager,product.model_product_packaging,base.group_sale_manager,1,0,0,0
access_stock_warehouse_user,stock.warehouse.user,stock.model_stock_warehouse,base.group_sale_salesman,1,0,0,0
access_stock_location_user,stock.location.user,stock.model_stock_location,base.group_sale_salesman,1,0,0,0
access_product_packaging_sale_manager,product.packaging salemanager,product.model_product_packaging,base.group_sale_manager,1,1,1,1
-access_stock_warehouse_orderpoint_sale_salesman,stock.warehouse.orderpoint,procurement.model_stock_warehouse_orderpoint,base.group_sale_salesman,1,0,0,0
\ No newline at end of file
+access_stock_warehouse_orderpoint_sale_salesman,stock.warehouse.orderpoint,stock.model_stock_warehouse_orderpoint,base.group_sale_salesman,1,0,0,0
\ No newline at end of file
diff --git a/addons/sale_stock/security/sale_stock_security.xml b/addons/sale_stock/security/sale_stock_security.xml
index 7f93084d43d..0f70053cd7c 100644
--- a/addons/sale_stock/security/sale_stock_security.xml
+++ b/addons/sale_stock/security/sale_stock_security.xml
@@ -1,11 +1,14 @@
-
-
-
- Enable Invoicing Delivery orders
-
-
-
+
+
+ Enable Invoicing Delivery orders
+
+
+
+
+ Enable Route on Sales Order Line
+
+
diff --git a/addons/sale_stock/stock.py b/addons/sale_stock/stock.py
deleted file mode 100644
index cfc8a8e634c..00000000000
--- a/addons/sale_stock/stock.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 fields, osv
-from openerp.tools.translate import _
-
-class stock_move(osv.osv):
- _inherit = 'stock.move'
- _columns = {
- 'sale_line_id': fields.many2one('sale.order.line', 'Sales Order Line', ondelete='set null', select=True, readonly=True),
- }
-
- def _prepare_chained_picking(self, cr, uid, picking_name, picking, picking_type, moves_todo, context=None):
- values = super(stock_move, self)._prepare_chained_picking(cr, uid, picking_name, picking, picking_type, moves_todo, context=context)
- if picking.sale_id:
- values['sale_id'] = picking.sale_id.id
- return values
-
-class stock_picking(osv.osv):
- _inherit = 'stock.picking'
- _columns = {
- 'sale_id': fields.many2one('sale.order', 'Sales Order', ondelete='set null', select=True),
- }
- _defaults = {
- 'sale_id': False
- }
-
- def get_currency_id(self, cursor, user, picking):
- if picking.sale_id:
- return picking.sale_id.pricelist_id.currency_id.id
- else:
- return super(stock_picking, self).get_currency_id(cursor, user, picking)
-
- def _get_partner_to_invoice(self, cr, uid, picking, context=None):
- """ Inherit the original function of the 'stock' module
- We select the partner of the sales order as the partner of the customer invoice
- """
- if picking.sale_id:
- return picking.sale_id.partner_invoice_id
- return super(stock_picking, self)._get_partner_to_invoice(cr, uid, picking, context=context)
-
- def _get_comment_invoice(self, cursor, user, picking):
- if picking.note or (picking.sale_id and picking.sale_id.note):
- return picking.note or picking.sale_id.note
- return super(stock_picking, self)._get_comment_invoice(cursor, user, picking)
-
- def _prepare_invoice_group(self, cr, uid, picking, partner, invoice, context=None):
- """ Inherit the original function of the 'stock' module in order to override name field
- to pass the customer reference form the sales order
- """
- invoice_vals = super(stock_picking, self)._prepare_invoice_group(cr, uid, picking, partner, invoice, context)
- if picking.sale_id:
- invoice_vals['name'] = (invoice.name or '') + ', ' + (picking.sale_id.client_order_ref or '')
- return invoice_vals
-
- def _prepare_invoice(self, cr, uid, picking, partner, inv_type, journal_id, context=None):
- """ Inherit the original function of the 'stock' module in order to override some
- values if the picking has been generated by a sales order
- """
- invoice_vals = super(stock_picking, self)._prepare_invoice(cr, uid, picking, partner, inv_type, journal_id, context=context)
- if picking.sale_id:
- invoice_vals['fiscal_position'] = picking.sale_id.fiscal_position.id
- invoice_vals['payment_term'] = picking.sale_id.payment_term.id
- invoice_vals['user_id'] = picking.sale_id.user_id.id
- invoice_vals['name'] = picking.sale_id.client_order_ref or ''
- return invoice_vals
-
- def _prepare_invoice_line(self, cr, uid, group, picking, move_line, invoice_id, invoice_vals, context=None):
- invoice_vals = super(stock_picking, self)._prepare_invoice_line(cr, uid, group, picking, move_line, invoice_id, invoice_vals, context=context)
- if picking.sale_id:
- if move_line.sale_line_id:
- invoice_vals['account_analytic_id'] = self._get_account_analytic_invoice(cr, uid, picking, move_line)
- return invoice_vals
-
- def _get_price_unit_invoice(self, cursor, user, move_line, type):
- if move_line.sale_line_id and move_line.sale_line_id.product_id.id == move_line.product_id.id:
- uom_id = move_line.product_id.uom_id.id
- uos_id = move_line.product_id.uos_id and move_line.product_id.uos_id.id or False
- price = move_line.sale_line_id.price_unit
- coeff = move_line.product_id.uos_coeff
- if uom_id != uos_id and coeff != 0:
- price_unit = price / coeff
- return price_unit
- return move_line.sale_line_id.price_unit
- return super(stock_picking, self)._get_price_unit_invoice(cursor, user, move_line, type)
-
- def _get_discount_invoice(self, cursor, user, move_line):
- if move_line.sale_line_id:
- return move_line.sale_line_id.discount
- return super(stock_picking, self)._get_discount_invoice(cursor, user, move_line)
-
- def _get_taxes_invoice(self, cursor, user, move_line, type):
- if move_line.sale_line_id and move_line.sale_line_id.product_id.id == move_line.product_id.id:
- return [x.id for x in move_line.sale_line_id.tax_id]
- return super(stock_picking, self)._get_taxes_invoice(cursor, user, move_line, type)
-
- def _get_account_analytic_invoice(self, cursor, user, picking, move_line):
- if picking.sale_id:
- return picking.sale_id.project_id.id
- return super(stock_picking, self)._get_account_analytic_invoice(cursor, user, picking, move_line)
-
- def _invoice_line_hook(self, cursor, user, move_line, invoice_line_id):
- if move_line.sale_line_id:
- move_line.sale_line_id.write({'invoice_lines': [(4, invoice_line_id)]})
- return super(stock_picking, self)._invoice_line_hook(cursor, user, move_line, invoice_line_id)
-
- def _invoice_hook(self, cursor, user, picking, invoice_id):
- sale_obj = self.pool.get('sale.order')
- order_line_obj = self.pool.get('sale.order.line')
- invoice_obj = self.pool.get('account.invoice')
- invoice_line_obj = self.pool.get('account.invoice.line')
- if picking.sale_id:
- sale_obj.write(cursor, user, [picking.sale_id.id], {
- 'invoice_ids': [(4, invoice_id)],
- })
- for sale_line in picking.sale_id.order_line:
- if sale_line.product_id.type == 'service' and not sale_line.invoiced:
- vals = order_line_obj._prepare_order_line_invoice_line(cursor, user, sale_line, False)
- vals['invoice_id'] = invoice_id
- invoice_line_id = invoice_line_obj.create(cursor, user, vals)
- order_line_obj.write(cursor, user, [sale_line.id], {
- 'invoice_lines': [(6, 0, [invoice_line_id])],
- })
- invoice_obj.button_compute(cursor, user, [invoice_id])
- return super(stock_picking, self)._invoice_hook(cursor, user, picking, invoice_id)
-
- def action_done(self, cr, uid, ids, context=None):
- """ Changes picking state to done. This method is called at the end of
- the workflow by the activity "done".
- """
- for record in self.browse(cr, uid, ids, context):
- if record.type == "out" and record.sale_id:
- self.pool.get('sale.order').message_post(cr, uid, [record.sale_id.id], body=_("Products delivered"), context=context)
- return super(stock_picking, self).action_done(cr, uid, ids, context=context)
-
-# Redefinition of the new field in order to update the model stock.picking.out in the orm
-# FIXME: this is a temporary workaround because of a framework bug (ref: lp996816). It should be removed as soon as
-# the bug is fixed
-class stock_picking_out(osv.osv):
- _inherit = 'stock.picking.out'
- _columns = {
- 'sale_id': fields.many2one('sale.order', 'Sale Order',
- ondelete='set null', select=True),
- }
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale_stock/stock_view.xml b/addons/sale_stock/stock_view.xml
index 165673e348a..2c7c80ba25f 100644
--- a/addons/sale_stock/stock_view.xml
+++ b/addons/sale_stock/stock_view.xml
@@ -2,66 +2,34 @@
-
- stock.move.form
- stock.move
-
+
+
+ Deliveries to Invoice
+ stock.picking
+ ir.actions.act_window
+ form
+ tree,form,calendar
+ [('picking_type_id.code','=','outgoing')]
+ {'default_type': 'out', 'contact_display': 'partner_address', 'search_default_to_invoice': 1, 'search_default_done': 1}
+
+
+
+
+
+
+
+
+
+
+ stock.location.route.form
+
+ stock.location.route
-
-
+
+
-
-
-
-
-
- Outgoing picking Inherited
- stock.picking.out
-
-
-
-
-
-
-
-
-
-
- Deliveries to Invoice
- stock.picking.out
- ir.actions.act_window
- form
- tree,form,calendar
- [('type','=','out')]
- {'default_type': 'out', 'contact_display': 'partner_address', 'search_default_to_invoice': 1, 'search_default_done': 1, 'default_invoice_state': '2binvoiced'}
-
-
-
-
diff --git a/addons/sale_stock/test/cancel_order_sale_stock.yml b/addons/sale_stock/test/cancel_order_sale_stock.yml
index 29581b944bf..77508e28a2d 100644
--- a/addons/sale_stock/test/cancel_order_sale_stock.yml
+++ b/addons/sale_stock/test/cancel_order_sale_stock.yml
@@ -7,28 +7,40 @@
-
!workflow {model: sale.order, action: order_confirm, ref: sale.sale_order_8}
-
- I send delivery in two shipments, so I am doing a partial delivery order.
--
- !python {model: stock.picking}: |
- context={}
- delivery_orders = self.search(cr, uid, [('sale_id','=',ref("sale.sale_order_8"))])
- first_picking = self.browse(cr, uid, delivery_orders[-1], context=context)
- if first_picking.force_assign(cr, uid, first_picking):
- first_move = first_picking.move_lines[0]
- values = {'move%s'%(first_move.id): {'product_qty': 2, 'product_uom':ref('product.product_uom_unit')}}
- first_picking.do_partial(values, context=context)
--
- Now I cancel latest shipment.
--
- !python {model: stock.picking}: |
- delivery_orders = self.search(cr, uid, [('sale_id','=',ref("sale.sale_order_8"))])
- last_delivery_order_id = delivery_orders[-1]
- self.pool.get('stock.picking').signal_button_cancel(cr, uid, [last_delivery_order_id])
--
- Only Stock User can change data related warehouse therefore test with that user which have stcok user rights,
+ I do a partial delivery order as a stock user.
-
!context
uid: 'res_stock_user'
+-
+ !python {model: stock.picking}: |
+ domain = [('origin','=','Test/001')]
+ picks = self.search(cr, uid, domain, context=context)
+ pick = self.browse(cr, uid, picks[-1], context=context)
+ self.pool.get('stock.pack.operation').create(cr, uid, {
+ 'picking_id': pick.id,
+ 'product_id': ref('product.product_product_27'),
+ 'product_uom_id': ref('product.product_uom_unit'),
+ 'product_qty': 1,
+ 'location_id': pick.location_id.id,
+ 'location_dest_id': pick.location_dest_id.id,
+ })
+ pick.do_transfer(context=context)
+-
+ I test that I have two pickings, one done and one backorder to do
+-
+ !python {model: stock.picking}: |
+ picks = self.search(cr, uid, [('origin','=','Test/001')])
+ assert len(picks)>1, 'Only one picking, partial picking may have failed!'
+ picks = self.search(cr, uid, [('origin','=','Test/001'), ('state','=','done')])
+ assert len(picks)==1, 'You should have one delivery order which is done!'
+ picks = self.search(cr, uid, [('origin','=','Test/001'), ('backorder_id','=',picks[0])])
+ assert len(picks)==1, 'You should have one backorder to process!'
+-
+ I cancel the backorder
+-
+ !python {model: stock.picking}: |
+ picks = self.search(cr, uid, [('origin','=','Test/001'),('backorder_id','<>',False)])
+ self.action_cancel(cr, uid, picks)
-
I run the scheduler.
-
diff --git a/addons/sale_stock/test/picking_order_policy.yml b/addons/sale_stock/test/picking_order_policy.yml
index b192c750330..4f848f3c1d4 100644
--- a/addons/sale_stock/test/picking_order_policy.yml
+++ b/addons/sale_stock/test/picking_order_policy.yml
@@ -3,6 +3,17 @@
-
!context
uid: 'res_sale_stock_salesman'
+-
+ Create a new SO to be sure we don't have one with product that can explode in mrp
+-
+ !record {model: sale.order, id: sale_order_service}:
+ partner_id: base.res_partner_18
+ partner_invoice_id: base.res_partner_18
+ partner_shipping_id: base.res_partner_18
+ user_id: base.user_root
+ pricelist_id: product.list0
+ warehouse_id: stock.warehouse0
+ order_policy: picking
-
Add SO line with service type product in SO to check flow which contain service type product in SO(BUG#1167330).
-
@@ -12,27 +23,37 @@
product_uom_qty: 1.0
product_uom: 1
price_unit: 150.0
- order_id: sale.sale_order_6
+ order_id: sale_order_service
+-
+ Add a second SO line with a normal product
+-
+ !record {model: sale.order.line, id: sale_order_2}:
+ name: 'Mouse Optical'
+ product_id: product.product_product_10
+ product_uom_qty: 1.0
+ product_uom: 1
+ price_unit: 150.0
+ order_id: sale_order_service
-
First I check the total amount of the Quotation before Approved.
-
- !assert {model: sale.order, id: sale.sale_order_6, string: The amount of the Quotation is not correctly computed}:
+ !assert {model: sale.order, id: sale_order_service, string: The amount of the Quotation is not correctly computed}:
- sum([l.price_subtotal for l in order_line]) == amount_untaxed
-
I set an explicit invoicing partner that is different from the main SO Customer
-
- !python {model: sale.order, id: sale.sale_order_6}: |
- order = self.browse(cr, uid, ref("sale.sale_order_6"))
+ !python {model: sale.order, id: sale_order_service}: |
+ order = self.browse(cr, uid, ref("sale_order_service"))
order.write({'partner_invoice_id': ref('base.res_partner_address_29')})
-
I confirm the quotation with Invoice based on deliveries policy.
-
- !workflow {model: sale.order, action: order_confirm, ref: sale.sale_order_6}
+ !workflow {model: sale.order, action: order_confirm, ref: sale_order_service}
-
I check that invoice should not created before dispatch delivery.
-
!python {model: sale.order}: |
- order = self.pool.get('sale.order').browse(cr, uid, ref("sale.sale_order_6"))
+ order = self.pool.get('sale.order').browse(cr, uid, ref("sale_order_service"))
assert order.state == 'progress', 'Order should be in inprogress.'
assert len(order.invoice_ids) == False, "Invoice should not created."
-
@@ -42,17 +63,16 @@
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
- order = self.browse(cr, uid, ref("sale.sale_order_6"))
+ order = self.browse(cr, uid, ref("sale_order_service"))
for order_line in order.order_line:
- procurement = order_line.procurement_id
- sale_order_date = self.date_to_datetime(cr, uid, order.date_order, context)
- date_planned = datetime.strptime(sale_order_date, DEFAULT_SERVER_DATETIME_FORMAT) + relativedelta(days=order_line.delay or 0.0)
- date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
- assert procurement.date_planned == date_planned, "Scheduled date is not correspond."
- assert procurement.product_id.id == order_line.product_id.id, "Product is not correspond."
- assert procurement.product_qty == order_line.product_uom_qty, "Qty is not correspond."
- assert procurement.product_uom.id == order_line.product_uom.id, "UOM is not correspond."
- assert procurement.procure_method == order_line.type, "Procurement method is not correspond."
+ if order_line.product_id.type == 'product':
+ procurement = order_line.procurement_ids[0]
+ date_planned = datetime.strptime(order.date_order, DEFAULT_SERVER_DATETIME_FORMAT) + relativedelta(days=order_line.delay or 0.0)
+ date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
+ assert procurement.date_planned == date_planned, "Scheduled date is not correspond."
+ assert procurement.product_id.id == order_line.product_id.id, "Product is not correspond."
+ assert procurement.product_qty == order_line.product_uom_qty, "Qty is not correspond."
+ assert procurement.product_uom.id == order_line.product_uom.id, "UOM is not correspond."
-
Only stock user can change data related warehouse therefore test with that user which have stock user rights,
-
@@ -75,23 +95,21 @@
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
- sale_order = self.browse(cr, uid, ref("sale.sale_order_6"))
+ sale_order = self.browse(cr, uid, ref("sale_order_service"))
assert sale_order.picking_ids, "Delivery order is not created."
for picking in sale_order.picking_ids:
assert picking.state == "auto" or "confirmed", "Delivery order should be in 'Waitting Availability' state."
assert picking.origin == sale_order.name,"Origin of Delivery order is not correspond with sequence number of sale order."
- assert picking.type == 'out',"Shipment should be Outgoing."
+ assert picking.picking_type_id == self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'picking_type_out', context=context),"Shipment should be Outgoing."
assert picking.move_type == sale_order.picking_policy,"Delivery Method is not corresponding with delivery method of sale order."
assert picking.partner_id.id == sale_order.partner_shipping_id.id,"Shipping Address is not correspond with sale order."
assert picking.note == sale_order.note,"Note is not correspond with sale order."
assert picking.invoice_state == (sale_order.order_policy=='picking' and '2binvoiced') or 'none',"Invoice policy is not correspond with sale order."
assert len(picking.move_lines) == len(sale_order.order_line) - 1, "Total move of delivery order are not corresposning with total sale order lines."
location_id = sale_order.warehouse_id.lot_stock_id.id
- output_id = sale_order.warehouse_id.lot_output_id.id
for move in picking.move_lines:
- order_line = move.sale_line_id
- sale_order_date = self.date_to_datetime(cr, uid, sale_order.date_order, context)
- date_planned = datetime.strptime(sale_order_date, DEFAULT_SERVER_DATETIME_FORMAT) + relativedelta(days=order_line.delay or 0.0)
+ order_line = move.procurement_id.sale_line_id
+ date_planned = datetime.strptime(sale_order.date_order, DEFAULT_SERVER_DATETIME_FORMAT) + relativedelta(days=order_line.delay or 0.0)
date_planned = (date_planned - timedelta(days=sale_order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
assert datetime.strptime(move.date_expected, DEFAULT_SERVER_DATETIME_FORMAT) == datetime.strptime(date_planned, DEFAULT_SERVER_DATETIME_FORMAT), "Excepted Date is not correspond with Planned Date."
assert move.product_id.id == order_line.product_id.id,"Product is not correspond."
@@ -102,25 +120,26 @@
assert move.product_packaging.id == order_line.product_packaging.id,"Product packaging is not correspond."
assert move.partner_id.id == order_line.address_allotment_id.id or sale_order.partner_shipping_id.id,"Address is not correspond"
#assert move.location_id.id == location_id,"Source Location is not correspond."
- #assert move.location_dest_id == output_id,"Destination Location is not correspond."
- assert move.price_unit == order_line.product_id.standard_price or 0.0,"Price Unit is not correspond"
-
Now, I dispatch delivery order.
-
- !python {model: stock.partial.picking}: |
- order = self.pool.get('sale.order').browse(cr, uid, ref("sale.sale_order_6"))
+ !python {model: stock.picking}: |
+ order = self.pool.get('sale.order').browse(cr, uid, ref("sale_order_service"))
for pick in order.picking_ids:
data = pick.force_assign()
if data == True:
- partial_id = self.create(cr, uid, {}, context={'active_model': 'stock.picking','active_ids': [pick.id]})
- self.do_partial(cr, uid, [partial_id])
+ pick.do_transfer(context=context)
+-
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
-
I check sale order to verify shipment.
-
!python {model: sale.order}: |
- order = self.pool.get('sale.order').browse(cr, uid, ref("sale.sale_order_6"))
+ order = self.pool.get('sale.order').browse(cr, uid, ref("sale_order_service"))
assert order.shipped == True, "Sale order is not Delivered."
- assert order.picked_rate == 100, "Shipment progress is not 100%."
#assert order.state == 'progress', 'Order should be in inprogress.'
assert len(order.invoice_ids) == False, "Invoice should not created on dispatch delivery order."
-
@@ -128,7 +147,7 @@
-
!python {model: stock.invoice.onshipping}: |
sale = self.pool.get('sale.order')
- sale_order = sale.browse(cr, uid, ref("sale.sale_order_6"))
+ sale_order = sale.browse(cr, uid, ref("sale_order_service"))
ship_ids = [x.id for x in sale_order.picking_ids]
wiz_id = self.create(cr, uid, {'journal_id': ref('account.sales_journal')},
{'active_ids': ship_ids, 'active_model': 'stock.picking'})
@@ -137,7 +156,7 @@
I check the invoice details after dispatched delivery.
-
!python {model: sale.order}: |
- order = self.browse(cr, uid, ref("sale.sale_order_6"))
+ order = self.browse(cr, uid, ref("sale_order_service"))
assert order.invoice_ids, "Invoice is not created."
ac = order.partner_invoice_id.property_account_receivable.id
journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'sale'), ('company_id', '=', order.company_id.id)])
@@ -147,7 +166,7 @@
assert invoice.reference == order.client_order_ref or order.name,"Reference is not correspond."
assert invoice.partner_id.id == order.partner_invoice_id.id,"Customer does not correspond."
assert invoice.currency_id.id == order.pricelist_id.currency_id.id, "Currency is not correspond."
- assert invoice.comment == (order.note or ''),"Note is not correspond."
+ assert (invoice.comment or '') == (order.note or ''),"Note is not correspond."
assert invoice.journal_id.id in journal_ids,"Sales Journal is not link on Invoice."
assert invoice.payment_term.id == order.payment_term.id, "Payment term is not correspond."
for so_line in order.order_line:
@@ -168,7 +187,7 @@
I open the Invoice.
-
!python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale.sale_order_6"))
+ so = self.browse(cr, uid, ref("sale_order_service"))
account_invoice_obj = self.pool.get('account.invoice')
for invoice in so.invoice_ids:
account_invoice_obj.signal_invoice_open(cr, uid, [invoice.id])
@@ -177,7 +196,7 @@
-
!python {model: account.invoice}: |
sale_order = self.pool.get('sale.order')
- order = sale_order.browse(cr, uid, ref("sale.sale_order_6"))
+ order = sale_order.browse(cr, uid, ref("sale_order_service"))
journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', order.company_id.id)], limit=1)
for invoice in order.invoice_ids:
invoice.pay_and_reconcile(
@@ -194,7 +213,7 @@
I check the order after paid invoice.
-
!python {model: sale.order}: |
- order = self.browse(cr, uid, ref("sale.sale_order_6"))
+ order = self.browse(cr, uid, ref("sale_order_service"))
assert order.invoiced == True, "Sale order is not invoiced."
assert order.invoiced_rate == 100, "Invoiced progress is not 100%."
assert order.state == 'done', 'Order should be in closed.'
diff --git a/addons/sale_stock/test/prepaid_order_policy.yml b/addons/sale_stock/test/prepaid_order_policy.yml
index 0e0345868d0..74449371ada 100644
--- a/addons/sale_stock/test/prepaid_order_policy.yml
+++ b/addons/sale_stock/test/prepaid_order_policy.yml
@@ -1,15 +1,30 @@
+-
+ In order to test the Prepaid Order Policy, I create a product
+-
+ !record {model: product.product, id: product_prepaid1}:
+ name: 'OpenERP Documentation Book'
+ list_price: 60.60
+-
+ Now i create a sale order that uses my new product
+-
+ !record {model: sale.order, id: sale_order_prepaid1}:
+ partner_id: base.res_partner_2
+ order_policy: prepaid
+ order_line:
+ - product_id: sale_stock.product_prepaid1
+ product_uom_qty: 10
-
Now I confirm the Quotation with "Pay before delivery" policy with access rights of salesman.
-
!context
uid: 'res_sale_stock_salesman'
-
- !workflow {model: sale.order, action: order_confirm, ref: sale.sale_order_4}
+ !workflow {model: sale.order, action: order_confirm, ref: sale_order_prepaid1}
-
I check that delivery order should not created before invoice is paid.
-
!python {model: sale.order}: |
- sale_order = self.browse(cr, uid, ref("sale.sale_order_4"))
+ sale_order = self.browse(cr, uid, ref("sale_order_prepaid1"))
assert len(sale_order.picking_ids) == False, "Delivery order should not created before invoice."
assert sale_order.invoice_ids, "Invoice should be created."
diff --git a/addons/sale_stock/test/sale_order_onchange.yml b/addons/sale_stock/test/sale_order_onchange.yml
index f21f88c9eb7..7cb4da5c338 100644
--- a/addons/sale_stock/test/sale_order_onchange.yml
+++ b/addons/sale_stock/test/sale_order_onchange.yml
@@ -9,7 +9,6 @@
!record {model: product.product, id: product_onchange1}:
name: 'Devil Worship Book'
list_price: 66.6
- procure_method: 'make_to_order'
-
In sale order to test process of onchange of Sale Order with access rights of saleman.
-
@@ -29,4 +28,3 @@
!assert {model: sale.order, id: sale_order_onchange1, string: The onchange function of product was not correctly triggered}:
- order_line[0].name == u'Devil Worship Book'
- order_line[0].price_unit == 66.6
- - order_line[0].type == 'make_to_order'
diff --git a/addons/sale_stock/test/sale_stock_users.yml b/addons/sale_stock/test/sale_stock_users.yml
index 34e00147c15..04152b43c9a 100644
--- a/addons/sale_stock/test/sale_stock_users.yml
+++ b/addons/sale_stock/test/sale_stock_users.yml
@@ -28,6 +28,7 @@
!record {model: res.users, id: res_sale_stock_salesman}:
groups_id:
- base.group_sale_salesman_all_leads
+ - stock.group_stock_user
-
Create a user as 'Stock User'
-
diff --git a/addons/stock/__init__.py b/addons/stock/__init__.py
index 0f1e96a9c67..7903619646d 100644
--- a/addons/stock/__init__.py
+++ b/addons/stock/__init__.py
@@ -22,8 +22,10 @@
from stock import *
import partner
import product
+import procurement
import report
import wizard
import res_config
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+import controllers
+
diff --git a/addons/stock/__openerp__.py b/addons/stock/__openerp__.py
index 733637bef7b..5e21055208c 100644
--- a/addons/stock/__openerp__.py
+++ b/addons/stock/__openerp__.py
@@ -24,24 +24,22 @@
'version': '1.1',
'author': 'OpenERP SA',
'summary': 'Inventory, Logistic, Storage',
- 'description' : """
+ 'description': """
Manage multi-warehouses, multi- and structured stock locations
==============================================================
-The warehouse and inventory management is based on a hierarchical location structure, from warehouses to storage bins.
-The double entry inventory system allows you to manage customers, suppliers as well as manufacturing inventories.
+The warehouse and inventory management is based on a hierarchical location structure, from warehouses to storage bins.
+The double entry inventory system allows you to manage customers, suppliers as well as manufacturing inventories.
OpenERP has the capacity to manage lots and serial numbers ensuring compliance with the traceability requirements imposed by the majority of industries.
Key Features
------------
* Moves history and planning,
-* Stock valuation (standard or average price, ...)
-* Robustness faced with Inventory differences
-* Automatic reordering rules
+* Minimum stock rules
* Support for barcodes
* Rapid detection of mistakes through double entry system
-* Traceability (Upstream / Downstream, Serial numbers, ...)
+* Traceability (Serial Numbers, Packages, ...)
Dashboard / Reports for Warehouse Management will include:
----------------------------------------------------------
@@ -54,51 +52,57 @@ Dashboard / Reports for Warehouse Management will include:
""",
'website': 'http://www.openerp.com',
'images': ['images/stock_forecast_report.png', 'images/delivery_orders.jpeg', 'images/inventory_analysis.jpeg','images/location.jpeg','images/moves_analysis.jpeg','images/physical_inventories.jpeg'],
- 'depends': ['product', 'account'],
+ 'depends': ['product', 'procurement', 'board', 'web_kanban_gauge', 'web_kanban_sparkline'],
'category': 'Warehouse Management',
'sequence': 16,
'demo': [
+ 'stock_demo_pre.yml',
'stock_demo.xml',
+ 'procurement_demo.xml',
+ 'stock_orderpoint.xml',
+ 'stock_orderpoint.yml',
+ 'stock_demo.yml',
+ 'stock_location_demo_cpu1.xml',
+ 'stock_location_demo_cpu3.yml',
],
'data': [
'security/stock_security.xml',
'security/ir.model.access.csv',
'stock_data.xml',
+ 'stock_data.yml',
'wizard/stock_move_view.xml',
'wizard/stock_change_product_qty_view.xml',
- 'wizard/stock_partial_picking_view.xml',
- 'wizard/stock_partial_move_view.xml',
- 'wizard/stock_fill_inventory_view.xml',
- 'wizard/stock_invoice_onshipping_view.xml',
- 'wizard/stock_inventory_merge_view.xml',
- 'wizard/stock_location_product_view.xml',
- 'wizard/stock_splitinto_view.xml',
- 'wizard/stock_inventory_line_split_view.xml',
- 'wizard/stock_change_standard_price_view.xml',
'wizard/stock_return_picking_view.xml',
- 'stock_workflow.xml',
+ 'wizard/make_procurement_view.xml',
+ 'wizard/orderpoint_procurement_view.xml',
'stock_incoterms.xml',
'stock_report.xml',
'stock_view.xml',
'stock_sequence.xml',
- 'product_data.xml',
'product_view.xml',
'partner_view.xml',
- 'report/report_stock_move_view.xml',
'report/report_stock_view.xml',
'res_config_view.xml',
+ 'views/report_package_barcode.xml',
+ 'views/report_stockpicking.xml',
+ 'views/report_stockinventory.xml',
'views/stock.xml',
],
'test': [
+ 'test/inventory.yml',
+ 'test/move.yml',
+ 'test/procrule.yml',
'test/stock_users.yml',
'stock_demo.yml',
- 'test/opening_stock.yml',
'test/shipment.yml',
- 'test/stock_report.yml',
+ 'test/packing.yml',
+ 'test/packingneg.yml',
+ 'test/wiseoperator.yml',
],
'installable': True,
'application': True,
'auto_install': False,
+ 'qweb': ['static/src/xml/picking.xml'],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/controllers/__init__.py b/addons/stock/controllers/__init__.py
new file mode 100644
index 00000000000..039d9715fab
--- /dev/null
+++ b/addons/stock/controllers/__init__.py
@@ -0,0 +1 @@
+import main
\ No newline at end of file
diff --git a/addons/stock/controllers/main.py b/addons/stock/controllers/main.py
new file mode 100644
index 00000000000..48742c6c19a
--- /dev/null
+++ b/addons/stock/controllers/main.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+import logging
+import simplejson
+
+from openerp import http
+from openerp.http import request
+from openerp.addons.web.controllers.main import module_boot
+
+_logger = logging.getLogger(__name__)
+
+html_template = """
+
+
+ Barcode Scanner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+"""
+
+class BarcodeController(http.Controller):
+
+ @http.route(['/barcode/web/'], type='http', auth='user')
+ def a(self, debug=False, **k):
+ if not request.session.uid:
+ return http.local_redirect('/web/login?redirect=/barcode/web')
+
+ r = html_template % {
+ 'modules': simplejson.dumps(module_boot(request.db)),
+ 'init': """
+ var wc = new s.web.WebClient();
+ wc.show_application = function(){
+ wc.action_manager.do_action("stock.ui", {});
+ };
+ wc.do_push_state = function(state){};
+ wc.appendTo($(document.body));
+ """
+ }
+ return r
diff --git a/addons/stock/doc/stock.rst b/addons/stock/doc/stock.rst
new file mode 100644
index 00000000000..42b9c79b8a5
--- /dev/null
+++ b/addons/stock/doc/stock.rst
@@ -0,0 +1,643 @@
+Stock Module
+++++++++++++
+
+This module can be applied for the simplest stock management case where you are only interested in knowing the quantity of each product in your stock as for a complex warehouse(s) management case, where for example each product gets a specific location in the stock and upon delivery it needs to be picked at a certain location and the products need to be packed in boxes and put on a pallet.
+
+Because of this huge difference in application, the main principles briefly will be explained first, whereafter we will dedicate one chapter on how to use the warehouse management in its simplest form. From the third chapter on, we will explain every step in more detail, allowing you to discover the full potential of the module.
+
+
+1 Main principles explained briefly
+***********************************
+
+==================================================
+Stock moves, locations, pickings and picking types
+==================================================
+
+A stock move is the elementary model in OpenERP that can move stock between 2 locations.
+
+In order to make it easy to move multiple products at once and pass that as an assignment to a warehouse operator, we use pickings that group these stock moves.
+
+We want to categorize the pickings in picking types. As a warehouse manager you want to follow up the progress of the operations between the same (kind of) locations. E.g. in the standard warehouse, not configuring anything, you will have 3 picking types: the incoming, internal and outgoing, but it is possible to create a picking type for all the packing operations that need to happen at the packing table. The Warehouse > All Operations dashboard allows to see the progress of the pickings for each picking type.
+
+You might have a weird feeling talking about moving from location A to location B, even for deliveries and incoming shipments. That is because OpenERP uses a double-entry concept similar to double-entry accounting. In OpenERP you do not talk of disappearance, consumption or loss of products: instead you speak only about stock moves from one place to another.
+
+To satisfy the need for a counterpart to each stock movement, the software supports different types of stock locations:
+
+* Physical stock locations,
+* Partner locations (suppliers and customers),
+* Virtual locations as counterparts for production, inventory and scrap.
+
+Partner locations represent your customers' and suppliers' stocks. To reconcile them with your accounts, these stores play the role of third-party accounts. Reception from a supplier can be shown by the movement of goods from a partner location to a physical location in your own company. As you see, supplier locations usually show negative stocks and customer locations usually show positive stocks.
+
+Virtual locations as counterparts for production are used in manufacturing operations. Manufacturing is characterized by the consumption of raw materials and the production of finished products. Virtual locations are used for the counterparts of these two operations.
+
+Inventory locations are counterparts of the stock operations that represent your company's profit and loss in terms of your stocks.
+
+In OpenERP, locations are structured hierarchically. You can structure your locations as a tree, dependent on a parent-child relationship. This gives you more detailed levels of analysis of your stock operations and the organization of your warehouses.
+
+
+
+=========
+Warehouse
+=========
+
+A warehouse represents the building where we stock our goods. In case of multiple warehouses, you can enter the warehouse on your purchase orders and sale orders, such that your transporter knows where to deliver the goods or pick them up. That is why a warehouse also has an address and a name.
+
+A warehouse corresponds also to a location. As the locations are hierarchical, OpenERP will create one parent location for the warehouse that contains all the different locations in it.
+
+When you create a warehouse, the system will create the necessary picking types and parent locations in the background.
+
+
+===========================================
+MTO (Make to Order) and MTS (Make To Stock)
+===========================================
+
+A product can be MTO or MTS. When a product is handled MTO, it means we will handle each order (e.g. sale order) individually and procure what is necessary, separately for every order. When a product is handled MTS, we wait until there are sufficient orders and then we order everything at once taking into account a minimum stock (or a stock forecast) into account. In OpenERP, we can automate minimum stock rules through reordering rules (or orderpoints) as shown in the next chapter.
+
+================
+States of moves
+================
+
+* Draft
+* Confirmed (Waiting Availability)
+* Waiting (Waiting Another Move)
+* Assigned (Available / Ready to Transfer)
+* Done (Transferred)
+* Cancel (Cancelled)
+
+When we create a move, it will be in draft state. It will have no influence on the virtual stock of the product. It is only when we confirm the move that we make clear to the system that this move will be executed and should be taken into account for ordering new products. The next state will however be different according to the scenario.
+
+For example, if the product is MTO and we have a delivery order from Stock to Customers, it will wait for a specific purchase order and will have the waiting (Waiting Another Move) state. In case of an MTS product, the move will be configured as such that it will look for available stock in the source location itself and it will stay in the Confirmed (Waiting Availability) state.
+
+In these confirmed or waiting states it is possible to do "Check Availability". If it can find the necessary stock, the state goes to Assigned. In this state it is possible to effectively execute the move and transfer the products. Incoming shipments are automatically available. Effectively executing the move, brings it to the done state and makes it adapt the quantity available on hand.
+
+Normally, the picking associated to the move, will have the same state as it moves, but the picking can also have a partially available state. It is possible that some products in the picking are available and some are not. On a sales order or delivery order picking, you can specify if you want your customer to be delivered as soon as possible when only a part of the products is available (partial delivery) or only all at once when everything is available (in order to save on transport costs for example). So, if you can do a partial delivery, the picking state will be partially available when only some of the products are available.
+
+===================================================
+Reordering rules, procurement and procurement group
+===================================================
+
+Procurements represent needs that need to be solved. For example, every sales order line will create a procurement in Customers. This will be solved by a move for the delivery, which will, in case of a MTO product in buy configuration, create a new procurement (need) in Stock, which will be solved by a purchase order.
+
+It is not required however, to have this need in stock created by a move. In case of MTS, the move will not create a procurement (need), but the the procurement will originate from a reordering rule created for this product in stock.
+
+An reordering rule (= minimum stock rule) applies the following rule: if the virtual stock for the given location is lower than the minimum stock indicated in the rule, the system will automatically propose a procurement to increase the level of virtual stock to the maximum level given in the rule. We underline that the rule is based on virtual quantities and not just on real quantities. It takes into account the calculation of orders and receipts to come.
+
+You can also set multiple quantities in the minimum stock rules. If you set a multiple quantity of 3 the system will propose procurement of 15 pieces, and not the 13 it really needs. In this case, it automatically rounds the quantity upwards.
+
+Pay attention to the fact that the maximum quantity is not the maximum you will have in stock. If we take the following situation: a company has 10 pieces of product with minimum stock rules defined for this product by Min quantity = 10, Max quantity = 30 and Qty multiple = 12. If an order of 2 pieces comes, a purchase of 24 pieces order will be executed. The first 12 pieces will be ordered to reach the minimum quantity and the other 12 to reach the maximum quantity. At the end, the stock of this product will be equal to 32 pieces.
+
+Scheduler:
+
+In order for the reordering rule to create the procurement, we need to launch the scheduler. This can be done manually in Warehouse > Schedulers > Run Scheduler, but will normally be automated by a scheduled action. (by default it is automated on a daily basis)
+
+Procurement groups:
+
+Even when you have multiple lines in your sales order, you want one delivery order with all the lines of the sales order. In order to do that, we group the different procurements of this sale order into the same procurement group we create for the sales order. That way, the moves of a delivery order stay together by putting moves of the same group in the same picking.
+
+=================================
+Consumables vs stockable products
+=================================
+
+Consumables will not be valued in the inventory valuation as they will have 0 value. It is not possible to create reordering rules for consumables. It is also not necessary to reserve stock for it as the move will go to the available state anyways.
+
+
+2 Standard configuration
+************************
+
+In this chapter, we want to show how to work with the simplest warehouse configuration. (product MTO, product MTS with reordering rule, ...)
+
+Suppose we have a little Apple Store. The warehouse will be Apple Store and we manage only one location (no child locations). We put a minimum stock of 10 iPad mini and 5 iPod nano. We don't have stock for iBooks, but when a customer wants one, he can order one and will get it after a week.
+
+We will create a reordering rule for every product with minimum stock. These orders could also be created by the point of sale. The maximum of the orderpoint, we will take 15 and 10 and . This orderpoint will need to be created in the Stock location.
+
+
+<>
+<>
+<>
+
+
+3 Beyond the magic of stock moves
+*********************************
+
+In the following chapters, we go a little deeper into the mechanisms behind the warehouse management. In this chapter, we handle the stock moves. Stock moves are not only the basic notions through which stock is moved, but can be chained and will determine their picking. Chained moves are not only necessary in case of an MTO product, where the delivery waits for the specific incoming shipment, but for example also in multiple step in or out or when resupplying from other warehouses. We will describe how pull and push rules are applied to created such chained moves.
+
+=================================
+Assigning stock moves to pickings
+=================================
+
+When you want to give an assignment to a warehouse operator manually, you will create a picking and create the moves in it by specifying the different products and quantities. When confirming a sale order however, OpenERP will create the moves automatically. In these cases, it will create the stock moves without picking first. In a second step, they will be attributed to an existing picking or a picking will be created.
+
+In order to assign the move to a picking, OpenERP will check if the move was assigned a picking type (e.g. Your Company: Delivery Orders) and if it does, it will search for a picking to assign the move to. This picking should be in the right state, picking type, procurement group (=group of procurements related to e.g. the same sale order) and source and destination locations. If no picking can be found, it will create a new one.
+
+This mechanism allows for a lot of flexibility when for example some products have to go through the Packing zone for packing and some don't. That way, the packing order will still group the moves that need packing from the sale order and the direct moves will be grouped in a separate picking also. For the delivery order, everything will be together in one picking again.
+
+A picking is almost entirely determined by the moves in it. The state depends on the moves and the picking type, the source and destination location are those of the moves. The scheduled date is calculated as a minimum date for the stock moves.
+
+The state of a picking depends primarily on its moves:
+
+* If any move is draft, the picking is draft
+* If all moves are done/cancel, the picking is done/cancel
+
+The other states depend however also on the move type. The move type determines whether the customer expects to get all products of a picking at once (=all at once) or he wants it delivered to him as fast as possible. (=partial) This move type can be determined manually, or can e.g. come from a sale order where it will be passed through the procurement group.
+
+In case of partial, a special state exists: partial availability. It is possible that a move is in the confirmed / waiting state, but has partially some stock reserved. This move will still be in the waiting/confirmed state, but have a flag partially available. In that case, the picking will not stay in the confirmed/waiting state but go to the partially available state, which makes it possible to deliver the goods partially. A picking is also partially available when some moves are assigned and others have no stock at all reserved.
+
+Sometimes a move does not have a picking type. This means it will not be assigned to a picking. This is the case for inventory corrections and moves in and out of production.
+
+
+================================================================
+Procurement (=pull) rules and push rules to create chained moves
+================================================================
+
+Push rules:
+
+A rule that triggers another stock move based on the destination location of the original move. The new move has as source location the destination location of the original move.
+
+Example: When products arrive manually in the “Input” location, you want to move them to “Stock” with a push rule afterwards.
+
+So, when a stock move “Supplier → Input” is confirmed, this rule will create another stock move: “Input → Stock”. It allows for 3 modes: automatic (the second operation will be validated automatically), manual (the second operation must be validated manually), manual no step added. (the destination of the first move is replaced instead of creating another stock move.
+
+Push rules should typically only be used on incoming side when a purchase order is created manually and the goods need to be transferred to stock.
+
+Procurement (=pull) rules:
+
+Pull rules are not the opposite of push rules! It’s very different as push rules impact moves and pull rules impact needs. (procurements) It is actually better to call them procurement rules. It is however true that the push rules are applied on the destination location and pull rules on the source location.
+
+When a stock move is confirmed and its procurement method is 'Advanced: Apply procurement rules', it will create a procurement in the source location for the quantity of the move. To fulfill this procurement, a procurement rule needs to be applied on this procurement. There are several types of procurement rules with different results: move products from another location to the source location, purchase to the source location, produce towards the source location.
+
+A procurement does not need to be created by a stock move however. A user can create a procurement manually and when we confirm a sale order, OpenERP will create a procurement per sale order line in the Customers location. Actually, this system of procurements, stock moves and procurement rules is used consistently throughout OpenERP. Even in the simplest warehouse configuration, when we run the procurements generated from the sale order, these procurement rules will generate the delivery order.
+
+Procurements will pass through the following states when everything goes well:
+
+- Confirmed: State when the procurement after the creation of the procurement
+- Running: A procurement rule has been applied successfully (=> created a move or quotation or manufacturing order)
+- Done: The procurement rule has been applied and the products have passed or are in the procurement's location
+
+It is however possible that the procurement goes into Exception when no procurement rule can be found or when it is not possible to apply the rule (e.g. no supplier defined for the product). When the products are no longer necessary, it is possible to Cancel the procurement.
+
+By default, the JIT scheduler is installed and the system will try to check the procurement immediately when it is confirmed. If this would give performance issues, it is possible to uninstall this and then it will only run the procurements immediately generated by the sales order. This will result in a delivery order, but the procurements generated by the stock moves in the delivery order, will not be run. This will however be done by the Scheduler.
+
+A push rule can not be applied anymore when the rule was created from a pull rule, so pull rules kind of have priority over the push rules.
+
+
+=======================================================
+Procurement method of stock moves and procurement rules
+=======================================================
+
+Whether a confirmed stock move created a procurement in the source location and applied the procurement rules, depends on its procurement method. It has to be 'Advanced: apply procurement rules'
+
+When a user creates a stock move in a picking, the stock move will have its procurement method 'Default: Take from stock'. This means it will not create a procurement in the source location created to the move and will try to find the products in the available stock of the source location. This is also the most logical thing to do when some goods need to be transferred internally for example to move death stock to the back of the warehouse.
+
+If the user chooses however to change the procurement method to 'Advanced: Apply procurement rules', a procurement will be created in the source location. And for example, creating a delivery order could lead in the simplest case (with purchase) to creating a purchase order the delivery order will be waiting for.
+
+When you have procurement rules in a Pick > Pack > Ship configuration, it might be interesting to apply the procurement rules as it will generate the moves from stock to pack. That way you can send something from the stock manually and still go through the pick/pack steps.
+
+The procurement method is also only interesting for internal or outgoing pickings. Incoming shipments do not need to reserve stock, so they are always 'Default: take from stock'.
+
+
+Maybe you wonder how it is possible to create chains of more than two moves this way. When a procurement rule creates another move, it can determine the procurement method of the new move. In other words, it can determine if the new move will again look for procurement rules or will take from the stock.
+
+This makes it possible to create long chains. For example, an MTS product with pick pack ship, will start with the confirmation of a sales order. This will create a procurement, which will create a move from Output to Customers with procurement method "Advanced: Apply procurement rules". This will create procurement in Output. This will continue like this until the procurement in Pack creates a stock move, which will have "Default: Take from stock" instead.
+
+<< Illustrate one from the chains from the Google Doc>>
+
+
+
+========================
+Chained Moves and States
+========================
+
+It is clear that the push and procurement rules allow to create long chain of moves. When we talk about the chaining of moves we distinguish for a move between:
+
+* Destination move: The next move in the chain starting in the destination location of this move
+* Original moves: The previous move(s) in the chain all arriving in the source location
+
+When a move has original moves, it can only reserve stock that passed the original moves. This is also why the state for these moves will go to Waiting Another Move instead of Waiting Availability.
+
+A move can only have one destination move, but multiple orginal moves. Suppose you have two moves that are chained. When the first one is split, the second one has 2 original moves and both moves have the same destination move.
+
+If the second one is split however, the split move, won't have any original moves on itself, but will check if it has not been split from a move with original moves, and might as such also take the Waiting for Another Move state.
+
+
+========================================================
+Applied to MTO and MTS products and sale order and dates
+========================================================
+
+The checkbox MTO in the product form is actually a procurement rule that may be applied. This means that the delivery order from stock will be created with procurement method "Advanced: apply procurement rules" instead of "Default: take from stock".
+
+
+Lead times
+
+All procurement operations (that is, the requirement for both production orders and purchase orders) are automatically calculated by the scheduler. But more than just creating each order, OpenERP plans the timing of each step. A planned date calculated by the system can be found on each order document.
+
+To organize the whole chain of manufacturing and procurement, OpenERP bases everything on the delivery date promised to the customer. This is given by the date of the confirmation in the order and the lead times shown in each product line of the order. This lead time is itself proposed automatically in the field Customer Lead Time shown in the product form. This Customer Lead Time is the difference between the time on an order and that of the delivery.
+
+To see a calculation of the lead times, take the example of the cabinet above. Suppose that the cabinet is assembled in two steps, using the two following bills of materials.
+
+Bill of Materials for 1 SHE100 Unit
+
+
++-------------+----------+------------
+| Product Code| Quantity | UoM |
++====================================+
+|SIDEPAN | 2 | PCE |
++-------------+----------+-----------+
+|LIN040 | 1 | M |
++-------------+----------+-----------+
+|WOOD010 | 0.249| M |
++-------------+----------+-----------+
+|METC000 | 12| PCE |
++-------------+----------+-----------+
+
+Bill of Materials for 2 SIDEPAN Units
+
+
++-------------+----------+------------
+| Product Code| Quantity | UoM |
++====================================+
+| WOOD002 | 0.17| M |
++-------------+----------+------------
+
+The SIDEPAN is made from an order using the workflow shown. The WOOD002 is purchased on order and the other products are all found in stock. An order for the product SHE100 will then generate two production orders (SHE100 and SIDEPAN) then produce two purchase orders for the product WOOD002. Product WOOD002 is used in the production of both SHE100 and SIDEPAN. Set the lead times on the product forms to the following:
+
++-------------+-------------------+------------------------+---------------------+
+|Product Code |Customer Lead Time |Manufacturing Lead Time |Supplier Lead Time |
++================================================================================+
+|SHE100 | 30 days | 5 days | |
++-------------+-------------------+------------------------+---------------------+
+|SIDEPAN | | 10 days | |
++-------------+-------------------+------------------------+---------------------+
+|WOOD002 | | | 5 days |
++-------------+-------------------+------------------------+---------------------+
+
+A customer order placed on the 1st January will set up the following operations and lead times:
+
+Delivery SHE100: 31 January (=1st January + 30 days),
+
+Manufacture SHE100: 26 January (=31 January – 5 days),
+
+Manufacture SIDEPAN: 16 January (=26 January – 10 days),
+
+Purchase WOOD002 (for SHE100): 21 January (=26 January – 5 days),
+
+Purchase WOOD002 (for SIDEPAN): 11 January (=16 January – 5 days).
+
+In this example, OpenERP will propose placing two orders with the supplier of product WOOD002. Each of these orders can be for a different planned date. Before confirming these orders, the purchasing manager could group (merge) these orders into a single order.
+
+Security Days
+
+The scheduler will plan all operations as a function of the time configured on the products. But it is also possible to configure these factors in the company. These factors are then global to the company, whatever the product concerned may be. In the description of the company, on the Configuration tab, you find the following parameters:
+
+Scheduler Range Days: all the procurement requests that are not between today and today plus the number of days specified here are not taken into account by the scheduler.
+
+Manufacturing Lead Time: number of additional days needed for manufacturing,
+
+Purchase Lead Time: additional days to include for all purchase orders with this supplier,
+
+Security Days: number of days to deduct from a system order to cope with any problems of procurement,
+
+
+It is important to make a difference between production orders and purchase orders that are chained until the sale order (MTO) or when the chain is interrupted somewhere by an orderpoint. When the scheduler creates the procurement of an orderpoint, the date is again today, so orders for an orderpoint need to be delivered faster, than in case of an MTO.
+
+
+
+4 Complex logistic flows
+************************
+
+<>
+
+In the previous chapter, we talked about procurement rules and how they were applied. We have not talked yet about when these procurement rules can be applied and how to configure them.
+
+A lot of Warehouses have input docks and output docks or have a packing zone where people want to repack the packages for the customer. This can become quite complex and in order to manage this better, we group procurement rules and push rules into routes before having them applied to product, product categories, warehouses, ...
+
+Using these routes is simple as you just need to select them on e.g. a product or product category, but configuring them correctly is a little more difficult. This is the reason why OpenERP will create the necessary routes automatically when you create a new warehouse. Configuring the warehouse can then be a simple as choosing two step incoming and 3 step delivery, will always be supplied from warehouse B, will be purchased, ...
+
+We will however explain the routes as you might maybe enhance the basic config from OpenERP.
+
+======
+Routes
+======
+
+A Route is a collection of procurement rules and push rules. Routes can be applied on:
+
+* Product
+* Product Category
+* Warehouse
+* Sale Order Line (activated through setting Settings > Configuration > Sales > Choose MTO, Dropship, ... on sale order lines)
+
+On the route itself you can specify if you let the user change it on one of the above models. For example, MTO and buy routes will simply be configured on the product level and then the user can choose the routes he want in the product form.
+
+
+
+===============================================================================
+How does the system choose the correct procurement rule
+===============================================================================
+
+When a sales order creates a procurement it passes some useful information to it. First, a sales order has a warehouse where the goods need to be picked up. This warehouse will be copied on the procurement. For example, when you have a procurement in Customers, but you know it has to be delivered from Warehouse WH, it can add a route with a procurement rule from WH/Stock to Customers and it will not apply a procurement rule from WH2/Stock to Customers. Second, it is possible to supply an extra route on the sale order line itself. This can come in handy when you decide on the sale order what route to follow e.g. if you sometimes decide to do dropshipping, you could enter it there. These routes are copied on the procurement related to the sale order line.
+
+These routes on the procurement itself can also come in handy when the procurement can not find a suitable rule. By adding a route, you can solve the procurement according to the situation. (e.g. a certain product needs to be manufactured sometimes or bought sometimes)
+
+When OpenERP needs to find a procurement/push rule, it will check the routes that can be applied to the procurement as follows:
+
+* It will try to find a rule from the route(s) on the procurement first
+* If it does not find any, it will try to find a rule from the route(s) on the product and product category (+ its parents)
+* If it does not find any there, it will try to find a rule from the route(s) on the warehouse
+
+If in any of these cases, multiple rules are found, it will select the rule with the highest priority. This sequence can be changed in Warehouse > Routes (drag/drop the lines). Normally, this will play almost no role.
+
+Actually, when you select MTO on a product, this is a route that is chosen. As in the basic configuration, it is defined on the product. (it is shown in the product form in a special widget that shows all the possible elements it could have in the one2many and you can select them) As such, this route will be chosen over the standard route and will have a rule that puts procure method "Create Procurement on Source" to stock. In the route MTO all such rules for all warehouses will be put in the standard configuration.
+
+The reason behind such a configuration is that in most situations, the routes followed through the warehouse are the same for almost all products. The exceptions on it can be defined for certain product categories or products. Some things like MTO or buy/manufacture might be better to put on product level. And then it is still possible that you change your mind on the sales order line.
+
+
+================================================
+How does the system choose the correct push rule
+================================================
+
+Searching for a push rule is quite similar as for the pull rule. It will however just search for the routes in the product and product category, then on those of the warehouse passed to the move or of the picking type of the move and then it will search anywhere.
+
+
+=======================
+Simple Warehouse config
+=======================
+
+When you activate setting <> and go to Warehouse > Warehouse and select a Warehouse (or create a new), you will have a simplified way to configure these routes without worrying about its complexity.
+
+For the incoming and outgoing shipments, you can supply how many steps are needed to receive or ship goods. This allows you e.g. to receive at the docks, and move the goods later on into a precise location in your racks. It can also be interesting to do some quality control. For shipping, you can also put your products at the gates first, but you might also want to package them at a separate location before bringing them at the gates. These routes will be directly related to the warehouse.
+
+If you check Purchase or Manufacture to resupply this warehouse, if a product is manufacture/buy, it will also be able to buy/manufacture from/in this warehouse.
+
+When you put a Default Resupply Warehouse, goods will always be supplied from this other Warehouse.
+
+You can choose multiple resupply warehouses. These are selectable on the product / product category. This is used when some products are supplied from one warehouse and others from another.
+
+
+===========================================
+What happens behind simple warehouse config
+===========================================
+
+The wizard will create all the necessary locations and picking types to support the selected settings.
+
+The Incoming shipments and Outgoing shipments routes are bundled into routes that are on the warehouse. So, if you choose that warehouse, it will choose the route by default. The incoming routes will also have the push rules associated with them.
+
+The purchase to resupply is a procurement rule added to the buy route, which will also buy to this warehouse.
+
+Also crossdock is added as a route to the warehouse. This can be added on specific products and product categories that upon arrival are almost immediately transferred to the customer. (might be mostly the case with mto products)
+
+
+
+5 Reservation of stock and doing pack operations
+************************************************
+
+===========================================
+Quants, reservations and removal strategies
+===========================================
+
+When the state of a move needs to pass from confirmed/waiting to assigned and the move is not an incoming shipment, the necessary stock (=quants) needs to be reserved.
+
+We need to consider the following when reserving stock:
+
+* If there are original moves, the stock has to come from these moves
+* If there are no original moves, it can take from the source location, but only if this stock has not been reserved on other moves. If the user would want to take from other moves, he can unreserve those.
+* Also in case of returned moves, the system will check if the stock was moved by the move it was returned from.
+* When choosing the stock, we need to take into account the removal strategy.
+
+The removal strategy determines the order which stock gets reserved first. By default the removal strategy is FIFO (First In First Out).
+
+A different removal strategy can be defined by product category and location. For example, for a certain category of products LIFO (Last In First Out) could be chosen when taking products from its stock location.
+
+Quants are a technical object defining the actual stock. If you have for example 70 pieces of product A in location A, you can have one quant of 70 pieces, but it is also possible to have several quants where the quantities sum to 70. This way it is easy for the system to reserve stock, by reserving the quants. If it does not need the whole quant, it can be split.
+
+==================
+Packages and lots
+==================
+
+Products can be put in a package and a package can be put in another package. The same hierarchical system is used as is the case for the locations. When pack A is put in pack B, its full name becomes PACK B / PACK A.
+
+Lots are always linked to a certain product and can be put as being required depending on the incoming/outgoing/full traceability selected on the product. If a warehouse operator selects no lot (which you can only do if traceability is disabled), it can take any lot or without lot. If he selects a lot, he has to take it.
+
+=============================
+Packaging and logistic units
+=============================
+Every package can have a packaging and a logistic unit. The logistic unit determines the package itself e.g. it is a box 20x20x40 cm. It is possible to put different products into the package.
+
+A packaging is however related to one product and should be applied on homogeneous packages (with only one product). It describes how the products are put on each other e.g. you can put 20 pieces in box 20x20x40cm and on pallet 0.80m x 1.20m you will have 3 layers of 24 boxes.
+
+
+=======================
+Pack operations
+=======================
+
+In order to define the operations that can be proposed / executed by the bar code interface, we create / process pack operations. The stock moves itself will tell nothing about (from) which package / (specific)location/lot to take, in which (specific) location / package to put the goods. That is the job of the pack operations.
+
+This is the model used by the bar code interface. There are actually 2 types of pack operation:
+
+* Take entire package
+* Take products from a certain package or not in a package
+
+
+=========================
+Preparing pack operations
+=========================
+
+If a picking will be processed by the bar code scanner, OpenERP will propose the pack operations that need to be executed. If it is an incoming shipment, it will be based on the moves, otherwise it will use the stock that has been reserved already.
+
+Before creating the actual pack operations, OpenERP will group the moves or reserved stock (quants) by:
+
+* Lot: lot of the quant or empty if from stock move
+* Product: product of the quant or stock move
+* Package: the package from the quant or empty if from stock move
+* Source location: the location of the quant or the source location of the move
+* Destination location: For that we need to apply the putaway strategies
+
+The putway strategies are similar to the removal strategies, but determine for the original destination location a child location where the goods should be deposited (instead as for the source location). By default, there is no putaway strategy defined on the destination location. In that case, the goods will be deposited in the destination location of the move. In the stock module, there is one putaway strategy: fixed location. For each such strategy you can also specify the related location. Of course, based on this, custom developments make it possible to implement the putaway strategy you want (as it is applied on all of the stock being moved at once).
+
+For the reserved stock, OpenERP will try to find as many packages (and as high-level) as possible for which the stock is entirely reserved and the destination location is the same for every piece of stock. That way, the operator knows he can simply move the package to the destination location, instead of having to open the box and split the quantities.
+
+An example might illustrate this further:
+
+Some pallets with product A and some mixed pallets with product A en B are placed at the gates and need to be moved to stock. A picking proposes to move all products A and B to stock. Product A has loc A as fixed location putaway strategy and product B has loc B as fixed location. In the pack operations, OpenERP will make an operation by pack for all pallets with only product A all to the loc A. For the mixed pallets, it won't be able to make one pack operation. It will say: move the product A from the mixed pallet to loc A and move the product B from the mixed pallet to loc B.
+
+
+============
+Unreserving
+============
+If we want to use a certain piece of stock on another picking instead of the picking selected, we can unreserve this piece of stock by clicking on the Unreserve button of the picking.
+
+It is however possible that during the pack operations, the warehouse operator has chosen the stock from another location. In that case, other quants need to be reserved also. When processing this picking further on, the system will unreserve the stock and do the reserve process again, taking into account the created pack operations from the bar code scanner interface.
+
+
+===============================================
+Bar code interface and checking pack operations
+===============================================
+
+A picking can be processed in the back-office interface by processing the moves, but then it will not be possible to do pack operations or change the locations.
+
+If you choose in "Enter Transfer details" in the picking, the system will prepare the pack operations and you will be guided to the bar code interface.
+
+Also in the Warehouse > All Operations, it is possible to change to the bar code interface and do all the pickings at once.
+
+When using the bar code interface, the pack operations will be prepared as explained above. In the bar code interface it is then possible to change the prepared pack operations to the effective operations the warehouse operator executed.
+
+- The operator can filter the operations on product/pack/source location
+- The operator should fill in the quantity on the filtered line. He should type enter to confirm. If the quantity is correct, the line will become green.
+- The operator might put the products in a new pack
+- Afterwards, the operator can process the products and mark as done. That way they will get into operations done, instead of todo.
+- The operator can also change source/destination location
+
+- If everything has been done and the operator took the correct products, it will also finish the picking.
+If this is not the case, he can do "Create backorder", and then he needs to check if all the products have been done or not. If only part has been done, OpenERP needs to create a backorder for it. It is however more complicated than that. The operator could have chosen other source/destination location or even create new pack operations with new products.
+
+In order to manage all these possible changes, in the background, OpenERP is going to do a matching between the pack operations executed by the warehouse operator and the moves given as assignment beforehand.
+It is also possible that the operator chooses other stock than was reserved at forehand. In that case, OpenERP will need to redo the reservation of the stock.
+
+The matching of the pack operations and stock moves will determine if extra moves need to be created or if some moves need to go (partially) into backorder.
+
+
+6 Transferring
+***************
+
+
+=====================
+Actual transferring
+=====================
+
+If there are no pack operations, it will process the move as such. (with only the information from the move)
+
+In case of pack operations:
+
+First it will check the matching between pack operations and moves and create the necessary extra moves or backorder. After having split the moves and created the extra, it can be necessary to rereserve the quants and recompute the matching. After having done that, it will process all the moves that need to be done. It will look at the matchings between the move and the pack operations and take them into account. That way it will take the correct quants from the pack operation and put it in the correct pack and destination location
+
+======================
+Negative stocks
+======================
+
+It is still possible that upon transferring for an internal shipment or delivery, the necessary quants or stock can not be found. In that case, it will create negative stock (negative quants).
+
+When later on, a move brings in some goods that correspond to this negative stock, the quant can be reconciled with it.
+
+Normally, chained moves have to take from their original moves. Only when you do force assign a move with original moves it can also take from the regular stock that is not chained. It will however not assign this stock before actually doing the transfer.
+
+
+7 Returns and cancellation
+***************************
+
+========================
+Returns
+========================
+
+It is possible to create a return on a done picking. This wizard will propose to return everything that is still in the destination location. If it can't find stock from the original move, it will create negative quants.
+
+
+======================
+Cancellation
+======================
+
+When you cancel a procurement, it will cancel everything in the backwards direction. When you cancel a move itself, it will cancel in the forward direction.
+
+This will happen only if the move has the attribute 'Propagate Cancel and Split' set to true. Also, when a procurement rule (or a push rule) is applied to create another move, it will copy its 'Propagate Cancel and Split' on the move. On the procurement rules, it is actually true by default.
+
+
+8 Inventory
+***********
+
+When you start using OpenERP, you might have an inventory to start from. (Starting Inventory) You will enter all the products that are in the warehouse and OpenERP will put them in this position. When you validate this inventory, OpenERP will create the necessary stock moves that will go from Inventory Loss to these locations.
+
+It is possible that operations in the warehouse are not well registered and the stock in OpenERP does not correspond exactly to the physical stock in the warehouse. Of course, you do not want this to happen, but errors do happen and a way to solve these mistakes, is to check the inventory once and a while. Most companies will do an entire inventory yearly.
+
+You can decide to do a certain product or a certain location. So, you are not required to do all the inventory at once. In a next step OpenERP will propose all the current stock in the system. When you correct this stock, OpenERP will create the necessary moves in a second tab. The inventory is done, when these moves are all transferred.
+
+
+
+9 Use case: Small distribution Centre for a Warehouse Chain AllStore
+********************************************************************
+
+A use case can make a lot of concepts real. That is also why it might be interesting to think a while or to try to solve it yourself before reading the solution after the description of the use case.
+
+===========
+Description
+===========
+
+AllStore wants to implement a small warehouse for 5 nearby shops. These shops will be using the Point of Sale. 1 shop is rather big, the 4 others are really small. Everyday a truck will go to the 5 shops as the fresh products need to be delivered every day. Also a separate compartment in the truck is foreseen for the frozen products.
+
+In the warehouse itself, we have docks for Input and Output. The fresh goods will be crossdocked as much as possible as they will arrive early in the morning from the supplier and will then be processed and transferred to the stores on the same day.
+
+The frozen goods will be received at the docks, but not far from the fresh products as it is a little colder over there. Once processed, they will go into the freezer, where they will be taken from their pallets.
+
+The frozen and fresh goods will be delivered from the supplier. The frozen goods have a lot and expiry date on their individual packages and we won't enter them in the system as they expire that fast, but for the fresh goods, we need to supply the dates.
+
+There also a lot of dry products, that are sometimes bought from a supplier and will sometimes arrive weekly from a truck from the main warehouse of AllStore.
+
+For outbound, the dry products will be packaged before being shipped. Also the frozen goods need to be picked for that. The consolidation zone for frozen goods is however different than that for the normal dry goods.
+
+The distribution centre is also used as a manufacturing plant for coffee. The coffee will be supplied to the main warehouse and the material necessary will come from the stock. The production manager will input the necessary production orders when necessary. For every manufacturing order a separate order will be made for the raw coffee, but some secret ingredients will come from stock. It is important to know which coffee is made from which lots.
+
+
+
+========
+Solution
+========
+
+As modules, it is clear we need stock, point of sale, purchase, sale and manufacturing. For the settings for the warehouse, we want to use multiple locations and advanced routes. We also need packages, lots and expiry dates on those lots. It is also in handy to see the UoMs as Apples and Pears will be measured by kg instead of by unit.
+
+When we want to configure this in OpenERP, we will typically start by configuring the warehouses. The logic for choosing the routes in OpenERP, is to first check those of the warehouse and then those of the product and product categories. So, the logic for configuring, is to put the generic routes on the warehouses and to put exceptions on these general rules on product and product categories.
+
+The default “Your Company” warehouse can be the main warehouse. We skip this configuration as it is not our goal. The only thing we know is that the coffee might be supplied from our distribution centre.
+
+Then we configure the “Distribution Centre”. As products always pass through the docks, by default it will be two step input and 3-step output (pick-pack-ship). Dry products will follow this simple flow.
+
+We will also manufacture and purchase in this warehouse. (Will only be done when it is configured on the product, even if we check the checkbox). We will not supply a default resupply warehouse as it might be bought, but the main warehouse will be one of the supply warehouses.
+
+The shops can be created by using single step incoming/ outgoing and each time the Distribution Centre as default resupply warehouse as the goods are always delivered to the shop from the Distribution Centre. 2-step incoming might be in handy for the bigger shop as it can be in handy to scan the goods upon arrival before putting everything into the store itself.
+
+As fresh products are always crossdocked, we can create a category with fresh products and put the CrossDock route on it which was created. This crossdock route, created by default, will always apply the procurement rules..
+
+As it is not logical to run between the freezers and the dry products, their stocks should be separated and should be handled by different pull flows. Frozen goods and dry products should be on different pickings when handled inside the warehouse. (not for shipping)
+
+This means we will need to alter the routes and locations and provide 2 extra product categories (Frozen and Dry). We can start by creating two child locations of Stock: Stock / Freezer and Stock / Dry. For the warehouse DC, 2 routes were created that need to be changed: 2 step inbound and 3-step pick pack ship. We can duplicate those two routes for the frozen. In the 4 routes we need to change the stock location to the stock/Freezer or stock/Dry accordingly.
+
+On the product category Frozen Goods we will need to put the two duplicated routes. That way, only the frozen goods will be sent to the freezer.
+
+For the manufacturing of the coffee, production orders will be created manually upon need in dry stock, but the raw coffee beans as raw materials will 'apply the procurement rules' and need the MTO route. The secret ingredients will be taken from the stock. We should not forget to create a BoM for the Coffee with the Raw Coffee Beans and the Secret Ingredients in it.
+
+As the routes have been configured, we can create products. As the products will be handled by the PoS in the shops, it would be nice if at least some of them can have minimum stock rules in order to replenish them there. So we need to define reordering rules (= minimum stock rules) for these products in the Shop1 / Stock location and Shop2 / Stock location. For the fresh products, this is all we need to do as they will be crossdocked in the Distribution Centre and this will work MTO. For the frozen and dry products, we need to define an orderpoint in the stock of the Distribution Centre also. Take care that the orderpoint is defined in DC/Stock/Freezer and not DC/Stock for example. No rule will be found in Stock.
+
+Putaway strategies can be interesting in order to find back our products easier and to give them a fixed location. For example we can create a sub-category Stock / Freezer / Freezer A with a putaway strategy in Stock / Freezer with fixed location Freezer A.
+
+For the fresh products, we need to supply a lot. This can be done by selecting “Track All Lots” on the product form.
+
+By default, products will have the buy route, but if they get resupplied from the main warehouse, it is possible to change on the product form. Suppose even that you don't know for certain products as both strategies are possible. So, if you uncheck buy, no route is active on the product form, the procurement will go into exception. Then you can put the right route (buy or supply from main warehouse) as preferred route on the procurement.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/stock/i18n/ar.po b/addons/stock/i18n/ar.po
index 3b10b0bb204..78b153b1b52 100644
--- a/addons/stock/i18n/ar.po
+++ b/addons/stock/i18n/ar.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:55+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:47+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
#. module: stock
#: field:stock.inventory.line.split,line_exist_ids:0
@@ -128,8 +128,8 @@ msgid "Product Moves"
msgstr "حركة الصنف"
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr "يرجى توفير الكمية المناسبة"
@@ -148,13 +148,13 @@ msgstr ""
"الرقم التسلسل الداخلي \"إذا كان مختلف عن رقم التسلسل الخاص بالمُصنِع\""
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr "لا يمكن أداء العملية على أكثر من مخزن واحد."
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr ""
@@ -182,8 +182,6 @@ msgstr "الشحنات"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -315,7 +313,7 @@ msgid "Reference"
msgstr "مرجع"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr "منتجات التي سيتم التعامل معها"
@@ -354,12 +352,12 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -367,9 +365,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "تحذير!"
@@ -485,9 +483,6 @@ msgstr "تتبع الاجراء "
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr "منتظر التوفر"
@@ -496,9 +491,6 @@ msgstr "منتظر التوفر"
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -569,7 +561,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr "المنتجات: "
@@ -586,7 +578,7 @@ msgid "Draft Physical Inventories"
msgstr "سحب المخزونات المادية"
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -622,7 +614,7 @@ msgid "Item Labels"
msgstr "التسميات للعنصر"
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr ""
@@ -699,8 +691,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr "الترتيب (الاصلي)"
@@ -740,7 +730,6 @@ msgid "Destination Address "
msgstr ""
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr "استقبال"
@@ -791,8 +780,6 @@ msgstr ""
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr ""
@@ -879,7 +866,7 @@ msgstr ""
"المدخلات تلقائيًا عند اجراء تحركات المخزون."
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -913,7 +900,7 @@ msgid "Time"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr "استقبالات فيما بعد"
@@ -952,8 +939,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "وزن"
@@ -997,7 +982,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr "مكان العبور لتنقلات الشركات الداخلية"
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1020,7 +1005,7 @@ msgid "Change Product Quantity"
msgstr "قم بتغيير كمية المنتج"
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr "المنتج و المكان الآتي"
@@ -1050,7 +1035,7 @@ msgid "You must assign a serial number for this product."
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr ""
@@ -1097,8 +1082,6 @@ msgstr "العملة"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr "يومية"
@@ -1180,7 +1163,7 @@ msgid ""
msgstr "الرجاء اختيار المخزونات المادية المتعددة لدمجها في قائمة العرض."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1301,7 +1284,7 @@ msgid "Author"
msgstr "المؤلف"
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1309,8 +1292,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr ""
@@ -1338,7 +1319,7 @@ msgid "Supplier"
msgstr "مورِّد"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1441,8 +1422,6 @@ msgstr "تحرك الاستهلاك"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
msgstr ""
@@ -1519,7 +1498,7 @@ msgstr ""
"الاختيار (عند استخدام منهج تكلفة السعر المتوسط)"
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr ""
@@ -1541,13 +1520,13 @@ msgid "To be refunded/invoiced"
msgstr "ليتم ردها/عمل الفاتورة"
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr "يمكنك فقط حذف تحركات السحب."
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr ""
@@ -1584,7 +1563,7 @@ msgid "Additional Info"
msgstr "معلومات اضافية"
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr ""
@@ -1600,7 +1579,7 @@ msgid "Incoming Shipments already processed"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr "يمكن فقط العودة للمختارات المؤكدة, او المتاحة او التي تمت!"
@@ -1676,9 +1655,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1756,7 +1732,7 @@ msgid "Order Date"
msgstr "تاريخ الأمر"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr ""
@@ -1794,7 +1770,7 @@ msgid "Stock Invoice Onshipping"
msgstr "فاتورة المخزون للشحن"
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr ""
@@ -1859,8 +1835,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr ""
@@ -1945,7 +1919,7 @@ msgid "Shelf 2"
msgstr "رف 2"
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr ""
@@ -1969,7 +1943,7 @@ msgid "Localization"
msgstr "المحلية"
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr "الكمية المستلمة"
@@ -2254,7 +2228,7 @@ msgid "Generate accounting entries per stock movement"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr "الكمية المستلمة"
@@ -2292,8 +2266,6 @@ msgstr "الاسم"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr ""
@@ -2323,8 +2295,8 @@ msgid "Customer Locations"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr ""
@@ -2551,7 +2523,7 @@ msgid "Warehouse board"
msgstr "جانب المستودع"
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr "الكمية القادمة"
@@ -2613,7 +2585,7 @@ msgid "Products"
msgstr "المنتجات"
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2653,7 +2625,7 @@ msgid "Outgoing Products"
msgstr "المنتجات الصادرة"
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2673,7 +2645,7 @@ msgid "Move"
msgstr "نقل"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr "كمية P&L"
@@ -2766,8 +2738,6 @@ msgstr "المصدر"
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2791,7 +2761,7 @@ msgid "Support multiple variants per products "
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -2815,7 +2785,7 @@ msgid "scrap"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -2902,13 +2872,13 @@ msgid "Stock Journal"
msgstr "يومية المخزون"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr "الهوية الفعالة غير معينه في السياق"
@@ -2931,7 +2901,7 @@ msgid "Scrap Move"
msgstr "تحرك الباقي"
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr ""
@@ -2976,7 +2946,7 @@ msgid "Date of Completion"
msgstr "تاريخ الاكتمال"
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr ""
@@ -3050,10 +3020,8 @@ msgstr "تاريخ المُراجعة"
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr "دفعة"
@@ -3082,8 +3050,6 @@ msgstr "خصص الاتاحة"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr "عنوان الحاسب :"
@@ -3257,7 +3223,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr ""
@@ -3276,9 +3242,6 @@ msgstr "مجموعات العملاء"
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr "تم"
@@ -3307,7 +3270,7 @@ msgid "Date done"
msgstr "تاريخ الاكتمال"
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3377,7 +3340,7 @@ msgid "Stock"
msgstr "أسهم"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr ""
@@ -3443,7 +3406,7 @@ msgid "Assigned Internal Moves"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr ""
@@ -3659,7 +3622,7 @@ msgid "Inventory Move"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr "الانتجات القادمة"
@@ -3769,24 +3732,21 @@ msgstr "جرد المتوفر"
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr ""
@@ -3839,7 +3799,7 @@ msgid "Non European Customers"
msgstr "لا يوجد عملاء اوروبيين"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -3847,19 +3807,18 @@ msgstr "لا يوجد عملاء اوروبيين"
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -3952,7 +3911,7 @@ msgstr ""
"الثابتة."
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -4025,7 +3984,7 @@ msgid "Followers"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr ""
@@ -4105,7 +4064,7 @@ msgstr ""
"المدخلات للمخزون."
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr ""
@@ -4124,7 +4083,7 @@ msgid "Chaining Journal"
msgstr "يومية التسلسل"
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr "مخزون غير كاف , غير قادر على حجز المنتجات."
@@ -4156,7 +4115,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr "التسليمات القادمة"
@@ -4179,7 +4138,7 @@ msgid "Auto Validate"
msgstr "تحقق ذاتي"
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr ""
@@ -4274,14 +4233,14 @@ msgid "Invoiced"
msgstr "مفوتر"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr "معلومات"
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr ""
@@ -4317,8 +4276,6 @@ msgstr "اختيار ذاتي"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr ""
@@ -4384,7 +4341,7 @@ msgid "Shelves (Y)"
msgstr "الرفوف (Y)"
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4397,7 +4354,7 @@ msgid "Serial Number Revision"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr ""
@@ -4410,7 +4367,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr ""
@@ -4443,7 +4400,7 @@ msgid "November"
msgstr "نوفمبر"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr "كمية غير مخططة"
@@ -4454,7 +4411,7 @@ msgid "Chained Company"
msgstr "شركة متسلسلة"
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr "تأكد من توافرها"
@@ -4478,7 +4435,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4495,14 +4452,14 @@ msgid "Move History (parent moves)"
msgstr "سجل الحركة (التحركات الاساسية)"
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr "المخزون القادم"
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr "خطأ"
@@ -4616,8 +4573,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Schedule Date"
msgstr ""
@@ -4655,8 +4610,6 @@ msgstr "حقيقي"
#. module: stock
#: field:stock.move,name:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot.revision:0
#: field:stock.production.lot.revision,description:0
msgid "Description"
@@ -4680,7 +4633,6 @@ msgid "Deliver"
msgstr "التسلم"
#. module: stock
-#: view:product.product:0
#: field:product.product,delivery_count:0
msgid "Delivery"
msgstr ""
@@ -4702,7 +4654,7 @@ msgid "Location Content"
msgstr "محتوى المكان"
#. module: stock
-#: code:addons/stock/product.py:478
+#: code:addons/stock/product.py:477
#, python-format
msgid "Produced Qty"
msgstr "الكمية المنتجة"
@@ -4893,8 +4845,6 @@ msgstr "جاهز للمعالجة"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Warehouse Address :"
msgstr ""
diff --git a/addons/stock/i18n/bg.po b/addons/stock/i18n/bg.po
index 0ce113c8e0e..576d180ee05 100644
--- a/addons/stock/i18n/bg.po
+++ b/addons/stock/i18n/bg.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:55+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:47+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
#. module: stock
#: field:stock.inventory.line.split,line_exist_ids:0
@@ -121,8 +121,8 @@ msgid "Product Moves"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr ""
@@ -140,13 +140,13 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr ""
@@ -174,8 +174,6 @@ msgstr "Избирателен списък"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -307,7 +305,7 @@ msgid "Reference"
msgstr "Означение"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr "Продукти за обработка"
@@ -344,12 +342,12 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -357,9 +355,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "Предупреждение!"
@@ -475,9 +473,6 @@ msgstr ""
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr ""
@@ -486,9 +481,6 @@ msgstr ""
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -557,7 +549,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr "Продукти: "
@@ -574,7 +566,7 @@ msgid "Draft Physical Inventories"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -610,7 +602,7 @@ msgid "Item Labels"
msgstr "Етикети на артикули"
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr ""
@@ -687,8 +679,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr "Ред(източник)"
@@ -728,7 +718,6 @@ msgid "Destination Address "
msgstr ""
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr ""
@@ -779,8 +768,6 @@ msgstr ""
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr "Състояние"
@@ -865,7 +852,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -899,7 +886,7 @@ msgid "Time"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr ""
@@ -938,8 +925,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "Тегло"
@@ -983,7 +968,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1006,7 +991,7 @@ msgid "Change Product Quantity"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr ""
@@ -1036,7 +1021,7 @@ msgid "You must assign a serial number for this product."
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr ""
@@ -1083,8 +1068,6 @@ msgstr "Валута"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr "Журнал"
@@ -1167,7 +1150,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1267,7 +1250,7 @@ msgid "Author"
msgstr "Автор"
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1275,8 +1258,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr ""
@@ -1304,7 +1285,7 @@ msgid "Supplier"
msgstr "Доставчик"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1405,8 +1386,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
msgstr ""
@@ -1476,7 +1455,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr ""
@@ -1498,13 +1477,13 @@ msgid "To be refunded/invoiced"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr "Може да изтривате само движения в проект"
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr ""
@@ -1541,7 +1520,7 @@ msgid "Additional Info"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr ""
@@ -1557,7 +1536,7 @@ msgid "Incoming Shipments already processed"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr ""
@@ -1633,9 +1612,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1713,7 +1689,7 @@ msgid "Order Date"
msgstr "Дата на поръчка"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr ""
@@ -1751,7 +1727,7 @@ msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr ""
@@ -1816,8 +1792,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr ""
@@ -1902,7 +1876,7 @@ msgid "Shelf 2"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr ""
@@ -1926,7 +1900,7 @@ msgid "Localization"
msgstr "Локализация"
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr "Доставено к-во"
@@ -2208,7 +2182,7 @@ msgid "Generate accounting entries per stock movement"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr "Получено к-во"
@@ -2246,8 +2220,6 @@ msgstr "Име"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr ""
@@ -2277,8 +2249,8 @@ msgid "Customer Locations"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr ""
@@ -2502,7 +2474,7 @@ msgid "Warehouse board"
msgstr "Табло Склад"
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr "Бъдещо количесто"
@@ -2564,7 +2536,7 @@ msgid "Products"
msgstr "Продукти"
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2604,7 +2576,7 @@ msgid "Outgoing Products"
msgstr "Изходящи продукти"
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2624,7 +2596,7 @@ msgid "Move"
msgstr "Движение"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr "К-во загуби и пачалби"
@@ -2709,8 +2681,6 @@ msgstr "Източник"
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2734,7 +2704,7 @@ msgid "Support multiple variants per products "
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -2758,7 +2728,7 @@ msgid "scrap"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -2842,13 +2812,13 @@ msgid "Stock Journal"
msgstr "Складов дневник"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr ""
@@ -2871,7 +2841,7 @@ msgid "Scrap Move"
msgstr ""
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr ""
@@ -2916,7 +2886,7 @@ msgid "Date of Completion"
msgstr "Дата на завършване"
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr ""
@@ -2990,10 +2960,8 @@ msgstr "Дата на ревизия"
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr "Партида"
@@ -3022,8 +2990,6 @@ msgstr "Указване за налично"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr "Адрес за контакт"
@@ -3193,7 +3159,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr ""
@@ -3212,9 +3178,6 @@ msgstr ""
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr "Готово"
@@ -3243,7 +3206,7 @@ msgid "Date done"
msgstr "Дата на приключване"
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3314,7 +3277,7 @@ msgid "Stock"
msgstr "Склад"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr ""
@@ -3380,7 +3343,7 @@ msgid "Assigned Internal Moves"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr ""
@@ -3596,7 +3559,7 @@ msgid "Inventory Move"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr "Бъдеща продукция"
@@ -3706,24 +3669,21 @@ msgstr "Партида от наличност"
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr ""
@@ -3776,7 +3736,7 @@ msgid "Non European Customers"
msgstr "Неевропейски клиенти"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -3784,19 +3744,18 @@ msgstr "Неевропейски клиенти"
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -3880,7 +3839,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -3952,7 +3911,7 @@ msgid "Followers"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr ""
@@ -4028,7 +3987,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr ""
@@ -4047,7 +4006,7 @@ msgid "Chaining Journal"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr ""
@@ -4079,7 +4038,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr ""
@@ -4102,7 +4061,7 @@ msgid "Auto Validate"
msgstr "Автоматична проверка"
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr ""
@@ -4195,14 +4154,14 @@ msgid "Invoiced"
msgstr "Фактуриран"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr "Информация"
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr ""
@@ -4238,8 +4197,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr ""
@@ -4300,7 +4257,7 @@ msgid "Shelves (Y)"
msgstr "Лавици (Y)"
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4313,7 +4270,7 @@ msgid "Serial Number Revision"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr ""
@@ -4326,7 +4283,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr ""
@@ -4359,7 +4316,7 @@ msgid "November"
msgstr "Ноември"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr "Непланирано к-во"
@@ -4370,7 +4327,7 @@ msgid "Chained Company"
msgstr ""
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr "Проверка за наличност"
@@ -4394,7 +4351,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4411,14 +4368,14 @@ msgid "Move History (parent moves)"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr "Грешка"
@@ -4532,8 +4489,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Schedule Date"
msgstr ""
@@ -4571,8 +4526,6 @@ msgstr ""
#. module: stock
#: field:stock.move,name:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot.revision:0
#: field:stock.production.lot.revision,description:0
msgid "Description"
@@ -4596,7 +4549,6 @@ msgid "Deliver"
msgstr "Доставка"
#. module: stock
-#: view:product.product:0
#: field:product.product,delivery_count:0
msgid "Delivery"
msgstr "Доставка"
@@ -4618,7 +4570,7 @@ msgid "Location Content"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:478
+#: code:addons/stock/product.py:477
#, python-format
msgid "Produced Qty"
msgstr "Произведено к-во"
@@ -4807,8 +4759,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Warehouse Address :"
msgstr ""
diff --git a/addons/stock/i18n/bs.po b/addons/stock/i18n/bs.po
index 7929e2c2ae6..ce3aeff1d14 100644
--- a/addons/stock/i18n/bs.po
+++ b/addons/stock/i18n/bs.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:55+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:47+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
#. module: stock
#: field:stock.inventory.line.split,line_exist_ids:0
@@ -129,8 +129,8 @@ msgid "Product Moves"
msgstr "Kretanja proizvoda"
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr "Molimo unesite ispravnu količinu"
@@ -149,13 +149,13 @@ msgstr ""
"Interni broj za slučajeve kada se razlikuje od proizvođačeva serijskog broja"
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr "Nije oguće izvršiti ovu operaciju na više od jednog skladišta"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr "Količine ne mogu biti negativne"
@@ -183,8 +183,6 @@ msgstr "Lista prikupljanja proizvoda"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -318,7 +316,7 @@ msgid "Reference"
msgstr "Referenca"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr "Proizvodi za obradu"
@@ -359,12 +357,12 @@ msgstr ""
"da bi mogao biti ubačen u kanban pogled."
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -372,9 +370,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "Upozorenje!"
@@ -490,9 +488,6 @@ msgstr "Prativost akcije "
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr "Čekanje dostupnosti"
@@ -501,9 +496,6 @@ msgstr "Čekanje dostupnosti"
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -576,7 +568,7 @@ msgstr ""
"proizvoda. Ovo vrijeme obećavate kupcu kao rok isporuke."
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr "Proizvodi: "
@@ -593,7 +585,7 @@ msgid "Draft Physical Inventories"
msgstr "Inventura fizičkih zaliha u pripremi"
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -641,7 +633,7 @@ msgid "Item Labels"
msgstr "Naljepnica proizvoda"
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr "Zaostala narudžba %s je bila kreirana."
@@ -722,8 +714,6 @@ msgstr "Količina za serijski broj %d %s je veća od dostupne količine (%d)!"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr "Nalog (porijeklo)"
@@ -763,7 +753,6 @@ msgid "Destination Address "
msgstr "Odredišna adresa "
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr "Prijem"
@@ -814,8 +803,6 @@ msgstr "Planirana godina"
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr "Status"
@@ -908,7 +895,7 @@ msgstr ""
"kojem će se zapisi automatski knjižiti kada se obrade kretanja zalihe."
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -944,7 +931,7 @@ msgid "Time"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr "Budući prijemi"
@@ -983,8 +970,6 @@ msgstr "- ažuriraj"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "Težina"
@@ -1030,7 +1015,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr "Tranzitna lokacija za transfere između kompanija"
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1055,7 +1040,7 @@ msgid "Change Product Quantity"
msgstr "Promjeni količinu proizvoda"
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr "Budući proizvodi i lokacije"
@@ -1085,7 +1070,7 @@ msgid "You must assign a serial number for this product."
msgstr "Morate dodijeliti serijski broj za ovaj proizvod"
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr ""
@@ -1133,8 +1118,6 @@ msgstr "Valuta"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr "Dnevnik knjiženja"
@@ -1219,7 +1202,7 @@ msgid ""
msgstr "Molim izaberite više inventura da ih spojite u pogledu liste."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1344,7 +1327,7 @@ msgid "Author"
msgstr "Autor"
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1353,8 +1336,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr "Interne isporuke:"
@@ -1382,7 +1363,7 @@ msgid "Supplier"
msgstr "Dobavljač"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1498,8 +1479,6 @@ msgstr "Kretanje zalihe utroška"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
msgstr "Narudžba dostave:"
@@ -1592,7 +1571,7 @@ msgstr ""
"metoda koštanja korišćena)"
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr "Upozorenje: Nema zaostale narudžbe"
@@ -1614,13 +1593,13 @@ msgid "To be refunded/invoiced"
msgstr "Za refundiranje/fakturisanje"
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr "Možete izbrisati samo kretanja zalihe u pripremi."
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr ""
@@ -1658,7 +1637,7 @@ msgid "Additional Info"
msgstr "Dodatni podaci"
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr ""
@@ -1675,7 +1654,7 @@ msgid "Incoming Shipments already processed"
msgstr "Dolazne isporuke su već obrađene"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr ""
@@ -1758,9 +1737,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1851,7 +1827,7 @@ msgid "Order Date"
msgstr "Datum narudžbe"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr "INV: %s"
@@ -1890,7 +1866,7 @@ msgid "Stock Invoice Onshipping"
msgstr "Fakturiši zalihu nakon isporuke"
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr "Molimo upišite pozitivnu količinu za otpis."
@@ -1955,8 +1931,6 @@ msgstr "Je zaostala narudžba"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr "Dolazne isporuke:"
@@ -2045,7 +2019,7 @@ msgid "Shelf 2"
msgstr "Polica 2"
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr "Ne možete ukloniti stavku lota."
@@ -2069,7 +2043,7 @@ msgid "Localization"
msgstr "Lokalizacija"
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr "Dostavljena kol."
@@ -2403,7 +2377,7 @@ msgid "Generate accounting entries per stock movement"
msgstr "Generši računovodstvene zapise po svakom kretanju zalihe"
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr "Primljena kol."
@@ -2445,8 +2419,6 @@ msgstr "Ime"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr "Adresa dobavljača :"
@@ -2476,8 +2448,8 @@ msgid "Customer Locations"
msgstr "Lokacije kupca"
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr "Greška Korisnika!"
@@ -2718,7 +2690,7 @@ msgid "Warehouse board"
msgstr "Skladišna kontrolna tabla"
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr "Buduće kol."
@@ -2780,7 +2752,7 @@ msgid "Products"
msgstr "Proizvodi"
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2822,7 +2794,7 @@ msgid "Outgoing Products"
msgstr "Proizvodi u procesu otpreme"
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2844,7 +2816,7 @@ msgid "Move"
msgstr "Kretanje"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr "P&L kol."
@@ -2939,8 +2911,6 @@ msgstr "Izvor"
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2964,7 +2934,7 @@ msgid "Support multiple variants per products "
msgstr "Podrži više varijanti po proizvodima "
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -2990,7 +2960,7 @@ msgid "scrap"
msgstr "otpis"
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -3086,13 +3056,13 @@ msgid "Stock Journal"
msgstr "Dnevnik zaliha"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr "%s-%s-vrati"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr "Aktivni ID nije u kontekstu"
@@ -3115,7 +3085,7 @@ msgid "Scrap Move"
msgstr "Kretanje otpisa"
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr ""
"Serijski broj se koristi za postavljanje serijskog broja na proizvodnji"
@@ -3161,7 +3131,7 @@ msgid "Date of Completion"
msgstr "Datum izvršenja"
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr ""
@@ -3246,10 +3216,8 @@ msgstr "Datum revizije"
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr "Partija"
@@ -3280,8 +3248,6 @@ msgstr "Postavi dostupnost"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr "Kontakt adresa :"
@@ -3498,7 +3464,7 @@ msgstr ""
" "
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr "%s %s %s je prenesen u otpis."
@@ -3517,9 +3483,6 @@ msgstr "Pakovanja kupaca"
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr "Završeno"
@@ -3548,7 +3511,7 @@ msgid "Date done"
msgstr "Datum završetka"
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3620,7 +3583,7 @@ msgid "Stock"
msgstr "Zaliha"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr "Vraćena prikupljanja proizvoda"
@@ -3698,7 +3661,7 @@ msgid "Assigned Internal Moves"
msgstr "Dodjeljena interna kretanja"
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr "Ne možete da obradite prikupljanje proizvoda bez kretanja zaliha."
@@ -3946,7 +3909,7 @@ msgid "Inventory Move"
msgstr "Interno kretanje"
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr "Buduća proizvodnja"
@@ -4068,24 +4031,21 @@ msgstr "Partija popisa"
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr "Serijski broj"
@@ -4143,7 +4103,7 @@ msgid "Non European Customers"
msgstr "Nevropski kupci"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -4151,19 +4111,18 @@ msgstr "Nevropski kupci"
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -4262,7 +4221,7 @@ msgstr ""
"lančana lokacija ako je fiksna."
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -4338,7 +4297,7 @@ msgid "Followers"
msgstr "Pratioci"
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr "Ne može se utrošiti kretanje sa negativnim ili nultim količinama."
@@ -4421,7 +4380,7 @@ msgstr ""
"konto izlaza zalihe će dugovati."
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr ""
@@ -4444,7 +4403,7 @@ msgid "Chaining Journal"
msgstr "Dnevnik ulančavanja"
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr "Nedovoljna količina na zalihi, rezervacija artikla nije moguća."
@@ -4487,7 +4446,7 @@ msgstr ""
"utiče na interne lokacije."
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr "Buduće dostave"
@@ -4510,7 +4469,7 @@ msgid "Auto Validate"
msgstr "Automatska provjera"
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr "Nedovoljno zalihe za serijski broj!"
@@ -4608,14 +4567,14 @@ msgid "Invoiced"
msgstr "Fakturisano"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr "Informacija"
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr "Nije moguće ukloniti prikupljanje proizvoda koje je u statusu %s !"
@@ -4651,8 +4610,6 @@ msgstr "Automatsko prikupljanje proizvoda"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr "Adresa kupca:"
@@ -4718,7 +4675,7 @@ msgid "Shelves (Y)"
msgstr "Police (Y)"
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4733,7 +4690,7 @@ msgid "Serial Number Revision"
msgstr "Revizija serijskih brojeva"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr "Specifirajte konto vrednovanja za kategoriju proizvoda: %s."
@@ -4748,7 +4705,7 @@ msgstr ""
" Ovo instalira modul claim_from_delivery."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr "Molimo unesite najmanje jednu količinu koja nije nula."
@@ -4782,7 +4739,7 @@ msgid "November"
msgstr "Novembar"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr "Neplanirana kol."
@@ -4793,7 +4750,7 @@ msgid "Chained Company"
msgstr "Povezana kompanija"
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr "Provjera dostupnosti"
@@ -4821,7 +4778,7 @@ msgstr ""
"uzvodne i nizvodne sljedivosti tog proizvoda."
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4839,14 +4796,14 @@ msgid "Move History (parent moves)"
msgstr "Istorija kretanja (nadređena kretanja)"
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr "Buduća zaliha"
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr "Greška"
@@ -4976,8 +4933,6 @@ msgstr "Kašnjenja"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Schedule Date"
msgstr "Zakazani datum"
@@ -5015,8 +4970,6 @@ msgstr "Stvarna"
#. module: stock
#: field:stock.move,name:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot.revision:0
#: field:stock.production.lot.revision,description:0
msgid "Description"
@@ -5040,7 +4993,6 @@ msgid "Deliver"
msgstr "Dostava"
#. module: stock
-#: view:product.product:0
#: field:product.product,delivery_count:0
msgid "Delivery"
msgstr "Isporuka"
@@ -5062,7 +5014,7 @@ msgid "Location Content"
msgstr "Sadržaj lokacije"
#. module: stock
-#: code:addons/stock/product.py:478
+#: code:addons/stock/product.py:477
#, python-format
msgid "Produced Qty"
msgstr "Proizvedena kol."
@@ -5286,8 +5238,6 @@ msgstr "Spremno za obradu"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Warehouse Address :"
msgstr "Adresa skladišta:"
diff --git a/addons/stock/i18n/ca.po b/addons/stock/i18n/ca.po
index 20547147b58..a7397b2be1b 100644
--- a/addons/stock/i18n/ca.po
+++ b/addons/stock/i18n/ca.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:55+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:47+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
#. module: stock
#: field:stock.inventory.line.split,line_exist_ids:0
@@ -121,8 +121,8 @@ msgid "Product Moves"
msgstr "Moviments productes"
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr ""
@@ -142,13 +142,13 @@ msgstr ""
"del fabricant."
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr "No podeu realitzar aquesta operació en més d'un inventari d'estoc."
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr ""
@@ -176,8 +176,6 @@ msgstr "Albarà"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -311,7 +309,7 @@ msgid "Reference"
msgstr "Referència"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr "Productes a processar"
@@ -350,12 +348,12 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -363,9 +361,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "Avís!"
@@ -481,9 +479,6 @@ msgstr "Acció traçabilitat "
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr ""
@@ -492,9 +487,6 @@ msgstr ""
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -565,7 +557,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr "Productes: "
@@ -582,7 +574,7 @@ msgid "Draft Physical Inventories"
msgstr "Inventaris físics en esborrany"
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -618,7 +610,7 @@ msgid "Item Labels"
msgstr "Etiquetes articles"
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr ""
@@ -695,8 +687,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr "Ordre (origen)"
@@ -736,7 +726,6 @@ msgid "Destination Address "
msgstr ""
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr "Recepció"
@@ -787,8 +776,6 @@ msgstr ""
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr "Estat"
@@ -876,7 +863,7 @@ msgstr ""
"processin."
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -910,7 +897,7 @@ msgid "Time"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr "Recepcions futures"
@@ -949,8 +936,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "Pes"
@@ -994,7 +979,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr "Ubicació de trànsit per a transferències inter-empreses"
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1017,7 +1002,7 @@ msgid "Change Product Quantity"
msgstr "Canvia quantitat de producte"
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr "P&L futures"
@@ -1047,7 +1032,7 @@ msgid "You must assign a serial number for this product."
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr ""
@@ -1094,8 +1079,6 @@ msgstr "Divisa"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr "Diari"
@@ -1180,7 +1163,7 @@ msgstr ""
"Seleccioneu diversos inventaris físics per fusionar en la vista llesta."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1305,7 +1288,7 @@ msgid "Author"
msgstr "Autor"
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1313,8 +1296,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr ""
@@ -1342,7 +1323,7 @@ msgid "Supplier"
msgstr "Proveïdor"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1445,8 +1426,6 @@ msgstr "Moviment consum"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
msgstr ""
@@ -1524,7 +1503,7 @@ msgstr ""
"mitjà de cost)."
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr ""
@@ -1546,13 +1525,13 @@ msgid "To be refunded/invoiced"
msgstr "Per ser abonat/facturat"
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr "Només pot eliminar moviments esborrany."
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr ""
@@ -1589,7 +1568,7 @@ msgid "Additional Info"
msgstr "Informació addicional"
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr ""
@@ -1605,7 +1584,7 @@ msgid "Incoming Shipments already processed"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr "Tan sols podeu retornar albarans confirmats, reservats o realitzats!"
@@ -1681,9 +1660,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1762,7 +1738,7 @@ msgid "Order Date"
msgstr "Data ordre"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr "INV: %s"
@@ -1802,7 +1778,7 @@ msgid "Stock Invoice Onshipping"
msgstr "Estoc factura en l'enviament"
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr ""
@@ -1867,8 +1843,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr ""
@@ -1953,7 +1927,7 @@ msgid "Shelf 2"
msgstr "Prestatge 2"
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr ""
@@ -1977,7 +1951,7 @@ msgid "Localization"
msgstr "Ubicació"
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr "Qtat enviada"
@@ -2263,7 +2237,7 @@ msgid "Generate accounting entries per stock movement"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr "Qttat rebuda"
@@ -2303,8 +2277,6 @@ msgstr "Nom"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr ""
@@ -2334,8 +2306,8 @@ msgid "Customer Locations"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr ""
@@ -2563,7 +2535,7 @@ msgid "Warehouse board"
msgstr "Taulell magatzem"
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr "Qtat futura"
@@ -2625,7 +2597,7 @@ msgid "Products"
msgstr "Productes"
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2665,7 +2637,7 @@ msgid "Outgoing Products"
msgstr "Albarans de sortida"
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2685,7 +2657,7 @@ msgid "Move"
msgstr "Moviment"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr "Qtat P&L"
@@ -2781,8 +2753,6 @@ msgstr "Origen"
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2806,7 +2776,7 @@ msgid "Support multiple variants per products "
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -2830,7 +2800,7 @@ msgid "scrap"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -2918,13 +2888,13 @@ msgid "Stock Journal"
msgstr "Diari d'estocs"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr "No s'ha establert el ID actiu en el Context"
@@ -2947,7 +2917,7 @@ msgid "Scrap Move"
msgstr "Moviment rebuig"
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr ""
@@ -2992,7 +2962,7 @@ msgid "Date of Completion"
msgstr "Data de realització"
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr ""
@@ -3067,10 +3037,8 @@ msgstr "Data de revisió"
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr "Lot"
@@ -3099,8 +3067,6 @@ msgstr "Reserva"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr "Adreça del contacte:"
@@ -3275,7 +3241,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr ""
@@ -3294,9 +3260,6 @@ msgstr "Paquet client"
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr "Realitzat"
@@ -3325,7 +3288,7 @@ msgid "Date done"
msgstr "Data realització"
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3395,7 +3358,7 @@ msgid "Stock"
msgstr "Estoc"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr ""
@@ -3461,7 +3424,7 @@ msgid "Assigned Internal Moves"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr ""
@@ -3677,7 +3640,7 @@ msgid "Inventory Move"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr "Produccions futures"
@@ -3787,24 +3750,21 @@ msgstr "Regularització d'inventari"
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr ""
@@ -3857,7 +3817,7 @@ msgid "Non European Customers"
msgstr "Clients no europeus"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -3865,19 +3825,18 @@ msgstr "Clients no europeus"
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -3971,7 +3930,7 @@ msgstr ""
"encadenada si fixa."
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -4045,7 +4004,7 @@ msgid "Followers"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr ""
@@ -4126,7 +4085,7 @@ msgstr ""
"l'haver i el compte d'entrada d'estoc anirà al deure."
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr ""
@@ -4145,7 +4104,7 @@ msgid "Chaining Journal"
msgstr "Diari encadenament"
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr "Estoc insuficient, no ha estat possible reservar els productes."
@@ -4177,7 +4136,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr "Lliurament futur"
@@ -4200,7 +4159,7 @@ msgid "Auto Validate"
msgstr "Auto valida"
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr ""
@@ -4295,14 +4254,14 @@ msgid "Invoiced"
msgstr "Facturat"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr "Informació"
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr ""
@@ -4338,8 +4297,6 @@ msgstr "Auto-Albarà"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr ""
@@ -4405,7 +4362,7 @@ msgid "Shelves (Y)"
msgstr "prestatgeria (Y)"
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4418,7 +4375,7 @@ msgid "Serial Number Revision"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr ""
@@ -4431,7 +4388,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr ""
@@ -4464,7 +4421,7 @@ msgid "November"
msgstr "Novembre"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr "Qtat no planificada"
@@ -4475,7 +4432,7 @@ msgid "Chained Company"
msgstr "Companyia encadenada"
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr "Comprova disponibilitat"
@@ -4499,7 +4456,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4516,14 +4473,14 @@ msgid "Move History (parent moves)"
msgstr "Historial moviments (mov. pares)"
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr "Estoc futur"
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr "Error"
@@ -4639,8 +4596,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Schedule Date"
msgstr ""
@@ -4678,8 +4633,6 @@ msgstr "Real"
#. module: stock
#: field:stock.move,name:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot.revision:0
#: field:stock.production.lot.revision,description:0
msgid "Description"
@@ -4703,7 +4656,6 @@ msgid "Deliver"
msgstr "Envia"
#. module: stock
-#: view:product.product:0
#: field:product.product,delivery_count:0
msgid "Delivery"
msgstr "Lliurament"
@@ -4725,7 +4677,7 @@ msgid "Location Content"
msgstr "Contingut ubicació"
#. module: stock
-#: code:addons/stock/product.py:478
+#: code:addons/stock/product.py:477
#, python-format
msgid "Produced Qty"
msgstr "Ctat produïda"
@@ -4917,8 +4869,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Warehouse Address :"
msgstr ""
diff --git a/addons/stock/i18n/cs.po b/addons/stock/i18n/cs.po
index 2872092db4c..d4a0116efa0 100644
--- a/addons/stock/i18n/cs.po
+++ b/addons/stock/i18n/cs.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:55+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:47+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
"X-Poedit-Language: Czech\n"
#. module: stock
@@ -124,8 +124,8 @@ msgid "Product Moves"
msgstr "Pohyby výrobků"
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr "Prosím zadejte řádně množství."
@@ -144,14 +144,14 @@ msgstr ""
"Vnitropodnikové číslo značky v případě, že se liší od seriového čísla výrobce"
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr ""
"Tuto operaci nemůžete provést na více než jednom skladovém inventáři."
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr "Množství nemůže být záporné."
@@ -179,8 +179,6 @@ msgstr "Dodací list"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -313,7 +311,7 @@ msgid "Reference"
msgstr "Značka"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr "Výrobky ke zpracování"
@@ -354,12 +352,12 @@ msgstr ""
"formátu aby mohl být vložen do zobrazení kanban."
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -367,9 +365,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "Varování!"
@@ -485,9 +483,6 @@ msgstr "Sledovatelnost akce "
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr "Čeká se na dostupnost"
@@ -496,9 +491,6 @@ msgstr "Čeká se na dostupnost"
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -571,7 +563,7 @@ msgstr ""
"hotových výrobků. Je to čas, který slibujete vašim zákazníkům."
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr "Výrobky: "
@@ -588,7 +580,7 @@ msgid "Draft Physical Inventories"
msgstr "Koncept fyzické inventury"
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -634,7 +626,7 @@ msgid "Item Labels"
msgstr "Štítky položek"
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr "Objednávka u dodavatele %s byla vytvořena."
@@ -714,8 +706,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr "Pořadí(Původ)"
@@ -755,7 +745,6 @@ msgid "Destination Address "
msgstr "Cílová adresa "
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr "Příjem"
@@ -806,8 +795,6 @@ msgstr "Plánováno na rok"
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr "Stav"
@@ -898,7 +885,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -934,7 +921,7 @@ msgid "Time"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr "Budoucí příjmy"
@@ -973,8 +960,6 @@ msgstr "- aktualizace"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "Hmotnost"
@@ -1018,7 +1003,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr "Přepravní umístění pro přesuny mezi společnostmi"
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1041,7 +1026,7 @@ msgid "Change Product Quantity"
msgstr "Změnit množství výrobků"
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr "Budoucí P&L"
@@ -1071,7 +1056,7 @@ msgid "You must assign a serial number for this product."
msgstr "Tomuto výrobku musíte přiřadit seriové číslo."
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr "Prosím určte deník této kategorie výrobků: \"%s\" (id: %d)"
@@ -1118,8 +1103,6 @@ msgstr "Měna"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr "Deník"
@@ -1202,7 +1185,7 @@ msgstr ""
"Prosíme vyberte více fyzických inventářů ke sloučení v pohledu seznamu."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1302,7 +1285,7 @@ msgid "Author"
msgstr "Autor"
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1311,8 +1294,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr "Vnitropodniková zásilka:"
@@ -1340,7 +1321,7 @@ msgid "Supplier"
msgstr "Dodavatel"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1443,8 +1424,6 @@ msgstr "Spotřebovat pohyb"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
msgstr "Dodávka:"
@@ -1516,7 +1495,7 @@ msgstr ""
"potvrzení dodání (když je použita metoda průměrných cen)"
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr "Varování: Žádná objednávka u dodavatele"
@@ -1538,13 +1517,13 @@ msgid "To be refunded/invoiced"
msgstr "K dobropisování/fakturaci"
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr "Můžete smazat pouze návrhové přesuny."
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr "Nemůžete přesunou výrobek %s do umístění s druhem pohledu %s."
@@ -1581,7 +1560,7 @@ msgid "Additional Info"
msgstr "Doplňkové info"
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr "Chybějící částečná data dodání pohybu #%s."
@@ -1597,7 +1576,7 @@ msgid "Incoming Shipments already processed"
msgstr "Přijaté zásilky již zpracovány"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr ""
@@ -1674,9 +1653,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1763,7 +1739,7 @@ msgid "Order Date"
msgstr "Datum objednávky"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr "ZÁS: %s"
@@ -1802,7 +1778,7 @@ msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr "Prosím zadejte kladné množství pro určení zmetků."
@@ -1867,8 +1843,6 @@ msgstr "Je objednávka u dodavatele"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr "Příchozí zásilka:"
@@ -1955,7 +1929,7 @@ msgid "Shelf 2"
msgstr "Regál 2"
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr ""
@@ -1979,7 +1953,7 @@ msgid "Localization"
msgstr "Lokalizace"
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr "Doručené množ."
@@ -2281,7 +2255,7 @@ msgid "Generate accounting entries per stock movement"
msgstr "Vytvořit účetní záznamy pro každý pohyb zásob"
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr "Obdržené množ."
@@ -2323,8 +2297,6 @@ msgstr "Jméno"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr "Adresa dodavatele:"
@@ -2354,8 +2326,8 @@ msgid "Customer Locations"
msgstr "Umístění zákazníků"
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr "Chyba uživatele!"
@@ -2595,7 +2567,7 @@ msgid "Warehouse board"
msgstr "Tabule skladu"
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr "Budoucí množ."
@@ -2657,7 +2629,7 @@ msgid "Products"
msgstr "Výrobky"
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2697,7 +2669,7 @@ msgid "Outgoing Products"
msgstr "Odchozí výrobky"
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2719,7 +2691,7 @@ msgid "Move"
msgstr "Pohyb"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr "P&L množ."
@@ -2813,8 +2785,6 @@ msgstr "Zdroj"
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2838,7 +2808,7 @@ msgid "Support multiple variants per products "
msgstr "Podporovat více variant výrobku "
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -2864,7 +2834,7 @@ msgid "scrap"
msgstr "zmetky"
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -2954,13 +2924,13 @@ msgid "Stock Journal"
msgstr "Skladový deník"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr "Aktivní ID není nastaveno v kontextu"
@@ -2983,7 +2953,7 @@ msgid "Scrap Move"
msgstr "Přesun zmetku"
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr "Seriové číslo se používá pro umístění seriového čísla na výrobky"
@@ -3028,7 +2998,7 @@ msgid "Date of Completion"
msgstr "Datum dokončení"
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr "Nemůžete přesunout výrobek %s ze umístění zobrazení druhu %s."
@@ -3114,10 +3084,8 @@ msgstr "Datum revize"
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr "Dávka"
@@ -3146,8 +3114,6 @@ msgstr "Nastavit dostupné"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr "Kontaktní adresa :"
@@ -3353,7 +3319,7 @@ msgstr ""
" "
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr "%s %s %s bylo označeno jako zmetky."
@@ -3372,9 +3338,6 @@ msgstr "Balení zákazníků"
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr "Dokončeno"
@@ -3403,7 +3366,7 @@ msgid "Date done"
msgstr "Datum dokončení"
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3476,7 +3439,7 @@ msgid "Stock"
msgstr "Sklad"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr "Vrácené dodání"
@@ -3553,7 +3516,7 @@ msgid "Assigned Internal Moves"
msgstr "Přiřazené vnitropodnikové pohyby"
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr "Nemůžete zpracovat dodání bez pohybu zásob."
@@ -3778,7 +3741,7 @@ msgid "Inventory Move"
msgstr "Pohyb zásob"
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr "Budoucí výroba"
@@ -3888,24 +3851,21 @@ msgstr "Inventář dávek"
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr "Sériové číslo"
@@ -3958,7 +3918,7 @@ msgid "Non European Customers"
msgstr "Neevropský zákazník"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -3966,19 +3926,18 @@ msgstr "Neevropský zákazník"
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -4068,7 +4027,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -4144,7 +4103,7 @@ msgid "Followers"
msgstr "Sledující"
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr "Nelze zpracovat pohyb se záporným nebo nulovým množství."
@@ -4222,7 +4181,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr "ZÁS:"
@@ -4241,7 +4200,7 @@ msgid "Chaining Journal"
msgstr "Deník zřetězení"
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr "Nelze rezervovat výrobky kvůli nedostatku zásob."
@@ -4273,7 +4232,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr "Budoucí dodávky"
@@ -4296,7 +4255,7 @@ msgid "Auto Validate"
msgstr "Automaticky ověřit"
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr "Nedostatečné množství seriového čísla!"
@@ -4391,14 +4350,14 @@ msgid "Invoiced"
msgstr "Fakturováno"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr "Informace"
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr "Nemůžete odebrat dodávku ve stavu %s!"
@@ -4434,8 +4393,6 @@ msgstr "Automatické dodání"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr "Adresa zákazníka:"
@@ -4496,7 +4453,7 @@ msgid "Shelves (Y)"
msgstr "Regál (Y)"
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4510,7 +4467,7 @@ msgid "Serial Number Revision"
msgstr "Revize seriového čísla"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr "Určete účet ocenění kategorie výrobků: %s."
@@ -4523,7 +4480,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr "Prosím zadejete alespoň nenulové množství."
@@ -4556,7 +4513,7 @@ msgid "November"
msgstr "Listopad"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr "Neplánované množ."
@@ -4567,7 +4524,7 @@ msgid "Chained Company"
msgstr "Zřetězená společnost"
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr "Zkontrolovat dostupnost"
@@ -4594,7 +4551,7 @@ msgstr ""
"sledovatelnost daného výrobku."
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4613,14 +4570,14 @@ msgid "Move History (parent moves)"
msgstr "Historie pohybů (nadřazené pohyby)"
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr "Budoucí zásoby"
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr "Chyba"
@@ -4745,8 +4702,6 @@ msgstr "Prodlevy"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Schedule Date"
msgstr "Naplánované datum"
@@ -4784,8 +4739,6 @@ msgstr "Skutečný"
#. module: stock
#: field:stock.move,name:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot.revision:0
#: field:stock.production.lot.revision,description:0
msgid "Description"
@@ -4809,7 +4762,6 @@ msgid "Deliver"
msgstr "Dodat"
#. module: stock
-#: view:product.product:0
#: field:product.product,delivery_count:0
msgid "Delivery"
msgstr "Dodání"
@@ -4831,7 +4783,7 @@ msgid "Location Content"
msgstr "Obsah místa"
#. module: stock
-#: code:addons/stock/product.py:478
+#: code:addons/stock/product.py:477
#, python-format
msgid "Produced Qty"
msgstr "Vyrobené množ."
@@ -5033,8 +4985,6 @@ msgstr "Připraven ke zpracování"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Warehouse Address :"
msgstr ""
diff --git a/addons/stock/i18n/da.po b/addons/stock/i18n/da.po
index 24157d391a9..9010e9b63ae 100644
--- a/addons/stock/i18n/da.po
+++ b/addons/stock/i18n/da.po
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:55+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:47+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
#. module: stock
#: field:stock.inventory.line.split,line_exist_ids:0
@@ -131,8 +131,8 @@ msgid "Product Moves"
msgstr "Vare flytninger"
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr ""
@@ -150,13 +150,13 @@ msgid ""
msgstr "Intern reference nr. hvis forskellig fra producentens serienummer."
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr "Du kan ikke udføre denne handling på mere end ét varelager."
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr "Antal må ikke være negativ"
@@ -184,8 +184,6 @@ msgstr "Pluk liste"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -317,7 +315,7 @@ msgid "Reference"
msgstr "Reference"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr ""
@@ -356,12 +354,12 @@ msgstr ""
"format for at kunne sættes ind i kanban views."
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -369,9 +367,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "Advarsel!"
@@ -487,9 +485,6 @@ msgstr ""
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr ""
@@ -498,9 +493,6 @@ msgstr ""
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -569,7 +561,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr ""
@@ -586,7 +578,7 @@ msgid "Draft Physical Inventories"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -622,7 +614,7 @@ msgid "Item Labels"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr ""
@@ -699,8 +691,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr ""
@@ -740,7 +730,6 @@ msgid "Destination Address "
msgstr ""
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr ""
@@ -791,8 +780,6 @@ msgstr ""
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr ""
@@ -877,7 +864,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -913,7 +900,7 @@ msgid "Time"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr ""
@@ -952,8 +939,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "Vægt"
@@ -997,7 +982,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1020,7 +1005,7 @@ msgid "Change Product Quantity"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr ""
@@ -1050,7 +1035,7 @@ msgid "You must assign a serial number for this product."
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr ""
@@ -1097,8 +1082,6 @@ msgstr "Valuta"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr ""
@@ -1177,7 +1160,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1277,7 +1260,7 @@ msgid "Author"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1285,8 +1268,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr ""
@@ -1314,7 +1295,7 @@ msgid "Supplier"
msgstr "Leverandør"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1415,8 +1396,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
msgstr ""
@@ -1486,7 +1465,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr ""
@@ -1508,13 +1487,13 @@ msgid "To be refunded/invoiced"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr ""
@@ -1551,7 +1530,7 @@ msgid "Additional Info"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr ""
@@ -1567,7 +1546,7 @@ msgid "Incoming Shipments already processed"
msgstr "behandlede Indkommende leverancer"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr ""
@@ -1643,9 +1622,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1723,7 +1699,7 @@ msgid "Order Date"
msgstr "Ordredato"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr ""
@@ -1761,7 +1737,7 @@ msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr ""
@@ -1826,8 +1802,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr ""
@@ -1912,7 +1886,7 @@ msgid "Shelf 2"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr ""
@@ -1936,7 +1910,7 @@ msgid "Localization"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr ""
@@ -2220,7 +2194,7 @@ msgid "Generate accounting entries per stock movement"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr ""
@@ -2258,8 +2232,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr ""
@@ -2289,8 +2261,8 @@ msgid "Customer Locations"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr ""
@@ -2514,7 +2486,7 @@ msgid "Warehouse board"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr ""
@@ -2576,7 +2548,7 @@ msgid "Products"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2616,7 +2588,7 @@ msgid "Outgoing Products"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2636,7 +2608,7 @@ msgid "Move"
msgstr "Flyt"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr ""
@@ -2721,8 +2693,6 @@ msgstr ""
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2746,7 +2716,7 @@ msgid "Support multiple variants per products "
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -2770,7 +2740,7 @@ msgid "scrap"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -2854,13 +2824,13 @@ msgid "Stock Journal"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr ""
@@ -2883,7 +2853,7 @@ msgid "Scrap Move"
msgstr ""
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr ""
@@ -2928,7 +2898,7 @@ msgid "Date of Completion"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr ""
@@ -3002,10 +2972,8 @@ msgstr ""
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr ""
@@ -3034,8 +3002,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr ""
@@ -3205,7 +3171,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr ""
@@ -3224,9 +3190,6 @@ msgstr ""
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr ""
@@ -3255,7 +3218,7 @@ msgid "Date done"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3325,7 +3288,7 @@ msgid "Stock"
msgstr "Lager"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr ""
@@ -3391,7 +3354,7 @@ msgid "Assigned Internal Moves"
msgstr "Tildelte interne flytninger"
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr "Du kan ikke plukke uden lagerflytninger."
@@ -3607,7 +3570,7 @@ msgid "Inventory Move"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr "Fremtidige produktioner"
@@ -3717,24 +3680,21 @@ msgstr ""
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr ""
@@ -3787,7 +3747,7 @@ msgid "Non European Customers"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -3795,19 +3755,18 @@ msgstr ""
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -3891,7 +3850,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -3963,7 +3922,7 @@ msgid "Followers"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr ""
@@ -4039,7 +3998,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr ""
@@ -4058,7 +4017,7 @@ msgid "Chaining Journal"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr ""
@@ -4090,7 +4049,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr ""
@@ -4113,7 +4072,7 @@ msgid "Auto Validate"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr ""
@@ -4206,14 +4165,14 @@ msgid "Invoiced"
msgstr "Faktureret"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr ""
@@ -4247,8 +4206,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr ""
@@ -4309,7 +4266,7 @@ msgid "Shelves (Y)"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4322,7 +4279,7 @@ msgid "Serial Number Revision"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr ""
@@ -4335,7 +4292,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr ""
@@ -4368,7 +4325,7 @@ msgid "November"
msgstr "November"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr ""
@@ -4379,7 +4336,7 @@ msgid "Chained Company"
msgstr ""
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr ""
@@ -4403,7 +4360,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4420,14 +4377,14 @@ msgid "Move History (parent moves)"
msgstr "Flytnings historik"
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr ""
@@ -4541,8 +4498,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Schedule Date"
msgstr ""
@@ -4580,8 +4535,6 @@ msgstr ""
#. module: stock
#: field:stock.move,name:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot.revision:0
#: field:stock.production.lot.revision,description:0
msgid "Description"
@@ -4605,7 +4558,6 @@ msgid "Deliver"
msgstr ""
#. module: stock
-#: view:product.product:0
#: field:product.product,delivery_count:0
msgid "Delivery"
msgstr ""
@@ -4627,7 +4579,7 @@ msgid "Location Content"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:478
+#: code:addons/stock/product.py:477
#, python-format
msgid "Produced Qty"
msgstr ""
@@ -4816,8 +4768,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Warehouse Address :"
msgstr ""
diff --git a/addons/stock/i18n/de.po b/addons/stock/i18n/de.po
index 8b9b9ae7710..bb2c48b18f0 100644
--- a/addons/stock/i18n/de.po
+++ b/addons/stock/i18n/de.po
@@ -15,8 +15,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:56+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:48+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
#. module: stock
#: field:stock.inventory.line.split,line_exist_ids:0
@@ -131,8 +131,8 @@ msgid "Product Moves"
msgstr "Produktlieferungen"
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr "Bitte geben Sie eine korrekte Anzahl an"
@@ -152,13 +152,13 @@ msgstr ""
"abweichen."
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr "Dieser Vorgang kann nur in Zusammenhang mit einer Inventur erfolgen."
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr "Menge darf nicht negativ sein"
@@ -186,8 +186,6 @@ msgstr "Lieferauftrag"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -321,7 +319,7 @@ msgid "Reference"
msgstr "Referenz"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr "Produkte zu Lieferauftrag"
@@ -363,12 +361,12 @@ msgstr ""
"weiterzuarbeiten."
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -376,9 +374,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "Warnung !"
@@ -495,9 +493,6 @@ msgstr "Verfolge Warenfluss "
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr "Warten auf Verfügbarkeit"
@@ -506,9 +501,6 @@ msgstr "Warten auf Verfügbarkeit"
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -582,7 +574,7 @@ msgstr ""
"versprochenen Auslieferzeit."
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr "Produkte: "
@@ -599,7 +591,7 @@ msgid "Draft Physical Inventories"
msgstr "Entwurf Lagerinventur"
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -647,7 +639,7 @@ msgid "Item Labels"
msgstr "Produktetiketten"
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr "Die Lieferrückstande %s wurden erfolgreich erstellt."
@@ -729,8 +721,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr "Auftragsgrundlage"
@@ -770,7 +760,6 @@ msgid "Destination Address "
msgstr "Zieladresse "
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr "Annahme"
@@ -821,8 +810,6 @@ msgstr "Jahr geplant"
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr "Status"
@@ -913,7 +900,7 @@ msgid ""
msgstr "Dies ist das Buchungsjournal für Echtzeitlagerbuchungen"
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -949,7 +936,7 @@ msgid "Time"
msgstr "Bestelldatum"
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr "Zukünftige Wareneingänge"
@@ -988,8 +975,6 @@ msgstr "- aktualisieren"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "Gewicht"
@@ -1035,7 +1020,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr "Zwischenlager für Lieferungen zwischen internen Unternehmen"
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1060,7 +1045,7 @@ msgid "Change Product Quantity"
msgstr "Ändere Menge"
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr "Zukünftige G&V"
@@ -1090,7 +1075,7 @@ msgid "You must assign a serial number for this product."
msgstr "Sie müssen dem Produkt eine Seriennummer zuweisen."
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr ""
@@ -1138,8 +1123,6 @@ msgstr "Währung"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr "Journal"
@@ -1226,7 +1209,7 @@ msgstr ""
"werden sollen."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1349,7 +1332,7 @@ msgid "Author"
msgstr "Urheber"
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1359,8 +1342,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr "Interne Lieferung"
@@ -1388,7 +1369,7 @@ msgid "Supplier"
msgstr "Lieferant"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1506,8 +1487,6 @@ msgstr "Verbrauchsbuchung"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
msgstr "Lieferauftrag:"
@@ -1598,7 +1577,7 @@ msgstr ""
"(wenn Durschnittspreisbewertung gewählt ist)"
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr "Warnung: Keine Rückstandslieferung"
@@ -1620,13 +1599,13 @@ msgid "To be refunded/invoiced"
msgstr "Rückvergütung/Rechungslegung zu erledigen"
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr "Sie können lediglich Lieferungen im Entwurf Status löschen."
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr ""
@@ -1664,7 +1643,7 @@ msgid "Additional Info"
msgstr "Zusätzliche Information"
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr "Fehlende Daten der Teillieferung für Lieferung #%s."
@@ -1680,7 +1659,7 @@ msgid "Incoming Shipments already processed"
msgstr "Bereits verarbeitete Eingänge"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr ""
@@ -1762,9 +1741,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1854,7 +1830,7 @@ msgid "Order Date"
msgstr "Auftragsdatum"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr "INV: %s"
@@ -1894,7 +1870,7 @@ msgid "Stock Invoice Onshipping"
msgstr "Rechnungserstellung bei Lieferung"
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr ""
@@ -1960,8 +1936,6 @@ msgstr "Ist Auftragsrückstand"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr "Eingehende Lieferungen"
@@ -2051,7 +2025,7 @@ msgid "Shelf 2"
msgstr "Regal 2"
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr "Sie können eine Position mit Fertigungslos nicht entfernen."
@@ -2075,7 +2049,7 @@ msgid "Localization"
msgstr "Standort Lager"
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr "Liefermenge"
@@ -2424,7 +2398,7 @@ msgid "Generate accounting entries per stock movement"
msgstr "Erstelle Buchungen der Lagerbuchhaltung in Echtzeit"
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr "Angenommene Menge"
@@ -2464,8 +2438,6 @@ msgstr "Bezeichnung"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr "Lieferant Anschrift:"
@@ -2495,8 +2467,8 @@ msgid "Customer Locations"
msgstr "Kunden Lagerort"
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr "Benutzerfehler !"
@@ -2735,7 +2707,7 @@ msgid "Warehouse board"
msgstr "Anzeigetafel Lager"
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr "Zukünftige Menge"
@@ -2797,7 +2769,7 @@ msgid "Products"
msgstr "Produkte"
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2840,7 +2812,7 @@ msgid "Outgoing Products"
msgstr "Warenversand"
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2862,7 +2834,7 @@ msgid "Move"
msgstr "Buchung"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr "Anzahl"
@@ -2959,8 +2931,6 @@ msgstr "Quelle"
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2984,7 +2954,7 @@ msgid "Support multiple variants per products "
msgstr "Unterstützung für mehrfache Produkt Varianten "
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -3011,7 +2981,7 @@ msgid "scrap"
msgstr "verschrotten"
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -3108,13 +3078,13 @@ msgid "Stock Journal"
msgstr "Lager Journal"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr "Aktive ID ist nicht nicht in Kontext definiert"
@@ -3137,7 +3107,7 @@ msgid "Scrap Move"
msgstr "Buchung Ausschuss"
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr "Die Seriennummer wird zur Zuordnung bei der Fertigung eingesetzt"
@@ -3182,7 +3152,7 @@ msgid "Date of Completion"
msgstr "Datum der Vollständigkeit"
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr "Produkt %s kann nicht von Ansicht Lagerort %s geliefert werden."
@@ -3269,10 +3239,8 @@ msgstr "Korrekturdatum"
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr "Fertigungslos"
@@ -3303,8 +3271,6 @@ msgstr "Ändere auf Verfügbar"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr "Kontakt Adresse"
@@ -3519,7 +3485,7 @@ msgstr ""
" "
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr "%s %s %s wurdegebucht als verschrottet."
@@ -3538,9 +3504,6 @@ msgstr "Kunden Lieferaufträge"
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr "Erledigt"
@@ -3569,7 +3532,7 @@ msgid "Date done"
msgstr "Datum erledigt"
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3580,7 +3543,7 @@ msgstr ""
#. module: stock
#: view:stock.picking.in:0
msgid "Confirm & Receive"
-msgstr "Bestätigen & Empfangen"
+msgstr "Bestätigen & Vereinnahmen"
#. module: stock
#: field:stock.picking,origin:0
@@ -3643,7 +3606,7 @@ msgid "Stock"
msgstr "Lager"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr "Gesendete Auslieferung"
@@ -3720,7 +3683,7 @@ msgid "Assigned Internal Moves"
msgstr "Zugeordnete Interne Buchungen"
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr "Sie können keine Lieferung ohne Lagerbuchungen vornehmen"
@@ -3964,7 +3927,7 @@ msgid "Inventory Move"
msgstr "Lagerbuchung"
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr "Zukünftige Produktionen"
@@ -4093,24 +4056,21 @@ msgstr "Inventurlos"
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr "Seriennummer"
@@ -4167,7 +4127,7 @@ msgid "Non European Customers"
msgstr "Kunden ausserhalb Europas"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -4175,19 +4135,18 @@ msgstr "Kunden ausserhalb Europas"
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -4287,7 +4246,7 @@ msgstr ""
"entnommen: Lagerort bei Fester Lagerort."
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -4364,7 +4323,7 @@ msgid "Followers"
msgstr "Followers"
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr ""
@@ -4452,7 +4411,7 @@ msgstr ""
"entlasted (Haben)."
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr "Re.:"
@@ -4475,7 +4434,7 @@ msgid "Chaining Journal"
msgstr "Journal Lieferkette"
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr ""
@@ -4521,7 +4480,7 @@ msgstr ""
"Lagerveränderungen hat diese Einstellung keine Auswirkung."
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr "Zukünftige Lieferungen"
@@ -4544,7 +4503,7 @@ msgid "Auto Validate"
msgstr "Automatisch Genehmigen"
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr "Ungültiger Lagerort für Seriennummer !"
@@ -4643,14 +4602,14 @@ msgid "Invoiced"
msgstr "Abgerechnet"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr "Information"
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr "Sie können Kommissionierung im Status %s nicht entfernen!"
@@ -4686,8 +4645,6 @@ msgstr "automatischer Lieferauftrag"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr "Kunden Anschrift"
@@ -4754,7 +4711,7 @@ msgid "Shelves (Y)"
msgstr "Lagerort Adresse (Y)"
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4769,7 +4726,7 @@ msgid "Serial Number Revision"
msgstr "Seriennummer Revision"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr "Legen Sie ein Bewertungskonto für die Produkt Kategorie %s an"
@@ -4784,7 +4741,7 @@ msgstr ""
" Es wird das Modul claim_from_delivery installiert."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr "Bitte spezifizieren Sie wenigstens eine Menge ungleich 0"
@@ -4817,7 +4774,7 @@ msgid "November"
msgstr "November"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr "Ungeplante Menge"
@@ -4828,7 +4785,7 @@ msgid "Chained Company"
msgstr "Lieferkette zu Unternehmen"
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr "Prüfe Verfügbarkeit"
@@ -4857,7 +4814,7 @@ msgstr ""
"können Sie die Rückverfolgbarkeit einsehen."
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4876,14 +4833,14 @@ msgid "Move History (parent moves)"
msgstr "Buchungshistorie (übergeordnete Buchungen)"
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr "Zukünftiger Lagerbestand"
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr "Fehler"
@@ -5012,8 +4969,6 @@ msgstr "Verzögerungen"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Schedule Date"
msgstr "Geplante Zeit"
@@ -5051,8 +5006,6 @@ msgstr "Bestand"
#. module: stock
#: field:stock.move,name:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot.revision:0
#: field:stock.production.lot.revision,description:0
msgid "Description"
@@ -5076,7 +5029,6 @@ msgid "Deliver"
msgstr "Ausliefern"
#. module: stock
-#: view:product.product:0
#: field:product.product,delivery_count:0
msgid "Delivery"
msgstr "Lieferung"
@@ -5098,7 +5050,7 @@ msgid "Location Content"
msgstr "Lagerinhalt"
#. module: stock
-#: code:addons/stock/product.py:478
+#: code:addons/stock/product.py:477
#, python-format
msgid "Produced Qty"
msgstr "Prod. Anzahl"
@@ -5321,8 +5273,6 @@ msgstr "Bereit zur Verarbeitung"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Warehouse Address :"
msgstr "Lager Anschrift"
diff --git a/addons/stock/i18n/el.po b/addons/stock/i18n/el.po
index 43fc78d6126..17eccea9445 100644
--- a/addons/stock/i18n/el.po
+++ b/addons/stock/i18n/el.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:56+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:48+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
"X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n"
@@ -124,8 +124,8 @@ msgid "Product Moves"
msgstr "Κινήσεις Προϊόντων"
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr ""
@@ -145,13 +145,13 @@ msgstr ""
"κατασκευαστή"
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr ""
@@ -179,8 +179,6 @@ msgstr "Λίστα Παραλαβής"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -312,7 +310,7 @@ msgid "Reference"
msgstr "Παραπομπή"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr "Προϊόντα για Επεξεργασία"
@@ -351,12 +349,12 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -364,9 +362,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "Προειδοποίηση!"
@@ -482,9 +480,6 @@ msgstr "Κίνηση Ανιχνευσιμότητας "
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr ""
@@ -493,9 +488,6 @@ msgstr ""
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -564,7 +556,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr "Προϊόντα "
@@ -581,7 +573,7 @@ msgid "Draft Physical Inventories"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -617,7 +609,7 @@ msgid "Item Labels"
msgstr "Ετικέτα Είδους"
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr ""
@@ -694,8 +686,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr "Παραγγελία (προέλευση)"
@@ -735,7 +725,6 @@ msgid "Destination Address "
msgstr ""
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr "Αποδοχή"
@@ -786,8 +775,6 @@ msgstr ""
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr "Κατάσταση"
@@ -872,7 +859,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -906,7 +893,7 @@ msgid "Time"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr "Μελοντικές Εισαγωγές"
@@ -945,8 +932,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "Βάρος"
@@ -990,7 +975,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1013,7 +998,7 @@ msgid "Change Product Quantity"
msgstr "Άλλαξε την Ποσότητα Προϊόντος"
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr ""
@@ -1043,7 +1028,7 @@ msgid "You must assign a serial number for this product."
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr ""
@@ -1090,8 +1075,6 @@ msgstr "Νόμισμα"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr "Ημερολόγιο"
@@ -1174,7 +1157,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1274,7 +1257,7 @@ msgid "Author"
msgstr "Δημιουργός"
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1282,8 +1265,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr ""
@@ -1311,7 +1292,7 @@ msgid "Supplier"
msgstr "Προμηθευτής"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1412,8 +1393,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
msgstr ""
@@ -1483,7 +1462,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr ""
@@ -1505,13 +1484,13 @@ msgid "To be refunded/invoiced"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr "Μπορείτε να διαγράψετε μόνο πρόχειρες κινήσεις."
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr ""
@@ -1548,7 +1527,7 @@ msgid "Additional Info"
msgstr "Επιπλέον Πληροφορίες"
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr ""
@@ -1564,7 +1543,7 @@ msgid "Incoming Shipments already processed"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr ""
@@ -1640,9 +1619,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1720,7 +1696,7 @@ msgid "Order Date"
msgstr "Ημερομηνία Παραγγελίας"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr ""
@@ -1759,7 +1735,7 @@ msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr ""
@@ -1824,8 +1800,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr ""
@@ -1910,7 +1884,7 @@ msgid "Shelf 2"
msgstr "Ράφι 2"
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr ""
@@ -1934,7 +1908,7 @@ msgid "Localization"
msgstr "Τοπικοποίηση"
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr "Παραληφθήσα Ποσ."
@@ -2217,7 +2191,7 @@ msgid "Generate accounting entries per stock movement"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr "Παραληφθήσα Ποσ."
@@ -2255,8 +2229,6 @@ msgstr "Όνομα"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr ""
@@ -2286,8 +2258,8 @@ msgid "Customer Locations"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr ""
@@ -2511,7 +2483,7 @@ msgid "Warehouse board"
msgstr "Πινακίδα Αποθήκης"
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr "Μελοντική Ποσ."
@@ -2573,7 +2545,7 @@ msgid "Products"
msgstr "Προϊόντα"
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2613,7 +2585,7 @@ msgid "Outgoing Products"
msgstr "Εξερχόμενα Προϊόντα"
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2633,7 +2605,7 @@ msgid "Move"
msgstr "Μετακίνηση"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr "P&L Ποσ."
@@ -2718,8 +2690,6 @@ msgstr "Πηγή"
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2743,7 +2713,7 @@ msgid "Support multiple variants per products "
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -2767,7 +2737,7 @@ msgid "scrap"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -2851,13 +2821,13 @@ msgid "Stock Journal"
msgstr "Ημερολόγιο Αποθέματος"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr ""
@@ -2880,7 +2850,7 @@ msgid "Scrap Move"
msgstr ""
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr ""
@@ -2925,7 +2895,7 @@ msgid "Date of Completion"
msgstr "Ημερομηνία Ολοκλήρωσης"
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr ""
@@ -2999,10 +2969,8 @@ msgstr "Ημερ/νία Αναθεώρησης"
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr "Παρτίδα"
@@ -3031,8 +2999,6 @@ msgstr "Ορισμός ως Διαθεσίμου"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr "Διεύθυνση Επαφής"
@@ -3202,7 +3168,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr ""
@@ -3221,9 +3187,6 @@ msgstr ""
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr "Ολοκληρώθηκε"
@@ -3252,7 +3215,7 @@ msgid "Date done"
msgstr "Ημερ/νία ολοκλήρωσης"
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3322,7 +3285,7 @@ msgid "Stock"
msgstr "Απόθεμα"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr ""
@@ -3388,7 +3351,7 @@ msgid "Assigned Internal Moves"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr ""
@@ -3604,7 +3567,7 @@ msgid "Inventory Move"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr ""
@@ -3714,24 +3677,21 @@ msgstr "Απογραφή Παρτίδας"
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr ""
@@ -3784,7 +3744,7 @@ msgid "Non European Customers"
msgstr "Πελάτες εκτός Ευρώπης"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -3792,19 +3752,18 @@ msgstr "Πελάτες εκτός Ευρώπης"
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -3888,7 +3847,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -3960,7 +3919,7 @@ msgid "Followers"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr ""
@@ -4036,7 +3995,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr ""
@@ -4055,7 +4014,7 @@ msgid "Chaining Journal"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr "Δεν υπάρχει αρκετό στοκ,δεν μπορούνε να διατηρηθούν τα προϊόντα"
@@ -4087,7 +4046,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr "Μελοντικές Παραδόσεις"
@@ -4110,7 +4069,7 @@ msgid "Auto Validate"
msgstr "Αυτόματη Επικύρωση"
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr ""
@@ -4203,14 +4162,14 @@ msgid "Invoiced"
msgstr "Τιμολογημένο"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr "Πληροφορίες"
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr ""
@@ -4246,8 +4205,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr ""
@@ -4308,7 +4265,7 @@ msgid "Shelves (Y)"
msgstr "Ράφια (Υ)"
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4321,7 +4278,7 @@ msgid "Serial Number Revision"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr ""
@@ -4334,7 +4291,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr ""
@@ -4367,7 +4324,7 @@ msgid "November"
msgstr "Νοέμβριος"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr "Ποσ. Εκτός Προγραμματισμού"
@@ -4378,7 +4335,7 @@ msgid "Chained Company"
msgstr ""
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr "Έλεγχος Δαθεσιμότητας"
@@ -4402,7 +4359,7 @@ msgid ""
msgstr ""
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4419,14 +4376,14 @@ msgid "Move History (parent moves)"
msgstr ""
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr ""
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr "Σφάλμα"
@@ -4540,8 +4497,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Schedule Date"
msgstr ""
@@ -4579,8 +4534,6 @@ msgstr "Πραγματικό"
#. module: stock
#: field:stock.move,name:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot.revision:0
#: field:stock.production.lot.revision,description:0
msgid "Description"
@@ -4604,7 +4557,6 @@ msgid "Deliver"
msgstr "Παραδίδω"
#. module: stock
-#: view:product.product:0
#: field:product.product,delivery_count:0
msgid "Delivery"
msgstr "Παράδοση"
@@ -4626,7 +4578,7 @@ msgid "Location Content"
msgstr "Τοποθεσία Περιεχομένου"
#. module: stock
-#: code:addons/stock/product.py:478
+#: code:addons/stock/product.py:477
#, python-format
msgid "Produced Qty"
msgstr "Ποσ. Παραγωγής"
@@ -4815,8 +4767,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Warehouse Address :"
msgstr ""
diff --git a/addons/stock/i18n/es.po b/addons/stock/i18n/es.po
index c6ff237d413..e97dcc4577f 100644
--- a/addons/stock/i18n/es.po
+++ b/addons/stock/i18n/es.po
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 05:58+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
+"X-Launchpad-Export-Date: 2014-05-09 06:51+0000\n"
+"X-Generator: Launchpad (build 16996)\n"
#~ msgid "Stock Management"
#~ msgstr "Gestión de inventario"
@@ -133,8 +133,8 @@ msgid "Product Moves"
msgstr "Movimientos productos"
#. module: stock
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
#, python-format
msgid "Please provide proper quantity."
msgstr "Por favor introduzca una cantidad adecuada."
@@ -154,14 +154,14 @@ msgstr ""
"serie del fabricante."
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#, python-format
msgid "You cannot perform this operation on more than one Stock Inventories."
msgstr ""
"No puede realizar esta operación en más de un inventario de existencias."
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
#, python-format
msgid "Quantity cannot be negative."
msgstr "La cantidad no puede ser negativa"
@@ -189,8 +189,6 @@ msgstr "Albarán"
#: field:stock.partial.move.line,quantity:0
#: field:stock.partial.picking.line,quantity:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.report.prodlots,qty:0
#: field:stock.report.tracklots,name:0
#: field:stock.return.picking.memory,quantity:0
@@ -256,12 +254,12 @@ msgstr "¡No puede eliminar ningún registro!"
#. module: stock
#: view:stock.picking:0
msgid "Delivery orders to invoice"
-msgstr "Ordenes de envío a facturar"
+msgstr "Albaranes de salida a facturar"
#. module: stock
#: view:stock.picking:0
msgid "Assigned Delivery Orders"
-msgstr "Ordenes de envío asignadas"
+msgstr "Albaranes de salida asignados"
#. module: stock
#: code:addons/stock/wizard/stock_change_standard_price.py:107
@@ -324,7 +322,7 @@ msgid "Reference"
msgstr "Referencia"
#. module: stock
-#: code:addons/stock/stock.py:1565
+#: code:addons/stock/stock.py:1548
#, python-format
msgid "Products to Process"
msgstr "Productos a procesar"
@@ -365,12 +363,12 @@ msgstr ""
"directamente en formato HTML para poder ser insertado en las vistas kanban."
#. module: stock
-#: code:addons/stock/stock.py:782
-#: code:addons/stock/stock.py:2517
-#: code:addons/stock/stock.py:2568
-#: code:addons/stock/stock.py:2629
-#: code:addons/stock/wizard/stock_change_product_qty.py:95
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/stock.py:768
+#: code:addons/stock/stock.py:2475
+#: code:addons/stock/stock.py:2519
+#: code:addons/stock/stock.py:2580
+#: code:addons/stock/wizard/stock_change_product_qty.py:91
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#: code:addons/stock/wizard/stock_inventory_merge.py:43
#: code:addons/stock/wizard/stock_inventory_merge.py:63
#: code:addons/stock/wizard/stock_invoice_onshipping.py:96
@@ -378,9 +376,9 @@ msgstr ""
#: code:addons/stock/wizard/stock_partial_picking.py:174
#: code:addons/stock/wizard/stock_partial_picking.py:181
#: code:addons/stock/wizard/stock_partial_picking.py:192
-#: code:addons/stock/wizard/stock_return_picking.py:102
-#: code:addons/stock/wizard/stock_return_picking.py:109
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:99
+#: code:addons/stock/wizard/stock_return_picking.py:106
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Warning!"
msgstr "¡Aviso!"
@@ -496,9 +494,6 @@ msgstr "Acción trazabilidad "
#: selection:stock.move,state:0
#: selection:stock.picking,state:0
#: selection:stock.picking.in,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: selection:stock.picking.out,state:0
msgid "Waiting Availability"
msgstr "Esperando disponibilidad"
@@ -507,9 +502,6 @@ msgstr "Esperando disponibilidad"
#: selection:report.stock.inventory,state:0
#: selection:report.stock.move,state:0
#: selection:stock.move,state:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,stock_available:0
msgid "Available"
@@ -582,7 +574,7 @@ msgstr ""
"entrega de los productos finales. Es el tiempo que promete a sus clientes."
#. module: stock
-#: code:addons/stock/product.py:195
+#: code:addons/stock/product.py:196
#, python-format
msgid "Products: "
msgstr "Productos: "
@@ -599,7 +591,7 @@ msgid "Draft Physical Inventories"
msgstr "Inventarios físicos borrador"
#. module: stock
-#: code:addons/stock/stock.py:1806
+#: code:addons/stock/stock.py:1777
#, python-format
msgid ""
"Quantities, Units of Measure, Products and Locations cannot be modified on "
@@ -646,7 +638,7 @@ msgid "Item Labels"
msgstr "Etiquetas artículos"
#. module: stock
-#: code:addons/stock/stock.py:1373
+#: code:addons/stock/stock.py:1356
#, python-format
msgid "Back order %s has been created."
msgstr "El pedido en espera %s ha sido creado."
@@ -728,8 +720,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Order(Origin)"
msgstr "Pedido (origen)"
@@ -769,7 +759,6 @@ msgid "Destination Address "
msgstr "Dirección de destino "
#. module: stock
-#: view:product.product:0
#: field:product.product,reception_count:0
msgid "Reception"
msgstr "Recepción"
@@ -820,8 +809,6 @@ msgstr "Año planificado"
#: view:stock.picking.in:0
#: field:stock.picking.in,state:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,state:0
msgid "Status"
msgstr "Estado"
@@ -915,7 +902,7 @@ msgstr ""
"movimientos de existencias se procesen."
#. module: stock
-#: code:addons/stock/stock.py:2296
+#: code:addons/stock/stock.py:2252
#, python-format
msgid ""
"Please define stock output account for this product or its category: \"%s\" "
@@ -951,7 +938,7 @@ msgid "Time"
msgstr "Tiempo"
#. module: stock
-#: code:addons/stock/product.py:448
+#: code:addons/stock/product.py:447
#, python-format
msgid "Future Receptions"
msgstr "Recepciones futuras"
@@ -990,8 +977,6 @@ msgstr "- actualizar"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Weight"
msgstr "Peso"
@@ -1037,7 +1022,7 @@ msgid "Transit Location for Inter-Companies Transfers"
msgstr "Ubicación de tránsito para transferencias inter-compañías"
#. module: stock
-#: code:addons/stock/stock.py:1204
+#: code:addons/stock/stock.py:1190
#, python-format
msgid ""
"You cannot cancel the picking as some moves have been done. You should "
@@ -1062,7 +1047,7 @@ msgid "Change Product Quantity"
msgstr "Cambiar cantidad producto"
#. module: stock
-#: code:addons/stock/product.py:464
+#: code:addons/stock/product.py:463
#, python-format
msgid "Future P&L"
msgstr "P&L futuras"
@@ -1092,7 +1077,7 @@ msgid "You must assign a serial number for this product."
msgstr "Debe asignar un nº de serie para este producto."
#. module: stock
-#: code:addons/stock/stock.py:2299
+#: code:addons/stock/stock.py:2255
#, python-format
msgid "Please define journal on the product category: \"%s\" (id: %d)"
msgstr ""
@@ -1140,8 +1125,6 @@ msgstr "Moneda"
#: view:stock.picking:0
#: view:stock.picking.in:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Journal"
msgstr "Diario"
@@ -1226,7 +1209,7 @@ msgstr ""
"Seleccione varios inventarios físicos para fusionar en la vista lista."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:109
+#: code:addons/stock/wizard/stock_return_picking.py:106
#, python-format
msgid ""
"No products to return (only lines in Done state and not fully returned yet "
@@ -1354,7 +1337,7 @@ msgid "Author"
msgstr "Autor"
#. module: stock
-#: code:addons/stock/stock.py:1851
+#: code:addons/stock/stock.py:1822
#, python-format
msgid ""
"You are moving %.2f %s but only %.2f %s available for this serial number."
@@ -1364,8 +1347,6 @@ msgstr ""
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Internal Shipment :"
msgstr "Envío interno:"
@@ -1393,7 +1374,7 @@ msgid "Supplier"
msgstr "Proveedor"
#. module: stock
-#: code:addons/stock/stock.py:2908
+#: code:addons/stock/stock.py:2859
#, python-format
msgid ""
"In order to cancel this inventory, you must first unpost related journal "
@@ -1512,10 +1493,8 @@ msgstr "Movimiento consumo"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Delivery Order :"
-msgstr "Orden de entrega :"
+msgstr "Albarán de salida :"
#. module: stock
#: help:stock.location,chained_delay:0
@@ -1602,7 +1581,7 @@ msgstr ""
"precio medio de coste)."
#. module: stock
-#: code:addons/stock/stock.py:1919
+#: code:addons/stock/stock.py:1890
#, python-format
msgid "Warning: No Back Order"
msgstr "Advertencia: No hay pedido en espera"
@@ -1624,13 +1603,13 @@ msgid "To be refunded/invoiced"
msgstr "Para ser abonado/facturado"
#. module: stock
-#: code:addons/stock/stock.py:2492
+#: code:addons/stock/stock.py:2450
#, python-format
msgid "You can only delete draft moves."
msgstr "Sólo puede eliminar movimientos borrador."
#. module: stock
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "You cannot move product %s to a location of type view %s."
msgstr "No puede mover el producto %s a la ubicación de tipo vista %s."
@@ -1667,7 +1646,7 @@ msgid "Additional Info"
msgstr "Información adicional"
#. module: stock
-#: code:addons/stock/stock.py:2697
+#: code:addons/stock/stock.py:2648
#, python-format
msgid "Missing partial picking data for move #%s."
msgstr "Datos incompletos para el albarán parcial para el movimiento #%s."
@@ -1683,7 +1662,7 @@ msgid "Incoming Shipments already processed"
msgstr "Albaranes de entrada ya procesados"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:102
+#: code:addons/stock/wizard/stock_return_picking.py:99
#, python-format
msgid "You may only return pickings that are Confirmed, Available or Done!"
msgstr ""
@@ -1767,9 +1746,6 @@ msgstr ""
#. module: stock
#: field:stock.inventory,date:0
#: field:stock.move,create_date:0
-#: field:stock.picking,date:0
-#: field:stock.picking.in,date:0
-#: field:stock.picking.out,date:0
#: field:stock.production.lot,date:0
#: field:stock.tracking,date:0
msgid "Creation Date"
@@ -1860,7 +1836,7 @@ msgid "Order Date"
msgstr "Fecha orden"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:96
+#: code:addons/stock/wizard/stock_change_product_qty.py:92
#, python-format
msgid "INV: %s"
msgstr "INV: %s"
@@ -1902,7 +1878,7 @@ msgid "Stock Invoice Onshipping"
msgstr "Factura en el envío de existencias"
#. module: stock
-#: code:addons/stock/stock.py:2517
+#: code:addons/stock/stock.py:2475
#, python-format
msgid "Please provide a positive quantity to scrap."
msgstr "Introduzca por favor una cantidad positiva a deshechar"
@@ -1967,8 +1943,6 @@ msgstr "Es un pedido en espera"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Incoming Shipment :"
msgstr "Envío entrante :"
@@ -2059,7 +2033,7 @@ msgid "Shelf 2"
msgstr "Estante 2"
#. module: stock
-#: code:addons/stock/stock.py:543
+#: code:addons/stock/stock.py:529
#, python-format
msgid "You cannot remove a lot line."
msgstr "No puede eliminar una línea de lote."
@@ -2083,7 +2057,7 @@ msgid "Localization"
msgstr "Ubicación"
#. module: stock
-#: code:addons/stock/product.py:460
+#: code:addons/stock/product.py:459
#, python-format
msgid "Delivered Qty"
msgstr "Ctdad enviada"
@@ -2399,7 +2373,7 @@ msgstr "Precio"
#: field:stock.config.settings,module_stock_invoice_directly:0
msgid "Create and open the invoice when the user finish a delivery order"
msgstr ""
-"Crear y abrir la factura cuando el usuario finalice la orden de entrega"
+"Crear y abrir la factura cuando el usuario finalice el albarán de salida"
#. module: stock
#: model:ir.model,name:stock.model_stock_return_picking_memory
@@ -2412,7 +2386,7 @@ msgid "Generate accounting entries per stock movement"
msgstr "Generar asientos contables por cada movimiento de existencias"
#. module: stock
-#: code:addons/stock/product.py:450
+#: code:addons/stock/product.py:449
#, python-format
msgid "Received Qty"
msgstr "Ctdad recibida"
@@ -2454,8 +2428,6 @@ msgstr "Nombre"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Supplier Address :"
msgstr "Dirección del proveedor :"
@@ -2485,8 +2457,8 @@ msgid "Customer Locations"
msgstr "Ubicaciones de cliente"
#. module: stock
-#: code:addons/stock/stock.py:2492
-#: code:addons/stock/stock.py:2907
+#: code:addons/stock/stock.py:2449
+#: code:addons/stock/stock.py:2858
#, python-format
msgid "User Error!"
msgstr "¡Error de usuario!"
@@ -2726,7 +2698,7 @@ msgid "Warehouse board"
msgstr "Tablero almacén"
#. module: stock
-#: code:addons/stock/product.py:470
+#: code:addons/stock/product.py:469
#, python-format
msgid "Future Qty"
msgstr "Ctdad futura"
@@ -2790,7 +2762,7 @@ msgid "Products"
msgstr "Productos"
#. module: stock
-#: code:addons/stock/stock.py:2287
+#: code:addons/stock/stock.py:2243
#, python-format
msgid ""
"Cannot create Journal Entry, Output Account of this product and Valuation "
@@ -2832,7 +2804,7 @@ msgid "Outgoing Products"
msgstr "Albaranes de salida"
#. module: stock
-#: code:addons/stock/stock.py:2293
+#: code:addons/stock/stock.py:2249
#, python-format
msgid ""
"Please define stock input account for this product or its category: \"%s\" "
@@ -2854,7 +2826,7 @@ msgid "Move"
msgstr "Movimiento"
#. module: stock
-#: code:addons/stock/product.py:466
+#: code:addons/stock/product.py:465
#, python-format
msgid "P&L Qty"
msgstr "Ctdad P&L"
@@ -2950,8 +2922,6 @@ msgstr "Origen"
#: field:stock.picking,location_id:0
#: field:stock.picking.in,location_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: field:stock.picking.out,location_id:0
#: field:stock.report.prodlots,location_id:0
#: field:stock.report.tracklots,location_id:0
@@ -2975,7 +2945,7 @@ msgid "Support multiple variants per products "
msgstr "Permite múltiples variantes por producto "
#. module: stock
-#: code:addons/stock/stock.py:2290
+#: code:addons/stock/stock.py:2246
#, python-format
msgid ""
"Cannot create Journal Entry, Input Account of this product and Valuation "
@@ -3001,7 +2971,7 @@ msgid "scrap"
msgstr "desecho"
#. module: stock
-#: code:addons/stock/stock.py:1920
+#: code:addons/stock/stock.py:1891
#, python-format
msgid ""
"By changing the quantity here, you accept the new quantity as complete: "
@@ -3098,13 +3068,13 @@ msgid "Stock Journal"
msgstr "Diario de existencias"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:176
+#: code:addons/stock/wizard/stock_return_picking.py:171
#, python-format
msgid "%s-%s-return"
msgstr "%s-%s-devolver"
#. module: stock
-#: code:addons/stock/wizard/stock_change_product_qty.py:86
+#: code:addons/stock/wizard/stock_change_product_qty.py:82
#, python-format
msgid "Active ID is not set in Context"
msgstr "No se ha establecido el ID activo en el Contexto"
@@ -3127,7 +3097,7 @@ msgid "Scrap Move"
msgstr "Movimiento desecho"
#. module: stock
-#: help:stock.move,prodlot_id:0
+#: help:stock.move,lot_id:0
msgid "Serial number is used to put a serial number on the production"
msgstr "El nº de serie se usa para poner un nº de serie en la fabricación"
@@ -3172,7 +3142,7 @@ msgid "Date of Completion"
msgstr "Fecha de realización."
#. module: stock
-#: code:addons/stock/stock.py:1680
+#: code:addons/stock/stock.py:1663
#, python-format
msgid "You cannot move product %s from a location of type view %s."
msgstr "No puede mover el producto %s de una ubicación de tipo vista %s."
@@ -3255,10 +3225,8 @@ msgstr "Fecha de revisión"
#. module: stock
#: view:report.stock.inventory:0
-#: field:report.stock.inventory,prodlot_id:0
+#: field:report.stock.inventory,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Lot"
msgstr "Lote"
@@ -3289,8 +3257,6 @@ msgstr "Reservar"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Contact Address :"
msgstr "Dirección de contacto :"
@@ -3500,7 +3466,7 @@ msgstr ""
" "
#. module: stock
-#: code:addons/stock/stock.py:2545
+#: code:addons/stock/stock.py:2496
#, python-format
msgid "%s %s %s has been moved to scrap."
msgstr "%s %s %s ha sido desechado."
@@ -3519,9 +3485,6 @@ msgstr "Paquetes cliente"
#: selection:stock.move,state:0
#: view:stock.picking:0
#: view:stock.picking.in:0
-#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Done"
msgstr "Realizado"
@@ -3550,7 +3513,7 @@ msgid "Date done"
msgstr "Fecha realización"
#. module: stock
-#: code:addons/stock/stock.py:1135
+#: code:addons/stock/stock.py:1121
#, python-format
msgid ""
"Please put a partner on the picking list if you want to generate invoice."
@@ -3624,7 +3587,7 @@ msgid "Stock"
msgstr "Existencias"
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:226
+#: code:addons/stock/wizard/stock_return_picking.py:219
#, python-format
msgid "Returned Picking"
msgstr "Albarán devuelto"
@@ -3699,7 +3662,7 @@ msgid "Assigned Internal Moves"
msgstr "Movimientos internos asignados"
#. module: stock
-#: code:addons/stock/stock.py:804
+#: code:addons/stock/stock.py:790
#, python-format
msgid "You cannot process picking without stock moves."
msgstr "No puede procesar un albarán sin movimientos de existencias."
@@ -3938,7 +3901,7 @@ msgid "Inventory Move"
msgstr "Movimiento de inventario"
#. module: stock
-#: code:addons/stock/product.py:476
+#: code:addons/stock/product.py:475
#, python-format
msgid "Future Productions"
msgstr "Producciones futuras"
@@ -4058,24 +4021,21 @@ msgstr "Regularización de inventario"
#: model:ir.model,name:stock.model_stock_production_lot
#: model:ir.ui.menu,name:stock.menu_action_production_lot_form
#: model:res.request.link,name:stock.req_link_tracking
-#: field:stock.change.product.qty,prodlot_id:0
+#: field:stock.change.product.qty,lot_id:0
#: field:stock.inventory.line,prod_lot_id:0
#: field:stock.inventory.line.split.lines,name:0
-#: field:stock.inventory.line.split.lines,prodlot_id:0
-#: field:stock.move,prodlot_id:0
+#: field:stock.inventory.line.split.lines,lot_id:0
+#: field:stock.move,lot_id:0
#: view:stock.move.split:0
#: field:stock.move.split.lines,name:0
-#: field:stock.move.split.lines,prodlot_id:0
-#: field:stock.partial.move.line,prodlot_id:0
-#: field:stock.partial.picking.line,prodlot_id:0
+#: field:stock.move.split.lines,lot_id:0
+#: field:stock.partial.move.line,lot_id:0
+#: field:stock.partial.picking.line,lot_id:0
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
#: view:stock.production.lot:0
#: field:stock.production.lot,name:0
#: field:stock.production.lot.revision,lot_id:0
-#: field:stock.report.prodlots,prodlot_id:0
-#: field:stock.return.picking.memory,prodlot_id:0
+#: field:stock.report.prodlots,lot_id:0
msgid "Serial Number"
msgstr "Nº de serie"
@@ -4134,7 +4094,7 @@ msgid "Non European Customers"
msgstr "Clientes no europeos"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#: code:addons/stock/product.py:110
#: code:addons/stock/product.py:113
#: code:addons/stock/product.py:120
@@ -4142,19 +4102,18 @@ msgstr "Clientes no europeos"
#: code:addons/stock/product.py:167
#: code:addons/stock/report/report_stock.py:78
#: code:addons/stock/report/report_stock.py:134
-#: code:addons/stock/stock.py:543
-#: code:addons/stock/stock.py:804
-#: code:addons/stock/stock.py:1204
-#: code:addons/stock/stock.py:1213
-#: code:addons/stock/stock.py:2287
-#: code:addons/stock/stock.py:2290
-#: code:addons/stock/stock.py:2293
-#: code:addons/stock/stock.py:2296
-#: code:addons/stock/stock.py:2299
-#: code:addons/stock/stock.py:2302
-#: code:addons/stock/stock.py:2525
-#: code:addons/stock/stock.py:2634
-#: code:addons/stock/wizard/stock_fill_inventory.py:63
+#: code:addons/stock/stock.py:529
+#: code:addons/stock/stock.py:790
+#: code:addons/stock/stock.py:1190
+#: code:addons/stock/stock.py:1199
+#: code:addons/stock/stock.py:2243
+#: code:addons/stock/stock.py:2246
+#: code:addons/stock/stock.py:2249
+#: code:addons/stock/stock.py:2252
+#: code:addons/stock/stock.py:2255
+#: code:addons/stock/stock.py:2258
+#: code:addons/stock/stock.py:2585
+#: code:addons/stock/wizard/stock_fill_inventory.py:59
#: code:addons/stock/wizard/stock_invoice_onshipping.py:112
#: code:addons/stock/wizard/stock_splitinto.py:53
#, python-format
@@ -4188,7 +4147,7 @@ msgstr "Cancelado"
#. module: stock
#: view:stock.picking:0
msgid "Confirmed Delivery Orders"
-msgstr "Órdenes de entrega confirmadas"
+msgstr "Albaranes de salida confirmados"
#. module: stock
#: view:stock.move:0
@@ -4253,7 +4212,7 @@ msgstr ""
"Ubicación encadenada si fija."
#. module: stock
-#: code:addons/stock/stock.py:1882
+#: code:addons/stock/stock.py:1853
#, python-format
msgid ""
"By changing this quantity here, you accept the new quantity as complete: "
@@ -4278,7 +4237,7 @@ msgstr "Albaranes de salida"
#. module: stock
#: view:stock.picking:0
msgid "Delivery orders already processed"
-msgstr "Ordenes de entrega ya procesadas"
+msgstr "Albaranes de salida ya procesados"
#. module: stock
#: field:product.template,loc_case:0
@@ -4329,7 +4288,7 @@ msgid "Followers"
msgstr "Seguidores"
#. module: stock
-#: code:addons/stock/stock.py:2634
+#: code:addons/stock/stock.py:2585
#, python-format
msgid "Cannot consume a move with negative or zero quantity."
msgstr "No se puede consumir un movimiento con cantidad negativa o nula."
@@ -4412,7 +4371,7 @@ msgstr ""
"al haber y la cuenta de entrada de existencias irá al debe."
#. module: stock
-#: code:addons/stock/stock.py:2860
+#: code:addons/stock/stock.py:2811
#, python-format
msgid "INV:"
msgstr "FV:"
@@ -4434,7 +4393,7 @@ msgid "Chaining Journal"
msgstr "Diario encadenamiento"
#. module: stock
-#: code:addons/stock/stock.py:782
+#: code:addons/stock/stock.py:768
#, python-format
msgid "Not enough stock, unable to reserve the products."
msgstr ""
@@ -4479,7 +4438,7 @@ msgstr ""
"ubicaciones internas."
#. module: stock
-#: code:addons/stock/product.py:458
+#: code:addons/stock/product.py:457
#, python-format
msgid "Future Deliveries"
msgstr "Entregas futuras"
@@ -4502,7 +4461,7 @@ msgid "Auto Validate"
msgstr "Auto validar"
#. module: stock
-#: code:addons/stock/stock.py:1850
+#: code:addons/stock/stock.py:1821
#, python-format
msgid "Insufficient Stock for Serial Number !"
msgstr "¡Existencias insuficientes para el nº de serie!"
@@ -4600,14 +4559,14 @@ msgid "Invoiced"
msgstr "Facturado"
#. module: stock
-#: code:addons/stock/stock.py:1881
+#: code:addons/stock/stock.py:1852
#: view:product.template:0
#, python-format
msgid "Information"
msgstr "Información"
#. module: stock
-#: code:addons/stock/stock.py:1213
+#: code:addons/stock/stock.py:1199
#, python-format
msgid "You cannot remove the picking which is in %s state!"
msgstr "¡No puede eliminar un albrán que está en estado %s!"
@@ -4643,8 +4602,6 @@ msgstr "Auto-Albarán"
#. module: stock
#: report:stock.picking.list:0
-#: report:stock.picking.list.in:0
-#: report:stock.picking.list.out:0
msgid "Customer Address :"
msgstr "Dirección del cliente :"
@@ -4710,7 +4667,7 @@ msgid "Shelves (Y)"
msgstr "Estantería (Y)"
#. module: stock
-#: code:addons/stock/stock.py:2302
+#: code:addons/stock/stock.py:2258
#, python-format
msgid ""
"Please define inventory valuation account on the product category: \"%s\" "
@@ -4725,7 +4682,7 @@ msgid "Serial Number Revision"
msgstr "Revisión del nº de serie"
#. module: stock
-#: code:addons/stock/product.py:100
+#: code:addons/stock/product.py:96
#, python-format
msgid "Specify valuation Account for Product Category: %s."
msgstr ""
@@ -4737,11 +4694,11 @@ msgid ""
"Adds a Claim link to the delivery order.\n"
" This installs the module claim_from_delivery."
msgstr ""
-"Añade un enlace de una reclamación a la orden de entrega.\n"
+"Añade un enlace de una reclamación al albarán de salida.\n"
"Esto instala el módulo 'claim_from_delivery'."
#. module: stock
-#: code:addons/stock/wizard/stock_return_picking.py:212
+#: code:addons/stock/wizard/stock_return_picking.py:205
#, python-format
msgid "Please specify at least one non-zero quantity."
msgstr "Especifique por favor al menos una cantidad no nula."
@@ -4774,7 +4731,7 @@ msgid "November"
msgstr "Noviembre"
#. module: stock
-#: code:addons/stock/product.py:472
+#: code:addons/stock/product.py:471
#, python-format
msgid "Unplanned Qty"
msgstr "Ctdad no planificada"
@@ -4785,7 +4742,7 @@ msgid "Chained Company"
msgstr "Compañía encadenada"
#. module: stock
-#: view:stock.picking:0
+#: view:stock.picking.out:0
msgid "Check Availability"
msgstr "Comprobar disponibilidad"
@@ -4812,7 +4769,7 @@ msgstr ""
"ascendente y descendente del mismo."
#. module: stock
-#: code:addons/stock/wizard/stock_fill_inventory.py:128
+#: code:addons/stock/wizard/stock_fill_inventory.py:124
#, python-format
msgid ""
"No product in this location. Please select a location in the product form."
@@ -4831,14 +4788,14 @@ msgid "Move History (parent moves)"
msgstr "Historial movimientos (mov. padres)"
#. module: stock
-#: code:addons/stock/product.py:454
+#: code:addons/stock/product.py:453
#, python-format
msgid "Future Stock"
msgstr "Existencias futuras"
#. module: stock
-#: code:addons/stock/stock.py:1680
-#: code:addons/stock/stock.py:1682
+#: code:addons/stock/stock.py:1663
+#: code:addons/stock/stock.py:1665
#, python-format
msgid "Error"
msgstr "Error"
@@ -4871,9 +4828,9 @@ msgid ""
" "
msgstr ""
"
\n"
-"Pulse para añadir una orden de entrega para este producto.\n"
+"Pulse para añadir un albarán de salida para este producto.\n"
"
\n"
-"Aquí podrá encontrar el historial de todos las entregas pasadas relativas a "
+"Aquí podrá encontrar el historial de todos los albaranes pasados relativos a "
"este producto, así como todos los productos que debe entregar a los "
"clientes.\n"
"
\n"
-"Pulse para crear una orden de entrega.\n"
+"Pulse para crear un albarán de salida.\n"
"
\n"
-"Ésta es la lista de todas las órdenes de entrega que deben ser preparadas, "
+"Ésta es la lista de todas los albaranes de salida que deben ser preparadas, "
"de acuerdo a los diferentes pedidos de venta y reglas logísticas.\n"
"
- Click to register a reception for this product.
+ Click to register a reception for this product.
Here you will find the history of all receptions related to
this product, as well as all future receptions you are waiting
@@ -210,8 +95,8 @@
ir.actions.act_windowformtree,form
- [('picking_id.type','=','out')]
+
diff --git a/addons/stock/report/__init__.py b/addons/stock/report/__init__.py
index e1e083c2a8d..7f3669174db 100644
--- a/addons/stock/report/__init__.py
+++ b/addons/stock/report/__init__.py
@@ -20,12 +20,7 @@
##############################################################################
import product_stock
-import picking
-import lot_overview_all
import report_stock
-import report_stock_move
-import stock_inventory_move_report
-import lot_overview
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/report/lot_move_label.xml b/addons/stock/report/lot_move_label.xml
deleted file mode 100644
index 62f26c0a800..00000000000
--- a/addons/stock/report/lot_move_label.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/stock/report/lot_move_label.xsl b/addons/stock/report/lot_move_label.xsl
deleted file mode 100644
index 57b29e69405..00000000000
--- a/addons/stock/report/lot_move_label.xsl
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
- 24.5
- 1
- 3.8
- 7
- 3.5cm
- 6.5cm
- 3
- 21
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- cm
-
-
-
- cm
-
-
-
-
-
-
- ,
-
- Serial:
- Tracking:
-
-
-
-
-
diff --git a/addons/stock/report/lot_overview.py b/addons/stock/report/lot_overview.py
deleted file mode 100644
index c8e80ac54b9..00000000000
--- a/addons/stock/report/lot_overview.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 .
-#
-##############################################################################
-import time
-from openerp.report import report_sxw
-
-class lot_overview(report_sxw.rml_parse):
- def __init__(self, cr, uid, name, context):
- super(lot_overview, self).__init__(cr, uid, name, context=context)
- self.price_total = 0.0
- self.grand_total = 0.0
- self.localcontext.update({
- 'time': time,
- 'process':self.process,
- 'price_total': self._price_total,
- 'grand_total_price':self._grand_total,
- })
-
- def process(self, location_id):
- location_obj = self.pool['stock.location']
- data = location_obj._product_get_report(self.cr,self.uid, [location_id])
-
- data['location_name'] = location_obj.read(self.cr, self.uid, [location_id],['complete_name'])[0]['complete_name']
- self.price_total = 0.0
- self.price_total += data['total_price']
- self.grand_total += data['total_price']
- return [data]
-
- def _price_total(self):
- return self.price_total
-
- def _grand_total(self):
- return self.grand_total
-
-report_sxw.report_sxw('report.lot.stock.overview', 'stock.location', 'addons/stock/report/lot_overview.rml', parser=lot_overview,header='internal')
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/stock/report/lot_overview.rml b/addons/stock/report/lot_overview.rml
deleted file mode 100644
index 82c402a3fdf..00000000000
--- a/addons/stock/report/lot_overview.rml
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [[repeatIn(objects,'picking')]]
- [[picking.type == 'out' and picking.partner_id and setLang(picking.partner_id.lang) or '']]
-
-
-
-
-
-
- Supplier Address : [[ (picking.type == 'in' or removeParentNode('para')) and '' ]]
- Customer Address : [[ (picking.type == 'out' or removeParentNode('para')) and '' ]]
- Warehouse Address : [[ (picking.type == 'internal' or removeParentNode('para')) and '' ]]
- [[ (picking.partner_id and picking.partner_id.id and picking.partner_id.title.name) or '' ]] [[ picking.partner_id and picking.partner_id.id and picking.partner_id.name ]]
- [[ picking.partner_id and display_address(picking.partner_id) ]]
- [[ picking.partner_id.phone or picking.partner_id.email or removeParentNode('para')]]
-
-
- Contact Address :
- [[ picking.partner_id and picking.partner_id.title.name or '' ]] [[ picking.partner_id and picking.partner_id.name or '' ]]
- [[ picking.partner_id and display_address(picking.partner_id) ]]
- [[ picking.partner_id.phone or picking.partner_id.email or removeParentNode('para')]]
-
-
-
-
-
-
-
-
-
-
-
-
- Delivery Order : [[ (picking.type == 'out' or removeParentNode('para')) and '' ]] [[ picking.name ]]
- Incoming Shipment : [[ (picking.type == 'in' or removeParentNode('para')) and '' ]] [[ picking.name ]]
- Internal Shipment : [[ (picking.type == 'internal' or removeParentNode('para')) and '' ]] [[ picking.name ]]
-
- [[ 'weight' in picking._columns.keys() and picking.weight or '']]
-
-
-
-
-
-
-
-
-
- Description
-
-
- Serial Number
-
-
- Status
-
-
- Location
-
-
- Quantity
-
-
-
-
- [[ repeatIn([line for line in picking.move_lines if ((line.state == 'confirmed' or line.state=='done' or line.state=='assigned') and not line.scrapped)],'move_lines') ]]
- [[ (picking.move_lines!=[] and removeParentNode('para')) or removeParentNode('section')]]
-
-
-
- [[ get_product_desc(move_lines) ]]
-
-
- [[ (move_lines.prodlot_id and move_lines.prodlot_id.name) or '' ]]
-
-
- Waiting Availability[[ move_lines.state == 'confirmed' and ' ' or removeParentNode('para') ]]
- Done[[ move_lines.state == 'done' and ' ' or removeParentNode('para') ]]
- Available[[ move_lines.state == 'assigned' and ' ' or removeParentNode('para') ]]
-
-
- [[ (move_lines.location_id and move_lines.location_id.name) or '' ]]
-
-
-
- [[ ([line for line in picking.move_lines if (line.state == 'draft' or line.state=='waiting' )]) and 'Non Assigned Products:' or removeParentNode('para') ]]
-
-
- [[ repeatIn([line for line in picking.move_lines if (line.state == 'draft' or line.state=='waiting')],'move_lines') ]]
- [[ (picking.move_lines!=[] and removeParentNode('para')) or removeParentNode('section')]]
-
-
-
- [[ get_product_desc(move_lines) ]]
-
-
- [[ (move_lines.prodlot_id and move_lines.prodlot_id.name) or '' ]]
-
-
- [[ (picking.type == 'in' or removeParentNode('para')) and '' ]][[ move_lines.state == 'done' and 'Received' or move_lines.state]]
- [[ (picking.type == 'out' or removeParentNode('para')) and '']][[ move_lines.state == 'done' and 'Delivered' or move_lines.state]]
- [[ (picking.type == 'internal' or removeParentNode('para')) and '' ]][[ move_lines.state == 'done' and 'Transferred' or move_lines.state]]
-
-
- [[ (move_lines.location_id and move_lines.location_id.name) or '' ]]
-
-
-
-
-
-
-
-
-
diff --git a/addons/stock/report/product_stock.py b/addons/stock/report/product_stock.py
index d213db673dc..8122e60e4b2 100644
--- a/addons/stock/report/product_stock.py
+++ b/addons/stock/report/product_stock.py
@@ -64,11 +64,13 @@ class report_stock(report_int):
for name in names:
names[name] = names[name].encode('utf8')
products = {}
- prods = registry['stock.location']._product_all_get(cr, uid, location_id, product_ids)
+ ctx = context.copy()
+ ctx['location_id'] = loc_ids
+ prods = registry['product.product']._product_available(cr, uid, product_ids, context=ctx)
+ for prod in prods.keys():
+ products[prod] = [(now, prods[prod]['qty_available'])]
+ prods[prod] = 0
- for p in prods:
- products[p] = [(now,prods[p])]
- prods[p] = 0
if not loc_ids or not product_ids:
return (False, 'pdf')
diff --git a/addons/stock/report/report_stock.py b/addons/stock/report/report_stock.py
index d4bbb3ab127..476333d1857 100644
--- a/addons/stock/report/report_stock.py
+++ b/addons/stock/report/report_stock.py
@@ -20,129 +20,21 @@
##############################################################################
from openerp.osv import fields, osv
-from openerp.tools.translate import _
-from openerp import tools
from openerp.tools.sql import drop_view_if_exists
-class stock_report_prodlots(osv.osv):
- _name = "stock.report.prodlots"
- _description = "Stock report by serial number"
- _auto = False
- _columns = {
- 'qty': fields.float('Quantity', readonly=True),
- 'location_id': fields.many2one('stock.location', 'Location', readonly=True, select=True),
- 'product_id': fields.many2one('product.product', 'Product', readonly=True, select=True),
- 'prodlot_id': fields.many2one('stock.production.lot', 'Serial Number', readonly=True, select=True),
- }
-
- def init(self, cr):
- drop_view_if_exists(cr, 'stock_report_prodlots')
- cr.execute("""
- create or replace view stock_report_prodlots as (
- select max(id) as id,
- location_id,
- product_id,
- prodlot_id,
- sum(qty) as qty
- from (
- select -max(sm.id) as id,
- sm.location_id,
- sm.product_id,
- sm.prodlot_id,
- -sum(sm.product_qty /uo.factor) as qty
- from stock_move as sm
- left join stock_location sl
- on (sl.id = sm.location_id)
- left join product_uom uo
- on (uo.id=sm.product_uom)
- where state = 'done'
- group by sm.location_id, sm.product_id, sm.product_uom, sm.prodlot_id
- union all
- select max(sm.id) as id,
- sm.location_dest_id as location_id,
- sm.product_id,
- sm.prodlot_id,
- sum(sm.product_qty /uo.factor) as qty
- from stock_move as sm
- left join stock_location sl
- on (sl.id = sm.location_dest_id)
- left join product_uom uo
- on (uo.id=sm.product_uom)
- where sm.state = 'done'
- group by sm.location_dest_id, sm.product_id, sm.product_uom, sm.prodlot_id
- ) as report
- group by location_id, product_id, prodlot_id
- )""")
-
- def unlink(self, cr, uid, ids, context=None):
- raise osv.except_osv(_('Error!'), _('You cannot delete any record!'))
-
-
-class stock_report_tracklots(osv.osv):
- _name = "stock.report.tracklots"
- _description = "Stock report by logistic serial number"
- _auto = False
- _columns = {
- 'name': fields.float('Quantity', readonly=True),
- 'location_id': fields.many2one('stock.location', 'Location', readonly=True, select=True),
- 'product_id': fields.many2one('product.product', 'Product', readonly=True, select=True),
- 'tracking_id': fields.many2one('stock.tracking', 'Logistic Serial Number', readonly=True, select=True),
- }
-
- def init(self, cr):
- drop_view_if_exists(cr, 'stock_report_tracklots')
- cr.execute("""
- create or replace view stock_report_tracklots as (
-
- select max(id) as id,
- location_id,
- product_id,
- tracking_id,
- sum(qty) as name
- from (
- select -max(sm.id) as id,
- sm.location_id,
- sm.product_id,
- sm.tracking_id,
- -sum(sm.product_qty /uo.factor) as qty
- from stock_move as sm
- left join stock_location sl
- on (sl.id = sm.location_id)
- left join product_uom uo
- on (uo.id=sm.product_uom)
- where state = 'done'
- group by sm.location_id, sm.product_id, sm.product_uom, sm.tracking_id
- union all
- select max(sm.id) as id,
- sm.location_dest_id as location_id,
- sm.product_id,
- sm.tracking_id,
- sum(sm.product_qty /uo.factor) as qty
- from stock_move as sm
- left join stock_location sl
- on (sl.id = sm.location_dest_id)
- left join product_uom uo
- on (uo.id=sm.product_uom)
- where sm.state = 'done'
- group by sm.location_dest_id, sm.product_id, sm.product_uom, sm.tracking_id
- ) as report
- group by location_id, product_id, tracking_id
- )""")
-
- def unlink(self, cr, uid, ids, context=None):
- raise osv.except_osv(_('Error!'), _('You cannot delete any record!'))
-
-
class report_stock_lines_date(osv.osv):
_name = "report.stock.lines.date"
- _description = "Dates of Inventories"
+ _description = "Dates of Inventories and latest Moves"
_auto = False
_order = "date"
_columns = {
- 'id': fields.integer('Inventory Line Id', readonly=True),
+ 'id': fields.integer('Product Id', readonly=True),
'product_id': fields.many2one('product.product', 'Product', readonly=True, select=True),
- 'date': fields.datetime('Latest Inventory Date'),
+ 'date': fields.datetime('Date of latest Inventory', readonly=True),
+ 'move_date': fields.datetime('Date of latest Stock Move', readonly=True),
+ "active": fields.boolean("Active", readonly=True),
}
+
def init(self, cr):
drop_view_if_exists(cr, 'report_stock_lines_date')
cr.execute("""
@@ -150,13 +42,16 @@ class report_stock_lines_date(osv.osv):
select
p.id as id,
p.id as product_id,
- max(s.date) as date
+ max(s.date) as date,
+ max(m.date) as move_date,
+ p.active as active
from
product_product p
- left outer join stock_inventory_line l on (p.id=l.product_id)
- left join stock_inventory s on (l.inventory_id=s.id)
- and s.state = 'done'
- where p.active='true'
+ left join (
+ stock_inventory_line l
+ inner join stock_inventory s on (l.inventory_id=s.id and s.state = 'done')
+ ) on (p.id=l.product_id)
+ left join stock_move m on (m.product_id=p.id and m.state = 'done')
group by p.id
)""")
diff --git a/addons/stock/report/report_stock_move.py b/addons/stock/report/report_stock_move.py
deleted file mode 100644
index 1b183f5fcbd..00000000000
--- a/addons/stock/report/report_stock_move.py
+++ /dev/null
@@ -1,198 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 import tools
-from openerp.osv import fields,osv
-from openerp.addons.decimal_precision import decimal_precision as dp
-
-
-class report_stock_move(osv.osv):
- _name = "report.stock.move"
- _description = "Moves Statistics"
- _auto = False
- _columns = {
- 'date': fields.date('Date', readonly=True),
- 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
- 'product_id':fields.many2one('product.product', 'Product', readonly=True),
- 'company_id':fields.many2one('res.company', 'Company', readonly=True),
- 'picking_id':fields.many2one('stock.picking', 'Shipment', readonly=True),
- 'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal'), ('other', 'Others')], 'Shipping Type', required=True, select=True, help="Shipping type specify, goods coming in or going out."),
- 'location_id': fields.many2one('stock.location', 'Source Location', readonly=True, select=True, help="Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations."),
- 'location_dest_id': fields.many2one('stock.location', 'Dest. Location', readonly=True, select=True, help="Location where the system will stock the finished products."),
- 'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'Status', readonly=True, select=True),
- 'product_qty':fields.integer('Quantity',readonly=True),
- 'categ_id': fields.many2one('product.category', 'Product Category', ),
- 'product_qty_in':fields.integer('In Qty',readonly=True),
- 'product_qty_out':fields.integer('Out Qty',readonly=True),
- 'value' : fields.float('Total Value', required=True),
- 'day_diff2':fields.float('Lag (Days)',readonly=True, digits_compute=dp.get_precision('Shipping Delay'), group_operator="avg"),
- 'day_diff1':fields.float('Planned Lead Time (Days)',readonly=True, digits_compute=dp.get_precision('Shipping Delay'), group_operator="avg"),
- 'day_diff':fields.float('Execution Lead Time (Days)',readonly=True, digits_compute=dp.get_precision('Shipping Delay'), group_operator="avg"),
- 'stock_journal': fields.many2one('stock.journal','Stock Journal', select=True),
-
-
- }
-
- def init(self, cr):
- tools.drop_view_if_exists(cr, 'report_stock_move')
- cr.execute("""
- CREATE OR REPLACE view report_stock_move AS (
- SELECT
- min(sm.id) as id,
- date_trunc('day', sm.date) as date,
- avg(date(sm.date)-date(sm.create_date)) as day_diff,
- avg(date(sm.date_expected)-date(sm.create_date)) as day_diff1,
- avg(date(sm.date)-date(sm.date_expected)) as day_diff2,
- sm.location_id as location_id,
- sm.picking_id as picking_id,
- sm.company_id as company_id,
- sm.location_dest_id as location_dest_id,
- sum(sm.product_qty) as product_qty,
- sum(
- (CASE WHEN sp.type in ('out') THEN
- (sm.product_qty * pu.factor / pu2.factor)
- ELSE 0.0
- END)
- ) as product_qty_out,
- sum(
- (CASE WHEN sp.type in ('in') THEN
- (sm.product_qty * pu.factor / pu2.factor)
- ELSE 0.0
- END)
- ) as product_qty_in,
- sm.partner_id as partner_id,
- sm.product_id as product_id,
- sm.state as state,
- sm.product_uom as product_uom,
- pt.categ_id as categ_id ,
- coalesce(sp.type, 'other') as type,
- sp.stock_journal_id AS stock_journal,
- sum(
- (CASE WHEN sp.type in ('in') THEN
- (sm.product_qty * pu.factor / pu2.factor) * pt.standard_price
- ELSE 0.0
- END)
- -
- (CASE WHEN sp.type in ('out') THEN
- (sm.product_qty * pu.factor / pu2.factor) * pt.standard_price
- ELSE 0.0
- END)
- ) as value
- FROM
- stock_move sm
- LEFT JOIN stock_picking sp ON (sm.picking_id=sp.id)
- LEFT JOIN product_product pp ON (sm.product_id=pp.id)
- LEFT JOIN product_uom pu ON (sm.product_uom=pu.id)
- LEFT JOIN product_uom pu2 ON (sm.product_uom=pu2.id)
- LEFT JOIN product_template pt ON (pp.product_tmpl_id=pt.id)
- GROUP BY
- coalesce(sp.type, 'other'), date_trunc('day', sm.date), sm.partner_id,
- sm.state, sm.product_uom, sm.date_expected,
- sm.product_id, pt.standard_price, sm.picking_id,
- sm.company_id, sm.location_id, sm.location_dest_id, pu.factor, pt.categ_id, sp.stock_journal_id
- )
- """)
-
-
-
-class report_stock_inventory(osv.osv):
- _name = "report.stock.inventory"
- _description = "Stock Statistics"
- _auto = False
- _columns = {
- 'date': fields.datetime('Date', readonly=True),
- 'year': fields.char('Year', size=4, readonly=True),
- 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
- ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
- ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True),
- 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
- 'product_id':fields.many2one('product.product', 'Product', readonly=True),
- 'product_categ_id':fields.many2one('product.category', 'Product Category', readonly=True),
- 'location_id': fields.many2one('stock.location', 'Location', readonly=True),
- 'prodlot_id': fields.many2one('stock.production.lot', 'Lot', readonly=True),
- 'company_id': fields.many2one('res.company', 'Company', readonly=True),
- 'product_qty':fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), readonly=True),
- 'value' : fields.float('Total Value', digits_compute=dp.get_precision('Account'), required=True),
- 'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'Status', readonly=True, select=True,
- help='When the stock move is created it is in the \'Draft\' state.\n After that it is set to \'Confirmed\' state.\n If stock is available state is set to \'Avaiable\'.\n When the picking it done the state is \'Done\'.\
- \nThe state is \'Waiting\' if the move is waiting for another one.'),
- 'location_type': fields.selection([('supplier', 'Supplier Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory'), ('procurement', 'Procurement'), ('production', 'Production'), ('transit', 'Transit Location for Inter-Companies Transfers')], 'Location Type', required=True),
- 'scrap_location': fields.boolean('scrap'),
- }
- def init(self, cr):
- tools.drop_view_if_exists(cr, 'report_stock_inventory')
- cr.execute("""
-CREATE OR REPLACE view report_stock_inventory AS (
- (SELECT
- min(m.id) as id, m.date as date,
- to_char(m.date, 'YYYY') as year,
- to_char(m.date, 'MM') as month,
- m.partner_id as partner_id, m.location_id as location_id,
- m.product_id as product_id, pt.categ_id as product_categ_id, l.usage as location_type, l.scrap_location as scrap_location,
- m.company_id,
- m.state as state, m.prodlot_id as prodlot_id,
-
- coalesce(sum(-pt.standard_price * m.product_qty * pu.factor / pu2.factor)::decimal, 0.0) as value,
- coalesce(sum(-m.product_qty * pu.factor / pu2.factor)::decimal, 0.0) as product_qty
- FROM
- stock_move m
- LEFT JOIN stock_picking p ON (m.picking_id=p.id)
- LEFT JOIN product_product pp ON (m.product_id=pp.id)
- LEFT JOIN product_template pt ON (pp.product_tmpl_id=pt.id)
- LEFT JOIN product_uom pu ON (pt.uom_id=pu.id)
- LEFT JOIN product_uom pu2 ON (m.product_uom=pu2.id)
- LEFT JOIN product_uom u ON (m.product_uom=u.id)
- LEFT JOIN stock_location l ON (m.location_id=l.id)
- WHERE m.state != 'cancel'
- GROUP BY
- m.id, m.product_id, m.product_uom, pt.categ_id, m.partner_id, m.location_id, m.location_dest_id,
- m.prodlot_id, m.date, m.state, l.usage, l.scrap_location, m.company_id, pt.uom_id, to_char(m.date, 'YYYY'), to_char(m.date, 'MM')
-) UNION ALL (
- SELECT
- -m.id as id, m.date as date,
- to_char(m.date, 'YYYY') as year,
- to_char(m.date, 'MM') as month,
- m.partner_id as partner_id, m.location_dest_id as location_id,
- m.product_id as product_id, pt.categ_id as product_categ_id, l.usage as location_type, l.scrap_location as scrap_location,
- m.company_id,
- m.state as state, m.prodlot_id as prodlot_id,
- coalesce(sum(pt.standard_price * m.product_qty * pu.factor / pu2.factor)::decimal, 0.0) as value,
- coalesce(sum(m.product_qty * pu.factor / pu2.factor)::decimal, 0.0) as product_qty
- FROM
- stock_move m
- LEFT JOIN stock_picking p ON (m.picking_id=p.id)
- LEFT JOIN product_product pp ON (m.product_id=pp.id)
- LEFT JOIN product_template pt ON (pp.product_tmpl_id=pt.id)
- LEFT JOIN product_uom pu ON (pt.uom_id=pu.id)
- LEFT JOIN product_uom pu2 ON (m.product_uom=pu2.id)
- LEFT JOIN product_uom u ON (m.product_uom=u.id)
- LEFT JOIN stock_location l ON (m.location_dest_id=l.id)
- WHERE m.state != 'cancel'
- GROUP BY
- m.id, m.product_id, m.product_uom, pt.categ_id, m.partner_id, m.location_id, m.location_dest_id,
- m.prodlot_id, m.date, m.state, l.usage, l.scrap_location, m.company_id, pt.uom_id, to_char(m.date, 'YYYY'), to_char(m.date, 'MM')
- )
-);
- """)
-
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/report/report_stock_move_view.xml b/addons/stock/report/report_stock_move_view.xml
deleted file mode 100644
index 452cfd1b3e6..00000000000
--- a/addons/stock/report/report_stock_move_view.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-
-
-
-
-
- report.stock.move.graph
- report.stock.move
-
-
-
-
-
-
-
-
-
-
-
-
- report.stock.move.search
- report.stock.move
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Moves Analysis
- report.stock.move
- form
- graph
-
-
- {'contact_display': 'partner','search_default_done':1,'search_default_year':1, 'search_default_month':1, 'search_default_group_type':1, 'group_by': [], 'group_by_no_leaf':1,}
- Moves Analysis allows you to easily check and analyse your company stock moves. Use this report when you want to analyse the different routes taken by your products and inventory management performance.
-
-
-
-
- report.stock.inventory.graph
- report.stock.inventory
-
-
-
-
-
-
-
-
-
-
- report.stock.inventory.search
- report.stock.inventory
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Inventory Analysis
- report.stock.inventory
- form
- graph
-
- {'contact_display': 'partner', 'search_default_real':1,
-'search_default_year':1,'search_default_month':1, 'search_default_location_type_internal':1,'search_default_group_product':1,'group_by':[], 'group_by_no_leaf':1}
- Inventory Analysis allows you to easily check and analyse your company stock levels. Sort and group by selection criteria in order to better analyse and manage your company activities.
-
-
-
-
-
-
diff --git a/addons/stock/report/report_stock_view.xml b/addons/stock/report/report_stock_view.xml
index e8bb6621355..e770fd871b1 100644
--- a/addons/stock/report/report_stock_view.xml
+++ b/addons/stock/report/report_stock_view.xml
@@ -2,12 +2,6 @@
-
-
report.stock.lines.date.tree
@@ -16,6 +10,7 @@
+
- Last Product Inventories
+ Latest Inventories & Movesreport.stock.lines.dateform{'search_default_stockable':1}tree,form
- Display the last inventories done on your products and easily sort them with specific filtering criteria. If you do frequent and partial inventories, you need this report in order to ensure that the stock of each product is controlled at least once a year.
+ Display the latest Inventories and Moves done on your products and easily sort them with specific filtering criteria. If you do frequent and partial inventories, you need this report in order to ensure that the stock of each product is controlled at least once a year. This also lets you find out which products have seen little move lately and may deserve special measures (discounted sale, quality control...)
-
- stock.location.graph
- stock.location
-
-
-
-
-
-
-
-
diff --git a/addons/stock/report/stock_by_location.py b/addons/stock/report/stock_by_location.py
deleted file mode 100644
index 153b92f077c..00000000000
--- a/addons/stock/report/stock_by_location.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 .
-#
-##############################################################################
-
-import openerp
-from openerp.report.interface import report_rml
-from openerp.report.interface import toxml
-
-#FIXME: we should use toxml
-
-class report_custom(report_rml):
- def create_xml(self, cr, uid, ids, datas, context=None):
- config = """
-
- 09/09/2005
- 210.00mm,297.00mm
- 595.27
- 841.88
- 60.00mm,60.00mm,60.00mm
- Stock by location
- Generated by OpenERP
-
- """
- header = """
-
- Location
- Product name
- Product quantity
-
- """
-
- def process(location_id, level):
- registry = openerp.registry(cr.dbname)
- xml = ''
- location_name = registry['stock.location'].read(cr, uid, [location_id], ['name'])
- xml += "
"
- xml += location_name[0]['name'] + ''
-
- prod_info = registry['stock.location']._product_get(cr, uid, location_id)
- xml += "
"
- for prod_id in prod_info.keys():
- if prod_info[prod_id] != 0.0:
- prod_name = registry['product.product'].read(cr, uid, [prod_id], ['name'])
- xml += prod_name[0]['name'] + '\n'
- xml += ''
-
- xml += "
-
-
-
-
-
-
-
diff --git a/addons/stock/report/stock_inventory_move_report.py b/addons/stock/report/stock_inventory_move_report.py
deleted file mode 100644
index 21a7c458ecc..00000000000
--- a/addons/stock/report/stock_inventory_move_report.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 .
-#
-##############################################################################
-
-import time
-from openerp.report import report_sxw
-
-class stock_inventory_move(report_sxw.rml_parse):
- def __init__(self, cr, uid, name, context):
- super(stock_inventory_move, self).__init__(cr, uid, name, context=context)
- self.localcontext.update({
- 'time': time,
- 'qty_total':self._qty_total
- })
-
- def _qty_total(self, objects):
- total = 0.0
- uom = objects[0].product_uom.name
- for obj in objects:
- total += obj.product_qty
- return {'quantity':total,'uom':uom}
-
-report_sxw.report_sxw(
- 'report.stock.inventory.move',
- 'stock.inventory',
- 'addons/stock/report/stock_inventory_move.rml',
- parser=stock_inventory_move,
- header='internal'
-)
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/res_config.py b/addons/stock/res_config.py
index 453f86bc607..73a3db67608 100644
--- a/addons/stock/res_config.py
+++ b/addons/stock/res_config.py
@@ -20,19 +20,57 @@
##############################################################################
from openerp.osv import fields, osv
+from openerp.tools.translate import _
+
+class res_company(osv.osv):
+ _inherit = "res.company"
+ _columns = {
+ 'propagation_minimum_delta': fields.integer('Minimum Delta for Propagation of a Date Change on moves linked together'),
+ 'internal_transit_location_id': fields.many2one('stock.location', 'Internal Transit Location', help="Technical field used for resupply routes between warehouses that belong to this company", on_delete="restrict"),
+ }
+
+ def create_transit_location(self, cr, uid, company_id, company_name, context=None):
+ '''Create a transit location with company_id being the given company_id. This is needed
+ in case of resuply routes between warehouses belonging to the same company, because
+ we don't want to create accounting entries at that time.
+ '''
+ data_obj = self.pool.get('ir.model.data')
+ try:
+ parent_loc = data_obj.get_object_reference(cr, uid, 'stock', 'stock_location_locations')[1]
+ except:
+ parent_loc = False
+ location_vals = {
+ 'name': _('%s: Transit Location') % company_name,
+ 'usage': 'transit',
+ 'company_id': company_id,
+ 'location_id': parent_loc,
+ }
+ location_id = self.pool.get('stock.location').create(cr, uid, location_vals, context=context)
+ self.write(cr, uid, [company_id], {'internal_transit_location_id': location_id}, context=context)
+
+ def create(self, cr, uid, vals, context=None):
+ company_id = super(res_company, self).create(cr, uid, vals, context=context)
+ self.create_transit_location(cr, uid, company_id, vals['name'], context=context)
+ return company_id
+
+ _defaults = {
+ 'propagation_minimum_delta': 1,
+ }
class stock_config_settings(osv.osv_memory):
_name = 'stock.config.settings'
_inherit = 'res.config.settings'
_columns = {
+ 'company_id': fields.many2one('res.company', 'Company', required=True),
+ 'module_procurement_jit': fields.boolean("Generate procurement in real time",
+ help="""This allows Just In Time computation of procurement orders.
+ All procurement orders will be processed immediately, which could in some
+ cases entail a small performance impact.
+ This installs the module procurement_jit."""),
'module_claim_from_delivery': fields.boolean("Allow claim on deliveries",
help='Adds a Claim link to the delivery order.\n'
'-This installs the module claim_from_delivery.'),
- 'module_stock_invoice_directly': fields.boolean("Create and open the invoice when the user finish a delivery order",
- help='This allows to automatically launch the invoicing wizard if the delivery is '
- 'to be invoiced when you send or deliver goods.\n'
- '-This installs the module stock_invoice_directly.'),
'module_product_expiry': fields.boolean("Expiry date on serial numbers",
help="""Track different dates on products and serial numbers.
The following dates can be tracked:
@@ -41,11 +79,6 @@ The following dates can be tracked:
- removal date
- alert date.
This installs the module product_expiry."""),
- 'module_stock_location': fields.boolean("Create push/pull logistic rules",
- help='Provide push and pull inventory flows. Typical uses of this feature are: '
- 'manage product manufacturing chains, manage default locations per product, '
- 'define routes within your warehouse according to business needs, etc.\n'
- '-This installs the module stock_location.'),
'group_uom': fields.boolean("Manage different units of measure for products",
implied_group='product.group_uom',
help="""Allows you to select and maintain different units of measure for products."""),
@@ -56,22 +89,38 @@ This installs the module product_expiry."""),
'group_stock_packaging': fields.boolean("Allow to define several packaging methods on products",
implied_group='product.group_stock_packaging',
help="""Allows you to create and manage your packaging dimensions and types you want to be maintained in your system."""),
- 'group_stock_production_lot': fields.boolean("Track serial number on products",
+ 'group_stock_production_lot': fields.boolean("Track lots or serial numbers",
implied_group='stock.group_production_lot',
- help="""This allows you to manage products by using serial numbers. When you select a serial number on product moves, you can get the upstream or downstream traceability of that product."""),
- 'group_stock_tracking_lot': fields.boolean("Track serial number on logistic units (pallets)",
+ help="""This allows you to assign a lot (or serial number) to the pickings and moves. This can make it possible to know which production lot was sent to a certain client, ..."""),
+ 'group_stock_tracking_lot': fields.boolean("Use packages: pallets, boxes, ...",
implied_group='stock.group_tracking_lot',
- help="""When you select a serial number on product moves, you can get the upstream or downstream traceability of that product."""),
- 'group_stock_inventory_valuation': fields.boolean("Generate accounting entries per stock movement",
- implied_group='stock.group_inventory_valuation',
- help="""Allows to configure inventory valuations on products and product categories."""),
+ help="""This allows you to manage products by using serial numbers. When you select a serial number on product moves, you can get the traceability of that product."""),
+ 'group_stock_tracking_owner': fields.boolean("Manage owner on stock",
+ implied_group='stock.group_tracking_owner',
+ help="""This way you can receive products attributed to a certain owner. """),
'group_stock_multiple_locations': fields.boolean("Manage multiple locations and warehouses",
implied_group='stock.group_locations',
- help='This allows to configure and use multiple stock locations and warehouses, '
- 'instead of having a single default one.'),
+ help="""This will show you the locations and allows you to define multiple picking types and warehouses."""),
+ 'group_stock_adv_location': fields.boolean("Manage advanced routes for your warehouse",
+ implied_group='stock.group_adv_location',
+ help="""This option supplements the warehouse application by effectively implementing Push and Pull inventory flows through Routes."""),
'decimal_precision': fields.integer('Decimal precision on weight', help="As an example, a decimal precision of 2 will allow weights like: 9.99 kg, whereas a decimal precision of 4 will allow weights like: 0.0231 kg."),
+ 'propagation_minimum_delta': fields.related('company_id', 'propagation_minimum_delta', type='integer', string="Minimum days to trigger a propagation of date change in pushed/pull flows."),
+ 'module_stock_dropshipping': fields.boolean("Manage dropshipping",
+ help='\nCreates the dropship route and add more complex tests'
+ '-This installs the module stock_dropshipping.'),
+ 'module_stock_picking_wave': fields.boolean('Manage picking wave', help='Install the picking wave module which will help you grouping your pickings and processing them in batch'),
}
+ def onchange_adv_location(self, cr, uid, ids, group_stock_adv_location, context=None):
+ if group_stock_adv_location:
+ return {'value': {'group_stock_multiple_locations': True}}
+ return {}
+
+ def _default_company(self, cr, uid, context=None):
+ user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+ return user.company_id.id
+
def get_default_dp(self, cr, uid, fields, context=None):
dp = self.pool.get('ir.model.data').get_object(cr, uid, 'product', 'decimal_stock_weight')
return {'decimal_precision': dp.digits}
@@ -81,4 +130,8 @@ This installs the module product_expiry."""),
dp = self.pool.get('ir.model.data').get_object(cr, uid, 'product', 'decimal_stock_weight')
dp.write({'digits': config.decimal_precision})
+ _defaults = {
+ 'company_id': _default_company,
+ }
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/res_config_view.xml b/addons/stock/res_config_view.xml
index 133e6ffa875..140ab36c774 100644
--- a/addons/stock/res_config_view.xml
+++ b/addons/stock/res_config_view.xml
@@ -23,7 +23,7 @@
-
+
@@ -46,17 +46,18 @@ counter-parts locations) and a very simple user interface.
-
+
-
Decrease your process time
+
Barcode Scanner UI
+
Barcode scanner user interface
-
+
-OpenERP prepares all operations for you, according to your own logistic rules:
-push rules, pull rules, make-to-order, minimum stock rules, etc. Optimizes the
-planning and jobs with the scheduler to reduce your process time.
+Speed up operations with our dedicated barcode scanner and touch screen user
+interface, from which you can do all operations; receptions, picking, packing,
+delivery orders, internal controls, etc.
@@ -65,12 +66,12 @@ planning and jobs with the scheduler to reduce your process time.
Automate transactions
+
Decrease your process time
-Get your pickings, packings, receptions and internal moves scheduled
-automatically by OpenERP using your own routing rules. Define push and pull
-rules to organize a warehouse or to manage products moves between several
-warehouses.
+OpenERP prepares all operations for you, according to your own logistic rules:
+routes, waves, removal/put away strategies, minimum stock rules, etc.
+Optimizes the planning and jobs with the scheduler to reduce your process time.
@@ -128,7 +122,7 @@ system help you with fullfilment propositions.
-
+
Fully Integrated with Operations
Sales, Purchases and Accounting integration
@@ -151,12 +145,11 @@ your inventory operations.
Track Serial Numbers
+
Save time with the barcode scanner interface
Assign serial numbers at every step of your reception or delivery flow.
-OpenERP handles production lots (batches of identical products) or logistic
-lots (pallets, boxes, etc) to help you get full upstream or downstream
-traceability.
+OpenERP handles unique serial numbers, batches of identical products or packaging units.
@@ -167,7 +160,7 @@ traceability.
-
+
Scale Your WMS easily
@@ -180,12 +173,139 @@ traceability.
Manage your own internal and external locations, customers, suppliers or
manufacturing inventories with the OpenERP multi-warehouse management system
based on a hierarchical location structure.
+
+OpenERP's Warehouse Management is designed to scale from a few thousands
+operations to several millions of transactions.
-
+
+
+
Reporting and Dashboards
+
Analyse your warehouse efficiency to improve performance
+
+
+Get the insights you need to make smarter decisions. Design custom dashboards
+to get a picture of your warehouse efficiency at a glance. Dig deeper with
+real-time reports that anyone can create and share.
+
+
+
+
+
+
+
+
+
+
+
Use Routes to Support Your Own Delivery Process
+
Define routes according to your warehouse organization
+
+
+Customize routes and picking/packing operations to support your own customer
+delivery process. Define custom routes or use pre-configured routes, e.g.: pick
+⇨ pack ⇨ ship.
+
+
+
+
+
+
+
+
+
+
+
+
+
Wave & Batch Picking
+
Optimize your picking orders
+
+
+
+
+
+Use routes, waves and orderpoint rules to optimize the way you pick products in
+the warehouse. OpenERP supports most picking methods out-of-the-box like; wave
+picking, batch picking and "by order" picking.
+
+
+
+
+
+
+
+
Cross-Docking some products
+
Streamline your supply chain from point of origin to point of sale
+
+
+
+
+
+Unload incoming materials from suppliers and route them directly to the packing
+or delivery zone to deliver customers, without going through the stock. Set the
+"Cross-Dock" route on products or per sale order lines.
+
+
+
+
+
+
+
+
Make to Order and Dropshipping On Demand
+
+
+Fulfill sales order by purchasing or manufacturing products on demand, with the
+"Make to Order" route. Use the dropshipping route to deliver customers directly
+from your suppliers.
+
+
+
+
+
+
+
+
+
+
+
Advanced Removal Strategies
+
Optimize your material turnover
+
+
+
+
+
+
+
+Setup removal strategies per location and/or categories of products. Use
+pre-defined strategies (e.g. FIFO, LIFO, FEFO) or easily implement your
+specific ones to optimize the material turnover.
+
+
+
+
+
+
+
+
Put Away Strategies
+
Optimize storage space with smart strategies
+
+
+Setup put away strategies to optimize product storage and bin allocations. Just
+define strategies per location, product category and product to store
+efficiently incoming materials.
+
+
+
+
+
+
+
+
+
+
+
Many companies already enjoy it
diff --git a/addons/stock/static/description/stock_scanner.png b/addons/stock/static/description/stock_scanner.png
new file mode 100644
index 00000000000..d788d7b342b
Binary files /dev/null and b/addons/stock/static/description/stock_scanner.png differ
diff --git a/addons/stock/static/src/css/barcode.css b/addons/stock/static/src/css/barcode.css
new file mode 100644
index 00000000000..1b47d662690
--- /dev/null
+++ b/addons/stock/static/src/css/barcode.css
@@ -0,0 +1,134 @@
+.in_container_hidden {
+ display: none;
+}
+.in_container {
+}
+.oe_pick_app_header{
+ margin-top: 0;
+}
+.oe_picking {
+ cursor: pointer;
+}
+.oe_kanban.oe_picking {
+ min-height: 80px;
+ margin-bottom: 10px;
+ border: 1px solid rgba(0, 0, 0, 0.16);
+ border-bottom-color: rgba(0, 0, 0, 0.3);
+ -webkit-transition: -webkit-transform, -webkit-box-shadow, border 200ms linear;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ padding: 5px;
+}
+
+.oe_kanban_color_0 {
+ background-color: white;
+ color: #5a5a5a;
+}
+.oe_kanban_color_1 {
+ background-color: #cccccc;
+ color: #424242;
+}
+.oe_kanban_color_2 {
+ background-color: #ffc7c7;
+ color: #7a3737;
+}
+.oe_kanban_color_3 {
+ background-color: #fff1c7;
+ color: #756832;
+}
+.oe_kanban_color_4 {
+ background-color: #e3ffc7;
+ color: #5d6937;
+}
+.oe_kanban_color_5 {
+ background-color: #c7ffd5;
+ color: #1a7759;
+}
+.oe_kanban_color_6 {
+ background-color: #c7ffff;
+ color: #1a5d83;
+}
+.oe_kanban_color_7 {
+ background-color: #c7d5ff;
+ color: #3b3e75;
+}
+.oe_kanban_color_8 {
+ background-color: #e3c7ff;
+ color: #4c3668;
+}
+.oe_kanban_color_9 {
+ background-color: #ffc7f1;
+ color: #6d2c70;
+}
+
+/*Blinking text*/
+.blink_me {
+ -webkit-animation-name: blinker;
+ -webkit-animation-duration: 1s;
+ -webkit-animation-timing-function: linear;
+ -webkit-animation-iteration-count: 2;
+
+ -moz-animation-name: blinker;
+ -moz-animation-duration: 1s;
+ -moz-animation-timing-function: linear;
+ -moz-animation-iteration-count: 2;
+
+ animation-name: blinker;
+ animation-duration: 1s;
+ animation-timing-function: linear;
+ animation-iteration-count: 2;
+}
+
+@-moz-keyframes blinker {
+ 0% { opacity: 1.0; }
+ 50% { opacity: 0.0; }
+ 100% { opacity: 1.0; }
+}
+
+@-webkit-keyframes blinker {
+ 0% { opacity: 1.0; }
+ 50% { opacity: 0.0; }
+ 100% { opacity: 1.0; }
+}
+
+@keyframes blinker {
+ 0% { opacity: 1.0; }
+ 50% { opacity: 0.0; }
+ 100% { opacity: 1.0; }
+}
+
+/*hide OpenERP leftbar, table should use all width by default and display vertical scrollbar if needed*/
+.oe_leftbar {
+ display: none;
+}
+
+table.oe_webclient.oe_content_full_screen{
+ width: 100%;
+}
+
+body{
+ overflow-y: visible !important;
+}
+
+/* --- Styling of OpenERP Elements ---
+ Needed for loading and error box */
+
+/* Increase z-index value to insure that loading goes above navbar of bootstrap*/
+.openerp .oe_loading {
+ display: none;
+ z-index: 1000;
+ position: fixed;
+ top: 0;
+ right: 50%;
+ padding: 4px 12px;
+ background: #a61300;
+ color: white;
+ text-align: center;
+ border: 1px solid #990000;
+ border-top: none;
+ -moz-border-radius-bottomright: 8px;
+ -moz-border-radius-bottomleft: 8px;
+ border-bottom-right-radius: 8px;
+ border-bottom-left-radius: 8px;
+}
\ No newline at end of file
diff --git a/addons/stock/static/src/css/stock.css b/addons/stock/static/src/css/stock.css
index 1efbaf5e3c4..6ddf405f114 100644
--- a/addons/stock/static/src/css/stock.css
+++ b/addons/stock/static/src/css/stock.css
@@ -66,3 +66,57 @@
.oe_product_desc li {
margin: 2px 0;
}
+
+.openerp .oe_kanban_view .oe_kanban_stock_picking_type {
+ width: 345px;
+ cursor: default;
+ min-height: 245px !important;
+}
+.openerp .oe_kanban_view .oe_kanban_stock_picking_type .oe_items_list {
+ position: relative;
+ margin: 10px;
+}
+.openerp .oe_kanban_view .oe_kanban_stock_picking_type .oe_items_list div {
+ width: 160px;
+ height: 22px;
+ margin: 0 !important;
+ position: relative;
+ display: inline-block;
+ float: left;
+}
+.openerp .oe_kanban_view .oe_kanban_stock_picking_type .oe_items_list a:hover {
+ text-decoration: underline !important;
+}
+.openerp .oe_kanban_view .oe_kanban_stock_picking_type .oe_items_list div a:nth-child(2n) {
+ position: absolute;
+ left: 150px;
+ top: 0;
+}
+.openerp .oe_kanban_view .oe_kanban_stock_picking_type .oe_items_list div:nth-child(2n) a:nth-child(2n) {
+ left: 150px;
+}
+.openerp .oe_kanban_view .oe_kanban_stock_picking_type .oe_sparkline_bar {
+ height: 20px;
+ width: 66px !important;
+}
+.openerp .oe_kanban_view .oe_kanban_stock_picking_type .oe_picking_type_gauge {
+ position: absolute;
+ left: 10px;
+ top: 100px;
+}
+.openerp .oe_stock_scan_image {
+ opacity: 0.2;
+ margin: 0 5px 0;
+}
+.openerp .oe_stock_scan_image:hover {
+ opacity: 1
+}
+.oe_gauge_labels {
+ width: 100%;
+}
+.oe_gauge_labels .oe_gauge_label_column {
+ width: 49%;
+ text-align: center;
+ display: inline-block;
+ margin: -7px;
+}
diff --git a/addons/stock/static/src/img/scan.png b/addons/stock/static/src/img/scan.png
new file mode 100644
index 00000000000..fe679687ce7
Binary files /dev/null and b/addons/stock/static/src/img/scan.png differ
diff --git a/addons/stock/static/src/js/widgets.js b/addons/stock/static/src/js/widgets.js
new file mode 100644
index 00000000000..80d3ba65ba3
--- /dev/null
+++ b/addons/stock/static/src/js/widgets.js
@@ -0,0 +1,1026 @@
+function openerp_picking_widgets(instance){
+
+ var module = instance.stock;
+ var _t = instance.web._t;
+ var QWeb = instance.web.qweb;
+
+ // This widget makes sure that the scaling is disabled on mobile devices.
+ // Widgets that want to display fullscreen on mobile phone need to extend this
+ // widget.
+
+ module.MobileWidget = instance.web.Widget.extend({
+ start: function(){
+ if(!$('#oe-mobilewidget-viewport').length){
+ $('head').append('');
+ }
+ return this._super();
+ },
+ destroy: function(){
+ $('#oe-mobilewidget-viewport').remove();
+ return this._super();
+ },
+ });
+
+ module.PickingEditorWidget = instance.web.Widget.extend({
+ template: 'PickingEditorWidget',
+ init: function(parent,options){
+ this._super(parent,options);
+ var self = this;
+ this.rows = [];
+ this.search_filter = "";
+ jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
+ return function( elem ) {
+ return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
+ };
+ });
+ },
+ get_header: function(){
+ return this.getParent().get_header();
+ },
+ get_location: function(){
+ var model = this.getParent();
+ var locations = [];
+ var self = this;
+ _.each(model.locations, function(loc){
+ locations.push({name: loc.complete_name, id: loc.id,});
+ });
+ return locations;
+ },
+ get_rows: function(){
+ var model = this.getParent();
+ this.rows = [];
+ var self = this;
+ var pack_created = [];
+ _.each( model.packoplines, function(packopline){
+ var pack = undefined;
+ var color = "";
+ if (packopline.product_id[1] !== undefined){ pack = packopline.package_id[1];}
+ if (packopline.product_qty == packopline.qty_done){ color = "success "; }
+ if (packopline.product_qty < packopline.qty_done){ color = "danger "; }
+ //also check that we don't have a line already existing for that package
+ if (packopline.result_package_id[1] !== undefined && $.inArray(packopline.result_package_id[0], pack_created) === -1){
+ self.rows.push({
+ cols: { product: packopline.result_package_id[1],
+ qty: '',
+ rem: '',
+ uom: undefined,
+ lot: undefined,
+ pack: undefined,
+ container: packopline.result_package_id[1],
+ container_id: undefined,
+ loc: packopline.location_id[1],
+ dest: packopline.location_dest_id[1],
+ id: packopline.result_package_id[0],
+ product_id: undefined,
+ can_scan: false,
+ head_container: true,
+ processed: packopline.processed,
+ },
+ classes: ('success container_head ') + (packopline.processed === "true" ? 'processed hidden ':''),
+ });
+ pack_created.push(packopline.result_package_id[0]);
+ }
+ self.rows.push({
+ cols: { product: packopline.product_id[1] || packopline.package_id[1],
+ qty: packopline.product_qty,
+ rem: packopline.qty_done,
+ uom: packopline.product_uom_id[1],
+ lot: packopline.lot_id[1],
+ pack: pack,
+ container: packopline.result_package_id[1],
+ container_id: packopline.result_package_id[0],
+ loc: packopline.location_id[1],
+ dest: packopline.location_dest_id[1],
+ id: packopline.id,
+ product_id: packopline.product_id[0],
+ can_scan: packopline.result_package_id[1] === undefined ? true : false,
+ head_container: false,
+ processed: packopline.processed,
+ },
+ classes: color + (packopline.result_package_id[1] !== undefined ? 'in_container_hidden ' : '') + (packopline.processed === "true" ? 'processed hidden ':''),
+ });
+ });
+ //sort element by things to do, then things done, then grouped by packages
+ group_by_container = _.groupBy(self.rows, function(row){
+ return row.cols.container;
+ });
+ var sorted_row = [];
+ if (group_by_container.undefined !== undefined){
+ group_by_container.undefined.sort(function(a,b){return (b.classes === '') - (a.classes === '');});
+ $.each(group_by_container.undefined, function(key, value){
+ sorted_row.push(value);
+ });
+ }
+
+ $.each(group_by_container, function(key, value){
+ if (key !== 'undefined'){
+ $.each(value, function(k,v){
+ sorted_row.push(v);
+ });
+ }
+ });
+
+ return sorted_row;
+ },
+ renderElement: function(){
+ var self = this;
+ this._super();
+ this.check_content_screen();
+ this.$('.js_pick_done').click(function(){ self.getParent().done(); });
+ this.$('.js_pick_print').click(function(){ self.getParent().print_picking(); });
+ this.$('.oe_pick_app_header').text(self.get_header());
+ this.$('.oe_searchbox').keyup(function(event){
+ self.on_searchbox($(this).val());
+ });
+ this.$('.js_pick_pack').click(function(){ self.getParent().pack(); });
+ this.$('.js_drop_down').click(function(){ self.getParent().drop_down();});
+ this.$('.js_clear_search').click(function(){
+ self.on_searchbox('');
+ self.$('.oe_searchbox').val('');
+ });
+ this.$('.oe_searchbox').focus(function(){
+ self.getParent().barcode_scanner.disconnect();
+ });
+ this.$('.oe_searchbox').blur(function(){
+ self.getParent().barcode_scanner.connect(function(ean){
+ self.get_Parent().scan(ean);
+ });
+ })
+ this.$('#js_select').change(function(){
+ var selection = self.$('#js_select option:selected').attr('value');
+ if (selection === "ToDo"){
+ self.getParent().$('.js_pick_pack').removeClass('hidden')
+ self.getParent().$('.js_drop_down').removeClass('hidden')
+ self.$('.js_pack_op_line.processed').addClass('hidden')
+ self.$('.js_pack_op_line:not(.processed)').removeClass('hidden')
+ }
+ else{
+ self.getParent().$('.js_pick_pack').addClass('hidden')
+ self.getParent().$('.js_drop_down').addClass('hidden')
+ self.$('.js_pack_op_line.processed').removeClass('hidden')
+ self.$('.js_pack_op_line:not(.processed)').addClass('hidden')
+ }
+ self.on_searchbox(self.search_filter);
+ });
+ this.$('.js_plus').click(function(){
+ var id = $(this).data('product-id');
+ var op_id = $(this).parents("[data-id]:first").data('id');
+ self.getParent().scan_product_id(id,true,op_id);
+ });
+ this.$('.js_minus').click(function(){
+ var id = $(this).data('product-id');
+ var op_id = $(this).parents("[data-id]:first").data('id');
+ self.getParent().scan_product_id(id,false,op_id);
+ });
+ this.$('.js_unfold').click(function(){
+ var op_id = $(this).parent().data('id');
+ var line = $(this).parent();
+ //select all js_pack_op_line with class in_container_hidden and correct container-id
+ select = self.$('.js_pack_op_line.in_container_hidden[data-container-id='+op_id+']')
+ if (select.length > 0){
+ //we unfold
+ line.addClass('warning');
+ select.removeClass('in_container_hidden');
+ select.addClass('in_container');
+ }
+ else{
+ //we fold
+ line.removeClass('warning');
+ select = self.$('.js_pack_op_line.in_container[data-container-id='+op_id+']')
+ select.removeClass('in_container');
+ select.addClass('in_container_hidden');
+ }
+ });
+ this.$('.js_create_lot').click(function(){
+ var op_id = $(this).parents("[data-id]:first").data('id');
+ var lot_name = false;
+ self.$('.js_lot_scan').val('');
+ var $lot_modal = self.$el.siblings('#js_LotChooseModal');
+ //disconnect scanner to prevent scanning a product in the back while dialog is open
+ self.getParent().barcode_scanner.disconnect();
+ $lot_modal.modal()
+ //focus input
+ $lot_modal.on('shown.bs.modal', function(){
+ self.$('.js_lot_scan').focus();
+ })
+ //reactivate scanner when dialog close
+ $lot_modal.on('hidden.bs.modal', function(){
+ self.getParent().barcode_scanner.connect(function(ean){
+ self.getParent().scan(ean);
+ });
+ })
+ self.$('.js_lot_scan').focus();
+ //button action
+ self.$('.js_validate_lot').click(function(){
+ //get content of input
+ var name = self.$('.js_lot_scan').val();
+ if (name.length !== 0){
+ lot_name = name;
+ }
+ $lot_modal.modal('hide');
+ //we need this here since it is not sure the hide event
+ //will be catch because we refresh the view after the create_lot call
+ self.getParent().barcode_scanner.connect(function(ean){
+ self.getParent().scan(ean);
+ });
+ self.getParent().create_lot(op_id, lot_name);
+ });
+ });
+ this.$('.js_delete_pack').click(function(){
+ var pack_id = $(this).parents("[data-id]:first").data('id');
+ self.getParent().delete_package_op(pack_id);
+ });
+ this.$('.js_print_pack').click(function(){
+ var pack_id = $(this).parents("[data-id]:first").data('id');
+ // $(this).parents("[data-id]:first").data('id')
+ self.getParent().print_package(pack_id);
+ });
+ this.$('.js_submit_value').submit(function(event){
+ var op_id = $(this).parents("[data-id]:first").data('id');
+ var value = parseFloat($("input", this).val());
+ if (value>=0){
+ self.getParent().set_operation_quantity(value, op_id);
+ }
+ $("input", this).val("");
+ return false;
+ });
+ this.$('.js_qty').focus(function(){
+ self.getParent().barcode_scanner.disconnect();
+ });
+ this.$('.js_qty').blur(function(){
+ this.value = "";
+ self.getParent().barcode_scanner.connect(function(ean){
+ self.getParent().scan(ean);
+ });
+ });
+ this.$('.js_change_src').click(function(){
+ var op_id = $(this).parents("[data-id]:first").data('id');//data('op_id');
+ self.$('#js_loc_select').addClass('source');
+ self.$('#js_loc_select').data('op-id',op_id);
+ self.$el.siblings('#js_LocationChooseModal').modal();
+ });
+ this.$('.js_change_dst').click(function(){
+ var op_id = $(this).parents("[data-id]:first").data('id');
+ self.$('#js_loc_select').data('op-id',op_id);
+ self.$el.siblings('#js_LocationChooseModal').modal();
+ });
+ this.$('.js_pack_change_dst').click(function(){
+ var op_id = $(this).parents("[data-id]:first").data('id');
+ self.$('#js_loc_select').addClass('pack');
+ self.$('#js_loc_select').data('op-id',op_id);
+ self.$el.siblings('#js_LocationChooseModal').modal();
+ });
+ this.$('.js_validate_location').click(function(){
+ //get current selection
+ var select_dom_element = self.$('#js_loc_select');
+ var loc_id = self.$('#js_loc_select option:selected').data('loc-id');
+ var src_dst = false;
+ var op_id = select_dom_element.data('op-id');
+ if (select_dom_element.hasClass('pack')){
+ select_dom_element.removeClass('source');
+ op_ids = [];
+ self.$('.js_pack_op_line[data-container-id='+op_id+']').each(function(){
+ op_ids.push($(this).data('id'));
+ });
+ op_id = op_ids;
+ }
+ else if (select_dom_element.hasClass('source')){
+ src_dst = true;
+ select_dom_element.removeClass('source');
+ }
+ if (loc_id === false){
+ //close window
+ self.$el.siblings('#js_LocationChooseModal').modal('hide');
+ }
+ else{
+ self.$el.siblings('#js_LocationChooseModal').modal('hide');
+ self.getParent().change_location(op_id, parseInt(loc_id), src_dst);
+
+ }
+ });
+ //remove navigtion bar from default openerp GUI
+ $('td.navbar').html('');
+ },
+ on_searchbox: function(query){
+ //hide line that has no location matching the query and highlight location that match the query
+ this.search_filter = query;
+ var processed = ".processed";
+ if (this.$('#js_select option:selected').attr('value') == "ToDo"){
+ processed = ":not(.processed)";
+ }
+ if (query !== '') {
+ this.$('.js_loc:not(.js_loc:Contains('+query+'))').removeClass('info');
+ this.$('.js_loc:Contains('+query+')').addClass('info');
+ this.$('.js_pack_op_line'+processed+':not(.js_pack_op_line:has(.js_loc:Contains('+query+')))').addClass('hidden');
+ this.$('.js_pack_op_line'+processed+':has(.js_loc:Contains('+query+'))').removeClass('hidden');
+ }
+ //if no query specified, then show everything
+ if (query === '') {
+ this.$('.js_loc').removeClass('info');
+ this.$('.js_pack_op_line'+processed+'.hidden').removeClass('hidden');
+ }
+ this.check_content_screen();
+ },
+ check_content_screen: function(){
+ //get all visible element and if none has positive qty, disable put in pack and process button
+ var self = this;
+ var processed = this.$('.js_pack_op_line.processed');
+ var qties = this.$('.js_pack_op_line:not(.processed):not(.hidden) .js_qty').map(function(){return $(this).attr('placeholder')});
+ var container = this.$('.js_pack_op_line.container_head:not(.processed):not(.hidden)')
+ var disabled = true;
+ $.each(qties,function(index, value){
+ if (parseInt(value)>0){
+ disabled = false;
+ }
+ });
+
+ if (disabled){
+ if (container.length===0){
+ self.$('.js_drop_down').addClass('disabled');
+ }
+ else {
+ self.$('.js_drop_down').removeClass('disabled');
+ }
+ self.$('.js_pick_pack').addClass('disabled');
+ if (processed.length === 0){
+ self.$('.js_pick_done').addClass('disabled');
+ }
+ else {
+ self.$('.js_pick_done').removeClass('disabled');
+ }
+ }
+ else{
+ self.$('.js_drop_down').removeClass('disabled');
+ self.$('.js_pick_pack').removeClass('disabled');
+ self.$('.js_pick_done').removeClass('disabled');
+ }
+ },
+ get_current_op_selection: function(ignore_container){
+ //get ids of visible on the screen
+ pack_op_ids = []
+ this.$('.js_pack_op_line:not(.processed):not(.js_pack_op_line.hidden):not(.container_head)').each(function(){
+ cur_id = $(this).data('id');
+ pack_op_ids.push(parseInt(cur_id));
+ });
+ //get list of element in this.rows where rem > 0 and container is empty is specified
+ list = []
+ _.each(this.rows, function(row){
+ if (row.cols.rem > 0 && (ignore_container || row.cols.container === undefined)){
+ list.push(row.cols.id);
+ }
+ });
+ //return only those visible with rem qty > 0 and container empty
+ return _.intersection(pack_op_ids, list);
+ },
+ remove_blink: function(){
+ this.$('.js_pack_op_line.blink_me').removeClass('blink_me');
+ },
+ blink: function(op_id){
+ this.$('.js_pack_op_line[data-id="'+op_id+'"]').addClass('blink_me');
+ },
+ check_done: function(){
+ var model = this.getParent();
+ var self = this;
+ var done = true;
+ _.each( model.packoplines, function(packopline){
+ if (packopline.processed === "false"){
+ done = false;
+ return done;
+ }
+ });
+ return done;
+ },
+ get_visible_ids: function(){
+ var self = this;
+ var visible_op_ids = []
+ var op_ids = this.$('.js_pack_op_line:not(.processed):not(.hidden):not(.container_head):not(.in_container):not(.in_container_hidden)').map(function(){
+ return $(this).data('id');
+ });
+ $.each(op_ids, function(key, op_id){
+ visible_op_ids.push(parseInt(op_id));
+ });
+ return visible_op_ids;
+ },
+ });
+
+ module.PickingMenuWidget = module.MobileWidget.extend({
+ template: 'PickingMenuWidget',
+ init: function(parent, params){
+ this._super(parent,params);
+ var self = this;
+ $(window).bind('hashchange', function(){
+ var states = $.bbq.getState();
+ if (states.action === "stock.ui"){
+ self.do_action({
+ type: 'ir.actions.client',
+ tag: 'stock.ui',
+ target: 'current',
+ },{
+ clear_breadcrumbs: true,
+ });
+ }
+ });
+ this.picking_types = [];
+ this.loaded = this.load();
+ this.scanning_type = 0;
+ this.barcode_scanner = new module.BarcodeScanner();
+ this.pickings_by_type = {};
+ this.pickings_by_id = {};
+ this.picking_search_string = "";
+ },
+ load: function(){
+ var self = this;
+ return new instance.web.Model('stock.picking.type').get_func('search_read')([],[])
+ .then(function(types){
+ self.picking_types = types;
+ for(var i = 0; i < types.length; i++){
+ self.pickings_by_type[types[i].id] = [];
+ }
+ self.pickings_by_type[0] = [];
+
+ return new instance.web.Model('stock.picking').call('search_read',[ [['state','in', ['assigned', 'partially_available']]], [] ], {context: new instance.web.CompoundContext()});
+
+ }).then(function(pickings){
+ self.pickings = pickings;
+ for(var i = 0; i < pickings.length; i++){
+ var picking = pickings[i];
+ self.pickings_by_type[picking.picking_type_id[0]].push(picking);
+ self.pickings_by_id[picking.id] = picking;
+ self.picking_search_string += '' + picking.id + ':' + picking.name.toUpperCase() + '\n'
+ }
+
+ });
+ },
+ renderElement: function(){
+ this._super();
+ var self = this;
+ this.$('.js_pick_quit').click(function(){ self.quit(); });
+ this.$('.js_pick_scan').click(function(){ self.scan_picking($(this).data('id')); });
+ this.$('.js_pick_last').click(function(){ self.goto_last_picking_of_type($(this).data('id')); });
+ this.$('.oe_searchbox').keyup(function(event){
+ self.on_searchbox($(this).val());
+ });
+ //remove navigtion bar from default openerp GUI
+ $('td.navbar').html('');
+ },
+ start: function(){
+ this._super();
+ var self = this;
+ instance.webclient.set_content_full_screen(true);
+ this.barcode_scanner.connect(function(barcode){
+ self.on_scan(barcode);
+ });
+ this.loaded.then(function(){
+ self.renderElement();
+ });
+ },
+ goto_picking: function(picking_id){
+ $.bbq.pushState('#action=stock.ui&picking_id='+picking_id);
+ $(window).trigger('hashchange');
+ },
+ goto_last_picking_of_type: function(type_id){
+ $.bbq.pushState('#action=stock.ui&picking_type_id='+type_id);
+ $(window).trigger('hashchange');
+ },
+ search_picking: function(barcode){
+ try {
+ var re = RegExp("([0-9]+):.*?"+barcode.toUpperCase(),"gi");
+ }
+ catch(e) {
+ //avoid crash if a not supported char is given (like '\' or ')')
+ return [];
+ }
+
+ var results = [];
+ for(var i = 0; i < 100; i++){
+ r = re.exec(this.picking_search_string);
+ if(r){
+ var picking = this.pickings_by_id[Number(r[1])];
+ if(picking){
+ results.push(picking);
+ }
+ }else{
+ break;
+ }
+ }
+ return results;
+ },
+ on_scan: function(barcode){
+ var self = this;
+ for(var i = 0, len = this.pickings.length; i < len; i++){
+ var picking = this.pickings[i];
+ if(picking.name.toUpperCase() === $.trim(barcode.toUpperCase())){
+ this.goto_picking(picking.id);
+ break;
+ }
+ }
+ this.$('.js_picking_not_found').removeClass('hidden');
+
+ clearTimeout(this.picking_not_found_timeout);
+ this.picking_not_found_timeout = setTimeout(function(){
+ self.$('.js_picking_not_found').addClass('hidden');
+ },2000);
+
+ },
+ on_searchbox: function(query){
+ var self = this;
+
+ clearTimeout(this.searchbox_timeout);
+ this.searchbox_timout = setTimeout(function(){
+ if(query){
+ self.$('.js_picking_not_found').addClass('hidden');
+ self.$('.js_picking_categories').addClass('hidden');
+ self.$('.js_picking_search_results').html(
+ QWeb.render('PickingSearchResults',{results:self.search_picking(query)})
+ );
+ self.$('.js_picking_search_results .oe_picking').click(function(){
+ self.goto_picking($(this).data('id'));
+ });
+ self.$('.js_picking_search_results').removeClass('hidden');
+ }else{
+ self.$('.js_title_label').removeClass('hidden');
+ self.$('.js_picking_categories').removeClass('hidden');
+ self.$('.js_picking_search_results').addClass('hidden');
+ }
+ },100);
+ },
+ quit: function(){
+ return new instance.web.Model("ir.model.data").get_func("search_read")([['name', '=', 'action_picking_type_form']], ['res_id']).pipe(function(res) {
+ window.location = '/web#action=' + res[0]['res_id'];
+ });
+ },
+ destroy: function(){
+ this._super();
+ this.barcode_scanner.disconnect();
+ instance.webclient.set_content_full_screen(false);
+ },
+ });
+ openerp.web.client_actions.add('stock.menu', 'instance.stock.PickingMenuWidget');
+
+ module.PickingMainWidget = module.MobileWidget.extend({
+ template: 'PickingMainWidget',
+ init: function(parent,params){
+ this._super(parent,params);
+ var self = this;
+ $(window).bind('hashchange', function(){
+ var states = $.bbq.getState();
+ if (states.action === "stock.menu"){
+ self.do_action({
+ type: 'ir.actions.client',
+ tag: 'stock.menu',
+ target: 'current',
+ },{
+ clear_breadcrumbs: true,
+ });
+ }
+ });
+ init_hash = $.bbq.getState();
+ this.picking_type_id = init_hash.picking_type_id ? init_hash.picking_type_id:0;
+ this.picking_id = init_hash.picking_id ? init_hash.picking_id:undefined;
+ this.picking = null;
+ this.pickings = [];
+ this.packoplines = null;
+ this.selected_operation = { id: null, picking_id: null};
+ this.packages = null;
+ this.barcode_scanner = new module.BarcodeScanner();
+ this.locations = [];
+ if(this.picking_id){
+ this.loaded = this.load(this.picking_id);
+ }else{
+ this.loaded = this.load();
+ }
+
+ },
+
+ // load the picking data from the server. If picking_id is undefined, it will take the first picking
+ // belonging to the category
+ load: function(picking_id){
+ var self = this;
+
+
+ function load_picking_list(type_id){
+ var pickings = new $.Deferred();
+ new instance.web.Model('stock.picking')
+ .call('get_next_picking_for_ui',[{'default_picking_type_id':parseInt(type_id)}])
+ .then(function(picking_ids){
+ if(!picking_ids || picking_ids.length === 0){
+ (new instance.web.Dialog(self,{
+ title: _t('No Picking Available'),
+ buttons: [{
+ text:_t('Ok'),
+ click: function(){
+ self.menu();
+ }
+ }]
+ }, _t('
We could not find a picking to display.
'))).open();
+
+ pickings.reject();
+ }else{
+ self.pickings = picking_ids;
+ pickings.resolve(picking_ids);
+ }
+ });
+
+ return pickings;
+ }
+
+ // if we have a specified picking id, we load that one, and we load the picking of the same type as the active list
+ if( picking_id ){
+ var loaded_picking = new instance.web.Model('stock.picking')
+ .call('read',[[parseInt(picking_id)], [], new instance.web.CompoundContext()])
+ .then(function(picking){
+ self.picking = picking[0];
+
+ return load_picking_list(self.picking.picking_type_id[0]);
+ });
+ }else{
+ // if we don't have a specified picking id, we load the pickings belong to the specified type, and then we take
+ // the first one of that list as the active picking
+ var loaded_picking = new $.Deferred();
+ load_picking_list(self.picking_type_id)
+ .then(function(){
+ return new instance.web.Model('stock.picking').call('read',[self.pickings[0],[], new instance.web.CompoundContext()]);
+ })
+ .then(function(picking){
+ self.picking = picking;
+ self.picking_type_id = picking.picking_type_id[0];
+ loaded_picking.resolve();
+ });
+ }
+
+ return loaded_picking.then(function(){
+ return new instance.web.Model('stock.location').call('search',[[['usage','=','internal']]]).then(function(locations_ids){
+ return new instance.web.Model('stock.location').call('read',[locations_ids, []]).then(function(locations){
+ self.locations = locations;
+ });
+ });
+ }).then(function(){
+ return new instance.web.Model('stock.picking').call('check_group_pack').then(function(result){
+ return self.show_pack = result;
+ });
+ }).then(function(){
+ return new instance.web.Model('stock.picking').call('check_group_lot').then(function(result){
+ return self.show_lot = result;
+ });
+ }).then(function(){
+ if (self.picking.pack_operation_exist === false){
+ self.picking.recompute_pack_op = false;
+ return new instance.web.Model('stock.picking').call('do_prepare_partial',[[self.picking.id]]);
+ }
+ }).then(function(){
+ return new instance.web.Model('stock.pack.operation').call('search',[[['picking_id','=',self.picking.id]]])
+ }).then(function(pack_op_ids){
+ return new instance.web.Model('stock.pack.operation').call('read',[pack_op_ids, [], new instance.web.CompoundContext()])
+ }).then(function(operations){
+ self.packoplines = operations;
+ var package_ids = [];
+
+ for(var i = 0; i < operations.length; i++){
+ if(!_.contains(package_ids,operations[i].result_package_id[0])){
+ if (operations[i].result_package_id[0]){
+ package_ids.push(operations[i].result_package_id[0]);
+ }
+ }
+ }
+ return new instance.web.Model('stock.quant.package').call('read',[package_ids, [], new instance.web.CompoundContext()])
+ }).then(function(packages){
+ self.packages = packages;
+ });
+ },
+ start: function(){
+ this._super();
+ var self = this;
+ instance.webclient.set_content_full_screen(true);
+ this.barcode_scanner.connect(function(ean){
+ self.scan(ean);
+ });
+
+ this.$('.js_pick_quit').click(function(){ self.quit(); });
+ this.$('.js_pick_prev').click(function(){ self.picking_prev(); });
+ this.$('.js_pick_next').click(function(){ self.picking_next(); });
+ this.$('.js_pick_menu').click(function(){ self.menu(); });
+ this.$('.js_reload_op').click(function(){ self.reload_pack_operation();});
+
+ this.hotkey_handler = function(event){
+ if(event.keyCode === 37 ){ // Left Arrow
+ self.picking_prev();
+ }else if(event.keyCode === 39){ // Right Arrow
+ self.picking_next();
+ }
+ };
+
+ $('body').on('keyup',this.hotkey_handler);
+
+ $.when(this.loaded).done(function(){
+ self.picking_editor = new module.PickingEditorWidget(self);
+ self.picking_editor.replace(self.$('.oe_placeholder_picking_editor'));
+
+ if( self.picking.id === self.pickings[0]){
+ self.$('.js_pick_prev').addClass('disabled');
+ }else{
+ self.$('.js_pick_prev').removeClass('disabled');
+ }
+
+ if( self.picking.id === self.pickings[self.pickings.length-1] ){
+ self.$('.js_pick_next').addClass('disabled');
+ }else{
+ self.$('.js_pick_next').removeClass('disabled');
+ }
+ if (self.picking.recompute_pack_op){
+ self.$('.oe_reload_op').removeClass('hidden');
+ }
+ else {
+ self.$('.oe_reload_op').addClass('hidden');
+ }
+ if (!self.show_pack){
+ self.$('.js_pick_pack').addClass('hidden');
+ }
+ if (!self.show_lot){
+ self.$('.js_create_lot').addClass('hidden');
+ }
+
+ }).fail(function(error) {console.log(error);});
+
+ },
+ on_searchbox: function(query){
+ var self = this;
+ self.picking_editor.on_searchbox(query.toUpperCase());
+ },
+ // reloads the data from the provided picking and refresh the ui.
+ // (if no picking_id is provided, gets the first picking in the db)
+ refresh_ui: function(picking_id){
+ var self = this;
+ var remove_search_filter = "";
+ if (self.picking.id === picking_id){
+ remove_search_filter = self.$('.oe_searchbox').val();
+ }
+ return this.load(picking_id)
+ .then(function(){
+ self.picking_editor.remove_blink();
+ self.picking_editor.renderElement();
+ if (!self.show_pack){
+ self.$('.js_pick_pack').addClass('hidden');
+ }
+ if (!self.show_lot){
+ self.$('.js_create_lot').addClass('hidden');
+ }
+ if (self.picking.recompute_pack_op){
+ self.$('.oe_reload_op').removeClass('hidden');
+ }
+ else {
+ self.$('.oe_reload_op').addClass('hidden');
+ }
+
+ if( self.picking.id === self.pickings[0]){
+ self.$('.js_pick_prev').addClass('disabled');
+ }else{
+ self.$('.js_pick_prev').removeClass('disabled');
+ }
+
+ if( self.picking.id === self.pickings[self.pickings.length-1] ){
+ self.$('.js_pick_next').addClass('disabled');
+ }else{
+ self.$('.js_pick_next').removeClass('disabled');
+ }
+ if (remove_search_filter === ""){
+ self.$('.oe_searchbox').val('');
+ self.on_searchbox('');
+ }
+ else{
+ self.$('.oe_searchbox').val(remove_search_filter);
+ self.on_searchbox(remove_search_filter);
+ }
+ });
+ },
+ get_header: function(){
+ if(this.picking){
+ return this.picking.name;
+ }else{
+ return '';
+ }
+ },
+ menu: function(){
+ $.bbq.pushState('#action=stock.menu');
+ $(window).trigger('hashchange');
+ },
+ scan: function(ean){ //scans a barcode, sends it to the server, then reload the ui
+ var self = this;
+ var product_visible_ids = this.picking_editor.get_visible_ids();
+ new instance.web.Model('stock.picking')
+ .call('process_barcode_from_ui', [self.picking.id, ean, product_visible_ids])
+ .then(function(result){
+ if (result.filter_loc !== false){
+ //check if we have receive a location as answer
+ if (result.filter_loc !== undefined){
+ var modal_loc_hidden = self.$('#js_LocationChooseModal').attr('aria-hidden');
+ if (modal_loc_hidden === "false"){
+ var line = self.$('#js_LocationChooseModal .js_loc_option[data-loc-id='+result.filter_loc_id+']').attr('selected','selected');
+ }
+ else{
+ self.$('.oe_searchbox').val(result.filter_loc);
+ self.on_searchbox(result.filter_loc);
+ }
+ }
+ }
+ if (result.operation_id !== false){
+ self.refresh_ui(self.picking.id).then(function(){
+ return self.picking_editor.blink(result.operation_id);
+ });
+ }
+ });
+ },
+ scan_product_id: function(product_id,increment,op_id){ //performs the same operation as a scan, but with product id instead
+ var self = this;
+ new instance.web.Model('stock.picking')
+ .call('process_product_id_from_ui', [self.picking.id, product_id, op_id, increment])
+ .then(function(result){
+ return self.refresh_ui(self.picking.id);
+ });
+ },
+ pack: function(){
+ var self = this;
+ var pack_op_ids = self.picking_editor.get_current_op_selection(false);
+ if (pack_op_ids.length !== 0){
+ new instance.web.Model('stock.picking')
+ .call('action_pack',[[[self.picking.id]], pack_op_ids])
+ .then(function(){
+ instance.session.user_context.current_package_id = false;
+ return self.refresh_ui(self.picking.id);
+ });
+ }
+ },
+ drop_down: function(){
+ var self = this;
+ var pack_op_ids = self.picking_editor.get_current_op_selection(true);
+ if (pack_op_ids.length !== 0){
+ new instance.web.Model('stock.pack.operation')
+ .call('action_drop_down', [pack_op_ids])
+ .then(function(){
+ return self.refresh_ui(self.picking.id).then(function(){
+ if (self.picking_editor.check_done()){
+ return self.done();
+ }
+ });
+ });
+ }
+ },
+ done: function(){
+ var self = this;
+ new instance.web.Model('stock.picking')
+ .call('action_done_from_ui',[self.picking.id, {'default_picking_type_id': self.picking_type_id}])
+ .then(function(new_picking_ids){
+ if (new_picking_ids){
+ return self.refresh_ui(new_picking_ids[0]);
+ }
+ else {
+ return 0;
+ }
+ });
+ },
+ create_lot: function(op_id, lot_name){
+ var self = this;
+ new instance.web.Model('stock.pack.operation')
+ .call('create_and_assign_lot',[parseInt(op_id), lot_name])
+ .then(function(){
+ return self.refresh_ui(self.picking.id);
+ });
+ },
+ change_location: function(op_id, loc_id, is_src_dst){
+ var self = this;
+ var vals = {'location_dest_id': loc_id};
+ if (is_src_dst){
+ vals = {'location_id': loc_id};
+ }
+ new instance.web.Model('stock.pack.operation')
+ .call('write',[op_id, vals])
+ .then(function(){
+ return self.refresh_ui(self.picking.id);
+ });
+ },
+ print_package: function(package_id){
+ var self = this;
+ new instance.web.Model('stock.quant.package')
+ .call('action_print',[[package_id]])
+ .then(function(action){
+ return self.do_action(action);
+ });
+ },
+ print_picking: function(){
+ var self = this;
+ new instance.web.Model('stock.picking.type').call('read', [[self.picking_type_id], ['code'], new instance.web.CompoundContext()])
+ .then(function(pick_type){
+ new instance.web.Model('stock.picking').call('do_print_picking',[[self.picking.id]])
+ .then(function(action){
+ return self.do_action(action);
+ });
+ });
+ },
+ picking_next: function(){
+ for(var i = 0; i < this.pickings.length; i++){
+ if(this.pickings[i] === this.picking.id){
+ if(i < this.pickings.length -1){
+ $.bbq.pushState('picking_id='+this.pickings[i+1]);
+ this.refresh_ui(this.pickings[i+1]);
+ return;
+ }
+ }
+ }
+ },
+ picking_prev: function(){
+ for(var i = 0; i < this.pickings.length; i++){
+ if(this.pickings[i] === this.picking.id){
+ if(i > 0){
+ $.bbq.pushState('picking_id='+this.pickings[i-1]);
+ this.refresh_ui(this.pickings[i-1]);
+ return;
+ }
+ }
+ }
+ },
+ delete_package_op: function(pack_id){
+ var self = this;
+ new instance.web.Model('stock.pack.operation').call('search', [[['result_package_id', '=', pack_id]]])
+ .then(function(op_ids) {
+ new instance.web.Model('stock.pack.operation').call('write', [op_ids, {'result_package_id':false}])
+ .then(function() {
+ return self.refresh_ui(self.picking.id);
+ });
+ });
+ },
+ set_operation_quantity: function(quantity, op_id){
+ var self = this;
+ if(quantity >= 0){
+ new instance.web.Model('stock.pack.operation')
+ .call('write',[[op_id],{'qty_done': quantity }])
+ .then(function(){
+ self.refresh_ui(self.picking.id);
+ });
+ }
+
+ },
+ reload_pack_operation: function(){
+ var self = this;
+ new instance.web.Model('stock.picking')
+ .call('do_prepare_partial',[[self.picking.id]])
+ .then(function(){
+ self.refresh_ui(self.picking.id);
+ });
+ },
+ quit: function(){
+ this.destroy();
+ return new instance.web.Model("ir.model.data").get_func("search_read")([['name', '=', 'action_picking_type_form']], ['res_id']).pipe(function(res) {
+ window.location = '/web#action=' + res[0]['res_id'];
+ });
+ },
+ destroy: function(){
+ this._super();
+ // this.disconnect_numpad();
+ this.barcode_scanner.disconnect();
+ $('body').off('keyup',this.hotkey_handler);
+ instance.webclient.set_content_full_screen(false);
+ },
+ });
+ openerp.web.client_actions.add('stock.ui', 'instance.stock.PickingMainWidget');
+
+ module.BarcodeScanner = instance.web.Class.extend({
+ connect: function(callback){
+ var code = "";
+ var timeStamp = 0;
+ var timeout = null;
+
+ this.handler = function(e){
+ if(e.which === 13){ //ignore returns
+ return;
+ }
+
+ if(timeStamp + 50 < new Date().getTime()){
+ code = "";
+ }
+
+ timeStamp = new Date().getTime();
+ clearTimeout(timeout);
+
+ code += String.fromCharCode(e.which);
+
+ timeout = setTimeout(function(){
+ if(code.length >= 3){
+ callback(code);
+ }
+ code = "";
+ },100);
+ };
+
+ $('body').on('keypress', this.handler);
+
+ },
+ disconnect: function(){
+ $('body').off('keypress', this.handler);
+ },
+ });
+
+}
+
+openerp.stock = function(openerp) {
+ openerp.stock = openerp.stock || {};
+ openerp_picking_widgets(openerp);
+}
diff --git a/addons/stock/static/src/xml/picking.xml b/addons/stock/static/src/xml/picking.xml
new file mode 100644
index 00000000000..8bc25b51d96
--- /dev/null
+++ b/addons/stock/static/src/xml/picking.xml
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
Choose a location
+
+
+
Scan a location or select it in the list below
+
+
+
+
+
+
+
+
+
+
+
+
+
Create Lot
+
+
+
Scan a lot or type it below (leave empty to generate one automatically)
- This is the list of all your packs. When you select a Pack, you
- can get the upstream or downstream traceability of the products
- contained in the pack.
-
@@ -428,9 +242,7 @@
stock.production.lot
-
-
-
+
@@ -440,7 +252,7 @@
- Serial Number
+ Serial Numbersir.actions.act_windowstock.production.lotform
@@ -452,9 +264,9 @@
Click to add a serial number.
This is the list of all the production lots you recorded. When
- you select a lot, you can get the upstream or downstream
+ you select a lot, you can get the
traceability of the products contained in lot. By default, the
- list is filtred on the serial numbers that are available in
+ list is filtered on the serial numbers that are available in
your warehouse but you can uncheck the 'Available' button to
get all the lots you produced, received or delivered to
customers.
@@ -471,14 +283,11 @@
Stock Movesstock.move
- move_history_ids
-
+
-
-
@@ -494,14 +303,11 @@
Stock Movesstock.move
- move_history_ids2
-
+
-
-
@@ -546,40 +352,43 @@
+
+ {'search_default_productgroup': 1}
+ [('location_id', 'child_of', active_ids)]
+ Quants
+ stock.quant
+
+
stock.location.formstock.location
- This is the structure of your company's warehouses and
- locations. You can click on a location to get the list of the
- products and their stock level in this particular location and
- all its children.
-
- The Incoming Shipments is the list of all orders you will
- receive from your suppliers. An incoming shipment contains a
- list of products to be received according to the original
- purchase order.
-
- You will find in this list all products you have to deliver to
- your customers. You can process the deliveries directly from
- this list using the buttons on the right of each line. You can
- filter the products to deliver by customer, products or sale
- order (using the Origin field).
-
- Click to create a new journal.
+ Click to create a new picking type.
- The stock journal system allows you to assign each stock
- operation to a specific journal according to the type of
- operation to perform or the worker/team that should perform the
- operation. Examples of stock journals may be: quality control,
- pick lists, packing, etc.
+ The picking type system allows you to assign each stock
+ operation a specific type which will alter its views accordingly.
+ On the picking type you could e.g. specify if packing is needed by default,
+ if it should show the customer.
You can define your minimum stock rules, so that OpenERP will automatically create draft manufacturing orders or request for quotations according to the stock level. Once the virtual stock of a product (= stock on hand minus all confirmed orders and reservations) is below the minimum quantity, OpenERP will generate a procurement request to increase the stock up to the maximum quantity.
Packages are usually created by pack operations made on transfers and can contains several different products. You can then reuse a package to move its whole content somewhere else, or to pack it into another bigger package. A package can also be unpacked, allowing the disposal of its former content as single units again.
+
You can define here the main routes that run through
+ your warehouses and that define the flows of your products. These
+ routes can be assigned to a product, a product category or be fixed
+ on procurement or sales order.
+
+
+
+
+
+
+ product.template.procurement.rule.inherit
+ product.product
+
+
+
+
+
+
+
+
+
+ Pickings for Groups
+ stock.picking
+ form
+ tree,form
+ [('group_id','=',active_id)]
+
+
+ procurement.group.form.herited
+ procurement.group
+
+
+
+
+
+
+
+
diff --git a/addons/stock/stock_workflow.xml b/addons/stock/stock_workflow.xml
deleted file mode 100644
index 243f53dae4d..00000000000
--- a/addons/stock/stock_workflow.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
- stock.picking.basic
- stock.picking
- True
-
-
-
- True
- draft
-
-
-
- confirmed
- function
- action_confirm()
-
-
-
- assigned
- function
- action_assign_wkf()
-
-
-
- move
- function
- action_move()
-
-
-
- done
- function
- action_done()
- True
-
-
-
-
- cancel
- True
- function
- action_cancel()
-
-
-
-
-
- button_confirm
-
-
-
-
- not test_assigned()
-
-
-
-
- test_assigned()
-
-
-
-
- test_done()
-
-
-
-
- auto_picking and test_auto_picking()
-
-
-
-
- button_done
-
-
-
-
- test_finished()
-
-
-
-
- not test_finished()
-
-
-
-
- allow_cancel()
- button_cancel
-
-
-
-
- allow_cancel()
- button_cancel
-
-
-
-
- button_cancel
-
-
-
-
-
- test_cancel()
-
-
-
-
- test_cancel()
-
-
-
-
diff --git a/addons/stock/test/inventory.yml b/addons/stock/test/inventory.yml
new file mode 100644
index 00000000000..a0b0f58512b
--- /dev/null
+++ b/addons/stock/test/inventory.yml
@@ -0,0 +1,91 @@
+-
+ In order to test the inventory, I create a new product
+-
+ !record {model: product.product, id: inventory_product}:
+ name: inventory prod
+ type: product
+-
+ I create an inventory for this product only
+-
+ !record {model: stock.inventory, id: inventory_test0}:
+ name: Test
+ product_id: inventory_product
+-
+ I confirm the inventory and check that my inventory has no line, as the product is a new one.
+-
+ !python {model: stock.inventory}: |
+ self.prepare_inventory(cr, uid, [ref('inventory_test0')], context=context)
+ inv = self.browse(cr, uid, ref('inventory_test0'), context=context)
+ assert len(inv.line_ids) == 0, "Wrong number of inventory lines."
+-
+ I add an inventory line and say i have 10 products in stock
+-
+ !record {model: stock.inventory.line, id: inventory_testline0}:
+ inventory_id: stock.inventory_test0
+ product_uom_id: product.product_uom_unit
+ product_id: inventory_product
+ product_qty: 10
+ location_id: stock.stock_location_14
+-
+ I Validate this inventory
+-
+ !python {model: stock.inventory}: |
+ self.action_done(cr, uid, [ref('inventory_test0')], context=context)
+-
+ I check that this inventory has a stock.move and a quant
+-
+ !python {model: stock.inventory}: |
+ inv = self.browse(cr, uid, ref('inventory_test0'), context=context)
+ assert len(inv.move_ids) >= 1, "No move created for the inventory."
+ assert len(inv.move_ids[0].quant_ids) >= 1, "No quant created for this inventory"
+-
+ I check that the quantity on hand is 10 on the location and its parent.
+-
+ !python {model: product.product}: |
+ context['location'] = ref('stock.stock_location_14')
+ product = self.browse(cr, uid, ref('inventory_product'), context=context)
+ assert product.qty_available == 10, 'Expecting 10 products, got %.2f on location stock_location_14!' % (product.qty_available,)
+ context['location'] = ref('stock.stock_location_stock')
+ product = self.browse(cr, uid, ref('inventory_product'), context=context)
+ assert product.qty_available == 10, 'Expecting 10 products, got %.2f on location stock_location_stock!' % (product.qty_available,)
+-
+ I check that the quantity on hand is 0 on a brother location
+-
+ !python {model: product.product}: |
+ context['location'] = ref('stock.stock_location_components')
+ product = self.browse(cr, uid, ref('inventory_product'), context=context)
+ assert product.qty_available == 0, 'Expecting 0 products, got %.2f on location stock_location_components!' % (product.qty_available,)
+-
+ I create another inventory
+-
+ !record {model: stock.inventory, id: inventory_test1}:
+ name: second test inventory
+ product_id: inventory_product
+-
+ I confirm the inventory and check that my inventory has one line, with a quantity of 10.
+-
+ !python {model: stock.inventory}: |
+ self.prepare_inventory(cr, uid, [ref('inventory_test1')], context=context)
+ inv = self.browse(cr, uid, ref('inventory_test1'), context=context)
+ assert inv.line_ids and len(inv.line_ids) == 1, "Wrong number of inventory lines."
+ assert inv.line_ids[0].product_qty == 10, "Wrong quantity in inventory line."
+ assert inv.line_ids[0].product_id.id == ref('inventory_product'), "Wrong product in inventory line."
+-
+ I modify the inventory line and set the quantity to 20 product on this new inventory
+-
+ !python {model: stock.inventory}: |
+ inv = self.browse(cr, uid, ref('inventory_test1'), context=context)
+ self.pool.get('stock.inventory.line').write(cr, uid, inv.line_ids[0].id, {'product_qty': 20})
+-
+ I Validate this inventory
+-
+ !python {model: stock.inventory}: |
+ self.action_done(cr, uid, [ref('inventory_test1')], context=context)
+-
+ I check that the quantity on hand is 20 on the location and it's parent.
+-
+ !python {model: product.product}: |
+ context['location'] = ref('stock.stock_location_14')
+ product = self.browse(cr, uid, ref('inventory_product'), context=context)
+ assert product.qty_available == 20, 'Expecting 20 products, got %.2f on location stock_location_14!' % (product.qty_available,)
+
diff --git a/addons/stock/test/move.yml b/addons/stock/test/move.yml
new file mode 100644
index 00000000000..f2fceb4a2b6
--- /dev/null
+++ b/addons/stock/test/move.yml
@@ -0,0 +1,114 @@
+-
+ I first create a new product
+-
+ !record {model: product.product, id: move_product}:
+ name: move prod
+ type: product
+-
+ In order to test the negative quants, I create a move of 5 products from stock to customer
+-
+ !record {model: stock.move, id: move_test0}:
+ name: Move Products
+ product_id: move_product
+ product_uom_qty: 5
+ product_uom: product.product_uom_unit
+ product_uos_qty: 5
+ product_uos: product.product_uom_unit
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+-
+ I confirm the move to be processed in the future
+-
+ !python {model: stock.move}: |
+ self.action_confirm(cr, uid, [ref('move_test0')], context=context)
+-
+ I check that the quantity on hand is 0 and virtual is -5
+-
+ !python {model: product.product}: |
+ context['location'] = False
+ product = self.browse(cr, uid, ref('move_product'), context=context)
+ assert product.qty_available == 0, 'Expecting 0 products in stock, got %.2f!' % (product.qty_available,)
+ assert product.virtual_available == -5.0, 'Expecting -5 products in virtual stock, got %.2f!' % (product.virtual_available,)
+-
+ I validate the move
+-
+ !python {model: stock.move}: |
+ self.action_done(cr, uid, [ref('move_test0')], context=context)
+-
+ I check that the quantity on hand is -5 and 5 products are at customer location
+-
+ !python {model: product.product}: |
+ context['location'] = False
+ product = self.browse(cr, uid, ref('move_product'), context=context)
+ assert product.qty_available == -5, 'Expecting -5 products in stock, got %.2f!' % (product.qty_available,)
+
+ context['location'] = ref('stock.stock_location_customers')
+ product = self.browse(cr, uid, ref('move_product'), context=context)
+ assert product.qty_available == 5, 'Expecting 5 products in customer location, got %.2f!' % (product.qty_available,)
+-
+ To compensate negative quants, I will receive 15 products from the supplier
+-
+ !record {model: stock.move, id: move_test2}:
+ name: Move 15 Products
+ product_id: move_product
+ product_uom_qty: 15
+ product_uom: product.product_uom_unit
+ product_uos_qty: 15
+ product_uos: product.product_uom_unit
+ location_id: stock.stock_location_suppliers
+ location_dest_id: stock.stock_location_stock
+-
+ I confirm and validate the move
+-
+ !python {model: stock.move}: |
+ self.action_confirm(cr, uid, [ref('move_test2')], context=context)
+ self.action_done(cr, uid, [ref('move_test2')], context=context)
+-
+ I check that the quantity on hand is 10
+-
+ !python {model: product.product}: |
+ context['location'] = False
+ product = self.browse(cr, uid, ref('move_product'), context=context)
+ assert product.qty_available == 10, 'Expecting 10 products in stock, got %.2f!' % (product.qty_available,)
+ assert product.virtual_available == 10.0, 'Expecting 10 products in virtual stock, got %.2f!' % (product.virtual_available,)
+-
+ I create a move of 2 products from stock to customer
+-
+ !record {model: stock.move, id: move_test1}:
+ name: Move Products
+ product_id: move_product
+ product_uom_qty: 2
+ product_uom: product.product_uom_unit
+ product_uos_qty: 2
+ product_uos: product.product_uom_unit
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+-
+ I confirm the move to be processed in the future
+-
+ !python {model: stock.move}: |
+ self.action_confirm(cr, uid, [ref('move_test1')], context=context)
+-
+ I check that the quantity on hand is 10 and virtual is 8
+-
+ !python {model: product.product}: |
+ context['location'] = False
+ product = self.browse(cr, uid, ref('move_product'), context=context)
+ assert product.qty_available == 10, 'Expecting 10 products in stock, got %.2f!' % (product.qty_available,)
+ assert product.virtual_available == 8.0, 'Expecting 8 products in virtual stock, got %.2f!' % (product.virtual_available,)
+-
+ I validate the move
+-
+ !python {model: stock.move}: |
+ self.action_done(cr, uid, [ref('move_test1')], context=context)
+-
+ I check that the quantity on hand is 8 and 7 products are at customer location
+-
+ !python {model: product.product}: |
+ context['location'] = False
+ product = self.browse(cr, uid, ref('move_product'), context=context)
+ assert product.qty_available == 8, 'Expecting 10 products in stock, got %.2f!' % (product.qty_available,)
+
+ context['location'] = ref('stock.stock_location_customers')
+ product = self.browse(cr, uid, ref('move_product'), context=context)
+ assert product.qty_available == 7, 'Expecting 7 products in customer location, got %.2f!' % (product.qty_available,)
diff --git a/addons/stock/test/opening_stock.yml b/addons/stock/test/opening_stock.yml
deleted file mode 100644
index 9efcfd3af99..00000000000
--- a/addons/stock/test/opening_stock.yml
+++ /dev/null
@@ -1,161 +0,0 @@
--
- Only stock manager can change the price and update stock of products, so let's check data with giving the access rights of manager
--
- !context
- uid: 'res_users_stock_manager'
--
- I update the price of the 15” LCD Monitor.
--
- !python {model: stock.change.standard.price}: |
- context.update({'active_model':'product.product', 'active_id': ref('product_product_6'), 'active_ids':[ref('product_product_6')]})
--
- !record {model: stock.change.standard.price, id: change_price}:
- new_price: 1500
--
- !python {model: stock.change.standard.price}: |
- self.change_price(cr, uid, [ref('change_price')], context=context)
--
- I check price of 15” LCD Monitor after update price.
--
- !python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_6'), context=context)
- assert product.standard_price == 1500, "Price is not updated."
--
- I update the current stock of the 15” LCD Monitor with 10 unit in stock location shop1 in lot0.
--
- !record {model: stock.change.product.qty, id: change_qty}:
- location_id: location_monitor_small
- new_quantity: 10
- product_id: product_product_6
- prodlot_id: lot_monitor_1
--
- !python {model: stock.change.product.qty}: |
- self.change_product_qty(cr, uid, [ref('change_qty')], context=context)
--
- I check available stock of 15” LCD Monitor after update stock.
--
- !python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_6'), context=context)
- assert product.qty_available == 10, "Stock is not updated."
--
- Stock user can merge inventory, so let's check data with giving the access rights of user.
--
- !context
- uid: 'res_users_stock_user'
--
- I merge inventory.
--
- !python {model: stock.inventory.merge }: |
- context.update({'active_model': 'stock.inventory', 'active_id': ref('stock_inventory_0'), 'active_ids': [ref('stock_inventory_0')]})
--
- !record {model: stock.inventory.merge, id: merge_inventory}:
--
- !python {model: stock.inventory.merge }: |
- self.do_merge(cr, uid, [ref('merge_inventory')], context=context)
--
- Only stock manager cancelled inventory, so let's check data with giving the access rights of manager
--
- !context
- uid: 'res_users_stock_manager'
--
- I cancel inventory.
--
- !python {model: stock.inventory}: |
- self.action_cancel_inventory(cr, uid, [ref('stock_inventory_0')])
--
- stock user can reset inventory, so let's check data with giving the access rights of user
--
- !context
- uid: 'res_users_stock_user'
--
- I reset to draft inventory.
--
- !python {model: stock.inventory}: |
- self.action_cancel_draft(cr, uid, [ref('stock_inventory_0')])
--
- I confirm physical inventory of 15” LCD Monitor which are came in different lots.
--
- !python {model: stock.inventory}: |
- self.action_confirm(cr, uid, [ref('stock_inventory_0')], context=context)
--
- I check move details after confirmed physical inventory.
--
- !python {model: stock.inventory}: |
- inventory = self.browse(cr, uid, ref('stock_inventory_0'), context=context)
- assert len(inventory.move_ids) == len(inventory.inventory_line_id), "moves are not correspond."
- for move_line in inventory.move_ids:
- for line in inventory.inventory_line_id:
- if move_line.product_id.id == line.product_id.id and move_line.prodlot_id.id == line.prod_lot_id.id:
- location_id = line.product_id.property_stock_inventory.id
- assert move_line.product_qty == line.product_qty, "Qty is not correspond."
- assert move_line.product_uom.id == line.product_uom.id, "UOM is not correspond."
- assert move_line.date == inventory.date, "Date is not correspond."
- assert move_line.location_id.id == location_id, "Source location is not correspond."
- assert move_line.location_dest_id.id == line.location_id.id, "Destination location is not correspond."
- assert move_line.state == 'confirmed', "Move is not confirmed."
--
- I split inventory line.
--
- !python {model: stock.inventory.line.split}: |
- context.update({'active_model': 'stock.inventory.line', 'active_id': ref('stock_inventory_line_3'), 'active_ids': [ref('stock_inventory_line_3')]})
--
- !record {model: stock.inventory.line.split, id: split_inventory_lot0}:
- use_exist: True
- line_exist_ids:
- - quantity: 6
- prodlot_id: lot_monitor_0
- - quantity: 4
- prodlot_id: lot_monitor_0
--
- !python {model: stock.inventory.line.split }: |
- self.split_lot(cr, uid, [ref('split_inventory_lot0')], context=context)
--
- I fill inventory line.
--
- !python {model: stock.fill.inventory}: |
- context.update({'active_model': 'stock.inventory', 'active_id': ref('stock_inventory_0'), 'active_ids': [ref('stock_inventory_0')]})
--
- !record {model: stock.fill.inventory, id: fill_inventory}:
- location_id: location_monitor
- recursive: True
--
- !python {model: stock.fill.inventory }: |
- self.fill_inventory(cr, uid, [ref('fill_inventory')], context=context)
-
--
- Now I check vitual stock of 15” LCD Monitor after confirmed physical inventory.
--
- !python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_6'), context=context)
- assert product.virtual_available == 100, "Vitual stock is not updated."
--
- Only stock manager can close physical inventory, so let's check data with giving the access rights of manager
--
- !context
- uid: 'res_users_stock_manager'
--
- I close physical inventory of 15” LCD Monitor.
--
- !python {model: stock.inventory}: |
- self.action_done(cr, uid, [ref('stock_inventory_0')], context=context)
--
- Stock user can check closed move and real stock, so let's check data with giving the access rights of user
--
- !context
- uid: 'res_users_stock_user'
--
- I check closed move and real stock of 15” LCD Monitor after closed physical inventory.
--
- !python {model: stock.inventory}: |
- inventory = self.browse(cr, uid, ref('stock_inventory_0'), context=context)
- assert inventory.state == 'done', "inventory is not closed."
- for move_line in inventory.move_ids:
- assert move_line.state == 'done', "Move is not closed."
- product = self.pool.get('product.product').browse(cr, uid, ref('product_product_6'), context=context)
- product.qty_available == 100, "Real stock is not updated."
--
- I check stock in lot.
--
- !python {model: stock.production.lot}: |
- lot = self.browse(cr, uid, ref('lot_monitor_0'), context=context)
- assert lot.stock_available == 50, "Stock in lot is not correspond."
diff --git a/addons/stock/test/packing.yml b/addons/stock/test/packing.yml
new file mode 100644
index 00000000000..70e844ca4eb
--- /dev/null
+++ b/addons/stock/test/packing.yml
@@ -0,0 +1,159 @@
+-
+ Create a new stockable product
+-
+ !record {model: product.product, id: product1}:
+ name: Nice product
+ type: product
+ categ_id: product.product_category_1
+ list_price: 100.0
+ standard_price: 70.0
+ seller_ids:
+ - delay: 1
+ name: base.res_partner_2
+ min_qty: 2.0
+ qty: 5.0
+ uom_id: product.product_uom_unit
+ uom_po_id: product.product_uom_unit
+-
+ Create an incoming picking for this product of 300 PCE from suppliers to stock
+-
+ !record {model: stock.picking, id: pick1}:
+ name: Incoming picking
+ partner_id: base.res_partner_2
+ picking_type_id: picking_type_in
+ move_lines:
+ - product_id: product1
+ product_uom_qty: 300.00
+ location_id: stock_location_suppliers
+ location_dest_id: stock_location_stock
+-
+ Confirm and assign picking and prepare partial
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref('pick1')], context=context)
+ self.do_prepare_partial(cr, uid, [ref('pick1')], context=context)
+-
+ Put 120 pieces on Pallet 1 (package), 120 pieces on Pallet 2 with lot A and 60 pieces on Pallet 3
+-
+ !python {model: stock.picking}: |
+ #Change quantity of first to 120 and create 2 others quant operations
+ record = self.browse(cr, uid, ref('pick1'), context=context)
+ stock_pack = self.pool.get('stock.pack.operation')
+ stock_quant_pack = self.pool.get('stock.quant.package')
+ #create lot A
+ lot_a = self.pool.get('stock.production.lot').create(cr, uid, {'name': 'Lot A', 'product_id': ref('product1')}, context=context)
+ #create package
+ package1 = stock_quant_pack.create(cr, uid, {'name': 'Pallet 1'}, context=context)
+ package2 = stock_quant_pack.create(cr, uid, {'name': 'Pallet 2'}, context=context)
+ package3 = stock_quant_pack.create(cr, uid, {'name': 'Pallet 3'}, context=context)
+ #Create package for each line and assign it as result_package_id
+ #create pack operation
+ stock_pack.write(cr, uid, record.pack_operation_ids[0].id, {'result_package_id': package1, 'product_qty': 120})
+ new_pack1 = stock_pack.create(cr, uid, {'product_id': ref('product1'), 'product_uom_id': ref('product.product_uom_unit'), 'picking_id': ref('pick1'), 'lot_id': lot_a, 'result_package_id': package2, 'product_qty': 120, 'location_id': ref('stock_location_suppliers'), 'location_dest_id': ref('stock_location_stock')}, context=context)
+ new_pack2 = stock_pack.create(cr, uid, {'product_id': ref('product1'), 'product_uom_id': ref('product.product_uom_unit'), 'picking_id': ref('pick1'), 'result_package_id': package3, 'product_qty': 60, 'location_id': ref('stock_location_suppliers'), 'location_dest_id': ref('stock_location_stock')}, context=context)
+-
+ Transfer the reception
+-
+ !python {model: stock.picking}: |
+ self.do_transfer(cr, uid, [ref('pick1')], context=context)
+-
+ Check the system created 3 quants one with 120 pieces on pallet 1, one with 120 pieces on pallet 2 with lot A and 60 pieces on pallet 3
+-
+ !python {model: stock.quant}: |
+ reco_id = self.search(cr ,uid , [('product_id','=',ref('product1'))], context=context)
+ assert len(reco_id) == 3, "The number of quants created is not correct"
+ for rec in self.browse(cr, uid, reco_id, context=context):
+ if rec.package_id.name == 'Pallet 1':
+ assert rec.qty == 120, "Should have 120 pieces on pallet 1"
+ elif rec.package_id.name == 'Pallet 2':
+ assert rec.qty == 120, "Should have 120 pieces on pallet 2"
+ elif rec.package_id.name == 'Pallet 3':
+ assert rec.qty == 60, "Should have 60 pieces on pallet 3"
+-
+ Check there is no backorder or extra moves created
+-
+ !python {model: stock.picking}: |
+ picking = self.browse(cr, uid, ref('pick1'), context=context)
+ backorder = self.search(cr, uid, [('backorder_id', '=', ref('pick1'))])
+ assert not backorder, ""
+ #Check extra moves created
+ assert len(picking.move_lines) == 1, ""
+-
+ Make a delivery order of 300 pieces to the customer
+-
+ !record {model: stock.picking, id: delivery_order1}:
+ name: outgoing picking
+ partner_id: base.res_partner_4
+ picking_type_id: stock.picking_type_out
+ move_lines:
+ - product_id: product1
+ product_uom_qty: 300.00
+ location_id: stock_location_stock
+ location_dest_id: stock_location_customers
+-
+ Assign and confirm
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref('delivery_order1')], context=context)
+ self.action_assign(cr, uid, [ref('delivery_order1')])
+-
+ Instead of doing the 300 pieces, you decide to take pallet 1 (do not mention product in operation here) and 20 pieces from lot A and 10 pieces from pallet 3
+-
+ !python {model: stock.picking}: |
+ stock_pack = self.pool.get('stock.pack.operation')
+ self.do_prepare_partial(cr, uid, [ref('delivery_order1')], context=context)
+ delivery_id = self.browse(cr, uid, ref('delivery_order1'), context=context)
+ for rec in delivery_id.pack_operation_ids:
+ if rec.package_id.name == 'Pallet 2':
+ lot_ids = self.pool.get("stock.production.lot").search(cr, uid, [('product_id', '=', ref('product1')), ('name','=','Lot A')])
+ stock_pack.write(cr, uid, [rec.id], {'product_id': ref('product1'), 'product_qty': 20, 'lot_id': lot_ids[0], 'product_uom_id': ref('product.product_uom_unit')}, context=context)
+ if rec.package_id.name == 'Pallet 3':
+ stock_pack.write(cr, uid, [rec.id], {'product_id': ref('product1'),'product_qty': 10, 'product_uom_id': ref('product.product_uom_unit')}, context=context)
+-
+ Process this picking
+-
+ !python {model: stock.picking}: |
+ self.do_transfer(cr, uid, [ref('delivery_order1')], context=context)
+-
+ Check the quants that you have 120 pieces pallet 1 in customers, 100 pieces pallet 2 in stock and 20 with customers and 50 in stock, 10 in customers from pallet 3
+-
+ !python {model: stock.quant}: |
+ reco_id = self.search(cr ,uid , [('product_id','=',ref('product1'))], context=context)
+ for rec in self.browse(cr, uid, reco_id, context=context):
+ if rec.package_id.name == 'Pallet 1' and rec.location_id.id == ref('stock_location_customers'):
+ assert rec.qty == 120, "Should have 120 pieces on pallet 1"
+ elif rec.package_id.name == 'Pallet 2' and rec.location_id.id == ref('stock_location_stock'):
+ assert rec.qty == 100, "Should have 100 pieces in stock on pallet 2"
+ elif rec.lot_id.name == 'Lot A' and rec.location_id.id == ref('stock_location_customers'):
+ assert (rec.qty == 20 and not rec.package_id), "Should have 20 pieces in customer location from pallet 2"
+ elif rec.package_id.name == 'Pallet 3' and rec.location_id.id == ref('stock_location_stock'):
+ assert rec.qty == 50, "Should have 50 pieces in stock on pallet 3"
+ elif not rec.package_id and not rec.lot_id and rec.location_id.id == ref('stock_location_customers'):
+ assert rec.qty == 10, "Should have 10 pieces in customer location from pallet 3"
+ else:
+ assert False, "Unrecognized quant"
+-
+ Check a backorder was created and on that backorder, prepare partial and process backorder
+-
+ !python {model: stock.picking}: |
+ backorder_ids = self.search(cr, uid, [('backorder_id', '=', ref('delivery_order1'))], context=context)
+ assert backorder_ids, "Backorder should have been created"
+ self.do_prepare_partial(cr, uid, backorder_ids, context=context)
+ picking = self.browse(cr, uid, backorder_ids[0])
+ assert len(picking.pack_operation_ids) == 2, "Wrong number of pack operation"
+ for pack_op in picking.pack_operation_ids:
+ assert pack_op.product_qty == 1, "Wrong quantity in pack operation (%s found instead of 1)" % (pack_op.product_qty)
+ assert pack_op.package_id.name in ('Pallet 2', 'Pallet 3'), "Wrong pallet info in pack operation (%s found)" % (pack_op.package_id.name)
+ self.action_assign(cr, uid, backorder_ids, context=context)
+ self.do_transfer(cr, uid, backorder_ids, context=context)
+-
+ Check there are still 0 pieces in stock
+-
+ !python {model: stock.quant}: |
+ reco_id = self.search(cr ,uid , [('product_id','=',ref('product1')), ('location_id', '=', ref('stock_location_stock'))], context=context)
+ total_qty = 0
+ for rec in self.browse(cr, uid, reco_id, context=context):
+ total_qty += rec.qty
+ product = self.pool.get("product.product").browse(cr, uid, ref('product1'))
+ assert total_qty == 0, "Total quantity in stock should be 0 as the backorder took everything out of stock"
+ assert product.qty_available == 0, "Quantity available should be 0 too"
diff --git a/addons/stock/test/packingneg.yml b/addons/stock/test/packingneg.yml
new file mode 100644
index 00000000000..a42c9bb12e3
--- /dev/null
+++ b/addons/stock/test/packingneg.yml
@@ -0,0 +1,151 @@
+-
+ Create a new "negative" stockable product
+-
+ !record {model: product.product, id: product_neg}:
+ name: Negative product
+ type: product
+ categ_id: product.product_category_1
+ list_price: 100.0
+ standard_price: 70.0
+ seller_ids:
+ - delay: 1
+ name: base.res_partner_2
+ min_qty: 2.0
+ qty: 5.0
+ uom_id: product.product_uom_unit
+ uom_po_id: product.product_uom_unit
+-
+ Create an incoming picking for this product of 300 PCE from suppliers to stock
+-
+ !record {model: stock.picking, id: pick_neg}:
+ name: Incoming picking
+ partner_id: base.res_partner_2
+ picking_type_id: picking_type_in
+ move_lines:
+ - product_id: product_neg
+ product_uom_qty: 300.00
+ location_id: stock_location_suppliers
+ location_dest_id: stock_location_stock
+-
+ Confirm and assign picking and prepare partial
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref('pick_neg')], context=context)
+ self.do_prepare_partial(cr, uid, [ref('pick_neg')], context=context)
+-
+ Put 120 pieces on Palneg 1 (package), 120 pieces on Palneg 2 with lot A and 60 pieces on Palneg 3
+-
+ !python {model: stock.picking}: |
+ #Change quantity of first to 120 and create 2 others quant operations
+ record = self.browse(cr, uid, ref('pick_neg'), context=context)
+ stock_pack = self.pool.get('stock.pack.operation')
+ stock_quant_pack = self.pool.get('stock.quant.package')
+ #create lot A
+ lot_a = self.pool.get('stock.production.lot').create(cr, uid, {'name': 'Lot neg', 'product_id': ref('product_neg')}, context=context)
+ #create package
+ package1 = stock_quant_pack.create(cr, uid, {'name': 'Palneg 1'}, context=context)
+ package2 = stock_quant_pack.create(cr, uid, {'name': 'Palneg 2'}, context=context)
+ package3 = stock_quant_pack.create(cr, uid, {'name': 'Palneg 3'}, context=context)
+ #Create package for each line and assign it as result_package_id
+ #create pack operation
+ stock_pack.write(cr, uid, record.pack_operation_ids[0].id, {'result_package_id': package1, 'product_qty': 120})
+ new_pack1 = stock_pack.create(cr, uid, {'product_id': ref('product_neg'), 'product_uom_id': ref('product.product_uom_unit'), 'picking_id': ref('pick_neg'), 'lot_id': lot_a, 'result_package_id': package2, 'product_qty': 120, 'location_id': ref('stock_location_suppliers'), 'location_dest_id': ref('stock_location_stock')}, context=context)
+ new_pack2 = stock_pack.create(cr, uid, {'product_id': ref('product_neg'), 'product_uom_id': ref('product.product_uom_unit'), 'picking_id': ref('pick_neg'), 'result_package_id': package3, 'product_qty': 60, 'location_id': ref('stock_location_suppliers'), 'location_dest_id': ref('stock_location_stock')}, context=context)
+-
+ Transfer the reception
+-
+ !python {model: stock.picking}: |
+ self.do_transfer(cr, uid, [ref('pick_neg')], context=context)
+-
+ Make a delivery order of 300 pieces to the customer
+-
+ !record {model: stock.picking, id: delivery_order_neg}:
+ name: outgoing picking
+ partner_id: base.res_partner_4
+ picking_type_id: stock.picking_type_out
+ move_lines:
+ - product_id: product_neg
+ product_uom_qty: 300.00
+ location_id: stock_location_stock
+ location_dest_id: stock_location_customers
+-
+ Assign and confirm
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref('delivery_order_neg')], context=context)
+ self.action_assign(cr, uid, [ref('delivery_order_neg')])
+-
+ Instead of doing the 300 pieces, you decide to take pallet 1 (do not mention product in operation here) and 140 pieces from lot A/pallet 2 and 10 pieces from pallet 3
+-
+ !python {model: stock.picking}: |
+ stock_pack = self.pool.get('stock.pack.operation')
+ self.do_prepare_partial(cr, uid, [ref('delivery_order_neg')], context=context)
+ delivery_id = self.browse(cr, uid, ref('delivery_order_neg'), context=context)
+ for rec in delivery_id.pack_operation_ids:
+ if rec.package_id.name == 'Palneg 2':
+ lot_ids = self.pool.get("stock.production.lot").search(cr, uid, [('product_id', '=', ref('product_neg')), ('name','=','Lot neg')])
+ stock_pack.write(cr, uid, [rec.id], {'product_id': ref('product_neg'), 'product_qty': 140, 'lot_id': lot_ids[0], 'product_uom_id': ref('product.product_uom_unit')}, context=context)
+ if rec.package_id.name == 'Palneg 3':
+ stock_pack.write(cr, uid, [rec.id], {'product_id': ref('product_neg'),'product_qty': 10, 'product_uom_id': ref('product.product_uom_unit')}, context=context)
+-
+ Process this picking
+-
+ !python {model: stock.picking}: |
+ self.do_transfer(cr, uid, [ref('delivery_order_neg')], context=context)
+-
+ Check the quants that you have 120 pieces pallet 1 in customers, -20 pieces pallet 2 in stock, 120 + 20 pieces 2 in customer with lot, and a total quantity of 50 in stock from pallet 3 (should be 20+30, as it has been split by reservation), finally 10 in customers from pallet 3
+-
+ !python {model: stock.quant}: |
+ reco_id = self.search(cr ,uid , [('product_id','=',ref('product_neg'))], context=context)
+ pallet_3_stock_qty = 0
+ for rec in self.browse(cr, uid, reco_id, context=context):
+ if rec.package_id.name == 'Palneg 1' and rec.location_id.id == ref('stock_location_customers'):
+ assert rec.qty == 120, "Should have 120 pieces on pallet 1"
+ elif rec.package_id.name == 'Palneg 2' and rec.location_id.id == ref('stock_location_stock'):
+ assert rec.qty == -20, "Should have -20 pieces in stock on pallet 2. Got " + str(rec.qty)
+ assert rec.lot_id.name == 'Lot neg', "It should have kept its Lot"
+ elif rec.lot_id.name == 'Lot neg' and rec.location_id.id == ref('stock_location_customers'):
+ assert ((rec.qty == 20 or rec.qty == 120) and not rec.package_id), "Should have 140 pieces (120+20) in customer location from pallet 2 and lot A"
+ elif rec.package_id.name == 'Palneg 3' and rec.location_id.id == ref('stock_location_stock'):
+ pallet_3_stock_qty += rec.qty
+ elif not rec.package_id and not rec.lot_id and rec.location_id.id == ref('stock_location_customers'):
+ assert rec.qty == 10, "Should have 10 pieces in customer location from pallet 3"
+ else:
+ assert False, "Unrecognized quant"
+ assert pallet_3_stock_qty == 50, "Should have 50 pieces in stock on pallet 3"
+-
+ Create a picking for reconciling the negative quant
+-
+ !record {model: stock.picking, id: delivery_reconcile}:
+ name: reconciling_delivery
+ partner_id: base.res_partner_4
+ picking_type_id: stock.picking_type_in
+ move_lines:
+ - product_id: product_neg
+ product_uom_qty: 20.0
+ location_id: stock_location_suppliers
+ location_dest_id: stock_location_stock
+-
+ Receive 20 products with lot neg in stock with a new incoming shipment that should be on pallet 2
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref("delivery_reconcile")])
+ self.action_confirm(cr, uid, [ref("delivery_reconcile")])
+ self.do_prepare_partial(cr, uid, [ref("delivery_reconcile")])
+ pick = self.browse(cr, uid, ref("delivery_reconcile"))
+ ops_obj = self.pool.get("stock.pack.operation")
+ pack_obj = self.pool.get("stock.quant.package")
+ lot_ids = self.pool.get("stock.production.lot").search(cr, uid, [('product_id', '=', ref('product_neg')), ('name','=','Lot neg')])
+ pack_ids = pack_obj.search(cr, uid, [('name', '=', 'Palneg 2')])
+ ops_obj.write(cr, uid, [pick.pack_operation_ids[0].id], {'lot_id': lot_ids[0], 'result_package_id': pack_ids[0]})
+ self.do_transfer(cr, uid, [ref("delivery_reconcile")])
+-
+ Check the negative quant was reconciled and the 20 pieces of lot neg at customers have the incoming shipments in the history_ids
+-
+ !python {model: stock.quant}: |
+ neg_quants = self.search(cr, uid, [('product_id','=', ref('product_neg')), ('qty', '<', 0)])
+ assert len(neg_quants) == 0, "Negative quants should have been reconciled"
+ pick = self.pool.get('stock.picking').browse(cr, uid, ref('delivery_reconcile'))
+ customer_quant = self.search(cr, uid, [('product_id', '=', ref('product_neg')), ('location_id', '=', ref('stock_location_customers')), ('lot_id.name','=', 'Lot neg'), ('qty','=', 20)])
+ assert pick.move_lines[0].id in [x.id for x in self.browse(cr, uid, customer_quant[0]).history_ids]
+
diff --git a/addons/stock/test/procrule.yml b/addons/stock/test/procrule.yml
new file mode 100644
index 00000000000..891299e4ba5
--- /dev/null
+++ b/addons/stock/test/procrule.yml
@@ -0,0 +1,40 @@
+-
+ Create new global procurement rule from Stock -> Output
+-
+ !record {model: procurement.rule, id: global_proc_rule}:
+ name: Stock -> output
+ action: move
+ picking_type_id: stock.picking_type_internal
+ location_src_id: stock.stock_location_stock
+ location_id: stock.stock_location_output
+-
+ Create Delivery Order from Output -> Customer
+-
+ !record {model: stock.picking, id: pick_output}:
+ name: Delivery order for procurement
+ partner_id: base.res_partner_2
+ picking_type_id: stock.picking_type_out
+ move_lines:
+ - product_id: product.product_product_3
+ product_uom_qty: 10.00
+ location_id: stock.stock_location_output
+ location_dest_id: stock.stock_location_customers
+ procure_method: make_to_order
+-
+ Confirm delivery order.
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref('pick_output')])
+-
+ I run the scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ Check a picking was created from stock to output.
+-
+ !python {model: stock.move }: |
+ picking = self.pool.get("stock.picking").browse(cr, uid, ref("pick_output"))
+ move_id = self.search(cr, uid, [('product_id', '=', ref('product.product_product_3')),('location_id', '=', ref('stock.stock_location_stock')),
+ ('location_dest_id', '=', ref('stock.stock_location_output')), ('move_dest_id', '=', picking.move_lines[0].id)])
+ assert len(move_id) == 1, "It should have created a picking from Stock to Output with the original picking as destination"
diff --git a/addons/stock/test/shipment.yml b/addons/stock/test/shipment.yml
index 0a4f8cd9842..4e640f3aa64 100644
--- a/addons/stock/test/shipment.yml
+++ b/addons/stock/test/shipment.yml
@@ -1,292 +1,63 @@
-
- Stock manager can only test whole process related to Shipment, so let's check data with stock manager.
+ Stock manager can only test whole process related to Shipment, so we check data with stock manager.
-
!context
uid: 'res_users_stock_manager'
-
- I confirm outgoing shipment of 130 Unit 15” LCD Monitor.
--
- !workflow {model: stock.picking, action: button_confirm, ref: outgoing_shipment}
--
- I check shipment details after confirmation.
--
- !python {model: stock.picking}: |
- shipment = self.browse(cr, uid, ref("outgoing_shipment"))
- assert shipment.state == "confirmed", "Shipment should be confirmed."
- for move_line in shipment.move_lines:
- assert move_line.state == "confirmed", "Move should be confirmed."
-
--
- Now, I check virtual stock of 15” LCD Monitor after confirming outgoing shipment.
--
- !python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_6'), context=context)
- assert product.virtual_available == -30, "Virtual stock is not updated."
-
--
- I confirm incoming shipment of 50 Unit 15” LCD Monitor.
--
- !workflow {model: stock.picking, action: button_confirm, ref: incomming_shipment}
--
- I split incoming shipment into lots. each lot contain 10 Unit 15” LCD Monitor.
--
- !python {model: stock.picking}: |
- shipment = self.browse(cr, uid, ref("incomming_shipment"))
- move_ids = [x.id for x in shipment.move_lines]
- context.update({'active_model': 'stock.move', 'active_id': move_ids[0], 'active_ids': move_ids})
--
- !record {model: stock.move.split, id: split_lot_incoming}:
- line_ids:
- - name: incoming_lot0
- quantity: 10
- - name: incoming_lot1
- quantity: 10
- - name: incoming_lot2
- quantity: 10
- - name: incoming_lot3
- quantity: 10
--
- !python {model: stock.move.split }: |
- self.split_lot(cr, uid, [ref('split_lot_incoming')], context=context)
--
- I check move lines after splitting.
+ I confirm incomming move of 50 kgm Ice-cream
-
!python {model: stock.move}: |
- mm = self.browse(cr, uid, ref("incomming_shipment_monitor"))
- lot = self.pool.get('stock.move.split').browse(cr, uid, ref('split_lot_incoming'), context=context)
- lot_ids = self.pool.get('stock.production.lot').search(cr, uid, [('name','in',[x.name for x in lot.line_ids])])
- assert len(lot_ids) == 4, 'lots of incoming shipment are not correspond.'
- move_ids = self.search(cr, uid, [('location_dest_id','=',ref('location_monitor')),('prodlot_id','in',lot_ids)])
- assert len(move_ids) == 4, 'move lines are not correspond per production lot after splitting.'
- for move in self.browse(cr, uid, move_ids, context=context):
- assert move.prodlot_id.name in ['incoming_lot0', 'incoming_lot1', 'incoming_lot2', 'incoming_lot3'], "lot does not correspond."
- assert move.product_qty == 10, "qty does not correspond per production lot."
+ incomming_move = self.browse(cr, uid, ref("incomming_shipment_icecream"))
+ self.action_confirm(cr, uid, [incomming_move.id])
-
- I receive 40 units of 15” LCD Monitor.
+ I receive 40kgm Ice-cream so It will make backorder of incomming shipment for 10 kgm.
-
- !python {model: stock.partial.picking}: |
+ !python {model: stock.picking}: |
+ pick = self.browse(cr, uid, ref("incomming_shipment"), context=context)
+ self.pool.get('stock.pack.operation').create(cr, uid, {
+ 'picking_id': pick.id,
+ 'product_id': ref('product_icecream'),
+ 'product_uom_id': ref('product.product_uom_kgm'),
+ 'product_qty': 40,
+ 'location_id': ref('stock.stock_location_suppliers'),
+ 'location_dest_id': ref('stock.stock_location_14')
+ })
context.update({'active_model': 'stock.picking', 'active_id': ref('incomming_shipment'), 'active_ids': [ref('incomming_shipment')]})
+ pick.do_transfer(context=context)
-
- I make a partial picking and moves done.
--
- !python {model: stock.partial.picking}: |
- partial = []
- for move in self.pool.get('stock.picking').browse(cr, uid, ref("incomming_shipment")).move_lines:
- if move.prodlot_id:
- partial.append((0, 0, {
- 'quantity': move.product_qty,
- 'product_id': move.product_id.id,
- 'product_uom': move.product_uom.id,
- 'move_id': move.id,
- 'location_id': move.location_id.id,
- 'location_dest_id': move.location_dest_id.id,
- 'prodlot_id': move.prodlot_id.id,
- 'cost': move.product_id.standard_price
- }))
- partial_id = self.create(cr, uid, {'move_ids': partial}, context=context)
- self.do_partial(cr, uid, [partial_id], context=context)
--
- I check backorder shipment after receiving partial shipment.
+ I check backorder shipment after received partial shipment and check remaining shipment.
-
!python {model: stock.picking}: |
shipment = self.browse(cr, uid, ref("incomming_shipment"))
- backorder = shipment.backorder_id
- assert backorder, "Backorder should be created after partial shipment."
- assert backorder.state == 'done', "Backorder should be closed after received."
- qty = 0
+ for move_line in shipment.move_lines:
+ assert move_line.product_qty == 40, "Qty in shipment does not correspond."
+ assert move_line.state == 'done', "Move line of shipment should be closed."
+ backorder_id = self.search(cr, uid, [('backorder_id', '=', ref("incomming_shipment"))],context=context)
+ backorder = self.browse(cr, uid, backorder_id)[0]
for move_line in backorder.move_lines:
- assert move_line.state == 'done', "Move line of backorder should be closed."
- qty += move_line.product_qty
- assert qty == 40, "Qty in backorder does not correspond."
+ assert move_line.product_qty == 10, "Qty in backorder does not correspond."
+ assert (move_line.state == 'assigned' or move_line.state == 'waiting' or move_line.state == 'confirmed'), "Move line of backorder should be assigned, confirmed or waiting."
+ context.update({'active_model': 'stock.picking', 'active_id': backorder_id[0], 'active_ids': backorder_id})
-
- I receive another 10 units of 15” LCD Monitor.
--
- !record {model: stock.partial.picking, id: partial_incoming}:
- move_ids:
- - quantity: 10
- product_id: product_product_6
- product_uom: product.product_uom_unit
- move_id: incomming_shipment_monitor
- location_id: stock_location_3
- location_dest_id: location_monitor
--
- !python {model: stock.partial.picking }: |
- self.do_partial(cr, uid, [ref('partial_incoming')], context=context)
--
- I check incoming shipment after receiving it.
+ I receive the remaining 10kgm Ice-cream from the backorder.
-
!python {model: stock.picking}: |
- shipment = self.browse(cr, uid, ref("incomming_shipment"))
- assert shipment.state == 'done', "shipment should be closed after receiving."
+ backorder_id = self.search(cr, uid, [('backorder_id', '=', ref("incomming_shipment"))],context=context)
+ backorder = self.browse(cr, uid, backorder_id)[0]
+ self.pool.get('stock.pack.operation').create(cr, uid, {
+ 'picking_id': backorder.id,
+ 'product_id': ref('product_icecream'),
+ 'product_uom_id': ref('product.product_uom_kgm'),
+ 'product_qty': 10,
+ 'location_id': ref('stock.stock_location_suppliers'),
+ 'location_dest_id': ref('stock.stock_location_14')
+ })
+ backorder.do_transfer(context=context)
+-
+ I check incomming shipment after reception.
+-
+ !python {model: stock.picking}: |
+ shipment = self.browse(cr, uid, self.search(cr, uid, [('backorder_id', '=', ref("incomming_shipment"))]))[0]
+ assert shipment.state == 'done', "shipment should be close after received."
for move_line in shipment.move_lines:
- assert move_line.product_qty == 10, "Qty does not correspond."
- assert move_line.product_id.virtual_available == 20, "Virtual stock does not correspond."
assert move_line.state == 'done', "Move line should be closed."
--
- I return last incoming shipment for 10 Unit 15” LCD Monitor.
--
- !record {model: stock.return.picking, id: return_incoming}:
- invoice_state: none
--
- !python {model: stock.return.picking }: |
- # this work without giving the id of the picking to return, magically, thanks to the context
- self.create_returns(cr, uid, [ref('return_incoming')], context=context)
--
- I cancel incoming shipment after returning it.
--
- !python {model: stock.picking}: |
- # the cancel is not on the return, but on the incoming shipment (which now has a quantity of 10, thanks to the
- # backorder). This situation is a little weird as we returned a move that we finally cancelled... As result, only
- # 30Unit from the original 50Unit will be counted in the stock (50 - 10 (cancelled quantity) - 10 (returned quantity))
- self.action_cancel(cr, uid, [ref("incomming_shipment")], context=context)
--
- I make invoice of backorder of incoming shipment.
--
- !python {model: stock.invoice.onshipping}: |
- shipment = self.pool.get('stock.picking').browse(cr, uid, ref("incomming_shipment"))
- context.update({'active_model': 'stock.picking', 'active_id': shipment.backorder_id.id, 'active_ids': [shipment.backorder_id.id]})
--
- !record {model: stock.invoice.onshipping, id: invoice_incoming}:
- group: False
--
- !python {model: stock.invoice.onshipping }: |
- self.create_invoice(cr, uid, [ref('invoice_incoming')], context=context)
--
- I check invoice status of backorder of incoming shipment.
--
- !python {model: stock.picking}: |
- shipment = self.browse(cr, uid, ref("incomming_shipment"))
- assert shipment.backorder_id.invoice_state == 'invoiced', 'Invoice state is not updated.'
--
- I check available stock after receiving incoming shipping.
--
- !python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_6'), context=context)
- assert product.qty_available == 140, "Stock does not correspond."
- assert product.virtual_available == 0, "Virtual stock does not correspond."
--
- I check the stock valuation account entries.
--
- !python {model: account.move}: |
- incomming_shipment = self.pool.get('stock.picking').browse(cr, uid, ref('incomming_shipment'), context=context)
- account_move_ids = self.search(cr, uid, [('ref','=',incomming_shipment.name)])
- assert len(account_move_ids), "account move should be created."
- account_move = self.browse(cr, uid, account_move_ids[0], context=context)
- assert len(account_move.line_id) == len(incomming_shipment.move_lines) + 1, 'Accounting entries does not correspond.'
- for account_move_line in account_move.line_id:
- for stock_move in incomming_shipment.move_lines:
- if account_move_line.account_id.id == stock_move.product_id.property_stock_account_input.id:
- assert account_move_line.credit == 14000.0, "Credit amount does not correspond."
- assert account_move_line.debit == 0.0, "Debit amount does not correspond."
- else:
- assert account_move_line.credit == 0.0, "Credit amount does not correspond."
- assert account_move_line.debit == 14000.0, "Debit amount does not correspond."
--
- I trace all incoming lots.
--
- !python {model: stock.production.lot }: |
- lot = self.pool.get('stock.move.split').browse(cr, uid, ref('split_lot_incoming'), context=context)
- lot_ids = self.search(cr, uid, [('name', 'in', [x.name for x in lot.line_ids])])
- self.action_traceability(cr, uid, lot_ids, context=context)
--
- I check outgoing shipment after stock availability in Chicago shop.
--
- !python {model: stock.picking}: |
- shipment = self.browse(cr, uid, ref("outgoing_shipment"), context=context)
- self.pool.get('stock.move').action_assign(cr, uid, [x.id for x in shipment.move_lines])
- assert shipment.state == "assigned", "Shipment should be assigned."
- for move_line in shipment.move_lines:
- assert move_line.state == "assigned", "Move should be assigned."
- self.force_assign(cr, uid, [shipment.id])
- context.update({'active_model':'stock.move', 'active_id':shipment.move_lines[0].id,'active_ids': [shipment.move_lines[0].id]})
--
- I scrap 4 units of 15” LCD Monitor into scrap location.
--
- !record {model: stock.move.scrap, id: scrap_monitor1}:
- product_qty: 4
--
- !python {model: stock.move.scrap}: |
- self.move_scrap(cr, uid, [ref('scrap_monitor1')], context=context)
--
- I consume 4 units of 15” LCD Monitor.
--
- !record {model: stock.move.consume, id: consume_monitor1}:
- product_qty: 4
- location_id: location_monitor
--
- !python {model: stock.move.consume}: |
- self.do_move_consume(cr, uid, [ref('consume_monitor1')], context=context)
--
- I check stock in scrap location and stock location.
--
- !python {model: stock.location}: |
- ctx = {'product_id': ref('product_product_6')}
- monitor_location = self.pool.get('stock.location').browse(cr, uid, ref('location_monitor'), context=ctx)
- assert monitor_location.stock_real == 132.0, 'stock does not correspond in stock location shop0.'
- scrapped_location = self.browse(cr, uid, ref('stock_location_scrapped'), context=ctx)
- assert scrapped_location.stock_real == 4, 'scraped stock does not correspond in scrap location.'
--
- I check available stock after consumed and scraped move.
--
- !python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_6'), context=context)
- assert product.qty_available == 132.0, "Stock does not correspond."
- assert round(product.virtual_available, 2) == -4.00, "Virtual stock does not correspond."
--
- I deliver 5 Unit 15” LCD Monitor to customer partially.
--
- !python {model: stock.partial.move}: |
- context.update({'active_model': 'stock.move', 'active_id': ref('outgoing_shipment_monitor'), 'active_ids': [ref('outgoing_shipment_monitor')]})
--
- !record {model: stock.partial.move, id: partial_outgoing_monitor}:
- move_ids:
- - quantity: 5
- product_id: product_product_6
- product_uom: product.product_uom_unit
- move_id: outgoing_shipment_monitor
- location_id: location_monitor
- location_dest_id: stock_location_output
--
- !python {model: stock.partial.move }: |
- self.do_partial(cr, uid, [ref('partial_outgoing_monitor')], context=context)
-
--
- I pack outgoing shipment into box of 10 Unit with unique tracking lot.
--
- !python {model: stock.move}: |
- stock_split = self.pool.get('stock.split.into')
- move = self.browse(cr, uid, ref('outgoing_shipment_monitor'), context=context)
- context.update({'active_model': 'stock.move', 'active_id': move.id, 'active_ids': [move.id]})
- total_qty = move.product_qty
- split_qty = 10
- while(total_qty>0):
- split_id = stock_split.create(cr, uid, {'quantity': split_qty}, context=context)
- stock_split.split(cr, uid, [split_id], context=context)
- total_qty -= split_qty
--
- I deliver the outgoing shipment.
--
- !python {model: stock.partial.picking}: |
- context.update({'active_model': 'stock.picking', 'active_id': ref('outgoing_shipment'), 'active_ids': [ref('outgoing_shipment')]})
--
- !record {model: stock.partial.picking, id: partial_outgoing}:
- picking_id: outgoing_shipment
--
- !python {model: stock.partial.picking }: |
- self.do_partial(cr, uid, [ref('partial_outgoing')], context=context)
-
--
- I check outgoing shipment after delivery.
--
- !python {model: stock.picking}: |
- shipment = self.browse(cr, uid, ref("outgoing_shipment"), context=context)
- assert shipment.state == "done", "Shipment should be closed."
- for move_line in shipment.move_lines:
- assert move_line.state == "done", "Move should be closed."
--
- I check available stock after delivery.
--
- !python {model: product.product}: |
- product = self.browse(cr, uid, ref('product_product_6'), context=context)
- assert round(product.qty_available, 2) == 6, "Stock does not correspond."
- assert round(product.virtual_available, 2) == -4.00, "Virtual stock does not correspond."
diff --git a/addons/stock/test/stock_report.yml b/addons/stock/test/stock_report.yml
deleted file mode 100644
index 21ed6046805..00000000000
--- a/addons/stock/test/stock_report.yml
+++ /dev/null
@@ -1,56 +0,0 @@
--
- Stock user can print all reports related to stock, so let's check data with giving the access rights of user.
--
- !context
- uid: 'res_users_stock_user'
--
- I print a stock overview report of location.
--
- !python {model: stock.location}: |
- import os
- import openerp.report
- from openerp import tools
- data, format = openerp.report.render_report(cr, uid, [ref('location_monitor')], 'lot.stock.overview', {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'stock-overview'+format), 'wb+').write(data)
--
- I print a Stock Overview report of location with child location.
--
- !python {model: stock.location}: |
- import os
- import openerp.report
- from openerp import tools
- data, format = openerp.report.render_report(cr, uid, [ref('location_monitor')], 'lot.stock.overview_all', {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'stock-overviewall'+format), 'wb+').write(data)
--
- I print a Stock Inventory report.
--
- !python {model: stock.inventory}: |
- import os
- import openerp.report
- from openerp import tools
- data, format = openerp.report.render_report(cr, uid, [ref('stock_inventory_0')], 'stock.inventory.move', {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'stock-stock_inventory_move.'+format), 'wb+').write(data)
--
- I print a outgoing shipment report.
--
- !python {model: stock.picking}: |
- import os
- import openerp.report
- from openerp import tools
- data, format = openerp.report.render_report(cr, uid, [ref('outgoing_shipment')], 'stock.picking.list', {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'stock-picking_list'+format), 'wb+').write(data)
--
- I print stock Report.
--
- !python {model: product.product}: |
- import os
- import openerp.report
- from openerp import tools
- data, format = openerp.report.render_report(cr, uid, [ref('product_product_6')], 'stock.product.history', {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'stock-product_stock_report.'+format), 'wb+').write(data)
-
diff --git a/addons/stock/test/wiseoperator.yml b/addons/stock/test/wiseoperator.yml
new file mode 100644
index 00000000000..cfe1180b545
--- /dev/null
+++ b/addons/stock/test/wiseoperator.yml
@@ -0,0 +1,124 @@
+-
+ Create a new stockable product
+-
+ !record {model: product.product, id: product_wise}:
+ name: Wise Unit
+ type: product
+ categ_id: product.product_category_1
+ uom_id: product.product_uom_unit
+ uom_po_id: product.product_uom_unit
+-
+ Create an incoming picking for this product of 10 PCE from suppliers to stock
+-
+ !record {model: stock.picking, id: pick1}:
+ name: Incoming picking
+ partner_id: base.res_partner_2
+ picking_type_id: picking_type_in
+ move_lines:
+ - product_id: product_wise
+ product_uom_qty: 10.00
+ location_id: stock_location_suppliers
+ location_dest_id: stock_location_stock
+-
+ Confirm and assign picking and prepare partial
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref('pick1')], context=context)
+ self.do_prepare_partial(cr, uid, [ref('pick1')], context=context)
+-
+ Put 6 pieces in shelf1 and 4 pieces in shelf2
+-
+ !python {model: stock.picking}: |
+ record = self.browse(cr, uid, ref('pick1'), context=context)
+ stock_pack = self.pool.get('stock.pack.operation')
+ stock_quant_pack = self.pool.get('stock.quant.package')
+ package1 = stock_quant_pack.create(cr, uid, {'name': 'Pack 1'}, context=context)
+ stock_pack.write(cr, uid, record.pack_operation_ids[0].id, {'result_package_id': package1, 'product_qty': 4, 'location_dest_id': ref('stock_location_components')})
+ new_pack1 = stock_pack.create(cr, uid, {'product_id': ref('product_wise'), 'product_uom_id': ref('product.product_uom_unit'), 'picking_id': ref('pick1'), 'product_qty': 6.0, 'location_id': ref('stock_location_suppliers'), 'location_dest_id': ref('stock_location_14')}, context=context)
+-
+ Transfer the reception
+-
+ !python {model: stock.picking}: |
+ self.do_transfer(cr, uid, [ref('pick1')], context=context)
+-
+ Check the system created 2 quants
+-
+ !python {model: stock.quant}: |
+ reco_id = self.search(cr ,uid , [('product_id','=',ref('product_wise'))], context=context)
+ assert len(reco_id) == 2, "The number of quants created is not correct"
+-
+ Make a delivery order of 5 pieces to the customer
+-
+ !record {model: stock.picking, id: delivery_order_wise1}:
+ name: outgoing picking
+ partner_id: base.res_partner_4
+ picking_type_id: stock.picking_type_out
+ move_lines:
+ - product_id: product_wise
+ product_uom_qty: 5.0
+ location_id: stock_location_stock
+ location_dest_id: stock_location_customers
+-
+ Assign and confirm
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref('delivery_order_wise1')], context=context)
+ self.action_assign(cr, uid, [ref('delivery_order_wise1')])
+ self.do_prepare_partial(cr, uid, [ref('delivery_order_wise1')])
+-
+ Make a delivery order of 5 pieces to the customer
+-
+ !record {model: stock.picking, id: delivery_order_wise2}:
+ name: outgoing picking
+ partner_id: base.res_partner_4
+ picking_type_id: stock.picking_type_out
+ move_lines:
+ - product_id: product_wise
+ product_uom_qty: 5.0
+ location_id: stock_location_stock
+ location_dest_id: stock_location_customers
+-
+ Assign and confirm
+-
+ !python {model: stock.picking}: |
+ self.action_confirm(cr, uid, [ref('delivery_order_wise2')], context=context)
+ self.action_assign(cr, uid, [ref('delivery_order_wise2')])
+ self.do_prepare_partial(cr, uid, [ref('delivery_order_wise2')])
+-
+ The operator is a wise guy and decides to do the opposite as OpenERP proposes. He uses the products reserved on picking 1 on picking 2 and vice versa
+-
+ !python {model: stock.picking}: |
+ stock_pack = self.pool.get('stock.pack.operation')
+ picking1 = self.browse(cr, uid, ref('delivery_order_wise1'))
+ picking2 = self.browse(cr, uid, ref('delivery_order_wise2'))
+ pack_ids1 = [x.id for x in picking1.pack_operation_ids]
+ pack_ids2 = [x.id for x in picking2.pack_operation_ids]
+ stock_pack.write(cr, uid, pack_ids1, {'picking_id': picking2.id})
+ stock_pack.write(cr, uid, pack_ids2, {'picking_id': picking1.id})
+-
+ Process this picking
+-
+ !python {model: stock.picking}: |
+ self.do_transfer(cr, uid, [ref('delivery_order_wise1')], context=context)
+-
+ Check a negative quant was created by this picking
+-
+ !python {model: stock.quant}: |
+ reco_id = self.search(cr ,uid , [('product_id','=',ref('product_wise')), ('qty', '<', 0.0)], context=context)
+ assert len(reco_id) == 0, 'This should not have created a negative quant'
+-
+ Check the other delivery order has changed its state back to partially available
+-
+ !python {model: stock.picking}: |
+ assert self.browse(cr, uid, ref('delivery_order_wise2')).state == 'partially_available', "Delivery order 2 should be back in confirmed state"
+-
+ Process the second picking
+-
+ !python {model: stock.picking}: |
+ self.do_transfer(cr, uid, [ref('delivery_order_wise2')], context=context)
+-
+ Check all quants are in Customers and there are no negative quants anymore
+-
+ !python {model: stock.quant}: |
+ reco_id = self.search(cr ,uid , [('product_id','=',ref('product_wise'))], context=context)
+ assert all([x.location_id.id==ref('stock_location_customers') and x.qty > 0.0 for x in self.browse(cr, uid, reco_id)]), "Negative quant or wrong location detected"
\ No newline at end of file
diff --git a/addons/stock/tests/test_multicompany.py b/addons/stock/tests/test_multicompany.py
deleted file mode 100644
index f0175791b50..00000000000
--- a/addons/stock/tests/test_multicompany.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Business Applications
-# Copyright (c) 2012-TODAY OpenERP S.A.
-#
-# 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.tests import common
-
-
-class TestStockMulticompany(common.TransactionCase):
-
- def setUp(self):
- super(TestStockMulticompany, self).setUp()
- cr, uid = self.cr, self.uid
-
- # Usefull models
- self.ir_model_data = self.registry('ir.model.data')
- self.res_users = self.registry('res.users')
- self.stock_location = self.registry('stock.location')
- self.stock_move = self.registry('stock.move')
- self.stock_fill_inventory = self.registry('stock.fill.inventory')
- self.stock_warehouse = self.registry('stock.warehouse')
-
- model, group_user_id = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_user')
- model, group_stock_manager_id = self.registry('ir.model.data').get_object_reference(cr, uid, 'stock', 'group_stock_manager')
- model, company_2_id = self.registry('ir.model.data').get_object_reference(cr, uid, 'stock', 'res_company_2')
- self.multicompany_user_id = self.res_users.create(cr, uid,
- {'name': 'multicomp', 'login': 'multicomp',
- 'groups_id': [(6, 0, [group_user_id, group_stock_manager_id])],
- 'company_id': company_2_id, 'company_ids': [(6,0,[company_2_id])]})
-
- def test_00_multicompany_default_stock_move(self):
- """check no error on getting default stock.move values in multicompany setting"""
- cr, uid, context = self.cr, self.multicompany_user_id, {}
- fields = ['location_id', 'location_dest_id']
- for type in ('in', 'internal', 'out'):
- context['picking_type'] = type
- defaults = self.stock_move.default_get(cr, uid, ['location_id', 'location_dest_id', 'type'], context)
- for field in fields:
- if defaults.get(field):
- try:
- self.stock_location.check_access_rule(cr, uid, [defaults[field]], 'read', context)
- except Exception, exc:
- self.fail("unreadable location %s: %s" % (field, exc))
- self.assertEqual(defaults['type'], type, "wrong move type")
-
-
- def test_10_multicompany_onchange_move_type(self):
- """check onchange_move_type does not return unreadable in multicompany setting"""
- cr, uid, context = self.cr, self.multicompany_user_id, {}
- fields = ['location_id', 'location_dest_id']
- for type in ('in', 'internal', 'out'):
- result = self.stock_move.onchange_move_type(cr, uid, [], type, context)['value']
- for field in fields:
- if result.get(field):
- try:
- self.stock_location.check_access_rule(cr, uid, [result[field]], 'read', context)
- except Exception, exc:
- self.fail("unreadable location %s: %s" % (field, exc))
-
-
- def test_20_multicompany_default_stock_fill_inventory(self):
- """check default location readability for stock_fill_inventory in multicompany setting"""
- cr, uid, context = self.cr, self.multicompany_user_id, {}
- defaults = self.stock_fill_inventory.default_get(cr, uid, ['location_id'], context)
- if defaults.get('location_id'):
- try:
- self.stock_location.check_access_rule(cr, uid, [defaults['location_id']], 'read', context)
- except Exception, exc:
- self.fail("unreadable source location: %s" % exc)
-
-
- def test_30_multicompany_default_warehouse_location(self):
- """check default locations for warehouse in multicompany setting"""
- cr, uid, context = self.cr, self.multicompany_user_id, {}
- fields = ['lot_input_id', 'lot_stock_id', 'lot_output_id']
- defaults = self.stock_warehouse.default_get(cr, uid, fields, context)
- for field in fields:
- if defaults.get(field):
- try:
- self.stock_location.check_access_rule(cr, uid, [defaults[field]], 'read', context)
- except Exception, exc:
- self.fail("unreadable default %s: %s" % (field, exc))
diff --git a/addons/stock/views/report_package_barcode.xml b/addons/stock/views/report_package_barcode.xml
new file mode 100644
index 00000000000..841486e8293
--- /dev/null
+++ b/addons/stock/views/report_package_barcode.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/stock/views/stock.xml b/addons/stock/views/stock.xml
index 2d935a12475..a38fe9bb9fe 100644
--- a/addons/stock/views/stock.xml
+++ b/addons/stock/views/stock.xml
@@ -6,6 +6,7 @@
+
diff --git a/addons/stock/wizard/__init__.py b/addons/stock/wizard/__init__.py
index e37483bfb37..e6422a579f2 100644
--- a/addons/stock/wizard/__init__.py
+++ b/addons/stock/wizard/__init__.py
@@ -19,18 +19,9 @@
#
##############################################################################
-import stock_traceability
import stock_move
-import stock_splitinto
-import stock_partial_picking
-import stock_partial_move
-import stock_inventory_merge
-import stock_fill_inventory
-import stock_inventory_line_split
-import stock_invoice_onshipping
-import stock_location_product
-import stock_change_standard_price
import stock_return_picking
import stock_change_product_qty
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+import make_procurement_product
+import orderpoint_procurement
diff --git a/addons/procurement/wizard/make_procurement_product.py b/addons/stock/wizard/make_procurement_product.py
similarity index 99%
rename from addons/procurement/wizard/make_procurement_product.py
rename to addons/stock/wizard/make_procurement_product.py
index bf83bc73f1a..73dda6bbb3e 100644
--- a/addons/procurement/wizard/make_procurement_product.py
+++ b/addons/stock/wizard/make_procurement_product.py
@@ -74,7 +74,7 @@ class make_procurement(osv.osv_memory):
'product_qty': proc.qty,
'product_uom': proc.uom_id.id,
'location_id': wh.lot_stock_id.id,
- 'procure_method':'make_to_order',
+ 'company_id': wh.company_id.id,
})
procurement_obj.signal_button_confirm(cr, uid, [procure_id])
diff --git a/addons/procurement/wizard/make_procurement_view.xml b/addons/stock/wizard/make_procurement_view.xml
similarity index 100%
rename from addons/procurement/wizard/make_procurement_view.xml
rename to addons/stock/wizard/make_procurement_view.xml
diff --git a/addons/procurement/wizard/orderpoint_procurement.py b/addons/stock/wizard/orderpoint_procurement.py
similarity index 87%
rename from addons/procurement/wizard/orderpoint_procurement.py
rename to addons/stock/wizard/orderpoint_procurement.py
index c8d41c5c655..2cbc794cde3 100644
--- a/addons/procurement/wizard/orderpoint_procurement.py
+++ b/addons/stock/wizard/orderpoint_procurement.py
@@ -31,13 +31,6 @@ class procurement_compute(osv.osv_memory):
_name = 'procurement.orderpoint.compute'
_description = 'Automatic Order Point'
- _columns = {
- 'automatic': fields.boolean('Automatic Orderpoint', help='If the stock of a product is under 0, it will act like an orderpoint'),
- }
-
- _defaults = {
- 'automatic': False,
- }
def _procure_calculation_orderpoint(self, cr, uid, ids, context=None):
"""
@@ -51,7 +44,7 @@ class procurement_compute(osv.osv_memory):
#As this function is in a new thread, I need to open a new cursor, because the old one may be closed
new_cr = self.pool.cursor()
for proc in self.browse(new_cr, uid, ids, context=context):
- proc_obj._procure_orderpoint_confirm(new_cr, uid, automatic=proc.automatic, use_new_cursor=new_cr.dbname, context=context)
+ proc_obj._procure_orderpoint_confirm(new_cr, uid, use_new_cursor=new_cr.dbname, context=context)
#close the new cursor
new_cr.close()
return {}
diff --git a/addons/procurement/wizard/orderpoint_procurement_view.xml b/addons/stock/wizard/orderpoint_procurement_view.xml
similarity index 91%
rename from addons/procurement/wizard/orderpoint_procurement_view.xml
rename to addons/stock/wizard/orderpoint_procurement_view.xml
index 227b79b3234..676dfb144d6 100644
--- a/addons/procurement/wizard/orderpoint_procurement_view.xml
+++ b/addons/stock/wizard/orderpoint_procurement_view.xml
@@ -12,9 +12,6 @@
-
-
-
diff --git a/addons/stock/wizard/stock_fill_inventory.py b/addons/stock/wizard/stock_fill_inventory.py
deleted file mode 100644
index 3f9abcfe659..00000000000
--- a/addons/stock/wizard/stock_fill_inventory.py
+++ /dev/null
@@ -1,154 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 fields, osv, orm
-from openerp.tools.translate import _
-from openerp.tools import mute_logger
-
-class stock_fill_inventory(osv.osv_memory):
- _name = "stock.fill.inventory"
- _description = "Import Inventory"
-
- def _default_location(self, cr, uid, ids, context=None):
- location = self.pool.get('ir.model.data').xmlid_to_object(cr, uid, 'stock.stock_location_stock')
- if not location.exists():
- return False
- try:
- with mute_logger('openerp.osv.orm'):
- location.check_access_rule('read', context=context)
- location_id = location.id
- except (ValueError, orm.except_orm), e:
- return False
- return location_id or False
-
- _columns = {
- 'location_id': fields.many2one('stock.location', 'Location', required=True),
- 'recursive': fields.boolean("Include children",help="If checked, products contained in child locations of selected location will be included as well."),
- 'set_stock_zero': fields.boolean("Set to zero",help="If checked, all product quantities will be set to zero to help ensure a real physical inventory is done"),
- }
- _defaults = {
- 'location_id': _default_location,
- }
-
- def view_init(self, cr, uid, fields_list, context=None):
- """
- Creates view dynamically and adding fields at runtime.
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param context: A standard dictionary
- @return: New arch of view with new columns.
- """
- if context is None:
- context = {}
- super(stock_fill_inventory, self).view_init(cr, uid, fields_list, context=context)
-
- if len(context.get('active_ids',[])) > 1:
- raise osv.except_osv(_('Error!'), _('You cannot perform this operation on more than one Stock Inventories.'))
-
- if context.get('active_id', False):
- stock = self.pool.get('stock.inventory').browse(cr, uid, context.get('active_id', False))
- return True
-
- def fill_inventory(self, cr, uid, ids, context=None):
- """ To Import stock inventory according to products available in the selected locations.
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: the ID or list of IDs if we want more than one
- @param context: A standard dictionary
- @return:
- """
- if context is None:
- context = {}
-
- inventory_line_obj = self.pool.get('stock.inventory.line')
- location_obj = self.pool.get('stock.location')
- move_obj = self.pool.get('stock.move')
- uom_obj = self.pool.get('product.uom')
- if ids and len(ids):
- ids = ids[0]
- else:
- return {'type': 'ir.actions.act_window_close'}
- fill_inventory = self.browse(cr, uid, ids, context=context)
- res = {}
- res_location = {}
-
- if fill_inventory.recursive:
- location_ids = location_obj.search(cr, uid, [('location_id',
- 'child_of', [fill_inventory.location_id.id])], order="id",
- context=context)
- else:
- location_ids = [fill_inventory.location_id.id]
-
- res = {}
- flag = False
-
- for location in location_ids:
- datas = {}
- res[location] = {}
- move_ids = move_obj.search(cr, uid, ['|',('location_dest_id','=',location),('location_id','=',location),('state','=','done')], context=context)
- local_context = dict(context)
- local_context['raise-exception'] = False
- for move in move_obj.browse(cr, uid, move_ids, context=context):
- lot_id = move.prodlot_id.id
- prod_id = move.product_id.id
- if move.location_dest_id.id != move.location_id.id:
- if move.location_dest_id.id == location:
- qty = uom_obj._compute_qty_obj(cr, uid, move.product_uom,move.product_qty, move.product_id.uom_id, context=local_context)
- else:
- qty = -uom_obj._compute_qty_obj(cr, uid, move.product_uom,move.product_qty, move.product_id.uom_id, context=local_context)
-
-
- if datas.get((prod_id, lot_id)):
- qty += datas[(prod_id, lot_id)]['product_qty']
-
- datas[(prod_id, lot_id)] = {'product_id': prod_id, 'location_id': location, 'product_qty': qty, 'product_uom': move.product_id.uom_id.id, 'prod_lot_id': lot_id}
-
- if datas:
- flag = True
- res[location] = datas
-
- if not flag:
- raise osv.except_osv(_('Warning!'), _('No product in this location. Please select a location in the product form.'))
-
- for stock_move in res.values():
- for stock_move_details in stock_move.values():
- stock_move_details.update({'inventory_id': context['active_ids'][0]})
- domain = []
- for field, value in stock_move_details.items():
- if field == 'product_qty' and fill_inventory.set_stock_zero:
- domain.append((field, 'in', [value,'0']))
- continue
- domain.append((field, '=', value))
-
- if fill_inventory.set_stock_zero:
- stock_move_details.update({'product_qty': 0})
-
- line_ids = inventory_line_obj.search(cr, uid, domain, context=context)
-
- if not line_ids:
- inventory_line_obj.create(cr, uid, stock_move_details, context=context)
-
- return {'type': 'ir.actions.act_window_close'}
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_fill_inventory_view.xml b/addons/stock/wizard/stock_fill_inventory_view.xml
deleted file mode 100644
index 3f25cd27f86..00000000000
--- a/addons/stock/wizard/stock_fill_inventory_view.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
- Import Inventory
- stock.fill.inventory
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Fill Inventory
- ir.actions.act_window
- stock.fill.inventory
- form
- form
-
- new
- {'search_default_in_location':1}
-
-
-
-
diff --git a/addons/stock/wizard/stock_inventory_line_split.py b/addons/stock/wizard/stock_inventory_line_split.py
deleted file mode 100644
index fef291769b9..00000000000
--- a/addons/stock/wizard/stock_inventory_line_split.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 fields, osv
-
-class stock_inventory_line_split(osv.osv_memory):
- _inherit = "stock.move.split"
- _name = "stock.inventory.line.split"
- _description = "Split inventory lines"
-
- _columns = {
- 'line_ids': fields.one2many('stock.inventory.line.split.lines', 'wizard_id', 'Serial Numbers'),
- 'line_exist_ids': fields.one2many('stock.inventory.line.split.lines', 'wizard_exist_id', 'Serial Numbers'),
- }
-
- def default_get(self, cr, uid, fields, context=None):
- if context is None:
- context = {}
- record_id = context and context.get('active_id',False)
- res = {}
- line = self.pool.get('stock.inventory.line').browse(cr, uid, record_id, context=context)
- if 'product_id' in fields:
- res.update({'product_id':line.product_id.id})
- if 'product_uom' in fields:
- res.update({'product_uom': line.product_uom.id})
- if 'qty' in fields:
- res.update({'qty': line.product_qty})
- return res
-
- def split(self, cr, uid, ids, line_ids, context=None):
- """ To split stock inventory lines according to serial numbers.
-
- :param line_ids: the ID or list of IDs of inventory lines we want to split
- """
- if context is None:
- context = {}
- assert context.get('active_model') == 'stock.inventory.line',\
- 'Incorrect use of the inventory line split wizard.'
- prodlot_obj = self.pool.get('stock.production.lot')
- ir_sequence_obj = self.pool.get('ir.sequence')
- line_obj = self.pool.get('stock.inventory.line')
- new_line = []
- for data in self.browse(cr, uid, ids, context=context):
- for inv_line in line_obj.browse(cr, uid, line_ids, context=context):
- line_qty = inv_line.product_qty
- quantity_rest = inv_line.product_qty
- new_line = []
- if data.use_exist:
- lines = [l for l in data.line_exist_ids if l]
- else:
- lines = [l for l in data.line_ids if l]
- for line in lines:
- quantity = line.quantity
- if quantity <= 0 or line_qty == 0:
- continue
- quantity_rest -= quantity
- if quantity_rest < 0:
- quantity_rest = quantity
- break
- default_val = {
- 'product_qty': quantity,
- }
- if quantity_rest > 0:
- current_line = line_obj.copy(cr, uid, inv_line.id, default_val)
- new_line.append(current_line)
- if quantity_rest == 0:
- current_line = inv_line.id
- prodlot_id = False
- if data.use_exist:
- prodlot_id = line.prodlot_id.id
- if not prodlot_id:
- prodlot_id = prodlot_obj.create(cr, uid, {
- 'name': line.name,
- 'product_id': inv_line.product_id.id},
- context=context)
- line_obj.write(cr, uid, [current_line], {'prod_lot_id': prodlot_id})
- prodlot = prodlot_obj.browse(cr, uid, prodlot_id)
-
- update_val = {}
- if quantity_rest > 0:
- update_val['product_qty'] = quantity_rest
- line_obj.write(cr, uid, [inv_line.id], update_val)
-
- return new_line
-
-class stock_inventory_split_lines(osv.osv_memory):
- _inherit = "stock.move.split.lines"
- _name = "stock.inventory.line.split.lines"
- _description = "Inventory Split lines"
- _columns = {
- 'wizard_id': fields.many2one('stock.inventory.line.split', 'Parent Wizard'),
- 'wizard_exist_id': fields.many2one('stock.inventory.line.split', 'Parent Wizard'),
- }
-
diff --git a/addons/stock/wizard/stock_inventory_line_split_view.xml b/addons/stock/wizard/stock_inventory_line_split_view.xml
deleted file mode 100644
index 92c91317e35..00000000000
--- a/addons/stock/wizard/stock_inventory_line_split_view.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
- Split Inventory Line
- stock.inventory.line.split
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Split inventory lines
- ir.actions.act_window
- stock.inventory.line.split
- form
- form
- new
-
-
-
-
diff --git a/addons/stock/wizard/stock_inventory_merge.py b/addons/stock/wizard/stock_inventory_merge.py
deleted file mode 100644
index e2b5cff513d..00000000000
--- a/addons/stock/wizard/stock_inventory_merge.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 fields, osv
-from openerp.tools.translate import _
-
-class stock_inventory_merge(osv.osv_memory):
- _name = "stock.inventory.merge"
- _description = "Merge Inventory"
-
- def fields_view_get(self, cr, uid, view_id=None, view_type='form',
- context=None, toolbar=False, submenu=False):
- """
- Changes the view dynamically
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param context: A standard dictionary
- @return: New arch of view.
- """
- if context is None:
- context={}
- res = super(stock_inventory_merge, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
- if context.get('active_model','') == 'stock.inventory' and len(context['active_ids']) < 2:
- raise osv.except_osv(_('Warning!'),
- _('Please select multiple physical inventories to merge in the list view.'))
- return res
-
- def do_merge(self, cr, uid, ids, context=None):
- """ To merge selected Inventories.
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: List of IDs selected
- @param context: A standard dictionary
- @return:
- """
- invent_obj = self.pool.get('stock.inventory')
- invent_line_obj = self.pool.get('stock.inventory.line')
- invent_lines = {}
- if context is None:
- context = {}
- for inventory in invent_obj.browse(cr, uid, context['active_ids'], context=context):
- if inventory.state == "done":
- raise osv.except_osv(_('Warning!'),
- _('Merging is only allowed on draft inventories.'))
-
- for line in inventory.inventory_line_id:
- key = (line.location_id.id, line.product_id.id, line.product_uom.id)
- if key in invent_lines:
- invent_lines[key] += line.product_qty
- else:
- invent_lines[key] = line.product_qty
-
-
- new_invent = invent_obj.create(cr, uid, {
- 'name': 'Merged inventory'
- }, context=context)
-
- for key, quantity in invent_lines.items():
- invent_line_obj.create(cr, uid, {
- 'inventory_id': new_invent,
- 'location_id': key[0],
- 'product_id': key[1],
- 'product_uom': key[2],
- 'product_qty': quantity,
- })
-
- return {'type': 'ir.actions.act_window_close'}
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/stock/wizard/stock_inventory_merge_view.xml b/addons/stock/wizard/stock_inventory_merge_view.xml
deleted file mode 100644
index bf661b426a2..00000000000
--- a/addons/stock/wizard/stock_inventory_merge_view.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
- stock.inventory.merge.form
- stock.inventory.merge
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/stock/wizard/stock_location_product.py b/addons/stock/wizard/stock_location_product.py
deleted file mode 100644
index 62f80edcb57..00000000000
--- a/addons/stock/wizard/stock_location_product.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 fields, osv
-from openerp.tools.translate import _
-
-class stock_location_product(osv.osv_memory):
- _name = "stock.location.product"
- _description = "Products by Location"
- _columns = {
- 'from_date': fields.datetime('From'),
- 'to_date': fields.datetime('To'),
- 'type': fields.selection([('inventory','Analyze current inventory'),
- ('period','Analyze period')], 'Analysis Type', required=True),
- }
-
- def action_open_window(self, cr, uid, ids, context=None):
- """ To open location wise product information specific to given duration
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: An ID or list of IDs (but only the first ID will be processed)
- @param context: A standard dictionary
- @return: Invoice type
- """
- if context is None:
- context = {}
- location_products = self.read(cr, uid, ids, ['from_date', 'to_date'], context=context)
- if location_products:
- return {
- 'name': _('Current Inventory'),
- 'view_type': 'form',
- 'view_mode': 'tree,form',
- 'res_model': 'product.product',
- 'type': 'ir.actions.act_window',
- 'context': {'location': context['active_id'],
- 'from_date': location_products[0]['from_date'],
- 'to_date': location_products[0]['to_date']},
- 'domain': [('type', '<>', 'service')],
- }
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_location_product_view.xml b/addons/stock/wizard/stock_location_product_view.xml
deleted file mode 100644
index d6141752636..00000000000
--- a/addons/stock/wizard/stock_location_product_view.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
- Products by Location
- stock.location.product
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/stock/wizard/stock_move.py b/addons/stock/wizard/stock_move.py
index a98d0ebda02..f4027b4131e 100644
--- a/addons/stock/wizard/stock_move.py
+++ b/addons/stock/wizard/stock_move.py
@@ -23,67 +23,19 @@ from openerp.osv import fields, osv
from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
-class stock_move_consume(osv.osv_memory):
- _name = "stock.move.consume"
- _description = "Consume Products"
-
- _columns = {
- 'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
- 'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
- 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True),
- 'location_id': fields.many2one('stock.location', 'Location', required=True)
- }
-
- #TOFIX: product_uom should not have differemt category of default UOM of product. Qty should be convert into UOM of original move line before going in consume and scrap
- def default_get(self, cr, uid, fields, context=None):
- """ Get default values
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param fields: List of fields for default value
- @param context: A standard dictionary
- @return: default values of fields
- """
- if context is None:
- context = {}
- res = super(stock_move_consume, self).default_get(cr, uid, fields, context=context)
- move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context)
- if 'product_id' in fields:
- res.update({'product_id': move.product_id.id})
- if 'product_uom' in fields:
- res.update({'product_uom': move.product_uom.id})
- if 'product_qty' in fields:
- res.update({'product_qty': move.product_qty})
- if 'location_id' in fields:
- res.update({'location_id': move.location_id.id})
-
- return res
-
- def do_move_consume(self, cr, uid, ids, context=None):
- """ To move consumed products
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: the ID or list of IDs if we want more than one
- @param context: A standard dictionary
- @return:
- """
- if context is None:
- context = {}
- move_obj = self.pool.get('stock.move')
- move_ids = context['active_ids']
- for data in self.browse(cr, uid, ids, context=context):
- move_obj.action_consume(cr, uid, move_ids,
- data.product_qty, data.location_id.id,
- context=context)
- return {'type': 'ir.actions.act_window_close'}
-
class stock_move_scrap(osv.osv_memory):
_name = "stock.move.scrap"
_description = "Scrap Products"
- _inherit = "stock.move.consume"
+
+ _columns = {
+ 'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
+ 'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
+ 'product_uom': fields.many2one('product.uom', 'Product Unit of Measure', required=True),
+ 'location_id': fields.many2one('stock.location', 'Location', required=True),
+ 'restrict_lot_id': fields.many2one('stock.production.lot', 'Lot'),
+ }
_defaults = {
'location_id': lambda *x: False
@@ -100,23 +52,21 @@ class stock_move_scrap(osv.osv_memory):
"""
if context is None:
context = {}
- res = super(stock_move_consume, self).default_get(cr, uid, fields, context=context)
+ res = super(stock_move_scrap, self).default_get(cr, uid, fields, context=context)
move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context)
+
location_obj = self.pool.get('stock.location')
- scrpaed_location_ids = location_obj.search(cr, uid, [('scrap_location','=',True)])
+ scrap_location_id = location_obj.search(cr, uid, [('scrap_location','=',True)])
if 'product_id' in fields:
res.update({'product_id': move.product_id.id})
if 'product_uom' in fields:
res.update({'product_uom': move.product_uom.id})
- if 'product_qty' in fields:
- res.update({'product_qty': move.product_qty})
if 'location_id' in fields:
- if scrpaed_location_ids:
- res.update({'location_id': scrpaed_location_ids[0]})
+ if scrap_location_id:
+ res.update({'location_id': scrap_location_id[0]})
else:
res.update({'location_id': False})
-
return res
def move_scrap(self, cr, uid, ids, context=None):
@@ -134,143 +84,10 @@ class stock_move_scrap(osv.osv_memory):
move_ids = context['active_ids']
for data in self.browse(cr, uid, ids):
move_obj.action_scrap(cr, uid, move_ids,
- data.product_qty, data.location_id.id,
+ data.product_qty, data.location_id.id, restrict_lot_id=data.restrict_lot_id.id,
context=context)
return {'type': 'ir.actions.act_window_close'}
-class split_in_production_lot(osv.osv_memory):
- _name = "stock.move.split"
- _description = "Split in Serial Numbers"
-
- def default_get(self, cr, uid, fields, context=None):
- if context is None:
- context = {}
- res = super(split_in_production_lot, self).default_get(cr, uid, fields, context=context)
- if context.get('active_id'):
- move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context)
- if 'product_id' in fields:
- res.update({'product_id': move.product_id.id})
- if 'product_uom' in fields:
- res.update({'product_uom': move.product_uom.id})
- if 'qty' in fields:
- res.update({'qty': move.product_qty})
- if 'use_exist' in fields:
- res.update({'use_exist': (move.picking_id and move.picking_id.type=='out' and True) or False})
- if 'location_id' in fields:
- res.update({'location_id': move.location_id.id})
- return res
-
- _columns = {
- 'qty': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure')),
- 'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
- 'product_uom': fields.many2one('product.uom', 'Unit of Measure'),
- 'line_ids': fields.one2many('stock.move.split.lines', 'wizard_id', 'Serial Numbers'),
- 'line_exist_ids': fields.one2many('stock.move.split.lines', 'wizard_exist_id', 'Serial Numbers'),
- 'use_exist' : fields.boolean('Existing Serial Numbers',
- help="Check this option to select existing serial numbers in the list below, otherwise you should enter new ones line by line."),
- 'location_id': fields.many2one('stock.location', 'Source Location')
- }
-
- def split_lot(self, cr, uid, ids, context=None):
- """ To split a lot"""
- if context is None:
- context = {}
- res = self.split(cr, uid, ids, context.get('active_ids'), context=context)
- return {'type': 'ir.actions.act_window_close'}
-
- def split(self, cr, uid, ids, move_ids, context=None):
- """ To split stock moves into serial numbers
-
- :param move_ids: the ID or list of IDs of stock move we want to split
- """
- if context is None:
- context = {}
- assert context.get('active_model') == 'stock.move',\
- 'Incorrect use of the stock move split wizard'
- inventory_id = context.get('inventory_id', False)
- prodlot_obj = self.pool.get('stock.production.lot')
- inventory_obj = self.pool.get('stock.inventory')
- move_obj = self.pool.get('stock.move')
- new_move = []
- for data in self.browse(cr, uid, ids, context=context):
- for move in move_obj.browse(cr, uid, move_ids, context=context):
- move_qty = move.product_qty
- quantity_rest = move.product_qty
- uos_qty_rest = move.product_uos_qty
- new_move = []
- if data.use_exist:
- lines = [l for l in data.line_exist_ids if l]
- else:
- lines = [l for l in data.line_ids if l]
- total_move_qty = 0.0
- for line in lines:
- quantity = line.quantity
- total_move_qty += quantity
- if total_move_qty > move_qty:
- raise osv.except_osv(_('Processing Error!'), _('Serial number quantity %d of %s is larger than available quantity (%d)!') \
- % (total_move_qty, move.product_id.name, move_qty))
- if quantity <= 0 or move_qty == 0:
- continue
- quantity_rest -= quantity
- uos_qty = quantity / move_qty * move.product_uos_qty
- uos_qty_rest = quantity_rest / move_qty * move.product_uos_qty
- if quantity_rest < 0:
- quantity_rest = quantity
- self.pool.get('stock.move').log(cr, uid, move.id, _('Unable to assign all lots to this move!'))
- return False
- default_val = {
- 'product_qty': quantity,
- 'product_uos_qty': uos_qty,
- 'state': move.state
- }
- if quantity_rest > 0:
- current_move = move_obj.copy(cr, uid, move.id, default_val, context=context)
- if inventory_id and current_move:
- inventory_obj.write(cr, uid, inventory_id, {'move_ids': [(4, current_move)]}, context=context)
- new_move.append(current_move)
-
- if quantity_rest == 0:
- current_move = move.id
- prodlot_id = False
- if data.use_exist:
- prodlot_id = line.prodlot_id.id
- if not prodlot_id:
- prodlot_id = prodlot_obj.create(cr, uid, {
- 'name': line.name,
- 'product_id': move.product_id.id},
- context=context)
-
- move_obj.write(cr, uid, [current_move], {'prodlot_id': prodlot_id, 'state':move.state})
-
- update_val = {}
- if quantity_rest > 0:
- update_val['product_qty'] = quantity_rest
- update_val['product_uos_qty'] = uos_qty_rest
- update_val['state'] = move.state
- move_obj.write(cr, uid, [move.id], update_val)
-
- return new_move
-
-
-class stock_move_split_lines_exist(osv.osv_memory):
- _name = "stock.move.split.lines"
- _description = "Stock move Split lines"
- _columns = {
- 'name': fields.char('Serial Number', size=64),
- 'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure')),
- 'wizard_id': fields.many2one('stock.move.split', 'Parent Wizard'),
- 'wizard_exist_id': fields.many2one('stock.move.split', 'Parent Wizard (for existing lines)'),
- 'prodlot_id': fields.many2one('stock.production.lot', 'Serial Number'),
- }
- _defaults = {
- 'quantity': 1.0,
- }
-
- def onchange_lot_id(self, cr, uid, ids, prodlot_id=False, product_qty=False,
- loc_id=False, product_id=False, uom_id=False,context=None):
- return self.pool.get('stock.move').onchange_lot_id(cr, uid, [], prodlot_id, product_qty,
- loc_id, product_id, uom_id, context)
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_move_view.xml b/addons/stock/wizard/stock_move_view.xml
index f2bc40d9a3f..16a59dc24bc 100644
--- a/addons/stock/wizard/stock_move_view.xml
+++ b/addons/stock/wizard/stock_move_view.xml
@@ -1,46 +1,14 @@
-
-
- Consume Move
- stock.move.consume
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Consume Move
- ir.actions.act_window
- stock.move.consume
- form
- form
- new
-
+
Scrap Movestock.move.scrap
-
-
- Split in Serial Numbers
- stock.move.split
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Split in Serial Numbers
- ir.actions.act_window
- stock.move.split
- form
- form
- new
- {'form_view_ref': False}
-
-
diff --git a/addons/stock/wizard/stock_partial_move.py b/addons/stock/wizard/stock_partial_move.py
deleted file mode 100644
index e1956e202c9..00000000000
--- a/addons/stock/wizard/stock_partial_move.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-TODAY OpenERP 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 fields, osv
-from openerp.tools.misc import DEFAULT_SERVER_DATETIME_FORMAT
-import time
-from openerp.tools.translate import _
-
-class stock_partial_move_line(osv.osv_memory):
- _inherit = "stock.partial.picking.line"
- _name = "stock.partial.move.line"
- _columns = {
- 'wizard_id' : fields.many2one('stock.partial.move', string="Wizard", ondelete='CASCADE'),
- }
-
-class stock_partial_move(osv.osv_memory):
- _name = "stock.partial.move"
- _inherit = 'stock.partial.picking'
- _description = "Partial Move Processing Wizard"
- _columns = {
- 'date': fields.datetime('Date', required=True),
- 'move_ids' : fields.one2many('stock.partial.move.line', 'wizard_id', 'Moves'),
-
- # picking_id is not used for move processing, so we remove the required attribute
- # from the inherited column, and ignore it
- 'picking_id': fields.many2one('stock.picking', 'Picking'),
- }
-
- def default_get(self, cr, uid, fields, context=None):
- if context is None: context = {}
- # no call to super!
- res = {}
- move_ids = context.get('active_ids', [])
- if not move_ids or not context.get('active_model') == 'stock.move':
- return res
- if 'move_ids' in fields:
- move_ids = self.pool.get('stock.move').browse(cr, uid, move_ids, context=context)
- moves = [self._partial_move_for(cr, uid, m) for m in move_ids if m.state not in ('done','cancel')]
- res.update(move_ids=moves)
- if 'date' in fields:
- res.update(date=time.strftime(DEFAULT_SERVER_DATETIME_FORMAT))
- return res
-
- def do_partial(self, cr, uid, ids, context=None):
- # no call to super!
- assert len(ids) == 1, 'Partial move processing may only be done one form at a time.'
- partial = self.browse(cr, uid, ids[0], context=context)
- partial_data = {
- 'delivery_date' : partial.date
- }
- moves_ids = []
- for move in partial.move_ids:
- if not move.move_id:
- raise osv.except_osv(_('Warning !'), _("You have manually created product lines, please delete them to proceed"))
- move_id = move.move_id.id
- partial_data['move%s' % (move_id)] = {
- 'product_id': move.product_id.id,
- 'product_qty': move.quantity,
- 'product_uom': move.product_uom.id,
- 'prodlot_id': move.prodlot_id.id,
- }
- moves_ids.append(move_id)
- if (move.move_id.picking_id.type == 'in') and (move.product_id.cost_method == 'average'):
- partial_data['move%s' % (move_id)].update(product_price=move.cost,
- product_currency=move.currency.id)
- self.pool.get('stock.move').do_partial(cr, uid, moves_ids, partial_data, context=context)
- return {'type': 'ir.actions.act_window_close'}
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_partial_move_view.xml b/addons/stock/wizard/stock_partial_move_view.xml
deleted file mode 100644
index 78d30ee7481..00000000000
--- a/addons/stock/wizard/stock_partial_move_view.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
- Deliver/Receive Products
-
- code
- action = obj.action_partial_move(context=context)
-
-
-
-
-
- Deliver/Receive Products
-
-
-
-
- stock.partial.move.form
- stock.partial.move
-
-
-
-
-
-
diff --git a/addons/stock/wizard/stock_partial_picking.py b/addons/stock/wizard/stock_partial_picking.py
deleted file mode 100644
index ceedb682ed8..00000000000
--- a/addons/stock/wizard/stock_partial_picking.py
+++ /dev/null
@@ -1,217 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-TODAY OpenERP 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 .
-#
-##############################################################################
-
-import time
-from lxml import etree
-from openerp.osv import fields, osv
-from openerp.tools.misc import DEFAULT_SERVER_DATETIME_FORMAT
-from openerp.tools.float_utils import float_compare
-import openerp.addons.decimal_precision as dp
-from openerp.tools.translate import _
-
-class stock_partial_picking_line(osv.TransientModel):
-
- def _tracking(self, cursor, user, ids, name, arg, context=None):
- res = {}
- for tracklot in self.browse(cursor, user, ids, context=context):
- tracking = False
- if (tracklot.move_id.picking_id.type == 'in' and tracklot.product_id.track_incoming == True) or \
- (tracklot.move_id.picking_id.type == 'out' and tracklot.product_id.track_outgoing == True):
- tracking = True
- res[tracklot.id] = tracking
- return res
-
- _name = "stock.partial.picking.line"
- _rec_name = 'product_id'
- _columns = {
- 'product_id' : fields.many2one('product.product', string="Product", required=True, ondelete='CASCADE'),
- 'quantity' : fields.float("Quantity", digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
- 'product_uom': fields.many2one('product.uom', 'Unit of Measure', required=True, ondelete='CASCADE'),
- 'prodlot_id' : fields.many2one('stock.production.lot', 'Serial Number', ondelete='CASCADE'),
- 'location_id': fields.many2one('stock.location', 'Location', required=True, ondelete='CASCADE', domain = [('usage','<>','view')]),
- 'location_dest_id': fields.many2one('stock.location', 'Dest. Location', required=True, ondelete='CASCADE',domain = [('usage','<>','view')]),
- 'move_id' : fields.many2one('stock.move', "Move", ondelete='CASCADE'),
- 'wizard_id' : fields.many2one('stock.partial.picking', string="Wizard", ondelete='CASCADE'),
- 'update_cost': fields.boolean('Need cost update'),
- 'cost' : fields.float("Cost", help="Unit Cost for this product line", digits_compute=dp.get_precision('Product Price')),
- 'currency' : fields.many2one('res.currency', string="Currency", help="Currency in which Unit cost is expressed", ondelete='CASCADE'),
- 'tracking': fields.function(_tracking, string='Tracking', type='boolean'),
- }
-
- def onchange_product_id(self, cr, uid, ids, product_id, context=None):
- uom_id = False
- if product_id:
- product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
- uom_id = product.uom_id.id
- return {'value': {'product_uom': uom_id}}
-
-
-class stock_partial_picking(osv.osv_memory):
- _name = "stock.partial.picking"
- _rec_name = 'picking_id'
- _description = "Partial Picking Processing Wizard"
-
- def _hide_tracking(self, cursor, user, ids, name, arg, context=None):
- res = {}
- for wizard in self.browse(cursor, user, ids, context=context):
- res[wizard.id] = any([not(x.tracking) for x in wizard.move_ids])
- return res
-
- _columns = {
- 'date': fields.datetime('Date', required=True),
- 'move_ids' : fields.one2many('stock.partial.picking.line', 'wizard_id', 'Product Moves'),
- 'picking_id': fields.many2one('stock.picking', 'Picking', required=True, ondelete='CASCADE'),
- 'hide_tracking': fields.function(_hide_tracking, string='Tracking', type='boolean', help='This field is for internal purpose. It is used to decide if the column production lot has to be shown on the moves or not.'),
- }
-
- def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
- #override of fields_view_get in order to change the label of the process button and the separator accordingly to the shipping type
- if context is None:
- context={}
- res = super(stock_partial_picking, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
- type = context.get('default_type', False)
- if type:
- doc = etree.XML(res['arch'])
- for node in doc.xpath("//button[@name='do_partial']"):
- if type == 'in':
- node.set('string', _('_Receive'))
- elif type == 'out':
- node.set('string', _('_Deliver'))
- for node in doc.xpath("//separator[@name='product_separator']"):
- if type == 'in':
- node.set('string', _('Receive Products'))
- elif type == 'out':
- node.set('string', _('Deliver Products'))
- res['arch'] = etree.tostring(doc)
- return res
-
- def default_get(self, cr, uid, fields, context=None):
- if context is None: context = {}
- res = super(stock_partial_picking, self).default_get(cr, uid, fields, context=context)
- picking_ids = context.get('active_ids', [])
- active_model = context.get('active_model')
-
- if not picking_ids or len(picking_ids) != 1:
- # Partial Picking Processing may only be done for one picking at a time
- return res
- assert active_model in ('stock.picking', 'stock.picking.in', 'stock.picking.out'), 'Bad context propagation'
- picking_id, = picking_ids
- if 'picking_id' in fields:
- res.update(picking_id=picking_id)
- if 'move_ids' in fields:
- picking = self.pool.get('stock.picking').browse(cr, uid, picking_id, context=context)
- moves = [self._partial_move_for(cr, uid, m) for m in picking.move_lines if m.state not in ('done','cancel')]
- res.update(move_ids=moves)
- if 'date' in fields:
- res.update(date=time.strftime(DEFAULT_SERVER_DATETIME_FORMAT))
- return res
-
- def _product_cost_for_average_update(self, cr, uid, move):
- """Returns product cost and currency ID for the given move, suited for re-computing
- the average product cost.
-
- :return: map of the form::
-
- {'cost': 123.34,
- 'currency': 42}
- """
- # Currently, the cost on the product form is supposed to be expressed in the currency
- # of the company owning the product. If not set, we fall back to the picking's company,
- # which should work in simple cases.
- product_currency_id = move.product_id.company_id.currency_id and move.product_id.company_id.currency_id.id
- picking_currency_id = move.picking_id.company_id.currency_id and move.picking_id.company_id.currency_id.id
- return {'cost': move.product_id.standard_price,
- 'currency': product_currency_id or picking_currency_id or False}
-
- def _partial_move_for(self, cr, uid, move):
- partial_move = {
- 'product_id' : move.product_id.id,
- 'quantity' : move.product_qty if move.state == 'assigned' or move.picking_id.type == 'in' else 0,
- 'product_uom' : move.product_uom.id,
- 'prodlot_id' : move.prodlot_id.id,
- 'move_id' : move.id,
- 'location_id' : move.location_id.id,
- 'location_dest_id' : move.location_dest_id.id,
- }
- if move.picking_id.type == 'in' and move.product_id.cost_method == 'average':
- partial_move.update(update_cost=True, **self._product_cost_for_average_update(cr, uid, move))
- return partial_move
-
- def do_partial(self, cr, uid, ids, context=None):
- assert len(ids) == 1, 'Partial picking processing may only be done one at a time.'
- stock_picking = self.pool.get('stock.picking')
- stock_move = self.pool.get('stock.move')
- uom_obj = self.pool.get('product.uom')
- partial = self.browse(cr, uid, ids[0], context=context)
- partial_data = {
- 'delivery_date' : partial.date
- }
- picking_type = partial.picking_id.type
- for wizard_line in partial.move_ids:
- line_uom = wizard_line.product_uom
- move_id = wizard_line.move_id.id
-
- #Quantiny must be Positive
- if wizard_line.quantity < 0:
- raise osv.except_osv(_('Warning!'), _('Please provide proper Quantity.'))
-
- #Compute the quantity for respective wizard_line in the line uom (this jsut do the rounding if necessary)
- qty_in_line_uom = uom_obj._compute_qty(cr, uid, line_uom.id, wizard_line.quantity, line_uom.id)
-
- if line_uom.factor and line_uom.factor <> 0:
- if float_compare(qty_in_line_uom, wizard_line.quantity, precision_rounding=line_uom.rounding) != 0:
- raise osv.except_osv(_('Warning!'), _('The unit of measure rounding does not allow you to ship "%s %s", only rounding of "%s %s" is accepted by the Unit of Measure.') % (wizard_line.quantity, line_uom.name, line_uom.rounding, line_uom.name))
- if move_id:
- #Check rounding Quantity.ex.
- #picking: 1kg, uom kg rounding = 0.01 (rounding to 10g),
- #partial delivery: 253g
- #=> result= refused, as the qty left on picking would be 0.747kg and only 0.75 is accepted by the uom.
- initial_uom = wizard_line.move_id.product_uom
- #Compute the quantity for respective wizard_line in the initial uom
- qty_in_initial_uom = uom_obj._compute_qty(cr, uid, line_uom.id, wizard_line.quantity, initial_uom.id)
- without_rounding_qty = (wizard_line.quantity / line_uom.factor) * initial_uom.factor
- if float_compare(qty_in_initial_uom, without_rounding_qty, precision_rounding=initial_uom.rounding) != 0:
- raise osv.except_osv(_('Warning!'), _('The rounding of the initial uom does not allow you to ship "%s %s", as it would let a quantity of "%s %s" to ship and only rounding of "%s %s" is accepted by the uom.') % (wizard_line.quantity, line_uom.name, wizard_line.move_id.product_qty - without_rounding_qty, initial_uom.name, initial_uom.rounding, initial_uom.name))
- else:
- seq_obj_name = 'stock.picking.' + picking_type
- move_id = stock_move.create(cr,uid,{'name' : self.pool.get('ir.sequence').get(cr, uid, seq_obj_name),
- 'product_id': wizard_line.product_id.id,
- 'product_qty': wizard_line.quantity,
- 'product_uom': wizard_line.product_uom.id,
- 'prodlot_id': wizard_line.prodlot_id.id,
- 'location_id' : wizard_line.location_id.id,
- 'location_dest_id' : wizard_line.location_dest_id.id,
- 'picking_id': partial.picking_id.id
- },context=context)
- stock_move.action_confirm(cr, uid, [move_id], context)
- partial_data['move%s' % (move_id)] = {
- 'product_id': wizard_line.product_id.id,
- 'product_qty': wizard_line.quantity,
- 'product_uom': wizard_line.product_uom.id,
- 'prodlot_id': wizard_line.prodlot_id.id,
- }
- if (picking_type == 'in') and (wizard_line.product_id.cost_method == 'average'):
- partial_data['move%s' % (wizard_line.move_id.id)].update(product_price=wizard_line.cost,
- product_currency=wizard_line.currency.id)
- stock_picking.do_partial(cr, uid, [partial.picking_id.id], partial_data, context=context)
- return {'type': 'ir.actions.act_window_close'}
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_partial_picking_view.xml b/addons/stock/wizard/stock_partial_picking_view.xml
deleted file mode 100644
index f4bab484483..00000000000
--- a/addons/stock/wizard/stock_partial_picking_view.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
- Process Picking
- stock.partial.picking
- form
- form
- new
-
-
-
-
- stock.partial.picking.form
- stock.partial.picking
-
-
-
-
-
-
diff --git a/addons/stock/wizard/stock_return_picking.py b/addons/stock/wizard/stock_return_picking.py
index 57ca03a8205..112b233bf1f 100644
--- a/addons/stock/wizard/stock_return_picking.py
+++ b/addons/stock/wizard/stock_return_picking.py
@@ -19,33 +19,29 @@
#
##############################################################################
-import time
-
-from openerp.osv import osv,fields
+from openerp.osv import osv, fields
from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
-class stock_return_picking_memory(osv.osv_memory):
- _name = "stock.return.picking.memory"
+class stock_return_picking_line(osv.osv_memory):
+ _name = "stock.return.picking.line"
_rec_name = 'product_id'
_columns = {
- 'product_id' : fields.many2one('product.product', string="Product", required=True),
- 'quantity' : fields.float("Quantity", digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
- 'wizard_id' : fields.many2one('stock.return.picking', string="Wizard"),
- 'move_id' : fields.many2one('stock.move', "Move"),
- 'prodlot_id': fields.related('move_id', 'prodlot_id', type='many2one', relation='stock.production.lot', string='Serial Number', readonly=True),
-
+ 'product_id': fields.many2one('product.product', string="Product", required=True),
+ 'quantity': fields.float("Quantity", digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
+ 'wizard_id': fields.many2one('stock.return.picking', string="Wizard"),
+ 'move_id': fields.many2one('stock.move', "Move"),
+ 'lot_id': fields.many2one('stock.production.lot', 'Serial Number', help="Used to choose the lot/serial number of the product returned"),
}
-
class stock_return_picking(osv.osv_memory):
_name = 'stock.return.picking'
_description = 'Return Picking'
_columns = {
- 'product_return_moves' : fields.one2many('stock.return.picking.memory', 'wizard_id', 'Moves'),
- 'invoice_state': fields.selection([('2binvoiced', 'To be refunded/invoiced'), ('none', 'No invoicing')], 'Invoicing',required=True),
+ 'product_return_moves': fields.one2many('stock.return.picking.line', 'wizard_id', 'Moves'),
+ 'move_dest_exists': fields.boolean('Chained Move Exists', readonly=True, help="Technical field used to hide help tooltip if not needed"),
}
def default_get(self, cr, uid, fields, context=None):
@@ -63,78 +59,102 @@ class stock_return_picking(osv.osv_memory):
context = {}
res = super(stock_return_picking, self).default_get(cr, uid, fields, context=context)
record_id = context and context.get('active_id', False) or False
+ uom_obj = self.pool.get('product.uom')
pick_obj = self.pool.get('stock.picking')
pick = pick_obj.browse(cr, uid, record_id, context=context)
+ quant_obj = self.pool.get("stock.quant")
+ chained_move_exist = False
if pick:
- if 'invoice_state' in fields:
- if pick.invoice_state=='invoiced':
- res.update({'invoice_state': '2binvoiced'})
- else:
- res.update({'invoice_state': 'none'})
- return_history = self.get_return_history(cr, uid, record_id, context)
- for line in pick.move_lines:
- qty = line.product_qty - return_history.get(line.id, 0)
- if qty > 0:
- result1.append({'product_id': line.product_id.id, 'quantity': qty,'move_id':line.id, 'prodlot_id': line.prodlot_id and line.prodlot_id.id or False})
+ if pick.state != 'done':
+ raise osv.except_osv(_('Warning!'), _("You may only return pickings that are Done!"))
+
+ for move in pick.move_lines:
+ if move.move_dest_id:
+ chained_move_exist = True
+ #Sum the quants in that location that can be returned (they should have been moved by the moves that were included in the returned picking)
+ qty = 0
+ quant_search = quant_obj.search(cr, uid, [('history_ids', 'in', move.id), ('qty', '>', 0.0), ('location_id', 'child_of', move.location_dest_id.id)], context=context)
+ for quant in quant_obj.browse(cr, uid, quant_search, context=context):
+ if not quant.reservation_id or quant.reservation_id.origin_returned_move_id.id != move.id:
+ qty += quant.qty
+ qty = uom_obj._compute_qty(cr, uid, move.product_id.uom_id.id, qty, move.product_uom.id)
+ result1.append({'product_id': move.product_id.id, 'quantity': qty, 'move_id': move.id})
+
+ if len(result1) == 0:
+ raise osv.except_osv(_('Warning!'), _("No products to return (only lines in Done state and not fully returned yet can be returned)!"))
if 'product_return_moves' in fields:
res.update({'product_return_moves': result1})
+ if 'move_dest_exists' in fields:
+ res.update({'move_dest_exists': chained_move_exist})
return res
- def view_init(self, cr, uid, fields_list, context=None):
- """
- Creates view dynamically and adding fields at runtime.
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param context: A standard dictionary
- @return: New arch of view with new columns.
- """
+ def _create_returns(self, cr, uid, ids, context=None):
if context is None:
context = {}
- res = super(stock_return_picking, self).view_init(cr, uid, fields_list, context=context)
- record_id = context and context.get('active_id', False)
- if record_id:
- pick_obj = self.pool.get('stock.picking')
- pick = pick_obj.browse(cr, uid, record_id, context=context)
- if pick.state not in ['done','confirmed','assigned']:
- raise osv.except_osv(_('Warning!'), _("You may only return pickings that are Confirmed, Available or Done!"))
- valid_lines = 0
- return_history = self.get_return_history(cr, uid, record_id, context)
- for m in pick.move_lines:
- if m.state == 'done' and m.product_qty * m.product_uom.factor > return_history.get(m.id, 0):
- valid_lines += 1
- if not valid_lines:
- raise osv.except_osv(_('Warning!'), _("No products to return (only lines in Done state and not fully returned yet can be returned)!"))
- return res
-
- def get_return_history(self, cr, uid, pick_id, context=None):
- """
- Get return_history.
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param pick_id: Picking id
- @param context: A standard dictionary
- @return: A dictionary which of values.
- """
+ record_id = context and context.get('active_id', False) or False
+ move_obj = self.pool.get('stock.move')
pick_obj = self.pool.get('stock.picking')
- pick = pick_obj.browse(cr, uid, pick_id, context=context)
- return_history = {}
- for m in pick.move_lines:
- if m.state == 'done':
- return_history[m.id] = 0
- for rec in m.move_history_ids2:
- # only take into account 'product return' moves, ignoring any other
- # kind of upstream moves, such as internal procurements, etc.
- # a valid return move will be the exact opposite of ours:
- # (src location, dest location) <=> (dest location, src location))
- if rec.location_dest_id.id == m.location_id.id \
- and rec.location_id.id == m.location_dest_id.id:
- return_history[m.id] += (rec.product_qty * rec.product_uom.factor)
- return return_history
+ uom_obj = self.pool.get('product.uom')
+ data_obj = self.pool.get('stock.return.picking.line')
+ pick = pick_obj.browse(cr, uid, record_id, context=context)
+ data = self.read(cr, uid, ids[0], context=context)
+ returned_lines = 0
+
+ # Cancel assignment of existing chained assigned moves
+ moves_to_unreserve = []
+ for move in pick.move_lines:
+ to_check_moves = [move.move_dest_id]
+ while to_check_moves:
+ current_move = to_check_moves.pop()
+ if current_move.state not in ('done', 'cancel') and current_move.reserved_quant_ids:
+ moves_to_unreserve.append(current_move.id)
+ split_move_ids = move_obj.search(cr, uid, [('split_from', '=', current_move.id)], context=context)
+ if split_move_ids:
+ to_check_moves += move_obj.browse(cr, uid, split_move_ids, context=context)
+
+ if moves_to_unreserve:
+ move_obj.do_unreserve(cr, uid, moves_to_unreserve, context=context)
+ #break the link between moves in order to be able to fix them later if needed
+ move_obj.write(cr, uid, moves_to_unreserve, {'move_orig_ids': False}, context=context)
+
+ #Create new picking for returned products
+ pick_type_id = pick.picking_type_id.return_picking_type_id and pick.picking_type_id.return_picking_type_id.id or pick.picking_type_id.id
+ new_picking = pick_obj.copy(cr, uid, pick.id, {
+ 'move_lines': [],
+ 'picking_type_id': pick_type_id,
+ 'state': 'draft',
+ 'origin': pick.name,
+ }, context=context)
+
+ for data_get in data_obj.browse(cr, uid, data['product_return_moves'], context=context):
+ move = data_get.move_id
+ if not move:
+ raise osv.except_osv(_('Warning !'), _("You have manually created product lines, please delete them to proceed"))
+ new_qty = data_get.quantity
+ if new_qty:
+ returned_lines += 1
+ move_obj.copy(cr, uid, move.id, {
+ 'product_id': data_get.product_id.id,
+ 'product_uom_qty': new_qty,
+ 'product_uos_qty': uom_obj._compute_qty(cr, uid, move.product_uom.id, new_qty, move.product_uos.id),
+ 'picking_id': new_picking,
+ 'state': 'draft',
+ 'location_id': move.location_dest_id.id,
+ 'location_dest_id': move.location_id.id,
+ 'origin_returned_move_id': move.id,
+ 'procure_method': 'make_to_stock',
+ 'restrict_lot_id': data_get.lot_id.id,
+ })
+
+ if not returned_lines:
+ raise osv.except_osv(_('Warning!'), _("Please specify at least one non-zero quantity."))
+
+ pick_obj.action_confirm(cr, uid, [new_picking], context=context)
+ pick_obj.action_assign(cr, uid, [new_picking], context)
+ return new_picking, pick_type_id
def create_returns(self, cr, uid, ids, context=None):
- """
+ """
Creates return picking.
@param self: The object pointer.
@param cr: A database cursor
@@ -143,89 +163,25 @@ class stock_return_picking(osv.osv_memory):
@param context: A standard dictionary
@return: A dictionary which of fields with values.
"""
- if context is None:
- context = {}
- record_id = context and context.get('active_id', False) or False
- move_obj = self.pool.get('stock.move')
- pick_obj = self.pool.get('stock.picking')
- uom_obj = self.pool.get('product.uom')
- data_obj = self.pool.get('stock.return.picking.memory')
- act_obj = self.pool.get('ir.actions.act_window')
- model_obj = self.pool.get('ir.model.data')
- pick = pick_obj.browse(cr, uid, record_id, context=context)
- data = self.read(cr, uid, ids[0], context=context)
- date_cur = time.strftime('%Y-%m-%d %H:%M:%S')
- set_invoice_state_to_none = True
- returned_lines = 0
-
-# Create new picking for returned products
-
- seq_obj_name = 'stock.picking'
- new_type = 'internal'
- if pick.type =='out':
- new_type = 'in'
- seq_obj_name = 'stock.picking.in'
- elif pick.type =='in':
- new_type = 'out'
- seq_obj_name = 'stock.picking.out'
- new_pick_name = self.pool.get('ir.sequence').get(cr, uid, seq_obj_name)
- new_picking = pick_obj.copy(cr, uid, pick.id, {
- 'name': _('%s-%s-return') % (new_pick_name, pick.name),
- 'move_lines': [],
- 'state':'draft',
- 'type': new_type,
- 'date':date_cur,
- 'invoice_state': data['invoice_state'],
- })
-
- val_id = data['product_return_moves']
- for v in val_id:
- data_get = data_obj.browse(cr, uid, v, context=context)
- mov_id = data_get.move_id.id
- if not mov_id:
- raise osv.except_osv(_('Warning !'), _("You have manually created product lines, please delete them to proceed"))
- new_qty = data_get.quantity
- move = move_obj.browse(cr, uid, mov_id, context=context)
- new_location = move.location_dest_id.id
- returned_qty = move.product_qty
- for rec in move.move_history_ids2:
- returned_qty -= rec.product_qty
-
- if returned_qty != new_qty:
- set_invoice_state_to_none = False
- if new_qty:
- returned_lines += 1
- new_move=move_obj.copy(cr, uid, move.id, {
- 'product_qty': new_qty,
- 'product_uos_qty': uom_obj._compute_qty(cr, uid, move.product_uom.id, new_qty, move.product_uos.id),
- 'picking_id': new_picking,
- 'state': 'draft',
- 'location_id': new_location,
- 'location_dest_id': move.location_id.id,
- 'date': date_cur,
- })
- move_obj.write(cr, uid, [move.id], {'move_history_ids2':[(4,new_move)]}, context=context)
- if not returned_lines:
- raise osv.except_osv(_('Warning!'), _("Please specify at least one non-zero quantity."))
-
- if set_invoice_state_to_none:
- pick_obj.write(cr, uid, [pick.id], {'invoice_state':'none'}, context=context)
- pick_obj.signal_button_confirm(cr, uid, [new_picking])
- pick_obj.force_assign(cr, uid, [new_picking], context)
- # Update view id in context, lp:702939
- model_list = {
- 'out': 'stock.picking.out',
- 'in': 'stock.picking.in',
- 'internal': 'stock.picking',
+ new_picking_id, pick_type_id = self._create_returns(cr, uid, ids, context=context)
+ # Override the context to disable all the potential filters that could have been set previously
+ ctx = {
+ 'search_default_picking_type_id': pick_type_id,
+ 'search_default_draft': False,
+ 'search_default_assigned': False,
+ 'search_default_confirmed': False,
+ 'search_default_ready': False,
+ 'search_default_late': False,
+ 'search_default_available': False,
}
return {
- 'domain': "[('id', 'in', ["+str(new_picking)+"])]",
+ 'domain': "[('id', 'in', [" + str(new_picking_id) + "])]",
'name': _('Returned Picking'),
- 'view_type':'form',
- 'view_mode':'tree,form',
- 'res_model': model_list.get(new_type, 'stock.picking'),
- 'type':'ir.actions.act_window',
- 'context':context,
+ 'view_type': 'form',
+ 'view_mode': 'tree,form',
+ 'res_model': 'stock.picking',
+ 'type': 'ir.actions.act_window',
+ 'context': ctx,
}
diff --git a/addons/stock/wizard/stock_return_picking_view.xml b/addons/stock/wizard/stock_return_picking_view.xml
index 2f1983fa46c..3baed374568 100644
--- a/addons/stock/wizard/stock_return_picking_view.xml
+++ b/addons/stock/wizard/stock_return_picking_view.xml
@@ -9,43 +9,27 @@
key2="client_action_multi"
multi="True"
id="act_stock_return_picking"/>
-
-
-
- stock.return.picking.memory.tree
- stock.return.picking.memory
+
+ stock.return.picking.line.tree
+ stock.return.picking.line
-
+
-
- stock.return.picking.memory.from
- stock.return.picking.memory
+
+ stock.return.picking.line.from
+ stock.return.picking.line
-
+
@@ -57,10 +41,18 @@
stock.return.picking
-
-
-
-
+
+
+
+
This picking appears to be chained with another operation. Later, if you receive the goods you are returning now, make sure to reverse the returned picking in order to avoid logistic rules to be applied again (which would create duplicated operations)
+
+
+
+
+
+
+
+
+
diff --git a/addons/stock/wizard/stock_splitinto.py b/addons/stock/wizard/stock_splitinto.py
deleted file mode 100644
index 76a80595be6..00000000000
--- a/addons/stock/wizard/stock_splitinto.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 fields, osv
-from openerp.tools.translate import _
-import openerp.addons.decimal_precision as dp
-
-class stock_split_into(osv.osv_memory):
- _name = "stock.split.into"
- _description = "Split into"
- _columns = {
- 'quantity': fields.float('Quantity',digits_compute=dp.get_precision('Product Unit of Measure')),
- }
- _defaults = {
- 'quantity': lambda *x: 0,
- }
-
- def split(self, cr, uid, data, context=None):
- if context is None:
- context = {}
-
- inventory_id = context.get('inventory_id', False)
- rec_id = context and context.get('active_ids', False)
- move_obj = self.pool.get('stock.move')
- track_obj = self.pool.get('stock.tracking')
- inventory_obj = self.pool.get('stock.inventory')
- quantity = self.browse(cr, uid, data[0], context=context).quantity or 0.0
- for move in move_obj.browse(cr, uid, rec_id, context=context):
- quantity_rest = move.product_qty - quantity
- #if move.tracking_id :
- # raise osv.except_osv(_('Error!'), _('The current move line is already assigned to a pack, please remove it first if you really want to change it ' \
- # 'for this product: "%s" (id: %d)') % \
- # (move.product_id.name, move.product_id.id,))
- if quantity > move.product_qty:
- raise osv.except_osv(_('Error!'), _('Total quantity after split exceeds the quantity to split ' \
- 'for this product: "%s" (id: %d).') % \
- (move.product_id.name, move.product_id.id,))
- if quantity > 0:
- move_obj.setlast_tracking(cr, uid, [move.id], context=context)
- move_obj.write(cr, uid, [move.id], {
- 'product_qty': quantity,
- 'product_uos_qty': quantity,
- 'product_uos': move.product_uom.id,
- })
-
- if quantity_rest>0:
- quantity_rest = move.product_qty - quantity
- tracking_id = track_obj.create(cr, uid, {}, context=context)
- if quantity == 0.0:
- move_obj.write(cr, uid, [move.id], {'tracking_id': tracking_id}, context=context)
- else:
- default_val = {
- 'product_qty': quantity_rest,
- 'product_uos_qty': quantity_rest,
- 'tracking_id': tracking_id,
- 'state': move.state,
- 'product_uos': move.product_uom.id
- }
- current_move = move_obj.copy(cr, uid, move.id, default_val, context=context)
- if inventory_id and current_move:
- inventory_obj.write(cr, uid, inventory_id, {'move_ids': [(4, current_move)]}, context=context)
-
-
- return {'type': 'ir.actions.act_window_close'}
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_splitinto_view.xml b/addons/stock/wizard/stock_splitinto_view.xml
deleted file mode 100644
index 541a0fd7200..00000000000
--- a/addons/stock/wizard/stock_splitinto_view.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- Split move
- stock.split.into
-
-
-
-
-
-
-
-
-
-
-
- Split into
- ir.actions.act_window
- stock.split.into
- form
- form
- new
-
-
-
diff --git a/addons/stock/wizard/stock_traceability.py b/addons/stock/wizard/stock_traceability.py
deleted file mode 100644
index c13fc1cf7a6..00000000000
--- a/addons/stock/wizard/stock_traceability.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 fields, osv
-from openerp.tools.translate import _
-
-class action_traceability(osv.osv_memory):
- """
- This class defines a function action_traceability for wizard
-
- """
- _name = "action.traceability"
- _description = "Action traceability "
-
- def action_traceability(self, cr, uid, ids, context=None):
- """ It traces the information of a product
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: List of IDs selected
- @param context: A standard dictionary
- @return: A dictionary of values
- """
- lot_id = ids
- if context is None:
- context = {}
- type1 = context.get('type', 'move_history_ids2')
- field = context.get('field', 'tracking_id')
- obj = self.pool.get('stock.move')
- ids = obj.search(cr, uid, [(field, 'in',lot_id)])
- cr.execute('select id from ir_ui_view where model=%s and field_parent=%s and type=%s', ('stock.move', type1, 'tree'))
- view_ids = cr.fetchone()
- view_id = view_ids and view_ids[0] or False
- value = {
- 'domain': "[('id','in',["+','.join(map(str, ids))+"])]",
- 'name': ((type1=='move_history_ids2') and _('Upstream Traceability')) or _('Downstream Traceability'),
- 'view_mode': 'tree',
- 'view_type': 'tree',
- 'res_model': 'stock.move',
- 'field_parent': type1,
- 'view_id': (view_id,'View'),
- 'type': 'ir.actions.act_window',
- 'nodestroy':True,
- }
- return value
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/stock_account/__init__.py b/addons/stock_account/__init__.py
new file mode 100644
index 00000000000..bc6c5f0e3a8
--- /dev/null
+++ b/addons/stock_account/__init__.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+import product
+import stock_account
+import stock
+import wizard
+import res_config
diff --git a/addons/stock_account/__openerp__.py b/addons/stock_account/__openerp__.py
new file mode 100644
index 00000000000..a2dab1289f4
--- /dev/null
+++ b/addons/stock_account/__openerp__.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+{
+ 'name': 'WMS Accounting',
+ 'version': '1.1',
+ 'author': 'OpenERP SA',
+ 'summary': 'Inventory, Logistic, Valuation, Accounting',
+ 'description': """
+WMS Accounting module
+======================
+This module makes the link between the 'stock' and 'account' modules and allows you to create accounting entries to value your stock movements
+
+Key Features
+------------
+* Stock Valuation (periodical or automatic)
+* Invoice from Picking
+
+Dashboard / Reports for Warehouse Management includes:
+------------------------------------------------------
+* Stock Inventory Value at given date (support dates in the past)
+ """,
+ 'website': 'http://www.openerp.com',
+ 'images': [],
+ 'depends': ['stock', 'account'],
+ 'category': 'Hidden',
+ 'sequence': 16,
+ 'demo': [
+ 'stock_account_demo.xml'
+ ],
+ 'data': [
+ 'security/stock_account_security.xml',
+ 'security/ir.model.access.csv',
+ 'stock_account_data.xml',
+ 'wizard/stock_change_standard_price_view.xml',
+ 'wizard/stock_invoice_onshipping_view.xml',
+ 'wizard/stock_valuation_history_view.xml',
+ 'product_data.xml',
+ 'product_view.xml',
+ 'stock_account_view.xml',
+ 'res_config_view.xml',
+ ],
+ 'test': [
+
+ ],
+ 'installable': True,
+ 'application': True,
+ 'auto_install': True,
+}
diff --git a/addons/stock_account/product.py b/addons/stock_account/product.py
new file mode 100644
index 00000000000..b043fc4094b
--- /dev/null
+++ b/addons/stock_account/product.py
@@ -0,0 +1,178 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 fields, osv
+from openerp.tools.translate import _
+
+class product_product(osv.osv):
+ _inherit = "product.product"
+
+ def get_product_accounts(self, cr, uid, product_id, context=None):
+ """ To get the stock input account, stock output account and stock journal related to product.
+ @param product_id: product id
+ @return: dictionary which contains information regarding stock input account, stock output account and stock journal
+ """
+ if context is None:
+ context = {}
+ product_obj = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
+
+ stock_input_acc = product_obj.property_stock_account_input and product_obj.property_stock_account_input.id or False
+ if not stock_input_acc:
+ stock_input_acc = product_obj.categ_id.property_stock_account_input_categ and product_obj.categ_id.property_stock_account_input_categ.id or False
+
+ stock_output_acc = product_obj.property_stock_account_output and product_obj.property_stock_account_output.id or False
+ if not stock_output_acc:
+ stock_output_acc = product_obj.categ_id.property_stock_account_output_categ and product_obj.categ_id.property_stock_account_output_categ.id or False
+
+ journal_id = product_obj.categ_id.property_stock_journal and product_obj.categ_id.property_stock_journal.id or False
+ account_valuation = product_obj.categ_id.property_stock_valuation_account_id and product_obj.categ_id.property_stock_valuation_account_id.id or False
+
+ if not all([stock_input_acc, stock_output_acc, account_valuation, journal_id]):
+ raise osv.except_osv(_('Error!'), _('''One of the following information is missing on the product or product category and prevents the accounting valuation entries to be created:
+ Product: %s
+ Stock Input Account: %s
+ Stock Output Account: %s
+ Stock Valuation Account: %s
+ Stock Journal: %s
+ ''') % (product_obj.name, stock_input_acc, stock_output_acc, account_valuation, journal_id))
+ return {
+ 'stock_account_input': stock_input_acc,
+ 'stock_account_output': stock_output_acc,
+ 'stock_journal': journal_id,
+ 'property_stock_valuation_account_id': account_valuation
+ }
+
+ def do_change_standard_price(self, cr, uid, ids, new_price, context=None):
+ """ Changes the Standard Price of Product and creates an account move accordingly."""
+ location_obj = self.pool.get('stock.location')
+ move_obj = self.pool.get('account.move')
+ move_line_obj = self.pool.get('account.move.line')
+ if context is None:
+ context = {}
+ user_company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id
+ loc_ids = location_obj.search(cr, uid, [('usage', '=', 'internal'), ('company_id', '=', user_company_id)])
+ for rec_id in ids:
+ datas = self.get_product_accounts(cr, uid, rec_id, context=context)
+ for location in location_obj.browse(cr, uid, loc_ids, context=context):
+ c = context.copy()
+ c.update({'location': location.id, 'compute_child': False})
+ product = self.browse(cr, uid, rec_id, context=c)
+
+ diff = product.standard_price - new_price
+ if not diff:
+ raise osv.except_osv(_('Error!'), _("No difference between standard price and new price!"))
+ qty = product.qty_available
+ if qty:
+ # Accounting Entries
+ move_vals = {
+ 'journal_id': datas['stock_journal'],
+ 'company_id': location.company_id.id,
+ }
+ move_id = move_obj.create(cr, uid, move_vals, context=context)
+
+ if diff > 0:
+ amount_diff = qty * diff
+ debit_account_id = datas['stock_account_input']
+ credit_account_id = datas['property_stock_valuation_account_id']
+ else:
+ amount_diff = qty * -diff
+ debit_account_id = datas['property_stock_valuation_account_id']
+ credit_account_id = datas['stock_account_output']
+
+ move_line_obj.create(cr, uid, {
+ 'name': _('Standard Price changed'),
+ 'account_id': debit_account_id,
+ 'debit': amount_diff,
+ 'credit': 0,
+ 'move_id': move_id,
+ }, context=context)
+ move_line_obj.create(cr, uid, {
+ 'name': _('Standard Price changed'),
+ 'account_id': credit_account_id,
+ 'debit': 0,
+ 'credit': amount_diff,
+ 'move_id': move_id
+ }, context=context)
+ self.write(cr, uid, rec_id, {'standard_price': new_price})
+ return True
+
+ _columns = {
+ 'valuation': fields.property(type='selection', selection=[('manual_periodic', 'Periodical (manual)'),
+ ('real_time', 'Real Time (automated)')], string='Inventory Valuation',
+ help="If real-time valuation is enabled for a product, the system will automatically write journal entries corresponding to stock moves, with product price as specified by the 'Costing Method'" \
+ "The inventory variation account set on the product category will represent the current inventory value, and the stock input and stock output account will hold the counterpart moves for incoming and outgoing products."
+ , required=True),
+ }
+
+
+class product_template(osv.osv):
+ _name = 'product.template'
+ _inherit = 'product.template'
+ _columns = {
+ 'cost_method': fields.property(type='selection', selection=[('standard', 'Standard Price'), ('average', 'Average Price'), ('real', 'Real Price')],
+ help="""Standard Price: The cost price is manually updated at the end of a specific period (usually every year).
+ Average Price: The cost price is recomputed at each incoming shipment and used for the product valuation.
+ Real Price: The cost price displayed is the price of the last outgoing product (will be use in case of inventory loss for example).""",
+ string="Costing Method", required=True),
+ 'property_stock_account_input': fields.property(
+ type='many2one',
+ relation='account.account',
+ string='Stock Input Account',
+ help="When doing real-time inventory valuation, counterpart journal items for all incoming stock moves will be posted in this account, unless "
+ "there is a specific valuation account set on the source location. When not set on the product, the one from the product category is used."),
+ 'property_stock_account_output': fields.property(
+ type='many2one',
+ relation='account.account',
+ string='Stock Output Account',
+ help="When doing real-time inventory valuation, counterpart journal items for all outgoing stock moves will be posted in this account, unless "
+ "there is a specific valuation account set on the destination location. When not set on the product, the one from the product category is used."),
+ }
+
+
+class product_category(osv.osv):
+ _inherit = 'product.category'
+ _columns = {
+ 'property_stock_journal': fields.property(
+ relation='account.journal',
+ type='many2one',
+ string='Stock Journal',
+ help="When doing real-time inventory valuation, this is the Accounting Journal in which entries will be automatically posted when stock moves are processed."),
+ 'property_stock_account_input_categ': fields.property(
+ type='many2one',
+ relation='account.account',
+ string='Stock Input Account',
+ help="When doing real-time inventory valuation, counterpart journal items for all incoming stock moves will be posted in this account, unless "
+ "there is a specific valuation account set on the source location. This is the default value for all products in this category. It "
+ "can also directly be set on each product"),
+ 'property_stock_account_output_categ': fields.property(
+ type='many2one',
+ relation='account.account',
+ string='Stock Output Account',
+ help="When doing real-time inventory valuation, counterpart journal items for all outgoing stock moves will be posted in this account, unless "
+ "there is a specific valuation account set on the destination location. This is the default value for all products in this category. It "
+ "can also directly be set on each product"),
+ 'property_stock_valuation_account_id': fields.property(
+ type='many2one',
+ relation='account.account',
+ string="Stock Valuation Account",
+ help="When real-time inventory valuation is enabled on a product, this account will hold the current value of the products.",),
+ }
+
diff --git a/addons/stock/product_data.xml b/addons/stock_account/product_data.xml
similarity index 94%
rename from addons/stock/product_data.xml
rename to addons/stock_account/product_data.xml
index ae5a3478500..49a065488a1 100644
--- a/addons/stock/product_data.xml
+++ b/addons/stock_account/product_data.xml
@@ -5,7 +5,7 @@
property_stock_journal
-
+
diff --git a/addons/stock_account/product_view.xml b/addons/stock_account/product_view.xml
new file mode 100644
index 00000000000..e1e414698a5
--- /dev/null
+++ b/addons/stock_account/product_view.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+ product.category.stock.property.form.inherit
+ product.category
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ product.template.stock.property.form.inherit
+ product.template
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ product.product.standard.price.form.inherit
+ product.product
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ product.normal.stock.acc.property.form.inherit
+ product.product
+
+ 26
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/stock_account/res_config.py b/addons/stock_account/res_config.py
new file mode 100644
index 00000000000..a6076bebf94
--- /dev/null
+++ b/addons/stock_account/res_config.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Business Applications
+# Copyright (C) 2004-2012 OpenERP S.A. ().
+#
+# 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 fields, osv
+
+
+
+class stock_config_settings(osv.osv_memory):
+ _inherit = 'stock.config.settings'
+
+ _columns = {
+ 'group_stock_inventory_valuation': fields.boolean("Generate accounting entries per stock movement",
+ implied_group='stock_account.group_inventory_valuation',
+ help="""Allows to configure inventory valuations on products and product categories."""),
+ 'module_stock_invoice_directly': fields.boolean("Create and open the invoice when the user finish a delivery order",
+ help='This allows to automatically launch the invoicing wizard if the delivery is '
+ 'to be invoiced when you send or deliver goods.\n'
+ '-This installs the module stock_invoice_directly.'),
+ 'module_stock_landed_costs': fields.boolean("Calculate landed costs on products",
+ help="""Install the module that allows to affect landed costs on pickings, and split them onto the different products."""),
+ }
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_account/res_config_view.xml b/addons/stock_account/res_config_view.xml
new file mode 100644
index 00000000000..4a48349f8df
--- /dev/null
+++ b/addons/stock_account/res_config_view.xml
@@ -0,0 +1,31 @@
+
+
+
+ stock.config.settings.inherit
+ stock.config.settings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/stock_account/security/ir.model.access.csv b/addons/stock_account/security/ir.model.access.csv
new file mode 100644
index 00000000000..b1a572003a6
--- /dev/null
+++ b/addons/stock_account/security/ir.model.access.csv
@@ -0,0 +1,8 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_account_invoice_user,account.invoice stock user,account.model_account_invoice,stock.group_stock_user,1,1,1,0
+access_account_invoice_line_user,account.invoice.line stock user,account.model_account_invoice_line,stock.group_stock_user,1,1,1,0
+access_account_invoice_tax_user,account.invoice.tax stock user,account.model_account_invoice_tax,stock.group_stock_user,1,1,1,0
+access_account_journal_user,account.journal stock user,account.model_account_journal,stock.group_stock_user,1,0,0,0
+access_account_fiscalyear,account.fiscalyear stock user,account.model_account_fiscalyear,stock.group_stock_user,1,0,0,0
+access_account_account_stock_manager,account.account stock manager,account.model_account_account,stock.group_stock_manager,1,0,0,0
+access_stock_history_stock_manager,stock.history stock manager,model_stock_history,stock.group_stock_manager,1,0,0,0
diff --git a/addons/stock_account/security/stock_account_security.xml b/addons/stock_account/security/stock_account_security.xml
new file mode 100644
index 00000000000..97ecaecd278
--- /dev/null
+++ b/addons/stock_account/security/stock_account_security.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+ Manage Inventory Valuation and Costing Methods
+
+
+
+
+
diff --git a/addons/stock_account/stock.py b/addons/stock_account/stock.py
new file mode 100644
index 00000000000..db08ba39eb4
--- /dev/null
+++ b/addons/stock_account/stock.py
@@ -0,0 +1,270 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 fields, osv
+
+class stock_location_path(osv.osv):
+ _inherit = "stock.location.path"
+ _columns = {
+ 'invoice_state': fields.selection([
+ ("invoiced", "Invoiced"),
+ ("2binvoiced", "To Be Invoiced"),
+ ("none", "Not Applicable")], "Invoice Status",
+ required=True,),
+ }
+ _defaults = {
+ 'invoice_state': 'none',
+ }
+
+#----------------------------------------------------------
+# Procurement Rule
+#----------------------------------------------------------
+class procurement_rule(osv.osv):
+ _inherit = 'procurement.rule'
+ _columns = {
+ 'invoice_state': fields.selection([
+ ("invoiced", "Invoiced"),
+ ("2binvoiced", "To Be Invoiced"),
+ ("none", "Not Applicable")], "Invoice Status",
+ required=True),
+ }
+ _defaults = {
+ 'invoice_state': 'none',
+ }
+
+#----------------------------------------------------------
+# Procurement Order
+#----------------------------------------------------------
+
+
+class procurement_order(osv.osv):
+ _inherit = "procurement.order"
+ _columns = {
+ 'invoice_state': fields.selection([("invoiced", "Invoiced"),
+ ("2binvoiced", "To Be Invoiced"),
+ ("none", "Not Applicable")
+ ], "Invoice Control", required=True),
+ }
+
+ def _run_move_create(self, cr, uid, procurement, context=None):
+ res = super(procurement_order, self)._run_move_create(cr, uid, procurement, context=context)
+ res.update({'invoice_state': (procurement.rule_id.invoice_state in ('none', False) and procurement.invoice_state or procurement.rule_id.invoice_state) or 'none'})
+ return res
+
+ _defaults = {
+ 'invoice_state': 'none'
+ }
+
+
+#----------------------------------------------------------
+# Move
+#----------------------------------------------------------
+
+class stock_move(osv.osv):
+ _inherit = "stock.move"
+ _columns = {
+ 'invoice_state': fields.selection([("invoiced", "Invoiced"),
+ ("2binvoiced", "To Be Invoiced"),
+ ("none", "Not Applicable")], "Invoice Control",
+ select=True, required=True, track_visibility='onchange',
+ states={'draft': [('readonly', False)]}),
+ }
+ _defaults = {
+ 'invoice_state': lambda *args, **argv: 'none'
+ }
+
+ def _get_master_data(self, cr, uid, move, company, context=None):
+ ''' returns a tupple (browse_record(res.partner), ID(res.users), ID(res.currency)'''
+ return move.picking_id.partner_id, uid, company.currency_id.id
+
+ def _create_invoice_line_from_vals(self, cr, uid, move, invoice_line_vals, context=None):
+ return self.pool.get('account.invoice.line').create(cr, uid, invoice_line_vals, context=context)
+
+ def _get_price_unit_invoice(self, cr, uid, move_line, type, context=None):
+ """ Gets price unit for invoice
+ @param move_line: Stock move lines
+ @param type: Type of invoice
+ @return: The price unit for the move line
+ """
+ if context is None:
+ context = {}
+ if type in ('in_invoice', 'in_refund'):
+ # Take the user company and pricetype
+ context['currency_id'] = move_line.company_id.currency_id.id
+ amount_unit = move_line.product_id.price_get('standard_price', context=context)[move_line.product_id.id]
+ return amount_unit
+ return move_line.product_id.list_price
+
+ def _get_invoice_line_vals(self, cr, uid, move, partner, inv_type, context=None):
+ fp_obj = self.pool.get('account.fiscal.position')
+ # Get account_id
+ if inv_type in ('out_invoice', 'out_refund'):
+ account_id = move.product_id.property_account_income.id
+ if not account_id:
+ account_id = move.product_id.categ_id.property_account_income_categ.id
+ else:
+ account_id = move.product_id.property_account_expense.id
+ if not account_id:
+ account_id = move.product_id.categ_id.property_account_expense_categ.id
+ fiscal_position = partner.property_account_position
+ account_id = fp_obj.map_account(cr, uid, fiscal_position, account_id)
+
+ # set UoS if it's a sale and the picking doesn't have one
+ uos_id = move.product_uom.id
+ quantity = move.product_uom_qty
+ if move.product_uos:
+ uos_id = move.product_uos.id
+ quantity = move.product_uos_qty
+ return {
+ 'name': move.name,
+ 'account_id': account_id,
+ 'product_id': move.product_id.id,
+ 'uos_id': uos_id,
+ 'quantity': quantity,
+ 'price_unit': self._get_price_unit_invoice(cr, uid, move, inv_type),
+ 'discount': 0.0,
+ 'account_analytic_id': False,
+ }
+
+#----------------------------------------------------------
+# Picking
+#----------------------------------------------------------
+
+class stock_picking(osv.osv):
+ _inherit = 'stock.picking'
+ def __get_invoice_state(self, cr, uid, ids, name, arg, context=None):
+ result = {}
+ for pick in self.browse(cr, uid, ids, context=context):
+ result[pick.id] = 'none'
+ for move in pick.move_lines:
+ if move.invoice_state == 'invoiced':
+ result[pick.id] = 'invoiced'
+ elif move.invoice_state == '2binvoiced':
+ result[pick.id] = '2binvoiced'
+ break
+ return result
+
+ def __get_picking_move(self, cr, uid, ids, context={}):
+ res = []
+ for move in self.pool.get('stock.move').browse(cr, uid, ids, context=context):
+ if move.picking_id:
+ res.append(move.picking_id.id)
+ return res
+
+ _columns = {
+ 'invoice_state': fields.function(__get_invoice_state, type='selection', selection=[
+ ("invoiced", "Invoiced"),
+ ("2binvoiced", "To Be Invoiced"),
+ ("none", "Not Applicable")
+ ], string="Invoice Control", required=True,
+
+ store={
+ 'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['state'], 10),
+ 'stock.move': (__get_picking_move, ['picking_id', 'invoice_state'], 10),
+ },
+ ),
+ }
+ _defaults = {
+ 'invoice_state': lambda *args, **argv: 'none'
+ }
+
+ def _create_invoice_from_picking(self, cr, uid, picking, vals, context=None):
+ ''' This function simply creates the invoice from the given values. It is overriden in delivery module to add the delivery costs.
+ '''
+ invoice_obj = self.pool.get('account.invoice')
+ return invoice_obj.create(cr, uid, vals, context=context)
+
+ def action_invoice_create(self, cr, uid, ids, journal_id, group=False, type='out_invoice', context=None):
+ """ Creates invoice based on the invoice state selected for picking.
+ @param journal_id: Id of journal
+ @param group: Whether to create a group invoice or not
+ @param type: Type invoice to be created
+ @return: Ids of created invoices for the pickings
+ """
+ context = context or {}
+ todo = {}
+ for picking in self.browse(cr, uid, ids, context=context):
+ key = group and picking.id or True
+ for move in picking.move_lines:
+ if move.procurement_id and (move.procurement_id.invoice_state == '2binvoiced') or move.invoice_state == '2binvoiced':
+ if (move.state != 'cancel') and not move.scrapped:
+ todo.setdefault(key, [])
+ todo[key].append(move)
+ invoices = []
+ for moves in todo.values():
+ invoices = self._invoice_create_line(cr, uid, moves, journal_id, type, context=context)
+ return invoices
+
+ def _get_invoice_vals(self, cr, uid, key, inv_type, journal_id, origin, context=None):
+ if context is None:
+ context = {}
+ partner, currency_id, company_id, user_id = key
+ if inv_type in ('out_invoice', 'out_refund'):
+ account_id = partner.property_account_receivable.id
+ payment_term = partner.property_payment_term.id or False
+ else:
+ account_id = partner.property_account_payable.id
+ payment_term = partner.property_supplier_payment_term.id or False
+ return {
+ 'origin': origin,
+ 'date_invoice': context.get('date_inv', False),
+ 'user_id': user_id,
+ 'partner_id': partner.id,
+ 'account_id': account_id,
+ 'payment_term': payment_term,
+ 'type': inv_type,
+ 'fiscal_position': partner.property_account_position.id,
+ 'company_id': company_id,
+ 'currency_id': currency_id,
+ 'journal_id': journal_id,
+ }
+
+ def _invoice_create_line(self, cr, uid, moves, journal_id, inv_type='out_invoice', context=None):
+ invoice_obj = self.pool.get('account.invoice')
+ move_obj = self.pool.get('stock.move')
+ invoices = {}
+ for move in moves:
+ company = move.company_id
+ origin = move.picking_id.name
+ partner, user_id, currency_id = move_obj._get_master_data(cr, uid, move, company, context=context)
+
+ key = (partner, currency_id, company.id, user_id)
+
+ if key not in invoices:
+ # Get account and payment terms
+ invoice_vals = self._get_invoice_vals(cr, uid, key, inv_type, journal_id, origin, context=context)
+ invoice_id = self._create_invoice_from_picking(cr, uid, move.picking_id, invoice_vals, context=context)
+ invoices[key] = invoice_id
+
+ invoice_line_vals = move_obj._get_invoice_line_vals(cr, uid, move, partner, inv_type, context=context)
+ invoice_line_vals['invoice_id'] = invoices[key]
+ invoice_line_vals['origin'] = origin
+
+ move_obj._create_invoice_line_from_vals(cr, uid, move, invoice_line_vals, context=context)
+
+ move_obj.write(cr, uid, move.id, {'invoice_state': 'invoiced'}, context=context)
+ if move.procurement_id:
+ self.pool.get('procurement.order').write(cr, uid, [move.procurement_id.id], {
+ 'invoice_state': 'invoiced',
+ }, context=context)
+
+ invoice_obj.button_compute(cr, uid, invoices.values(), context=context, set_total=(inv_type in ('in_invoice', 'in_refund')))
+ return invoices.values()
diff --git a/addons/stock_account/stock_account.py b/addons/stock_account/stock_account.py
new file mode 100644
index 00000000000..6c6a20e0e59
--- /dev/null
+++ b/addons/stock_account/stock_account.py
@@ -0,0 +1,305 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 fields, osv
+from openerp.tools.translate import _
+from openerp import SUPERUSER_ID
+import logging
+_logger = logging.getLogger(__name__)
+
+
+class stock_inventory(osv.osv):
+ _inherit = "stock.inventory"
+ _columns = {
+ 'period_id': fields.many2one('account.period', 'Force Valuation Period', help="Choose the accounting period where you want to value the stock moves created by the inventory instead of the default one (chosen by the inventory end date)"),
+ }
+
+ def post_inventory(self, cr, uid, inv, context=None):
+ if context is None:
+ context = {}
+ ctx = context.copy()
+ if inv.period_id:
+ ctx['force_period'] = inv.period_id.id
+ return super(stock_inventory, self).post_inventory(cr, uid, inv, context=ctx)
+
+
+#----------------------------------------------------------
+# Stock Location
+#----------------------------------------------------------
+
+class stock_location(osv.osv):
+ _inherit = "stock.location"
+
+ _columns = {
+ 'valuation_in_account_id': fields.many2one('account.account', 'Stock Valuation Account (Incoming)', domain=[('type', '=', 'other')],
+ help="Used for real-time inventory valuation. When set on a virtual location (non internal type), "
+ "this account will be used to hold the value of products being moved from an internal location "
+ "into this location, instead of the generic Stock Output Account set on the product. "
+ "This has no effect for internal locations."),
+ 'valuation_out_account_id': fields.many2one('account.account', 'Stock Valuation Account (Outgoing)', domain=[('type', '=', 'other')],
+ help="Used for real-time inventory valuation. When set on a virtual location (non internal type), "
+ "this account will be used to hold the value of products being moved out of this location "
+ "and into an internal location, instead of the generic Stock Output Account set on the product. "
+ "This has no effect for internal locations."),
+ }
+
+#----------------------------------------------------------
+# Quants
+#----------------------------------------------------------
+
+class stock_quant(osv.osv):
+ _inherit = "stock.quant"
+
+ def _get_inventory_value(self, cr, uid, quant, context=None):
+ if quant.product_id.cost_method in ('real'):
+ return quant.cost * quant.qty
+ return super(stock_quant, self)._get_inventory_value(cr, uid, quant, context=context)
+
+ def _price_update(self, cr, uid, quant_ids, newprice, context=None):
+ ''' This function is called at the end of negative quant reconciliation and does the accounting entries adjustemnts and the update of the product cost price if needed
+ '''
+ if context is None:
+ context = {}
+ super(stock_quant, self)._price_update(cr, uid, quant_ids, newprice, context=context)
+ ctx = context.copy()
+ for quant in self.browse(cr, uid, quant_ids, context=context):
+ move = self._get_latest_move(cr, uid, quant, context=context)
+ # this is where we post accounting entries for adjustment
+ ctx['force_valuation_amount'] = newprice - quant.cost
+ self._account_entry_move(cr, uid, [quant], move, context=ctx)
+ #update the standard price of the product, only if we would have done it if we'd have had enough stock at first, which means
+ #1) the product cost's method is 'real'
+ #2) we just fixed a negative quant caused by an outgoing shipment
+ if quant.product_id.cost_method == 'real' and quant.location_id.usage != 'internal':
+ self.pool.get('stock.move')._store_average_cost_price(cr, uid, move, context=context)
+
+ def _account_entry_move(self, cr, uid, quants, move, context=None):
+ """
+ Accounting Valuation Entries
+
+ quants: browse record list of Quants to create accounting valuation entries for. Unempty and all quants are supposed to have the same location id (thay already moved in)
+ move: Move to use. browse record
+ """
+ if context is None:
+ context = {}
+ location_obj = self.pool.get('stock.location')
+ location_from = move.location_id
+ location_to = quants[0].location_id
+ company_from = location_obj._location_owner(cr, uid, location_from, context=context)
+ company_to = location_obj._location_owner(cr, uid, location_to, context=context)
+
+ if move.product_id.valuation != 'real_time':
+ return False
+ for q in quants:
+ if q.owner_id:
+ #if the quant isn't owned by the company, we don't make any valuation entry
+ return False
+ if q.qty <= 0:
+ #we don't make any stock valuation for negative quants because the valuation is already made for the counterpart.
+ #At that time the valuation will be made at the product cost price and afterward there will be new accounting entries
+ #to make the adjustments when we know the real cost price.
+ return False
+
+ #in case of routes making the link between several warehouse of the same company, the transit location belongs to this company, so we don't need to create accounting entries
+ # Create Journal Entry for products arriving in the company
+ if company_to and (move.location_id.usage not in ('internal', 'transit') and move.location_dest_id.usage == 'internal' or company_from != company_to):
+ ctx = context.copy()
+ ctx['force_company'] = company_to.id
+ journal_id, acc_src, acc_dest, acc_valuation = self._get_accounting_data_for_valuation(cr, uid, move, context=ctx)
+ if location_from and location_from.usage == 'customer':
+ #goods returned from customer
+ self._create_account_move_line(cr, uid, quants, move, acc_dest, acc_valuation, journal_id, context=ctx)
+ else:
+ self._create_account_move_line(cr, uid, quants, move, acc_src, acc_valuation, journal_id, context=ctx)
+
+ # Create Journal Entry for products leaving the company
+ if company_from and (move.location_id.usage == 'internal' and move.location_dest_id.usage not in ('internal', 'transit') or company_from != company_to):
+ ctx = context.copy()
+ ctx['force_company'] = company_from.id
+ journal_id, acc_src, acc_dest, acc_valuation = self._get_accounting_data_for_valuation(cr, uid, move, context=ctx)
+ if location_to and location_to.usage == 'supplier':
+ #goods returned to supplier
+ self._create_account_move_line(cr, uid, quants, move, acc_valuation, acc_src, journal_id, context=ctx)
+ else:
+ self._create_account_move_line(cr, uid, quants, move, acc_valuation, acc_dest, journal_id, context=ctx)
+
+ def _quant_create(self, cr, uid, qty, move, lot_id=False, owner_id=False, src_package_id=False, dest_package_id=False, force_location_from=False, force_location_to=False, context=None):
+ quant = super(stock_quant, self)._quant_create(cr, uid, qty, move, lot_id=lot_id, owner_id=owner_id, src_package_id=src_package_id, dest_package_id=dest_package_id, force_location_from=force_location_from, force_location_to=force_location_to, context=context)
+ if move.product_id.valuation == 'real_time':
+ self._account_entry_move(cr, uid, [quant], move, context)
+ return quant
+
+ def move_quants_write(self, cr, uid, quants, move, location_dest_id, dest_package_id, context=None):
+ res = super(stock_quant, self).move_quants_write(cr, uid, quants, move, location_dest_id, dest_package_id, context=context)
+ if move.product_id.valuation == 'real_time':
+ self._account_entry_move(cr, uid, quants, move, context=context)
+ return res
+
+
+ def _get_accounting_data_for_valuation(self, cr, uid, move, context=None):
+ """
+ Return the accounts and journal to use to post Journal Entries for the real-time
+ valuation of the quant.
+
+ :param context: context dictionary that can explicitly mention the company to consider via the 'force_company' key
+ :returns: journal_id, source account, destination account, valuation account
+ :raise: osv.except_osv() is any mandatory account or journal is not defined.
+ """
+ product_obj = self.pool.get('product.product')
+ accounts = product_obj.get_product_accounts(cr, uid, move.product_id.id, context)
+ if move.location_id.valuation_out_account_id:
+ acc_src = move.location_id.valuation_out_account_id.id
+ else:
+ acc_src = accounts['stock_account_input']
+
+ if move.location_dest_id.valuation_in_account_id:
+ acc_dest = move.location_dest_id.valuation_in_account_id.id
+ else:
+ acc_dest = accounts['stock_account_output']
+
+ acc_valuation = accounts.get('property_stock_valuation_account_id', False)
+ journal_id = accounts['stock_journal']
+ return journal_id, acc_src, acc_dest, acc_valuation
+
+ def _prepare_account_move_line(self, cr, uid, move, qty, cost, credit_account_id, debit_account_id, context=None):
+ """
+ Generate the account.move.line values to post to track the stock valuation difference due to the
+ processing of the given quant.
+ """
+ if context is None:
+ context = {}
+ currency_obj = self.pool.get('res.currency')
+ if context.get('force_valuation_amount'):
+ valuation_amount = context.get('force_valuation_amount')
+ else:
+ valuation_amount = move.product_id.cost_method == 'real' and cost or move.product_id.standard_price
+ #the standard_price of the product may be in another decimal precision, or not compatible with the coinage of
+ #the company currency... so we need to use round() before creating the accounting entries.
+ valuation_amount = currency_obj.round(cr, uid, move.company_id.currency_id, valuation_amount * qty)
+ partner_id = (move.picking_id.partner_id and self.pool.get('res.partner')._find_accounting_partner(move.picking_id.partner_id).id) or False
+ debit_line_vals = {
+ 'name': move.name,
+ 'product_id': move.product_id.id,
+ 'quantity': qty,
+ 'product_uom_id': move.product_id.uom_id.id,
+ 'ref': move.picking_id and move.picking_id.name or False,
+ 'date': move.date,
+ 'partner_id': partner_id,
+ 'debit': valuation_amount > 0 and valuation_amount or 0,
+ 'credit': valuation_amount < 0 and -valuation_amount or 0,
+ 'account_id': debit_account_id,
+ }
+ credit_line_vals = {
+ 'name': move.name,
+ 'product_id': move.product_id.id,
+ 'quantity': qty,
+ 'product_uom_id': move.product_id.uom_id.id,
+ 'ref': move.picking_id and move.picking_id.name or False,
+ 'date': move.date,
+ 'partner_id': partner_id,
+ 'credit': valuation_amount > 0 and valuation_amount or 0,
+ 'debit': valuation_amount < 0 and -valuation_amount or 0,
+ 'account_id': credit_account_id,
+ }
+ return [(0, 0, debit_line_vals), (0, 0, credit_line_vals)]
+
+ def _create_account_move_line(self, cr, uid, quants, move, credit_account_id, debit_account_id, journal_id, context=None):
+ #group quants by cost
+ quant_cost_qty = {}
+ for quant in quants:
+ if quant_cost_qty.get(quant.cost):
+ quant_cost_qty[quant.cost] += quant.qty
+ else:
+ quant_cost_qty[quant.cost] = quant.qty
+ move_obj = self.pool.get('account.move')
+ for cost, qty in quant_cost_qty.items():
+ move_lines = self._prepare_account_move_line(cr, uid, move, qty, cost, credit_account_id, debit_account_id, context=context)
+ period_id = context.get('force_period', self.pool.get('account.period').find(cr, uid, move.date, context=context)[0])
+ move_obj.create(cr, uid, {'journal_id': journal_id,
+ 'line_id': move_lines,
+ 'period_id': period_id,
+ 'date': move.date,
+ 'ref': move.picking_id and move.picking_id.name}, context=context)
+
+ #def _reconcile_single_negative_quant(self, cr, uid, to_solve_quant, quant, quant_neg, qty, context=None):
+ # move = self._get_latest_move(cr, uid, to_solve_quant, context=context)
+ # quant_neg_position = quant_neg.negative_dest_location_id.usage
+ # remaining_solving_quant, remaining_to_solve_quant = super(stock_quant, self)._reconcile_single_negative_quant(cr, uid, to_solve_quant, quant, quant_neg, qty, context=context)
+ # #update the standard price of the product, only if we would have done it if we'd have had enough stock at first, which means
+ # #1) there isn't any negative quant anymore
+ # #2) the product cost's method is 'real'
+ # #3) we just fixed a negative quant caused by an outgoing shipment
+ # if not remaining_to_solve_quant and move.product_id.cost_method == 'real' and quant_neg_position != 'internal':
+ # self.pool.get('stock.move')._store_average_cost_price(cr, uid, move, context=context)
+ # return remaining_solving_quant, remaining_to_solve_quant
+
+class stock_move(osv.osv):
+ _inherit = "stock.move"
+
+ def action_done(self, cr, uid, ids, context=None):
+ self.product_price_update_before_done(cr, uid, ids, context=context)
+ super(stock_move, self).action_done(cr, uid, ids, context=context)
+ self.product_price_update_after_done(cr, uid, ids, context=context)
+
+ def _store_average_cost_price(self, cr, uid, move, context=None):
+ ''' move is a browe record '''
+ product_obj = self.pool.get('product.product')
+ move.refresh()
+ if any([q.qty <= 0 for q in move.quant_ids]):
+ #if there is a negative quant, the standard price shouldn't be updated
+ return
+ #Note: here we can't store a quant.cost directly as we may have moved out 2 units (1 unit to 5€ and 1 unit to 7€) and in case of a product return of 1 unit, we can't know which of the 2 costs has to be used (5€ or 7€?). So at that time, thanks to the average valuation price we are storing we will svaluate it at 6€
+ average_valuation_price = 0.0
+ for q in move.quant_ids:
+ average_valuation_price += q.qty * q.cost
+ average_valuation_price = average_valuation_price / move.product_qty
+ # Write the standard price, as SUPERUSER_ID because a warehouse manager may not have the right to write on products
+ product_obj.write(cr, SUPERUSER_ID, [move.product_id.id], {'standard_price': average_valuation_price}, context=context)
+ self.write(cr, uid, [move.id], {'price_unit': average_valuation_price}, context=context)
+
+ def product_price_update_before_done(self, cr, uid, ids, context=None):
+ product_obj = self.pool.get('product.product')
+ for move in self.browse(cr, uid, ids, context=context):
+ #adapt standard price on incomming moves if the product cost_method is 'average'
+ if (move.location_id.usage == 'supplier') and (move.product_id.cost_method == 'average'):
+ product = move.product_id
+ company_currency_id = move.company_id.currency_id.id
+ ctx = {'currency_id': company_currency_id}
+ product_avail = product.qty_available
+ if product.qty_available <= 0:
+ new_std_price = move.price_unit
+ else:
+ # Get the standard price
+ amount_unit = product.standard_price
+ new_std_price = ((amount_unit * product_avail) + (move.price_unit * move.product_qty)) / (product_avail + move.product_qty)
+ # Write the standard price, as SUPERUSER_ID because a warehouse manager may not have the right to write on products
+ product_obj.write(cr, SUPERUSER_ID, [product.id], {'standard_price': new_std_price}, context=context)
+
+ def product_price_update_after_done(self, cr, uid, ids, context=None):
+ '''
+ This method adapts the price on the product when necessary
+ '''
+ for move in self.browse(cr, uid, ids, context=context):
+ #adapt standard price on outgoing moves if the product cost_method is 'real', so that a return
+ #or an inventory loss is made using the last value used for an outgoing valuation.
+ if move.product_id.cost_method == 'real' and move.location_dest_id.usage != 'internal':
+ #store the average price of the move on the move and product form
+ self._store_average_cost_price(cr, uid, move, context=context)
diff --git a/addons/stock_account/stock_account_data.xml b/addons/stock_account/stock_account_data.xml
new file mode 100644
index 00000000000..4dea1742498
--- /dev/null
+++ b/addons/stock_account/stock_account_data.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+ stock journal sequence
+
+ STJ/%(year)s/
+
+
+ Stock Journal
+ STJ
+ general
+
+
+
+
+ Cost Method Property
+
+ standard
+ selection
+
+
+ Valuation Property
+
+ manual_periodic
+ selection
+
+
+
+
diff --git a/addons/stock_account/stock_account_demo.xml b/addons/stock_account/stock_account_demo.xml
new file mode 100644
index 00000000000..97a2523b7b4
--- /dev/null
+++ b/addons/stock_account/stock_account_demo.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ property_stock_valuation_account_id
+
+
+
+
+
+
+
+
diff --git a/addons/stock_account/stock_account_view.xml b/addons/stock_account/stock_account_view.xml
new file mode 100644
index 00000000000..3b3ab37b212
--- /dev/null
+++ b/addons/stock_account/stock_account_view.xml
@@ -0,0 +1,75 @@
+
+
+
+
+ stock.inventory.form.inherit
+ stock.inventory
+
+
+
+
+
+
+
+
+
+ stock.location.form.inherit
+ stock.location
+
+
+
+
+
+
+
+
+
+
+
+
+ stock.picking.form.inherit
+ stock.picking
+
+
+
+
+
+
+
+
+
+
+
+
+
+ stock.move.form.inherit
+ stock.move
+
+
+
+
+
+
+
+
+ stock.procurement.rule.inherit.form
+ procurement.rule
+
+
+
+
+
+
+
+
+ stock.location.path.inherit.form
+ stock.location.path
+
+
+
+
+
+
+
+
+
diff --git a/addons/stock_account/wizard/__init__.py b/addons/stock_account/wizard/__init__.py
new file mode 100644
index 00000000000..87f0841e3c5
--- /dev/null
+++ b/addons/stock_account/wizard/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+import stock_change_standard_price
+import stock_invoice_onshipping
+import stock_valuation_history
diff --git a/addons/stock/wizard/stock_change_standard_price.py b/addons/stock_account/wizard/stock_change_standard_price.py
similarity index 53%
rename from addons/stock/wizard/stock_change_standard_price.py
rename to addons/stock_account/wizard/stock_change_standard_price.py
index f83fd044aca..6b99d596b4a 100644
--- a/addons/stock/wizard/stock_change_standard_price.py
+++ b/addons/stock_account/wizard/stock_change_standard_price.py
@@ -28,13 +28,9 @@ class change_standard_price(osv.osv_memory):
_description = "Change Standard Price"
_columns = {
'new_price': fields.float('Price', required=True, digits_compute=dp.get_precision('Product Price'),
- help="If cost price is increased, stock variation account will be debited "
- "and stock output account will be credited with the value = (difference of amount * quantity available).\n"
- "If cost price is decreased, stock variation account will be creadited and stock input account will be debited."),
- 'stock_account_input':fields.many2one('account.account', 'Stock Input Account'),
- 'stock_account_output':fields.many2one('account.account', 'Stock Output Account'),
- 'stock_journal':fields.many2one('account.journal', 'Stock journal', required=True),
- 'enable_stock_in_out_acc':fields.boolean('Enable Related Account',),
+ help="If cost price is increased, stock variation account will be debited "
+ "and stock output account will be credited with the value = (difference of amount * quantity available).\n"
+ "If cost price is decreased, stock variation account will be creadited and stock input account will be debited."),
}
def default_get(self, cr, uid, fields, context=None):
@@ -52,45 +48,12 @@ class change_standard_price(osv.osv_memory):
product_obj = product_pool.browse(cr, uid, context.get('active_id', False))
res = super(change_standard_price, self).default_get(cr, uid, fields, context=context)
- accounts = product_pool.get_product_accounts(cr, uid, context.get('active_id', False), context={})
-
price = product_obj.standard_price
if 'new_price' in fields:
res.update({'new_price': price})
- if 'stock_account_input' in fields:
- res.update({'stock_account_input': accounts['stock_account_input']})
- if 'stock_account_output' in fields:
- res.update({'stock_account_output': accounts['stock_account_output']})
- if 'stock_journal' in fields:
- res.update({'stock_journal': accounts['stock_journal']})
- if 'enable_stock_in_out_acc' in fields:
- res.update({'enable_stock_in_out_acc': True})
-
return res
- # onchange_price function is not used anywhere
- def onchange_price(self, cr, uid, ids, new_price, context=None):
- """ Sets stock input and output account according to the difference
- of old price and new price.
- @param self: The object pointer.
- @param cr: A database cursor
- @param uid: ID of the user currently logged in
- @param ids: List of IDs selected
- @param new_price: Changed price
- @param context: A standard dictionary
- @return: Dictionary of values
- """
- if context is None:
- context = {}
- product_obj = self.pool.get('product.product').browse(cr, uid, context.get('active_id', False), context=context)
- price = product_obj.standard_price
- diff = price - new_price
- if diff > 0 :
- return {'value' : {'enable_stock_in_out_acc':True}}
- else :
- return {'value' : {'enable_stock_in_out_acc':False}}
-
def change_price(self, cr, uid, ids, context=None):
""" Changes the Standard Price of Product.
And creates an account move accordingly.
@@ -107,14 +70,7 @@ class change_standard_price(osv.osv_memory):
assert rec_id, _('Active ID is not set in Context.')
prod_obj = self.pool.get('product.product')
res = self.browse(cr, uid, ids, context=context)
- datas = {
- 'new_price' : res[0].new_price,
- 'stock_output_account' : res[0].stock_account_output.id,
- 'stock_input_account' : res[0].stock_account_input.id,
- 'stock_journal' : res[0].stock_journal.id
- }
- prod_obj.do_change_standard_price(cr, uid, [rec_id], datas, context)
+ prod_obj.do_change_standard_price(cr, uid, [rec_id], res[0].new_price, context)
return {'type': 'ir.actions.act_window_close'}
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_change_standard_price_view.xml b/addons/stock_account/wizard/stock_change_standard_price_view.xml
similarity index 100%
rename from addons/stock/wizard/stock_change_standard_price_view.xml
rename to addons/stock_account/wizard/stock_change_standard_price_view.xml
diff --git a/addons/stock/wizard/stock_invoice_onshipping.py b/addons/stock_account/wizard/stock_invoice_onshipping.py
similarity index 59%
rename from addons/stock/wizard/stock_invoice_onshipping.py
rename to addons/stock_account/wizard/stock_invoice_onshipping.py
index a385b86cae6..f600b28f585 100644
--- a/addons/stock/wizard/stock_invoice_onshipping.py
+++ b/addons/stock_account/wizard/stock_invoice_onshipping.py
@@ -20,11 +20,9 @@
##############################################################################
from openerp.osv import fields, osv
-
from openerp.tools.translate import _
class stock_invoice_onshipping(osv.osv_memory):
-
def _get_journal(self, cr, uid, context=None):
res = self._get_journal_id(cr, uid, context=context)
if res:
@@ -34,52 +32,26 @@ class stock_invoice_onshipping(osv.osv_memory):
def _get_journal_id(self, cr, uid, context=None):
if context is None:
context = {}
-
- model = context.get('active_model')
- if not model or 'stock.picking' not in model:
- return []
-
- model_pool = self.pool[model]
journal_obj = self.pool.get('account.journal')
- res_ids = context and context.get('active_ids', [])
+ value = journal_obj.search(cr, uid, [('type', 'in',('sale','sale_Refund'))])
vals = []
- browse_picking = model_pool.browse(cr, uid, res_ids, context=context)
-
- for pick in browse_picking:
- if not pick.move_lines:
- continue
- src_usage = pick.move_lines[0].location_id.usage
- dest_usage = pick.move_lines[0].location_dest_id.usage
- type = pick.type
- if type == 'out' and dest_usage == 'supplier':
- journal_type = 'purchase_refund'
- elif type == 'out' and dest_usage == 'customer':
- journal_type = 'sale'
- elif type == 'in' and src_usage == 'supplier':
- journal_type = 'purchase'
- elif type == 'in' and src_usage == 'customer':
- journal_type = 'sale_refund'
- else:
- journal_type = 'sale'
-
- value = journal_obj.search(cr, uid, [('type', '=',journal_type )])
- for jr_type in journal_obj.browse(cr, uid, value, context=context):
- t1 = jr_type.id,jr_type.name
- if t1 not in vals:
- vals.append(t1)
+ for jr_type in journal_obj.browse(cr, uid, value, context=context):
+ t1 = jr_type.id,jr_type.name
+ if t1 not in vals:
+ vals.append(t1)
return vals
_name = "stock.invoice.onshipping"
_description = "Stock Invoice Onshipping"
-
_columns = {
'journal_id': fields.selection(_get_journal_id, 'Destination Journal',required=True),
'group': fields.boolean("Group by partner"),
- 'invoice_date': fields.date('Invoiced date'),
+ 'inv_type': fields.selection([('out_invoice','Create Invoice'),('out_refund','Refund Invoice')], "Invoice Type"),
+ 'invoice_date': fields.date('Invoice Date'),
}
-
_defaults = {
'journal_id' : _get_journal,
+ 'inv_type': lambda self,cr,uid,ctx: ctx.get('inv_type', 'out_invoice')
}
def view_init(self, cr, uid, fields_list, context=None):
@@ -92,51 +64,46 @@ class stock_invoice_onshipping(osv.osv_memory):
for pick in pick_obj.browse(cr, uid, active_ids, context=context):
if pick.invoice_state != '2binvoiced':
count += 1
- if len(active_ids) == 1 and count:
- raise osv.except_osv(_('Warning!'), _('This picking does not require invoicing.'))
if len(active_ids) == count:
- raise osv.except_osv(_('Warning!'), _('None of these pickings require invoicing.'))
+ raise osv.except_osv(_('Warning!'), _('None of these picking lists require invoicing.'))
return res
def open_invoice(self, cr, uid, ids, context=None):
if context is None:
context = {}
- invoice_ids = []
- data_pool = self.pool.get('ir.model.data')
- res = self.create_invoice(cr, uid, ids, context=context)
- invoice_ids += res.values()
- inv_type = context.get('inv_type', False)
+ invoice_ids = self.create_invoice(cr, uid, ids, context=context)
+ if not invoice_ids:
+ raise osv.except_osv(_('Error!'), _('No invoice created!'))
+
+ onshipdata_obj = self.read(cr, uid, ids, ['journal_id', 'group', 'invoice_date', 'inv_type'])
+ inv_type = onshipdata_obj[0]['inv_type']
+
action_model = False
action = {}
- if not invoice_ids:
- raise osv.except_osv(_('Error!'), _('Please create Invoices.'))
- if inv_type == "out_invoice":
- action_model,action_id = data_pool.get_object_reference(cr, uid, 'account', "action_invoice_tree1")
- elif inv_type == "in_invoice":
- action_model,action_id = data_pool.get_object_reference(cr, uid, 'account', "action_invoice_tree2")
- elif inv_type == "out_refund":
+
+ data_pool = self.pool.get('ir.model.data')
+ if inv_type == "out_refund":
action_model,action_id = data_pool.get_object_reference(cr, uid, 'account', "action_invoice_tree3")
- elif inv_type == "in_refund":
- action_model,action_id = data_pool.get_object_reference(cr, uid, 'account', "action_invoice_tree4")
+ elif inv_type == "out_invoice":
+ action_model,action_id = data_pool.get_object_reference(cr, uid, 'account', "action_invoice_tree1")
+
if action_model:
action_pool = self.pool[action_model]
action = action_pool.read(cr, uid, action_id, context=context)
action['domain'] = "[('id','in', ["+','.join(map(str,invoice_ids))+"])]"
- return action
+ return action
+ return True
def create_invoice(self, cr, uid, ids, context=None):
- if context is None:
- context = {}
+ context = context or {}
picking_pool = self.pool.get('stock.picking')
- onshipdata_obj = self.read(cr, uid, ids, ['journal_id', 'group', 'invoice_date'])
- if context.get('new_picking', False):
- onshipdata_obj['id'] = onshipdata_obj.new_picking
- onshipdata_obj[ids] = onshipdata_obj.new_picking
+ onshipdata_obj = self.read(cr, uid, ids, ['journal_id', 'group', 'invoice_date', 'inv_type'])
+
context['date_inv'] = onshipdata_obj[0]['invoice_date']
- active_ids = context.get('active_ids', [])
- active_picking = picking_pool.browse(cr, uid, context.get('active_id',False), context=context)
- inv_type = picking_pool._get_invoice_type(active_picking)
+ inv_type = onshipdata_obj[0]['inv_type']
context['inv_type'] = inv_type
+
+ active_ids = context.get('active_ids', [])
if isinstance(onshipdata_obj[0]['journal_id'], tuple):
onshipdata_obj[0]['journal_id'] = onshipdata_obj[0]['journal_id'][0]
res = picking_pool.action_invoice_create(cr, uid, active_ids,
@@ -146,4 +113,3 @@ class stock_invoice_onshipping(osv.osv_memory):
context=context)
return res
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_invoice_onshipping_view.xml b/addons/stock_account/wizard/stock_invoice_onshipping_view.xml
similarity index 82%
rename from addons/stock/wizard/stock_invoice_onshipping_view.xml
rename to addons/stock_account/wizard/stock_invoice_onshipping_view.xml
index f566b956091..a37af929576 100644
--- a/addons/stock/wizard/stock_invoice_onshipping_view.xml
+++ b/addons/stock_account/wizard/stock_invoice_onshipping_view.xml
@@ -6,9 +6,12 @@
stock.invoice.onshipping
+ Choose the date for which you want to get the stock valuation of your products.
+
+ This will filter the stock operation that weren't done at the selected date, to retreive the quantity
+ you had, and gives you the inventory value according to the standard price used at that time.
+
+
+ Retrieve the stock valuation of your products at current day
+
+
+
+
+
+
+
+
+
+
+ Stock Valuation
+ wizard.valuation.history
+ form
+ tree,form
+
+ new
+
+
+
+
+ Stock Value At Date
+ stock.history
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ stock.history.value.graph
+ stock.history
+
+
+
+
+
+
+
+
+
+
+ stock.history.report.search
+ stock.history
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Current Inventory Valuation
+ stock.history
+ ir.actions.act_window
+ [('date','<=',time.strftime('%Y-%m-%d %H:%M:%S'))]
+ form
+ tree,graph
+
+
+
+
+
diff --git a/addons/delivery/report/__init__.py b/addons/stock_dropshipping/__init__.py
similarity index 96%
rename from addons/delivery/report/__init__.py
rename to addons/stock_dropshipping/__init__.py
index 085fa3a3cdc..1529644d61e 100644
--- a/addons/delivery/report/__init__.py
+++ b/addons/stock_dropshipping/__init__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,10 +15,9 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
-import shipping
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/stock_dropshipping/__openerp__.py b/addons/stock_dropshipping/__openerp__.py
new file mode 100644
index 00000000000..6d6c91bd31d
--- /dev/null
+++ b/addons/stock_dropshipping/__openerp__.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2014 OpenERP S.A. ().
+#
+# 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 .
+#
+##############################################################################
+
+{
+ 'name': 'Drop Shipping',
+ 'version': '1.0',
+ 'category': 'Warehouse Management',
+ 'summary': 'Drop Shipping',
+ 'description': """
+Manage drop shipping orders
+===========================
+
+This module adds a pre-configured Drop Shipping picking type
+as well as a procurement route that allow configuring Drop
+Shipping products and orders.
+
+When drop shipping is used the goods are directly transferred
+from suppliers to customers (direct delivery) without
+going through the retailer's warehouse. In this case no
+internal transfer document is needed.
+
+""",
+ 'author': 'OpenERP SA',
+ 'website': 'http://www.openerp.com',
+ 'images': [],
+ 'depends': ['purchase', 'sale_stock'],
+ 'data': ['stock_dropshipping.xml'],
+ 'test': [
+ 'test/cancellation_propagated.yml',
+ 'test/crossdock.yml',
+ 'test/dropship.yml',
+ 'test/procurementexception.yml',
+ 'test/lifo_price.yml'
+ ],
+ 'installable': True,
+ 'auto_install': False,
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_dropshipping/stock_dropshipping.xml b/addons/stock_dropshipping/stock_dropshipping.xml
new file mode 100644
index 00000000000..ede1f00afed
--- /dev/null
+++ b/addons/stock_dropshipping/stock_dropshipping.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ Dropship
+ DS
+ 5
+
+
+
+
+
+ Dropship
+
+ incoming
+
+
+
+
+
+
+
+ Drop Shipping
+ 3
+
+
+
+
+
+
+ Supplier → Customer
+ buy
+
+
+ make_to_stock
+
+
+
+
+
+
diff --git a/addons/stock_dropshipping/test/cancellation_propagated.yml b/addons/stock_dropshipping/test/cancellation_propagated.yml
new file mode 100644
index 00000000000..71f5e75385d
--- /dev/null
+++ b/addons/stock_dropshipping/test/cancellation_propagated.yml
@@ -0,0 +1,81 @@
+-
+ I first create a warehouse with pick-pack-ship and reception in 2 steps
+-
+ !record {model: stock.warehouse, id: wh_pps}:
+ name: WareHouse PickPackShip
+ code: whpps
+ reception_steps: 'two_steps'
+ delivery_steps: 'pick_pack_ship'
+-
+ Next I create a new product in this warehouse
+-
+ !record {model: product.product, id: product_mto}:
+ name: "My Product"
+ type: product
+ uom_id: product.product_uom_unit
+ uom_po_id: product.product_uom_unit
+ seller_ids:
+ - delay: 1
+ name: base.res_partner_2
+ min_qty: 2.0
+ qty: 10.0
+-
+ Set routes on product to be MTO adn Buy
+-
+ !python {model: product.product}: |
+ route_warehouse0_buy = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).buy_pull_id.route_id.id
+ route_warehouse0_mto = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).mto_pull_id.route_id.id
+ self.write(cr, uid, ref('product_mto'), { 'route_ids': [(6, 0, [route_warehouse0_mto,route_warehouse0_buy])]}, context=context )
+-
+ Create a sales order with a line of 5 "My Product".
+-
+ !record {model: sale.order, id: sale_order_product_mto}:
+ partner_id: base.res_partner_3
+ note: Create Sales order
+ warehouse_id: wh_pps
+ order_line:
+ - product_id: product_mto
+ product_uom_qty: 5.00
+-
+ Confirm the sale order
+-
+ !workflow {model: sale.order, action: order_confirm, ref: sale_order_product_mto}
+-
+ I run scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ Check the propagation when we cancel the main procurement
+ * Retrieve related procurements and check that there are all running
+ * Check that a purchase order is well created
+ * Cancel the main procurement
+ * Check that all procurements related and the purchase order are well cancelled
+-
+ !python {model: procurement.order}: |
+ # Retrieve related procurement
+ so = self.pool.get('sale.order').browse(cr, uid, ref('sale_order_product_mto'))
+ procu_ids = self.search(cr, uid, [('group_id.name', '=', so.name)])
+ assert len(procu_ids)>0, 'No procurement found for sale order %s (with id: %d)' %(so.name,so.id)
+
+ # Check that all procurements are running
+ for procu in self.browse(cr,uid,procu_ids,context=context):
+ assert procu.state == u'running', 'Procurement with id: %d should be running but is with state : %s!' %(procu.id, procu.state)
+
+ # Check that one or more Purchase order
+ purchase_ids = [proc.purchase_line_id.order_id for proc in self.browse(cr, uid, procu_ids) if proc.purchase_line_id]
+ assert len(purchase_ids) > 0, 'No purchase order found !'
+
+ # Cancel the main procurement
+ main_procu_id = self.search(cr, uid, [('origin', '=', so.name)])
+ assert len(main_procu_id) == 1, 'Main procurement not identified !'
+ self.cancel(cr, uid, main_procu_id, context=context)
+ assert self.browse(cr, uid, main_procu_id[0]).state == u'cancel', 'Main procurement should be cancelled !'
+
+ # Check that all procurements related are cancelled
+ for procu in self.browse(cr, uid, procu_ids, context=context):
+ assert procu.state == u'cancel', 'Procurement %d should be cancelled but is with a state : %s!' %(procu.id, procu.state)
+
+ # Check that the purchase order is well cancelled
+ for po in self.pool.get('purchase.order').browse(cr, uid, [po.id for po in purchase_ids], context=context):
+ assert po.state == u'cancel', 'Purchase order %d should be cancelled but is in state : %s!' %(po.id, po.state)
diff --git a/addons/stock_dropshipping/test/crossdock.yml b/addons/stock_dropshipping/test/crossdock.yml
new file mode 100644
index 00000000000..5ad1f1db187
--- /dev/null
+++ b/addons/stock_dropshipping/test/crossdock.yml
@@ -0,0 +1,42 @@
+-
+ Create new product without any routes
+-
+ !record {model: product.product, id: cross_shop_product}:
+ name: PCE
+ type: product
+ categ_id: product.product_category_1
+ list_price: 100.0
+ standard_price: 70.0
+ seller_ids:
+ - delay: 1
+ name: base.res_partner_2
+ min_qty: 2.0
+ qty: 5.0
+ type: product
+ uom_id: product.product_uom_unit
+ uom_po_id: product.product_uom_unit
+-
+ Create a sales order with a line of 100 PCE incoming shipment, with route_id crossdock shipping.
+-
+ !record {model: sale.order, id: sale_order_crossdock_shpng}:
+ partner_id: base.res_partner_4
+ note: Create Sales order
+ order_line:
+ - product_id: cross_shop_product
+ product_uom_qty: 100.00
+-
+ !python {model: sale.order.line}: |
+ route_warehouse0_crossdock = self.pool.get('stock.warehouse').browse(cr, uid, ref('stock.warehouse0')).crossdock_route_id.id
+ order = self.pool.get('sale.order').browse(cr, uid, ref('sale_order_crossdock_shpng'))
+ line_ids = [x.id for x in order.order_line]
+ self.write(cr, uid, line_ids, {'route_id': route_warehouse0_crossdock})
+-
+ Confirm sales order
+-
+ !workflow {model: sale.order, action: order_confirm, ref: sale_order_crossdock_shpng}
+-
+ Check a quotation was created to a certain supplier and confirm so it becomes a confirmed purchase order
+-
+ !python {model: purchase.order}: |
+ po_id = self.search(cr, uid, [('partner_id', '=', ref('base.res_partner_2'))])
+ self.wkf_confirm_order(cr, uid, po_id)
diff --git a/addons/stock_dropshipping/test/dropship.yml b/addons/stock_dropshipping/test/dropship.yml
new file mode 100644
index 00000000000..88057d1b728
--- /dev/null
+++ b/addons/stock_dropshipping/test/dropship.yml
@@ -0,0 +1,83 @@
+-
+ Create a supplier
+-
+ !record {model: res.partner, id: supplier_dropship}:
+ name: Supplier of Dropshipping test
+-
+ Create new product without any routes
+-
+ !record {model: product.product, id: drop_shop_product}:
+ name: Pen drive
+ type: product
+ categ_id: product.product_category_1
+ list_price: 100.0
+ standard_price: 0.0
+ type: product
+ seller_ids:
+ - delay: 1
+ name: supplier_dropship
+ min_qty: 2.0
+ qty: 5.0
+ uom_id: product.product_uom_unit
+ uom_po_id: product.product_uom_unit
+-
+ Create a sales order with a line of 200 PCE incoming shipment, with route_id drop shipping.
+-
+ !record {model: sale.order, id: sale_order_drp_shpng}:
+ partner_id: base.res_partner_2
+ note: Create sale order for drop shipping
+ payment_term: account.account_payment_term
+ order_line:
+ - product_id: drop_shop_product
+ product_uom_qty: 200
+ price_unit: 1.00
+ route_id: route_drop_shipping
+-
+ Confirm sales order
+-
+ !workflow {model: sale.order, action: order_confirm, ref: sale_order_drp_shpng}
+-
+ Check the sales order created a procurement group which has a procurement of 200 pieces
+-
+ !python {model: procurement.group}: |
+ sale_record = self.pool.get("sale.order").browse(cr, uid, ref('sale_order_drp_shpng'))
+ assert self.browse(cr, uid, sale_record.procurement_group_id.id).procurement_ids[0].product_qty == 200
+-
+ I run scheduler.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+-
+ Check a quotation was created to a certain supplier and confirm so it becomes a confirmed purchase order
+-
+ !python {model: purchase.order}: |
+ from openerp import netsvc, workflow
+ sale_record = self.pool.get("sale.order").browse(cr, uid, ref('sale_order_drp_shpng'))
+ procurement_order = self.pool.get("procurement.group").browse(cr, uid, sale_record.procurement_group_id.id).procurement_ids[0]
+ purchase_id = procurement_order.purchase_line_id.order_id.id
+
+ workflow.trg_validate(uid, 'purchase.order', purchase_id, 'purchase_confirm', cr)
+ po_id = self.pool.get('purchase.order').search(cr, uid, [('partner_id', '=', ref('supplier_dropship'))])
+ assert self.browse(cr, uid, purchase_id).state == 'approved', 'Purchase order should be in the approved state'
+-
+ Use 'Receive Products' button to immediately view this picking, it should have created a picking with 200 pieces
+-
+ !python {model: purchase.order}: |
+ po_id = self.search(cr, uid, [('partner_id', '=', ref('supplier_dropship'))])
+ self.view_picking(cr, uid, po_id)
+-
+ Send the 200 pieces.
+-
+ !python {model: stock.picking}: |
+ po_id = self.pool.get('purchase.order').search(cr, uid, [('partner_id', '=', ref('supplier_dropship'))])
+ assert po_id and len(po_id) == 1, 'Problem with the Purchase Order detected'
+ picking_ids = [pick.id for pick in self.pool.get('purchase.order').browse(cr, uid, po_id[0]).picking_ids]
+ self.do_transfer(cr, uid, picking_ids)
+-
+ Check one quant was created in Customers location with 200 pieces and one move in the history_ids
+-
+ !python {model: stock.quant}: |
+ quant_ids = self.search(cr, uid, [('location_id', '=', ref('stock.stock_location_customers')),('qty', '=', 200), ('product_id', '=', ref("drop_shop_product"))])
+ assert quant_ids, 'No Quant found'
+ assert len(quant_ids) == 1
+ assert len(self.browse(cr, uid, quant_ids)[0].history_ids) == 1
diff --git a/addons/stock_dropshipping/test/lifo_price.yml b/addons/stock_dropshipping/test/lifo_price.yml
new file mode 100644
index 00000000000..f913782a4fd
--- /dev/null
+++ b/addons/stock_dropshipping/test/lifo_price.yml
@@ -0,0 +1,116 @@
+-
+ Set product category removal strategy as LIFO
+-
+ !record {model: product.category, id: product.product_category_001}:
+ name : Lifo Category
+ removal_strategy_id: stock.removal_lifo
+-
+ Set a product as using lifo price
+-
+ !record {model: product.product, id: product_lifo_icecream}:
+ default_code: LIFO
+ name: LIFO Ice Cream
+ type: product
+ categ_id: product.product_category_001
+ list_price: 100.0
+ standard_price: 70.0
+ uom_id: product.product_uom_kgm
+ uom_po_id: product.product_uom_kgm
+ valuation: real_time
+ cost_method: real
+ property_stock_account_input: account.o_expense
+ property_stock_account_output: account.o_income
+ description: LIFO Ice Cream can be mass-produced and thus is widely available in developed parts of the world. Ice cream can be purchased in large cartons (vats and squrounds) from supermarkets and grocery stores, in smaller quantities from ice cream shops, convenience stores, and milk bars, and in individual servings from small carts or vans at public events.
+-
+ I create a draft Purchase Order for first in move for 10 pieces at 60 euro
+-
+ !record {model: purchase.order, id: purchase_order_lifo1}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: purchase.list0
+ order_line:
+ - product_id: product_lifo_icecream
+ product_qty: 10.0
+ product_uom: product.product_uom_kgm
+ price_unit: 60.0
+ name: 'LIFO Ice Cream'
+-
+ I create a draft Purchase Order for second shipment for 30 pieces at 80 euro
+-
+ !record {model: purchase.order, id: purchase_order_lifo2}:
+ partner_id: base.res_partner_3
+ location_id: stock.stock_location_stock
+ pricelist_id: purchase.list0
+ order_line:
+ - product_id: product_lifo_icecream
+ product_qty: 30.0
+ product_uom: product.product_uom_kgm
+ price_unit: 80.0
+ name: 'LIFO Ice Cream'
+-
+ I confirm the first purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_lifo1}
+-
+ I check the "Approved" status of purchase order 1
+-
+ !assert {model: purchase.order, id: purchase_order_lifo1}:
+ - state == 'approved'
+-
+ Process the reception of purchase order 1
+-
+ !python {model: stock.picking}: |
+ order = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_lifo1")).picking_ids[0]
+ order.do_transfer(context=context)
+-
+ Check the standard price of the product (lifo icecream)
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_lifo_icecream")).standard_price == 70.0, 'Standard price should not have changed!'
+-
+ I confirm the second purchase order
+-
+ !workflow {model: purchase.order, action: purchase_confirm, ref: purchase_order_lifo2}
+-
+ Process the reception of purchase order 2
+-
+ !python {model: stock.picking}: |
+ order = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_lifo2")).picking_ids[0]
+ order.do_transfer(context=context)
+-
+ Check the standard price should not have changed
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_lifo_icecream")).standard_price == 70.0, 'Standard price as lifo price of second reception incorrect!'
+-
+ Let us send some goods
+-
+ !record {model: stock.picking, id: outgoing_lifo_shipment}:
+ picking_type_id: stock.picking_type_out
+-
+ Picking needs movement from stock
+-
+ !record {model: stock.move, id: outgoing_shipment_lifo_icecream}:
+ picking_id: outgoing_lifo_shipment
+ product_id: product_lifo_icecream
+ product_uom: product.product_uom_kgm
+ location_id: stock.stock_location_stock
+ location_dest_id: stock.stock_location_customers
+ product_uom_qty: 20.0
+ picking_type_id: stock.picking_type_out
+-
+ I assign this outgoing shipment
+-
+ !python {model: stock.picking}: |
+ self.action_assign(cr, uid, [ref("outgoing_lifo_shipment")])
+-
+ Process the delivery of the outgoing shipment
+-
+ !python {model: stock.picking}: |
+ pick_order = self.pool.get('stock.picking').browse(cr, uid, ref("outgoing_lifo_shipment"))
+ pick_order.do_transfer(context=context)
+-
+ Check standard price became 80 euro
+-
+ !python {model: product.product}: |
+ assert self.browse(cr, uid, ref("product_lifo_icecream")).standard_price == 80.0, 'Price should have been 80 euro'
diff --git a/addons/stock_dropshipping/test/procurementexception.yml b/addons/stock_dropshipping/test/procurementexception.yml
new file mode 100644
index 00000000000..164fcb6b1b8
--- /dev/null
+++ b/addons/stock_dropshipping/test/procurementexception.yml
@@ -0,0 +1,63 @@
+-
+ I create a product with no supplier define for it.
+-
+ !record {model: product.product, id: product_with_no_seller}:
+ name: 'product with no seller'
+ list_price: 20.00
+ standard_price: 15.00
+ categ_id: product.product_category_1
+-
+ I create a sales order with this product with route dropship.
+-
+ !record {model: sale.order, id: sale_order_route_dropship01}:
+ partner_id: base.res_partner_2
+ partner_invoice_id: base.res_partner_address_3
+ partner_shipping_id: base.res_partner_address_3
+ note: crossdock route
+ payment_term: account.account_payment_term
+ order_line:
+ - product_id: product_with_no_seller
+ product_uom_qty: 1
+ route_id: route_drop_shipping
+-
+ I confirm the sales order.
+-
+ !workflow {model: sale.order, ref: sale_order_route_dropship01, action: order_confirm}
+-
+ I check there is a procurement in exception that has the procurement group of the sales order created before.
+-
+ !python {model: procurement.order}: |
+ self.run_scheduler(cr, uid)
+ sale_id = self.pool.get('sale.order').browse(cr, uid, ref("sale_order_route_dropship01"))
+ proc_id = self.search(cr, uid, [('group_id.name', '=', sale_id.name), ('state', '=', 'exception')])
+ assert proc_id, 'No Procurement!'
+-
+ I set the at least one supplier on the product.
+-
+ !record {model: product.product, id: product_with_no_seller}:
+ seller_ids:
+ - delay: 1
+ name: base.res_partner_2
+ min_qty: 2.0
+-
+ I run the Procurement.
+-
+ !python {model: procurement.order}: |
+ sale_id = self.pool.get('sale.order').browse(cr, uid, ref("sale_order_route_dropship01"))
+ proc_id = self.search(cr, uid, [('group_id.name', '=', sale_id.name), ('state', '=', 'exception')])
+ self.run(cr, uid, proc_id)
+-
+ I check the status changed there is no procurement order in exception any more from that procurement group
+-
+ !python {model: procurement.order}: |
+ sale_id = self.pool.get('sale.order').browse(cr, uid, ref("sale_order_route_dropship01"))
+ proc_id = self.search(cr, uid, [('group_id.name', '=', sale_id.name), ('state', '=', 'exception')])
+ assert not proc_id, 'Procurement should be in running state'
+-
+ I check a purchase quotation was created.
+-
+ !python {model: procurement.order}: |
+ sale_id = self.pool.get('sale.order').browse(cr, uid, ref("sale_order_route_dropship01"))
+ proc_ids = self.search(cr, uid, [('group_id.name', '=', sale_id.name)])
+ purchase_id = [proc.purchase_line_id.order_id for proc in self.browse(cr, uid, proc_ids) if proc.purchase_line_id]
+ assert purchase_id, 'No Purchase Quotation is created'
diff --git a/addons/stock_dropshipping/test/stock_combi.yml b/addons/stock_dropshipping/test/stock_combi.yml
new file mode 100644
index 00000000000..aa3a991838e
--- /dev/null
+++ b/addons/stock_dropshipping/test/stock_combi.yml
@@ -0,0 +1,116 @@
+-
+ Create a warehouse and set it as having a 3-step delivery flow (Pick > Pack > Ship) and a 2-step reception route
+-
+-
+ Create product Combi1 that is MTO / purchase and provide a supplier for it
+-
+-
+ Create product Combi2 that is MTO / purchase and provide another supplier for it and add the 2-step route to it
+-
+-
+ Create 1 product Combi3 without MTO route / purchase
+-
+-
+ Create a sales order with 100 Combi1, 50 Combi2, 60 Combi3
+-
+-
+ Create a sales order for another customer with 48 Combi1, 30 Combi2, 90 Combi3
+-
+-
+ Create manually a purchase order for 150 Combi3
+-
+-
+ Confirm both Sales Orders
+-
+-
+ As the sales orders should have created purchase orders, confirm those 4 purchase orders
+-
+-
+ Receive purchase orders, but for the purchase order of 100 Combi1, receive 120 instead and for 30 Combi2, receive 15 instead. Put 120 Combi1 on two pallets C01 and C02(one 80 and one 40), put 48 Combi 1 on one pallet. Combi2 has 5 lots for this PO. Receive each time 10 pieces for every lot and put them in C03, C04, C05, C06 and C07. The 15 have a sixth lot and go into C08 and C09. The 30 of SO2 have a seventh lot, and the owner is the supplier. They are not on any package.
+-
+-
+ Check a backorder of 15 Combi2 was created and receive 30 instead of 15. The lot is the sixth lot and they are packaged into C10, C11 and C12 with each 5 pieces.
+-
+-
+ Check the 20 pieces combi1 extra created an extra move which was added to the Input > Quality Control picking. Check the 2 times 15 Combi2 have a desination move from Input > Stock in the same picking as the other picking. Check those moves are in assigned state
+-
+-
+ Check the number of moves in the 2 pickings from Stock > Pick. Check the sum of the quantities of the moves are still the same as on the sales order for each product.
+-
+-
+ Check the quantities also in the moves Quality Control > Stock and Input > Stock.
+-
+-
+ Check the sum of the quants of product combi1 = 168 and the sum of the quants of product combi2 = 95
+-
+-
+ Do prepare partial for Combi2 from Input to Stock. Actually you found a box with an eight lot with 5 pieces you forgot to receive and will move it separately into stock. You also saw that in box C04 there were 5 pieces more than previously thought.
+-
+-
+ Process this picking. Check negative quants were created for the two.
+-
+-
+ Create a purchase order for the 10 pieces.
+-
+-
+ Receive purchase order
+-
+-
+ Check quants were reconciled (negative quants disappeared)
+-
+-
+ Check sum of qty of quants of combi2 = 105
+-
+-
+ Process picking with 2 pallets of Combi1 through quality control with do_prepare_partial, only change that the 2 pallets go into a container package.
+-
+-
+ Process the picking to bring the 2 pallets to stock and unpack them from the top pallets. (Make sure you have 2 loose pallets again, not on the container package anymore)
+-
+-
+ Process the other pickings until everything is in stock.
+-
+-
+ Check sum of qty of quants of different products
+-
+-
+ Process the picking of the first sales order (with 100 PCE Combi1) from Stock > Pick. Force availability on the picking. The customer wants his goods asap and the warehouse manager did not have the time to encode the purchase order for Combi3.
+-
+-
+ In the meantime, assign and do_prepare_partial for the second picking (without force assigning anything)
+-
+-
+ For Combi1 on the first picking, we will take the pallet with 48 pieces and 52 pieces from the pallet of 80 and put this on a new pallet C50. (which were meant for picking 1) For Combi3, the warehouse manager will find they are in 2 packages of C31 and C32 of 30 pieces each. Combi2 stays unchanged.
+-
+-
+ Process this picking.
+-
+-
+In the pack zone the following has to happen: As the customer is a very difficult one, he wants everything of Combi 1 packages of 10 with packages of 30 again, each package numbered => for Combi1: C101, C102, C103 in C110; C201, C202, C203 in C120; C301, C302, C303 in C130; C401 in C140. Put them in packages of 10 in Pack> Output and put packages of 10 in packages of 30 from Output > Customer. Process the 3 pickings for Sales Order 1 like this.
+-
+-
+ Check the quantities of the negative quants created.
+-
+-
+ Create manually a purchase order for the 150 pieces of Combi3. Put each time 30 pieces in C31, C32, C33, C34, C35.
+-
+-
+ Confirm each step of the Input > Quality Control > Stock until all the pieces are in Stock without do_prepare_partial
+-
+-
+ Process the second picking to the packing zone. Make the pack operations empty and rereserve and redo do_prepare_partial. Check the operations are as expected.
+-
+-
+ Process the other pickings without do_prepare_partial
+-
+-
+ Check there are no negative quants anymore of the 3 products
+-
+-
+ Check the quantities of the 3 products in the warehouse and at the customer (sum of quants or qty_available) e.g. 20 combi1 in the warehouse (check warehouse location)
+-
+-
+ Check there are no packages (stock.quant.package) with quants in different locations for the 3 products
+-
+-
+
diff --git a/addons/stock_invoice_directly/__init__.py b/addons/stock_invoice_directly/__init__.py
index 1631b934faf..7da3427374d 100644
--- a/addons/stock_invoice_directly/__init__.py
+++ b/addons/stock_invoice_directly/__init__.py
@@ -19,6 +19,6 @@
#
##############################################################################
-import wizard
+import stock_invoice_directly
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_invoice_directly/wizard/stock_invoice.py b/addons/stock_invoice_directly/stock_invoice_directly.py
similarity index 61%
rename from addons/stock_invoice_directly/wizard/stock_invoice.py
rename to addons/stock_invoice_directly/stock_invoice_directly.py
index c8ca4cdd8fd..c4cccd6d17b 100644
--- a/addons/stock_invoice_directly/wizard/stock_invoice.py
+++ b/addons/stock_invoice_directly/stock_invoice_directly.py
@@ -19,28 +19,25 @@
#
##############################################################################
-from openerp.osv import fields, osv
+from openerp.osv import osv
+from openerp.tools.translate import _
-class invoice_directly(osv.osv_memory):
- _inherit = 'stock.partial.picking'
- def do_partial(self, cr, uid, ids, context=None):
+class stock_picking(osv.osv):
+ _inherit = 'stock.picking'
+
+ def do_transfer(self, cr, uid, picking_ids, context=None):
"""Launch Create invoice wizard if invoice state is To be Invoiced,
- after processing the partial picking.
+ after processing the picking.
"""
- if context is None: context = {}
- result = super(invoice_directly, self).do_partial(cr, uid, ids, context)
- partial = self.browse(cr, uid, ids[0], context)
- if partial.picking_id.state != 'done' and partial.picking_id.backorder_id:
- # delivery is not finished, opening invoice on backorder
- picking = partial.picking_id.backorder_id
- else:
- picking = partial.picking_id
- context.update(active_model='stock.picking',
- active_ids=[picking.id])
- if picking.invoice_state == '2binvoiced':
+ if context is None:
+ context = {}
+ res = super(stock_picking, self).do_transfer(cr, uid, picking_ids, context=context)
+ pick_ids = [p.id for p in self.browse(cr, uid, picking_ids, context) if p.invoice_state == '2binvoiced']
+ if pick_ids:
+ context.update(active_model='stock.picking', active_ids=pick_ids)
return {
- 'name': 'Create Invoice',
+ 'name': _('Create Invoice'),
'view_type': 'form',
'view_mode': 'form',
'res_model': 'stock.invoice.onshipping',
@@ -48,7 +45,6 @@ class invoice_directly(osv.osv_memory):
'target': 'new',
'context': context
}
- return {'type': 'ir.actions.act_window_close'}
-
+ return res
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_invoice_directly/test/stock_invoice_directly.yml b/addons/stock_invoice_directly/test/stock_invoice_directly.yml
index 7ea2f3dba5e..68cf8588bd2 100644
--- a/addons/stock_invoice_directly/test/stock_invoice_directly.yml
+++ b/addons/stock_invoice_directly/test/stock_invoice_directly.yml
@@ -6,23 +6,22 @@
-
!record {model: stock.picking, id: stock_picking_out0}:
partner_id: base.res_partner_address_22
- invoice_state: 2binvoiced
move_lines:
- company_id: base.main_company
location_id: stock.stock_location_stock
product_id: product.product_product_3
- product_qty: 3.0
+ product_uom_qty: 3.0
product_uom: product.product_uom_unit
location_dest_id: stock.stock_location_customers
+ invoice_state: 2binvoiced
move_type: direct
- type: out
+ picking_type_id: stock.picking_type_out
-
I need to check the availability of the product so I make my picking order for processing later.
-
!python {model: stock.picking}: |
- self.draft_force_assign(cr, uid, [ref("stock_picking_out0")], {"lang": "en_US", "search_default_available":
+ self.action_confirm(cr, uid, [ref("stock_picking_out0")], {"lang": "en_US", "search_default_available":
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
- "active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
})
-
I check the product availability. Product is available in the stock and ready to be sent.
@@ -30,15 +29,13 @@
!python {model: stock.picking}: |
self.action_assign(cr, uid, [ref("stock_picking_out0")], {"lang": "en_US", "search_default_available":
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
- "active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
})
-
I process the delivery
-
- !python {model: stock.partial.picking}: |
- partial_id = self.create(cr, uid, {}, context={'active_model':'stock.picking',
- 'active_ids':[ref('stock_picking_out0')]})
- self.do_partial(cr, uid, [partial_id])
+ !python {model: stock.picking}: |
+ partial_id = ref("stock_picking_out0")
+ self.do_transfer(cr, uid, [partial_id])
-
As the Invoice state of the picking order is To be invoiced. I create invoice for my outgoing picking order.
@@ -58,4 +55,3 @@
partner = picking[0].partner_id.id
inv_ids = self.search(cr, uid, [('type','=','out_invoice'),('partner_id','=',partner)])
assert inv_ids, 'No Invoice is generated!'
-
diff --git a/addons/stock_invoice_directly/wizard/__init__.py b/addons/stock_landed_costs/__init__.py
similarity index 95%
rename from addons/stock_invoice_directly/wizard/__init__.py
rename to addons/stock_landed_costs/__init__.py
index a175e30ec03..8d9926454f9 100644
--- a/addons/stock_invoice_directly/wizard/__init__.py
+++ b/addons/stock_landed_costs/__init__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,10 +15,11 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
-import stock_invoice
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+import product
+import stock_landed_costs
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/report/picking.py b/addons/stock_landed_costs/__openerp__.py
similarity index 54%
rename from addons/stock/report/picking.py
rename to addons/stock_landed_costs/__openerp__.py
index 603e815fc10..9ab5bc7023d 100644
--- a/addons/stock/report/picking.py
+++ b/addons/stock_landed_costs/__openerp__.py
@@ -19,25 +19,35 @@
#
##############################################################################
-import time
-from openerp.report import report_sxw
+{
+ 'name': 'WMS Landed Costs',
+ 'version': '1.1',
+ 'author': 'OpenERP SA',
+ 'summary': 'Landed Costs',
+ 'description': """
+Landed Costs Management
+=======================
+This module allows you to easily add extra costs on pickings and decide the split of these costs among their stock moves in order to take them into account in your stock valuation.
+ """,
+ 'website': 'http://www.openerp.com',
+ 'images': [],
+ 'depends': ['stock_account'],
+ 'category': 'Warehouse Management',
+ 'sequence': 16,
+ 'demo': [
+ ],
+ 'data': [
+ 'security/ir.model.access.csv',
+ 'stock_landed_costs_sequence.xml',
+ 'product_view.xml',
+ 'stock_landed_costs_view.xml',
+ 'stock_landed_costs_data.xml',
+ ],
+ 'test': [
+ ],
+ 'installable': True,
+ 'application': True,
+ 'auto_install': False,
+}
-class picking(report_sxw.rml_parse):
- def __init__(self, cr, uid, name, context):
- super(picking, self).__init__(cr, uid, name, context=context)
- self.localcontext.update({
- 'time': time,
- 'get_product_desc': self.get_product_desc,
- })
- def get_product_desc(self, move_line):
- desc = move_line.product_id.name
- if move_line.product_id.default_code:
- desc = '[' + move_line.product_id.default_code + ']' + ' ' + desc
- return desc
-
-for suffix in ['', '.in', '.out']:
- report_sxw.report_sxw('report.stock.picking.list' + suffix,
- 'stock.picking' + suffix,
- 'addons/stock/report/picking.rml',
- parser=picking)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_no_autopicking/stock_no_autopicking.py b/addons/stock_landed_costs/product.py
similarity index 70%
rename from addons/stock_no_autopicking/stock_no_autopicking.py
rename to addons/stock_landed_costs/product.py
index dd8fb31f59f..93e2ec3547c 100644
--- a/addons/stock_no_autopicking/stock_no_autopicking.py
+++ b/addons/stock_landed_costs/product.py
@@ -19,20 +19,27 @@
#
##############################################################################
-from openerp.osv import fields,osv
+from openerp.osv import fields, osv
-class product(osv.osv):
+SPLIT_METHOD = [
+ ('equal', 'Equal'),
+ ('by_quantity', 'By Quantity'),
+ ('by_current_cost_price', 'By Current Cost Price'),
+ ('by_weight', 'By Weight'),
+ ('by_volume', 'By Volume'),
+]
+
+class product_product(osv.osv):
_inherit = "product.product"
+
_columns = {
- 'auto_pick': fields.boolean('Auto Picking', help="Auto picking for raw materials of production orders.")
+ 'landed_cost_ok': fields.boolean('Can constitute a landed cost'),
+ 'split_method': fields.selection(SPLIT_METHOD, 'Split Method'),
}
+
_defaults = {
- 'auto_pick': True
+ 'landed_cost_ok': False,
+ 'split_method': 'equal',
}
-class mrp_production(osv.osv):
- _inherit = "mrp.production"
- def _get_auto_picking(self, cr, uid, production):
- return production.product_id.auto_pick
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/stock_landed_costs/product_view.xml b/addons/stock_landed_costs/product_view.xml
new file mode 100644
index 00000000000..f3db15854af
--- /dev/null
+++ b/addons/stock_landed_costs/product_view.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+ product.product.landed.cost.form
+ product.product
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/stock_landed_costs/security/ir.model.access.csv b/addons/stock_landed_costs/security/ir.model.access.csv
new file mode 100644
index 00000000000..ee279151ef5
--- /dev/null
+++ b/addons/stock_landed_costs/security/ir.model.access.csv
@@ -0,0 +1,4 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+"access_stock_landed_cost","stock.landed.cost","model_stock_landed_cost","stock.group_stock_manager",1,1,1,1
+"access_stock_landed_cost_lines","stock.landed.cost.lines","model_stock_landed_cost_lines","stock.group_stock_manager",1,1,1,1
+"access_stock_valuation_adjustment_lines","stock.valuation.adjustment.lines","model_stock_valuation_adjustment_lines","stock.group_stock_manager",1,1,1,1
diff --git a/addons/stock_landed_costs/stock_landed_costs.py b/addons/stock_landed_costs/stock_landed_costs.py
new file mode 100644
index 00000000000..22fd52d85a5
--- /dev/null
+++ b/addons/stock_landed_costs/stock_landed_costs.py
@@ -0,0 +1,317 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 fields, osv
+import openerp.addons.decimal_precision as dp
+from openerp.tools.translate import _
+import product
+
+
+class stock_landed_cost(osv.osv):
+ _name = 'stock.landed.cost'
+ _description = 'Stock Landed Cost'
+ _inherit = 'mail.thread'
+
+ _track = {
+ 'state': {
+ 'stock_landed_costs.mt_stock_landed_cost_open': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'done',
+ },
+ }
+
+ def _total_amount(self, cr, uid, ids, name, args, context=None):
+ result = {}
+ for cost in self.browse(cr, uid, ids, context=context):
+ total = 0.0
+ for line in cost.cost_lines:
+ total += line.price_unit
+ result[cost.id] = total
+ return result
+
+ def _get_cost_line(self, cr, uid, ids, context=None):
+ cost_to_recompute = []
+ for line in self.pool.get('stock.landed.cost.lines').browse(cr, uid, ids, context=context):
+ cost_to_recompute.append(line.cost_id.id)
+ return cost_to_recompute
+
+ def onchange_pickings(self, cr, uid, ids, picking_ids=None, context=None):
+ result = {'valuation_adjustment_lines': []}
+ line_obj = self.pool.get('stock.valuation.adjustment.lines')
+ picking_obj = self.pool.get('stock.picking')
+ lines = []
+ for cost in self.browse(cr, uid, ids, context=context):
+ line_ids = [line.id for line in cost.valuation_adjustment_lines]
+ line_obj.unlink(cr, uid, line_ids, context=context)
+ picking_ids = picking_ids and picking_ids[0][2] or False
+ if not picking_ids:
+ return {'value': result}
+
+ for picking in picking_obj.browse(cr, uid, picking_ids):
+ for move in picking.move_lines:
+ #it doesn't make sense to make a landed cost for a product that isn't set as being valuated in real time at real cost
+ if move.product_id.valuation != 'real_time' or move.product_id.cost_method != 'real':
+ continue
+ total_cost = 0.0
+ total_qty = move.product_qty
+ weight = move.product_id and move.product_id.weight * move.product_qty
+ volume = move.product_id and move.product_id.volume * move.product_qty
+ for quant in move.quant_ids:
+ total_cost += quant.cost
+ vals = dict(product_id=move.product_id.id, move_id=move.id, quantity=move.product_uom_qty, former_cost=total_cost * total_qty, weight=weight, volume=volume, flag='original')
+ lines.append(vals)
+ result['valuation_adjustment_lines'] = lines
+ return {'value': result}
+
+ _columns = {
+ 'name': fields.char('Name', size=256, track_visibility='always', readonly=True),
+ 'date': fields.date('Date', required=True, states={'done': [('readonly', True)]}, track_visibility='onchange'),
+ 'picking_ids': fields.many2many('stock.picking', string='Pickings', states={'done': [('readonly', True)]}),
+ 'cost_lines': fields.one2many('stock.landed.cost.lines', 'cost_id', 'Cost Lines', states={'done': [('readonly', True)]}),
+ 'valuation_adjustment_lines': fields.one2many('stock.valuation.adjustment.lines', 'cost_id', 'Valuation Adjustments', states={'done': [('readonly', True)]}),
+ 'description': fields.text('Item Description', states={'done': [('readonly', True)]}),
+ 'amount_total': fields.function(_total_amount, type='float', string='Total', digits_compute=dp.get_precision('Account'),
+ store={
+ 'stock.landed.cost': (lambda self, cr, uid, ids, c={}: ids, ['cost_lines'], 20),
+ 'stock.landed.cost.lines': (_get_cost_line, ['price_unit', 'quantity', 'cost_id'], 20),
+ }, track_visibility='always'
+ ),
+ 'state': fields.selection([('draft', 'Draft'), ('done', 'Posted'), ('cancel', 'Cancelled')], 'State', readonly=True, track_visibility='onchange'),
+ 'account_move_id': fields.many2one('account.move', 'Journal Entry', readonly=True),
+ 'account_journal_id': fields.many2one('account.journal', 'Account Journal', required=True),
+ }
+
+ _defaults = {
+ 'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'stock.landed.cost'),
+ 'state': 'draft',
+ 'date': fields.date.context_today,
+ }
+
+ def copy(self, cr, uid, id, default=None, context=None):
+ default = {} if default is None else default.copy()
+ default.update({
+ 'account_move_id': False,
+ })
+ return super(stock_landed_cost, self).copy(cr, uid, id, default=default, context=context)
+
+ def _create_accounting_entries(self, cr, uid, line, move_id, context=None):
+ product_obj = self.pool.get('product.product')
+ cost_product = line.cost_line_id and line.cost_line_id.product_id
+ if not cost_product:
+ return False
+ accounts = product_obj.get_product_accounts(cr, uid, line.product_id.id, context=context)
+ debit_account_id = accounts['property_stock_valuation_account_id']
+ credit_account_id = cost_product.property_account_expense and cost_product.property_account_expense.id or cost_product.categ_id.property_account_expense_categ.id
+ if not credit_account_id:
+ raise osv.except_osv(_('Error!'), _('Please configure Stock Expense Account for product: %s.') % (cost_product.name))
+ return self._create_account_move_line(cr, uid, line, move_id, credit_account_id, debit_account_id, context=context)
+
+ def _create_account_move_line(self, cr, uid, line, move_id, credit_account_id, debit_account_id, context=None):
+ """
+ Generate the account.move.line values to track the landed cost.
+ """
+ aml_obj = self.pool.get('account.move.line')
+ aml_obj.create(cr, uid, {
+ 'name': line.name,
+ 'move_id': move_id,
+ 'product_id': line.product_id.id,
+ 'quantity': line.quantity,
+ 'debit': line.additional_landed_cost,
+ 'account_id': debit_account_id
+ }, context=context)
+ aml_obj.create(cr, uid, {
+ 'name': line.name,
+ 'move_id': move_id,
+ 'product_id': line.product_id.id,
+ 'quantity': line.quantity,
+ 'credit': line.additional_landed_cost,
+ 'account_id': credit_account_id
+ }, context=context)
+ return True
+
+ def _create_account_move(self, cr, uid, cost, context=None):
+ vals = {
+ 'journal_id': cost.account_journal_id.id,
+ 'period_id': self.pool.get('account.period').find(cr, uid, cost.date, context=context)[0],
+ 'date': cost.date,
+ 'ref': cost.name
+ }
+ return self.pool.get('account.move').create(cr, uid, vals, context=context)
+
+ def button_validate(self, cr, uid, ids, context=None):
+ quant_obj = self.pool.get('stock.quant')
+ for cost in self.browse(cr, uid, ids, context=context):
+ if not cost.valuation_adjustment_lines:
+ raise osv.except_osv(_('Error!'), _('You cannot validate a landed cost which has no valuation line.'))
+ move_id = self._create_account_move(cr, uid, cost, context=context)
+ quant_dict = {}
+ for line in cost.valuation_adjustment_lines:
+ if not line.move_id:
+ continue
+ per_unit = line.final_cost / line.quantity
+ diff = per_unit - line.former_cost_per_unit
+ quants = [quant for quant in line.move_id.quant_ids]
+ for quant in quants:
+ if quant.id not in quant_dict:
+ quant_dict[quant.id] = quant.cost + diff
+ else:
+ quant_dict[quant.id] += diff
+ for key, value in quant_dict.items():
+ quant_obj.write(cr, uid, quant.id, {'cost': value}, context=context)
+ self._create_accounting_entries(cr, uid, line, move_id, context=context)
+ self.write(cr, uid, cost.id, {'state': 'done', 'account_move_id': move_id}, context=context)
+ return True
+
+ def button_cancel(self, cr, uid, ids, context=None):
+ self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
+ return True
+
+ def compute_landed_cost(self, cr, uid, ids, context=None):
+ line_obj = self.pool.get('stock.valuation.adjustment.lines')
+ for cost in self.browse(cr, uid, ids, context=None):
+ total_qty = 0.0
+ total_cost = 0.0
+ total_weight = 0.0
+ total_volume = 0.0
+ total_line = 0.0
+ for line in cost.valuation_adjustment_lines:
+ if line.flag == 'original':
+ total_qty += line.quantity
+ total_cost += line.former_cost
+ total_weight += line.weight
+ total_volume += line.volume
+ total_line += 1
+
+ unlink_ids = line_obj.search(cr, uid, [('cost_id', 'in', ids), ('flag', '=', 'duplicate')], context=context)
+ line_obj.unlink(cr, uid, unlink_ids, context=context)
+ for cost in self.browse(cr, uid, ids, context=None):
+ count = 0.0
+ for line in cost.cost_lines:
+ count += 1
+ for valuation in cost.valuation_adjustment_lines:
+ if count == 1:
+ line_obj.write(cr, uid, valuation.id, {'cost_line_id': line.id}, context=context)
+ continue
+ line_obj.copy(cr, uid, valuation.id, default={'cost_line_id': line.id, 'flag': 'duplicate'}, context=context)
+
+ for cost in self.browse(cr, uid, ids, context=None):
+ dict = {}
+ for line in cost.cost_lines:
+ for valuation in cost.valuation_adjustment_lines:
+ value = 0.0
+ if valuation.cost_line_id and valuation.cost_line_id.id == line.id:
+ if line.split_method == 'by_quantity' and total_qty:
+ per_unit = (line.price_unit / total_qty)
+ value = valuation.quantity * per_unit
+ elif line.split_method == 'by_weight' and total_weight:
+ per_unit = (line.price_unit / total_weight)
+ value = valuation.weight * per_unit
+ elif line.split_method == 'by_volume' and total_volume:
+ per_unit = (line.price_unit / total_volume)
+ value = valuation.volume * per_unit
+ elif line.split_method == 'equal':
+ value = (line.price_unit / total_line)
+ elif line.split_method == 'by_current_cost_price' and total_cost:
+ per_unit = (line.price_unit / total_cost)
+ value = valuation.former_cost * per_unit
+ else:
+ value = (line.price_unit / total_line)
+
+ if valuation.id not in dict:
+ dict[valuation.id] = value
+ else:
+ dict[valuation.id] += value
+
+ for key, value in dict.items():
+ line_obj.write(cr, uid, key, {'additional_landed_cost': value}, context=context)
+ return True
+
+
+class stock_landed_cost_lines(osv.osv):
+ _name = 'stock.landed.cost.lines'
+ _description = 'Stock Landed Cost Lines'
+
+ def onchange_product_id(self, cr, uid, ids, product_id=False, context=None):
+ result = {}
+ if not product_id:
+ return {'value': {'quantity': 0.0, 'price_unit': 0.0}}
+
+ product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
+ result['name'] = product.name
+ result['split_method'] = product.split_method
+ result['price_unit'] = product.standard_price
+ result['account_id'] = product.property_account_expense and product.property_account_expense.id or product.categ_id.property_account_expense_categ.id
+ return {'value': result}
+
+ _columns = {
+ 'name': fields.char('Description', size=256),
+ 'cost_id': fields.many2one('stock.landed.cost', 'Landed Cost', required=True, ondelete='cascade'),
+ 'product_id': fields.many2one('product.product', 'Product', required=True),
+ 'price_unit': fields.float('Unit Price', required=True, digits_compute=dp.get_precision('Product Price')),
+ 'split_method': fields.selection(product.SPLIT_METHOD, string='Split Method', required=True),
+ 'account_id': fields.many2one('account.account', 'Account', domain=[('type', '<>', 'view'), ('type', '<>', 'closed')]),
+ }
+
+class stock_valuation_adjustment_lines(osv.osv):
+ _name = 'stock.valuation.adjustment.lines'
+ _description = 'Stock Valuation Adjustment Lines'
+
+ def _amount_final(self, cr, uid, ids, name, args, context=None):
+ result = {}
+ for line in self.browse(cr, uid, ids, context=context):
+ result[line.id] = {
+ 'former_cost_per_unit': 0.0,
+ 'final_cost': 0.0,
+ }
+ result[line.id]['former_cost_per_unit'] = (line.former_cost / line.quantity if line.quantity else 1.0)
+ result[line.id]['final_cost'] = (line.former_cost + line.additional_landed_cost)
+ return result
+
+ def _get_name(self, cr, uid, ids, name, arg, context=None):
+ res = {}
+ for line in self.browse(cr, uid, ids, context=context):
+ res[line.id] = line.product_id.code or line.product_id.name or ''
+ if line.cost_line_id:
+ res[line.id] += ' - ' + line.cost_line_id.name
+ return res
+
+ _columns = {
+ 'name': fields.function(_get_name, type='char', string='Description', store=True),
+ 'cost_id': fields.many2one('stock.landed.cost', 'Landed Cost', required=True, ondelete='cascade'),
+ 'cost_line_id': fields.many2one('stock.landed.cost.lines', 'Cost Line', readonly=True),
+ 'move_id': fields.many2one('stock.move', 'Stock Move', readonly=True),
+ 'product_id': fields.many2one('product.product', 'Product', required=True),
+ 'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
+ 'weight': fields.float('Weight', digits_compute=dp.get_precision('Product Unit of Measure')),
+ 'volume': fields.float('Volume', digits_compute=dp.get_precision('Product Unit of Measure')),
+ 'former_cost': fields.float('Former Cost', digits_compute=dp.get_precision('Product Price')),
+ 'former_cost_per_unit': fields.function(_amount_final, multi='cost', string='Former Cost(Per Unit)', type='float', digits_compute=dp.get_precision('Account'), store=True),
+ 'additional_landed_cost': fields.float('Additional Landed Cost', digits_compute=dp.get_precision('Product Price')),
+ 'final_cost': fields.function(_amount_final, multi='cost', string='Final Cost', type='float', digits_compute=dp.get_precision('Account'), store=True),
+ 'flag': fields.selection([('original', 'Original'), ('duplicate', 'Duplicate')], 'Flag', readonly=True),
+ }
+
+ _defaults = {
+ 'quantity': 1.0,
+ 'weight': 1.0,
+ 'volume': 1.0,
+ 'flag': 'original',
+ }
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_landed_costs/stock_landed_costs_data.xml b/addons/stock_landed_costs/stock_landed_costs_data.xml
new file mode 100644
index 00000000000..31f6d57e49f
--- /dev/null
+++ b/addons/stock_landed_costs/stock_landed_costs_data.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Done
+ stock.landed.cost
+ Landed cost validated
+
+
+
+
diff --git a/addons/stock_landed_costs/stock_landed_costs_sequence.xml b/addons/stock_landed_costs/stock_landed_costs_sequence.xml
new file mode 100644
index 00000000000..9c305483d94
--- /dev/null
+++ b/addons/stock_landed_costs/stock_landed_costs_sequence.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Stock Landed Costs
+ stock.landed.cost
+
+
+ Stock Landed Costs
+ stock.landed.cost
+ LC/%(year)s/
+ 4
+
+
+
+
diff --git a/addons/stock_landed_costs/stock_landed_costs_view.xml b/addons/stock_landed_costs/stock_landed_costs_view.xml
new file mode 100644
index 00000000000..be59482a234
--- /dev/null
+++ b/addons/stock_landed_costs/stock_landed_costs_view.xml
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+ stock.landed.cost.form
+ stock.landed.cost
+
+
+
+
+
+
+
+ tree
+
+
+
+
+
+
+ form
+
+
+
+
+
+
+
+
diff --git a/addons/stock_location/__openerp__.py b/addons/stock_location/__openerp__.py
deleted file mode 100644
index 9d5386863e6..00000000000
--- a/addons/stock_location/__openerp__.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 .
-#
-##############################################################################
-
-
-{
- 'name': 'Advanced Routes',
- 'version': '1.0',
- 'category': 'Manufacturing',
- 'description': """
-This module supplements the Warehouse application by effectively implementing Push and Pull inventory flows.
-============================================================================================================
-
-Typically this could be used to:
---------------------------------
- * Manage product manufacturing chains
- * Manage default locations per product
- * Define routes within your warehouse according to business needs, such as:
- - Quality Control
- - After Sales Services
- - Supplier Returns
-
- * Help rental management, by generating automated return moves for rented products
-
-Once this module is installed, an additional tab appear on the product form,
-where you can add Push and Pull flow specifications. The demo data of CPU1
-product for that push/pull :
-
-Push flows:
------------
-Push flows are useful when the arrival of certain products in a given location
-should always be followed by a corresponding move to another location, optionally
-after a certain delay. The original Warehouse application already supports such
-Push flow specifications on the Locations themselves, but these cannot be
-refined per-product.
-
-A push flow specification indicates which location is chained with which location,
-and with what parameters. As soon as a given quantity of products is moved in the
-source location, a chained move is automatically foreseen according to the
-parameters set on the flow specification (destination location, delay, type of
-move, journal). The new move can be automatically processed, or require a manual
-confirmation, depending on the parameters.
-
-Pull flows:
------------
-Pull flows are a bit different from Push flows, in the sense that they are not
-related to the processing of product moves, but rather to the processing of
-procurement orders. What is being pulled is a need, not directly products. A
-classical example of Pull flow is when you have an Outlet company, with a parent
-Company that is responsible for the supplies of the Outlet.
-
- [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]
-
-When a new procurement order (A, coming from the confirmation of a Sale Order
-for example) arrives in the Outlet, it is converted into another procurement
-(B, via a Pull flow of type 'move') requested from the Holding. When procurement
-order B is processed by the Holding company, and if the product is out of stock,
-it can be converted into a Purchase Order (C) from the Supplier (Pull flow of
-type Purchase). The result is that the procurement order, the need, is pushed
-all the way between the Customer and Supplier.
-
-Technically, Pull flows allow to process procurement orders differently, not
-only depending on the product being considered, but also depending on which
-location holds the 'need' for that product (i.e. the destination location of
-that procurement order).
-
-Use-Case:
----------
-
-You can use the demo data as follow:
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- **CPU1:** Sell some CPU1 from Chicago Shop and run the scheduler
- - Warehouse: delivery order, Chicago Shop: reception
- **CPU3:**
- - When receiving the product, it goes to Quality Control location then
- stored to shelf 2.
- - When delivering the customer: Pick List -> Packing -> Delivery Order from Gate A
- """,
- 'author': 'OpenERP SA',
- 'images': ['images/pulled_flow.jpeg','images/pushed_flow.jpeg'],
- 'depends': ['procurement','stock','sale'],
- 'data': ['stock_location_view.xml', 'security/stock_location_security.xml', 'security/ir.model.access.csv', 'procurement_pull_workflow.xml'],
- 'demo': [
- 'stock_location_demo_cpu1.xml',
- 'stock_location_demo_cpu3.yml',
- ],
- 'installable': True,
- 'test': [
- 'test/stock_location_pull_flow.yml',
- 'test/stock_location_push_flow.yml',
- ],
- 'auto_install': False,
-}
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_location/i18n/ar.po b/addons/stock_location/i18n/ar.po
deleted file mode 100644
index fcad763d922..00000000000
--- a/addons/stock_location/i18n/ar.po
+++ /dev/null
@@ -1,417 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.4\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2009-02-03 06:25+0000\n"
-"Last-Translator: <>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "ارسال السلع"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "سحب المسارات"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "نقل"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "دفع المسارات"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "اضافة رقم الخطة التلقائي"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "مكان المورد"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr "يسمح لك بالغاء التحركات المتعلقة بسحب مسارا لمنتج"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "سحب المسارات"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "استخدم الموقع بواسطة المخصص للتزويد"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "داخلي"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"تأتي المشتريات المسحوبة من الموقع الأصلي %s،قاعدة السحب %s، عن طريق الشراء "
-"الأصلي %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "المكان"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "حالات الفاتورة"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"ويستخدم لتحديد مسارات المنتج لديها لمتابعة ما داخل شجرة الموقع.\n"
-"وينشأ قيمة 'النقل التلقائي تحرك الاسهم بعد النظام الحالي الذي سيتم التحقق من "
-"صحته تلقائيا. مع \"دليل التشغيل\"، تحرك المخزون هذا لا بد من التحقق من صحته "
-"من قبل العامل. مع 'التلقائي بدون خطوة مضافة'، يتم استبدال الموقع في هذه "
-"الخطوة الأصلية."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "الشروط"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "نطاق المجموعة"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "البوابة B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "البوابة A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "شراء"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "دفع المسارات"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "نطاق الانجاز"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "سحب المسارات"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "شركة"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "حركة مخزن"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr "اذا تم التحقق منه, عند الغاء هذا التحرك, الغي ايضًا التحرك المتصل"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "ينتج"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "اجعله امر"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "اضفه الى المخزون"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "تم توريدها من موقع آخر."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "عنوان الشريك"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "ليتم عمل الفاتورة"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "عدد الايام لانجاز هذا الانتقال"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "سيملأ هذا الحقل اصل الاختيار و اسم تحركاتها"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "علامة المشتريات"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "الاسم"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr "تضع هذه القواعد المسار الصحيح للمنتج في اي مكان من الشجرة."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "العملية اليدوية"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "المنتج"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "نوع الشحن"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"‘اجعله للمخزون‘: اذا تم احتياجه, خذه من المخزون او انتظر حتى اعادة تزويده. "
-"‘اجعله للامر‘: اذا تم احتياجه, اشتري او انتج لطلب المشتريات."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "وهي موقع التخصيص التي تحتاج التزويد"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "المنتجات"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "hgjp;l td hgohwdm"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "غير ممكن"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "تأخير (الايام)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"اختيار للمشترى المسحوب الآتي من الموقع الاصلي %s, قاعدة السحب %s, عبر "
-"المشتريات الاصلية %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "دفع المسار"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"التحرك بالنسبة للمشتريات المسحوبة تأتي من المكان الاصلي %s, قاعدة السحب %s, "
-"عبر المشترى الاصلي %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "تدفق الصادر"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "تدفق الوارد"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "المشتريات"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "الموقع المخصص"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "تحرك تلقائي"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "الحصول على السلع"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "نوع الإجراء"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "أسلوب الشراء"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "بناءًا على الشركة, اختار ماتريد استقباله او ارسال المنتجات"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "تقدم الامر"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "العملية"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "موقع المسارات"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "يومية"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "الغي التتابع"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "مفوتر"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "يجب تعيين دفعة إنتاج لهذا المنتج"
-
-#~ msgid "Parameters"
-#~ msgstr "المحددات"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "انت تحاول تخصيص الكثير من ما هو دون المنتج نفسه"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "خطأ: كود إين غير صالح"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "المسارات التسويقية"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "مسارات مواقع المستودع"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr "أُستخدمت لمعرفة اي شركة تنتمي اليها العبوات والتحركات"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "تم سحبه من موقع اخر عبر المشتريات %d"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "لا يمكنك نقل المنتجات أو المكان من المستعرض."
diff --git a/addons/stock_location/i18n/bg.po b/addons/stock_location/i18n/bg.po
deleted file mode 100644
index 1c326c23c43..00000000000
--- a/addons/stock_location/i18n/bg.po
+++ /dev/null
@@ -1,414 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2011-03-01 15:00+0000\n"
-"Last-Translator: Dimitar Markov \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Изпращане на стоки"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Трансфер"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Избутани потоци"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Автоматично без добавяне на стъпка"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Местонахождение източник"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Вътрешен"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Местонахождение"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Състояние на фактура"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Това се използва за да се зададат пътищата които продукта трябва да следва в "
-"рамките на дървото на местонахожденията\n"
-"Стойността 'Автоматично движение' ще създаде движение в склад след текущия "
-"който бъде проверен автоматично. Със 'Ръчна операция' движението в склада "
-"трябва да бъде проверено ръчно. С 'Автомачино без допълнителна стъпка' "
-"местонахождението бива заменено в оригиналното движение"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Условия"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Пакетажна зона"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Врата B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Врата А"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Купи"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Зона за изпращане"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Фирма"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Движение на наличности"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Продукция"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Адрес на партньор"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "За фактуриране"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Брой дни до промяната"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Тип на снабдяване"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Име"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Тези правила задават правилния път на продукта в цялото сърво на "
-"местонахожденията"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Ръчна операция"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Продукт"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Вид на транспортиране"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Продукти"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "контрол по качеството"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Неприложим"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Закъснения (дни)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Снабдаване"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Местонахождения цел"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Автоматично движение"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Доставяне на стоки"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Вид действие"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Метод на снабдаване"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Обработка на нареждане"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Операция"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Пътища на местонахождения"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Журнал"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Фактурирани"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Невалиден XML за преглед на архитектурата"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Името на обекта трябва да започва с \"x_\" и да не съдържа никакви специални "
-#~ "символи!"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Набавяне & местонахождения"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Пътища до местонахождение на склад"
-
-#~ msgid "Parameters"
-#~ msgstr "Параметри"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Логистичен поток"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Опитвате да свържете партида, която не е от същия продукт"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Грешка: Невалиден европейски баркод"
diff --git a/addons/stock_location/i18n/bs.po b/addons/stock_location/i18n/bs.po
deleted file mode 100644
index 083c7127f83..00000000000
--- a/addons/stock_location/i18n/bs.po
+++ /dev/null
@@ -1,416 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-08-03 01:15+0000\n"
-"Last-Translator: adnan \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Se koristi da se zna kojoj kompaniji prikupljanja i kretanja proizvoda "
-"pripadaju."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Slanje robe"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Povučeni putevi"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Kretanje"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Gurnuti tokovi"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automatski bez dodavanja koraka"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Izvorna lokacija"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Dozvoljava Vam da otkažete kretanja povezana sa tokovima povlačenja proizvoda"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Tokovi povlačenja"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Lokacija koju koristi odredišna lokacija za snadbjevanje"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interni"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Naručivanja povlačenja proizvoda koji dolaze iz originalne lokacije %s, "
-"povuci pravilo %s, preko originalnog naručivanja %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Lokacija"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Status fakture"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Ova se opcija koristi za definiranje putanja koje proizvod treba proći "
-"unutar lokacijskog stabla.\n"
-"Vrijednost 'Automatskog pomaka' će uzrokovati pomak zaliha nakon trenutnog "
-"koji će se automatski provjeriti. Pri 'Manualnoj operaciji', radnik mora "
-"provjeriti pomak zalihe. Pri opciji 'Automatski bez dodavanja koraka', "
-"lokacija se zamjenjuje originalnim pomakom."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Uslovi"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona pakovanja"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Kapija B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Kapija A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Kupi"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Tokovi guranja"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Dispečerska zona"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Tokovi povlačenja"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Kompanija"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Kretanje zalihe"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Ako je označeno, kada je ovo kretanje otkazano, također otkaži i povezano "
-"kretanje"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Proizvodi"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Napravi na narudžbu"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Napravi na zalihu"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Povučeno iz druge lokacije."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Adresa partnera"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Za fakturisanje"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Broj dana za izvesti ovu pretvorbu"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "Ovo polje će ispuniti izvor paketa i naziv njegovog kretanja"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tip naručivanja"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Naziv"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Ova pravila postavljaju pravilnu putanju proizvoda u čitavom lokacijskom "
-"stablu"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Ručna operacija"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Proizvod"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tip isporuke"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Napravi na zalihu': Kada je potrebno, uzmi sa zalihe ili čekaj dok se "
-"ponovno dopuni. 'Napravi na narudžbu': Kada je potrebno, nabavi ili "
-"proizvedi za zahtjev naručivanja."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "To je odredišna lokacija koja treba snadbjevanje"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Proizvodi"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Kontrola kvalitete"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Nije primjenjivo"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Kašnjenje (dana)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Prikupljanja za povučena naručivanja koja dolaze iz originalne lokacije %s, "
-"povuci pravilo %s, preko originalnog naručivanja %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Gurnuti tok"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Kretanja za povučena naručivanja koja dolaze iz originalne lokacije %s, "
-"povuci pravilo %s, preko originalnog naručivanja %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Gurni tok"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Povuci tok"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Naručivanje"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Odredišna lokacija"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatsko kretanje"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Dobivanje robe"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tip akcije"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Metoda naručivanja"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Ovisno o kompaniji, odaberite što želite za prijem ili isporuku proizvoda"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Obrada narudžbe"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operacija"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Putanje između lokacija"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Dnevnik knjiženja"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Otkaži kaskadno"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Fakturisano"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Neodgovarajući XML za arhitekturu prikaza!"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Nabavka i Lokacije"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Naziv Objekta mora počinjati sa x_ i ne smije sadržavati specijalne znakove!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Putovi između lokacija zaliha"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
diff --git a/addons/stock_location/i18n/ca.po b/addons/stock_location/i18n/ca.po
deleted file mode 100644
index 55633c125b0..00000000000
--- a/addons/stock_location/i18n/ca.po
+++ /dev/null
@@ -1,610 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-08-12 05:55+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Enviament de mercaderies"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Camins arrossegats"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Moviment"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Fluxos empesos"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automàtic pas no afegit"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ubicació origen"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Us permet cancel·lar moviments relacionats amb el flux d'arrossegament de "
-"producte."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Fluxos arrossegats"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Ubicació utilitzada com a ubicació destí en proveir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Intern"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Proveïment arrossegat provinent de la ubicació original %s, regla "
-"d'arrossegament %s, via proveïment original %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Ubicació"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Estat factura"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"S'utilitza per a definir rutes que el producte ha de seguir dins de l'arbre "
-"d'ubicacions.\n"
-"L'opció 'Moviment automàtic' crearà un moviment d'estoc després de l'actual "
-"que es validarà automàticament. Amb 'Operació manual', el moviment d'estoc "
-"ha de ser validat per un treballador. Amb 'Automàtic pas no afegit', la "
-"ubicació es reemplaça en el moviment original."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condicions"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona d'empaquetat"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Porta B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Porta A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Compra"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Fluxos empesos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona d'expedició"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Fluxos arrossegats"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Companyia"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Moviment d'estoc"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Si està marcat, quan aquest moviment es cancel·la, també cancel·la el "
-"moviment relacionat."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produeix"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Obtenir sota comanda"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Obtenir per estoc"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Adreça de l'empresa"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Per factura"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de dies per a realitzar aquesta transició"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Aquest camp emplenarà l'origen de l'albarà i el nom dels seus moviments."
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipus de proveïment"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nom"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Aquestes regles fixen la ruta correcta del producte en tot l'arbre "
-"d'ubicacions."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operació manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Producte"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipus d'enviament"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Obtenir per estoc': Quan sigui necessari, agafar de l'estoc o esperar fins "
-"que torni haver-hi estoc suficient. 'Obtenir sota comanda': Quan sigui "
-"necessari, comprar o produir per a la petició de proveïment."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "És la ubicació destino que necessita subministrament."
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Productes"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Control de qualitat"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "No aplicable"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Retard (dies)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Albarà per a proveïment arrossegat provinent de la ubicació original %s, "
-"regla d'arrossegament %s, via proveïment original %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Flux empès"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Moviment per a proveïment arrossegat provinent de la ubicació original %s, "
-"regla d'arrossegament %s, via proveïment original %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Proveïment"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ubicació destí"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Moviment automàtic"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Recepció de mercaderies"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipus d'acció"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Mètode proveïment"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "Segons la companyia, seleccioneu si voleu rebre o enviar productes."
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Processant comanda"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operació"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Rutes d'ubicacions"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diari"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancel·la cascada"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturat"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "XML invàlid per a la definició de la vista!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Rutes ubicació estoc"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "El nom de l'objecte ha de començar amb x_ i no contenir cap caràcter "
-#~ "especial!"
-
-#~ msgid "stock.location.path"
-#~ msgstr "estoc.ubicacio.ruta"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Abastament & Ubicacions"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Heu d'assignar un lot de producció per a aquest producte"
-
-#~ msgid "Parameters"
-#~ msgstr "Paràmetres"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Camins en les ubicacions de magatzem"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Fluxos de logística"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Esteu intentant assignar un lot que no és del mateix producte"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Arrossegat des d'una altra ubicació via proveïment %d"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Error: Codi EAN no vàlid"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "S'utilitza per saber a quina companyia pertany els albarans i moviments."
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Aquest mòdul complementa l'aplicació Magatzem, afegint suport per a cada "
-#~ "producte,\n"
-#~ "ruta d'ubicació, aplicació efectiva de fluxos d'inventari d'entrada i "
-#~ "sortida.\n"
-#~ "\n"
-#~ "Normalment, això es podrà utilitzar per:\n"
-#~ "* Gestió de les cadenes de fabricació de productes\n"
-#~ "* Gestionar ubicacions predeterminades per producte\n"
-#~ "* Definir les rutes dins del seu magatzem d'acord a les necessitats "
-#~ "empresarials, tals com:\n"
-#~ " - Control de Qualitat\n"
-#~ " - Després de Serveis de Vendes\n"
-#~ " - Proveïdor devolucions\n"
-#~ "* Gestió d'Ajuda a la rendibilitat, mitjançant la generació de moviments "
-#~ "automàtics per productes llogats\n"
-#~ "\n"
-#~ "Una vegada que aquest mòdul està instal·lat, apareixerà una data addicional "
-#~ "en la pestanya del producte, on es pot afegir\n"
-#~ "les especificacions del flux d'Entrada i de Sortida. Les dades de "
-#~ "demostració del producte CPU1 per aquests fluxos d'entrada/sortida:\n"
-#~ "\n"
-#~ "Fluxos d'Entrada\n"
-#~ "----------\n"
-#~ "Els fluxos d'entrada són útils quan l'arribada de determinats productes a un "
-#~ "lloc determinat sempre\n"
-#~ "va seguida d'un moviment que correspon a una altra ubicació, opcionalment "
-#~ "després d'un cert retard.\n"
-#~ "L'aplicació Magatzem original ja suporta tals especificacions del flux "
-#~ "d'entrada en les seves ubicacions, però aquestes no poden ser refinades per "
-#~ "producte.\n"
-#~ "\n"
-#~ "Una especificació de flux d'entrada indica quina ubicació està encadenada "
-#~ "amb quina ubicació, i amb\n"
-#~ "quins paràmetres. Tan aviat com una quantitat determinada de productes es "
-#~ "mou de la ubicació d'origen,\n"
-#~ "un moviment encadenat de forma automàtica configurat d'acord amb els "
-#~ "paràmetres establerts en la especificació del flux\n"
-#~ "(lloc de destí, demora, tipus de moviment, diaris, etc) es dispara. El nou "
-#~ "moviment pot ser automàticament\n"
-#~ "processat, o requerir una confirmació manual, depenent dels paràmetres.\n"
-#~ "\n"
-#~ "Fluxos de Sortida\n"
-#~ "----------\n"
-#~ "Els fluxos de sortida són diferents dels fluxos d'entrada, en el sentit de "
-#~ "que no estan relacionats amb\n"
-#~ "la tramitació de moviments de productes, sinó més bé amb el tractament de "
-#~ "les comandes de venda.\n"
-#~ "El que es treu és una necessitat, no directament els productes.\n"
-#~ "Un exemple clàssic de flux de sortida és quan vosaltres teniu una empresa "
-#~ "d'Outlet, amb una empresa pare\n"
-#~ "que és la responsable dels subministraments de l'Outlet.\n"
-#~ "\n"
-#~ " [client] <- A - [Outlet] <- B - [Subministrador] <~ C ~ [Proveïdor]\n"
-#~ "\n"
-#~ "Quan una nova ordre de compra (A, procedent de la confirmació d'una ordre de "
-#~ "venda per exemple) arriba a l'Outlet, es converteix en una altra compra (B, "
-#~ "a través d'un flux d'entrada del tipus 'moure')\n"
-#~ "sol·licitada des del soci. Quan l'ordre de compra per a B es processada per "
-#~ "l'empresa sòcia, i\n"
-#~ "si el producte està esgotat, pot convertir-se en una Ordre de Compra (C) del "
-#~ "Proveïdor\n"
-#~ "(flux d'Entrada de tipus Compra). El resultat és que l'ordre d'adquisició, "
-#~ "la necessitat, es trasllada automàticament del Client al Proveïdor.\n"
-#~ "\n"
-#~ "Tècnicament, els fluxos de Sortida permeten processar les comandes "
-#~ "d'adquisició d'altra manera, no només en funció del producte considerat, "
-#~ "sinó també en funció de quina ubicació té la \"necessitat\" de quin\n"
-#~ "producte (és dir, la ubicació de destí d'aquesta ordre de compra).\n"
-#~ "\n"
-#~ "Cas d'Ús\n"
-#~ "---------------\n"
-#~ "\n"
-#~ "Podeu utilitzar les dades de demostració de la següent manera:\n"
-#~ " CPU1: Venda d'algunes CPU1 en la tenda 1 i executar el planificador\n"
-#~ " - Magatzem: ordre de lliurament, Tenda 1: Recepció\n"
-#~ " CPU3:\n"
-#~ " - Al rebre el producte, va al Control de Qualitat i s'emmagatzema a la "
-#~ "plataforma 2.\n"
-#~ " - Quan es lliura al client: Llista de Selecció -> Embalatge -> Ordre de "
-#~ "Lliurament des de la porta A\n"
-#~ " "
diff --git a/addons/stock_location/i18n/cs.po b/addons/stock_location/i18n/cs.po
deleted file mode 100644
index 01ec8338370..00000000000
--- a/addons/stock_location/i18n/cs.po
+++ /dev/null
@@ -1,384 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-08-03 01:14+0000\n"
-"Last-Translator: Mantavya Gajjar (Open ERP) \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Zdrojové umístění"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Manuální operace"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produkty"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatický přesun"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operace"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Invalidní XML pro zobrazení architektury!"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Jméno objektu musí začínat znakem x_ a nesmí obsahovat žádný speciální znak!"
diff --git a/addons/stock_location/i18n/da.po b/addons/stock_location/i18n/da.po
deleted file mode 100644
index 82e2cde6882..00000000000
--- a/addons/stock_location/i18n/da.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# Danish translation for openobject-addons
-# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2012.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-01-27 06:45+0000\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: Danish \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Kilde lokation"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Lokation"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Lager flytning"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Producer til lager"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Trukket fra en anden lokation."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Varer"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Destinations lokation"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
diff --git a/addons/stock_location/i18n/de.po b/addons/stock_location/i18n/de.po
deleted file mode 100644
index a0f58302c01..00000000000
--- a/addons/stock_location/i18n/de.po
+++ /dev/null
@@ -1,635 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-# Ferdinand Gassauer , 2010.
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.4\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-12-18 06:05+0000\n"
-"Last-Translator: Ferdinand \n"
-"Language-Team: German \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr "zu welchem Unternhemen gehören die Lieferscheine und Lagerbuchungen"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Warenversand"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Pfade durch Pull Regeln"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Buchung"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Warenfluss durch Push Regeln"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automatische Erstellung Lieferauftrag ohne Beleg"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Lagerort (Quelle)"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Ermöglicht Abbruch von Bestandsbuchungen durch einen konfigurierten Pull "
-"Pfad im Rahmen einer vollständigen Konfiguration"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Warenfluss durch Pull Regeln"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Lagerort (Ziel)"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Umlagerung"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Pull Disposition vom Lagerort %s, Pull Pfad %s, ausgelöst durch die "
-"ursprüngliche Beschaffung %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Lagerort"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Status Rechnung"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Festgelegt wird der Pfad des Produktes durch die Lagerorte des "
-"Unternehmens.\n"
-"Der Eintrag für 'Automatische Erstellung Lieferauftrag' erzeugt automatisch "
-"einen weiteren Lieferauftrag unmittelbar im Anschluss an den aktuellen "
-"Lieferauftrag. Mit 'Manuelle Erstellung Lieferauftrag' muss der weitere "
-"Lieferauftrag erst durch einen Lagermitarbeiter validiert werden. Mit "
-"'Automatische Erstellung Lieferauftrag ohne Beleg' wird ausschließlich der "
-"ursprüngliche Zielort ersetzt, ohne dabei einen neuen Lieferauftrag zu "
-"erstellen."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Bedingungen"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Packzone"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Tor B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Tor A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Einkaufen"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Push Warenfluss"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Versandzone"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Pull Warenfluss"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Unternehmen"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Lieferauftrag"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Durch Aktivierung wird die verbundene Lieferung bei Abbruch ebenfalls "
-"abgebrochen"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produziere"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Disponiere von Auftrag"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Disponiere vom Lager"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Von anderem Lager bezogen"
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Partner Adresse"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Manuelle Rechnungserstellung"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Anzahl Tage für diese Lieferkette"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "Verweis auf Lieferauftrag und Lieferscheine"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Beschaffungstyp"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Bezeichnung"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr "Diese Regel bestimmt den internen Warenfluss."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Manuelle Durchführung"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Produkt"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Liefertyp"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Disponiere vom Lager' bedeutet: Wenn benötigt den Lagerbestand verwenden "
-"oder auf neue Lieferungen warten.\r\n"
-"'Disponiere von Auftrag' bedeutet: Wenn benötigt, einkaufen oder "
-"produzieren der Waren, die für die Erledigung erforderlich sind."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Lagerort (Ziel), das beliefert werden muss"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produkte"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Qualitätskontrolle"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Nicht abzurechnen"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Zeitverzögerung (Tage)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Lieferauftrag für Bezug unter Berücksichtigung einer vorhandenen Pull Regel "
-"für das Lager %s, Pull Pfad %s und ursprünglichem Beschaffungsauftrag %s "
-"(#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Push Workflow"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Bestandsbewertung für Bezug unter Berücksichtigung einer vorhandenen Pull "
-"Regel vom ursprünglichen Lager %s, mit Pull Regel %s und ursprünglichem "
-"Beschaffungauftrag %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Beschaffung"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Lagerort (Ziel)"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatischer neuer Lieferschein"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Wareneingang"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Aktionstyp"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Beschaffungsmethode"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Abhängig vom Unternehmen, treffen Sie eine beliebige Auswahl für den "
-"Warenversand oder Wareneingang"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Bearbeitung der Auftäge"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Vorgang"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Pfad Lagerorte"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Journal"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Storno Kaskade"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Abgerechnet"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Fehlerhafter xml Code für diese Ansicht!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Lagerort Standorte"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Der Objekt Name muss mit einem x_ starten und darf keine Sonderzeichen "
-#~ "beinhalten"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Beschaffung & Lagerwirtschaft"
-
-#~ msgid "Parameters"
-#~ msgstr "Parameter"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Bezogen durch Pull Pfad von anderem Lagerort via Beschaffung %d"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Lieferketten im Zentrallager"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Unternehmen zu dem diese Lieferaufträge und Bestandsbuchungen gehören"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr ""
-#~ "Sie versuchen eine Losnummer ohne Bezug zu diesem Produkt zuzuweisen."
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Sie müssen zwingend eine Losnummer für dieses Produkt angeben"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Fehler: Falscher EAN code"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Lieferabfolge"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Dieses Modul ergänzt die Anwendung für das Lager durch Erweiterung der "
-#~ "Möglichkeit zur\n"
-#~ "Festlegung produktbezogener Lieferketten, zwecks effektiver Umsetzung von "
-#~ "Push- und Pull-Lieferketten.\n"
-#~ "\n"
-#~ "Typischerweise könnten folgende Anwendungen für diese Funktion in Frage "
-#~ "kommen:\n"
-#~ "* Verwaltung von Lieferketten zwischen Fertigungsstellen\n"
-#~ "* Verwaltung von produktbezogenen Standardlagerorten\n"
-#~ "* Vordefinierte Lieferketten innerhalb eines Lagers aufgrund bestimmter "
-#~ "geschäftlichen Anforderungen, wie z.B.:\n"
-#~ " - Qualitätskontrolle in Wareneingang und Warenversand\n"
-#~ " - Technischer Kundendienst im Anschluss an einen Verkauf\n"
-#~ " - Rücksendung defekter Warenlieferungen an Lieferanten\n"
-#~ "* Unterstützung bei der Verwaltung von Mietprodukten, z.B. durch Generierung "
-#~ "von Lieferaufträgen für die Warenrückgabe\n"
-#~ "\n"
-#~ "Sobald diese Anwendung installiert ist, finden Sie einen zusätzlichen "
-#~ "Aktenreiter in der Formularansicht für Produkte, \n"
-#~ "auf dem Sie dann Ihre individuellen Push- und Pull-Lieferketten-"
-#~ "Spezifikation hinterlegen können. \n"
-#~ "\n"
-#~ "Die Demo-Daten beinhalten ein Beispiel der Push / Pull Lieferkette für das "
-#~ "CPU1 Produkt:\n"
-#~ "\n"
-#~ "Push Lieferkette\n"
-#~ "-----------------------\n"
-#~ "Push Lieferketten sind nützlich, wenn einer eingehenden Lieferung bestimmter "
-#~ "Produkte an einen bestimmten Ort immer\n"
-#~ "eine weitere entsprechende Folgelieferung an einen anderen Lagerort folgen "
-#~ "soll, gegebenenfalls nach einer gewissen \n"
-#~ "zeitlichen Verzögerung. Die ursprüngliche Anwendung für das Lager "
-#~ "unterstützt bereits solche Push-Lieferketten \n"
-#~ "durch eine Konfiguration beim Lagerort selbst, aber diese Lieferkette konnte "
-#~ "bislang nicht pro-Produkt verfeinert werden. \n"
-#~ "\n"
-#~ "Eine Push-Lieferketten-Spezifikation gibt somit an, welcher Lagerort an "
-#~ "einen anderen gekettet ist, mit den entsprechen\n"
-#~ "Angaben zu den Lagerorten und weiteren Parametern. Wenn also eine bestimmte "
-#~ "Anzahl von Produkten an einem \n"
-#~ "Lagerort geliefert wird, der auch als Quelle bei einer definierten "
-#~ "Lieferkette hinterlegt ist, wird automatisch ein weiterer Lieferauftrag \n"
-#~ "gemäss der Parametern der jeweiligen Lieferketten-Spezifikation festgelegt "
-#~ "(Zielort, zeitliche Verzögerung, Art der Lieferung, Lagerjournal, etc.) Der "
-#~ "hierdurch neu enstandene Lieferauftrag wird entweder automatisch verarbeitet "
-#~ "oder erfordert eine manuelle Bestätigung der Lieferung, je nach "
-#~ "Parametrisierung.\n"
-#~ "\n"
-#~ "Pull-Lieferkette\n"
-#~ "----------------------\n"
-#~ "Eine Pull-Lieferkette funktioniert ein wenig anders als Push-Lieferungen und "
-#~ "zwar in dem Sinne, dass sie sich nicht nur auf die\n"
-#~ "die Produktlieferung als solche bezieht, sondern auch die Verarbeitung von "
-#~ "Beschaffungsaufträgen modifiziert.\n"
-#~ "Die Angabe welcher Vorgang eine Pull-Lieferkette auslöst ist hierbei "
-#~ "wichtiger, als das Produkt selbst.\n"
-#~ "Ein klassisches Beispiel für eine Pull-Lieferkette wäre, wenn Sie ein "
-#~ "eigenes Unternehmen für Verkäufe in einem Outlet Store definiert haben, mit "
-#~ "einer übergeordneten Muttergesellschaft, die seinerseits die Verantwortung "
-#~ "für die Beschaffung der benötigten Produkte hat.\n"
-#~ "\n"
-#~ " [Kunden] <- A - [Outlet Store] <- B - [Muttergesellschaft] <~ C ~ "
-#~ "[Lieferant]\n"
-#~ "\n"
-#~ "Ausgangspunkt ist ein Beschaffungsauftrag (A, zum Beispiel aus der "
-#~ "Bestätigung eines Verkaufsauftrags) der\n"
-#~ "im Outlet Store entsteht und automatisch in einen anderen "
-#~ "Beschaffungsauftrag (B, über eine Push-Lieferkette des Typs 'Interne "
-#~ "Umlagerung') und somit in einen Bedarf der Muttergesellschaft konvertiert "
-#~ "wird. Wenn der Beschaffungsauftrag B durch die Muttergesellschaft "
-#~ "verarbeitet wird und das Produkt dort nicht vorrätig ist, kann es in eine "
-#~ "Bestellung (C) an den Lieferanten umgewandelt werden (Push-Lieferkette vom "
-#~ "Typ Beschaffung). Im Ergebnis wird der gesamte Beschaffungsauftrag, "
-#~ "respektive der Warenbedarf vom Kunden über die gesamte Lieferkette bis hin "
-#~ "zum Lieferanten der Muttergesellschaft verschoben.\n"
-#~ "\n"
-#~ "Technisch ausgedrückt ermöglichen Pull-Lieferketten einen modifizierten "
-#~ "Beschaffungprozess, nicht nur aus der Perspektive\n"
-#~ "des zu betrachtenden Produkts, sondern auch unter Berücksichtigung des "
-#~ "Lagerorts der die \"Notwendigkeit\" für das\n"
-#~ "Produkt hat (d.h. der Ziellagerort des Beschaffungsauftrags).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "-------------\n"
-#~ "\n"
-#~ "Sie können die Demo-Daten wie folgt nachvollziehen:\n"
-#~ " CPU1: Kaufen Sie einige Stück CPU1 vom Shop 1 und starten Sie einen "
-#~ "Beschaffungsvorschlag\n"
-#~ " - Zentrallager: Auslieferauftrag, Shop 1: Wareneingangslieferung\n"
-#~ " CPU3:\n"
-#~ " - Beim Wareneingang, geht die Ware zuerst in den Lagerort "
-#~ "Qualitätssicherung und erst dann in das Regal 2.\n"
-#~ " - Beim Warenversand: Kommissionierung der Ware -> Verpackung der Ware -"
-#~ "> Warenversand vom Gate A\n"
-#~ " "
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr ""
-#~ "Sie dürfen keine Sicht als Quelle oder Ziel einer Lagerbewegung angeben"
diff --git a/addons/stock_location/i18n/el.po b/addons/stock_location/i18n/el.po
deleted file mode 100644
index 50fdb939ecd..00000000000
--- a/addons/stock_location/i18n/el.po
+++ /dev/null
@@ -1,425 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2011-04-01 17:50+0000\n"
-"Last-Translator: Dimitris Andavoglou \n"
-"Language-Team: nls@hellug.gr \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-"X-Poedit-Country: GREECE\n"
-"X-Poedit-Language: Greek\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Αποστολή Αγαθών"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Μετακίνηση"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Βήμα Αυτόματης Αρίιθμησης προστέθηκε"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Τοποθεσία Προέλευσης"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Εσωτερικό"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Τοποθεσία"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Κατάσταση τιμολογίου"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Χρησιμοποιείται για τον ορισμό διαδρομών που το προϊόν πρέπει να ακολουθήσει "
-"μέσα στη δομή τοποθεσιών.\n"
-"Η 'Αυτόματη Κίνηση' θα δημιουργήσει μια κίνηση αποθεμάτων μετά από την "
-"παρούσα κίνηση, η οποία θα επικυρωθεί αυτόματα. Με τη 'Μη Αυτοματοποιημένη "
-"Διαδικασία' η κίνηση αποθεμάτων θα πρέπει να επικυρωθεί από κάποιον "
-"υπάλληλο. Με το 'Βήμα Αυτόματης Αρίιθμησης' αντκαθίσταται η τοποθεσία στην "
-"αρχική κίνηση."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Συνθήκες"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Θύρα Β"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Θύρα Α"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Αγορά"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Εταιρεία"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Κίνηση Αποθέματος"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Παραγωγή"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Προς Παραγγελία"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Προς Αποθήκευση"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Διεύθυνση Συνεργάτη"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Προς Τιμολόγηση"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Αριθμός ημερών για πραγματοποίηση κίνησης"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Τύπος Προμήθειας"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Όνομα"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Αυτοί οι κανόνες ορίζουν τη σωστή διαδρομή του προϊόντος ανάμεσα στις "
-"Τοποθεσίες"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Μη Αυτοματοποιημένη Διαδικασία"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Προϊόν"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Τύπος Αποστολής"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Προς Αποθήκευση': Όταν χρειαστεί, εξαγωγή από το απόθεμα ή αναμονή μέχρι "
-"την επόμενη προμήθεια. 'Προς Παραγγελία': Όταν χρειαστεί προμήθεια ή "
-"παραγωγή του προϊόντος."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Προϊόντα"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Έλεγχος Ποιότητας"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Μη Εφαρμόσιμο"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Καθυστέρηση (ημέρες)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Προμήθεια"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Τοποθεσία Προορισμού"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Αυτόματη Κίνηση"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Παραλαβή Αγαθών"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Τύπος Ενέργειας"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Μέθοδος Προμήθειας"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Επεξεργασία Παραγγελίας"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Διαδικασία"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Διαδρομές Τοποθεσιών"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Ημερολόγιο"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Τιμολογημένο"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Άκυρο XML για Αρχιτεκτονική Όψης!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Διαδρομές Τοποθεσιών Αποθήκευσης"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Το όνομα του αντικειμένου πρέπει να ξεκινάει από x_ και να μην περιέχει "
-#~ "ειδικούς χαρακτήρες!"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Προμήθειες και Τοποθεσίες"
-
-#~ msgid "Parameters"
-#~ msgstr "Παράμετροι"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Ροές Εφοδιαστικής"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Σφάλμα: Λανθασμένος κωδικός ΕΑΝ"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Τοποθεσία Αποθήκης"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr ""
-#~ "Προσπαθείτε να αντιστοιχίσετε μια παρτίδα που δεν είναι από το ίδιο προϊόν"
diff --git a/addons/stock_location/i18n/es.po b/addons/stock_location/i18n/es.po
deleted file mode 100644
index 5cef1104f37..00000000000
--- a/addons/stock_location/i18n/es.po
+++ /dev/null
@@ -1,618 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-12-22 11:34+0000\n"
-"Last-Translator: Pedro Manuel Baeza \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Se usa para saber a qué compañía pertenecen los albaranes y movimientos."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Envío mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Rutas arrastradas"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Movimiento"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automático sin añadir paso"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ubicación origen"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Le permite cancelar movimientos relacionados con el flujo de arrastre de "
-"producto."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Ubicación usada como ubicación destino al abastecer."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Abastecimiento arrastrado proveniente de la ubicación original %s, regla de "
-"arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Ubicación"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Estado factura"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Se utiliza para definir rutas que el producto debe seguir dentro del árbol "
-"de ubicaciones.\n"
-"La opción 'Movimiento automático' creará un movimiento de existencias "
-"después del actual que se validará automáticamente. Con 'Operación manual', "
-"el movimiento de existencias debe ser validado por un trabajador. Con "
-"'Automático sin añadir paso', la ubicación se reemplaza en el movimiento "
-"original."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condiciones"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona empaquetado"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Puerta B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Puerta A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Comprar"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de expedición"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Compañía"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Movimiento de existencias"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Si está marcado, cuando este movimiento se cancela, también cancela el "
-"movimiento relacionado."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Producir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Obtener bajo pedido"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Obtener desde existencias"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Extraído de otra ubicación."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Dirección empresa"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Para facturar"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de días para realizar esta transición"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Este campo rellenará el origen del albarán y el nombre de sus movimientos."
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipo de abastecimiento"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nombre"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Estas reglas fijan la ruta correcta del producto en todo el árbol de "
-"ubicaciones."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operación manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Producto"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo envío"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Obtener desde existencias': Cuando sea necesario, se coge de las "
-"existencias o se espera hasta que se vuelva a suministrar. 'Obtener bajo "
-"pedido': Cuando sea necesario, se compra o produce para la solicitud de "
-"abastecimiento."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Es la ubicación destino que necesita suministro."
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Productos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Control calidad"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "No aplicable"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Retraso (días)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Albarán para abastecimiento arrastrado proveniente de la ubicación original "
-"%s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Flujo empujado"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Movimiento para abastecimiento arrastrado proveniente de la ubicación "
-"original %s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Flujo \"push\" (optimización local)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Flujo \"pull\" (optimización global)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Abastecimiento"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ubicación destino"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimiento automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Recepción mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo de acción"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Método abastecimiento"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "Según la compañía, seleccionar si desea recibir o enviar productos."
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Procesando pedido"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operación"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Rutas de ubicaciones"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diario"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancelar cascada"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturado"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "¡XML inválido para la definición de la vista!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Rutas ubicación stock"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "¡El nombre del objeto debe empezar con x_ y no contener ningún carácter "
-#~ "especial!"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.ubicacion.ruta"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Abastecimiento & Ubicaciones"
-
-#~ msgid "Parameters"
-#~ msgstr "Parámetros"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Se usa para saber a que compañía pertenece los albaranes y movimientos."
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Arrastrado desde otra ubicación vía abastecimiento %d"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Error: Código EAN no válido"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Está intentando asignar un lote que no es del mismo producto"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Debe asignar un lote de producción para este producto"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Flujos de logística"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Este módulo complementa la aplicación Almacén, añadiendo soporte para cada "
-#~ "producto,\n"
-#~ "ruta de ubicación, aplicación efectiva de flujos de inventario de Entrada y "
-#~ "Salida.\n"
-#~ "\n"
-#~ "Normalmente, esto se podría utilizar para:\n"
-#~ "* Gestión de las cadenas de fabricación de productos\n"
-#~ "* Gestionar ubicaciones predeterminadas por producto\n"
-#~ "* Definir las rutas dentro de su almacén de acuerdo a las necesidades "
-#~ "empresariales, tales como:\n"
-#~ " - Control de Calidad\n"
-#~ " - Después de Servicios de Ventas\n"
-#~ " - Proveedor Devoluciones\n"
-#~ "* Gestión de Ayuda a la rentabilidad, mediante la generación de movimientos "
-#~ "automáticos para productos alquilados\n"
-#~ "\n"
-#~ "Una vez que este módulo está instalado, aparecerá una ficha adicional en la "
-#~ "pestaña del producto, donde se puede añadir\n"
-#~ "las especificaciones del flujo de Entrada y de Salida. Los datos de "
-#~ "demostración del producto CPU1 para esos flujos de entrada/salida:\n"
-#~ "\n"
-#~ "Flujos de Entrada\n"
-#~ "----------\n"
-#~ "Los flujos de entrada son útiles cuando la llegada de determinados productos "
-#~ "a un lugar determinado siempre\n"
-#~ "va seguida de un movimiento que corresponde a otra ubicación, opcionalmente "
-#~ "después de un cierto retraso.\n"
-#~ "La aplicación Almacén original ya soporta tales especificaciones del flujo "
-#~ "de entrada en sus Ubicaciones, pero estas no pueden ser refinadas por "
-#~ "producto.\n"
-#~ "\n"
-#~ "Una especificación de flujo de entrada indica qué ubicación está encadenada "
-#~ "con qué ubicación, y con\n"
-#~ "qué parámetros. Tan pronto como una cantidad determinada de productos se "
-#~ "mueve de la ubicación de origen,\n"
-#~ "un movimiento encadenado de forma automática configurado de acuerdo con los "
-#~ "parámetros establecidos en la especificación del flujo\n"
-#~ "(lugar de destino, demora, tipo de movimiento, diarios, etc) se dispara. El "
-#~ "nuevo movimiento puede ser automáticamente\n"
-#~ "procesado, o requerir una confirmación manual, dependiendo de los "
-#~ "parámetros.\n"
-#~ "\n"
-#~ "Flujos de Salida\n"
-#~ "----------\n"
-#~ "Los flujos de salida son un poco diferentes de los flujos de entrada, en el "
-#~ "sentido de que no están relacionados con\n"
-#~ "la tramitación de movimientos de productos, sino más bien con el tratamiento "
-#~ "de los pedidos de venta.\n"
-#~ "Lo que se saca es una necesidad, no directamente los productos.\n"
-#~ "Un ejemplo clásico de flujo de salida es cuando usted tiene una empresa de "
-#~ "Outlet, con una empresa padre\n"
-#~ "que es la responsable de los suministros del Outlet.\n"
-#~ "\n"
-#~ " [cliente] <- A - [Outlet] <- B - [Suministrador] <~ C ~ [Proveedor]\n"
-#~ "\n"
-#~ "Cuando una nueva orden de compra (A, procedente de la confirmación de una "
-#~ "orden de venta por ejemplo) llega al Outlet, se convierte en otra compra (B, "
-#~ "a través de un flujo de entrada del tipo 'mover')\n"
-#~ "solicitada desde el socio. Cuando el orden de compa para B es procesado por "
-#~ "la empresa socia, y\n"
-#~ "si el producto está agotado, puede convertirse en una Orden de Compra (C) "
-#~ "del Proveedor\n"
-#~ "(flujo de Entrada de tipo Compra). El resultado es que el orden de "
-#~ "adquisición, la necesidad, se traslada automáticamente del Cliente al "
-#~ "Proveedor.\n"
-#~ "\n"
-#~ "Técnicamente, los flujos de Salida permiten procesar los pedidos de "
-#~ "adquisición de otra manera, no sólo en función del producto considerado, "
-#~ "sino también en función de qué ubicación tiene la \"necesidad\" de qué\n"
-#~ "producto (es decir, la ubicación de destino de esa orden de compra).\n"
-#~ "\n"
-#~ "Caso de Uso\n"
-#~ "---------------\n"
-#~ "\n"
-#~ "Puede utilizar los datos de demostración de la siguiente manera:\n"
-#~ " CPU1: Venta de algunas CPU1 en la tienda 1 y ejecutar el planificador\n"
-#~ " - Almacén: órden de entrega, Tienda 1: Recepción\n"
-#~ " CPU3:\n"
-#~ " - Al recibir el producto, va al Control de Calidad y se almacena en la "
-#~ "plataforma 2.\n"
-#~ " - Cuando se entrega al cliente: Lista de Selección -> Embalaje -> Orden "
-#~ "de Entrega desde la puerta A\n"
-#~ " "
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Rutas en las ubicaciones de almacén"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "No puede mover productos desde o hacia una ubicación de tipo vista."
diff --git a/addons/stock_location/i18n/es_AR.po b/addons/stock_location/i18n/es_AR.po
deleted file mode 100644
index 565729947be..00000000000
--- a/addons/stock_location/i18n/es_AR.po
+++ /dev/null
@@ -1,402 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.0\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2009-09-23 14:19+0000\n"
-"Last-Translator: Silvana Herrera \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automático paso no agregado"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ubicación de origen"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Se utiliza para definir rutas que el producto debe seguir dentro del árbol "
-"de ubicaciones.\n"
-"La opción 'Movimiento automático' creará un movimiento de stock después del "
-"actual que se validará automáticamente. Con 'Operación manual', el "
-"movimiento de stock debe ser validado por un operario. Con 'Automático paso "
-"no agragado', la ubicación se reemplaza en el movimiento original."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de días para realizar esta transición"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Esas reglas fijan la ruta correcta del producto en todo el árbol de "
-"ubicaciones."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Manual de operación"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Productos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Retraso (días)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ubicación de destino"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimiento automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operación"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Rutas de ubicaciones"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Rutas de ubicación de stock"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.ubicacion.ruta"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Abastecimiento & Ubicaciones"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "XML inválido para la definición de la vista!"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "¡El nombre del objeto debe empezar con x_ y no contener ningún caracter "
-#~ "especial!"
diff --git a/addons/stock_location/i18n/es_CL.po b/addons/stock_location/i18n/es_CL.po
deleted file mode 100644
index 6c6161761aa..00000000000
--- a/addons/stock_location/i18n/es_CL.po
+++ /dev/null
@@ -1,597 +0,0 @@
-# Spanish (Chile) translation for openobject-addons
-# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2011.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2011-10-24 19:30+0000\n"
-"Last-Translator: Francisco Reyes Acuña \n"
-"Language-Team: Spanish (Chile) \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Envío de mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Rutas arrastradas"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Movimiento"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Movimiento automático, paso no añadido"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ubicación de origen"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Le permite cancelar movimientos relacionados con el flujo de arrastre de "
-"producto."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Ubicación usada como destino al abastecer."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Abastecimiento arrastrado proveniente de la ubicación original %s, regla de "
-"arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Ubicación"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Estado de facturación"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Se utiliza para definir rutas que el producto debe seguir dentro del árbol "
-"de ubicaciones.\n"
-"La opción 'Movimiento automático' creará un movimiento de stock después del "
-"actual que se validará automáticamente. Con 'Operación manual', el "
-"movimiento de stock debe ser validado por un trabajador. Con 'Automático "
-"paso no añadido', la ubicación se reemplaza en el movimiento original."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condiciones"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona de empaquetado"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Puerta B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Puerta A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Comprar"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de despacho"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Empresa"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Movimiento de stock"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Si está marcado, cuando este movimiento se cancela, también cancela el "
-"movimiento relacionado."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Producir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Obtener bajo pedido"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Obtener para stock"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Dirección de empresa"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Para facturar"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de días para realizar esta transición"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Este campo rellenará el origen de la guiá de despacho y el nombre de sus "
-"movimientos."
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipo de abastecimiento"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nombre"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Estas reglas fijan la ruta correcta del producto en todo el árbol de "
-"ubicaciones."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operación manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Producto"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo de envío"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Obtener para stock': Cuando sea necesario, coger del stock o esperar hasta "
-"que sea reabastecido. 'Obtener bajo pedido': Cuando sea necesario, comprar o "
-"producir para la petición de abastecimiento."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Es la ubicación destino que necesita suministro."
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Productos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Control de calidad"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "No Aplicable"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Retraso (días)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Guía de despacho para abastecimiento arrastrado proveniente de la ubicación "
-"original %s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Flujo empujado"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Movimiento para abastecimiento arrastrado proveniente de la ubicación "
-"original %s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Abastecimiento"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ubicación de destino"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimiento automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Recepción mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo de acción"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Método abastecimiento"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "Según la compañía, seleccionar si desea recibir o enviar productos."
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Procesando pedido"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operación"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Rutas de ubicaciones"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diario"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancelar cascada"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturado"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Debe asignar un lote de producción para este producto"
-
-#~ msgid "Parameters"
-#~ msgstr "Parámetros"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Rutas en las ubicaciones de almacén"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Flujos de logística"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Este módulo complementa la aplicación Almacén, añadiendo soporte para cada "
-#~ "producto,\n"
-#~ "ruta de ubicación, aplicación efectiva de flujos de inventario de Entrada y "
-#~ "Salida.\n"
-#~ "\n"
-#~ "Normalmente, esto se podría utilizar para:\n"
-#~ "* Gestión de las cadenas de fabricación de productos\n"
-#~ "* Gestionar ubicaciones predeterminadas por producto\n"
-#~ "* Definir las rutas dentro de su almacén de acuerdo a las necesidades "
-#~ "empresariales, tales como:\n"
-#~ " - Control de Calidad\n"
-#~ " - Después de Servicios de Ventas\n"
-#~ " - Proveedor Devoluciones\n"
-#~ "* Gestión de Ayuda a la rentabilidad, mediante la generación de movimientos "
-#~ "automáticos para productos alquilados\n"
-#~ "\n"
-#~ "Una vez que este módulo está instalado, aparecerá una ficha adicional en la "
-#~ "pestaña del producto, donde se puede añadir\n"
-#~ "las especificaciones del flujo de Entrada y de Salida. Los datos de "
-#~ "demostración del producto CPU1 para esos flujos de entrada/salida:\n"
-#~ "\n"
-#~ "Flujos de Entrada\n"
-#~ "----------\n"
-#~ "Los flujos de entrada son útiles cuando la llegada de determinados productos "
-#~ "a un lugar determinado siempre\n"
-#~ "va seguida de un movimiento que corresponde a otra ubicación, opcionalmente "
-#~ "después de un cierto retraso.\n"
-#~ "La aplicación Almacén original ya soporta tales especificaciones del flujo "
-#~ "de entrada en sus Ubicaciones, pero estas no pueden ser refinadas por "
-#~ "producto.\n"
-#~ "\n"
-#~ "Una especificación de flujo de entrada indica qué ubicación está encadenada "
-#~ "con qué ubicación, y con\n"
-#~ "qué parámetros. Tan pronto como una cantidad determinada de productos se "
-#~ "mueve de la ubicación de origen,\n"
-#~ "un movimiento encadenado de forma automática configurado de acuerdo con los "
-#~ "parámetros establecidos en la especificación del flujo\n"
-#~ "(lugar de destino, demora, tipo de movimiento, diarios, etc) se dispara. El "
-#~ "nuevo movimiento puede ser automáticamente\n"
-#~ "procesado, o requerir una confirmación manual, dependiendo de los "
-#~ "parámetros.\n"
-#~ "\n"
-#~ "Flujos de Salida\n"
-#~ "----------\n"
-#~ "Los flujos de salida son un poco diferentes de los flujos de entrada, en el "
-#~ "sentido de que no están relacionados con\n"
-#~ "la tramitación de movimientos de productos, sino más bien con el tratamiento "
-#~ "de los pedidos de venta.\n"
-#~ "Lo que se saca es una necesidad, no directamente los productos.\n"
-#~ "Un ejemplo clásico de flujo de salida es cuando usted tiene una empresa de "
-#~ "Outlet, con una empresa padre\n"
-#~ "que es la responsable de los suministros del Outlet.\n"
-#~ "\n"
-#~ " [cliente] <- A - [Outlet] <- B - [Suministrador] <~ C ~ [Proveedor]\n"
-#~ "\n"
-#~ "Cuando una nueva orden de compra (A, procedente de la confirmación de una "
-#~ "orden de venta por ejemplo) llega al Outlet, se convierte en otra compra (B, "
-#~ "a través de un flujo de entrada del tipo 'mover')\n"
-#~ "solicitada desde el socio. Cuando el orden de compa para B es procesado por "
-#~ "la empresa socia, y\n"
-#~ "si el producto está agotado, puede convertirse en una Orden de Compra (C) "
-#~ "del Proveedor\n"
-#~ "(flujo de Entrada de tipo Compra). El resultado es que el orden de "
-#~ "adquisición, la necesidad, se traslada automáticamente del Cliente al "
-#~ "Proveedor.\n"
-#~ "\n"
-#~ "Técnicamente, los flujos de Salida permiten procesar los pedidos de "
-#~ "adquisición de otra manera, no sólo en función del producto considerado, "
-#~ "sino también en función de qué ubicación tiene la \"necesidad\" de qué\n"
-#~ "producto (es decir, la ubicación de destino de esa orden de compra).\n"
-#~ "\n"
-#~ "Caso de Uso\n"
-#~ "---------------\n"
-#~ "\n"
-#~ "Puede utilizar los datos de demostración de la siguiente manera:\n"
-#~ " CPU1: Venta de algunas CPU1 en la tienda 1 y ejecutar el planificador\n"
-#~ " - Almacén: órden de entrega, Tienda 1: Recepción\n"
-#~ " CPU3:\n"
-#~ " - Al recibir el producto, va al Control de Calidad y se almacena en la "
-#~ "plataforma 2.\n"
-#~ " - Cuando se entrega al cliente: Lista de Selección -> Embalaje -> Orden "
-#~ "de Entrega desde la puerta A\n"
-#~ " "
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Se usa para saber a que compañía pertenece las guias de despacho y "
-#~ "movimientos."
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Arrastrado desde otra ubicación vía abastecimiento %d"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Está intentando asignar un lote que no es del mismo producto"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Error: Código EAN no válido"
diff --git a/addons/stock_location/i18n/es_CR.po b/addons/stock_location/i18n/es_CR.po
deleted file mode 100644
index 7038401edc7..00000000000
--- a/addons/stock_location/i18n/es_CR.po
+++ /dev/null
@@ -1,616 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-02-20 03:33+0000\n"
-"Last-Translator: Freddy Gonzalez \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-"Language: \n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Envío mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Rutas arrastradas"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Movimiento"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automático paso no añadido"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ubicación origen"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Le permite cancelar movimientos relacionados con el flujo de arrastre de "
-"producto."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Ubicación usada como ubicación destino al abastecer."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Abastecimiento arrastrado proveniente de la ubicación original %s, regla de "
-"arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Ubicación"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Estado factura"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Se utiliza para definir rutas que el producto debe seguir dentro del árbol "
-"de ubicaciones.\n"
-"La opción 'Movimiento automático' creará un movimiento de stock después del "
-"actual que se validará automáticamente. Con 'Operación manual', el "
-"movimiento de stock debe ser validado por un trabajador. Con 'Automático "
-"paso no añadido', la ubicación se reemplaza en el movimiento original."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condiciones"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona empaquetado"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Puerta B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Puerta A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Comprar"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de expedición"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Compañía"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Movimiento stock"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Si está marcado, cuando este movimiento se cancela, también cancela el "
-"movimiento relacionado."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Producir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Obtener bajo pedido"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Obtener para stock"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Dirección empresa"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Para facturar"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de días para realizar esta transición"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Este campo rellenará el origen del movimiento y el nombre de sus líneas."
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipo de abastecimiento"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nombre"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Estas reglas fijan la ruta correcta del producto en todo el árbol de "
-"ubicaciones."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operación manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Producto"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo envío"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Obtener para stock': Cuando sea necesario, coger del stock o esperar hasta "
-"que se vuelva a suministrar. 'Obtener bajo pedido': Cuando sea necesario, "
-"comprar o producir para la solicitud de abastecimiento."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Es la ubicación destino que necesita suministro."
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Productos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Control calidad"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "No aplicable"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Retraso (días)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Movimiento para abastecimiento arrastrado proveniente de la ubicación "
-"original %s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Flujo empujado"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Movimiento para abastecimiento arrastrado proveniente de la ubicación "
-"original %s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Abastecimiento"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ubicación destino"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimiento automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Recepción mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo de acción"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Método abastecimiento"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "Según la compañía, seleccionar si desea recibir o enviar productos."
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Procesando pedido"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operación"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Rutas de ubicaciones"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diario"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancelar cascada"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturado"
-
-#~ msgid "Parameters"
-#~ msgstr "Parámetros"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Debe asignar un lote de producción para este producto"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Flujos de logística"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Arrastrado desde otra ubicación vía abastecimiento %d"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Está intentando asignar un lote que no es del mismo producto"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Error: Código EAN no válido"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "¡XML inválido para la definición de la vista!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Rutas ubicación stock"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "¡El nombre del objeto debe empezar con x_ y no contener ningún carácter "
-#~ "especial!"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.ubicacion.ruta"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Abastecimiento & Ubicaciones"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Este módulo complementa la aplicación Almacén, añadiendo soporte para cada "
-#~ "producto,\n"
-#~ "ruta de ubicación, aplicación efectiva de flujos de inventario de Entrada y "
-#~ "Salida.\n"
-#~ "\n"
-#~ "Normalmente, esto se podría utilizar para:\n"
-#~ "* Gestión de las cadenas de fabricación de productos\n"
-#~ "* Gestionar ubicaciones predeterminadas por producto\n"
-#~ "* Definir las rutas dentro de su almacén de acuerdo a las necesidades "
-#~ "empresariales, tales como:\n"
-#~ " - Control de Calidad\n"
-#~ " - Después de Servicios de Ventas\n"
-#~ " - Proveedor Devoluciones\n"
-#~ "* Gestión de Ayuda a la rentabilidad, mediante la generación de movimientos "
-#~ "automáticos para productos alquilados\n"
-#~ "\n"
-#~ "Una vez que este módulo está instalado, aparecerá una ficha adicional en la "
-#~ "pestaña del producto, donde se puede añadir\n"
-#~ "las especificaciones del flujo de Entrada y de Salida. Los datos de "
-#~ "demostración del producto CPU1 para esos flujos de entrada/salida:\n"
-#~ "\n"
-#~ "Flujos de Entrada\n"
-#~ "----------\n"
-#~ "Los flujos de entrada son útiles cuando la llegada de determinados productos "
-#~ "a un lugar determinado siempre\n"
-#~ "va seguida de un movimiento que corresponde a otra ubicación, opcionalmente "
-#~ "después de un cierto retraso.\n"
-#~ "La aplicación Almacén original ya soporta tales especificaciones del flujo "
-#~ "de entrada en sus Ubicaciones, pero estas no pueden ser refinadas por "
-#~ "producto.\n"
-#~ "\n"
-#~ "Una especificación de flujo de entrada indica qué ubicación está encadenada "
-#~ "con qué ubicación, y con\n"
-#~ "qué parámetros. Tan pronto como una cantidad determinada de productos se "
-#~ "mueve de la ubicación de origen,\n"
-#~ "un movimiento encadenado de forma automática configurado de acuerdo con los "
-#~ "parámetros establecidos en la especificación del flujo\n"
-#~ "(lugar de destino, demora, tipo de movimiento, diarios, etc) se dispara. El "
-#~ "nuevo movimiento puede ser automáticamente\n"
-#~ "procesado, o requerir una confirmación manual, dependiendo de los "
-#~ "parámetros.\n"
-#~ "\n"
-#~ "Flujos de Salida\n"
-#~ "----------\n"
-#~ "Los flujos de salida son un poco diferentes de los flujos de entrada, en el "
-#~ "sentido de que no están relacionados con\n"
-#~ "la tramitación de movimientos de productos, sino más bien con el tratamiento "
-#~ "de los pedidos de venta.\n"
-#~ "Lo que se saca es una necesidad, no directamente los productos.\n"
-#~ "Un ejemplo clásico de flujo de salida es cuando usted tiene una empresa de "
-#~ "Outlet, con una empresa padre\n"
-#~ "que es la responsable de los suministros del Outlet.\n"
-#~ "\n"
-#~ " [cliente] <- A - [Outlet] <- B - [Suministrador] <~ C ~ [Proveedor]\n"
-#~ "\n"
-#~ "Cuando una nueva orden de compra (A, procedente de la confirmación de una "
-#~ "orden de venta por ejemplo) llega al Outlet, se convierte en otra compra (B, "
-#~ "a través de un flujo de entrada del tipo 'mover')\n"
-#~ "solicitada desde el socio. Cuando el orden de compa para B es procesado por "
-#~ "la empresa socia, y\n"
-#~ "si el producto está agotado, puede convertirse en una Orden de Compra (C) "
-#~ "del Proveedor\n"
-#~ "(flujo de Entrada de tipo Compra). El resultado es que el orden de "
-#~ "adquisición, la necesidad, se traslada automáticamente del Cliente al "
-#~ "Proveedor.\n"
-#~ "\n"
-#~ "Técnicamente, los flujos de Salida permiten procesar los pedidos de "
-#~ "adquisición de otra manera, no sólo en función del producto considerado, "
-#~ "sino también en función de qué ubicación tiene la \"necesidad\" de qué\n"
-#~ "producto (es decir, la ubicación de destino de esa orden de compra).\n"
-#~ "\n"
-#~ "Caso de Uso\n"
-#~ "---------------\n"
-#~ "\n"
-#~ "Puede utilizar los datos de demostración de la siguiente manera:\n"
-#~ " CPU1: Venta de algunas CPU1 en la tienda 1 y ejecutar el planificador\n"
-#~ " - Almacén: órden de entrega, Tienda 1: Recepción\n"
-#~ " CPU3:\n"
-#~ " - Al recibir el producto, va al Control de Calidad y se almacena en la "
-#~ "plataforma 2.\n"
-#~ " - Cuando se entrega al cliente: Lista de Selección -> Embalaje -> Orden "
-#~ "de Entrega desde la puerta A\n"
-#~ " "
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Rutas en las ubicaciones de almacén"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "No puede mover productos desde o hacia una ubicación de tipo vista."
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Se usa para saber a que compañía pertenecen los movimientos y paquetes."
diff --git a/addons/stock_location/i18n/es_MX.po b/addons/stock_location/i18n/es_MX.po
deleted file mode 100644
index 6f70bfb59aa..00000000000
--- a/addons/stock_location/i18n/es_MX.po
+++ /dev/null
@@ -1,610 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-12-28 08:51+0000\n"
-"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
-"\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:40+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Envío mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Rutas arrastradas"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Movimiento"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automático paso no añadido"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Parameters"
-msgstr "Parámetros"
-
-#. module: stock_location
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ubicación origen"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Le permite cancelar movimientos relacionados con el flujo de arrastre de "
-"producto."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: constraint:stock.move:0
-msgid "You must assign a production lot for this product"
-msgstr "Debe asignar un lote de producción para este producto"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Ubicación usada como ubicación destino al abastecer."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Abastecimiento arrastrado proveniente de la ubicación original %s, regla de "
-"arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Ubicación"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Estado factura"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Este campo rellenará el origen del albarán y el nombre de sus movimientos."
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Se utiliza para definir rutas que el producto debe seguir dentro del árbol "
-"de ubicaciones.\n"
-"La opción 'Movimiento automático' creará un movimiento de stock después del "
-"actual que se validará automáticamente. Con 'Operación manual', el "
-"movimiento de stock debe ser validado por un trabajador. Con 'Automático "
-"paso no añadido', la ubicación se reemplaza en el movimiento original."
-
-#. module: stock_location
-#: model:ir.module.module,shortdesc:stock_location.module_meta_information
-msgid "Warehouse Locations Paths"
-msgstr "Rutas en las ubicaciones de almacén"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condiciones"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona empaquetado"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Puerta B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Puerta A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Comprar"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de expedición"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Movimiento stock"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Compañía"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Logistics Flows"
-msgstr "Flujos de logística"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Si está marcado, cuando este movimiento se cancela, también cancela el "
-"movimiento relacionado."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Producir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Obtener bajo pedido"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Obtener para stock"
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Dirección empresa"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Para facturar"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de días para realizar esta transición"
-
-#. module: stock_location
-#: model:ir.module.module,description:stock_location.module_meta_information
-msgid ""
-"\n"
-"This module supplements the Warehouse application by adding support for per-"
-"product\n"
-"location paths, effectively implementing Push and Pull inventory flows.\n"
-"\n"
-"Typically this could be used to:\n"
-"* Manage product manufacturing chains\n"
-"* Manage default locations per product\n"
-"* Define routes within your warehouse according to business needs, such as:\n"
-" - Quality Control\n"
-" - After Sales Services\n"
-" - Supplier Returns\n"
-"* Help rental management, by generating automated return moves for rented "
-"products\n"
-"\n"
-"Once this module is installed, an additional tab appear on the product form, "
-"where you can add\n"
-"Push and Pull flow specifications. The demo data of CPU1 product for that "
-"push/pull :\n"
-"\n"
-"Push flows\n"
-"----------\n"
-"Push flows are useful when the arrival of certain products in a given "
-"location should always\n"
-"be followed by a corresponding move to another location, optionally after a "
-"certain delay.\n"
-"The original Warehouse application already supports such Push flow "
-"specifications on the\n"
-"Locations themselves, but these cannot be refined per-product.\n"
-"\n"
-"A push flow specification indicates which location is chained with which "
-"location, and with\n"
-"what parameters. As soon as a given quantity of products is moved in the "
-"source location,\n"
-"a chained move is automatically foreseen according to the parameters set on "
-"the flow specification\n"
-"(destination location, delay, type of move, journal, etc.) The new move can "
-"be automatically\n"
-"processed, or require a manual confirmation, depending on the parameters.\n"
-"\n"
-"Pull flows\n"
-"----------\n"
-"Pull flows are a bit different from Pull flows, in the sense that they are "
-"not related to\n"
-"the processing of product moves, but rather to the processing of procurement "
-"orders.\n"
-"What is being pulled is a need, not directly products.\n"
-"A classical example of Push flow is when you have an Outlet company, with a "
-"parent Company\n"
-"that is responsible for the supplies of the Outlet.\n"
-"\n"
-" [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-"\n"
-"When a new procurement order (A, coming from the confirmation of a Sale "
-"Order for example) arrives\n"
-"in the Outlet, it is converted into another procurement (B, via a Push flow "
-"of type 'move')\n"
-"requested from the Holding. When procurement order B is processed by the "
-"Holding company, and\n"
-"if the product is out of stock, it can be converted into a Purchase Order "
-"(C) from the Supplier\n"
-"(Push flow of type Purchase). The result is that the procurement order, the "
-"need, is pushed\n"
-"all the way between the Customer and Supplier.\n"
-"\n"
-"Technically, Pull flows allow to process procurement orders differently, not "
-"only depending on\n"
-"the product being considered, but also depending on which location holds the "
-"\"need\" for that\n"
-"product (i.e. the destination location of that procurement order).\n"
-"\n"
-"Use-Case\n"
-"--------\n"
-"\n"
-"You can use the demo data as follow:\n"
-" CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-" - Warehouse: delivery order, Shop 1: reception\n"
-" CPU3:\n"
-" - When receiving the product, it goes to Quality Control location then "
-"stored to shelf 2.\n"
-" - When delivering the customer: Pick List -> Packing -> Delivery Order "
-"from Gate A\n"
-" "
-msgstr ""
-"\n"
-"Este módulo complementa la aplicación Almacén, añadiendo soporte para cada "
-"producto,\n"
-"ruta de ubicación, aplicación efectiva de flujos de inventario de Entrada y "
-"Salida.\n"
-"\n"
-"Normalmente, esto se podría utilizar para:\n"
-"* Gestión de las cadenas de fabricación de productos\n"
-"* Gestionar ubicaciones predeterminadas por producto\n"
-"* Definir las rutas dentro de su almacén de acuerdo a las necesidades "
-"empresariales, tales como:\n"
-" - Control de Calidad\n"
-" - Después de Servicios de Ventas\n"
-" - Proveedor Devoluciones\n"
-"* Gestión de Ayuda a la rentabilidad, mediante la generación de movimientos "
-"automáticos para productos alquilados\n"
-"\n"
-"Una vez que este módulo está instalado, aparecerá una ficha adicional en la "
-"pestaña del producto, donde se puede añadir\n"
-"las especificaciones del flujo de Entrada y de Salida. Los datos de "
-"demostración del producto CPU1 para esos flujos de entrada/salida:\n"
-"\n"
-"Flujos de Entrada\n"
-"----------\n"
-"Los flujos de entrada son útiles cuando la llegada de determinados productos "
-"a un lugar determinado siempre\n"
-"va seguida de un movimiento que corresponde a otra ubicación, opcionalmente "
-"después de un cierto retraso.\n"
-"La aplicación Almacén original ya soporta tales especificaciones del flujo "
-"de entrada en sus Ubicaciones, pero estas no pueden ser refinadas por "
-"producto.\n"
-"\n"
-"Una especificación de flujo de entrada indica qué ubicación está encadenada "
-"con qué ubicación, y con\n"
-"qué parámetros. Tan pronto como una cantidad determinada de productos se "
-"mueve de la ubicación de origen,\n"
-"un movimiento encadenado de forma automática configurado de acuerdo con los "
-"parámetros establecidos en la especificación del flujo\n"
-"(lugar de destino, demora, tipo de movimiento, diarios, etc) se dispara. El "
-"nuevo movimiento puede ser automáticamente\n"
-"procesado, o requerir una confirmación manual, dependiendo de los "
-"parámetros.\n"
-"\n"
-"Flujos de Salida\n"
-"----------\n"
-"Los flujos de salida son un poco diferentes de los flujos de entrada, en el "
-"sentido de que no están relacionados con\n"
-"la tramitación de movimientos de productos, sino más bien con el tratamiento "
-"de los pedidos de venta.\n"
-"Lo que se saca es una necesidad, no directamente los productos.\n"
-"Un ejemplo clásico de flujo de salida es cuando usted tiene una empresa de "
-"Outlet, con una empresa padre\n"
-"que es la responsable de los suministros del Outlet.\n"
-"\n"
-" [cliente] <- A - [Outlet] <- B - [Suministrador] <~ C ~ [Proveedor]\n"
-"\n"
-"Cuando una nueva orden de compra (A, procedente de la confirmación de una "
-"orden de venta por ejemplo) llega al Outlet, se convierte en otra compra (B, "
-"a través de un flujo de entrada del tipo 'mover')\n"
-"solicitada desde el socio. Cuando el orden de compa para B es procesado por "
-"la empresa socia, y\n"
-"si el producto está agotado, puede convertirse en una Orden de Compra (C) "
-"del Proveedor\n"
-"(flujo de Entrada de tipo Compra). El resultado es que el orden de "
-"adquisición, la necesidad, se traslada automáticamente del Cliente al "
-"Proveedor.\n"
-"\n"
-"Técnicamente, los flujos de Salida permiten procesar los pedidos de "
-"adquisición de otra manera, no sólo en función del producto considerado, "
-"sino también en función de qué ubicación tiene la \"necesidad\" de qué\n"
-"producto (es decir, la ubicación de destino de esa orden de compra).\n"
-"\n"
-"Caso de Uso\n"
-"---------------\n"
-"\n"
-"Puede utilizar los datos de demostración de la siguiente manera:\n"
-" CPU1: Venta de algunas CPU1 en la tienda 1 y ejecutar el planificador\n"
-" - Almacén: órden de entrega, Tienda 1: Recepción\n"
-" CPU3:\n"
-" - Al recibir el producto, va al Control de Calidad y se almacena en la "
-"plataforma 2.\n"
-" - Cuando se entrega al cliente: Lista de Selección -> Embalaje -> Orden "
-"de Entrega desde la puerta A\n"
-" "
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipo de abastecimiento"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company belong packings and moves"
-msgstr ""
-"Se usa para saber a que compañía pertenece los albaranes y movimientos."
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nombre"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Estas reglas fijan la ruta correcta del producto en todo el árbol de "
-"ubicaciones."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operación manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Producto"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Método abastecimiento"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo envío"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Obtener para stock': Cuando sea necesario, coger del stock o esperar hasta "
-"que se vuelva a suministrar. 'Obtener bajo pedido': Cuando sea necesario, "
-"comprar o producir para la solicitud de abastecimiento."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Es la ubicación destino que necesita suministro."
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Productos"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location via procurement %d"
-msgstr "Arrastrado desde otra ubicación vía abastecimiento %d"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Control calidad"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "No aplicable"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Retraso (días)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Albarán para abastecimiento arrastrado proveniente de la ubicación original "
-"%s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Flujo empujado"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Movimiento para abastecimiento arrastrado proveniente de la ubicación "
-"original %s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: constraint:stock.move:0
-msgid "You try to assign a lot which is not from the same product"
-msgstr "Está intentando asignar un lote que no es del mismo producto"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Abastecimiento"
-
-#. module: stock_location
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ubicación destino"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimiento automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Recepción mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo de acción"
-
-#. module: stock_location
-#: constraint:product.product:0
-msgid "Error: Invalid ean code"
-msgstr "Error: Código EAN no válido"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "Según la compañía, seleccionar si desea recibir o enviar productos."
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Procesando pedido"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operación"
-
-#. module: stock_location
-#: view:product.product:0
-#: field:product.product,path_ids:0
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Rutas de ubicaciones"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diario"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancelar cascada"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturado"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "¡XML inválido para la definición de la vista!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Rutas ubicación stock"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "¡El nombre del objeto debe empezar con x_ y no contener ningún carácter "
-#~ "especial!"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.ubicacion.ruta"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Abastecimiento & Ubicaciones"
diff --git a/addons/stock_location/i18n/es_VE.po b/addons/stock_location/i18n/es_VE.po
deleted file mode 100644
index 6f70bfb59aa..00000000000
--- a/addons/stock_location/i18n/es_VE.po
+++ /dev/null
@@ -1,610 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2011-01-11 11:16+0000\n"
-"PO-Revision-Date: 2010-12-28 08:51+0000\n"
-"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
-"\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-09-05 05:40+0000\n"
-"X-Generator: Launchpad (build 13830)\n"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Envío mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Rutas arrastradas"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Movimiento"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automático paso no añadido"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Parameters"
-msgstr "Parámetros"
-
-#. module: stock_location
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ubicación origen"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Le permite cancelar movimientos relacionados con el flujo de arrastre de "
-"producto."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: constraint:stock.move:0
-msgid "You must assign a production lot for this product"
-msgstr "Debe asignar un lote de producción para este producto"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Ubicación usada como ubicación destino al abastecer."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Abastecimiento arrastrado proveniente de la ubicación original %s, regla de "
-"arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Ubicación"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Estado factura"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Este campo rellenará el origen del albarán y el nombre de sus movimientos."
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Se utiliza para definir rutas que el producto debe seguir dentro del árbol "
-"de ubicaciones.\n"
-"La opción 'Movimiento automático' creará un movimiento de stock después del "
-"actual que se validará automáticamente. Con 'Operación manual', el "
-"movimiento de stock debe ser validado por un trabajador. Con 'Automático "
-"paso no añadido', la ubicación se reemplaza en el movimiento original."
-
-#. module: stock_location
-#: model:ir.module.module,shortdesc:stock_location.module_meta_information
-msgid "Warehouse Locations Paths"
-msgstr "Rutas en las ubicaciones de almacén"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condiciones"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona empaquetado"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Puerta B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Puerta A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Comprar"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Flujos empujados"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de expedición"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Movimiento stock"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Flujos arrastrados"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Compañía"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Logistics Flows"
-msgstr "Flujos de logística"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Si está marcado, cuando este movimiento se cancela, también cancela el "
-"movimiento relacionado."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Producir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Obtener bajo pedido"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Obtener para stock"
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Dirección empresa"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Para facturar"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de días para realizar esta transición"
-
-#. module: stock_location
-#: model:ir.module.module,description:stock_location.module_meta_information
-msgid ""
-"\n"
-"This module supplements the Warehouse application by adding support for per-"
-"product\n"
-"location paths, effectively implementing Push and Pull inventory flows.\n"
-"\n"
-"Typically this could be used to:\n"
-"* Manage product manufacturing chains\n"
-"* Manage default locations per product\n"
-"* Define routes within your warehouse according to business needs, such as:\n"
-" - Quality Control\n"
-" - After Sales Services\n"
-" - Supplier Returns\n"
-"* Help rental management, by generating automated return moves for rented "
-"products\n"
-"\n"
-"Once this module is installed, an additional tab appear on the product form, "
-"where you can add\n"
-"Push and Pull flow specifications. The demo data of CPU1 product for that "
-"push/pull :\n"
-"\n"
-"Push flows\n"
-"----------\n"
-"Push flows are useful when the arrival of certain products in a given "
-"location should always\n"
-"be followed by a corresponding move to another location, optionally after a "
-"certain delay.\n"
-"The original Warehouse application already supports such Push flow "
-"specifications on the\n"
-"Locations themselves, but these cannot be refined per-product.\n"
-"\n"
-"A push flow specification indicates which location is chained with which "
-"location, and with\n"
-"what parameters. As soon as a given quantity of products is moved in the "
-"source location,\n"
-"a chained move is automatically foreseen according to the parameters set on "
-"the flow specification\n"
-"(destination location, delay, type of move, journal, etc.) The new move can "
-"be automatically\n"
-"processed, or require a manual confirmation, depending on the parameters.\n"
-"\n"
-"Pull flows\n"
-"----------\n"
-"Pull flows are a bit different from Pull flows, in the sense that they are "
-"not related to\n"
-"the processing of product moves, but rather to the processing of procurement "
-"orders.\n"
-"What is being pulled is a need, not directly products.\n"
-"A classical example of Push flow is when you have an Outlet company, with a "
-"parent Company\n"
-"that is responsible for the supplies of the Outlet.\n"
-"\n"
-" [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-"\n"
-"When a new procurement order (A, coming from the confirmation of a Sale "
-"Order for example) arrives\n"
-"in the Outlet, it is converted into another procurement (B, via a Push flow "
-"of type 'move')\n"
-"requested from the Holding. When procurement order B is processed by the "
-"Holding company, and\n"
-"if the product is out of stock, it can be converted into a Purchase Order "
-"(C) from the Supplier\n"
-"(Push flow of type Purchase). The result is that the procurement order, the "
-"need, is pushed\n"
-"all the way between the Customer and Supplier.\n"
-"\n"
-"Technically, Pull flows allow to process procurement orders differently, not "
-"only depending on\n"
-"the product being considered, but also depending on which location holds the "
-"\"need\" for that\n"
-"product (i.e. the destination location of that procurement order).\n"
-"\n"
-"Use-Case\n"
-"--------\n"
-"\n"
-"You can use the demo data as follow:\n"
-" CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-" - Warehouse: delivery order, Shop 1: reception\n"
-" CPU3:\n"
-" - When receiving the product, it goes to Quality Control location then "
-"stored to shelf 2.\n"
-" - When delivering the customer: Pick List -> Packing -> Delivery Order "
-"from Gate A\n"
-" "
-msgstr ""
-"\n"
-"Este módulo complementa la aplicación Almacén, añadiendo soporte para cada "
-"producto,\n"
-"ruta de ubicación, aplicación efectiva de flujos de inventario de Entrada y "
-"Salida.\n"
-"\n"
-"Normalmente, esto se podría utilizar para:\n"
-"* Gestión de las cadenas de fabricación de productos\n"
-"* Gestionar ubicaciones predeterminadas por producto\n"
-"* Definir las rutas dentro de su almacén de acuerdo a las necesidades "
-"empresariales, tales como:\n"
-" - Control de Calidad\n"
-" - Después de Servicios de Ventas\n"
-" - Proveedor Devoluciones\n"
-"* Gestión de Ayuda a la rentabilidad, mediante la generación de movimientos "
-"automáticos para productos alquilados\n"
-"\n"
-"Una vez que este módulo está instalado, aparecerá una ficha adicional en la "
-"pestaña del producto, donde se puede añadir\n"
-"las especificaciones del flujo de Entrada y de Salida. Los datos de "
-"demostración del producto CPU1 para esos flujos de entrada/salida:\n"
-"\n"
-"Flujos de Entrada\n"
-"----------\n"
-"Los flujos de entrada son útiles cuando la llegada de determinados productos "
-"a un lugar determinado siempre\n"
-"va seguida de un movimiento que corresponde a otra ubicación, opcionalmente "
-"después de un cierto retraso.\n"
-"La aplicación Almacén original ya soporta tales especificaciones del flujo "
-"de entrada en sus Ubicaciones, pero estas no pueden ser refinadas por "
-"producto.\n"
-"\n"
-"Una especificación de flujo de entrada indica qué ubicación está encadenada "
-"con qué ubicación, y con\n"
-"qué parámetros. Tan pronto como una cantidad determinada de productos se "
-"mueve de la ubicación de origen,\n"
-"un movimiento encadenado de forma automática configurado de acuerdo con los "
-"parámetros establecidos en la especificación del flujo\n"
-"(lugar de destino, demora, tipo de movimiento, diarios, etc) se dispara. El "
-"nuevo movimiento puede ser automáticamente\n"
-"procesado, o requerir una confirmación manual, dependiendo de los "
-"parámetros.\n"
-"\n"
-"Flujos de Salida\n"
-"----------\n"
-"Los flujos de salida son un poco diferentes de los flujos de entrada, en el "
-"sentido de que no están relacionados con\n"
-"la tramitación de movimientos de productos, sino más bien con el tratamiento "
-"de los pedidos de venta.\n"
-"Lo que se saca es una necesidad, no directamente los productos.\n"
-"Un ejemplo clásico de flujo de salida es cuando usted tiene una empresa de "
-"Outlet, con una empresa padre\n"
-"que es la responsable de los suministros del Outlet.\n"
-"\n"
-" [cliente] <- A - [Outlet] <- B - [Suministrador] <~ C ~ [Proveedor]\n"
-"\n"
-"Cuando una nueva orden de compra (A, procedente de la confirmación de una "
-"orden de venta por ejemplo) llega al Outlet, se convierte en otra compra (B, "
-"a través de un flujo de entrada del tipo 'mover')\n"
-"solicitada desde el socio. Cuando el orden de compa para B es procesado por "
-"la empresa socia, y\n"
-"si el producto está agotado, puede convertirse en una Orden de Compra (C) "
-"del Proveedor\n"
-"(flujo de Entrada de tipo Compra). El resultado es que el orden de "
-"adquisición, la necesidad, se traslada automáticamente del Cliente al "
-"Proveedor.\n"
-"\n"
-"Técnicamente, los flujos de Salida permiten procesar los pedidos de "
-"adquisición de otra manera, no sólo en función del producto considerado, "
-"sino también en función de qué ubicación tiene la \"necesidad\" de qué\n"
-"producto (es decir, la ubicación de destino de esa orden de compra).\n"
-"\n"
-"Caso de Uso\n"
-"---------------\n"
-"\n"
-"Puede utilizar los datos de demostración de la siguiente manera:\n"
-" CPU1: Venta de algunas CPU1 en la tienda 1 y ejecutar el planificador\n"
-" - Almacén: órden de entrega, Tienda 1: Recepción\n"
-" CPU3:\n"
-" - Al recibir el producto, va al Control de Calidad y se almacena en la "
-"plataforma 2.\n"
-" - Cuando se entrega al cliente: Lista de Selección -> Embalaje -> Orden "
-"de Entrega desde la puerta A\n"
-" "
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipo de abastecimiento"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company belong packings and moves"
-msgstr ""
-"Se usa para saber a que compañía pertenece los albaranes y movimientos."
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nombre"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Estas reglas fijan la ruta correcta del producto en todo el árbol de "
-"ubicaciones."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operación manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Producto"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Método abastecimiento"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo envío"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Obtener para stock': Cuando sea necesario, coger del stock o esperar hasta "
-"que se vuelva a suministrar. 'Obtener bajo pedido': Cuando sea necesario, "
-"comprar o producir para la solicitud de abastecimiento."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Es la ubicación destino que necesita suministro."
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Productos"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location via procurement %d"
-msgstr "Arrastrado desde otra ubicación vía abastecimiento %d"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Control calidad"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "No aplicable"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Retraso (días)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Albarán para abastecimiento arrastrado proveniente de la ubicación original "
-"%s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Flujo empujado"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Movimiento para abastecimiento arrastrado proveniente de la ubicación "
-"original %s, regla de arrastre %s, vía abastecimiento original %s (#%d)"
-
-#. module: stock_location
-#: constraint:stock.move:0
-msgid "You try to assign a lot which is not from the same product"
-msgstr "Está intentando asignar un lote que no es del mismo producto"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Abastecimiento"
-
-#. module: stock_location
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ubicación destino"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimiento automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Recepción mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo de acción"
-
-#. module: stock_location
-#: constraint:product.product:0
-msgid "Error: Invalid ean code"
-msgstr "Error: Código EAN no válido"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "Según la compañía, seleccionar si desea recibir o enviar productos."
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Procesando pedido"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operación"
-
-#. module: stock_location
-#: view:product.product:0
-#: field:product.product,path_ids:0
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Rutas de ubicaciones"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diario"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancelar cascada"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturado"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "¡XML inválido para la definición de la vista!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Rutas ubicación stock"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "¡El nombre del objeto debe empezar con x_ y no contener ningún carácter "
-#~ "especial!"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.ubicacion.ruta"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Abastecimiento & Ubicaciones"
diff --git a/addons/stock_location/i18n/et.po b/addons/stock_location/i18n/et.po
deleted file mode 100644
index f97bf1ed3ef..00000000000
--- a/addons/stock_location/i18n/et.po
+++ /dev/null
@@ -1,398 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2009-11-09 20:14+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automaatselt sammu ei lisata"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Lähtekoht"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Seda kasutatakse, et määratleda rajad mida toode peab järgima asukohapuus.\n"
-"'Automaatne liigutamine' väärtus loob lao liikumise pärast praegust, mis "
-"valideeritakse automaatselt. 'Käsitsi opereerimine' puhul peab liikumise "
-"valideerima laotöötaja. 'Automaatselt sammu ei lisata' puhul asendatakse "
-"asukohta originaalliikumises."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Selle siirde tegemise aeg päevades"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr "Need reeglid seavad õige raja tootele terves asukohapuus"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Käsitsi tehtav operatsioon"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Tooted"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Viivitus (päevades)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Sihtkoht"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automaatne liigutamine"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operatsioon"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Asukohtarajad"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Vigane XML vaate arhitektuurile!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Lao asukohtade rajad"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Objekti nimi peab algama x_'ga ja ei tohi sisaldada ühtegi erisümbolit !"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Hanked ja asukohad"
diff --git a/addons/stock_location/i18n/fi.po b/addons/stock_location/i18n/fi.po
deleted file mode 100644
index b5b9d457e36..00000000000
--- a/addons/stock_location/i18n/fi.po
+++ /dev/null
@@ -1,432 +0,0 @@
-# Finnish translation for openobject-addons
-# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2011.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2011-01-17 13:18+0000\n"
-"Last-Translator: Pekka Pylvänäinen \n"
-"Language-Team: Finnish \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Käytetään tiedoksi siitä, mille yhtiölle keräilyt ja siirrot kuuluvat."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Lähetetään tavarat"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Työntövirtauksen polut"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Siirrä"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Työnnetyt virtaukset"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automaattinen ei lisätä porrasta"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Lähteen sijainti"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr "Mahdollistaan työntövirtaukseen liittyvien siirtojen peruuttamisen"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Työntövirtaukset"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Paikka jotia käytetään kohdepaikkana toimituksille"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Sisäinen"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Imuohjattu hankinta: tulossa alkuperäisestä paikasta %s, imuohjaussääntö %s, "
-"alkuperäinen hankinta %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Sijainti"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Laskun tila"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Ehdot"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Pakkausalue"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Portti B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Portti A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Osta"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Imuvirtaukset"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Lähetysalue"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Työntövirtaukset"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Yritys"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Varastosiirto"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Jos valittu, siirron peruutuksen yhteydessä myös linkitetty siirto peruuntuu"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Tuota"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Valmista tilaukselle"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Valmista varastoon"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Imuohjattu toisesta paikasta."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Kumppanin osoite"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Tullaan laskuttamaan"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Siirtoon kuluva aika (päivää)"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "Tämä kenttä täyttää keräilypaikan ja sen siirtojen nimet"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Hankintatyyppi"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nimi"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr "Nämä säännöt asettavat oikean polut tuotteelle koko sijaintipuussa"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Manuaalitoiminto"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Tuote"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Lähetyksen tyyppi"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"\"Valmista varastoon\": Ota varastosta tarpeen vaatiessa tai odota kunnes "
-"saatavilla. \"Valmista tilaukseen\": Osta tai tuota tarpeen vaatiessa "
-"hankintapyynnöllä."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Tarvitseeko kohdepaikka toimituksia"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Tuotteet"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Laatutarkastus"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Sopimaton"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Viive (päivää)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Imuohjattu hankinta: keräilty paikasta %s, imuohjaussääntö %s, alkuperäinen "
-"hankinta %s (#%d)."
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Työntövirtaus"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Imuohjattu siirto: siirto alkuperäiseltä paikalta %s, imuohjaussääntö %s, "
-"alkuperäinen hankinta %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Työntövirtaus"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Imuvirtaus"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Hankinta"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Kohteen sijainti"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automaattinen siirto"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Tavaroita otetaan"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Toiminnon tyyppi"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Hankintatapa"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Riippuen yrityksestä, valitse haluatko vastaanottaa vai lähettää tuotteita."
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Tilauksenkäsittely"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Toiminto"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Kohteen polut"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Loki"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Peruuta sarja"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Laskutettu"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Tälle tuotteelle pitää määrittää valmistuserä"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Erä ei ole samaa tuotetta"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Virhe: Väärä EAN-koodi"
-
-#~ msgid "Parameters"
-#~ msgstr "Parametrit"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Varastopaikkojen polut"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Logistiika virtaukset"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Virheellinen XML näkymä-arkkitehtuurille!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "varastopaikkojen polut"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Hankinta ja paikat"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Objektin nimi täytyy alkaa X_ eikä se saa sisältää mitää erikoismerkkejä!"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Imuohjattu toisesta pisteesta hankinnan kautta %d"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Käytetään tunnistamaan mille yritykselle pakkaukset ja siirrot kuuluvat"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "Et voi siirtää tuotteita paikkaan tai paikasta tässä näkymässä."
diff --git a/addons/stock_location/i18n/fr.po b/addons/stock_location/i18n/fr.po
deleted file mode 100644
index 604945b2c5b..00000000000
--- a/addons/stock_location/i18n/fr.po
+++ /dev/null
@@ -1,622 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2013-03-15 07:56+0000\n"
-"Last-Translator: WANTELLET Sylvain \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Est utilisé pour savoir à quelle société appartiennent les opérations de "
-"manutention et les mouvements."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Bons de livraison"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Chemins tirés"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Mouvement"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Flux poussés"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automatique, pas d'étape ajoutée"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Emplacement source"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Autorise l'annulation des mouvements liés au flux de marchandises tiré"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Flux tirés"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-"Emplacement utilisé pour l'emplacement de destination à approvisionner"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interne"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Approvisionnement en flux tiré provenant de l'emplacement d'origine %s, "
-"règle de flux tiré %s, via l'approvisionnement original %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Emplacement"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "État de la facture"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"C'est utilisé pour définir des chemins que l'article devra suivre dans "
-"l'arborescence des emplacements.\n"
-"La valeur \"Mouvement Automatique\" créera un mouvement de stock après le "
-"mouvement courant qui sera automatiquement validé.\n"
-"Avec \"Opération Manuelle\", le mouvement de stock doit être validé par "
-"l'opérateur.\n"
-"Avec \"Automatique sans étape ajoutée\", l'emplacement est remplacé dans le "
-"mouvement original."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Conditions"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zone d'emballage"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Porte B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Porte A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Acheter"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Flux poussés"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zone d'expédition"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Flux tirés"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Société"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Mouvement de stock"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Si cette case est cochée, lorsque ce mouvement est annulé, le mouvement lié "
-"l'est aussi"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produire"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Production à la demande"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Production sur stock"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Tiré à partir d'un autre emplacement."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Adresse du partenaire"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "À facturer"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Nombre de jours pour effectuer cette transition"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "Ce champ remplira l'origine du colisage et le nom de ses mouvements"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Type d'approvisionnement"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nom"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Ces règles définissent le chemin correct de l'article dans toute "
-"l'arborescence des emplacements."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Opération manuelle"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Article"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Type d'expédition"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"\"Production sur stock\" : quand il y a une demande, on prend du stock ou on "
-"attend jusqu'au prochain réapprovisionnement. \"Production à la demande\" : "
-"quand il y a une demande, on achète ou on fabrique selon cette demande."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-"Indique l'emplacement de destination qui a besoin d'être approvisionné"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Articles"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Contrôle qualité"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Sans objet"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Délai (jours)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Opération de manutention pour un approvisionnement tiré, en provenance de "
-"l'emplacement d'origine %s, règle de flux tiré %s, pour satisfaire "
-"l'approvisionnement original %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Flux poussé"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Mouvement pour un approvisionnement tiré, en provenance de l'emplacement "
-"d'origine %s, règle de flux tiré %s, pour satisfaire l'approvisionnement "
-"original %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Flux poussé"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Flux tiré"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Approvisionnement"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Emplacement de destination"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Mouvement automatique"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Bon de réception"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Type d'action"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Méthode d'approvisionnement"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"En fonction de la société, choisissez si vous voulez envoyer ou recevoir les "
-"articles"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Traitement de la commande"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Opération"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Chemin des emplacements"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Journal"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Annuler en cascade"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturé"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "XML non valide pour l'architecture de la vue"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Le nom de l'objet doit commencer avec x_ et ne pas contenir de charactères "
-#~ "spéciaux !"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Délais et Localisations"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Chemins des Emplacements de Stock"
-
-#~ msgid "Parameters"
-#~ msgstr "Paramètres"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Chemins des emplacements de l'entrepôt"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Vous devez affecter un lot de fabrication pour ce produit."
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Flux logistiques"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Est utilisé pour savoir à quelle société appartiennent les colisages et les "
-#~ "mouvements"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Vous essayez d'affecter un lot qui n'est pas pour ce produit."
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Ce module complète l'application Entrepôts par l'accès aux localisations "
-#~ "par produit, il gère les flux d'inventaire en mode \"poussé et \"tiré\".\n"
-#~ "\n"
-#~ "Il peut typiquement être utilisé pour:\n"
-#~ "* Gérer les chaînes de fabrication\n"
-#~ "* Gérer les emplacements par défaut par produit\n"
-#~ "* Définir des ordonnancements au sein de l'entrepôt selon les besoins tels "
-#~ "que:\n"
-#~ " - Contrôle qualité\n"
-#~ " - Service Après Vente\n"
-#~ " - Retours fournisseur\n"
-#~ "* Aide à la gestion de location, en générant les retours automatiques pour "
-#~ "les produits loués\n"
-#~ "\n"
-#~ "Une fois ce module est installé, un onglet supplémentaire apparaît dans le "
-#~ "formulaire produit, où l'on peut ajouter\n"
-#~ "les spécification de \"Poussé\" et de \"Tiré\". Données de démonstration du "
-#~ "produits CPU1 pour ce \"Poussé / Tiré\" :\n"
-#~ "\n"
-#~ "Flux poussés\n"
-#~ "-------------------\n"
-#~ "Les flux poussés servent aux produits dont l'arrivée dans un lieu donné doit "
-#~ "toujours\n"
-#~ "être suivie par un mouvement correspondant à un autre endroit, "
-#~ "éventuellement après un certain délai.\n"
-#~ "L'application Entrepôt de base prend déjà en charge la spécification de flux "
-#~ "poussés sur les\n"
-#~ "Localisations elles-mêmes, mais sans descendre jusqu'au produit.\n"
-#~ "\n"
-#~ "Une spécification de flux poussé chaîne les localisations entre elles, et "
-#~ "selon\n"
-#~ "quels paramètres. Dès qu'une quantité de produits est entrée dans la "
-#~ "localisation source,\n"
-#~ "un mouvement en chaîne est automatiquement prévu, selon le paramétrage du "
-#~ "flux\n"
-#~ "(localisation de destination, retards, type de transfert, journal, etc.). "
-#~ "Selon le paramétrage, \n"
-#~ "un nouveau transfert peut être déclenché automatiquement ou avec "
-#~ "confirmation manuelle.\n"
-#~ "Flux tirés\n"
-#~ "--------------\n"
-#~ "Les flux tirés sont un peu différents des flux poussés, dans le sens où ils "
-#~ "ne sont pas liés au\n"
-#~ "traitement des mouvements de produits, mais plutôt du traitement des ordres "
-#~ "d'approvisionnement.\n"
-#~ "Ce qui est \"tiré\" c'est un besoin, pas les produits directement .\n"
-#~ "Un exemple classique de flux poussé est celui des succursales avec une "
-#~ "société mère\n"
-#~ "responsable de l'approvisionnement des succursales.\n"
-#~ "\n"
-#~ " [client] <- A - [succursale] <- B - [société mère] <~ C ~ [Fournisseur]\n"
-#~ "\n"
-#~ "Quand un nouvel ordre d'approvisionnement (A, venant de la confirmation d'un "
-#~ "bon de commante par exemple) arrive\n"
-#~ "à la succursalle, il est converti en un autre ordre d'approvisionnement (B, "
-#~ "via un flux poussé de type \"transfert\")\n"
-#~ "envoyé à la société mère. Quand l'ordre d'approvisionnement B est traité par "
-#~ "la société mère que\n"
-#~ "le produit est en rupture de stock, l'ordre d'approvisionnement B est "
-#~ "transformé en un bon de commande (C) vers le fournisseur\n"
-#~ "(Flux poussé de type \"achat\"). Le résultat est que l'ordre "
-#~ "d'approvisionnement (il représente le besoin), est poussé\n"
-#~ "du client vers le fournisseur.\n"
-#~ "\n"
-#~ "Techniquement, les flux tirés permettent de traiter des ordres "
-#~ "d'approvisionnement différents, ne dépendant plus seulement\n"
-#~ "du produit considéré, mais aussi de la localisation du «besoin» de ce\n"
-#~ "produit (c'est à dire la localisation de destination de cet ordre "
-#~ "d'approvisionnement).\n"
-#~ "\n"
-#~ "Cas d'utilisation\n"
-#~ "-----------------------\n"
-#~ "\n"
-#~ "On peut utiliser les données de démonstration ainsi :\n"
-#~ " CPU1: Vendre quelques CPU1 à partir du Magasin 1 et exécuter "
-#~ "l'ordonnanceur\n"
-#~ " - Entrepôt: bon de livraison, Magasin 1: réception\n"
-#~ " CPU3:\n"
-#~ " - Lors de la réception du produit, celui-ci passe au contrôle de "
-#~ "qualité du magasin puis il est stocké sur l'étagère 2.\n"
-#~ " - Lors de la livraison au client : Bon de Livraison -> Emballage -> "
-#~ "Ordre d'expédition en provenance de la Porte A\n"
-#~ " "
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr ""
-#~ "Tiré depuis un autre emplacement pour satisfaire l'approvisionnement %d"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Erreur : code EAN incorrect"
diff --git a/addons/stock_location/i18n/gl.po b/addons/stock_location/i18n/gl.po
deleted file mode 100644
index 556dfafb902..00000000000
--- a/addons/stock_location/i18n/gl.po
+++ /dev/null
@@ -1,555 +0,0 @@
-# Galician translation for openobject-addons
-# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2011.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2011-03-10 19:19+0000\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: Galician \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Envío mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Camiños arrastrados"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Movemento"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Fluxos empuxados"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automático, paso non engadido"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Lugar de orixe"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Permítelle anular movementos relacionados co fluxo de arrastre do produto."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Fluxos arrastrados"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Lugar usado como lugar destino ó abastecer"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Abastecemento arrastrado procedente do lugar orixinal %s, regra de arrastre "
-"%s, mediante abastecemento orixinal %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Lugar"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Estado factura"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Utilízase para definir as rutas que o produto debe seguir dentro da árbore "
-"de lugares. A opción 'Movemento automático' creará un movemento de stock "
-"despois do actual que se validará automaticamente. Con 'Operación manual', o "
-"movemento de stock debe ser validado por un traballador. Con 'Automático, "
-"paso non engadido', o lugar substitúese no movemento orixinal."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condicións"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona empaquetado"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Porta B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Porta A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Mercar"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Fluxos empuxados"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de expedición"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Fluxos arrastrados"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Compañía"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Movemento de stock"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Se está marcado, cando este movemento se anula, tamén anula o movemento "
-"relacionado."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Producir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Fabricado baixo pedido"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Obter para stock"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Enderezo da empresa"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Para facturar"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de días para realizar esta transición"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "Este campo encherá a orixe do albará e o nome dos seus movementos."
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipo de abastecemento"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nome"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Estas regras fixan a ruta correcta do produto en toda a árbore de lugares."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operación manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Produto"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo de envío"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Obter para stock': Cando sexa necesario, coller do stock ou agardar ata que "
-"se volva subministrar. 'Obter baixo pedido': Cando sexa necesario, mercar ou "
-"producir para a solicitude de abastecemento."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "É o lugar destino que precisa subministración."
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produtos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Control de calidade"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Non aplicable"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Atraso (días)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Albará para abastecemento arrastrado procedente do lugar orixinal %s, regra "
-"de arrastre %s, mediante abastecemento orixinal %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Fluxo empuxado"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Movemento para abastecemento arrastrado procedente do lugar orixinal %s, "
-"regra de arrastre %s, mediante abastecemento orixinal %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Adquisición"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Lugar destino"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movemento automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Recepción mercancías"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo de acción"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Método de adquisición"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Segundo a compañía, seleccionar se desexa recibir ou enviar produtos."
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Procesando pedido"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operación"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Rutas de lugares"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diario"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancelar cascada"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturado"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Debe asignar un lote de produción para este produto"
-
-#~ msgid "Parameters"
-#~ msgstr "Parámetros"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Camiños nos lugares de almacén"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Fluxos de loxística"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Este módulo complementa a aplicación Almacén, engadindo soporte para cada "
-#~ "produto, ruta de localización, aplicación efectiva de fluxos de inventario "
-#~ "de Entrada e Saída. Normalmente, isto poderíase utilizar para:* Xestión das "
-#~ "cadeas de fabricación de produtos* Xestionar lugares predeterminados por "
-#~ "produto* Definir as rutas dentro do seu almacén de acordo coas necesidades "
-#~ "empresariais, tales como:- Control de calidade- Despois de Servizos de "
-#~ "Vendas- Provedor Devolucións* Xestión de axuda á rendibilidade, mediante a "
-#~ "xeración de movementos automáticos para produtos alugados Cando este módulo "
-#~ "estea instalado, amosarase unha ficha adicional na pestana do produto, onde "
-#~ "se poden engadir as especificacións do fluxo de Entrada e de Saída. Os datos "
-#~ "de demostración do produto CPU1 para eses fluxos de entrada/saída: Fluxos de "
-#~ "Entrada----------Os fluxos de entrada son útiles cando a chegada de "
-#~ "determinados produtos a un lugar determinado sempre vai seguida dun "
-#~ "movemento que corresponde a outro lugar, opcionalmente despois dun certo "
-#~ "atraso. A aplicación Almacén orixinal xa soporta tales especificacións do "
-#~ "fluxo de entrada nos seus Lugares, pero estes non se refinar por produto. "
-#~ "Unha especificación de fluxo de entrada indica a localización que está "
-#~ "encadeada, con que lugar, e con que parámetros. Tan pronto como unha "
-#~ "cantidade determinada de produtos se move do lugar de orixe, dispárase un "
-#~ "movemento encadeado de xeito automático configurado de acordo cos parámetros "
-#~ "establecidos na especificación do fluxo (lugar de destino, demora, tipo de "
-#~ "movemento, diarios, etc). O novo movemento pódese procesar automaticamente, "
-#~ "o requirir unha confirmación manual, dependendo dos parámetros. Fluxos de "
-#~ "saída----------Os fluxos de saída son un pouco diferentes dos fluxos de "
-#~ "entrada, no sentido de que non están relacionados coa tramitación de "
-#~ "movementos de produtos, senón máis ben co tratamento dos pedidos de venda. O "
-#~ "que se saca é unha necesidade, non directamente os produtos. Un exemplo "
-#~ "clásico de fluxo de saída é cando vostede ten unha empresa de Outlet, cunha "
-#~ "empresa pai que é a responsable da subministración do Outlet.[cliente] <- A -"
-#~ " [Outlet] <- B - [Subministrador] <~ C ~ [Provedor]Cando unha nova orde de "
-#~ "compra (A, procedente da confirmación dunha orde de venda por exemplo) chega "
-#~ "ó Outlet, convértese noutra compra (B, a través dun fluxo de entrada do tipo "
-#~ "'mover')solicitada desde o socio. Cando a orde de compra para B é procesada "
-#~ "pola empresa socia, e se o produto está esgotado, pódese converter nunha "
-#~ "Orde de Compra (C) do Provedor(fluxo de Entrada de tipo Compra). O resultado "
-#~ "é que a orde de adquisición, a necesidade, trasládase automaticamente do "
-#~ "Cliente ó Provedor. Tecnicamente, os fluxos de saída permiten procesar os "
-#~ "pedidos de adquisición doutro xeito, non só en función do produto "
-#~ "considerado, senón tamén en función do lugar que ten a \"necesidade\", do "
-#~ "produto (isto é, o lugar de destino desa orde de compra). Caso de Uso--------"
-#~ "-------Pode utilizar os datos de demostración do xeito seguinte:CPU1: Venda "
-#~ "dalgunhas CPU1 na tenda 1 e executar o planificador- Almacén: orde de "
-#~ "entrega, Tenda 1: RecepciónCPU3:- Ó recibir o produto, vai ó Control de "
-#~ "Calidade e almacénase na plataforma 2.- Cando se entrega ó cliente: Lista de "
-#~ "Selección -> Embalaxe -> Orde de Entrega desde a porta A\n"
-#~ " "
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Úsase para saber a que compañía pertencen os albarás e os movementos."
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Arrastrado desde outro lugar mediante abastecemento %d"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Tenta asignar un lote que non pertence ó mesmo produto."
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Erro: Código EAN non válido"
diff --git a/addons/stock_location/i18n/hr.po b/addons/stock_location/i18n/hr.po
deleted file mode 100644
index 0fd2ec67b3c..00000000000
--- a/addons/stock_location/i18n/hr.po
+++ /dev/null
@@ -1,424 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2011-12-08 17:51+0000\n"
-"Last-Translator: Tomislav Bosnjakovic \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "slanje dobara"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Pulled Paths"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Temeljnica"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Pushed Flows"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automatski se ne dodaje korak"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Izvorna lokacija"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr "Allow you to cancel moves related to the product pull flow"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Pulled Flows"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Lokacija koja se koristi kao lokacija dostave za isporuku"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Lokacija"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Stanje računa"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Ova se opcija koristi za definiranje putanja koje proizvod treba proći "
-"unutar lokacijskog stabla.\n"
-"Vrijednost 'Automatskog pomaka' će uzrokovati pomak zaliha nakon trenutnog "
-"koji će se automatski provjeriti. Pri 'Manualnoj operaciji', radnik mora "
-"provjeriti pomak zalihe. Pri opciji 'Automatski bez dodavanja koraka', "
-"lokacija se zamjenjuje originalnim pomakom."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Uvjeti"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Pack Zone"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Gate B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Gate A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Kupi"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Pushed flows"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Dispečerska zona"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Pulled flows"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Organizacija"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Skladišni prijenosi"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr "Otkazivanjem ovog prijenosa otkaži i povezani prijenos"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produce"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Po narudžbi (MTO)"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Sa skladišta (MTS)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Partner Address"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Za fakturiranje"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Broj dana za izvesti ovu pretvorbu"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "This field will fill the packing Origin and the name of its moves"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Vrsta nabave"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Naziv"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Ova pravila postavljaju pravilnu putanju proizvoda u čitavom lokacijskom "
-"stablu"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Ručna operacija"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Proizvod"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tip otpreme"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Prebaci na zalihu': Kada je potrebno, uzima sa zalihe ili čeka do ponovne "
-"opskrbe. 'Kreiraj narudžbu': Kada je potrebno, kupuje ili proizvodi prema "
-"zahtjevu nabave."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "To je odredišna lokacija koja treba nabavu"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Proizvodi"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Kontrola kvalitete"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Not Applicable"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Zastoj (dana)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Pushed Flow"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Procurement"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Odredišna lokacija"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatski prijenos"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Dobavljanje robe"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Vrsta akcije"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Procure Method"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Ovisno o organizaciji, odaberite što želite za prijem/isporuku proizvoda"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Proces naručivanja"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operacija"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Putanje između lokacija"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Dnevnik"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancel Cascade"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Fakturirano"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Nevažeći XML za Arhitekturu Prikaza!"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Naziv Objekta mora početi sa x_ i ne smije sadržavati nikakve specijalne "
-#~ "znakove !"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Nabava i Lokacije"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Putovi između lokacija zaliha"
-
-#~ msgid "Parameters"
-#~ msgstr "Parametri"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Morate pridijeliti lot proizvodnje ovom proizvodu"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Logistički tokovi"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr "Is used to know to which company belong packings and moves"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Pokušavate pridružiti lot koji nije iz istog proizvoda"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Greška: Neispravan barkod!"
diff --git a/addons/stock_location/i18n/hu.po b/addons/stock_location/i18n/hu.po
deleted file mode 100644
index f77d55fe6b6..00000000000
--- a/addons/stock_location/i18n/hu.po
+++ /dev/null
@@ -1,407 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2013-01-05 21:41+0000\n"
-"Last-Translator: krnkris \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Régebben tudtam, melyik vállalathoz tartozik a leválogatás és készletmozgás."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Áruk küldése"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Kihúzási útvonalak"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Mozgatás"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Belökési folyamatok"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Nincs automatikus következő lépcső hozzáadva"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Forráshely"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr "Lehetővé teszi mozgás eltörlését a termék kihúzási folyamatából"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Kihúzási folyamatok"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Helység amit a beszerzés rendeltetési helyéhez használ"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Belső"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Kihúzási beszerzés ami az %s eredeti állomásról jön, kihúzási szabály %s, az "
-"eredeti beszerzéssel %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Helyszín"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Számla állapota"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Ez a termék elérési útját határozza meg a helymeghatározó fában nyomon "
-"követhető.\n"
-"Az 'Automatikus mozgás' értéke létrehoz egy raktári mozgást a meglévő "
-"automatikus érvényesítése után. A 'Kézi vezérlés'-nél, a raktári mozgást "
-"érvényesítenie kell egy munkavállalónak. Az 'Nincs automatikus következő "
-"lépcső hozzáadva', a raktárhely ki lesz cserélve az első mozgásnál."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Feltételek"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Csomagolási zóna"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "'B' kapu"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "'A' kapu"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Vásárlás"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Belökési folyamatok"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Feladási zóna"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Kihúzási folyamatok"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Vállalat"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Készletmozgás"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Ha be van jelölve, amikor ez a mozgás törlésre került, akkor a kapcsolódó "
-"mozgások is törölve lesznek"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Gyártás"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Rendelésre gyártás/vásárlás"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Készletre gyártás/vásárlás"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Kihúzott egy másik tartózkodási helyről"
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Partner címe"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Számlázandó"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Az átmenet végrehajtásához szükséges napok száma"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Ez a mező tölti ki az eredeti csomagolási helyet és a mozgásainak a nevét"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Beszerzés típusa"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Név"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"A szabály beállítja a teljes elhelyezkedési fában a termékre vonatkozó "
-"pontos elérési utat."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Manuális művelet"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Termék"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Szállítás típusa"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"Ellátás készletből: Ha szükséges, vegye el a készletből, vagy várja meg az "
-"újra-szállítást. Ellátás rendelésből: Ha szükséges, vásároljon vagy "
-"beszerzési igénylés alapján gyártson."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Ez a célállomás aminek szüksége van ellátásra"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Termékek"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Minőség-ellenőrzés"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Nem alkalmazható"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Késedelem (napok)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Kiválogatás a kihúzási beszerzéshez ebből az eredeti helységből %s, kihúzási "
-"szabály %s, az eredeti beszerzéssel %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Beillesztési folyamat"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Mozgás a kihúzási beszerzés eredeti hely irányából %s, kihúzási szabály %s, "
-"az eredeti beszerzéssel %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Beillesztési folyamat"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Kihúzási folyamat"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Beszerzés"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Célállomás helye"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatikus mozgás"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Érkező áruk"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Művelet típusa"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Beszerzés módja"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"A vállalattól függ, Válassza ki, hogy termékeket kapni akar vagy küldeni"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Megrendelés létrehozása"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Művelet"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Elérési útvonal"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Napló"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Fokozat törlése"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Kiszámlázott"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Logisztikai folyamatok"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Hiba: Érvénytelen vonalkód"
-
-#~ msgid "Parameters"
-#~ msgstr "Paraméterek"
diff --git a/addons/stock_location/i18n/id.po b/addons/stock_location/i18n/id.po
deleted file mode 100644
index c7ebc486e66..00000000000
--- a/addons/stock_location/i18n/id.po
+++ /dev/null
@@ -1,403 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2011-02-21 05:13+0000\n"
-"Last-Translator: moelyana \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Sending Goods"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "perpindahan"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Lokasi Sumber"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Memungkinkan Anda untuk membatalkan gerakan yang berkaitan dengan flow "
-"penarikan produk"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Alur Penarikan"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Lokasi"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Status Faktur"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Ini digunakan untuk menentukan jalur produk yang harus tindak lanjut dalam "
-"struktur pohon lokasi.\n"
-"Nilai 'Otomatis Move' akan membuat memindahkan stok setelah satu saat ini "
-"yang akan divalidasi secara otomatis. Dengan 'Manual Operasi', pergerakan "
-"stok harus divalidasi oleh seorang pekerja. Dengan 'Otomatis Tahap Tidak ada "
-"Pertambahan', lokasi diganti dalam pergerakan yang asli."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Kondisi"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona pengemasan"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Gerbang B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Beli"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Perusahaan"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Perpindahan Stok"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Jika dicentang, ketika langkah ini dibatalkan, pembatalan perpindahan juga "
-"terhubung"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Buat Stok"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Alamat Rekanan"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Untuk Difakturkan"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Jumlah hari untuk melakukan transisi ini"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nama"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Proses Manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Produk"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Jenis Pengiriman"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Jadikan ke Stok': Jika diperlukan, ambil dari stok atau menunggu sampai "
-"kembali dipasok. 'Jadikan ke Order': Jika diperlukan, membeli atau "
-"memproduksi untuk permintaan procurement."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Ini adalah lokasi tujuan yang membutuhkan pasokan"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produk"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Kontrol Kualitas"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Tidak Berlaku"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Lokasi Tujuan"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Perpindahan Otomatis"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Mendapatkan barang"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Jenis Tindakan"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Metode Pengadaan"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Tergantung pada perusahaan, pilih apapun yang Anda inginkan untuk menerima "
-"atau mengirim produk"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Proses Pemesanan"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operasi"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Jalur Lokasi"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Jurnal"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Difakturkan"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Anda harus menetapkan lot produksi untuk produk ini"
-
-#~ msgid "Parameters"
-#~ msgstr "Parameter"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Alur Logistik"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Ada Kesalahan !! kode EAN tidak sah"
diff --git a/addons/stock_location/i18n/it.po b/addons/stock_location/i18n/it.po
deleted file mode 100644
index 9303a23ccbc..00000000000
--- a/addons/stock_location/i18n/it.po
+++ /dev/null
@@ -1,416 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-10-30 22:46+0000\n"
-"Last-Translator: Nicola Riolini - Micronaet \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Spedizione Merci"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Muovi"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ubicazione di Provenienza"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Ubicazione"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Stato Fattura"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condizioni"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Cancello B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Cancello A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Acquista"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Azienda"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Se spuntato, quando questo movimento è eliminato, propaga l'eliminazione "
-"anche ai movimenti collegati"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produrre"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Produrre su ordine"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Produrre per Magazzino"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Indirizzo partner"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Da Fatturare"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Numero di giorni per la transizione"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nome"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operazione Manuale"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Prodotto"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo Spedizione"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Produrre per magazzino': Se richiesto, prelevare dal magazzino o attendere "
-"fino al riassortimento. 'Produrre su Ordine': Se richiesto, comprare o "
-"produrre alla richiesta di approvvigionamento."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Prodotti"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Controllo qualità"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Non applicabile"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Ritardo (giorni)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Approvvigionamento"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ubicazione di Destinazione"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimento Automatico"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo azione"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Metodo di approvvigionamento"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"In funzione dell'azienda, scegliere dove volete ricevere o inviare prodotti"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operazione"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Localizzazione Percorsi"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "XML non valido per Visualizzazione Architettura!"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Il nome dell'oggetto deve iniziare per x_ e non deve contenere caratteri "
-#~ "speciali!"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Approvvigionamenti e Punti di Stoccaggio"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Percorso Localizzazione Magazzino"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Parameters"
-#~ msgstr "Parametri"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Flussi logistici"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Errore: Codice EAN non valido"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "È necessario assegnare un lotto di produzione per questo prodotto"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr ""
-#~ "Si sta cercando di assegnare un lotto non derivante dallo stesso prodotto"
diff --git a/addons/stock_location/i18n/ja.po b/addons/stock_location/i18n/ja.po
deleted file mode 100644
index 0293901cac9..00000000000
--- a/addons/stock_location/i18n/ja.po
+++ /dev/null
@@ -1,405 +0,0 @@
-# Japanese translation for openobject-addons
-# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2012.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-06-30 02:46+0000\n"
-"Last-Translator: Akira Hiyama \n"
-"Language-Team: Japanese \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "送付製品"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "プル型パス"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "移動"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "プッシュ型フロー"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "自動段階追加なし"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "元の場所"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr "プル型フロー製品"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "プル型フロー"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "供給する宛先の場所により使用される場所"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "内部"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr "プル型調達は元の場所 %s から来ます。プルのルールは %s です。元の調達 %s(番号 %d)経由です。"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "場所"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "請求書の状態"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"これは場所ツリーの中に従わねばならない製品のパスを定義するために使用されます。\n"
-"自動移動は、現在のものの検証が自動的に行われた後に在庫移動を作成します。手動操作は、在庫移動は作業者によって確認される必要があります。段階的追加なしの自動"
-"は、場所がオリジナルの移動で置き換えられます。"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "条件"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "梱包地のゾーン"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "ゲートB"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "ゲートA"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "購入"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "プッシュ型フロー"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "割当ゾーン"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "プル型フロー"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "会社"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "在庫移動"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr "チェックした場合、この移動がキャンセルされる時に、関連する移動もキャンセルされます。"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "製造"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "オーダーの作成"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "在庫の作成"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "パートナの住所"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "請求対象"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "この遷移の実行に要する日数"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "この項目は梱包の起点と移動の名称を満たします。"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "調達のタイプ"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "名称"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr "これらの規則は全体の場所のツリーの中の製品の正しいパスを設定します。"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "手動操作"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "製品"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "出荷タイプ"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr "在庫する:必要な時に在庫から取り出すか再供給まで待ちます。オーダーする:必要な時に調達要求のために発注するか製造するかします。"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "供給を必要とする宛先の場所です。"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "製品"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "品質管理"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "適用不可"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "遅延(日数)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr "オリジナルの場所 %s から来るプル型調達のための集荷、プルのルール %s、オリジナルの調達 %s(番号 %d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "プッシュ型フロー"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr "オリジナルの場所 %s から来るプル型調達のための移動、プルのルール %s、オリジナルの調達 %s(番号 %d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "調達"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "宛先場所"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "自動移動"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "製品の取得"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "アクションタイプ"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "調達方法"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "会社によります。受信あるいは送信したい製品を選択して下さい。"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "オーダー処理"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "操作"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "場所のパス"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "仕訳帳"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "連続をキャンセル"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "請求済"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "この製品に製造ロットを割り当てる必要があります。"
-
-#~ msgid "Parameters"
-#~ msgstr "パラメータ"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "物流フロー"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "タイプビューの場所から、あるいは場所へは製品を動かすことはできません。"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr "これはどの会社に梱包と移動が属していたかを知るために使用されます。"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "調達 %d によって他の場所から引き出されました。"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "違う製品のロットを割り当てることはできません。"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "エラー:無効な商品識別番号です。"
diff --git a/addons/stock_location/i18n/ko.po b/addons/stock_location/i18n/ko.po
deleted file mode 100644
index 11c1324596b..00000000000
--- a/addons/stock_location/i18n/ko.po
+++ /dev/null
@@ -1,386 +0,0 @@
-# Korean translation for openobject-addons
-# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2009.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2009-09-08 13:24+0000\n"
-"Last-Translator: ekodaq \n"
-"Language-Team: Korean \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "소스 위치"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"이것은 해당 상품이 위치 트리 내에서 따라야할 경로를 정의합니다.\n"
-"\"자동 이동\" 값은 자동으로 검증될 현재 값 이후의 재고 이동을 생성합니다. '수동 오퍼레이션'의 경우, 작업자가 재고 이동을 "
-"검증해야 합니다. '자동 - 추가 단계 없음'의 경우, 위치가 원래의 이동을 대체합니다."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "이 트랜지션을 하기 위한 기간 (일)"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr "이 규칙들은 전체 위치 트리 속에서 해당 상품으로 적절한 경로를 설정합니다."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "수동 오퍼레이션"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "상품"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "지연 (일)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "목적지 위치"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "자동 이동"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "오퍼레이션"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "위치 경로"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "재고 위치 경로"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "조달 & 위치"
diff --git a/addons/stock_location/i18n/lt.po b/addons/stock_location/i18n/lt.po
deleted file mode 100644
index 993c0a4854d..00000000000
--- a/addons/stock_location/i18n/lt.po
+++ /dev/null
@@ -1,376 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-08-13 10:19+0000\n"
-"Last-Translator: Andrius Vilciauskas \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Šaltinio vieta"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produktai"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatinis perkėlimas"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
diff --git a/addons/stock_location/i18n/lv.po b/addons/stock_location/i18n/lv.po
deleted file mode 100644
index c58799c0ab7..00000000000
--- a/addons/stock_location/i18n/lv.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# Latvian translation for openobject-addons
-# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2012.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-03-21 14:26+0000\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: Latvian \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
diff --git a/addons/stock_location/i18n/mk.po b/addons/stock_location/i18n/mk.po
deleted file mode 100644
index 411a26fbbb1..00000000000
--- a/addons/stock_location/i18n/mk.po
+++ /dev/null
@@ -1,387 +0,0 @@
-# Macedonian translation for openobject-addons
-# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2012.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-04-23 11:28+0000\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: Macedonian \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Се користи за да се знае на која компанија припаѓаат требувањата и движењата."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Испраќање на стоки"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Движење"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Наметнати текови"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Изворна локација"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-"Локација употребена од страна на Локацијата на одредиштето за добавување"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Внатрешно"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Локација"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Статус на фактурата"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Услови"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Зона на пакување"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Порта B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Порта А"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Купи"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Зона на испраќање"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Компанија"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Движење на залиха"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Доколку е означено, кога ова движење е откажано, откажи го и поврзаното "
-"движење исто така"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Произведи"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Направи нарачка"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Направи го залиха"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Повлечено од друга локација"
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Адреса на партнер"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Да се фактурира"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Број на денови за да се направи овој премин"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Ова поле ќе го пополни Потеклото на пакувањето и името на неговите движења"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Тип на набавка"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Име"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Рачна операција"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Производ"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Тип на испорака"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Направи го залиха': Кога е потребно, земи го од залиха или чекај "
-"надополнување. 'Направи налог': Кога е потребно, купи или произведи за "
-"барањето за набавка."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Дали локацијата на одредиштето кое има потреба од добавување"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Производи"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Контрола на квалитет"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Не може да се примени"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Одолжување (денови)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Тек на извлекување"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Набавка"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Локација на одредиштето"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Автоматско движење"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Добивање на стоки"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Тип на Акција"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Метод на набавка"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Во зависност од компанијата, изберете дали сакате да примате или испраќате "
-"производи"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Обработување на налог"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Операција"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Патеки на локација"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Дневник"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Откажи каскада"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Фактурирано"
diff --git a/addons/stock_location/i18n/mn.po b/addons/stock_location/i18n/mn.po
deleted file mode 100644
index ea931a98bfe..00000000000
--- a/addons/stock_location/i18n/mn.po
+++ /dev/null
@@ -1,444 +0,0 @@
-# Mongolian translation for openobject-addons
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-09-29 09:58+0000\n"
-"Last-Translator: ub121 \n"
-"Language-Team: Mongolian \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"бэлтгэлт болон хөдөлгөөн аль компанид харъяалагдахыг мэдэхэд хэрэглэгддэг."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Бараануудыг илгээх"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Татсан Замууд"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Хөдөлгөөн"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Чихэгдсэн Урсгалууд"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Автомат Алхам нэмэхгүй"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Гарах байрлал"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Барааны татах урсгалын холбогдох хөдөлгөөнүүдийг цуцлах боломжийг олгодог"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Татсан урсгалууд"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Нийлүүлэхэд хүрэх байрлалаар ашигалагддаг байрлал"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Дотоод"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Татах татан авалт нь %s оригинал байрлалаас ирнэ, татах дүрэм %s, оригиналь "
-"татан авалт нь %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Байрлал"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Нэхэмжлэлийн Төлөв"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Энэ нь бараа явах байршлын цувааг тодорхойлоход хэрэглэгдэнэ. 'Автомат "
-"хөдөлгөөн' утга нь тухайн байршил дээр батласны дараа автоматаар дараагийн "
-"байршил руу шилжүүлнэ. 'Гар хөдөлгөөн' нь шилжүүлэлтийг ажилтан гараар "
-"хийхийг заана. 'Автомат Алхам нэмэхгүй' гэвэл эхний хөдөлгөөн дэх байршил "
-"солигдоно."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Нөхцлүүд"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Багцлах Бүс"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Хаалга Б"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Хаалга А"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Худалдаж авах"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Чихэгдсэн урсгалууд"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Диспетчерийн бүс"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Татагдсан урсгалууд"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Компани"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Нөөцийн хөдөлгөөн"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Хэрэв тэмдэглэгдсэн бол энэ хөдөлгөөний цуцлахад холбогдсон хөдөлгөөнүүд мөн "
-"цуцлагдана"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Үйлдвэрлэх"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Захиалуулах"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Нөөцлүүлэх"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Өөр байрлалаас татагдсан."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Харилцагчийн Хаяг"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Ирээдүйд Нэхэмжлэх"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Энэ шилжилтийг хийхэд шаардлагатай хоногийн тоо"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Энэ талбар нь багцлалтын эх байх бөгөөд үүний хөдөлгөөнүүдийн нэр байна"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Татан авалтын төрөл"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Нэр"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Эдгээр дүрмүүд нь барааны зөв замыг бүх байршлуудын түвшинд тодорхойлно."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Гар ажиллагаа"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Бараа"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Хүргэх Төрөл"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Нөөцлүүлэх': хэрэгтэй үед агуулахаас авдаг эсвэл агуулахад ирэхийг "
-"хүлээдэг. 'Захиалуулах': хэрэгтэй үед худалдан авах эсвэл үйлдвэрлэх "
-"захиалга өгдөг."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Нийлүүлэлт шаардлагатай хүрэх байрлал"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Бараанууд"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Чанарын Хяналт"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Хэрэглэх боломжгүй"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Хүлээлт (өдрөөр)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"%s гэсэн оригиналь байрлалаас татагдсан татан авалтын бэлтгэл, татах дүрэм "
-"нь %s, оригиналь татан авалт нь %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Чихэгдсэн Урсгал"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"%s гэсэн оригиналь байрлалаас татагдсан татан авалтын хөдөлгөөн, татах дүрэм "
-"нь %s, оригиналь татан авалт нь %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Түлхэх урсгал"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Татах урсгал"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Татан авалт"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Хүрэх байрлал"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Автомат хөдөлгөөн"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Барааг авах"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Үйлдлийн төрөл"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Татан авах арга"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Компаниас хамаарна, хүлээс авах эсвэл илгээх бараанууд болох дуртайгаа "
-"сонгоно"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Захиалга боловсруулагдаж байна"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Үйлдэл"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Байршлын замууд"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Журнал"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Шатлалыг цуцлах"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Нэхэмжилсэн"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Дэлгэцийн XML алдаатай!"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Объектын нэрний эхлэл x_ байх ёстой бөгөөд бусад тусгай тэмдэгтийг агуулж "
-#~ "болохгүй!"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Татан авалт & Байрлал"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Байршлын замууд"
-
-#~ msgid "Parameters"
-#~ msgstr "Параметер"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Бараанд цувралыг оноох ёстой."
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Логистикийн Урсгалууд"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "багцлалт болон хөдөлгөөн аль компанид харъяалагдаж байгааг мэдэхэд "
-#~ "хэрэглэгдэнэ"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "%d татан авалтаар ондоо байрлалаас татагдсан"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "Харагдац төрөлтэй байрлалаас/байрлалруу шилжүүлж болохгүй."
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Ижил биш барааны цувралыг олгох гэж байна"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Алдаа: EAN код буруу"
diff --git a/addons/stock_location/i18n/nb.po b/addons/stock_location/i18n/nb.po
deleted file mode 100644
index 7da880802ed..00000000000
--- a/addons/stock_location/i18n/nb.po
+++ /dev/null
@@ -1,395 +0,0 @@
-# Norwegian Bokmal translation for openobject-addons
-# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2012.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-07-22 21:37+0000\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: Norwegian Bokmal \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Vareforsendelse"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Bevegelse"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Kildelokasjon"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Intern"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Lokasjon"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Fakturastatus"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Vilkår"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Gate B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Gate A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Kjøp"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Firma"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Lagerbevegelse"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produser"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Produser på bestilling(Make to order)"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Produser til lager"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Partneradresse"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Klare til fakturering"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Navn"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Manuell operasjon"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Produkt"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Forsendelestype"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produkter"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Kvalitetskontroll"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Ikke tilgjengelig"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Forsinkelse (dager)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Innkjøp"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Destinasjons Lokasjon"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatisk bevegelse"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Handlingstype"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Innkjøpsmetode"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Handling"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Journal"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Fakturert"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Du må velge en produksjonslot/batch for dette produktet"
-
-#~ msgid "Parameters"
-#~ msgstr "Parametere"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "Kan ikke flytte produkter til eller fra en lokasjon av typen view."
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Du forsøker å angi en lot som ikke tilhører samme produkt"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Feil: Ugyldig ean kode"
diff --git a/addons/stock_location/i18n/nl.po b/addons/stock_location/i18n/nl.po
deleted file mode 100644
index 9411da8a9e6..00000000000
--- a/addons/stock_location/i18n/nl.po
+++ /dev/null
@@ -1,449 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-11-25 21:03+0000\n"
-"Last-Translator: Erwin van der Ploeg (BAS Solutions) \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Wordt gebruikt om te weten bij welk bedrijf de regels en mutaties behoren."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Goederen verzenden"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "'Pulled' pad"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Mutatie"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "'Pushed' pad"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automatisch, geen stap toegevoegd"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Bronlocatie"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Maakt het mogelijk om een mutatie te annuleren, welke is gerelateerd aan een "
-"pull flow."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Pulled Flows"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Locatie gebruikt door bestemmingslocatie om aan te leveren"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Intern"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Pulled verwerving komende van de originele locatie %s, pull regel %s, via "
-"originele verwerving %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Locatie"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Factuurstatus"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Dit wordt gebruikt om paden te definieren waarlangs het product wordt "
-"verplaatst in de locatieboom.\n"
-"De 'Automatische verplaatsing' waarde maakt een voorraad verplaating aan na "
-"de huidige die automatisch gevalideerd wordt. Met 'Handmatige verwerking' "
-"moet de voorraad verplaatsing worden geaccordeerd door een werknemer. Met "
-"'Automatisch (Geen stap toegevoegd) wordt alleen de locatie in de originele "
-"verplaating vervangen."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Voorwaarden"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Inpakstation"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Toegang B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Toegang A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Kopen"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Pushed flows"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Leveringsgebied"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Pulled flows"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Bedrijf"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Voorraadmutatie"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Indien aangevinkt en de mutatie wordt geannuleerd, annuleer dan tevens de "
-"gekoppelde mutatie."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produceren"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Maak op bestelling"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Maak op voorraad"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Pulled van een andere locatie."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Relatie Adres"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Te factureren"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Het aantal dagen tot wanneer deze verplaatsing wordt uitgevoerd"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Dit veld zal de oorsprong van de verpakking weergeven en de namen van de "
-"mutaties"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Verwervingswijze"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Naam"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Deze regel stelt het correcte pad van het product in de hele locatieboom in."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Handmatige verwerking"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Product"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Verzendwijze"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Maak op voorraad': wanneer nodig, neem uit de voorraad of wacht op "
-"herbevoorrading. 'Maak op order': wanneer nodig, bestel of produceer voor "
-"het verwervingsverzoek."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Is de bestemmingslocatie die bevoorraad moet worden"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Producten"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Kwaliteitscontrole"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Niet van toepassing"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Vertraging (dagen)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Levering van pull flow, komend van de voorraadlocatie %s, pull regel %s, via "
-"originele verwervingsopdracht %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Pushed Flow"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Mutatie van een pulled verwerving, komende van originele locatie %s, pull "
-"regel %s, via originele verwerving %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Push Flow"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Pull Flow"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Verwerving"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Bestemming"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatische verplaatsing"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Goederen verkrijgen"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Actiesoort"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Verwervingsmethode"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Afhankelijk van het bedrijf, kies welke producten u wilt verzenden of "
-"ontvangen"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Order verwerking"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Bewerking"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Locatiepaden"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Dagboek"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Annuleer Cascade"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Gefactureerd"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Ongeldige XML voor overzicht"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Voorraad locatiepaden"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "De objectnaam moet beginnen met x_ en mag geen speciale karakters bevatten !"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Leveringen & voorraadlocaties"
-
-#~ msgid "Parameters"
-#~ msgstr "Parameters"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Logistieke bewegingen"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Fout: Ongeldige EAN-code"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr ""
-#~ "Het is niet mogelijk om producten te verplaatsen naar een locatie van het "
-#~ "type 'aanzicht'."
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr ""
-#~ "U probeert een partij toe te wijzen die niet van hetzelfde product is."
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "U moet een productie partij toewijzen voor dit product"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Wordt gebruikt om te bepalen in welk bedrijf de mutaties en verplaatsingen "
-#~ "horen."
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Pulled van andere locatie via verwerving %d"
diff --git a/addons/stock_location/i18n/nl_BE.po b/addons/stock_location/i18n/nl_BE.po
deleted file mode 100644
index 1f3f8e61c5c..00000000000
--- a/addons/stock_location/i18n/nl_BE.po
+++ /dev/null
@@ -1,381 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.0\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2009-04-10 10:19+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "De objectnaam moet beginnen met x_ en mag geen speciale karakters bevatten !"
diff --git a/addons/stock_location/i18n/pl.po b/addons/stock_location/i18n/pl.po
deleted file mode 100644
index 43c578b8f7f..00000000000
--- a/addons/stock_location/i18n/pl.po
+++ /dev/null
@@ -1,426 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-12-09 11:37+0000\n"
-"Last-Translator: OpenERP Administrators \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Wysyłanie towarów"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Przesunięcie"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automatycznie i bezpośrednio"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Strefa źródłowa"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Strefa stosowana przez strefę docelową jako zaopatrzenie"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Wewnętrzne"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Strefa"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Stan faktury"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"To jest stosowane do definiowania ścieżek, po których produkt ma przechodzić "
-"w drzewie stref magazynowych.\n"
-"'Automatyczne przesunięcie' utworzy przesunięcie zapasu po przesunięciu "
-"poprzednim i automatycznie je zatwierdzi.\n"
-"'Ręczna operacja' utworzy przesunięcie, ale do ręcznego zatwierdzenia przez "
-"magazyniera.\n"
-"'Automatycznie i bezpośrednio' spowoduje, że strefa zostanie zamieniona w "
-"poprzednim przesunięciu."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Warunki"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Strefa pakowania"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Brama B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Brama A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Kupno"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Strefa wysyłki"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Firma"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Przesunięcie zapasu"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Jeśli zaznaczone, to przy anulowaniu tego przesunięcia zostanie anulowane "
-"również przesunięcie połączone."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produkcja"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Na zamówienie"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Na zapas"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Adres partnera"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Do zafakturowania"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Liczba dni na wykonanie tego przesunięcia"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"To pole będzie stosowane jako Pochodzenie w pobraniu i jako nazwa w "
-"przesunięciach."
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Typ zapotrzebowania"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nazwa"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Te reguły ustawiają odpowiednią ścieżkę przechodzenia produktu w całym "
-"drzewie stref magazynowych."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Ręczna operacja"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Produkt"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Typ wysyłki"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Na Zapas': Kiedy potrzeba pobierz z zapasu lub poczekaj na dostawę. 'Na "
-"Zamówienie': Kiedy potrzeba kup lub wyprodukuj na Zapotrzebowanie."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Jest strefą docelową, która wymaga uzupełnienia"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produkty"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Kontrola jakości"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Nie odpowiednie"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Czas (w dniach)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Zapotrzebowanie"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Strefa docelowa"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Automatyczne przesunięcie"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Przyjęcie towarów"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Typ akcji"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Metoda zapotrzebowania"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Zależnie od firmy wybierz, czy chcesz przyjmować, czy wysyłać produkty"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Przetwarzanie zamówienia"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operacja"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Ścieżki stref"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Dziennik"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Anuluj kaskadowanie"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Zafakturowano"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "XML niewłaściwy dla tej architektury wyświetlania!"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Nazwa obiektu musi zaczynać się od x_ oraz nie może zawierać znaków "
-#~ "specjalnych !"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Ścieżki stref"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Musisz podać nr partii dla tego produktu"
-
-#~ msgid "Parameters"
-#~ msgstr "Parametry"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Ścieżki magazynowe"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr "Oznacza firmę dla pobrania i przesunięć"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Próbujesz powiązac z numerem partii z innego produktu"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Błąd: Niedozwolony kod EAN"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Zapotrzebowanie i strefy"
diff --git a/addons/stock_location/i18n/pt.po b/addons/stock_location/i18n/pt.po
deleted file mode 100644
index 7d655372d8e..00000000000
--- a/addons/stock_location/i18n/pt.po
+++ /dev/null
@@ -1,611 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.4\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-12-17 14:45+0000\n"
-"Last-Translator: Rui Franco (multibase.pt) \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr "Usa-se para saber a que empresa as entregas e movimentos pertencem"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Enviar mercadorias"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Pulled Paths"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Movimento"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Pushed Flows"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automático Sem Etapa Adicionada"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Localização de origem"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr "Permite que cancele movimentos relacionados ao artigo pull flow"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Pulled Flows"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Localização usada por Local de Destino para fornecimento"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Localização"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Estado da Fatura"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Isto é utilizado para definir os trajetos que o artigo tem a seguir dentro "
-"da localização da árvore. \n"
-"O Valor da ' Mudança Automática' vai criar um movimento de stock depois do "
-"atual que irá ser validado automaticamente. Com o 'Manual de Operação' o "
-"movimento do stock terá de ser validado por um funcionário. Com 'Nenhuma "
-"etapa adicionada Automática' a localização é substituída no movimento "
-"original."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condições"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona de empacotamento"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Portão B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Portão A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Comprar"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Pushed flows"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de expedição"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Pulled flows"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Empresa"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Movimento do Stock"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Se verificado, quando o movimento é cancelado, cancelar o link do movimento "
-"também."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produzir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Produzir por encomenda"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Produzir para Stock"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Trazido de outra localização"
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Endereço do Parceiro"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "A Faturar"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de dias para esta transição"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Este campo irá preencher a Origem da embalagem e o nome dos seus movimentos"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipo de aquisições"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nome"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Estas regras estabelecem o caminho correto do artigo na árvore de "
-"localizações."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operação Manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Artigo"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo de envio"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Produzir para Stock': Quando necessário, tirar do stock ou esperar até o re-"
-"abastecimento. 'Produzir para Ordem de venda ': Quando necessário, comprar "
-"ou produzir para o pedido de aquisição."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "É o local de destino que deve fornecer"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Artigos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Controlo de qualidade"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Não Aplicável"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Atraso (dias)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Pushed Flow"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Aquisição"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Destino da localização"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimento Automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Obter mercadorias"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo de Ação"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Método de aprovisionamento."
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "Dependendo da empresa, escolha que artigos quer receber ou enviar"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Ordem de processamento"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operação"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Trajetos de Localização"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diário"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancelar cascata"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Faturado"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "XML inválido para a arquitectura de vista"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "O nome do objecto deve começar com x_ e não pode conter um carácter especial!"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Aquisições e Localizações"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Trajectos Para a Localização de Stock"
-
-#~ msgid "stock.location.path"
-#~ msgstr "localização.trajecto.stock"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Erro: Código EAN inválido"
-
-#~ msgid "Parameters"
-#~ msgstr "Parâmetros"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Tem de associar um lote de produção a este artigo"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Localização de caminhos do armazém"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Fluxos de logística"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr "É usada para saber a que empresa pertencem embalagens e move-las"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Puxado de outro local através de aquisições %d"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Tentar atribuir um monte que não é do mesmo artigo"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "Não pode mover os artigos de ou para um local de tipo vista."
diff --git a/addons/stock_location/i18n/pt_BR.po b/addons/stock_location/i18n/pt_BR.po
deleted file mode 100644
index 380416fe4dc..00000000000
--- a/addons/stock_location/i18n/pt_BR.po
+++ /dev/null
@@ -1,442 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-12-24 13:05+0000\n"
-"Last-Translator: Fábio Martinelli - http://zupy.com.br "
-"\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"É usado para saber a qual empresa as separações e movimentos pertencem."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Enviando Mercadorias"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Caminhos Puxados"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Movimento"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Fluxos Empurrados"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automático sem Passo Adicional"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Local de Origem"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Permitir que você cancele movimentos relacionados com o fluxo empurrado do "
-"produto"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Fluxo Empurrado"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Local utilizado pelo local de destino para fornecimento"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Aquisição Puxada proveniente da localização original %s, regra de puxamento "
-"%s, via Aquisição original %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Local"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Situação da Fatura"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Isto é usado para definir o caminho que o produto tem que seguir dentro da "
-"árvore de localização. \n"
-"O valor do 'Movimento Automático' criará um movimento após o atual que será "
-"validado automaticamente. Com a 'Operação Manual', o movimento de estoque "
-"terá de ser validado por um operador. Com 'Automático Sem Passo Adicional', "
-"a localização é substituida no movimento original."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condições"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona de Embalagem"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Portão B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Portão A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Comprar"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Fluxos Empurrados"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de Despacho"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Fluxos Puxados"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Empresa"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Movimentação do Estoque"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Se marcado, quando este movimento é cancelado, cancela o movimento "
-"relacionado também"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produzir"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Fabricar para Pedido"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Fabricar para Estoque"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Empurrado de outro local."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Endereço de Parceiro"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Para ser Faturado"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Número de dias para fazer esta transição"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Este campo irá preencher a Origem da embalagem e o nome da movimentação"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipo de Aquisição"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nome"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Estas regras determinam o caminho correto do produto na árvore de "
-"localização completa."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operação Manual"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Produto"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tipo de Envio"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Fazer para Estoque': Quando é necessário obter do estoque ou aguardar "
-"reposição. 'Fazer para Pedido': Quando é necessário adquirir ou produzir de "
-"acordo com a requisição."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "É o local de destino que necessita fornecimento"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produtos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Controle de Qualidade"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Não aplicável"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Atraso (dias)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Separação Puxada vindo da localização original %s, regra de puxamento %s, "
-"via Aquisição original %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Fluxo Empurrado"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Movimento para Aquisição Puxada vindo da localização original %s, regra de "
-"arrasto %s, via Aquisição original %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Fluxo Empurrado"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Fluxo Puxado"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Aquisição"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Local de destino"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Movimento Automático"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Obtenção de Mercadorias"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipo de Ação"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Método de Aquisição"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"Dependendo da empresa, escolha se você quer receber ou enviar produtos"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Processamento de Pedido"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operação"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Caminhos de localização"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Diário"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Cancelar em Cascata"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Faturado"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Invalido XML para Arquitetura da View"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "O nome do objeto precisa iniciar com x_ e não conter nenhum caracter "
-#~ "especial!"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Aquisições & Locações"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Você deve atribuir um lote de produção para este produto"
-
-#~ msgid "Parameters"
-#~ msgstr "Parâmetros"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Fluxos Logísticos"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Você tentou atribuir um lote que não é do mesmo produto"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Erro: Código EAN inválido"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Caminhos de Local de Armazém"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr ""
-#~ "Você não pode mover os produtos de/para um Local do tipo Visualização"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr "É usada para saber a que empresa pertencem embalagens e movimentos"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Puxado de outro local através de aquisições %d"
diff --git a/addons/stock_location/i18n/ro.po b/addons/stock_location/i18n/ro.po
deleted file mode 100644
index 468e8498da5..00000000000
--- a/addons/stock_location/i18n/ro.po
+++ /dev/null
@@ -1,616 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2011-04-06 08:02+0000\n"
-"Last-Translator: Mihai Satmarean \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Este utilizat pentru a sti carei companii ii apartin ridicarile si miscarile."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Trimitere bunuri"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Trasee retrase"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Miscare"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Fluxuri inaintate"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Automat Fără adăugare de paşi"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Locaţia Sursă"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Vă permite să anulati miscări asociate fluxului de extragere din productie"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Fluxuri retrase"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Locatia folosită de către Locatia Destinatie pentru aprovizionare"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Intern"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Procurare extrasă venită din locatia originală %s, regulă extragere %s, prin "
-"Aprovizionarea originală %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Locație"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Stare facură"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Se foloseşte pentru definirea traseului pe care produsul trebuie să il "
-"urmeze in arborele de locatii.\n"
-"Valoarea 'Mişcare automată' va crea o mişcare in stoc după cea curentă şi va "
-"fi validată automat. Cu 'Operare manuală', mişcarea de stoc va trebui "
-"validată de un operator. Cu 'Automat Fără adăugare de paşi' locatia este "
-"înlocuită în mişcarea originală."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Condiţii"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Zona de impachetat"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Poarta B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Poarta A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Cumpără"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Fluxuri inaintate"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Zona de Expedieri"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Fluxuri extrase"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Companie"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Mişcare stoc"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Dacă este bifat, atunci când această mişcare este anulată, anulează de "
-"asemenea mișcarea asociată"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Produceti"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Făcut la comandă"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Făcut pe stoc"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Tras dintr-o alta locatie."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Adresa Partenerului"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Urmează a fi facturat"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Numărul de zile pentru efectuarea acestei tranziţii"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Acest câmp va completa Originea ambalării şi numele miscărilor proprii"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tipul de aprovizionare"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Nume"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Aceste reguli stabilesc traseul corect al produsului in intregul arbore de "
-"locatii."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Operare manuală"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Produs"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Tip de expediere"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Productie pe stoc': Atunci cand este necesar, va lua din stoc sau va "
-"astepta pană la re-aprovizionare. 'Productie la comandă': Atunci cand este "
-"necesar, cumpără sau produce pentru cererea de aprovizionare."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Este locatia destinatie care necesită aprovizionare"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Produse"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Controlul Calitătii"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Nu se aplică"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Întârziere (zile)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Ridicarea pentru aprovizionarea retrasă provenită din locatia originală %s, "
-"regula de retragere %s, prin intermediul Aprovizionării originale %s ($%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Flux inaintare"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Miscarea pentru aprovizionarea retrasă provenită din locatia originală %s, "
-"regula de retragere %s, prin intermediul Aprovizionării originale %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Flux Push (de impingere)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Flux Pull (de tragere)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Aprovizionare"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Locaţia destinaţie"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Mişcare automată"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Achizitie mărfuri"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Tipul acţiunii"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Metoda de aprovizionare"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"În funcţie de companie, alegeti ceea ce doriti pentru a primi sau trimite "
-"produse"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Procesare comandă"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operaţiune"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Trasee locatii"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Jurnal"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Anulare cascadă"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Facturat"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "XML invalid pentru arhitectura machetei de afișare !"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Trasee locaţii de stocare"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Numele obiectului trebuie să înceapă cu x_ şi să nu conţină nici un caracter "
-#~ "special !"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Aprovizionare & Locaţii"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Trebuie să atribuiţi un lot de producţie pentru acest produs"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Încercaţi să atribuiţi un lot care nu este din acelaşi produs"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Eroare: cod EAN invalid"
-
-#~ msgid "Parameters"
-#~ msgstr "Parametri"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Trasee Locatii Depozit"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Fluxuri Logistică"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Acest modul suplimentează aplicaţia Depozit adăugând sprijin pentru traseele "
-#~ "locaţiei per-produs, implementând efectiv Fluxurile de inventar înaintare şi "
-#~ "retragere.\n"
-#~ "\n"
-#~ "Acesta poate fi folosit de obicei pentru a:\n"
-#~ "* Gestiona seriile de fabricaţie a produselor\n"
-#~ "* Gestiona locaţiile predefinite per produs\n"
-#~ "* Defini trasee in cadrul depozitului dumneavoastră în conformitate cu "
-#~ "nevoile afacerii, cum ar fi:\n"
-#~ " - Controlul Calităţii\n"
-#~ " - Servicii după Vânzare\n"
-#~ " - Returnări la furnizor\n"
-#~ "* Ajută managementul închirierilor, prin generarea unor mişcări automate de "
-#~ "returnare pentru produsele inchiriate\n"
-#~ "\n"
-#~ "Odată instalat acest modul, apare un tab suplimentar în formularul "
-#~ "produsului, unde puteti adăuga\n"
-#~ "specificatii ale fluxului de înaintare şi de retragere. Datele demo ale "
-#~ "produsului CPU1pentur acea înaintare/retragere :\n"
-#~ "\n"
-#~ "Fluxurile de înaintare\n"
-#~ "----------\n"
-#~ "Fluxurile de înaintare sunt folosite atunci când sosirea anumitor produse "
-#~ "într-o anumită locaţie ar trebui să fie urmată întotdeauna de o mişcare "
-#~ "corespunzătoare într-o altă locaţie, opţional după o anumită întârziere.\n"
-#~ "Aplicaţia originală Depozit deja suportă asemenea specificaţii ale fluxului "
-#~ "de înaintare chiar în\n"
-#~ "Locaţii, dar acestea nu pot fi rafinate per produs.\n"
-#~ "\n"
-#~ "O specificaţie a fluxului de înaintare indică ce locaţii sunt înlănţuite "
-#~ "între ele, şi cu\n"
-#~ "ce parametri. De îndată ce o anumită cantitate de produse este mutată în "
-#~ "locaţia sursă,\n"
-#~ "o mişcare înlănţuită este anticipată automat în funcţie de parametrii setaţi "
-#~ "în specificaţia fluxului\n"
-#~ "(locaţia destinaţie, întârziere, tip de mişcare, jurnal, etc.) Noua mişcare "
-#~ "poate fi procesată\n"
-#~ "automat sau poate necesita o confirmare manuală, în funcţie de parametri.\n"
-#~ "\n"
-#~ "Fluxuri de retragere\n"
-#~ "----------\n"
-#~ "Fluxurile de retragere sunt puţin diferite de Fluxurile de înaintare, în "
-#~ "sensul că ele nu sunt asociate\n"
-#~ "procesării mişcării produselor, ci sunt mai degrabă asociate procesării "
-#~ "comenzilor de aprovizionare.\n"
-#~ "Ceea ce este retras reprezintă o nevoie, nu produse în mod direct.\n"
-#~ "Un exemplu clasic de Flux de retragere este când aveţi o Companie outlet (de "
-#~ "desfacere) cu o Companie\n"
-#~ "principală (părinte) care este responsabilă pentru aprovizionarea Companiei "
-#~ "outlet.\n"
-#~ "\n"
-#~ " [ Clientul ] <- A – [Societatea de desfacere ] <- B – [ Societarea care "
-#~ "controlează alte societăţi mai mici ] <~ C ~ [ Furnizor ]\n"
-#~ "\n"
-#~ "Atunci când o comandă nouă de aprovizionare (A, rezultând din confirmarea "
-#~ "unei Comenzi de vânzare, de exemplu) soseşte la Societatea de desfacere, ea "
-#~ "este transformată într-o altă aprovizionare (B, prin intermediul unui flux "
-#~ "de înaintare de tipul ’mişcare’) cerut de către Societatea principală. "
-#~ "Atunci când comanda de aprovizionare B este procesată de către Compania "
-#~ "principală şi dacă produsul nu se află pe stoc, ea poate fi transformată "
-#~ "într-o Comandă de Achiziţie (C) de la Furnizor (Flux de înaintare de tip "
-#~ "Achiziţie). Rezultatul este că ordinul de aprovizionare, nevoia, este "
-#~ "înaintat până la capăt între Client şi Furnizor.\n"
-#~ "\n"
-#~ "Tehnic vorbind, Fluxurile de retragerepermit procesarea comenzilor de "
-#~ "aprovizionare în mod diferit, nu doar în funcţie de produsul în discuţie, ci "
-#~ "şi în funcţie de locaţia care deţine ” nevoia” de acel produs (adică locaţia "
-#~ "destinaţie a acelei comenzi de aprovizionare).\n"
-#~ "\n"
-#~ "Folosire Caz\n"
-#~ "--------\n"
-#~ "\n"
-#~ "Puteti folosi datele demo după cum urmează:\n"
-#~ " CPU1: Vindeţi nişte CPU1 din Magazinul 1 şi executaţi programatorul\n"
-#~ " - Depozit: comanda de livrare, Magazin 1: recepţie\n"
-#~ " CPU3:\n"
-#~ " - Atunci când primiţi produsul, acesta ajunge în locaţia Controlului "
-#~ "Calităţii, apoi este stocat pe raftul 2.\n"
-#~ " - Atunci când livraţi produsul clientului: Lista de ridicare -> "
-#~ "Ambalare -> Comanda de livrare de la Poarta A\n"
-#~ " "
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Este folosit pentru a şti cărei companii ii aparţin ambalajele şi mișcările"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Retras dintr-o altă locatie via aprovizionare %d"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr ""
-#~ "Nu puteti muta produse dintr-o sau intr-o locatie de tipul vizualizare."
diff --git a/addons/stock_location/i18n/ru.po b/addons/stock_location/i18n/ru.po
deleted file mode 100644
index 4d1af5a060b..00000000000
--- a/addons/stock_location/i18n/ru.po
+++ /dev/null
@@ -1,450 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-12-25 14:24+0000\n"
-"Last-Translator: Chertykov Denis \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Используется , чтобы узнать, к какой компании принадлежат комплектования и "
-"перемещения."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Отправка товаров"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Входящие пути"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Перемещение"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "Исходящие потоки"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Автоматически без добавления шагов"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Место хранения источника"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-"Позволяет вам отменить перемещения связанные с входящим потоком продукции"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Входящие потоки"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Место хранения используемое местом назначения для поставки"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Внутреннее"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Входящее снабжение поступающее из исходного места %s, правило прихода %s, "
-"через исходное снабжение %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Место хранения"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Статус счета"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Это используется для определения путей следования продукта в дереве мест "
-"хранения.\n"
-"Значение 'Автоматическое перемещение' создаст перемещение текущего запаса "
-"после чего будет автоматически подтверждено. 'Ручная операция' - перемещение "
-"должно быть подтверждено работником.'Автоматически без добавления шагов' - "
-"место хранения замещено в исходном перемещении."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Условия"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Зона упаковки"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Выход B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Выход A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Покупка"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "Исходящие потоки"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Зона отгрузки"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Входящие потоки"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Компания"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Движение запасов"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Если отмечено, то это перемещение отменено, связанные перемещения тоже "
-"отменяются"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Произвести"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Изготовить на заказ"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Изготовить на склад"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "Взяли из другого места."
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Адрес партнера"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Счет будет выставлен"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Количество дней для перемещения"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-"Это поле будет заполнять происхождение комплектования и название его "
-"перемещений"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Тип снабжения"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Название"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Эти правила устанавливают правильный путь ТМЦ во всей структуре мест "
-"хранения."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Ручное управление"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Товар"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Тип доставки"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"'Изготовить на склад':при необходимости, взять со склада или ждать поставки. "
-"'Изготовить на заказ': при необходимости, закупить или произвести по запросу "
-"на снабжение."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Место хранения которое нуждается в поставке"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Товары"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Контроль качества"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Неприменимо"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Задержка (в днях)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Комплектование для входящего снабжения приходящего из исходного места "
-"хранения %s, правило поступления %s, через исходное снабжение %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "Исходящий поток"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Перемещение для входящего снабжения поступающего из исходного места хранения "
-"%s, правило прихода %s, через исходное снабжение %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Снабжение"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Место назначения"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Автоматическое перемещение"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Получение товаров"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Тип действия"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Метод снабжения"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-"В зависимости от компании, выберите, что вы хотите: принимать или отправлять "
-"продукцию"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Обработка заказа"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Операция"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Пути мест хранения"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Журнал"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Отменить каскад"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Счет выставлен"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Неправильный XML для просмотра архитектуры!"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Название объекта должно начинаться с x_ и не должно содержать специальных "
-#~ "символов !"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Снабжение и местоположения"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Расположение патча"
-
-#~ msgid "stock.location.path"
-#~ msgstr "расположение патча"
-
-#~ msgid "Parameters"
-#~ msgstr "Параметры"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Используется для для того, чтобы знать какой компании принадлежат упаковки и "
-#~ "перемещения"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Взято из другого места хранения по снабжению %d"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Пути мест хранения склада"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Вы пытаетесь назначит партию состоящую из другой продукции"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Вы должны назначить партию изделий для данной ТМЦ"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Логистика потоков"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "Нельзя переместить ТМЦ в/из место хранения типа вид."
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Ошибка: Неверный штрих-код"
diff --git a/addons/stock_location/i18n/sl.po b/addons/stock_location/i18n/sl.po
deleted file mode 100644
index 3e1843903c7..00000000000
--- a/addons/stock_location/i18n/sl.po
+++ /dev/null
@@ -1,402 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-08-03 01:06+0000\n"
-"Last-Translator: Mantavya Gajjar (Open ERP) \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr "Opredelitev podjetja za dobave in premike."
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Pošiljanje blaga"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Premik"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Samodejno - ni nadaljnjih korakov"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Izvorna lokacija"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Interno"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Lokacija"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Status računa"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Uporablja se za definiranje poti, po katerih mora potovati proizvod v okviru "
-"lokacijske strukture.\n"
-"'Avtomatični premik' bo kreiral premik zaloge po trenutnem premiku in bo "
-"potrjen avtomatično. Z 'Ročno operacijo' mora biti premik zaloge potrjen s "
-"strani zaposlenega. Z 'Avtomatično brez dodanih korakov' se lokacija "
-"nadomesti v originalni transakciji."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Pogoji"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Pakirna cona"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "Vhod B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "Vhod A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Nakup"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Odpremna cona"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Podjetje"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Premik zaloge"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Če je označeno, velja, da se ob preklicu tega premika prekliče tudi povezani "
-"premik"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Proizvodnja"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Po naročilu"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Na zalogo"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Partnerjev naslov"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Za fakturiranje"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Koliko dne še do te transakcije"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tip oskrbe"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Ime"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-"Ta pravila določajo pravilno pot proizvoda v celotnem drevesu lokacij."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Ročno upravljanje"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Izdelek"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Vrsta odpreme"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "končna lokacija, ki potrebuje oskrbo"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Izdelki"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Kontrola kakovosti"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Brezpredmetno"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Zamuda (dni)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Oskrba"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Ciljna lokacija"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Samodejna knjižba"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Pridobitev dobrin"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "Vrsta dejanja"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "Metoda oskrbe"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Procesiranje nalogov"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operacija"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Poti do lokacije"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Dnevnik"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Fakturirano"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Neveljaven XML za arhitekturo pogleda."
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Naziv objekta se mora začeti z 'x_' in ne sme vsebovati posebnih znakov."
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Nabava in lokacije"
-
-#~ msgid "stock.location.path"
-#~ msgstr "stock.location.path"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Poti do lokacije zalog"
diff --git a/addons/stock_location/i18n/sq.po b/addons/stock_location/i18n/sq.po
deleted file mode 100644
index 543ebe3f5cb..00000000000
--- a/addons/stock_location/i18n/sq.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# Albanian translation for openobject-addons
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-08-02 14:39+0000\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: Albanian \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
diff --git a/addons/stock_location/i18n/stock_location.pot b/addons/stock_location/i18n/stock_location.pot
deleted file mode 100644
index 554be5282c1..00000000000
--- a/addons/stock_location/i18n/stock_location.pot
+++ /dev/null
@@ -1,359 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 7.0alpha\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-12-21 17:06+0000\n"
-"Last-Translator: <>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: \n"
-"Plural-Forms: \n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid "Pulled procurement coming from original location %s, pull rule %s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid "This is used to define paths the product has to follow within the location tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one that will be validated automatically. With 'Manual Operation', the stock move has to be validated by a worker. With 'Automatic No Step Added', the location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid "These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid "'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid "Picking for pulled procurement coming from original location %s, pull rule %s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid "Move for pulled procurement coming from original location %s, pull rule %s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid "Depending on the company, choose whatever you want to receive or send products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
diff --git a/addons/stock_location/i18n/sv.po b/addons/stock_location/i18n/sv.po
deleted file mode 100644
index 9007b59348d..00000000000
--- a/addons/stock_location/i18n/sv.po
+++ /dev/null
@@ -1,390 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.14\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-07-16 12:04+0000\n"
-"Last-Translator: Anders Wallenquist \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Sända Gods"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Flytta"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Ursprungsplats"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "Intern"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Faktura Status"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Lagerflytt"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Objektnamnet måste börja med x_ och får inte innehålla några specialtecken!"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Stock Location Paths"
-
-#~ msgid "Parameters"
-#~ msgstr "Parametrar"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Du måste tilldela ett produktionsparti för denna produkt"
diff --git a/addons/stock_location/i18n/th.po b/addons/stock_location/i18n/th.po
deleted file mode 100644
index 874e57e7ccb..00000000000
--- a/addons/stock_location/i18n/th.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# Thai translation for openobject-addons
-# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2013.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2013-06-21 04:47+0000\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: Thai
\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "ย้าย"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "ภายใน"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "ตำแหน่งที่ตั้ง"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "สถานใบแจ้งหนี้"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "ซื้อ"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "บริษัท"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "รายการเคลื่อนไหวสินค้า"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "ผลิตตามคำสั่งซื้อ"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "ผลิตตามสต็อกสินค้า"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "ชื่อ"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "ผลิตภัณฑ์"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "ปฏิบัติการ"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "ส่งใบแจ้งหนี้แล้ว"
diff --git a/addons/stock_location/i18n/tlh.po b/addons/stock_location/i18n/tlh.po
deleted file mode 100644
index fbea26a9d00..00000000000
--- a/addons/stock_location/i18n/tlh.po
+++ /dev/null
@@ -1,376 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2009-02-03 06:25+0000\n"
-"Last-Translator: <>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
diff --git a/addons/stock_location/i18n/tr.po b/addons/stock_location/i18n/tr.po
deleted file mode 100644
index 4e965c29b3f..00000000000
--- a/addons/stock_location/i18n/tr.po
+++ /dev/null
@@ -1,594 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-01-23 23:23+0000\n"
-"Last-Translator: Ahmet Altınışık \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-"Teslimatların ve hareketlerin hangi şirkete ait olduğunun bilinmesi için "
-"kullanılır"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "Mal Gönderme"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "Çekilen Rotalar"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "Hareket"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "İtilen Akışlar"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "Otomatik No Adımı Eklendi"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "Kaynak Konumu"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr "Ürün çekme akışına ilişkin hareketleri iptal etmenizi sağlar"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "Çekilen Akışlar"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "Gönderilecek Hedef Konumu tarafından kullanılan konum"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "İç"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-"Çekilir tedarik %s başlangıç konumundan, %s çekme kuralından, başlangıç %s "
-"Tedariki (#%d) yolundan gelir."
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "Yer"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "Fatura Durumu"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"Bu, konum ağacında ürünün izlemesi gereken rotaları belirtmek için "
-"kullanılır.\n"
-"'Otomatik Hareket' değeri, otomatik olarak onaylanacak olan geçerli birinden "
-"bir stok hareketi oluşturacaktır. 'Manual Operasyon' durumunda, stok "
-"hareketi bir çalışan tarafından onaylanmalıdır. 'Otomatik No Adımı Eklendi' "
-"durumunda, konum orijinal harekette değiştirilir."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "Koşullar"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "Paket Bölgesi"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "B Kapısı"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "A Kapısı"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "Alım"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "İtilen akışlar"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "Gönderim Bölgesi"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "Çekilen akışlar"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "Firma"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "Stok Hareketi"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-"Kontrol edildiyse, bu hareket iptal edildiğinde, ilgi hareketi de iptal edin"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "Üretme"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "Sipariş Yapma"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "Stoktan Al"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "farklı bir konumdan alındı"
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "Partner Adresi"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "Faturalandırma"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "Bu geçişin yapılacağı gün sayısı"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "Bu alana paketleme Orijini ve hareket adları doldurulacaktır"
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "Tedarik Türü"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "Adı"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr "Bu kurallar, tüm konum ağacı boyunca doğru ürün rotasını ayarlar."
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "Manuel Operasyon"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "Ürün"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "Sevkiyat Türü"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"Stoktan Al: Gerektiğinde ürün stoktan alınacaktır ya da yeniden tedarik "
-"edilmesi beklenecektir. Sipariş Ver: Gerektiğinde ürün, tedarik isteği "
-"üzerine satınalınır ya da üretilir."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "Tedarik işleminin yapılacağı hedef konumdur"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "Ürünler"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "Kalite Kontrol"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "Uygun Değil"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "Geçikme (Gün)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-"Orijinal konumdan %s çekilen satınalma için alım, çekme kuralı %s, orijinal "
-"Satınalma %s (#%d) aracılığıyla"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "İletilen Akış"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-"Orijinal konumdan %s iletilen satınalma için hareket, çekme kuralı %s, "
-"orijinal Satınalma %s (#%d) aracılığıyla"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "Akış İtme"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "Akış Çekme"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "Tedarik"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "Hedef Lokasyonu"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "Otomatik Hareket"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "Mal Alımı"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "İşlem Türü"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "TeminEtme Metodu"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "Firmaya göre, göndermek veya almak istediğiniz ürünleri seçin"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "Sipariş İşleme"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "Operasyon"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "Lokasyonu Rotası"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "Yevmiye"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "Basamak İptal"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "Faturalandı"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Görüntüleme mimarisi için Geçersiz XML"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "Stok Lokasyon Rotası"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "Satınalma & Lokasyonlar"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "Lojistik Akışlar"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr ""
-#~ "Paketleme ve hareketleri gerçekleştiren firmayı öğrenmek için kullanılır"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "Aynı üründen olmayan bir grup atamaya çalışıyorsunuz"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "Hata: Geçersiz kazanç kodu"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "Bu ürün için bir üretim partisi girmeniz gerekir"
-
-#~ msgid "Parameters"
-#~ msgstr "Katsayılar"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "Satınalma %d aracılığıyla başka bir konumdan çekilir"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "Bu modül her bir ürün için destek sağlayarak Depo uygulamasını tamamlar\n"
-#~ "konum rotaları, İletme ve Çekme envanteri etkili uygulaması.\n"
-#~ "\n"
-#~ "Genellikle şu amaçla kullanılır:\n"
-#~ "* Ürün üretim zincirlerini yönetme\n"
-#~ "* Her bir ürün için varsayılan konumları yönetme\n"
-#~ "* Aşağıdaki işletme ihtiyaçlarına göre deponuzdaki rotaları belirleme:\n"
-#~ " - Kalite Kontrol\n"
-#~ " - Satış Sonrası Hizmetler\n"
-#~ " - Tedarikçi İadeleri\n"
-#~ "* Kiralanan ürünler için otomatik iade hareketleri oluşturarak kiralama "
-#~ "yönetimine yardımcı olma\n"
-#~ "\n"
-#~ "Bu modül kurulduğunda, ürün formunda İletme ve Çekme özelliklerini "
-#~ "ekleyebileceğiniz\n"
-#~ "ilave bir sekme belirir. İletme/çekme için CPU1 ürünü gösterim verileri:\n"
-#~ "\n"
-#~ "İletme akışları\n"
-#~ "----------\n"
-#~ "İletme akışları, belirli bir ürünün belirli bir lokasyona ulaşması, ilgili "
-#~ "başka bir konuma hareket\n"
-#~ "tarafından, isteğe bağlı olarak belirli bir gecikme süresinden sonra, daima "
-#~ "izlenmesi gerektiğinde kullanışlıdır.\n"
-#~ "Orijinal Depo uygulaması, Konumlardaki İletme akışı gibi özellikleri zaten "
-#~ "destekler, ancak\n"
-#~ "bunlar her ürün için tavsiye edilmez.\n"
-#~ "\n"
-#~ "Bir iletme akışı özelliği hangi konumun hangi konuma ve hangi parametrelere "
-#~ "bağlandığını\n"
-#~ "gösterir. Ürünün belirli bir miktarı kaynak konuma hareket ettiğinde, akış "
-#~ "özelliğinde ayarlanan parametrelere göre\n"
-#~ "bağlı bir hareket otomatik olarak öngörülür\n"
-#~ "(hedef konum, gecikme süresi, hareket türü, seyir durumu vb.) Parametrelere "
-#~ "bağlı olarak, yeni hareket\n"
-#~ "otomatik olarak işlenir veya manuel bir onay gerekir.\n"
-#~ "\n"
-#~ "Çekme akışları\n"
-#~ "----------\n"
-#~ "Çekme akışları, ürün hareketlerinin işlenmesine ilişkin olmayıp, daha ziyade "
-#~ "satınalma siparişlerinin işlenmesine\n"
-#~ "ilişkin olması bakımından, İletme akışlarından biraz farklıdır.\n"
-#~ "Çekilecek olan şey, doğrudan ürün değil, bir ihtiyaçtır.\n"
-#~ "Satıcı firma tedarik işlemlerinden sorumlu air ana Firma ile\n"
-#~ "bir Satıcı firmaya sahip olduğunuz durum klasik bir İletme akışı durumudur.\n"
-#~ "\n"
-#~ " [ Müşteri ] <- A - [ Satıcı Firma ] <- B - [ Holding ] <~ C ~ [ "
-#~ "Tedarikçi ]\n"
-#~ "\n"
-#~ "Yeni bir satınalma siparişi (A, örneğin bir Satış Siparişi onayından gelen)\n"
-#~ "Satıcı firmaya ulaştığında, Holding tarafından talep edilen başka bir "
-#~ "satınalmaya (B, 'hareket' tipi İletme akışıyla)\n"
-#~ "dönüştürülür. Satınalma siparişi B Holding firma tarafından işlendiğinde ve\n"
-#~ "ürün stokta yoksa, Tedarikçiden bir Satınalma Siparişine (C) dönüştürülür\n"
-#~ "(Satınalma tipi İletme akışı). Sonuç olarak satınalma siparişi, ihtiyaç, her "
-#~ "türlü\n"
-#~ "Müşteri ve Tedarikçi arasında iletilir.\n"
-#~ "\n"
-#~ "Teknik olarak, Çekma akışları satınalma siparişlerinin sadece ele alınan "
-#~ "ürüne göre değil\n"
-#~ "ürün için \"ihtiyaç\" duyulan konuma göre de farklı olarak işlenmesine "
-#~ "olanak sağlar\n"
-#~ "(örn. satınalma siparişinin gönderileceği hedef konum).\n"
-#~ "\n"
-#~ "Kullanım-Durumu\n"
-#~ "--------\n"
-#~ "\n"
-#~ "Gösterim verilerini aşağıdaki gibi kullanabilirsiniz:\n"
-#~ " CPU1: Mağaza 1'den bir miktar CPU1 satın ve zamanlayıcıyı çalıştırın\n"
-#~ " - Depo: teslimat siparişi, Mağaza 1: resepsiyon\n"
-#~ " CPU3:\n"
-#~ " - Ürünü alırken, Kalite Kontrol konumuna gider ve ardından raf 2'ye "
-#~ "saklanır.\n"
-#~ " - Müşteriye teslim edilirken: Alım Listesi -> Paketleme -> A Kapısından "
-#~ "Teslimat Siparişi\n"
-#~ " "
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "Depo Konumu Rotaları"
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "view tipinde bir lokasyona ürün giriş çıkışı yapamazsınız."
diff --git a/addons/stock_location/i18n/uk.po b/addons/stock_location/i18n/uk.po
deleted file mode 100644
index 6ec8c8007ec..00000000000
--- a/addons/stock_location/i18n/uk.po
+++ /dev/null
@@ -1,384 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2009-09-08 13:21+0000\n"
-"Last-Translator: Eugene Babiy \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "Неправильний XML для Архітектури Вигляду!"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr ""
-#~ "Назва об'єкту має починатися з x_ і не містити ніяких спеціальних символів!"
diff --git a/addons/stock_location/i18n/vi.po b/addons/stock_location/i18n/vi.po
deleted file mode 100644
index 5e7c50ae13b..00000000000
--- a/addons/stock_location/i18n/vi.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# Vietnamese translation for openobject-addons
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the openobject-addons package.
-# FIRST AUTHOR , 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: openobject-addons\n"
-"Report-Msgid-Bugs-To: FULL NAME \n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2010-08-02 14:39+0000\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: Vietnamese \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr ""
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
diff --git a/addons/stock_location/i18n/zh_CN.po b/addons/stock_location/i18n/zh_CN.po
deleted file mode 100644
index 9e0aa16077b..00000000000
--- a/addons/stock_location/i18n/zh_CN.po
+++ /dev/null
@@ -1,543 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 6.0dev\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2012-11-27 12:39+0000\n"
-"Last-Translator: 盈通 ccdos \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr "用来了解属于哪个公司的的分拣和移动"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "送货"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr "拉式路径"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "调拨"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr "推式流"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "自动,不加入步骤"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "源库位"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr "允许您取消拉式流相关的调拨"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr "拉式流"
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr "库位用于提供目标的库位"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "内部"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr "拉式需求来自源库位%s ,拉式规则 %s,通过源需求 %s (#%d)"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "库位"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "发票状态"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-"这些规则确定了产品在库位树中的正确移动路径.\n"
-"‘自动调拨’ 将在创建仓库调拨后自动确认.\n"
-"‘手动操作’ 库存调拨需要人工确认. \n"
-"‘自动不加入步骤’ 这库位取代调拨的源库位."
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "条件"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "装箱区"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "B 大门"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "A 大门"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "购买"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr "推式流"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "派件区"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr "拉式流"
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "公司"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "库存调拨"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr "如果选择,在取消这调拨时,也取消与它相关的调拨."
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "生产"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "按订单生产"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "按库存生产"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr "从其它库位拉动"
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "业务伙伴地址"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "待开票"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr "过程要的天数"
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr "这字段填入源装箱单和它的调拨单名称."
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr "需求类型"
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr "名称"
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr "这些规则确定了产品在整个库位树的正确路径。"
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr "手动操作"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr "产品"
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr "货运类型"
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-"按库存生产: 在仓库或等待重新供应时得到需求.\r\n"
-"按订单生产: 在采购或产品获得请求时得到需求."
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr "需要提供目标库位"
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr "产品"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr "质量控制"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr "无效"
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr "延期(天)"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr "拉式装箱单来自源库位%s, 拉式规则 %s,通过源需求 %s (#%d)"
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr "推式流"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr "拉式调拨需求来自源库位 %s,拉式规则 %s,通过源需求 %s (#%d)"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr "推式物流"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr "拉式物流"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr "需求单"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr "目标库位"
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr "自动调拨"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr "收货"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr "动作类型"
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr "获得方式"
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr "根据公司,选择您是收货还是发货"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr "订单处理"
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr "操作"
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr "库位路径"
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr "账簿"
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr "取消级联"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr "已开票"
-
-#~ msgid "Stock Location Paths"
-#~ msgstr "库存库位路径"
-
-#~ msgid "Procurement & Locations"
-#~ msgstr "产品需求&库位"
-
-#~ msgid ""
-#~ "The Object name must start with x_ and not contain any special character !"
-#~ msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
-
-#~ msgid "Invalid XML for View Architecture!"
-#~ msgstr "无效的视图结构xml文件!"
-
-#~ msgid "Parameters"
-#~ msgstr "参数"
-
-#~ msgid "You must assign a production lot for this product"
-#~ msgstr "您必须为此产品赋予一个生产批次"
-
-#~ msgid "Logistics Flows"
-#~ msgstr "物流"
-
-#~ msgid "Error: Invalid ean code"
-#~ msgstr "错误:无效的(EAN)条码"
-
-#~ msgid "You try to assign a lot which is not from the same product"
-#~ msgstr "您尝试为另外的产品赋予批次"
-
-#~ msgid "Is used to know to which company belong packings and moves"
-#~ msgstr "它用来知道属于哪个公司的装箱单和调拨"
-
-#~ msgid "Warehouse Locations Paths"
-#~ msgstr "仓库库位路径"
-
-#, python-format
-#~ msgid "Pulled from another location via procurement %d"
-#~ msgstr "通过需求%d 拉到另一个库位"
-
-#~ msgid ""
-#~ "\n"
-#~ "This module supplements the Warehouse application by adding support for per-"
-#~ "product\n"
-#~ "location paths, effectively implementing Push and Pull inventory flows.\n"
-#~ "\n"
-#~ "Typically this could be used to:\n"
-#~ "* Manage product manufacturing chains\n"
-#~ "* Manage default locations per product\n"
-#~ "* Define routes within your warehouse according to business needs, such as:\n"
-#~ " - Quality Control\n"
-#~ " - After Sales Services\n"
-#~ " - Supplier Returns\n"
-#~ "* Help rental management, by generating automated return moves for rented "
-#~ "products\n"
-#~ "\n"
-#~ "Once this module is installed, an additional tab appear on the product form, "
-#~ "where you can add\n"
-#~ "Push and Pull flow specifications. The demo data of CPU1 product for that "
-#~ "push/pull :\n"
-#~ "\n"
-#~ "Push flows\n"
-#~ "----------\n"
-#~ "Push flows are useful when the arrival of certain products in a given "
-#~ "location should always\n"
-#~ "be followed by a corresponding move to another location, optionally after a "
-#~ "certain delay.\n"
-#~ "The original Warehouse application already supports such Push flow "
-#~ "specifications on the\n"
-#~ "Locations themselves, but these cannot be refined per-product.\n"
-#~ "\n"
-#~ "A push flow specification indicates which location is chained with which "
-#~ "location, and with\n"
-#~ "what parameters. As soon as a given quantity of products is moved in the "
-#~ "source location,\n"
-#~ "a chained move is automatically foreseen according to the parameters set on "
-#~ "the flow specification\n"
-#~ "(destination location, delay, type of move, journal, etc.) The new move can "
-#~ "be automatically\n"
-#~ "processed, or require a manual confirmation, depending on the parameters.\n"
-#~ "\n"
-#~ "Pull flows\n"
-#~ "----------\n"
-#~ "Pull flows are a bit different from Pull flows, in the sense that they are "
-#~ "not related to\n"
-#~ "the processing of product moves, but rather to the processing of procurement "
-#~ "orders.\n"
-#~ "What is being pulled is a need, not directly products.\n"
-#~ "A classical example of Push flow is when you have an Outlet company, with a "
-#~ "parent Company\n"
-#~ "that is responsible for the supplies of the Outlet.\n"
-#~ "\n"
-#~ " [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ]\n"
-#~ "\n"
-#~ "When a new procurement order (A, coming from the confirmation of a Sale "
-#~ "Order for example) arrives\n"
-#~ "in the Outlet, it is converted into another procurement (B, via a Push flow "
-#~ "of type 'move')\n"
-#~ "requested from the Holding. When procurement order B is processed by the "
-#~ "Holding company, and\n"
-#~ "if the product is out of stock, it can be converted into a Purchase Order "
-#~ "(C) from the Supplier\n"
-#~ "(Push flow of type Purchase). The result is that the procurement order, the "
-#~ "need, is pushed\n"
-#~ "all the way between the Customer and Supplier.\n"
-#~ "\n"
-#~ "Technically, Pull flows allow to process procurement orders differently, not "
-#~ "only depending on\n"
-#~ "the product being considered, but also depending on which location holds the "
-#~ "\"need\" for that\n"
-#~ "product (i.e. the destination location of that procurement order).\n"
-#~ "\n"
-#~ "Use-Case\n"
-#~ "--------\n"
-#~ "\n"
-#~ "You can use the demo data as follow:\n"
-#~ " CPU1: Sell some CPU1 from Shop 1 and run the scheduler\n"
-#~ " - Warehouse: delivery order, Shop 1: reception\n"
-#~ " CPU3:\n"
-#~ " - When receiving the product, it goes to Quality Control location then "
-#~ "stored to shelf 2.\n"
-#~ " - When delivering the customer: Pick List -> Packing -> Delivery Order "
-#~ "from Gate A\n"
-#~ " "
-#~ msgstr ""
-#~ "\n"
-#~ "这模块对库存管理增加对每种产品的逻辑路径,推式和拉式的库存流程应用.\n"
-#~ "\n"
-#~ "它主要用在:\n"
-#~ " * 管理产品的生产链.\n"
-#~ " * 管理每个产品的默认库位.\n"
-#~ " * 根据业务需要定义您的仓库路线如:\n"
-#~ " -质量控制\n"
-#~ " -售后服务\n"
-#~ " -供应商退货\n"
-#~ " * 帮助租贷管理,为租用的产品自动生成退还调拨.\n"
-#~ "\n"
-#~ "一旦安装这个模块,在产品界面增加一个标签,您可以加入拉式或推式流,以产品cpu1为例:\n"
-#~ " 推式流\n"
-#~ "\n"
-#~ " 在某些产品到达某一规划库位它将调拨到另一个库位,当然这需要经过一段时间.\n"
-#~ " 原来的系统已支持这种拉式的操作(它叫连锁库位)但它不能精确到对每一个产品. \n"
-#~ " 一个推式流需要指定相对应的连锁库位和一些参数如: \n"
-#~ " 指定源库位的产品数量,连锁调拨是自动按流程规划的参数产生(目标库位,耽搁,调拨的类型,账簿等),\n"
-#~ " 这些调拨可以自动处理也可根据参数人手确认.\n"
-#~ "\n"
-#~ " 拉式流\n"
-#~ "\n"
-#~ " 它不同与推式流,从某种意义上说它是不相关产品的调拨,但它是相关需求单处理的部分.\n"
-#~ " 一个典型的例子: [客户] <- A - [直销店] <- B - [仓库] <~ C ~ [供应商]\n"
-#~ " 当有一个需求单(销售单确认要A),来到直销店转到B(通过推式流\"调拨\"),再转化为对供应商C的采购订单(推式流为采购).\n"
-#~ " 技术上拉式流允许您处理不同的需求单,它不仅取决您要什么产品,还要看是哪个库位需要这产品.\n"
-#~ " 案例:\n"
-#~ " CPU1: 在商店1您销售CPU1并运行日程表(scheduler). \n"
-#~ " - 仓库送货单,商店1:收货. \n"
-#~ " CPU3: \n"
-#~ " - 产品收货时放在货架2 做来料质量检测的临时库位.\n"
-#~ " - 当给客户送货时: 装箱单 -> 送货单.\n"
-#~ " "
-
-#~ msgid "You can not move products from or to a location of the type view."
-#~ msgstr "您不能将产品移动到该类型的视图中。"
diff --git a/addons/stock_location/i18n/zh_TW.po b/addons/stock_location/i18n/zh_TW.po
deleted file mode 100644
index d2b9223dbb4..00000000000
--- a/addons/stock_location/i18n/zh_TW.po
+++ /dev/null
@@ -1,376 +0,0 @@
-# Translation of OpenERP Server.
-# This file contains the translation of the following modules:
-# * stock_location
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: OpenERP Server 5.0.4\n"
-"Report-Msgid-Bugs-To: support@openerp.com\n"
-"POT-Creation-Date: 2012-12-21 17:06+0000\n"
-"PO-Revision-Date: 2009-01-23 17:16+0000\n"
-"Last-Translator: <>\n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-04-22 07:17+0000\n"
-"X-Generator: Launchpad (build 16985)\n"
-
-#. module: stock_location
-#: help:product.pulled.flow,company_id:0
-msgid "Is used to know to which company the pickings and moves belong."
-msgstr "是用於了解提貨及貨物調動所屬的公司。"
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Sending Goods"
-msgstr "送出貨物"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled Paths"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Move"
-msgstr "調動"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location_path
-msgid "Pushed Flows"
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Automatic No Step Added"
-msgstr "自動,無額外調動"
-
-#. module: stock_location
-#: field:product.pulled.flow,location_src_id:0
-#: field:stock.location.path,location_from_id:0
-msgid "Source Location"
-msgstr "來源倉位"
-
-#. module: stock_location
-#: help:product.pulled.flow,cancel_cascade:0
-msgid "Allow you to cancel moves related to the product pull flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_pulled_flow
-#: field:product.product,flow_pull_ids:0
-msgid "Pulled Flows"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_src_id:0
-msgid "Location used by Destination Location to supply"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Internal"
-msgstr "內部"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:98
-#, python-format
-msgid ""
-"Pulled procurement coming from original location %s, pull rule %s, via "
-"original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_location
-msgid "Location"
-msgstr "倉位"
-
-#. module: stock_location
-#: field:product.pulled.flow,invoice_state:0
-#: field:stock.location.path,invoice_state:0
-msgid "Invoice Status"
-msgstr "發票狀態"
-
-#. module: stock_location
-#: help:stock.location.path,auto:0
-msgid ""
-"This is used to define paths the product has to follow within the location "
-"tree.\n"
-"The 'Automatic Move' value will create a stock move after the current one "
-"that will be validated automatically. With 'Manual Operation', the stock "
-"move has to be validated by a worker. With 'Automatic No Step Added', the "
-"location is replaced in the original move."
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Conditions"
-msgstr "條件"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_pack_zone
-msgid "Pack Zone"
-msgstr "包裝區"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_b
-msgid "Gate B"
-msgstr "閘門 B"
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_gate_a
-msgid "Gate A"
-msgstr "閘門 A"
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Buy"
-msgstr "買"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pushed flows"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_dispatch_zone
-msgid "Dispatch Zone"
-msgstr "派送區"
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pulled flows"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,company_id:0
-#: field:stock.location.path,company_id:0
-msgid "Company"
-msgstr "公司"
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_stock_move
-msgid "Stock Move"
-msgstr "庫存調動"
-
-#. module: stock_location
-#: help:stock.move,cancel_cascade:0
-msgid "If checked, when this move is cancelled, cancel the linked move too"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,type_proc:0
-msgid "Produce"
-msgstr "生產"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Order"
-msgstr "接單生產"
-
-#. module: stock_location
-#: selection:product.pulled.flow,procure_method:0
-msgid "Make to Stock"
-msgstr "存貨式生產"
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:118
-#, python-format
-msgid "Pulled from another location."
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,partner_address_id:0
-msgid "Partner Address"
-msgstr "業務夥伴地址"
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "To Be Invoiced"
-msgstr "待開發票"
-
-#. module: stock_location
-#: help:stock.location.path,delay:0
-msgid "Number of days to do this transition"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,name:0
-msgid "This field will fill the packing Origin and the name of its moves"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,type_proc:0
-msgid "Type of Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,name:0
-msgid "Name"
-msgstr ""
-
-#. module: stock_location
-#: help:product.product,path_ids:0
-msgid ""
-"These rules set the right path of the product in the whole location tree."
-msgstr ""
-
-#. module: stock_location
-#: selection:stock.location.path,auto:0
-msgid "Manual Operation"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_product_product
-#: field:product.pulled.flow,product_id:0
-msgid "Product"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,picking_type:0
-#: field:stock.location.path,picking_type:0
-msgid "Shipping Type"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,procure_method:0
-msgid ""
-"'Make to Stock': When needed, take from the stock or wait until re-"
-"supplying. 'Make to Order': When needed, purchase or produce for the "
-"procurement request."
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,location_id:0
-msgid "Is the destination location that needs supplying"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,product_id:0
-msgid "Products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.stock_location_qualitytest0
-msgid "Quality Control"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Not Applicable"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,delay:0
-msgid "Delay (days)"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:67
-#, python-format
-msgid ""
-"Picking for pulled procurement coming from original location %s, pull rule "
-"%s, via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: field:product.product,path_ids:0
-msgid "Pushed Flow"
-msgstr ""
-
-#. module: stock_location
-#: code:addons/stock_location/procurement_pull.py:89
-#, python-format
-msgid ""
-"Move for pulled procurement coming from original location %s, pull rule %s, "
-"via original Procurement %s (#%d)"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Push Flow"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Pull Flow"
-msgstr ""
-
-#. module: stock_location
-#: model:ir.model,name:stock_location.model_procurement_order
-msgid "Procurement"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,location_id:0
-#: field:stock.location.path,location_dest_id:0
-msgid "Destination Location"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,auto:0
-#: selection:stock.location.path,auto:0
-msgid "Automatic Move"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,picking_type:0
-#: selection:stock.location.path,picking_type:0
-msgid "Getting Goods"
-msgstr ""
-
-#. module: stock_location
-#: view:product.product:0
-msgid "Action Type"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,procure_method:0
-msgid "Procure Method"
-msgstr ""
-
-#. module: stock_location
-#: help:product.pulled.flow,picking_type:0
-#: help:stock.location.path,picking_type:0
-msgid ""
-"Depending on the company, choose whatever you want to receive or send "
-"products"
-msgstr ""
-
-#. module: stock_location
-#: model:stock.location,name:stock_location.location_order
-msgid "Order Processing"
-msgstr ""
-
-#. module: stock_location
-#: field:stock.location.path,name:0
-msgid "Operation"
-msgstr ""
-
-#. module: stock_location
-#: view:stock.location.path:0
-msgid "Location Paths"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,journal_id:0
-#: field:stock.location.path,journal_id:0
-msgid "Journal"
-msgstr ""
-
-#. module: stock_location
-#: field:product.pulled.flow,cancel_cascade:0
-#: field:stock.move,cancel_cascade:0
-msgid "Cancel Cascade"
-msgstr ""
-
-#. module: stock_location
-#: selection:product.pulled.flow,invoice_state:0
-#: selection:stock.location.path,invoice_state:0
-msgid "Invoiced"
-msgstr ""
diff --git a/addons/stock_location/procurement_pull.py b/addons/stock_location/procurement_pull.py
deleted file mode 100644
index 5b030b5befe..00000000000
--- a/addons/stock_location/procurement_pull.py
+++ /dev/null
@@ -1,123 +0,0 @@
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL ().
-#
-# 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 osv
-from openerp.tools.translate import _
-
-class procurement_order(osv.osv):
- _inherit = 'procurement.order'
- def check_buy(self, cr, uid, ids, context=None):
- for procurement in self.browse(cr, uid, ids, context=context):
- for line in procurement.product_id.flow_pull_ids:
- if line.location_id==procurement.location_id:
- return line.type_proc=='buy'
- return super(procurement_order, self).check_buy(cr, uid, ids)
-
- def check_produce(self, cr, uid, ids, context=None):
- for procurement in self.browse(cr, uid, ids, context=context):
- for line in procurement.product_id.flow_pull_ids:
- if line.location_id==procurement.location_id:
- return line.type_proc=='produce'
- return super(procurement_order, self).check_produce(cr, uid, ids)
-
- def check_move(self, cr, uid, ids, context=None):
- for procurement in self.browse(cr, uid, ids, context=context):
- for line in procurement.product_id.flow_pull_ids:
- if line.location_id==procurement.location_id:
- return (line.type_proc=='move') and (line.location_src_id)
- return False
-
- def action_move_create(self, cr, uid, ids, context=None):
- proc_obj = self.pool.get('procurement.order')
- move_obj = self.pool.get('stock.move')
- picking_obj=self.pool.get('stock.picking')
- for proc in proc_obj.browse(cr, uid, ids, context=context):
- line = None
- for line in proc.product_id.flow_pull_ids:
- if line.location_id == proc.location_id:
- break
- assert line, 'Line cannot be False if we are on this state of the workflow'
- origin = (proc.origin or proc.name or '').split(':')[0] +':'+line.name
- picking_id = picking_obj.create(cr, uid, {
- 'origin': origin,
- 'company_id': line.company_id and line.company_id.id or False,
- 'type': line.picking_type,
- 'stock_journal_id': line.journal_id and line.journal_id.id or False,
- 'move_type': 'one',
- 'partner_id': line.partner_address_id.id,
- 'note': _('Picking for pulled procurement coming from original location %s, pull rule %s, via original Procurement %s (#%d)') % (proc.location_id.name, line.name, proc.name, proc.id),
- 'invoice_state': line.invoice_state,
- })
- move_id = move_obj.create(cr, uid, {
- 'name': line.name,
- 'picking_id': picking_id,
- 'company_id': line.company_id and line.company_id.id or False,
- 'product_id': proc.product_id.id,
- 'date': proc.date_planned,
- 'product_qty': proc.product_qty,
- 'product_uom': proc.product_uom.id,
- 'product_uos_qty': (proc.product_uos and proc.product_uos_qty)\
- or proc.product_qty,
- 'product_uos': (proc.product_uos and proc.product_uos.id)\
- or proc.product_uom.id,
- 'partner_id': line.partner_address_id.id,
- 'location_id': line.location_src_id.id,
- 'location_dest_id': line.location_id.id,
- 'move_dest_id': proc.move_id and proc.move_id.id or False, # to verif, about history ?
- 'tracking_id': False,
- 'cancel_cascade': line.cancel_cascade,
- 'state': 'confirmed',
- 'note': _('Move for pulled procurement coming from original location %s, pull rule %s, via original Procurement %s (#%d)') % (proc.location_id.name, line.name, proc.name, proc.id),
- })
- if proc.move_id and proc.move_id.state in ('confirmed'):
- move_obj.write(cr,uid, [proc.move_id.id], {
- 'state':'waiting'
- }, context=context)
- proc_id = proc_obj.create(cr, uid, {
- 'name': line.name,
- 'origin': origin,
- 'note': _('Pulled procurement coming from original location %s, pull rule %s, via original Procurement %s (#%d)') % (proc.location_id.name, line.name, proc.name, proc.id),
- 'company_id': line.company_id and line.company_id.id or False,
- 'date_planned': proc.date_planned,
- 'product_id': proc.product_id.id,
- 'product_qty': proc.product_qty,
- 'product_uom': proc.product_uom.id,
- 'product_uos_qty': (proc.product_uos and proc.product_uos_qty)\
- or proc.product_qty,
- 'product_uos': (proc.product_uos and proc.product_uos.id)\
- or proc.product_uom.id,
- 'location_id': line.location_src_id.id,
- 'procure_method': line.procure_method,
- 'move_id': move_id,
- })
- self.pool.get('stock.picking').signal_button_confirm(cr, uid, [picking_id])
- self.signal_button_confirm(cr, uid, [proc_id])
- if proc.move_id:
- move_obj.write(cr, uid, [proc.move_id.id],
- {'location_id':proc.location_id.id})
- msg = _('Pulled from another location.')
- self.write(cr, uid, [proc.id], {'state':'running', 'message': msg})
- self.message_post(cr, uid, [proc.id], body=msg, context=context)
- # trigger direct processing (the new procurement shares the same planned date as the original one, which is already being processed)
- self.signal_button_check(cr, uid, [proc_id]) # TODO is it necessary to interleave the calls?
- return False
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_location/procurement_pull_workflow.xml b/addons/stock_location/procurement_pull_workflow.xml
deleted file mode 100644
index d45942ae5a6..00000000000
--- a/addons/stock_location/procurement_pull_workflow.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
- move
- function
- action_move_create()
-
-
-
-
-
- check_move()
-
-
-
-
-
-
-
diff --git a/addons/stock_location/security/ir.model.access.csv b/addons/stock_location/security/ir.model.access.csv
deleted file mode 100644
index ebee12cbeae..00000000000
--- a/addons/stock_location/security/ir.model.access.csv
+++ /dev/null
@@ -1,12 +0,0 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_product_pulled_flow_user,product_pulled_flow user,model_product_pulled_flow,stock.group_stock_user,1,0,0,0
-access_product_pulled_flow_manager,product_pulled_flow manager,model_product_pulled_flow,stock.group_stock_manager,1,1,1,1
-access_product_pulled_flow_salemanager,product_pulled_flow salemanager,model_product_pulled_flow,base.group_sale_manager,1,1,1,1
-access_product_pulled_flow_stock_manager,product_pulled_flow stock manager,model_product_pulled_flow,stock.group_stock_manager,1,1,1,1
-access_stock_location_path_user,stock location path user,model_stock_location_path,stock.group_stock_user,1,0,0,0
-access_stock_location_path_internal_user,stock location path internal user,model_stock_location_path,base.group_user,1,0,0,0
-access_stock_location_path_sale_manager,stock.location.path partner salemanager,model_stock_location_path,base.group_sale_manager,1,1,1,1
-access_stock_location_path_stock_user,stock.location.path stock user,model_stock_location_path,stock.group_stock_user,1,1,1,1
-access_stock_location_path,stock.location.path,model_stock_location_path,base.group_sale_salesman,1,0,0,0
-access_product_pulled_flow,product.pulled.flow,model_product_pulled_flow,base.group_sale_salesman,1,0,0,0
-access_product_pulled_flow_internal,product.pulled.flow internal,model_product_pulled_flow,base.group_user,1,0,0,0
diff --git a/addons/stock_location/security/stock_location_security.xml b/addons/stock_location/security/stock_location_security.xml
deleted file mode 100644
index 310c45da06c..00000000000
--- a/addons/stock_location/security/stock_location_security.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
- product_pulled_flow multi-company
-
-
- ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
-
-
- stock_location_path multi-company
-
-
- ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
-
-
-
diff --git a/addons/stock_location/stock_location.py b/addons/stock_location/stock_location.py
deleted file mode 100644
index e22ccf80f8f..00000000000
--- a/addons/stock_location/stock_location.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 fields,osv
-
-class stock_location_path(osv.osv):
- _name = "stock.location.path"
- _description = "Pushed Flows"
- _columns = {
- 'name': fields.char('Operation', size=64),
- 'company_id': fields.many2one('res.company', 'Company'),
- 'product_id' : fields.many2one('product.product', 'Products', ondelete='cascade', select=1),
- 'journal_id': fields.many2one('stock.journal','Journal'),
- 'location_from_id' : fields.many2one('stock.location', 'Source Location', ondelete='cascade', select=1, required=True),
- 'location_dest_id' : fields.many2one('stock.location', 'Destination Location', ondelete='cascade', select=1, required=True),
- 'delay': fields.integer('Delay (days)', help="Number of days to do this transition"),
- 'invoice_state': fields.selection([
- ("invoiced", "Invoiced"),
- ("2binvoiced", "To Be Invoiced"),
- ("none", "Not Applicable")], "Invoice Status",
- required=True,),
- 'picking_type': fields.selection([('out','Sending Goods'),('in','Getting Goods'),('internal','Internal')], 'Shipping Type', required=True, select=True, help="Depending on the company, choose whatever you want to receive or send products"),
- 'auto': fields.selection(
- [('auto','Automatic Move'), ('manual','Manual Operation'),('transparent','Automatic No Step Added')],
- 'Automatic Move',
- required=True, select=1,
- help="This is used to define paths the product has to follow within the location tree.\n" \
- "The 'Automatic Move' value will create a stock move after the current one that will be "\
- "validated automatically. With 'Manual Operation', the stock move has to be validated "\
- "by a worker. With 'Automatic No Step Added', the location is replaced in the original move."
- ),
- }
- _defaults = {
- 'auto': 'auto',
- 'delay': 1,
- 'invoice_state': 'none',
- 'picking_type': 'internal',
- }
-
-class product_pulled_flow(osv.osv):
- _name = 'product.pulled.flow'
- _description = "Pulled Flows"
- _columns = {
- 'name': fields.char('Name', size=64, required=True, help="This field will fill the packing Origin and the name of its moves"),
- 'cancel_cascade': fields.boolean('Cancel Cascade', help="Allow you to cancel moves related to the product pull flow"),
- 'location_id': fields.many2one('stock.location','Destination Location', required=True, help="Is the destination location that needs supplying"),
- 'location_src_id': fields.many2one('stock.location','Source Location', help="Location used by Destination Location to supply"),
- 'journal_id': fields.many2one('stock.journal','Journal'),
- 'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procure Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."),
- 'type_proc': fields.selection([('produce','Produce'),('buy','Buy'),('move','Move')], 'Type of Procurement', required=True),
- 'company_id': fields.many2one('res.company', 'Company', help="Is used to know to which company the pickings and moves belong."),
- 'partner_address_id': fields.many2one('res.partner', 'Partner Address'),
- 'picking_type': fields.selection([('out','Sending Goods'),('in','Getting Goods'),('internal','Internal')], 'Shipping Type', required=True, select=True, help="Depending on the company, choose whatever you want to receive or send products"),
- 'product_id':fields.many2one('product.product','Product'),
- 'invoice_state': fields.selection([
- ("invoiced", "Invoiced"),
- ("2binvoiced", "To Be Invoiced"),
- ("none", "Not Applicable")], "Invoice Status",
- required=True,),
- }
- _defaults = {
- 'cancel_cascade': False,
- 'procure_method': 'make_to_stock',
- 'type_proc': 'move',
- 'picking_type': 'out',
- 'invoice_state': 'none',
- 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'product.pulled.flow', context=c),
- }
-
-class product_product(osv.osv):
- _inherit = 'product.product'
- _columns = {
- 'flow_pull_ids': fields.one2many('product.pulled.flow', 'product_id', 'Pulled Flows'),
- 'path_ids': fields.one2many('stock.location.path', 'product_id',
- 'Pushed Flow',
- help="These rules set the right path of the product in the "\
- "whole location tree.")
- }
-
-class stock_move(osv.osv):
- _inherit = 'stock.move'
- _columns = {
- 'cancel_cascade': fields.boolean('Cancel Cascade', help='If checked, when this move is cancelled, cancel the linked move too')
- }
- def action_cancel(self, cr, uid, ids, context=None):
- for m in self.browse(cr, uid, ids, context=context):
- if m.cancel_cascade and m.move_dest_id:
- self.action_cancel(cr, uid, [m.move_dest_id.id], context=context)
- res = super(stock_move,self).action_cancel(cr,uid,ids,context)
- return res
-
- def _prepare_chained_picking(self, cr, uid, picking_name, picking, picking_type, moves_todo, context=None):
- res = super(stock_move, self)._prepare_chained_picking(cr, uid, picking_name, picking, picking_type, moves_todo, context=context)
- res.update({'invoice_state': moves_todo[0][1][6] or 'none'})
- return res
-
-class stock_location(osv.osv):
- _inherit = 'stock.location'
- def chained_location_get(self, cr, uid, location, partner=None, product=None, context=None):
- if product:
- for path in product.path_ids:
- if path.location_from_id.id == location.id:
- return path.location_dest_id, path.auto, path.delay, path.journal_id and path.journal_id.id or False, path.company_id and path.company_id.id or False, path.picking_type, path.invoice_state
- return super(stock_location, self).chained_location_get(cr, uid, location, partner, product, context)
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock_location/stock_location_demo_cpu1.xml b/addons/stock_location/stock_location_demo_cpu1.xml
deleted file mode 100644
index c756dac2566..00000000000
--- a/addons/stock_location/stock_location_demo_cpu1.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
- This product is configured with example of push/pull flows
-
-
- Quality Control
-
-
-
-
-
-
- internal
- none
- Quality Control
- manual
-
-
-
-
- transparent
- none
-
- Receptions to Quality Control
-
-
- in
-
-
-
-
- manual
- none
-
- Store in Shelf
-
-
- internal
-
-
-
-
-
-
-
- none
-
- move
-
- make_to_order
- in
- Receive from Warehouse
-
-
-
-
-
-
- move
- none
-
-
- make_to_stock
- out
- Deliver Shop
-
-
- 20.0
- 10.0
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/addons/stock_location/stock_location_demo_cpu3.yml b/addons/stock_location/stock_location_demo_cpu3.yml
deleted file mode 100644
index 8bb27c9be43..00000000000
--- a/addons/stock_location/stock_location_demo_cpu3.yml
+++ /dev/null
@@ -1,55 +0,0 @@
--
- !record {model: stock.journal, id: journal_pick}:
- name: Pick List
--
- !record {model: stock.journal, id: journal_pack}:
- name: Packing
--
- !record {model: stock.journal, id: journal_gate_a}:
- name: Delivery Gate A
--
- !record {model: stock.journal, id: journal_gate_b}:
- name: Delivery Gate B
--
- !record {model: stock.location, id: location_order}:
- name: Order Processing
- usage: internal
- location_id: stock.stock_location_company
--
- !record {model: stock.location, id: location_dispatch_zone}:
- name: Dispatch Zone
- usage: internal
- location_id: location_order
--
- !record {model: stock.location, id: location_gate_a}:
- name: Gate A
- usage: internal
- location_id: location_dispatch_zone
- chained_journal_id: journal_gate_a
- chained_location_type: customer
- chained_auto_packing: manual
- chained_picking_type: out
--
- !record {model: stock.location, id: location_pack_zone}:
- name: Pack Zone
- usage: internal
- location_id: location_order
- chained_journal_id: journal_pack
- chained_location_id: location_gate_a
- chained_location_type: fixed
- chained_auto_packing: manual
- chained_picking_type: internal
--
- !record {model: stock.location, id: location_gate_b}:
- name: Gate B
- usage: internal
- location_id: location_dispatch_zone
--
- !record {model: stock.location.path, id: push_pick}:
- name: Pick List
- product_id: product.product_product_10
- journal_id: journal_pick
- location_from_id: stock.stock_location_output
- location_dest_id: location_pack_zone
- picking_type: internal
- auto: transparent
diff --git a/addons/stock_location/stock_location_view.xml b/addons/stock_location/stock_location_view.xml
deleted file mode 100644
index 09a934a4b9e..00000000000
--- a/addons/stock_location/stock_location_view.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
-
-
-
- stock.location.path.tree
- stock.location.path
-
-
-
-
-
-
-
-
-
-
- stock.location.path.form
- stock.location.path
-
-
+ The Goal of the picking waves is to group operations that may
+ (needs to) be done together in order to increase their efficiency.
+ It may also be useful to assign jobs (one person = one wave) or
+ help the timing management of operations (tasks to be done at 1pm).
+
+
+
+
+
+
+ stock.picking.wave.inherit.form
+ stock.picking
+
+
+
+
+
+
+
+
+ stock.picking.wave.inherit.tree
+ stock.picking
+
+
+
+
+
+
+
+
+ stock.picking.wave.inherit.search
+ stock.picking
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/stock_picking_wave/wizard/__init__.py b/addons/stock_picking_wave/wizard/__init__.py
new file mode 100644
index 00000000000..2e4dda55a53
--- /dev/null
+++ b/addons/stock_picking_wave/wizard/__init__.py
@@ -0,0 +1 @@
+import picking_to_wave
\ No newline at end of file
diff --git a/addons/stock_picking_wave/wizard/picking_to_wave.py b/addons/stock_picking_wave/wizard/picking_to_wave.py
new file mode 100644
index 00000000000..03dffb8b9d6
--- /dev/null
+++ b/addons/stock_picking_wave/wizard/picking_to_wave.py
@@ -0,0 +1,34 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 fields, osv
+from openerp.tools.translate import _
+
+class stock_picking_to_wave(osv.osv_memory):
+ _name = 'stock.picking.to.wave'
+ _description = 'Add pickings to a picking wave'
+ _columns = {
+ 'wave_id': fields.many2one('stock.picking.wave', 'Picking Wave', required=True),
+ }
+
+ def attach_pickings(self, cr, uid, ids, context=None):
+ #use active_ids to add picking line to the selected wave
+ wave_id = self.browse(cr, uid, ids, context=context)[0].wave_id.id
+ picking_ids = context.get('active_ids', False)
+ return self.pool.get('stock.picking').write(cr, uid, picking_ids, {'wave_id': wave_id})
\ No newline at end of file
diff --git a/addons/stock_picking_wave/wizard/picking_to_wave_view.xml b/addons/stock_picking_wave/wizard/picking_to_wave_view.xml
new file mode 100644
index 00000000000..62f5b3d0095
--- /dev/null
+++ b/addons/stock_picking_wave/wizard/picking_to_wave_view.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ stock.picking.to.wave.form
+ stock.picking.to.wave
+
+
+
+
+
+
+
+
+
+
+
+ Add to Wave
+ stock.picking.to.wave
+ form
+ form
+
+ new
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addons/warning/__openerp__.py b/addons/warning/__openerp__.py
index e44b9624251..887e43b939c 100644
--- a/addons/warning/__openerp__.py
+++ b/addons/warning/__openerp__.py
@@ -32,7 +32,7 @@ Warning messages can be displayed for objects like sale order, purchase order,
picking and invoice. The message is triggered by the form's onchange event.
""",
'author': 'OpenERP SA',
- 'depends': ['base', 'sale', 'purchase'],
+ 'depends': ['base', 'sale_stock', 'purchase'],
'data': ['warning_view.xml'],
'demo': [],
'installable': True,
diff --git a/addons/warning/warning.py b/addons/warning/warning.py
index 539316482d2..45cc07b704f 100644
--- a/addons/warning/warning.py
+++ b/addons/warning/warning.py
@@ -173,10 +173,8 @@ class stock_picking(osv.osv):
return {'value': result.get('value',{}), 'warning':warning}
-# FIXME:(class stock_picking_in and stock_picking_out) this is a temporary workaround because of a framework bug (ref: lp:996816).
-# It should be removed as soon as the bug is fixed
-class stock_picking_in(osv.osv):
- _inherit = 'stock.picking.in'
+class stock_picking(osv.osv):
+ _inherit = 'stock.picking'
def onchange_partner_in(self, cr, uid, ids, partner_id=None, context=None):
if not partner_id:
@@ -202,32 +200,6 @@ class stock_picking_in(osv.osv):
return {'value': result.get('value',{}), 'warning':warning}
-class stock_picking_out(osv.osv):
- _inherit = 'stock.picking.out'
-
- def onchange_partner_in(self, cr, uid, ids, partner_id=None, context=None):
- if not partner_id:
- return {}
- partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
- warning = {}
- title = False
- message = False
- if partner.picking_warn != 'no-message':
- title = _("Warning for %s") % partner.name
- message = partner.picking_warn_msg
- warning = {
- 'title': title,
- 'message': message
- }
- if partner.picking_warn == 'block':
- return {'value': {'partner_id': False}, 'warning': warning}
-
- result = super(stock_picking_out, self).onchange_partner_in(cr, uid, ids, partner_id, context)
- if result.get('warning',False):
- warning['title'] = title and title +' & '+ result['warning']['title'] or result['warning']['title']
- warning['message'] = message and message + ' ' + result['warning']['message'] or result['warning']['message']
-
- return {'value': result.get('value',{}), 'warning':warning}
class product_product(osv.osv):
_inherit = 'product.product'
@@ -246,10 +218,10 @@ class product_product(osv.osv):
class sale_order_line(osv.osv):
_inherit = 'sale.order.line'
- def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,
+ def product_id_change_with_wh(self, cr, uid, ids, pricelist, product, qty=0,
uom=False, qty_uos=0, uos=False, name='', partner_id=False,
lang=False, update_tax=True, date_order=False, packaging=False,
- fiscal_position=False, flag=False, context=None):
+ fiscal_position=False, flag=False, warehouse_id=False, context=None):
warning = {}
if not product:
return {'value': {'th_weight' : 0, 'product_packaging': False,
@@ -268,9 +240,9 @@ class sale_order_line(osv.osv):
if product_info.sale_line_warn == 'block':
return {'value': {'product_id': False}, 'warning': warning}
- result = super(sale_order_line, self).product_id_change( cr, uid, ids, pricelist, product, qty,
+ result = super(sale_order_line, self).product_id_change_with_wh( cr, uid, ids, pricelist, product, qty,
uom, qty_uos, uos, name, partner_id,
- lang, update_tax, date_order, packaging, fiscal_position, flag, context=context)
+ lang, update_tax, date_order, packaging, fiscal_position, flag, warehouse_id=warehouse_id, context=context)
if result.get('warning',False):
warning['title'] = title and title +' & '+result['warning']['title'] or result['warning']['title']
@@ -283,7 +255,7 @@ class purchase_order_line(osv.osv):
_inherit = 'purchase.order.line'
def onchange_product_id(self,cr, uid, ids, pricelist, product, qty, uom,
partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
- name=False, price_unit=False, notes=False, context=None):
+ name=False, price_unit=False, state='draft', notes=False, context=None):
warning = {}
if not product:
return {'value': {'price_unit': price_unit or 0.0, 'name': name or '', 'notes': notes or '', 'product_uom' : uom or False}, 'domain':{'product_uom':[]}}
@@ -301,7 +273,7 @@ class purchase_order_line(osv.osv):
return {'value': {'product_id': False}, 'warning': warning}
result = super(purchase_order_line, self).onchange_product_id(cr, uid, ids, pricelist, product, qty, uom,
- partner_id, date_order, fiscal_position_id)
+ partner_id, date_order=date_order, fiscal_position_id=fiscal_position_id, date_planned=date_planned, name=name, price_unit=price_unit, state=state, context=context)
if result.get('warning',False):
warning['title'] = title and title +' & '+result['warning']['title'] or result['warning']['title']
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index 3320ad9a038..fcaa184d86e 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -57,17 +57,21 @@ def url_for(path_or_uri, lang=None):
return location.decode('utf-8')
-def is_multilang_url(path, langs=None):
+def is_multilang_url(local_url, langs=None):
if not langs:
langs = [lg[0] for lg in request.website.get_languages()]
- spath = path.split('/')
+ spath = local_url.split('/')
# if a language is already in the path, remove it
if spath[1] in langs:
spath.pop(1)
- path = '/'.join(spath)
+ local_url = '/'.join(spath)
try:
+ # Try to match an endpoint in werkzeug's routing table
+ url = local_url.split('?')
+ path = url[0]
+ query_string = url[1] if len(url) > 1 else None
router = request.httprequest.app.get_db_router(request.db).bind('')
- func = router.match(path)[0]
+ func = router.match(path, query_args=query_string)[0]
return func.routing.get('multilang', False)
except Exception:
return False
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index 8d46a09f2fb..0b99d7a892c 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -83,6 +83,12 @@
and main_object.website_meta_keywords or website_meta_keywords"/>
+
+
+
+
+
+
@@ -171,10 +177,9 @@
their performance.
-