-
+
diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py
index e1c17cfacd5..f87df6200d6 100644
--- a/addons/analytic/analytic.py
+++ b/addons/analytic/analytic.py
@@ -206,7 +206,7 @@ class account_analytic_line(osv.osv):
'date': fields.date('Date', required=True, select=1),
'amount': fields.float('Amount', required=True, help='Calculated by multiplying the quantity and the price given in the Product\'s cost price. Always expressed in the company main currency.', digits_compute=dp.get_precision('Account')),
'unit_amount': fields.float('Quantity', help='Specifies the amount of quantity to count.'),
- 'account_id': fields.many2one('account.analytic.account', 'Analytic Account', required=True, ondelete='cascade', select=True),
+ 'account_id': fields.many2one('account.analytic.account', 'Analytic Account', required=True, ondelete='cascade', select=True, domain=[('type','<>','view')]),
'user_id': fields.many2one('res.users', 'User'),
'company_id': fields.related('account_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
diff --git a/addons/base_vat/base_vat.py b/addons/base_vat/base_vat.py
index e7c4a70469f..f84309012cd 100644
--- a/addons/base_vat/base_vat.py
+++ b/addons/base_vat/base_vat.py
@@ -1028,7 +1028,7 @@ class res_partner(osv.osv):
if len(vat) not in(9, 10):
return False
- if int(vat[0:2]) == 0 and len(vat) == 10:
+ if int(vat[0:2]) in (0, 10, 20) and len(vat) == 10:
return True
if len(vat) == 10:
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index 4a8b9c089fc..8d6d1b5b9b5 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -536,7 +536,7 @@ class crm_case_section(osv.osv):
'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by OpenERP about cases in this sales team"),
'parent_id': fields.many2one('crm.case.section', 'Parent Team'),
'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Child Teams'),
- 'resource_calendar_id': fields.many2one('resource.calendar', "Resource's Calendar"),
+ 'resource_calendar_id': fields.many2one('resource.calendar', "Working Time"),
'note': fields.text('Description'),
'working_hours': fields.float('Working Hours', digits=(16,2 )),
'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'),
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index 7aefcc3fb60..c2222bf162e 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -38,7 +38,7 @@ CRM_LEAD_PENDING_STATES = (
class crm_lead(crm_case, osv.osv):
""" CRM Lead Case """
_name = "crm.lead"
- _description = "Lead"
+ _description = "Lead/Opportunity"
_order = "date_action, priority, id desc"
_inherit = ['mailgate.thread','res.partner.address']
def _compute_day(self, cr, uid, ids, fields, args, context=None):
diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml
index ce3235772ee..b903a25b759 100644
--- a/addons/delivery/delivery_view.xml
+++ b/addons/delivery/delivery_view.xml
@@ -133,7 +133,7 @@
-
+
diff --git a/addons/delivery/sale.py b/addons/delivery/sale.py
index ee9295eb5d4..8589ee88201 100644
--- a/addons/delivery/sale.py
+++ b/addons/delivery/sale.py
@@ -26,7 +26,7 @@ from osv import fields,osv
class sale_order(osv.osv):
_inherit = 'sale.order'
_columns = {
- 'carrier_id':fields.many2one("delivery.carrier","Delivery method", help="Complete this field if you plan to invoice the shipping based on picking."),
+ 'carrier_id':fields.many2one("delivery.carrier", "Delivery Method", help="Complete this field if you plan to invoice the shipping based on picking."),
'id': fields.integer('ID', readonly=True,invisible=True),
}
diff --git a/addons/hr/hr.py b/addons/hr/hr.py
index 8a53ddad805..7c400ecf40e 100644
--- a/addons/hr/hr.py
+++ b/addons/hr/hr.py
@@ -149,8 +149,8 @@ class hr_employee(osv.osv):
'address_home_id': fields.many2one('res.partner.address', 'Home Address'),
'partner_id': fields.related('address_home_id', 'partner_id', type='many2one', relation='res.partner', readonly=True, help="Partner that is related to the current employee. Accounting transaction will be written on this partner belongs to employee."),
'bank_account_id':fields.many2one('res.partner.bank', 'Bank Account', domain="[('partner_id','=',partner_id)]", help="Employee bank salary account"),
- 'work_phone': fields.related('address_id', 'phone', type='char', size=32, string='Work Phone', readonly=True),
- 'work_email': fields.related('address_id', 'email', type='char', size=240, string='Work E-mail'),
+ 'work_phone': fields.char('Work Phone', size=32, readonly=False),
+ 'work_email': fields.char('Work E-mail', size=240),
'work_location': fields.char('Office Location', size=32),
'notes': fields.text('Notes'),
'parent_id': fields.related('department_id', 'manager_id', relation='hr.employee', string='Manager', type='many2one', store=True, select=True, readonly=True, help="It is linked with manager of Department"),
@@ -160,9 +160,15 @@ class hr_employee(osv.osv):
'coach_id': fields.many2one('hr.employee', 'Coach'),
'job_id': fields.many2one('hr.job', 'Job'),
'photo': fields.binary('Photo'),
- 'passport_id':fields.char('Passport', size=64)
+ 'passport_id':fields.char('Passport No', size=64)
}
+ def onchange_address_id(self, cr, uid, ids, address, context=None):
+ if address:
+ address = self.pool.get('res.partner.address').browse(cr, uid, address, context=context)
+ return {'value': {'work_email': address.email, 'work_phone': address.phone}}
+ return {'value': {}}
+
def onchange_company(self, cr, uid, ids, company, context=None):
address_id = False
if company:
diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml
index bc01d38d1a4..076c207f850 100644
--- a/addons/hr/hr_view.xml
+++ b/addons/hr/hr_view.xml
@@ -56,7 +56,7 @@
-
+
@@ -340,7 +340,7 @@
-
+
diff --git a/addons/hr_evaluation/hr_evaluation.py b/addons/hr_evaluation/hr_evaluation.py
index 58631761fa9..d00f69bc0de 100644
--- a/addons/hr_evaluation/hr_evaluation.py
+++ b/addons/hr_evaluation/hr_evaluation.py
@@ -34,8 +34,8 @@ class hr_evaluation_plan(osv.osv):
'name': fields.char("Evaluation Plan", size=64, required=True),
'company_id': fields.many2one('res.company', 'Company', required=True),
'phase_ids': fields.one2many('hr_evaluation.plan.phase', 'plan_id', 'Evaluation Phases'),
- 'month_first': fields.integer('Next Evaluation After'),
- 'month_next': fields.integer('After the Date of Start'),
+ 'month_first': fields.integer('First Evaluation in (months)', help="This number of months will be used to schedule the first evaluation date of the employee when selecting an evaluation plan. "),
+ 'month_next': fields.integer('Periodicity of Evaluations (months)', help="The number of month that depicts the delay between each evaluation of this plan (after the first one)."),
'active': fields.boolean('Active')
}
_defaults = {
@@ -101,7 +101,7 @@ class hr_employee(osv.osv):
_inherit="hr.employee"
_columns = {
'evaluation_plan_id': fields.many2one('hr_evaluation.plan', 'Evaluation Plan'),
- 'evaluation_date': fields.date('Next Evaluation', help="Date of the next evaluation"),
+ 'evaluation_date': fields.date('Next Evaluation Date', help="The date of the next evaluation is computed by the evaluation plan's dates (first evaluation + periodicity)."),
}
def run_employee_evaluation(self, cr, uid, automatic=False, use_new_cursor=False, context=None):
diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py
index acec2f3a240..bc9c1cc36e4 100644
--- a/addons/hr_expense/hr_expense.py
+++ b/addons/hr_expense/hr_expense.py
@@ -154,23 +154,23 @@ class hr_expense_expense(osv.osv):
'invoice_line_tax_id': tax_id and [(6, 0, tax_id)] or False,
'account_analytic_id': l.analytic_account.id,
}))
- if not exp.employee_id.address_id:
- raise osv.except_osv(_('Error !'), _('The employee must have a working address'))
- acc = exp.employee_id.address_id.partner_id.property_account_payable.id
- payment_term_id = exp.employee_id.address_id.partner_id.property_payment_term.id
+ if not exp.employee_id.address_home_id:
+ raise osv.except_osv(_('Error !'), _('The employee must have a Home address'))
+ acc = exp.employee_id.address_home_id.partner_id.property_account_payable.id
+ payment_term_id = exp.employee_id.address_home_id.partner_id.property_payment_term.id
inv = {
'name': exp.name,
'reference': sequence_obj.get(cr, uid, 'hr.expense.invoice'),
'account_id': acc,
'type': 'in_invoice',
- 'partner_id': exp.employee_id.address_id.partner_id.id,
- 'address_invoice_id': exp.employee_id.address_id.id,
- 'address_contact_id': exp.employee_id.address_id.id,
+ 'partner_id': exp.employee_id.address_home_id.partner_id.id,
+ 'address_invoice_id': exp.employee_id.address_home_id.id,
+ 'address_contact_id': exp.employee_id.address_home_id.id,
'origin': exp.name,
'invoice_line': lines,
'currency_id': exp.currency_id.id,
'payment_term': payment_term_id,
- 'fiscal_position': exp.employee_id.address_id.partner_id.property_account_position.id
+ 'fiscal_position': exp.employee_id.address_home_id.partner_id.property_account_position.id
}
if payment_term_id:
to_update = invoice_obj.onchange_payment_term_date_invoice(cr, uid, [], payment_term_id, None)
@@ -240,13 +240,19 @@ class hr_expense_line(osv.osv):
_order = "sequence, date_value desc"
def onchange_product_id(self, cr, uid, ids, product_id, uom_id, employee_id, context=None):
+ if context is None:
+ ctx = {}
+ else:
+ # we only want to update it locally
+ ctx = context.copy()
+
res = {}
if product_id:
product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
res['name'] = product.name
# Compute based on pricetype of employee company
- context['currency_id'] = self.pool.get('hr.employee').browse(cr, uid, employee_id, context=context).user_id.company_id.currency_id.id
- amount_unit = product.price_get('standard_price', context)[product.id]
+ ctx['currency_id'] = self.pool.get('hr.employee').browse(cr, uid, employee_id, context=context).user_id.company_id.currency_id.id
+ amount_unit = product.price_get('standard_price', ctx)[product.id]
res['unit_amount'] = amount_unit
if not uom_id:
res['uom_id'] = product.uom_id.id
diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py
index 314e053ac12..8fe5da805b4 100644
--- a/addons/hr_holidays/hr_holidays.py
+++ b/addons/hr_holidays/hr_holidays.py
@@ -230,6 +230,7 @@ class hr_holidays(osv.osv):
list_ids = [ lr.id for lr in record.linked_request_ids]
self.holidays_cancel(cr, uid, list_ids)
self.unlink(cr, uid, list_ids)
+ return True
def _check_date(self, cr, uid, ids, context=None):
for rec in self.read(cr, uid, ids, ['number_of_days_temp', 'date_from','date_to', 'type']):
@@ -289,17 +290,23 @@ class hr_holidays(osv.osv):
return True
def holidays_validate2(self, cr, uid, ids, *args):
+ obj_emp = self.pool.get('hr.employee')
+ wf_service = netsvc.LocalService("workflow")
vals = {'state':'validate1'}
self.check_holidays(cr, uid, ids)
- ids2 = self.pool.get('hr.employee').search(cr, uid, [('user_id', '=', uid)])
+ ids2 = obj_emp.search(cr, uid, [('user_id', '=', uid)])
if ids2:
vals['manager_id'] = ids2[0]
else:
raise osv.except_osv(_('Warning !'),_('No user related to the selected employee.'))
+ # Second Time Validate all the leave requests of the category
+ for leave_id in self._get_category_leave_ids(cr, uid, ids):
+ wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'second_validate', cr)
return self.write(cr, uid, ids, vals)
def holidays_validate(self, cr, uid, ids, *args):
obj_emp = self.pool.get('hr.employee')
+ wf_service = netsvc.LocalService("workflow")
data_holiday = self.browse(cr, uid, ids)
self.check_holidays(cr, uid, ids)
vals = {'state':'validate'}
@@ -324,19 +331,28 @@ class hr_holidays(osv.osv):
'holiday_id': record.id
}
self._create_resource_leave(cr, uid, vals)
- elif record.holiday_type == 'category' and record.type == 'remove':
+ elif record.holiday_type == 'category':
+ # Create leave/allocation request for employees in the category
emp_ids = obj_emp.search(cr, uid, [('category_ids', '=', record.category_id.id)])
+ leave_ids = []
for emp in obj_emp.browse(cr, uid, emp_ids):
vals = {
- 'name': record.name,
- 'date_from': record.date_from,
- 'date_to': record.date_to,
- 'calendar_id': emp.calendar_id.id,
- 'company_id': emp.company_id.id,
- 'resource_id': emp.resource_id.id,
- 'holiday_id':record.id
- }
- self._create_resource_leave(cr, uid, vals)
+ 'name': record.name,
+ 'type': record.type,
+ 'holiday_type': 'employee',
+ 'holiday_status_id': record.holiday_status_id.id,
+ 'date_from': record.date_from,
+ 'date_to': record.date_to,
+ 'notes': record.notes,
+ 'number_of_days_temp': record.number_of_days_temp,
+ 'parent_id': record.id,
+ 'employee_id': emp.id
+ }
+ leave_ids.append(self.create(cr, uid, vals, context=None))
+ # Confirm and validate all the leave requests of the category
+ for leave_id in leave_ids:
+ wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'confirm', cr)
+ wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'validate', cr)
return True
def holidays_confirm(self, cr, uid, ids, *args):
@@ -362,14 +378,19 @@ class hr_holidays(osv.osv):
if record.holiday_type == 'employee' and record.employee_id:
user_id = record.employee_id.user_id and record.employee_id.user_id.id or uid
- self.write(cr, uid, [record.id], {'state':'confirm', 'number_of_days': nb, 'user_id': user_id })
+ self.write(cr, uid, [record.id], {'state':'confirm', 'number_of_days': nb, 'user_id': user_id})
return True
def holidays_refuse(self, cr, uid, ids, *args):
+ obj_emp = self.pool.get('hr.employee')
+ wf_service = netsvc.LocalService("workflow")
vals = {'state': 'refuse'}
- ids2 = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
+ ids2 = obj_emp.search(cr, uid, [('user_id','=', uid)])
if ids2:
vals['manager_id'] = ids2[0]
+ # Refuse all the leave requests of the category
+ for leave_id in self._get_category_leave_ids(cr, uid, ids):
+ wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'refuse', cr)
self.write(cr, uid, ids, vals)
return True
@@ -380,6 +401,9 @@ class hr_holidays(osv.osv):
return True
def holidays_draft(self, cr, uid, ids, *args):
+ wf_service = netsvc.LocalService("workflow")
+ for leave_id in self._get_category_leave_ids(cr, uid, ids):
+ wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'draft', cr)
return self.write(cr, uid, ids, {'state': 'draft'})
def check_holidays(self, cr, uid, ids):
diff --git a/addons/hr_payroll/__openerp__.py b/addons/hr_payroll/__openerp__.py
index 7d66f25b445..0725e34f0f9 100644
--- a/addons/hr_payroll/__openerp__.py
+++ b/addons/hr_payroll/__openerp__.py
@@ -38,7 +38,8 @@
'depends': [
'hr',
'hr_contract',
- 'hr_holidays'
+ 'hr_holidays',
+ 'decimal_precision',
],
'init_xml': [
],
diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py
index 2319b3a352c..bd3ffad3065 100644
--- a/addons/hr_payroll/hr_payroll.py
+++ b/addons/hr_payroll/hr_payroll.py
@@ -312,7 +312,7 @@ class hr_contract(osv.osv):
_description = 'Employee Contract'
_columns = {
'permit_no': fields.char('Work Permit No', size=256, required=False, readonly=False),
- 'passport_id': fields.many2one('hr.passport', 'Passport', required=False),
+ 'passport_id': fields.many2one('hr.passport', 'Passport No', required=False),
'visa_no': fields.char('Visa No', size=64, required=False, readonly=False),
'visa_expire': fields.date('Visa Expire Date'),
'struct_id': fields.many2one('hr.payroll.structure', 'Salary Structure'),
@@ -1430,7 +1430,7 @@ class hr_employee(osv.osv):
return vals
_columns = {
- 'passport_id':fields.many2one('hr.passport', 'Passport', required=False, domain="[('employee_id','=',active_id), ('address_id','=',address_home_id)]", help="Employee Passport Information"),
+ 'passport_id':fields.many2one('hr.passport', 'Passport No', required=False, domain="[('employee_id','=',active_id), ('address_id','=',address_home_id)]", help="Employee Passport Information"),
'line_ids':fields.one2many('hr.payslip.line', 'employee_id', 'Salary Structure', required=False),
'slip_ids':fields.one2many('hr.payslip', 'employee_id', 'Payslips', required=False, readonly=True),
'otherid': fields.char('Other Id', size=64),
diff --git a/addons/hr_payroll/hr_payroll_view.xml b/addons/hr_payroll/hr_payroll_view.xml
index 1c792c5ba6f..8ecd991ce8d 100644
--- a/addons/hr_payroll/hr_payroll_view.xml
+++ b/addons/hr_payroll/hr_payroll_view.xml
@@ -87,18 +87,6 @@
-
- res.partner.bank.form
- res.partner.bank
- form
-
-
-
-
-
-
-
-
hr.hr.employee.view.form2hr.employee
@@ -251,9 +239,9 @@
-
+
-
+
hr.contract.view.form
@@ -407,12 +395,12 @@
-
+
-
+
@@ -1088,7 +1076,7 @@
-
+
general
-
- 75.0
- 30.0
-
-
- Service on Timesheet
-
- service
-
-
-
-
-
-
-
-
diff --git a/addons/hr_timesheet/hr_timesheet_demo.xml b/addons/hr_timesheet/hr_timesheet_demo.xml
index e7ba5c91342..caaaef12f01 100644
--- a/addons/hr_timesheet/hr_timesheet_demo.xml
+++ b/addons/hr_timesheet/hr_timesheet_demo.xml
@@ -2,6 +2,21 @@
+
+ 75.0
+ 30.0
+
+
+ Service on Timesheet
+
+ service
+
+
+
+
+
+
+
diff --git a/addons/hr_timesheet_invoice/wizard/hr_timesheet_final_invoice_create.py b/addons/hr_timesheet_invoice/wizard/hr_timesheet_final_invoice_create.py
index 4878a6634b2..8f1ef4ef261 100644
--- a/addons/hr_timesheet_invoice/wizard/hr_timesheet_final_invoice_create.py
+++ b/addons/hr_timesheet_invoice/wizard/hr_timesheet_final_invoice_create.py
@@ -23,6 +23,7 @@ import time
from osv import osv, fields
from tools.translate import _
+
#
# Create an final invoice based on selected timesheet lines
#
@@ -79,7 +80,7 @@ class final_invoice_create(osv.osv_memory):
date_due = pterm_list[-1]
curr_invoice = {
- 'name': time.strftime('%D')+' - '+account.name,
+ 'name': time.strftime('%d/%m/%Y')+' - '+account.name,
'partner_id': account.partner_id.id,
'address_contact_id': res_partner_obj.address_get(cr, uid, [account.partner_id.id], adr_pref=['contact'])['contact'],
'address_invoice_id': res_partner_obj.address_get(cr, uid, [account.partner_id.id], adr_pref=['invoice'])['invoice'],
diff --git a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py
index 075a68907ae..f11f1331415 100644
--- a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py
+++ b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py
@@ -92,7 +92,7 @@ class hr_timesheet_invoice_create(osv.osv_memory):
date_due = pterm_list[-1]
curr_invoice = {
- 'name': time.strftime('%D')+' - '+account.name,
+ 'name': time.strftime('%d/%m/%Y')+' - '+account.name,
'partner_id': account.partner_id.id,
'address_contact_id': res_partner_obj.address_get(cr, uid,
[account.partner_id.id], adr_pref=['contact'])['contact'],
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
index e3ddd4fed6a..6c7c5618311 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
@@ -273,7 +273,7 @@ class hr_timesheet_sheet(osv.osv):
'draft': [('readonly', False)],
'new': [('readonly', False)]}
),
- 'attendances_ids' : one2many_mod2('hr.attendance', 'sheet_id', 'Attendances', readonly=True, states={'draft':[('readonly',False)],'new':[('readonly',False)]}),
+ 'attendances_ids' : one2many_mod2('hr.attendance', 'sheet_id', 'Attendances', readonly=True,),
'state' : fields.selection([
('new', 'New'),
('draft','Draft'),
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
index 08fda12c073..a65a7578800 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
@@ -132,8 +132,8 @@
-
-
+
+
diff --git a/addons/l10n_be/account_pcmn_belgium.xml b/addons/l10n_be/account_pcmn_belgium.xml
index c321e69f4a5..57c45a0cf93 100644
--- a/addons/l10n_be/account_pcmn_belgium.xml
+++ b/addons/l10n_be/account_pcmn_belgium.xml
@@ -2913,17 +2913,25 @@
+
+ Clients
+ 4000
+ receivable
+
+
+
+ Rabais, remises, ristournes à accorder et autres notes de crédit à établir4007
- receivable
+ otherCréances résultant de livraisons de biens4008
- receivable
+ other
@@ -2934,26 +2942,24 @@
-
+ Effets à recevoir4010
- receivable
+ other
-
-
Effets à l'encaissement4013
- receivable
+ otherEffets à l'escompte4015
- receivable
+ other
@@ -2967,21 +2973,21 @@
Entreprises liées4020
- receivable
+ otherAutres entreprises avec lesquelles il existe un lien de participation4021
- receivable
+ otherAdministrateurs et gérants d'entreprise4022
- receivable
+ other
@@ -2995,63 +3001,63 @@
Entreprises liées4030
- receivable
+ otherAutres entreprises avec lesquelles il existe un lien de participation4031
- receivable
+ otherAdministrateurs et gérants de l'entreprise4032
- receivable
+ otherProduits à recevoir404
- receivable
+ otherClients : retenues sur garanties405
- receivable
+ otherAcomptes versés406
- receivable
+ otherCréances douteuses407
- receivable
+ otherCompensation clients408
- receivable
+ otherRéductions de valeur actées409
- receivable
+ other
@@ -3072,14 +3078,14 @@
Appels de fonds4100
- receivable
+ otherActionnaires défaillants4101
- receivable
+ other
@@ -3128,21 +3134,21 @@
T.V.A. déductible4111
- receivable
+ otherCompte courant administration T.V.A.4112
- receivable
+ otherTaxe d'égalisation due4118
- receivable
+ other
@@ -3156,28 +3162,28 @@
à 4124 Impôts belges sur le résultat4120
- receivable
+ otherà 4127 Autres impôts belges4125
- receivable
+ otherImpôts étrangers4128
- receivable
+ otherProduits à recevoir414
- receivable
+ other
@@ -3191,42 +3197,42 @@
Associés4160
- receivable
+ otherAvances et prêts au personnel4161
- receivable
+ otherCompte courant des associés en S.P.R.L.4162
- receivable
+ otherCompte courant des administrateurs et gérants4163
- receivable
+ otherCréances sur sociétés apparentées4164
- receivable
+ otherEmballages et matériel à rendre4166
- receivable
+ other
@@ -3240,42 +3246,42 @@
Subsides à recevoir41670
- receivable
+ otherAutres créances41671
- receivable
+ otherRabais, ristournes, remises à obtenir et autres avoirs non encore reçus4168
- receivable
+ otherCréances douteuses417
- receivable
+ otherCautionnements versés en numéraires418
- receivable
+ otherRéductions de valeur actées419
- receivable
+ other
@@ -3296,14 +3302,14 @@
Convertibles4200
- payable
+ otherNon convertibles4201
- payable
+ other
@@ -3317,14 +3323,14 @@
Convertibles4210
- payable
+ otherNon convertibles4211
- payable
+ other
@@ -3338,14 +3344,14 @@
Financement de biens immobiliers4220
- payable
+ otherFinancement de biens mobiliers4221
- payable
+ other
@@ -3359,28 +3365,28 @@
Dettes en compte4230
- payable
+ otherPromesses4231
- payable
+ otherCrédits d'acceptation4232
- payable
+ otherAutres emprunts424
- payable
+ other
@@ -3394,21 +3400,21 @@
Fournisseurs4250
- payable
+ otherEffets à payer4251
- payable
+ otherCautionnements reçus en numéraires426
- payable
+ other
@@ -3422,28 +3428,28 @@
Entreprises liées4290
- payable
+ otherEntreprises avec lesquelles il existe un lien de participation4291
- payable
+ otherAdministrateurs, gérants, associés4292
- payable
+ otherAutres dettes4299
- payable
+ other
@@ -3457,35 +3463,35 @@
Etablissements de crédit. Emprunts en compte à terme fixe430
- payable
+ otherEtablissements de crédit. Promesses431
- payable
+ otherEtablissements de crédit. Crédits d'acceptation432
- payable
+ otherEtablissements de crédit. Dettes en compte courant433
- payable
+ otherAutres emprunts439
- payable
+ other
@@ -3521,7 +3527,7 @@
Entreprises avec lesquelles il existe un lien de participation44001
- payable
+ other
@@ -3535,35 +3541,35 @@
Fournisseurs belges44010
- payable
+ otherFournisseurs CEE44011
- payable
+ otherFournisseurs importation44012
- payable
+ otherDettes envers les coparticipants4402
- payable
+ otherFournisseurs - retenues de garanties4403
- payable
+ other
@@ -3584,14 +3590,14 @@
Entreprises liées44100
- payable
+ otherEntreprises avec lesquelles il existe un lien de participation44101
- payable
+ other
@@ -3605,42 +3611,42 @@
Fournisseurs belges44110
- payable
+ otherFournisseurs CEE44111
- payable
+ otherFournisseurs importation44112
- payable
+ otherFactures à recevoir444
- payable
+ otherAcomptes reçus446
- payable
+ otherCompensations fournisseurs448
- payable
+ other
@@ -3661,21 +3667,21 @@
à 4504 Impôts sur le résultat4501
- payable
+ otherà 4507 Autres impôts en Belgique4505
- payable
+ otherImpôts à l'étranger4508
- payable
+ other
@@ -3724,21 +3730,21 @@
T.V.A. déductible4511
- payable
+ otherCompte courant administration T.V.A.4512
- payable
+ otherTaxe d'égalisation due4518
- payable
+ other
@@ -3752,7 +3758,7 @@
Autres impôts sur le résultat4520
- payable
+ other
@@ -3766,35 +3772,35 @@
Précompte immobilier45250
- payable
+ otherImpôts communaux à payer45251
- payable
+ otherImpôts provinciaux à payer45252
- payable
+ otherAutres impôts et taxes à payer45253
- payable
+ otherImpôts et taxes à l'étranger4528
- payable
+ other
@@ -3808,35 +3814,35 @@
Précompte professionnel retenu sur rémunérations4530
- payable
+ otherPrécompte professionnel retenu sur tantièmes4531
- payable
+ otherPrécompte mobilier retenu sur dividendes attribués4532
- payable
+ otherPrécompte mobilier retenu sur intérêts payés4533
- payable
+ otherAutres précomptes retenus4538
- payable
+ other
@@ -3850,35 +3856,35 @@
Arriérés4540
- payable
+ other1er trimestre4541
- payable
+ other2ème trimestre4542
- payable
+ other3ème trimestre4543
- payable
+ other4ème trimestre4544
- payable
+ other
@@ -3892,28 +3898,28 @@
Administrateurs, gérants et commissaires4550
- payable
+ otherDirection4551
- payable
+ otherEmployés4552
- payable
+ otherOuvriers4553
- payable
+ other
@@ -3927,21 +3933,21 @@
Direction4560
- payable
+ otherEmployés4561
- payable
+ otherOuvriers4562
- payable
+ other
@@ -3955,21 +3961,21 @@
Provision pour gratifications de fin d'année4590
- payable
+ otherDéparts de personnel4591
- payable
+ otherOppositions sur rémunérations4592
- payable
+ other
@@ -3983,49 +3989,49 @@
Assurance loi45930
- payable
+ otherAssurance salaire garanti 45931
- payable
+ otherAssurance groupe 45932
- payable
+ otherAssurances individuelles45933
- payable
+ otherCaisse d'assurances sociales pour travailleurs indépendants4594
- payable
+ otherDettes et provisions sociales diverses4597
- payable
+ otherACOMPTES RECUS SUR COMMANDES46
- payable
+ other
@@ -4039,28 +4045,28 @@
Dividendes et tantièmes d'exercices antérieurs470
- payable
+ otherDividendes de l'exercice471
- payable
+ otherTantièmes de l'exercice472
- payable
+ otherAutres allocataires473
- payable
+ other
@@ -4074,49 +4080,49 @@
Obligations et coupons échus480
- payable
+ otherActionnaires - capital à rembourser481
- payable
+ otherParticipation du personnel à payer482
- payable
+ otherAcomptes reçus d'autres tiers à moins d'un an483
- payable
+ otherEmballages et matériel consignés486
- payable
+ otherCautionnements reçus en numéraires488
- payable
+ otherAutres dettes diverses489
- payable
+ other
@@ -4130,7 +4136,7 @@
Charges à reporter490
- payable
+ other
@@ -4151,21 +4157,21 @@
Ristournes, rabais à obtenir49100
- payable
+ otherCommissions à obtenir49101
- payable
+ otherAutres produits d'exploitation49102
- payable
+ other
@@ -4179,21 +4185,21 @@
Intérêts courus et non échus sur prêts et débits49110
- payable
+ otherAutres produits financiers49111
- payable
+ otherCharges à imputer492
- payable
+ other
@@ -4207,14 +4213,14 @@
Produits d'exploitation à reporter4930
- payable
+ otherProduits financiers à reporter4931
- payable
+ other
@@ -4228,21 +4234,21 @@
Compte d'attente4990
- payable
+ otherCompte de répartition périodique des charges4991
- payable
+ otherTransferts d'exercice4999
- payable
+ other
diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py
index 041515da436..91af27db4ad 100644
--- a/addons/marketing_campaign/marketing_campaign.py
+++ b/addons/marketing_campaign/marketing_campaign.py
@@ -87,7 +87,7 @@ class marketing_campaign(osv.osv):
_columns = {
'name': fields.char('Name', size=64, required=True),
'object_id': fields.many2one('ir.model', 'Resource', required=True,
- help="Choose the model on which you want \
+ help="Choose the resource on which you want \
this campaign to be run"),
'partner_field_id': fields.many2one('ir.model.fields', 'Partner Field',
domain="[('model_id', '=', object_id), ('ttype', '=', 'many2one'), ('relation', '=', 'res.partner')]",
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index 3909540c710..e86434b93fa 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -67,7 +67,7 @@ class mrp_workcenter(osv.osv):
if product_id:
cost = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
- value = {'costs_hour' :cost.standard_price}
+ value = {'costs_hour': cost.standard_price}
return {'value': value}
mrp_workcenter()
@@ -111,8 +111,8 @@ class mrp_routing_workcenter(osv.osv):
'name': fields.char('Name', size=64, required=True),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of routing work centers."),
'cycle_nbr': fields.float('Number of Cycles', required=True,
- help="Number of iterations this work center has to do in the specified operation of the routing."),
- 'hour_nbr': fields.float('Number of Hours', required=True, help="Time in hours for this work center to achieve the operation of the specified routing."),
+ help="Number of iterations this work Center has to do in the specified operation of the routing."),
+ 'hour_nbr': fields.float('Number of Hours', required=True, help="Time in hours for this work Center to achieve the operation of the specified routing."),
'routing_id': fields.many2one('mrp.routing', 'Parent Routing', select=True, ondelete='cascade',
help="Routing indicates all the workcenters used, for how long and/or cycles." \
"If Routing is indicated then,the third tab of a production order (workcenters) will be automatically pre-completed."),
@@ -664,7 +664,7 @@ class mrp_production(osv.osv):
"""
stock_mov_obj = self.pool.get('stock.move')
production = self.browse(cr, uid, production_id, context=context)
-
+
final_product_todo = []
produced_qty = 0
diff --git a/addons/point_of_sale/i18n/ar.po b/addons/point_of_sale/i18n/ar.po
index 390186e3d10..157674fdb10 100644
--- a/addons/point_of_sale/i18n/ar.po
+++ b/addons/point_of_sale/i18n/ar.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/bg.po b/addons/point_of_sale/i18n/bg.po
index 04976878fa6..0ad2362f409 100644
--- a/addons/point_of_sale/i18n/bg.po
+++ b/addons/point_of_sale/i18n/bg.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/bs.po b/addons/point_of_sale/i18n/bs.po
index 2bef268aaef..103699ee04e 100644
--- a/addons/point_of_sale/i18n/bs.po
+++ b/addons/point_of_sale/i18n/bs.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/ca.po b/addons/point_of_sale/i18n/ca.po
index 0b677dcd681..bd4fbb1032a 100644
--- a/addons/point_of_sale/i18n/ca.po
+++ b/addons/point_of_sale/i18n/ca.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/cs.po b/addons/point_of_sale/i18n/cs.po
index 2d426f9cba5..e5b66d3aaa7 100644
--- a/addons/point_of_sale/i18n/cs.po
+++ b/addons/point_of_sale/i18n/cs.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/da.po b/addons/point_of_sale/i18n/da.po
index d6ba1ac3c9e..d15d9cedeaf 100644
--- a/addons/point_of_sale/i18n/da.po
+++ b/addons/point_of_sale/i18n/da.po
@@ -277,6 +277,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/el.po b/addons/point_of_sale/i18n/el.po
index 7688c7e190d..70ec48da774 100644
--- a/addons/point_of_sale/i18n/el.po
+++ b/addons/point_of_sale/i18n/el.po
@@ -277,6 +277,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/es.po b/addons/point_of_sale/i18n/es.po
index bfc9ac647ee..38801fde47d 100644
--- a/addons/point_of_sale/i18n/es.po
+++ b/addons/point_of_sale/i18n/es.po
@@ -1266,7 +1266,7 @@ msgstr "Pago punto de venta"
#. module: point_of_sale
#: view:pos.box.out:0
-msgid "Sortie de caisse"
+msgid "Output Operation"
msgstr "Salidas de caja"
#. module: point_of_sale
diff --git a/addons/point_of_sale/i18n/es_AR.po b/addons/point_of_sale/i18n/es_AR.po
index 6355a79ea5a..2fa5fef4f10 100644
--- a/addons/point_of_sale/i18n/es_AR.po
+++ b/addons/point_of_sale/i18n/es_AR.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/es_EC.po b/addons/point_of_sale/i18n/es_EC.po
index e96515dcf23..d9f11f4b3df 100644
--- a/addons/point_of_sale/i18n/es_EC.po
+++ b/addons/point_of_sale/i18n/es_EC.po
@@ -276,6 +276,11 @@ msgstr "Dates"
msgid "Max Discount(%)"
msgstr "Max Discount(%)"
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr "Sortie de caisse"
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/et.po b/addons/point_of_sale/i18n/et.po
index 7898efc3db1..9263144b098 100644
--- a/addons/point_of_sale/i18n/et.po
+++ b/addons/point_of_sale/i18n/et.po
@@ -294,6 +294,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/fi.po b/addons/point_of_sale/i18n/fi.po
index cd54faa033c..eee9bf1f5a2 100644
--- a/addons/point_of_sale/i18n/fi.po
+++ b/addons/point_of_sale/i18n/fi.po
@@ -277,6 +277,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/hi.po b/addons/point_of_sale/i18n/hi.po
index bf1eb64f7a9..377972b9af9 100644
--- a/addons/point_of_sale/i18n/hi.po
+++ b/addons/point_of_sale/i18n/hi.po
@@ -277,6 +277,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/hr.po b/addons/point_of_sale/i18n/hr.po
index 40d3c847046..0725196e774 100644
--- a/addons/point_of_sale/i18n/hr.po
+++ b/addons/point_of_sale/i18n/hr.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/hu.po b/addons/point_of_sale/i18n/hu.po
index a13330328da..f3affe6e206 100644
--- a/addons/point_of_sale/i18n/hu.po
+++ b/addons/point_of_sale/i18n/hu.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/id.po b/addons/point_of_sale/i18n/id.po
index c8c5d384668..24d7e252fd4 100644
--- a/addons/point_of_sale/i18n/id.po
+++ b/addons/point_of_sale/i18n/id.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/it.po b/addons/point_of_sale/i18n/it.po
index f20cc49d548..65bd298c8fd 100644
--- a/addons/point_of_sale/i18n/it.po
+++ b/addons/point_of_sale/i18n/it.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/ko.po b/addons/point_of_sale/i18n/ko.po
index 91b09653a6f..f578797a759 100644
--- a/addons/point_of_sale/i18n/ko.po
+++ b/addons/point_of_sale/i18n/ko.po
@@ -277,6 +277,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/lt.po b/addons/point_of_sale/i18n/lt.po
index 64b4f0d18f8..fb8f9aa0d72 100644
--- a/addons/point_of_sale/i18n/lt.po
+++ b/addons/point_of_sale/i18n/lt.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/mn.po b/addons/point_of_sale/i18n/mn.po
index f476d55e9f5..16f2c781cb3 100644
--- a/addons/point_of_sale/i18n/mn.po
+++ b/addons/point_of_sale/i18n/mn.po
@@ -277,6 +277,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/nl.po b/addons/point_of_sale/i18n/nl.po
index 745551703d8..87187143e48 100644
--- a/addons/point_of_sale/i18n/nl.po
+++ b/addons/point_of_sale/i18n/nl.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/nl_BE.po b/addons/point_of_sale/i18n/nl_BE.po
index 3e7efcbd3fc..733ed2a1ab5 100644
--- a/addons/point_of_sale/i18n/nl_BE.po
+++ b/addons/point_of_sale/i18n/nl_BE.po
@@ -276,11 +276,15 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
msgstr ""
-
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:0
#, python-format
diff --git a/addons/point_of_sale/i18n/pl.po b/addons/point_of_sale/i18n/pl.po
index 0f6f5bd6fb0..171803f71a6 100644
--- a/addons/point_of_sale/i18n/pl.po
+++ b/addons/point_of_sale/i18n/pl.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/point_of_sale.pot b/addons/point_of_sale/i18n/point_of_sale.pot
index 51312468261..f490d80e071 100644
--- a/addons/point_of_sale/i18n/point_of_sale.pot
+++ b/addons/point_of_sale/i18n/point_of_sale.pot
@@ -1258,7 +1258,7 @@ msgstr ""
#. module: point_of_sale
#: view:pos.box.out:0
-msgid "Sortie de caisse"
+msgid "Output Operation"
msgstr ""
#. module: point_of_sale
diff --git a/addons/point_of_sale/i18n/pt.po b/addons/point_of_sale/i18n/pt.po
index df1545e4c7c..9dd5fb154a4 100644
--- a/addons/point_of_sale/i18n/pt.po
+++ b/addons/point_of_sale/i18n/pt.po
@@ -276,6 +276,11 @@ msgstr "Datas"
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/pt_BR.po b/addons/point_of_sale/i18n/pt_BR.po
index f2adbe4a87b..dede1dc2d08 100644
--- a/addons/point_of_sale/i18n/pt_BR.po
+++ b/addons/point_of_sale/i18n/pt_BR.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/ro.po b/addons/point_of_sale/i18n/ro.po
index 07538704428..0f3e83842a4 100644
--- a/addons/point_of_sale/i18n/ro.po
+++ b/addons/point_of_sale/i18n/ro.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/ru.po b/addons/point_of_sale/i18n/ru.po
index f25a971c7df..07f84f65e9e 100644
--- a/addons/point_of_sale/i18n/ru.po
+++ b/addons/point_of_sale/i18n/ru.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/sl.po b/addons/point_of_sale/i18n/sl.po
index 790a612f13e..d7f2a3b5cc4 100644
--- a/addons/point_of_sale/i18n/sl.po
+++ b/addons/point_of_sale/i18n/sl.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/sq.po b/addons/point_of_sale/i18n/sq.po
index 13846a83501..95e08e8b49d 100644
--- a/addons/point_of_sale/i18n/sq.po
+++ b/addons/point_of_sale/i18n/sq.po
@@ -277,6 +277,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/sr.po b/addons/point_of_sale/i18n/sr.po
index 99c890a8983..479f9da1352 100644
--- a/addons/point_of_sale/i18n/sr.po
+++ b/addons/point_of_sale/i18n/sr.po
@@ -277,6 +277,11 @@ msgstr "Datumi"
msgid "Max Discount(%)"
msgstr "Max Popust(%)"
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr "Gotovina Van"
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/tlh.po b/addons/point_of_sale/i18n/tlh.po
index eee53599f88..69f5581b7f4 100644
--- a/addons/point_of_sale/i18n/tlh.po
+++ b/addons/point_of_sale/i18n/tlh.po
@@ -276,6 +276,11 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
diff --git a/addons/point_of_sale/i18n/tr.po b/addons/point_of_sale/i18n/tr.po
index 7e1b11f03b9..c0a8145a11c 100644
--- a/addons/point_of_sale/i18n/tr.po
+++ b/addons/point_of_sale/i18n/tr.po
@@ -276,11 +276,17 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
msgstr ""
+
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:0
#, python-format
diff --git a/addons/point_of_sale/i18n/uk.po b/addons/point_of_sale/i18n/uk.po
index 3204913915e..e857d239276 100644
--- a/addons/point_of_sale/i18n/uk.po
+++ b/addons/point_of_sale/i18n/uk.po
@@ -276,11 +276,17 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
msgstr ""
+
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:0
#, python-format
diff --git a/addons/point_of_sale/i18n/vi.po b/addons/point_of_sale/i18n/vi.po
index ce6e444364e..b5e1a770b9f 100644
--- a/addons/point_of_sale/i18n/vi.po
+++ b/addons/point_of_sale/i18n/vi.po
@@ -277,11 +277,17 @@ msgstr ""
msgid "Max Discount(%)"
msgstr "Chiết khấu tối đa (%)"
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
msgstr ""
+
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:0
#, python-format
diff --git a/addons/point_of_sale/i18n/zh_CN.po b/addons/point_of_sale/i18n/zh_CN.po
index dc5087b57c1..889a42397d3 100644
--- a/addons/point_of_sale/i18n/zh_CN.po
+++ b/addons/point_of_sale/i18n/zh_CN.po
@@ -276,11 +276,17 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
msgstr ""
+
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:0
#, python-format
diff --git a/addons/point_of_sale/i18n/zh_HK.po b/addons/point_of_sale/i18n/zh_HK.po
index e48c31783dc..cfa1f2f5dec 100644
--- a/addons/point_of_sale/i18n/zh_HK.po
+++ b/addons/point_of_sale/i18n/zh_HK.po
@@ -277,11 +277,17 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
msgstr ""
+
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:0
#, python-format
diff --git a/addons/point_of_sale/i18n/zh_TW.po b/addons/point_of_sale/i18n/zh_TW.po
index 4a2cd47b0c8..0ed629718e1 100644
--- a/addons/point_of_sale/i18n/zh_TW.po
+++ b/addons/point_of_sale/i18n/zh_TW.po
@@ -276,11 +276,17 @@ msgstr ""
msgid "Max Discount(%)"
msgstr ""
+#. module: point_of_sale
+#: view:pos.box.out:0
+msgid "Output Operation"
+msgstr ""
+
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_point_open_config
msgid "Cash register management"
msgstr ""
+
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:0
#, python-format
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index fa2de26f4e8..167f9658185 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -159,12 +159,13 @@ class pos_order(osv.osv):
'amount_return':0.0,
'amount_tax':0.0,
}
- val = 0.0
+ val = val1 = 0.0
cur = order.pricelist_id.currency_id
for payment in order.statement_ids:
res[order.id]['amount_paid'] += payment.amount
res[order.id]['amount_return'] += (payment.amount < 0 and payment.amount or 0)
for line in order.lines:
+ val1 += line.price_subtotal_incl
if order.price_type != 'tax_excluded':
res[order.id]['amount_tax'] = reduce(lambda x, y: x+round(y['amount'], 2),
tax_obj.compute_inv(cr, uid, line.product_id.taxes_id,
@@ -174,7 +175,8 @@ class pos_order(osv.osv):
elif line.qty != 0.0:
for c in tax_obj.compute_all(cr, uid, line.product_id.taxes_id, line.price_unit * (1-(line.discount or 0.0)/100.0), line.qty, line.product_id, line.order_id.partner_id)['taxes']:
val += c.get('amount', 0.0)
- res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val)
+ res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val)
+ res[order.id]['amount_total'] = res[order.id]['amount_tax'] + cur_obj.round(cr, uid, cur, val1)
return res
def _sale_journal_get(self, cr, uid, context=None):
@@ -248,7 +250,7 @@ class pos_order(osv.osv):
'user_salesman_id': fields.many2one('res.users', 'Cashier', required=True, help="User who is logged into the system."),
'sale_manager': fields.many2one('res.users', 'Salesman Manager'),
'amount_tax': fields.function(_amount_all, method=True, string='Taxes', digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
- 'amount_total': fields.function(_amount_total, method=True, string='Total'),
+ 'amount_total': fields.function(_amount_all, method=True, string='Total', multi='all'),
'amount_paid': fields.function(_amount_all, string='Paid', states={'draft': [('readonly', False)]}, readonly=True, method=True, digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
'amount_return': fields.function(_amount_all, 'Returned', method=True, digits_compute=dp.get_precision('Point Of Sale'), multi='all'),
'lines': fields.one2many('pos.order.line', 'order_id', 'Order Lines', states={'draft': [('readonly', False)]}, readonly=True),
@@ -991,14 +993,10 @@ class pos_order_line(osv.osv):
if line.qty == 0.0:
res[line.id][f] = 0.0
continue
- computed_taxes = account_tax_obj.compute_all(cr, uid, taxes, line.price_unit, line.qty)['taxes']
- for tax in computed_taxes:
- tax_amount += tax['amount']
- if line.discount!=0.0:
- res[line.id][f] = line.price_unit * line.qty * (1 - (line.discount or 0.0) / 100.0)
- else:
- res[line.id][f] = line.price_unit * line.qty
- res[line.id][f] += tax_amount
+ price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
+ computed_taxes = account_tax_obj.compute_all(cr, uid, taxes, price, line.qty)
+ cur = line.order_id.pricelist_id.currency_id
+ res[line.id][f] = self.pool.get('res.currency').round(cr, uid, cur, computed_taxes['total'])
return res
def price_by_product_multi(self, cr, uid, ids, context=None):
diff --git a/addons/point_of_sale/wizard/pos_box_out.xml b/addons/point_of_sale/wizard/pos_box_out.xml
index 3bd817b1797..4647b1e66a7 100644
--- a/addons/point_of_sale/wizard/pos_box_out.xml
+++ b/addons/point_of_sale/wizard/pos_box_out.xml
@@ -8,7 +8,7 @@
pos.box.outform
-
+
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index 9d495f86ef9..3a6e3336472 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -214,7 +214,6 @@ class procurement_order(osv.osv):
report = []
offset = 0
ids = [1]
- newdate = datetime.today()
if automatic:
self.create_automatic_op(cr, uid, context=context)
while ids:
@@ -241,7 +240,7 @@ class procurement_order(osv.osv):
if op.product_id.type not in ('consu'):
if op.procurement_draft_ids:
# Check draft procurement related to this order point
- pro_ids = map(lambda x:x.id, op.procurement_draft_ids or [])
+ pro_ids = [x.id for x in op.procurement_draft_ids]
cr.execute('select id, product_qty from procurement_order where id in %s order by product_qty desc', (tuple(pro_ids), ))
procure_datas = cr.dictfetchall()
to_generate = qty
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index b92abe65dd2..0ff14a6ca10 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -92,13 +92,12 @@
+
-
-
diff --git a/addons/product_margin/wizard/product_margin.py b/addons/product_margin/wizard/product_margin.py
index c1430566abe..61137a5e51e 100644
--- a/addons/product_margin/wizard/product_margin.py
+++ b/addons/product_margin/wizard/product_margin.py
@@ -49,6 +49,8 @@ class product_margin(osv.osv_memory):
@return:
"""
+ if context is None:
+ context = {}
mod_obj = self.pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'product', 'product_search_form_view')
id = mod_obj.read(cr, uid, result, ['res_id'], context=context)
@@ -62,9 +64,14 @@ class product_margin(osv.osv_memory):
#get the current product.margin object to obtain the values from it
product_margin_obj = self.browse(cr, uid, ids, context=context)[0]
+ context = {'invoice_state' : product_margin_obj.invoice_state}
+ if product_margin_obj.from_date:
+ context.update({'date_from': product_margin_obj.from_date})
+ if product_margin_obj.to_date:
+ context.update({'date_to': product_margin_obj.to_date})
return {
'name': _('Product Margins'),
- 'context':{'date_from':product_margin_obj.from_date,'date_to':product_margin_obj.to_date,'invoice_state' : product_margin_obj.invoice_state},
+ 'context': context,
'view_type': 'form',
"view_mode": 'tree,form,graph',
'res_model':'product.product',
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index da8d84e364f..efda3d91136 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -8,16 +8,16 @@
-
+ parent="menu_purchase_config_purchase" sequence="2"/>
+ parent="menu_purchase_config_purchase" sequence="1"/>
diff --git a/addons/sale/__openerp__.py b/addons/sale/__openerp__.py
index 6978a0bb072..bf7d238790a 100644
--- a/addons/sale/__openerp__.py
+++ b/addons/sale/__openerp__.py
@@ -27,7 +27,7 @@
The base module to manage quotations and sales orders.
* Workflow with validation steps:
- - Quotation -> Sale order -> Invoice
+ - Quotation -> Sales order -> Invoice
* Invoicing methods:
- Invoice on order (before or after shipping)
- Invoice on delivery
diff --git a/addons/sale/i18n/nl_BE.po b/addons/sale/i18n/nl_BE.po
index 6ed2db9718e..dbffb3f7ade 100644
--- a/addons/sale/i18n/nl_BE.po
+++ b/addons/sale/i18n/nl_BE.po
@@ -101,7 +101,7 @@ msgstr ""
#. module: sale
#: help:sale.order,picking_ids:0
msgid ""
-"This is the list of picking list that have been generated for this invoice"
+"This is a list of picking that has been generated for this sale order"
msgstr ""
#. module: sale
diff --git a/addons/sale/i18n/sale.pot b/addons/sale/i18n/sale.pot
index 9c3e1758484..e2c016966d8 100644
--- a/addons/sale/i18n/sale.pot
+++ b/addons/sale/i18n/sale.pot
@@ -981,7 +981,7 @@ msgstr ""
#. module: sale
#: help:sale.order,picking_ids:0
-msgid "This is the list of picking list that have been generated for this invoice"
+msgid "This is a list of picking that has been generated for this sale order"
msgstr ""
#. module: sale
diff --git a/addons/sale/i18n/sr@latin.po b/addons/sale/i18n/sr@latin.po
index 2af015b607a..a6c08c8f151 100644
--- a/addons/sale/i18n/sr@latin.po
+++ b/addons/sale/i18n/sr@latin.po
@@ -1098,8 +1098,8 @@ msgstr "Naruceno Dana"
#. module: sale
#: help:sale.order,picking_ids:0
msgid ""
-"This is the list of picking list that have been generated for this invoice"
-msgstr "Ovo je spisak izbornih lista koji su generisani za ovaj račun"
+"This is a list of picking that has been generated for this sale order"
+msgstr ""
#. module: sale
#: model:process.node,note:sale.process_node_packinglist0
diff --git a/addons/sale/process/sale_process.xml b/addons/sale/process/sale_process.xml
index eb4386304ac..b688f2aeb7f 100644
--- a/addons/sale/process/sale_process.xml
+++ b/addons/sale/process/sale_process.xml
@@ -20,8 +20,8 @@
-
-
+
+
@@ -32,8 +32,8 @@
-
-
+
+
@@ -45,7 +45,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
@@ -67,7 +67,7 @@
-
+
@@ -136,7 +136,7 @@
-
+
@@ -145,7 +145,7 @@
-
+
@@ -153,7 +153,7 @@
-
+
@@ -186,15 +186,15 @@
-
+
-
-
+
+
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index e3e9f6c599b..a789ad287f3 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -30,7 +30,7 @@ import netsvc
class sale_shop(osv.osv):
_name = "sale.shop"
- _description = "Sale Shop"
+ _description = "Sales Shop"
_columns = {
'name': fields.char('Shop Name', size=64, required=True),
'payment_default_id': fields.many2one('account.payment.term', 'Default Payment Term', required=True),
@@ -47,7 +47,7 @@ sale_shop()
class sale_order(osv.osv):
_name = "sale.order"
- _description = "Sale Order"
+ _description = "Sales Order"
def copy(self, cr, uid, id, default=None, context=None):
if not default:
@@ -190,7 +190,7 @@ class sale_order(osv.osv):
'name': fields.char('Order Reference', size=64, required=True,
readonly=True, states={'draft': [('readonly', False)]}, select=True),
'shop_id': fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft': [('readonly', False)]}),
- 'origin': fields.char('Source document', size=64, help="Reference of the document that generated this sale order request."),
+ 'origin': fields.char('Source Document', size=64, help="Reference of the document that generated this sales order request."),
'client_order_ref': fields.char('Customer Reference', size=64),
'state': fields.selection([
('draft', 'Quotation'),
@@ -201,41 +201,41 @@ class sale_order(osv.osv):
('invoice_except', 'Invoice Exception'),
('done', 'Done'),
('cancel', 'Cancelled')
- ], 'Order State', readonly=True, help="Gives the state of the quotation or sale order. \nThe exception state 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' state is set when the invoice is confirmed but waiting for the scheduler to run on the date 'Ordered Date'.", select=True),
+ ], 'Order State', readonly=True, help="Gives the state of the quotation or sales order. \nThe exception state 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' state is set when the invoice is confirmed but waiting for the scheduler to run on the date 'Ordered Date'.", select=True),
'date_order': fields.date('Ordered Date', required=True, readonly=True, states={'draft': [('readonly', False)]}),
- 'create_date': fields.date('Creation Date', readonly=True, help="Date on which sale order is created"),
- 'date_confirm': fields.date('Confirmation Date', readonly=True, help="Date on which sale order is confirmed"),
+ 'create_date': fields.date('Creation Date', readonly=True, help="Date on which sales order is created."),
+ 'date_confirm': fields.date('Confirmation Date', readonly=True, help="Date on which sales order is confirmed."),
'user_id': fields.many2one('res.users', 'Salesman', states={'draft': [('readonly', False)]}, select=True),
'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)]}, required=True, change_default=True, select=True),
- 'partner_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Invoice address for current sale order"),
+ 'partner_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Invoice address for current sales order."),
'partner_order_id': fields.many2one('res.partner.address', 'Ordering Contact', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="The name and address of the contact who requested the order or quotation."),
- 'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sale order"),
+ 'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sales order."),
- 'incoterm': fields.many2one('stock.incoterms', 'Incoterm', help="Incoterm which stands for 'International Commercial terms' implies its a series of sales terms which are used in the commercial transaction"),
+ 'incoterm': fields.many2one('stock.incoterms', 'Incoterm', help="Incoterm which stands for 'International Commercial terms' implies its a series of sales terms which are used in the commercial transaction."),
'picking_policy': fields.selection([('direct', 'Partial Delivery'), ('one', 'Complete Delivery')],
'Picking Policy', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="""If you don't have enough stock available to deliver all at once, do you accept partial shipments or not?"""),
'order_policy': fields.selection([
('prepaid', 'Payment Before Delivery'),
('manual', 'Shipping & Manual Invoice'),
- ('postpaid', 'Invoice on Order After Delivery'),
- ('picking', 'Invoice from Delivery'),
+ ('postpaid', 'Invoice On Order After Delivery'),
+ ('picking', 'Invoice From The Picking'),
], 'Shipping Policy', required=True, readonly=True, states={'draft': [('readonly', False)]},
help="""The Shipping Policy is used to synchronise invoice and delivery operations.
- - The 'Pay before delivery' choice will first generate the invoice and then generate the picking order after the payment of this invoice.
+ - The 'Pay Before delivery' choice will first generate the invoice and then generate the picking order after the payment of this invoice.
- The 'Shipping & Manual Invoice' will create the picking order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice.
- - The 'Invoice on Order After Delivery' choice will generate the draft invoice based on sale order after all picking lists have been finished.
- - The 'Invoice from the picking' choice is used to create an invoice during the picking process."""),
- 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist version for current sale order"),
- 'project_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft': [('readonly', False)]}, help="The analytic account related to a sale order"),
+ - The 'Invoice On Order After Delivery' choice will generate the draft invoice based on sales order after all picking lists have been finished.
+ - The 'Invoice From The Picking' choice is used to create an invoice during the picking process."""),
+ 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist for current sales order."),
+ 'project_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft': [('readonly', False)]}, help="The analytic account related to a sales order."),
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)]}),
- 'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_rel', 'order_id', 'invoice_id', 'Invoices', readonly=True, help="This is the list of invoices that have been generated for this sale order. The same sale order may have been invoiced in several times (by line for example)."),
- 'picking_ids': fields.one2many('stock.picking', 'sale_id', 'Related Picking', readonly=True, help="This is the list of picking list that have been generated for this invoice"),
- 'shipped': fields.boolean('Delivered', readonly=True, help="It indicates that the sale order has been delivered. This field is updated only after the scheduler have been launched !"),
+ 'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_rel', 'order_id', 'invoice_id', 'Invoices', readonly=True, help="This is the list of invoices that have been generated for this sales order. The same sales order may have been invoiced in several times (by line for example)."),
+ 'picking_ids': fields.one2many('stock.picking', 'sale_id', 'Related Picking', readonly=True, help="This is a list of picking 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, method=True, string='Picked', type='float'),
'invoiced_rate': fields.function(_invoiced_rate, method=True, string='Invoiced', type='float'),
'invoiced': fields.function(_invoiced, method=True, string='Paid',
- fnct_search=_invoiced_search, type='boolean', help="It indicates that an invoice has been paid"),
+ fnct_search=_invoiced_search, type='boolean', help="It indicates that an invoice has been paid."),
'note': fields.text('Notes'),
'amount_untaxed': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Untaxed Amount',
@@ -243,19 +243,19 @@ class sale_order(osv.osv):
'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
},
- multi='sums', help="The amount without tax"),
+ multi='sums', help="The amount without tax."),
'amount_tax': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Taxes',
store = {
'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
},
- multi='sums', help="The tax amount"),
+ multi='sums', help="The tax amount."),
'amount_total': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Total',
store = {
'sale.order': (lambda self, cr, uid, ids, c={}: ids, ['order_line'], 10),
'sale.order.line': (_get_order, ['price_unit', 'tax_id', 'discount', 'product_uom_qty'], 10),
},
- multi='sums', help="The total amount"),
+ multi='sums', help="The total amount."),
'invoice_quantity': fields.selection([('order', 'Ordered Quantities'), ('procurement', 'Shipped Quantities')], 'Invoice on', help="The sale order will automatically create the invoice proposition (draft invoice). Ordered and delivered quantities may not be the same. You have to choose if you want your invoice based on ordered or shipped quantities. If the product is a service, shipped quantities means hours spent on the associated tasks.", required=True, readonly=True, states={'draft': [('readonly', False)]}),
'payment_term': fields.many2one('account.payment.term', 'Payment Term'),
@@ -284,7 +284,7 @@ class sale_order(osv.osv):
if s['state'] in ['draft', 'cancel']:
unlink_ids.append(s['id'])
else:
- raise osv.except_osv(_('Invalid action !'), _('Cannot delete Sale Order(s) which are already confirmed !'))
+ raise osv.except_osv(_('Invalid action !'), _('Cannot delete Sales Order(s) which are already confirmed !'))
return osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
def onchange_shop_id(self, cr, uid, ids, shop_id):
@@ -310,7 +310,7 @@ class sale_order(osv.osv):
wf_service.trg_delete(uid, 'sale.order', inv_id, cr)
wf_service.trg_create(uid, 'sale.order', inv_id, cr)
for (id,name) in self.name_get(cr, uid, ids):
- message = _("The sale order '%s' has been set in draft state.") %(name,)
+ message = _("The sales order '%s' has been set in draft state.") %(name,)
self.log(cr, uid, id, message)
return True
@@ -367,7 +367,7 @@ class sale_order(osv.osv):
#FIXME: the method should return the list of invoices created (invoice_ids)
# and not the id of the last invoice created (res). The problem is that we
- # cannot change it directly since the method is called by the sale order
+ # cannot change it directly since the method is called by the sales order
# workflow and I suppose it expects a single id...
def _inv_get(self, cr, uid, order, context=None):
return {}
@@ -382,7 +382,7 @@ class sale_order(osv.osv):
journal_ids = journal_obj.search(cr, uid, [('type', '=', 'sale'), ('company_id', '=', order.company_id.id)], limit=1)
if not journal_ids:
raise osv.except_osv(_('Error !'),
- _('There is no sale journal defined for this company: "%s" (id:%d)') % (order.company_id.name, order.company_id.id))
+ _('There is no sales journal defined for this company: "%s" (id:%d)') % (order.company_id.name, order.company_id.id))
a = order.partner_id.property_account_receivable.id
pay_term = order.payment_term and order.payment_term.id or False
invoiced_sale_line_ids = self.pool.get('sale.order.line').search(cr, uid, [('order_id', '=', order.id), ('invoiced', '=', True)], context=context)
@@ -548,7 +548,7 @@ class sale_order(osv.osv):
if vals:
self.pool.get('sale.order.line').write(cr, uid, [line.id], vals, context=context)
#
- # Update the sale order state.
+ # Update the sales order state.
#
if order.state == 'invoice_except':
self.write(cr, uid, [order.id], {'state': 'progress'}, context=context)
@@ -559,26 +559,33 @@ class sale_order(osv.osv):
if context is None:
context = {}
sale_order_line_obj = self.pool.get('sale.order.line')
+ proc_obj = self.pool.get('procurement.order')
for sale in self.browse(cr, uid, ids, context=context):
for pick in sale.picking_ids:
if pick.state not in ('draft', 'cancel'):
raise osv.except_osv(
- _('Could not cancel sale order !'),
- _('You must first cancel all picking attached to this sale order.'))
+ _('Could not cancel sales order !'),
+ _('You must first cancel all picking 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:
+ for proc in proc_ids:
+ wf_service.trg_validate(uid, 'procurement.order', proc, 'button_check', cr)
for r in self.read(cr, uid, ids, ['picking_ids']):
for pick in r['picking_ids']:
wf_service.trg_validate(uid, 'stock.picking', pick, 'button_cancel', cr)
for inv in sale.invoice_ids:
if inv.state not in ('draft', 'cancel'):
raise osv.except_osv(
- _('Could not cancel this sale order !'),
- _('You must first cancel all invoices attached to this sale order.'))
+ _('Could not cancel this sales order !'),
+ _('You must first cancel all invoices attached to this sales order.'))
for r in self.read(cr, uid, ids, ['invoice_ids']):
for inv in r['invoice_ids']:
wf_service.trg_validate(uid, 'account.invoice', inv, 'invoice_cancel', cr)
sale_order_line_obj.write(cr, uid, [l.id for l in sale.order_line],
{'state': 'cancel'})
- message = _("The sale order '%s' has been cancelled.") % (sale.name,)
+ message = _("The sales order '%s' has been cancelled.") % (sale.name,)
self.log(cr, uid, sale.id, message)
self.write(cr, uid, ids, {'state': 'cancel'})
return True
@@ -590,7 +597,7 @@ class sale_order(osv.osv):
else:
self.write(cr, uid, [o.id], {'state': 'progress', 'date_confirm': time.strftime('%Y-%m-%d')})
self.pool.get('sale.order.line').button_confirm(cr, uid, [x.id for x in o.order_line])
- message = _("The quotation '%s' has been converted to a sale order.") % (o.name,)
+ message = _("The quotation '%s' has been converted to a sales order.") % (o.name,)
self.log(cr, uid, o.id, message)
return True
@@ -643,6 +650,8 @@ class sale_order(osv.osv):
def action_ship_create(self, cr, uid, ids, *args):
wf_service = netsvc.LocalService("workflow")
picking_id = False
+ move_obj = self.pool.get('stock.move')
+ proc_obj = self.pool.get('procurement.order')
company = self.pool.get('res.users').browse(cr, uid, uid).company_id
for order in self.browse(cr, uid, ids, context={}):
proc_ids = []
@@ -694,6 +703,7 @@ class sale_order(osv.osv):
'note': line.notes,
'company_id': order.company_id.id,
})
+
if line.product_id:
proc_id = self.pool.get('procurement.order').create(cr, uid, {
'name': line.name,
@@ -714,6 +724,15 @@ class sale_order(osv.osv):
})
proc_ids.append(proc_id)
self.pool.get('sale.order.line').write(cr, uid, [line.id], {'procurement_id': proc_id})
+ if order.state == 'shipping_except':
+ for pick in order.picking_ids:
+ for move in pick.move_lines:
+ if move.state == 'cancel':
+ mov_ids = move_obj.search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)])
+ if mov_ids:
+ for mov in move_obj.browse(cr, uid, mov_ids):
+ move_obj.write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
+ proc_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty})
val = {}
for proc_id in proc_ids:
@@ -724,6 +743,7 @@ class sale_order(osv.osv):
if order.state == 'shipping_except':
val['state'] = 'progress'
+ val['shipped'] = False
if (order.order_policy == 'manual'):
for line in order.order_line:
@@ -812,11 +832,11 @@ class sale_order_line(osv.osv):
return res
_name = 'sale.order.line'
- _description = 'Sale Order Line'
+ _description = 'Sales Order Line'
_columns = {
'order_id': fields.many2one('sale.order', 'Order Reference', required=True, ondelete='cascade', select=True, readonly=True, states={'draft':[('readonly',False)]}),
'name': fields.char('Description', size=256, required=True, select=True, readonly=True, states={'draft': [('readonly', False)]}),
- 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of sale order lines."),
+ 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of sales order lines."),
'delay': fields.float('Delivery Lead Time', required=True, help="Number of days between the order confirmation the shipping of the products to the customer", readonly=True, states={'draft': [('readonly', False)]}),
'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], change_default=True),
'invoice_lines': fields.many2many('account.invoice.line', 'sale_order_line_invoice_rel', 'order_line_id', 'invoice_id', 'Invoice Lines', readonly=True),
@@ -839,12 +859,12 @@ class sale_order_line(osv.osv):
'notes': fields.text('Notes'),
'th_weight': fields.float('Weight', readonly=True, states={'draft': [('readonly', False)]}),
'state': fields.selection([('draft', 'Draft'),('confirmed', 'Confirmed'),('done', 'Done'),('cancel', 'Cancelled'),('exception', 'Exception')], 'State', required=True, readonly=True,
- help='* The \'Draft\' state is set when the related sale order in draft state. \
- \n* The \'Confirmed\' state is set when the related sale order is confirmed. \
- \n* The \'Exception\' state is set when the related sale order is set as exception. \
- \n* The \'Done\' state is set when the sale order line has been picked. \
- \n* The \'Cancelled\' state is set when a user cancel the sale order related.'),
- 'order_partner_id': fields.related('order_id', 'partner_id', type='many2one', relation='res.partner', string='Customer'),
+ help='* The \'Draft\' state is set when the related sales order in draft state. \
+ \n* The \'Confirmed\' state is set when the related sales order is confirmed. \
+ \n* The \'Exception\' state is set when the related sales order is set as exception. \
+ \n* The \'Done\' state is set when the sales order line has been picked. \
+ \n* The \'Cancelled\' state is set when a user cancel the sales order related.'),
+ '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='Salesman'),
'company_id': fields.related('order_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True, states={'draft': [('readonly', False)]}),
}
@@ -938,12 +958,12 @@ class sale_order_line(osv.osv):
def button_cancel(self, cr, uid, ids, context=None):
for line in self.browse(cr, uid, ids, context=context):
if line.invoiced:
- raise osv.except_osv(_('Invalid action !'), _('You cannot cancel a sale order line that has already been invoiced !'))
+ raise osv.except_osv(_('Invalid action !'), _('You cannot cancel a sales order line that has already been invoiced !'))
for move_line in line.move_ids:
if move_line.state != 'cancel':
raise osv.except_osv(
- _('Could not cancel sale order line!'),
- _('You must first cancel stock moves attached to this sale order line.'))
+ _('Could not cancel sales order line!'),
+ _('You must first cancel stock moves attached to this sales order line.'))
return self.write(cr, uid, ids, {'state': 'cancel'})
def button_confirm(self, cr, uid, ids, context=None):
@@ -986,7 +1006,7 @@ class sale_order_line(osv.osv):
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):
if not partner_id:
- raise osv.except_osv(_('No Customer Defined !'), _('You have to select a customer in the sale form !\nPlease set one customer before choosing a product.'))
+ raise osv.except_osv(_('No Customer Defined !'), _('You have to select a customer in the sales form !\nPlease set one customer before choosing a product.'))
warning = {}
product_uom_obj = self.pool.get('product.uom')
partner_obj = self.pool.get('res.partner')
@@ -1098,7 +1118,7 @@ class sale_order_line(osv.osv):
warning = {
'title': 'No Pricelist !',
'message':
- 'You have to select a pricelist or a customer in the sale form !\n'
+ 'You have to select a pricelist or a customer in the sales form !\n'
'Please set one before choosing a product.'
}
else:
@@ -1132,10 +1152,12 @@ class sale_order_line(osv.osv):
return res
def unlink(self, cr, uid, ids, context=None):
- """Allows to delete sale order lines in draft,cancel states"""
+ if context is None:
+ context = {}
+ """Allows to delete sales order lines in draft,cancel states"""
for rec in self.browse(cr, uid, ids, context=context):
if rec.state not in ['draft', 'cancel']:
- raise osv.except_osv(_('Invalid action !'), _('Cannot delete a sale order line which is %s !') %(rec.state,))
+ raise osv.except_osv(_('Invalid action !'), _('Cannot delete a sales order line which is %s !') %(rec.state,))
return super(sale_order_line, self).unlink(cr, uid, ids, context=context)
sale_order_line()
@@ -1158,7 +1180,7 @@ class sale_config_picking_policy(osv.osv_memory):
'step': fields.selection([
('one', 'Delivery Order Only'),
('two', 'Picking List & Delivery Order')
- ], 'Steps To Deliver a Sale Order', required=True,
+ ], 'Steps To Deliver a Sales Order', required=True,
help="By default, OpenERP is able to manage complex routing and paths "\
"of products in your warehouse and partner locations. This will configure "\
"the most common and simple methods to deliver products to the customer "\
diff --git a/addons/sale/sale_data.xml b/addons/sale/sale_data.xml
index f2ebe3af020..655dfc3b9bf 100644
--- a/addons/sale/sale_data.xml
+++ b/addons/sale/sale_data.xml
@@ -5,10 +5,10 @@
Requests Links
-->
- Sale Order
+ Sales Ordersale.order
-
+
@@ -18,8 +18,8 @@
-
+
-
+
diff --git a/addons/sale/sale_sequence.xml b/addons/sale/sale_sequence.xml
index 8a500a9395c..dadd1942940 100644
--- a/addons/sale/sale_sequence.xml
+++ b/addons/sale/sale_sequence.xml
@@ -4,12 +4,12 @@
- Sale Order
+ Sales Ordersale.order
- Sale Order
+ Sales Ordersale.orderSO3
diff --git a/addons/sale/sale_unit_test.xml b/addons/sale/sale_unit_test.xml
index 95a23024412..421cb36c440 100644
--- a/addons/sale/sale_unit_test.xml
+++ b/addons/sale/sale_unit_test.xml
@@ -33,28 +33,28 @@
make_to_stock
-
+
-
+ manual
-
+ progress
-
+
-
+ draft
@@ -75,16 +75,16 @@
-
+ paid
-
+
-
+
@@ -94,7 +94,7 @@
-
+ assigned
@@ -107,14 +107,14 @@
-
+ done
-
+ done
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index c83f1cd3e45..ef03df4fe53 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -14,7 +14,7 @@
sale.shopform
-
-
+
-
-
-
+
+
+
Outgoing picking Inheritedstock.picking
diff --git a/addons/sale/wizard/sale_line_invoice.py b/addons/sale/wizard/sale_line_invoice.py
index b17b12c1e8f..de845b5b34d 100644
--- a/addons/sale/wizard/sale_line_invoice.py
+++ b/addons/sale/wizard/sale_line_invoice.py
@@ -108,7 +108,7 @@ class sale_order_line_make_invoice(osv.osv_memory):
sales_order_obj.write(cr, uid, [line.order_id.id], {'state': 'progress'})
if not invoices:
- raise osv.except_osv(_('Warning'), _('Invoice cannot be created for this Sale Order Line due to one of the following reasons:\n1.The state of this sale order line is either "draft" or "cancel"!\n2.The Sale Order Line is Invoiced!'))
+ raise osv.except_osv(_('Warning'), _('Invoice cannot be created for this Sales Order Line due to one of the following reasons:\n1.The state of this sales order line is either "draft" or "cancel"!\n2.The Sales Order Line is Invoiced!'))
return {}
diff --git a/addons/sale/wizard/sale_line_invoice.xml b/addons/sale/wizard/sale_line_invoice.xml
index 774759c82c7..6562af09258 100644
--- a/addons/sale/wizard/sale_line_invoice.xml
+++ b/addons/sale/wizard/sale_line_invoice.xml
@@ -2,7 +2,7 @@
- Sale OrderLine Make Invoice
+ Sales OrderLine Make Invoicesale.order.line.make.invoiceform
@@ -23,7 +23,7 @@
new
-
+
diff --git a/addons/sale/wizard/sale_make_invoice.py b/addons/sale/wizard/sale_make_invoice.py
index f414c2475d5..55047d011e5 100644
--- a/addons/sale/wizard/sale_make_invoice.py
+++ b/addons/sale/wizard/sale_make_invoice.py
@@ -24,7 +24,7 @@ import netsvc
class sale_make_invoice(osv.osv_memory):
_name = "sale.make.invoice"
- _description = "Sale Make Invoice"
+ _description = "Sales Make Invoice"
_columns = {
'grouped': fields.boolean('Group the invoices', help='Check the box to group the invoices for the same customers'),
'invoice_date': fields.date('Invoice Date'),
@@ -32,16 +32,16 @@ class sale_make_invoice(osv.osv_memory):
_defaults = {
'grouped': False
}
-
+
def view_init(self, cr, uid, fields_list, context=None):
if context is None:
context = {}
- record_id = context and context.get('active_id', False)
+ record_id = context and context.get('active_id', False)
order = self.pool.get('sale.order').browse(cr, uid, record_id, context=context)
if order.state == 'draft':
- raise osv.except_osv(_('Warning !'),'You can not create invoice when sale order is not confirmed.')
+ raise osv.except_osv(_('Warning !'),'You can not create invoice when sales order is not confirmed.')
return False
-
+
def make_invoices(self, cr, uid, ids, context=None):
order_obj = self.pool.get('sale.order')
mod_obj = self.pool.get('ir.model.data')
@@ -53,11 +53,11 @@ class sale_make_invoice(osv.osv_memory):
wf_service = netsvc.LocalService("workflow")
for id in context.get(('active_ids'), []):
wf_service.trg_validate(uid, 'sale.order', id, 'manual_invoice', cr)
-
+
for o in order_obj.browse(cr, uid, context.get(('active_ids'), []), context=context):
for i in o.invoice_ids:
newinv.append(i.id)
-
+
res = mod_obj.get_object_reference(cr, uid, 'account', 'view_account_invoice_filter')
return {
@@ -69,9 +69,9 @@ class sale_make_invoice(osv.osv_memory):
'view_id': False,
'context': "{'type': 'out_refund'}",
'type': 'ir.actions.act_window',
- 'search_view_id': res and res[1] or False
+ 'search_view_id': res and res[1] or False
}
-sale_make_invoice()
+sale_make_invoice()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py
index 29e87259903..4b1e4511021 100644
--- a/addons/sale/wizard/sale_make_invoice_advance.py
+++ b/addons/sale/wizard/sale_make_invoice_advance.py
@@ -23,7 +23,7 @@ from tools.translate import _
class sale_advance_payment_inv(osv.osv_memory):
_name = "sale.advance.payment.inv"
- _description = "Sale Advance Payment Invoice"
+ _description = "Sales Advance Payment Invoice"
_columns = {
'product_id': fields.many2one('product.product', 'Advance Product', required=True,
help="Select a product of type service which is called 'Advance Product'. You may have to create it and set it as a default value on this field."),
@@ -61,7 +61,7 @@ class sale_advance_payment_inv(osv.osv_memory):
if sale.order_policy == 'postpaid':
raise osv.except_osv(
_('Error'),
- _("You cannot make an advance on a sale order \
+ _("You cannot make an advance on a sales order \
that is defined as 'Automatic Invoice after delivery'."))
val = obj_lines.product_id_change(cr, uid, [], sale_adv_obj.product_id.id,
uom = False, partner_id = sale.partner_id.id, fposition_id = sale.fiscal_position.id)
@@ -136,7 +136,7 @@ sale_advance_payment_inv()
class sale_open_invoice(osv.osv_memory):
_name = "sale.open.invoice"
- _description = "Sale Open Invoice"
+ _description = "Sales Open Invoice"
def open_invoice(self, cr, uid, ids, context=None):
diff --git a/addons/sale_crm/wizard/crm_make_sale.py b/addons/sale_crm/wizard/crm_make_sale.py
index 506177d08f4..cdb5893a6f3 100644
--- a/addons/sale_crm/wizard/crm_make_sale.py
+++ b/addons/sale_crm/wizard/crm_make_sale.py
@@ -28,7 +28,7 @@ class crm_make_sale(osv.osv_memory):
""" Make sale order for crm """
_name = "crm.make.sale"
- _description = "Make sale"
+ _description = "Make sales"
def _selectPartner(self, cr, uid, context=None):
"""
@@ -59,9 +59,9 @@ class crm_make_sale(osv.osv_memory):
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
- @param ids: List of crm make sale' ids
+ @param ids: List of crm make sales' ids
@param context: A standard dictionary for contextual values
- @return: Dictionary value of created sale order.
+ @return: Dictionary value of created sales order.
"""
if context is None:
context = {}
@@ -73,7 +73,7 @@ class crm_make_sale(osv.osv_memory):
for make in self.browse(cr, uid, ids, context=context):
partner = make.partner_id
- partner_addr = partner_obj.address_get(cr, uid, [partner.id],
+ partner_addr = partner_obj.address_get(cr, uid, [partner.id],
['default', 'invoice', 'delivery', 'contact'])
pricelist = partner.property_product_pricelist.id
fpos = partner.property_account_position and partner.property_account_position.id or False
@@ -82,23 +82,23 @@ class crm_make_sale(osv.osv_memory):
if not partner and case.partner_id:
partner = case.partner_id
fpos = partner.property_account_position and partner.property_account_position.id or False
- partner_addr = partner_obj.address_get(cr, uid, [partner.id],
+ partner_addr = partner_obj.address_get(cr, uid, [partner.id],
['default', 'invoice', 'delivery', 'contact'])
pricelist = partner.property_product_pricelist.id
if False in partner_addr.values():
raise osv.except_osv(_('Data Insufficient!'), _('Customer has no addresses defined!'))
vals = {
- 'origin': _('Opportunity: %s') % str(case.id),
- 'section_id': case.section_id and case.section_id.id or False,
- 'shop_id': make.shop_id.id,
- 'partner_id': partner.id,
- 'pricelist_id': pricelist,
- 'partner_invoice_id': partner_addr['invoice'],
- 'partner_order_id': partner_addr['contact'],
- 'partner_shipping_id': partner_addr['delivery'],
- 'date_order': time.strftime('%Y-%m-%d'),
- 'fiscal_position': fpos,
+ 'origin': _('Opportunity: %s') % str(case.id),
+ 'section_id': case.section_id and case.section_id.id or False,
+ 'shop_id': make.shop_id.id,
+ 'partner_id': partner.id,
+ 'pricelist_id': pricelist,
+ 'partner_invoice_id': partner_addr['invoice'],
+ 'partner_order_id': partner_addr['contact'],
+ 'partner_shipping_id': partner_addr['delivery'],
+ 'date_order': time.strftime('%Y-%m-%d'),
+ 'fiscal_position': fpos,
}
if partner.id:
vals['user_id'] = partner.user_id and partner.user_id.id or uid
@@ -115,22 +115,22 @@ class crm_make_sale(osv.osv_memory):
return {}
if len(new_ids)<=1:
value = {
- 'domain': str([('id', 'in', new_ids)]),
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'sale.order',
- 'view_id': False,
- 'type': 'ir.actions.act_window',
+ 'domain': str([('id', 'in', new_ids)]),
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'sale.order',
+ 'view_id': False,
+ 'type': 'ir.actions.act_window',
'res_id': new_ids and new_ids[0]
}
else:
value = {
- 'domain': str([('id', 'in', new_ids)]),
- 'view_type': 'form',
- 'view_mode': 'tree,form',
- 'res_model': 'sale.order',
- 'view_id': False,
- 'type': 'ir.actions.act_window',
+ 'domain': str([('id', 'in', new_ids)]),
+ 'view_type': 'form',
+ 'view_mode': 'tree,form',
+ 'res_model': 'sale.order',
+ 'view_id': False,
+ 'type': 'ir.actions.act_window',
'res_id': new_ids
}
return value
@@ -141,14 +141,14 @@ class crm_make_sale(osv.osv_memory):
return shop and shop[0] or False
_columns = {
- 'shop_id': fields.many2one('sale.shop', 'Shop', required=True),
- 'partner_id': fields.many2one('res.partner', 'Customer', required=True),
- 'close': fields.boolean('Close Opportunity', help='Check this to close the opportunity after having created the sale order.'),
+ 'shop_id': fields.many2one('sale.shop', 'Shop', required=True),
+ 'partner_id': fields.many2one('res.partner', 'Customer', required=True),
+ 'close': fields.boolean('Close Opportunity', help='Check this to close the opportunity after having created the sale order.'),
}
_defaults = {
- 'shop_id': _get_shop_id,
- 'close': True,
- 'partner_id': _selectPartner,
+ 'shop_id': _get_shop_id,
+ 'close': True,
+ 'partner_id': _selectPartner,
}
crm_make_sale()
diff --git a/addons/sale_journal/__openerp__.py b/addons/sale_journal/__openerp__.py
index 37fc05fd066..54a3f7afd95 100644
--- a/addons/sale_journal/__openerp__.py
+++ b/addons/sale_journal/__openerp__.py
@@ -24,7 +24,7 @@
'version': '1.0',
'category': 'Generic Modules/Sales & Purchases',
'description': """
- The sale journal modules allows you to categorise your
+ The sales journal modules allows you to categorise your
sales and deliveries (picking lists) between different journals.
This module is very helpful for bigger companies that
works by departments.
diff --git a/addons/sale_layout/__openerp__.py b/addons/sale_layout/__openerp__.py
index b8490c02fc9..f8db8d5d868 100755
--- a/addons/sale_layout/__openerp__.py
+++ b/addons/sale_layout/__openerp__.py
@@ -27,7 +27,7 @@
This module provides features to improve the layout of the Sales Order.
It gives you the possibility to
- * order all the lines of an sale order
+ * order all the lines of a sales order
* add titles, comment lines, sub total lines
* draw horizontal lines and put page breaks
diff --git a/addons/sale_layout/sale_layout.py b/addons/sale_layout/sale_layout.py
index f5b036d143f..853783c218d 100755
--- a/addons/sale_layout/sale_layout.py
+++ b/addons/sale_layout/sale_layout.py
@@ -31,7 +31,7 @@ class sale_order_line(osv.osv):
if line.layout_type == 'article':
return super(sale_order_line, self)._amount_line(cr, uid, ids, field_name, arg, context)
return res
-
+
def invoice_line_create(self, cr, uid, ids, context=None):
new_ids = []
list_seq = []
@@ -101,7 +101,7 @@ class sale_order_line(osv.osv):
return super(sale_order_line, self).copy(cr, uid, id, default, context)
_order = "order_id, sequence asc"
- _description = "Sale Order line"
+ _description = "Sales Order line"
_inherit = "sale.order.line"
_columns = {
'layout_type': fields.selection([
@@ -112,7 +112,7 @@ class sale_order_line(osv.osv):
('line', 'Separator Line'),
('break', 'Page Break'),]
,'Layout Type', select=True, required=True),
- 'sequence': fields.integer('Sequence Number'),
+ 'sequence': fields.integer('Layout Sequence'),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Sale Price'), readonly=True, states={'draft': [('readonly', False)]}),
'product_uom_qty': fields.float('Quantity (UoM)', digits=(16,2)),
'product_uom': fields.many2one('product.uom', 'Product UoM'),
@@ -153,4 +153,4 @@ class sale_order(osv.osv):
sale_order()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale_layout/sale_layout_view.xml b/addons/sale_layout/sale_layout_view.xml
index 3eac7eb1f3f..af901928037 100755
--- a/addons/sale_layout/sale_layout_view.xml
+++ b/addons/sale_layout/sale_layout_view.xml
@@ -4,18 +4,6 @@
[('layout_type','=', 'article')]
-
- sale.order.line.form2.inherit_1
- sale.order.line
-
- form
-
-
-
-
-
-
- sale.order.form.inherit_1
diff --git a/addons/sale_margin/sale_margin.py b/addons/sale_margin/sale_margin.py
index cd327834185..97fd3b29cef 100644
--- a/addons/sale_margin/sale_margin.py
+++ b/addons/sale_margin/sale_margin.py
@@ -64,7 +64,7 @@ class sale_order(osv.osv):
return result
_columns = {
- 'margin': fields.function(_product_margin, method=True, string='Margin', store=True, help="It gives profitability by calculating the difference between the Unit Price and Cost Price"),
+ 'margin': fields.function(_product_margin, method=True, string='Margin', store=True, help="It gives profitability by calculating the difference between the Unit Price and Cost Price."),
}
sale_order()
diff --git a/addons/sale_mrp/__openerp__.py b/addons/sale_mrp/__openerp__.py
index e9eb4cbba92..9c3404ada74 100644
--- a/addons/sale_mrp/__openerp__.py
+++ b/addons/sale_mrp/__openerp__.py
@@ -25,7 +25,7 @@
'version': '1.0',
'category': 'Generic Modules/Sales & MRP',
'description': """
- This module provides facility to the user to install mrp and sale modules
+ This module provides facility to the user to install mrp and sales modules
at a time. It is basically used when we want to keep track of production
orders generated from sales order.
It adds sales name and sales Reference on production order
@@ -35,7 +35,7 @@
'depends': ['mrp', 'sale'],
'init_xml': [],
'update_xml': [
- 'security/sale_mrp_security.xml',
+ 'security/sale_mrp_security.xml',
'security/ir.model.access.csv',
'sale_mrp_view.xml',
],
diff --git a/addons/sale_mrp/sale_mrp.py b/addons/sale_mrp/sale_mrp.py
index cea62f19fa0..ae1df1eb946 100644
--- a/addons/sale_mrp/sale_mrp.py
+++ b/addons/sale_mrp/sale_mrp.py
@@ -26,7 +26,7 @@ class mrp_production(osv.osv):
_inherit = 'mrp.production'
def _ref_calc(self, cr, uid, ids, field_names=None, arg=False, context=None):
- """ Finds reference of sale order for production order.
+ """ Finds reference of sales order for production order.
@param field_names: Names of fields.
@param arg: User defined arguments
@return: Dictionary of values.
@@ -70,8 +70,8 @@ class mrp_production(osv.osv):
return res
_columns = {
- 'sale_name': fields.function(_ref_calc, method=True, multi='sale_name', type='char', string='Sale Name', help='Indicate the name of sale order.'),
- 'sale_ref': fields.function(_ref_calc, method=True, multi='sale_name', type='char', string='Sale Reference', help='Indicate the Customer Reference from sale order.'),
+ 'sale_name': fields.function(_ref_calc, method=True, multi='sale_name', type='char', string='Sales Name', help='Indicate the name of sales order.'),
+ 'sale_ref': fields.function(_ref_calc, method=True, multi='sale_name', type='char', string='Sales Reference', help='Indicate the Customer Reference from sales order.'),
}
mrp_production()
diff --git a/addons/sale_order_dates/__openerp__.py b/addons/sale_order_dates/__openerp__.py
index 5a66d8111de..ff6e85645f8 100644
--- a/addons/sale_order_dates/__openerp__.py
+++ b/addons/sale_order_dates/__openerp__.py
@@ -21,7 +21,7 @@
{
- 'name': 'Sale Order Dates',
+ 'name': 'Sales Order Dates',
'version': '1.0',
'category': 'Generic Modules/CRM & SRM',
'description': """
diff --git a/addons/sale_order_dates/sale_order_dates.py b/addons/sale_order_dates/sale_order_dates.py
index d5d3eeca405..60595903ab8 100644
--- a/addons/sale_order_dates/sale_order_dates.py
+++ b/addons/sale_order_dates/sale_order_dates.py
@@ -54,9 +54,9 @@ class sale_order_dates(osv.osv):
return res
_columns = {
- 'commitment_date': fields.function(_get_commitment_date, method=True, store=True, type='date', string='Commitment Date', help="Date on which delivery of products is to be made"),
- 'requested_date': fields.date('Requested Date', help="Date on which customer has requested for sales"),
- 'effective_date': fields.function(_get_effective_date, method=True, type='date', store=True, string='Effective Date',help="Date on which picking is created"),
+ 'commitment_date': fields.function(_get_commitment_date, method=True, store=True, type='date', string='Commitment Date', help="Date on which delivery of products is to be made."),
+ 'requested_date': fields.date('Requested Date', help="Date on which customer has requested for sales."),
+ 'effective_date': fields.function(_get_effective_date, method=True, type='date', store=True, string='Effective Date',help="Date on which picking is created."),
}
sale_order_dates()
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 72f1bb58efd..c28dadead65 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -1941,10 +1941,10 @@ class stock_move(osv.osv):
journal_id = accounts['stock_journal']
if acc_dest == acc_variation:
- raise osv.except_osv(_('Error!'), _('Can not create Journal Entry, Output Account defined on this product and Variant account on category of this product is same.'))
+ raise osv.except_osv(_('Error!'), _('Can not create Journal Entry, Output Account defined on this product and Variant account on category of this product are same.'))
if acc_src == acc_variation:
- raise osv.except_osv(_('Error!'), _('Can not create Journal Entry, Input Account defined on this product and Variant account on category of this product is same.'))
+ raise osv.except_osv(_('Error!'), _('Can not create Journal Entry, Input Account defined on this product and Variant account on category of this product are same.'))
if not acc_src:
raise osv.except_osv(_('Error!'), _('There is no stock input account defined for this product or its category: "%s" (id: %d)') % \
@@ -2463,7 +2463,7 @@ class stock_inventory(osv.osv):
return self.pool.get('stock.move').create(cr, uid, move_vals)
def action_done(self, cr, uid, ids, context=None):
- """ Finished the inventory
+ """ Finish the inventory
@return: True
"""
if context is None:
diff --git a/addons/stock/stock_data.xml b/addons/stock/stock_data.xml
index 9b3e126edcc..00ffda73565 100644
--- a/addons/stock/stock_data.xml
+++ b/addons/stock/stock_data.xml
@@ -26,51 +26,60 @@
Physical Locationsviewterp-stock
+ Partner Locationsviewterp-partner
+ Virtual Locationsviewterp-mrp
+ ScrappedTrueinventory
+ Inventory lossinventory
+ Procurementsprocurement
+ Productionproduction
+ Supplierssupplier
+ Customerscustomer
+
-
+ view