Compare commits
4 Commits
8-sheet-wi
...
8.0-purcha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de8063d327 | ||
|
|
ee91b30fc6 | ||
|
|
6576cbaf19 | ||
|
|
996c2a6ceb |
@@ -1 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
{
|
|
||||||
'name': 'Account Cutoff Accrual Picking ODS',
|
|
||||||
'version': '8.0.0.1.0',
|
|
||||||
'category': 'Tools',
|
|
||||||
'license': 'AGPL-3',
|
|
||||||
'summary': 'Adds an Aeroo ODS report on cutoff accrual',
|
|
||||||
'description': """
|
|
||||||
Account Cutoff Accrual Picking ODS
|
|
||||||
==================================
|
|
||||||
|
|
||||||
This module will add an Aeroo ODS report on Accrued Revenue and Accrued Expense.
|
|
||||||
|
|
||||||
This module has been written by Alexis de Lattre from Akretion <alexis.delattre@akretion.com>.
|
|
||||||
""",
|
|
||||||
'author': "Akretion",
|
|
||||||
'website': 'http://www.akretion.com',
|
|
||||||
'depends': ['account_cutoff_accrual_picking', 'report_aeroo'],
|
|
||||||
'data': ['report.xml'],
|
|
||||||
'installable': True,
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
|
|
||||||
<record id="account_cutoff_accrual_picking_ods" model="ir.actions.report.xml">
|
|
||||||
<field name="name">Cutoff Accrual ODS</field>
|
|
||||||
<field name="model">account.cutoff</field>
|
|
||||||
<field name="report_name">account.cutoff.accrual.picking.ods</field>
|
|
||||||
<field name="report_type">aeroo</field>
|
|
||||||
<field name="in_format">oo-ods</field>
|
|
||||||
<field name="report_rml">account_cutoff_accrual_picking_ods/cutoff_accrual.ods</field>
|
|
||||||
<field name="parser_state">default</field>
|
|
||||||
<field name="tml_source">file</field>
|
|
||||||
<field name="out_format" ref="report_aeroo.report_mimetypes_ods_ods"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account_cutoff_accrual_picking_ods_button" model="ir.values">
|
|
||||||
<field name="name">Cutoff Accrual ODS</field>
|
|
||||||
<field name="model">account.cutoff</field>
|
|
||||||
<field name="key2">client_print_multi</field>
|
|
||||||
<field name="value" eval="'ir.actions.report.xml,%d'%account_cutoff_accrual_picking_ods"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
from . import account_fiscal_position
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
{
|
|
||||||
'name': 'Account Fiscal Position Payable Receivable',
|
|
||||||
'version': '8.0.1.0.0',
|
|
||||||
'category': 'Accounting & Finance',
|
|
||||||
'license': 'AGPL-3',
|
|
||||||
'summary': 'Configure payable/receivable accounts on fiscal positions',
|
|
||||||
'description': """
|
|
||||||
Account Fiscal Position Payable Receivable
|
|
||||||
==========================================
|
|
||||||
|
|
||||||
This module allows to configure a special *Partner Receivable Account* and a special *Partner Payable Account* on fiscal positions. This is used in the onchange of the fiscal position of partners.
|
|
||||||
|
|
||||||
This module has been written by Alexis de Lattre from Akretion <alexis.delattre@akretion.com>.
|
|
||||||
""",
|
|
||||||
'author': "Akretion",
|
|
||||||
'website': 'http://www.akretion.com',
|
|
||||||
'depends': ['account'],
|
|
||||||
'data': [
|
|
||||||
'account_fiscal_position_view.xml',
|
|
||||||
],
|
|
||||||
'installable': True,
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
from openerp import models, fields, api
|
|
||||||
|
|
||||||
|
|
||||||
class AccountFiscalPosition(models.Model):
|
|
||||||
_inherit = 'account.fiscal.position'
|
|
||||||
|
|
||||||
receivable_account_id = fields.Many2one(
|
|
||||||
'account.account', string='Partner Receivable Account',
|
|
||||||
company_dependent=True, domain=[('type', '=', 'receivable')])
|
|
||||||
payable_account_id = fields.Many2one(
|
|
||||||
'account.account', string='Partner Payable Account',
|
|
||||||
company_dependent=True, domain=[('type', '=', 'payable')])
|
|
||||||
|
|
||||||
|
|
||||||
class ResPartner(models.Model):
|
|
||||||
_inherit = 'res.partner'
|
|
||||||
|
|
||||||
@api.onchange('property_account_position')
|
|
||||||
def fiscal_position_receivable_payable_change(self):
|
|
||||||
fp = self.property_account_position
|
|
||||||
ipo = self.env['ir.property']
|
|
||||||
if fp.receivable_account_id:
|
|
||||||
self.property_account_receivable = fp.receivable_account_id
|
|
||||||
else:
|
|
||||||
self.property_account_receivable = ipo.get(
|
|
||||||
'property_account_receivable', 'res.partner')
|
|
||||||
if fp.payable_account_id:
|
|
||||||
self.property_account_payable = fp.payable_account_id
|
|
||||||
else:
|
|
||||||
self.property_account_payable = ipo.get(
|
|
||||||
'property_account_payable', 'res.partner')
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
© 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
-->
|
|
||||||
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
|
|
||||||
<record id="view_account_position_form" model="ir.ui.view">
|
|
||||||
<field name="name">receivable_payable.fiscal_position_form</field>
|
|
||||||
<field name="model">account.fiscal.position</field>
|
|
||||||
<field name="inherit_id" ref="account.view_account_position_form" />
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//field[@name='country_group_id']/.." position="after">
|
|
||||||
<group string="Payable and Receivable Accounts"
|
|
||||||
name="payable_receivable_account" col="4">
|
|
||||||
<field name="receivable_account_id"/>
|
|
||||||
<field name="payable_account_id"/>
|
|
||||||
</group>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Account Usability',
|
'name': 'Account Usability',
|
||||||
'version': '0.3',
|
'version': '0.1',
|
||||||
'category': 'Accounting & Finance',
|
'category': 'Accounting & Finance',
|
||||||
'license': 'AGPL-3',
|
'license': 'AGPL-3',
|
||||||
'summary': 'Small usability enhancements in account module',
|
'summary': 'Small usability enhancements in account module',
|
||||||
|
|||||||
@@ -43,30 +43,16 @@ class AccountInvoice(models.Model):
|
|||||||
fiscal_position = fields.Many2one(track_visibility='onchange')
|
fiscal_position = fields.Many2one(track_visibility='onchange')
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def onchange_payment_term_date_invoice(self, payment_term_id, date_invoice):
|
def action_move_create(self):
|
||||||
res = super(AccountInvoice, self).onchange_payment_term_date_invoice(
|
today = fields.Date.context_today(self)
|
||||||
payment_term_id, date_invoice)
|
for invoice in self:
|
||||||
if res and isinstance(res, dict) and 'value' in res:
|
if invoice.date_invoice and invoice.date_invoice > today:
|
||||||
res['value']['period_id'] = False
|
raise UserError(_(
|
||||||
return res
|
"You cannot validate the invoice of '%s' "
|
||||||
|
" with an invoice date (%s) in the future !") % (
|
||||||
# I really hate to see a "/" in the 'name' field of the account.move.line
|
invoice.partner_id.name_get()[0][1],
|
||||||
# generated from customer invoices linked to the partners' account because:
|
invoice.date_invoice))
|
||||||
# 1) the label of an account move line is an important field, we can't
|
return super(AccountInvoice, self).action_move_create()
|
||||||
# write a rubbish '/' in it !
|
|
||||||
# 2) the 'name' field of the account.move.line is used in the overdue letter,
|
|
||||||
# and '/' is not meaningful for our customer !
|
|
||||||
@api.multi
|
|
||||||
def action_number(self):
|
|
||||||
res = super(AccountInvoice, self).action_number()
|
|
||||||
for inv in self:
|
|
||||||
self._cr.execute(
|
|
||||||
"UPDATE account_move_line SET name= "
|
|
||||||
"CASE WHEN name='/' THEN %s "
|
|
||||||
"ELSE %s||' - '||name END "
|
|
||||||
"WHERE move_id=%s", (inv.number, inv.number, inv.move_id.id))
|
|
||||||
self.invalidate_cache()
|
|
||||||
return res
|
|
||||||
|
|
||||||
|
|
||||||
class AccountFiscalYear(models.Model):
|
class AccountFiscalYear(models.Model):
|
||||||
|
|||||||
@@ -132,13 +132,6 @@
|
|||||||
<field name="analytic_account_id" position="attributes">
|
<field name="analytic_account_id" position="attributes">
|
||||||
<attribute name="invisible"></attribute>
|
<attribute name="invisible"></attribute>
|
||||||
</field>
|
</field>
|
||||||
<field name="reconcile_ref" position="attributes">
|
|
||||||
<attribute name="invisible">1</attribute>
|
|
||||||
</field>
|
|
||||||
<field name="reconcile_ref" position="after">
|
|
||||||
<field name="reconcile_id"/>
|
|
||||||
<field name="reconcile_partial_id"/>
|
|
||||||
</field>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
def migrate(cr, version):
|
|
||||||
if not version:
|
|
||||||
return
|
|
||||||
|
|
||||||
# cf the inherit of action_number() of account.invoice
|
|
||||||
# in account_usability/account.py
|
|
||||||
cr.execute(
|
|
||||||
"UPDATE account_move_line SET name= "
|
|
||||||
"CASE WHEN account_move_line.name='/' THEN account_move.name "
|
|
||||||
"ELSE account_move.name||' - '||account_move_line.name END "
|
|
||||||
"FROM account_move WHERE account_move_line.move_id = account_move.id "
|
|
||||||
"AND account_move_line.journal_id in "
|
|
||||||
"(SELECT id FROM account_journal WHERE type in ('sale', 'sale_refund'))")
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
def migrate(cr, version):
|
|
||||||
if not version:
|
|
||||||
return
|
|
||||||
|
|
||||||
# cf the inherit of action_number() of account.invoice
|
|
||||||
# in account_usability/account.py
|
|
||||||
cr.execute(
|
|
||||||
"UPDATE account_move_line SET name=account_move.name "
|
|
||||||
"FROM account_move WHERE account_move_line.move_id = account_move.id "
|
|
||||||
"AND account_move_line.name='/' "
|
|
||||||
"AND account_move_line.journal_id in "
|
|
||||||
"(SELECT id FROM account_journal WHERE type in ('purchase', 'purchase_refund'))")
|
|
||||||
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -1,3 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
from . import wizard
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (http://www.akretion.com)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
|
||||||
|
|
||||||
{
|
|
||||||
'name': 'CRM Usability',
|
|
||||||
'version': '8.0.1.0.0',
|
|
||||||
'category': 'Customer Relationship Management',
|
|
||||||
'license': 'AGPL-3',
|
|
||||||
'summary': 'CRM usability enhancements',
|
|
||||||
'description': """
|
|
||||||
CRM Usability
|
|
||||||
=============
|
|
||||||
|
|
||||||
Some enhancements in the *Merge Partners* wizard:
|
|
||||||
|
|
||||||
* take into account the unaccent option of the server config file
|
|
||||||
* add optional group by on 'customer' and 'supplier' (active by default)
|
|
||||||
|
|
||||||
This module has been written by Alexis de Lattre from Akretion
|
|
||||||
<alexis.delattre@akretion.com>.
|
|
||||||
""",
|
|
||||||
'author': 'Akretion',
|
|
||||||
'website': 'http://www.akretion.com',
|
|
||||||
'depends': ['crm'],
|
|
||||||
'data': ['wizard/base_partner_merge_view.xml'],
|
|
||||||
'installable': True,
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -1,3 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
from . import base_partner_merge
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2016 Akretion (http://www.akretion.com)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
|
||||||
|
|
||||||
from openerp import models, fields, tools
|
|
||||||
|
|
||||||
|
|
||||||
class MergePartnerAutomatic(models.TransientModel):
|
|
||||||
_inherit = 'base.partner.merge.automatic.wizard'
|
|
||||||
|
|
||||||
group_by_customer = fields.Boolean('Customer', default=True)
|
|
||||||
group_by_supplier = fields.Boolean('Supplier', default=True)
|
|
||||||
|
|
||||||
def _generate_query(self, fields, maximum_group=100):
|
|
||||||
sql = super(MergePartnerAutomatic, self)._generate_query(
|
|
||||||
fields, maximum_group=maximum_group)
|
|
||||||
name_sql_original = 'lower(name)'
|
|
||||||
if name_sql_original in sql:
|
|
||||||
if tools.config.get('unaccent', False):
|
|
||||||
sql = sql.replace(
|
|
||||||
name_sql_original,
|
|
||||||
"unaccent(lower(replace(name, ' ', '')))")
|
|
||||||
else:
|
|
||||||
sql = sql.replace(
|
|
||||||
name_sql_original,
|
|
||||||
"lower(replace(name, ' ', ''))")
|
|
||||||
|
|
||||||
return sql
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<record id="base_partner_merge_automatic_wizard_form" model="ir.ui.view">
|
|
||||||
<field name="name">rvip.base.partner.merge.automatic.wizard.form</field>
|
|
||||||
<field name="model">base.partner.merge.automatic.wizard</field>
|
|
||||||
<field name="inherit_id" ref="crm.base_partner_merge_automatic_wizard_form"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="group_by_is_company" position="after">
|
|
||||||
<field name="group_by_customer"/>
|
|
||||||
<field name="group_by_supplier"/>
|
|
||||||
</field>
|
|
||||||
<xpath expr="//field[@name='partner_ids']/tree/field[@name='is_company']" position="after">
|
|
||||||
<field name="customer"/>
|
|
||||||
<field name="supplier"/>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -184,9 +184,6 @@ class HrHolidays(models.Model):
|
|||||||
|
|
||||||
vacation_date_from = fields.Date(
|
vacation_date_from = fields.Date(
|
||||||
string='First Day of Vacation', track_visibility='onchange',
|
string='First Day of Vacation', track_visibility='onchange',
|
||||||
readonly=True, states={
|
|
||||||
'draft': [('readonly', False)],
|
|
||||||
'confirm': [('readonly', False)]},
|
|
||||||
help="Enter the first day of vacation. For example, if "
|
help="Enter the first day of vacation. For example, if "
|
||||||
"you leave one full calendar week, the first day of vacation "
|
"you leave one full calendar week, the first day of vacation "
|
||||||
"is Monday morning (and not Friday of the week before)")
|
"is Monday morning (and not Friday of the week before)")
|
||||||
@@ -194,16 +191,11 @@ class HrHolidays(models.Model):
|
|||||||
('morning', 'Morning'),
|
('morning', 'Morning'),
|
||||||
('noon', 'Noon'),
|
('noon', 'Noon'),
|
||||||
], string="Start of Vacation", track_visibility='onchange',
|
], string="Start of Vacation", track_visibility='onchange',
|
||||||
default='morning', readonly=True, states={
|
default='morning',
|
||||||
'draft': [('readonly', False)],
|
|
||||||
'confirm': [('readonly', False)]},
|
|
||||||
help="For example, if you leave one full calendar week, "
|
help="For example, if you leave one full calendar week, "
|
||||||
"the first day of vacation is Monday Morning")
|
"the first day of vacation is Monday Morning")
|
||||||
vacation_date_to = fields.Date(
|
vacation_date_to = fields.Date(
|
||||||
string='Last Day of Vacation', track_visibility='onchange',
|
string='Last Day of Vacation', track_visibility='onchange',
|
||||||
readonly=True, states={
|
|
||||||
'draft': [('readonly', False)],
|
|
||||||
'confirm': [('readonly', False)]},
|
|
||||||
help="Enter the last day of vacation. For example, if you "
|
help="Enter the last day of vacation. For example, if you "
|
||||||
"leave one full calendar week, the last day of vacation is "
|
"leave one full calendar week, the last day of vacation is "
|
||||||
"Friday evening (and not Monday of the week after)")
|
"Friday evening (and not Monday of the week after)")
|
||||||
@@ -211,9 +203,7 @@ class HrHolidays(models.Model):
|
|||||||
('noon', 'Noon'),
|
('noon', 'Noon'),
|
||||||
('evening', 'Evening'),
|
('evening', 'Evening'),
|
||||||
], string="End of Vacation", track_visibility='onchange',
|
], string="End of Vacation", track_visibility='onchange',
|
||||||
default='evening', readonly=True, states={
|
default='evening',
|
||||||
'draft': [('readonly', False)],
|
|
||||||
'confirm': [('readonly', False)]},
|
|
||||||
help="For example, if you leave one full calendar week, "
|
help="For example, if you leave one full calendar week, "
|
||||||
"the end of vacation is Friday Evening")
|
"the end of vacation is Friday Evening")
|
||||||
current_leaves_taken = fields.Float(
|
current_leaves_taken = fields.Float(
|
||||||
@@ -238,8 +228,7 @@ class HrHolidays(models.Model):
|
|||||||
# The 'name' field is displayed publicly in the calendar
|
# The 'name' field is displayed publicly in the calendar
|
||||||
# So the label should not be 'Description' but 'Public Title'
|
# So the label should not be 'Description' but 'Public Title'
|
||||||
name = fields.Char(
|
name = fields.Char(
|
||||||
string='Public Title',
|
string='Public Title', help="Warning: this title is shown publicly in the "
|
||||||
help="Warning: this title is shown publicly in the "
|
|
||||||
"calendar. Don't write private/personnal information in this field.")
|
"calendar. Don't write private/personnal information in this field.")
|
||||||
|
|
||||||
@api.one
|
@api.one
|
||||||
@@ -392,19 +381,6 @@ class HrHolidays(models.Model):
|
|||||||
res = super(HrHolidays, self).holidays_validate()
|
res = super(HrHolidays, self).holidays_validate()
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def holidays_refuse(self):
|
|
||||||
for holi in self:
|
|
||||||
if (
|
|
||||||
holi.user_id == self.env.user and
|
|
||||||
not self.pool['res.users'].has_group(
|
|
||||||
self._cr, self._uid, 'base.group_hr_manager')):
|
|
||||||
raise UserError(_(
|
|
||||||
"You cannot refuse your own Leave or Allocation "
|
|
||||||
"holiday request '%s'.")
|
|
||||||
% holi.name)
|
|
||||||
return super(HrHolidays, self).holidays_refuse()
|
|
||||||
|
|
||||||
|
|
||||||
class ResCompany(models.Model):
|
class ResCompany(models.Model):
|
||||||
_inherit = 'res.company'
|
_inherit = 'res.company'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data noupdate="0">
|
<data>
|
||||||
|
|
||||||
<record id="ir_actions_server_hr_holidays_confirm_mail" model="ir.actions.server">
|
<record id="ir_actions_server_hr_holidays_confirm_mail" model="ir.actions.server">
|
||||||
<field name="name">Auto-email confirmed leave</field>
|
<field name="name">Auto-email confirmed leave</field>
|
||||||
@@ -59,9 +59,6 @@ if not object.no_email_notification:
|
|||||||
<field name="action_id" ref="ir_actions_server_hr_holidays_refuse_mail"/>
|
<field name="action_id" ref="ir_actions_server_hr_holidays_refuse_mail"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
|
||||||
<data noupdate="1">
|
|
||||||
|
|
||||||
<record id="email_template_hr_holidays" model="email.template">
|
<record id="email_template_hr_holidays" model="email.template">
|
||||||
<field name="name">Holidays email template</field>
|
<field name="name">Holidays email template</field>
|
||||||
<field name="model_id" ref="hr_holidays.model_hr_holidays"/>
|
<field name="model_id" ref="hr_holidays.model_hr_holidays"/>
|
||||||
|
|||||||
@@ -1,3 +1,23 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- encoding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# HR Usability module for Odoo
|
||||||
|
# Copyright (C) 2015 Akretion (http://www.akretion.com)
|
||||||
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
from . import hr
|
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# HR Usability module for Odoo
|
|
||||||
# Copyright (C) 2016 Akretion (http://www.akretion.com)
|
|
||||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
from openerp import models, fields, api
|
|
||||||
|
|
||||||
|
|
||||||
class HrEmployee(models.Model):
|
|
||||||
_inherit = 'hr.employee'
|
|
||||||
|
|
||||||
country_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
birthday = fields.Date(track_visibility='onchange')
|
|
||||||
ssnid = fields.Char(track_visibility='onchange')
|
|
||||||
sinid = fields.Char(track_visibility='onchange')
|
|
||||||
identification_id = fields.Char(track_visibility='onchange')
|
|
||||||
otherid = fields.Char(track_visibility='onchange')
|
|
||||||
gender = fields.Selection(track_visibility='onchange')
|
|
||||||
marital = fields.Selection(track_visibility='onchange')
|
|
||||||
department_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
address_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
address_home_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
work_phone = fields.Char(track_visibility='onchange')
|
|
||||||
mobile_phone = fields.Char(track_visibility='onchange')
|
|
||||||
work_email = fields.Char(track_visibility='onchange')
|
|
||||||
parent_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
coach_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
job_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
passport_id = fields.Char(track_visibility='onchange')
|
|
||||||
@@ -28,10 +28,10 @@ class ResLang(models.Model):
|
|||||||
|
|
||||||
@api.v7
|
@api.v7
|
||||||
def init(self, cr):
|
def init(self, cr):
|
||||||
no_break_space = u'\u00A0'
|
narrow_no_break_space = u'\u202f'
|
||||||
cr.execute(
|
cr.execute(
|
||||||
"UPDATE res_lang SET thousands_sep=%s, grouping='[3,0]' "
|
"UPDATE res_lang SET thousands_sep=%s, grouping='[3,0]' "
|
||||||
"WHERE code='fr_FR'", (no_break_space, ))
|
"WHERE code='fr_FR'", (narrow_no_break_space, ))
|
||||||
cr.execute(
|
cr.execute(
|
||||||
"UPDATE res_lang SET grouping='[3,0]' WHERE code='en_US'")
|
"UPDATE res_lang SET grouping='[3,0]' WHERE code='en_US'")
|
||||||
return True
|
return True
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -41,7 +41,6 @@ class ProcurementSuggestionGenerate(models.TransientModel):
|
|||||||
location_id = fields.Many2one(
|
location_id = fields.Many2one(
|
||||||
'stock.location', string='Stock Location', required=True,
|
'stock.location', string='Stock Location', required=True,
|
||||||
default=lambda self: self.env.ref('stock.stock_location_stock'))
|
default=lambda self: self.env.ref('stock.stock_location_stock'))
|
||||||
# TODO This code must be fixed in case of multicompany project
|
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def _compute_procurement_qty(self, orderpoint):
|
def _compute_procurement_qty(self, orderpoint):
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
|
||||||
:alt: License
|
|
||||||
|
|
||||||
|
|
||||||
Product search
|
|
||||||
==============
|
|
||||||
|
|
||||||
This module allows to search product by its suppliers'code'.
|
|
||||||
It also allow to search stock picking by its suppliers'code'.
|
|
||||||
|
|
||||||
|
|
||||||
Setting
|
|
||||||
=======
|
|
||||||
|
|
||||||
No setting required.
|
|
||||||
|
|
||||||
|
|
||||||
Credits
|
|
||||||
=======
|
|
||||||
|
|
||||||
Contributors
|
|
||||||
------------
|
|
||||||
* Florian da Costa <florian.dacosta@akretion.com>
|
|
||||||
* Mourad EL HADJ MIMOUNE <mourad.elhadj.mimoune@akretion.com>
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# -*- encoding: utf-8 -*-
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# Stock Display Destination Move module for OpenERP
|
|
||||||
# Copyright (C) 2014 Akretion (http://www.akretion.com)
|
|
||||||
# @author Florian da Costa <florian.dacosta@akretion.com>
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# © 2013-TODAY Akretion (http://www.akretion.com)
|
|
||||||
# @author Florian da Costa <florian.dacosta@akretion.com>
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
|
|
||||||
{
|
|
||||||
'name': 'Product Search Supplier Code',
|
|
||||||
'version': '0.1',
|
|
||||||
'category': 'Inventory, Logistic, Storage',
|
|
||||||
'license': 'AGPL-3',
|
|
||||||
'summary': "Allow to search product by its suppliers'code",
|
|
||||||
'author': 'Akretion',
|
|
||||||
'website': 'http://www.akretion.com',
|
|
||||||
'depends': ['product', 'stock'],
|
|
||||||
'data': [
|
|
||||||
'views/product_view.xml',
|
|
||||||
'views/picking_view.xml',
|
|
||||||
],
|
|
||||||
'installable': True,
|
|
||||||
'active': False,
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
# Translation of OpenERP Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * product_search_supplier_code
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2015-11-04 15:18+0000\n"
|
|
||||||
"PO-Revision-Date: 2015-11-04 15:18+0000\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: product_search_supplier_code
|
|
||||||
#: view:product.product:0
|
|
||||||
#: view:stock.picking.in:0
|
|
||||||
msgid "Supplier Default Code"
|
|
||||||
msgstr "Code Fournisseur"
|
|
||||||
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<record id="stock_picking_supplier_code_search" model="ir.ui.view">
|
|
||||||
<field name="model">stock.picking</field>
|
|
||||||
<field name="inherit_id" ref="stock.view_picking_internal_search"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="product_id" position="after">
|
|
||||||
<field name="move_lines" string="Supplier Default Code"
|
|
||||||
filter_domain="[('move_lines.product_id.seller_ids.product_code','ilike',self)]"/>
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<record id="product_custom_search_view" model="ir.ui.view">
|
|
||||||
<field name="model">product.product</field>
|
|
||||||
<field name="inherit_id" ref="product.product_search_form_view"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="name" position="after">
|
|
||||||
<field name="seller_ids" string="Supplier Default Code"
|
|
||||||
filter_domain="[('seller_ids.product_code','ilike',self)]" />
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -6,8 +6,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
"Project-Id-Version: Odoo Server 8.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2015-09-16 21:21+0000\n"
|
"POT-Creation-Date: 2016-07-04 12:45+0000\n"
|
||||||
"PO-Revision-Date: 2015-09-16 21:21+0000\n"
|
"PO-Revision-Date: 2016-07-04 12:45+0000\n"
|
||||||
"Last-Translator: <>\n"
|
"Last-Translator: <>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -58,10 +58,42 @@ msgstr "Créé par"
|
|||||||
msgid "Created on"
|
msgid "Created on"
|
||||||
msgstr "Date de création"
|
msgstr "Date de création"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: field:purchase.suggest,last_po_date:0
|
||||||
|
msgid "Date of the Last Order"
|
||||||
|
msgstr "Date de la dernière commande"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: help:purchase.suggest,uom_id:0
|
||||||
|
msgid "Default Unit of Measure used for all stock operation."
|
||||||
|
msgstr "Unité de mesure par défaut utilisé pour toutes les opérations de stock."
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: help:purchase.suggest,uom_po_id:0
|
||||||
|
msgid "Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."
|
||||||
|
msgstr "Unité de mesure par défaut utilisé pour les commandes d'achat. Elle doit être dans la même catégorie que l'unité de mesure par défaut."
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: help:purchase.suggest,last_po_date:0
|
||||||
|
msgid "Depicts the date where the Quotation should be validated and converted into a Purchase Order, by default it's the creation date."
|
||||||
|
msgstr "Représente la date à laquelle le devis a été validé et converti en bon de commande, par défaut, c'est la date de création."
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: field:purchase.suggest,display_name:0
|
||||||
|
#: field:purchase.suggest.generate,display_name:0
|
||||||
|
#: field:purchase.suggest.po.create,display_name:0
|
||||||
|
msgid "Display Name"
|
||||||
|
msgstr "Display Name"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: field:purchase.suggest,draft_po_qty:0
|
#: field:purchase.suggest,draft_po_qty:0
|
||||||
msgid "Draft PO Quantity"
|
msgid "Draft PO Quantity"
|
||||||
msgstr "PO quantité (brouillon)"
|
msgstr "Quantité dans demande de prix"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: help:purchase.suggest,draft_po_qty:0
|
||||||
|
msgid "Draft purchase order quantity in the unit of measure of the product (NOT in the purchase unit of measure !)"
|
||||||
|
msgstr "Quantité sur la demande de prix dans l'unité de mesure du produit (PAS dans l'unité de mesure de la commande !)"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: view:purchase.suggest.generate:purchase_suggest.purchase_suggest_generate_form
|
#: view:purchase.suggest.generate:purchase_suggest.purchase_suggest_generate_form
|
||||||
@@ -90,6 +122,13 @@ msgstr "ID"
|
|||||||
msgid "Incoming Quantity"
|
msgid "Incoming Quantity"
|
||||||
msgstr "A recevoir"
|
msgstr "A recevoir"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: field:purchase.suggest,__last_update:0
|
||||||
|
#: field:purchase.suggest.generate,__last_update:0
|
||||||
|
#: field:purchase.suggest.po.create,__last_update:0
|
||||||
|
msgid "Last Modified on"
|
||||||
|
msgstr "Last Modified on"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: field:purchase.suggest,last_po_line_id:0
|
#: field:purchase.suggest,last_po_line_id:0
|
||||||
msgid "Last Purchase Order Line"
|
msgid "Last Purchase Order Line"
|
||||||
@@ -110,11 +149,26 @@ msgid "Last Updated on"
|
|||||||
msgstr "Dernière mise à jour"
|
msgstr "Dernière mise à jour"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:248
|
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:289
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Make sure you have at least an incoming picking type defined"
|
msgid "Make sure you have at least an incoming picking type defined"
|
||||||
msgstr "Make sure you have at least an incoming picking type defined"
|
msgstr "Make sure you have at least an incoming picking type defined"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: view:purchase.suggest:purchase_suggest.purchase_suggest_tree
|
||||||
|
msgid "Max Qty"
|
||||||
|
msgstr "Qté Max"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: field:purchase.suggest,max_qty:0
|
||||||
|
msgid "Max Quantity"
|
||||||
|
msgstr "Quantité Max"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: view:purchase.suggest:purchase_suggest.purchase_suggest_tree
|
||||||
|
msgid "Min Qty"
|
||||||
|
msgstr "Qté Min"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: field:purchase.suggest,min_qty:0
|
#: field:purchase.suggest,min_qty:0
|
||||||
msgid "Min Quantity"
|
msgid "Min Quantity"
|
||||||
@@ -131,13 +185,13 @@ msgid "More"
|
|||||||
msgstr "Plus"
|
msgstr "Plus"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:337
|
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:382
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "No purchase orders created or updated"
|
msgid "No purchase orders created or updated"
|
||||||
msgstr "Aucune commande fournisseur créée ou mise-à-jour"
|
msgstr "Aucune commande fournisseur créée ou mise-à-jour"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:327
|
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:372
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "No supplier configured for product '%s'."
|
msgid "No supplier configured for product '%s'."
|
||||||
msgstr "Aucune fournisseur configuré pour l'article '%s'."
|
msgstr "Aucune fournisseur configuré pour l'article '%s'."
|
||||||
@@ -173,7 +227,12 @@ msgid "Purchase Suggestions"
|
|||||||
msgstr "Suggestion réappro"
|
msgstr "Suggestion réappro"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:298
|
#: field:purchase.suggest,uom_po_id:0
|
||||||
|
msgid "Purchase UoM"
|
||||||
|
msgstr "Purchase UoM"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:343
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Purchase order updated from purchase suggestions."
|
msgid "Purchase order updated from purchase suggestions."
|
||||||
msgstr "Purchase order updated from purchase suggestions."
|
msgstr "Purchase order updated from purchase suggestions."
|
||||||
@@ -188,11 +247,21 @@ msgstr "PurchaseSuggestPoCreate"
|
|||||||
msgid "Quantity On Hand"
|
msgid "Quantity On Hand"
|
||||||
msgstr "Stock réel"
|
msgstr "Stock réel"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: field:purchase.suggest,last_po_qty:0
|
||||||
|
msgid "Quantity of the Last Order"
|
||||||
|
msgstr "Quantité de la dernière commande"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: field:purchase.suggest,qty_to_order:0
|
#: field:purchase.suggest,qty_to_order:0
|
||||||
msgid "Quantity to Order"
|
msgid "Quantity to Order"
|
||||||
msgstr "Quantité à commander"
|
msgstr "Quantité à commander"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: help:purchase.suggest,qty_to_order:0
|
||||||
|
msgid "Quantity to order in the purchase unit of measure for the product"
|
||||||
|
msgstr "Quantity to order in the purchase unit of measure for the product"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: field:purchase.suggest,orderpoint_id:0
|
#: field:purchase.suggest,orderpoint_id:0
|
||||||
msgid "Re-ordering Rule"
|
msgid "Re-ordering Rule"
|
||||||
@@ -241,13 +310,13 @@ msgid "The purchase suggestion lines display as much information as possible to
|
|||||||
msgstr "Les lignes de suggestion affichent de nombreuses informations afin de vous aider à déterminer la quantité à commander. Une fois votre décision prise, saisissez la quantité dans la dernière colonne."
|
msgstr "Les lignes de suggestion affichent de nombreuses informations afin de vous aider à déterminer la quantité à commander. Une fois votre décision prise, saisissez la quantité dans la dernière colonne."
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:103
|
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:120
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There are 2 orderpoints (%s and %s) for the same product on stock location %s or its children."
|
msgid "There are 2 orderpoints (%s and %s) for the same product on stock location %s or its children."
|
||||||
msgstr "Il y a 2 règles de réassort (%s et %s) pour le même article pour l'emplacement de stock %s ou l'un de ses enfants."
|
msgstr "Il y a 2 règles de réassort (%s et %s) pour le même article pour l'emplacement de stock %s ou l'un de ses enfants."
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:172
|
#: code:addons/purchase_suggest/wizard/purchase_suggest.py:192
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There are no purchase suggestions to generate."
|
msgid "There are no purchase suggestions to generate."
|
||||||
msgstr "Aucune suggestion d'achat à faire."
|
msgstr "Aucune suggestion d'achat à faire."
|
||||||
@@ -257,12 +326,36 @@ msgstr "Aucune suggestion d'achat à faire."
|
|||||||
msgid "This wizard will generate purchase suggestions based on the following rules:"
|
msgid "This wizard will generate purchase suggestions based on the following rules:"
|
||||||
msgstr "Cet assistant va créer des suggestions d'achat en fonction des règles suivantes:"
|
msgstr "Cet assistant va créer des suggestions d'achat en fonction des règles suivantes:"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: field:purchase.suggest,uom_id:0
|
||||||
|
msgid "UoM"
|
||||||
|
msgstr "UoM"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: field:purchase.suggest,last_po_uom:0
|
||||||
|
msgid "UoM of the Last Order"
|
||||||
|
msgstr "UoM de la dernière commande"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: view:purchase.suggest.generate:purchase_suggest.purchase_suggest_generate_form
|
#: view:purchase.suggest.generate:purchase_suggest.purchase_suggest_generate_form
|
||||||
msgid "if the quantity on hand + incoming quantity - outgoing quantity + quantity in draft purchase orders is strictly inferior to the minimum stock level, it will create a purchase suggestion line"
|
msgid "if the quantity on hand + incoming quantity - outgoing quantity + quantity in draft purchase orders is strictly inferior to the minimum stock level, it will create a purchase suggestion line"
|
||||||
msgstr "si le stock réel + la quantité à recevoir - la quantité sortante + la quantité commandée (brouillon) est strictement inférieure au stock minimum, une ligne de suggestion sera créé."
|
msgstr "si le stock réel + la quantité à recevoir - la quantité sortante + la quantité commandée (brouillon) est strictement inférieure au stock minimum, une ligne de suggestion sera créé."
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: help:purchase.suggest,max_qty:0
|
||||||
|
#: help:purchase.suggest,min_qty:0
|
||||||
|
msgid "in the unit of measure for the product"
|
||||||
|
msgstr "dans l'unité de mesure du produit"
|
||||||
|
|
||||||
|
#. module: purchase_suggest
|
||||||
|
#: help:purchase.suggest,incoming_qty:0
|
||||||
|
#: help:purchase.suggest,outgoing_qty:0
|
||||||
|
#: help:purchase.suggest,qty_available:0
|
||||||
|
msgid "in the unit of measure of the product"
|
||||||
|
msgstr "dans l'unité de mesure du produit"
|
||||||
|
|
||||||
#. module: purchase_suggest
|
#. module: purchase_suggest
|
||||||
#: view:purchase.suggest.generate:purchase_suggest.purchase_suggest_generate_form
|
#: view:purchase.suggest.generate:purchase_suggest.purchase_suggest_generate_form
|
||||||
msgid "it will search all the re-ordering rules linked to the selected stock location, limited to the product categories and the suppliers if some were selected"
|
msgid "it will search all the re-ordering rules linked to the selected stock location, limited to the product categories and the suppliers if some were selected"
|
||||||
msgstr "Pour chercher toutes les règles de réassort liées à l'emplacement sélectionné, à la catégorie d'article et aux fournisseurs (si ils sont sélectionnés)"
|
msgstr "Pour chercher toutes les règles de réassort liées à l'emplacement sélectionné, à la catégorie d'article et aux fournisseurs (si ils sont sélectionnés)"
|
||||||
|
|
||||||
|
|||||||
12
purchase_suggest/odoo-purchase_suggest.patch
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
diff --git a/addons/stock/procurement.py b/addons/stock/procurement.py
|
||||||
|
index 7b067ed..98857e6 100644
|
||||||
|
--- a/addons/stock/procurement.py
|
||||||
|
+++ b/addons/stock/procurement.py
|
||||||
|
@@ -342,6 +342,7 @@ class procurement_order(osv.osv):
|
||||||
|
|
||||||
|
procurement_obj = self.pool.get('procurement.order')
|
||||||
|
dom = company_id and [('company_id', '=', company_id)] or []
|
||||||
|
+ dom.append(('suggest', '=', False))
|
||||||
|
orderpoint_ids = orderpoint_obj.search(cr, uid, dom)
|
||||||
|
prev_ids = []
|
||||||
|
while orderpoint_ids:
|
||||||
@@ -20,20 +20,10 @@
|
|||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from openerp import models, fields, api
|
from openerp import models, fields
|
||||||
|
|
||||||
|
|
||||||
class StockWarehouseOrderpoint(models.Model):
|
class StockWarehouseOrderpoint(models.Model):
|
||||||
_inherit = 'stock.warehouse.orderpoint'
|
_inherit = 'stock.warehouse.orderpoint'
|
||||||
|
|
||||||
suggest = fields.Boolean(string='Suggest', default=True)
|
suggest = fields.Boolean(string='Suggest', default=True)
|
||||||
|
|
||||||
|
|
||||||
class ProcurementOrder(models.Model):
|
|
||||||
_inherit = 'procurement.order'
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _product_virtual_get(self, order_point):
|
|
||||||
if order_point.suggest:
|
|
||||||
return None
|
|
||||||
return super(ProcurementOrder, self)._product_virtual_get(order_point)
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
from openerp import models, fields, api, _
|
from openerp import models, fields, api, _
|
||||||
import openerp.addons.decimal_precision as dp
|
import openerp.addons.decimal_precision as dp
|
||||||
from openerp.tools import float_compare, float_is_zero
|
from openerp.tools import float_compare
|
||||||
from openerp.exceptions import Warning
|
from openerp.exceptions import Warning
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@@ -363,20 +363,21 @@ class PurchaseSuggestPoCreate(models.TransientModel):
|
|||||||
# value = [(product1, qty1, uom1), (product2, qty2, uom2)]
|
# value = [(product1, qty1, uom1), (product2, qty2, uom2)]
|
||||||
psuggest_ids = self.env.context.get('active_ids')
|
psuggest_ids = self.env.context.get('active_ids')
|
||||||
location = False
|
location = False
|
||||||
precision = self.env['decimal.precision'].precision_get(
|
|
||||||
'Product Unit of Measure')
|
|
||||||
for line in self.env['purchase.suggest'].browse(psuggest_ids):
|
for line in self.env['purchase.suggest'].browse(psuggest_ids):
|
||||||
if not location:
|
if not location:
|
||||||
location = line.location_id
|
location = line.location_id
|
||||||
if float_is_zero(line.qty_to_order, precision_digits=precision):
|
if line.qty_to_order == 0.0:
|
||||||
continue
|
continue
|
||||||
if not line.product_id.seller_id:
|
if not line.product_id.seller_id:
|
||||||
raise Warning(_(
|
raise Warning(_(
|
||||||
"No supplier configured for product '%s'.")
|
"No supplier configured for product '%s'.")
|
||||||
% line.product_id.name)
|
% line.product_id.name)
|
||||||
po_to_create.setdefault(
|
if (line.seller_id, line.company_id) in po_to_create:
|
||||||
(line.seller_id, line.company_id), []).append(
|
po_to_create[(line.seller_id, line.company_id)].append(
|
||||||
(line.product_id, line.qty_to_order, line.uom_po_id))
|
(line.product_id, line.qty_to_order, line.uom_po_id))
|
||||||
|
else:
|
||||||
|
po_to_create[(line.seller_id, line.company_id)] = [
|
||||||
|
(line.product_id, line.qty_to_order, line.uom_po_id)]
|
||||||
if not po_to_create:
|
if not po_to_create:
|
||||||
raise Warning(_('No purchase orders created or updated'))
|
raise Warning(_('No purchase orders created or updated'))
|
||||||
po_ids = []
|
po_ids = []
|
||||||
@@ -388,5 +389,9 @@ class PurchaseSuggestPoCreate(models.TransientModel):
|
|||||||
|
|
||||||
action = self.env['ir.actions.act_window'].for_xml_id(
|
action = self.env['ir.actions.act_window'].for_xml_id(
|
||||||
'purchase', 'purchase_rfq')
|
'purchase', 'purchase_rfq')
|
||||||
action['domain'] = [('id', 'in', po_ids)]
|
action.update({
|
||||||
|
'nodestroy': False,
|
||||||
|
'target': 'current',
|
||||||
|
'domain': [('id', 'in', po_ids)],
|
||||||
|
})
|
||||||
return action
|
return action
|
||||||
|
|||||||
5
purchase_suggest_supplierinfo_on_product/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2016 Chafique DELLI @ Akretion
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from . import wizard
|
||||||
20
purchase_suggest_supplierinfo_on_product/__openerp__.py
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2016 Chafique DELLI @ Akretion
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
{
|
||||||
|
'name': 'Purchase Suggest Supplierinfo on Product',
|
||||||
|
'summary': 'Replace orderpoints by supplierinfo on product',
|
||||||
|
'version': '8.0.1.0.0',
|
||||||
|
'category': 'Purchase Management',
|
||||||
|
'website': 'http://akretion.com',
|
||||||
|
'author': 'Akretion',
|
||||||
|
'license': 'AGPL-3',
|
||||||
|
'installable': True,
|
||||||
|
'depends': [
|
||||||
|
'purchase_suggest',
|
||||||
|
'product_variant_supplierinfo'
|
||||||
|
],
|
||||||
|
'data': [
|
||||||
|
'wizard/purchase_suggest_view.xml',
|
||||||
|
]
|
||||||
|
}
|
||||||
74
purchase_suggest_supplierinfo_on_product/i18n/fr.po
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * purchase_suggest_supplierinfo_on_product
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 8.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2016-07-04 13:57+0000\n"
|
||||||
|
"PO-Revision-Date: 2016-07-04 13:57+0000\n"
|
||||||
|
"Last-Translator: <>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: view:purchase.suggest.generate:purchase_suggest_supplierinfo_on_product.purchase_suggest_generate_form
|
||||||
|
msgid "Create Purchase Orders"
|
||||||
|
msgstr "Créer les commandes d'achat"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: view:purchase.suggest.generate:purchase_suggest_supplierinfo_on_product.purchase_suggest_generate_form
|
||||||
|
msgid "More"
|
||||||
|
msgstr "Autres options"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: view:purchase.suggest.generate:purchase_suggest_supplierinfo_on_product.purchase_suggest_generate_form
|
||||||
|
msgid "Once you have changed the Draft PO Quantity for all the lines you would like to re-order, select this lines and click on"
|
||||||
|
msgstr "Une fois que vous avez modifié la quantité de la demande de prix pour toutes les lignes pour lesquelles vous souhaitez re-commander, sélectionnez ces lignes et cliquer sur"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: model:ir.model,name:purchase_suggest_supplierinfo_on_product.model_purchase_suggest
|
||||||
|
msgid "Purchase Suggestions"
|
||||||
|
msgstr "Suggestion réappro"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: model:ir.model,name:purchase_suggest_supplierinfo_on_product.model_purchase_suggest_generate
|
||||||
|
msgid "Start to generate the purchase suggestions"
|
||||||
|
msgstr "Commencer à générer les suggestions d'achat"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: code:addons/purchase_suggest_supplierinfo_on_product/wizard/purchase_suggest.py:111
|
||||||
|
#, python-format
|
||||||
|
msgid "The new quantity for the existing purchase order line can not be less than the old quantity"
|
||||||
|
msgstr "La nouvelle quantité pour la ligne de commande d'achat existante ne peut pas être inférieure à l'ancienne quantité"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: view:purchase.suggest.generate:purchase_suggest_supplierinfo_on_product.purchase_suggest_generate_form
|
||||||
|
msgid "The purchase suggestion lines display as much information as possible to help you take the decision on the quantity that you would like to re-order. When you have decided the quantity you want to re-order, add the quantity at the value in the Draft PO Quantity column."
|
||||||
|
msgstr "Les lignes de suggestion d'achat affichent autant d'informations que possible afin de vous aider à évaluer la quantité à re-commander. Quand vous avez décidé de la quantité à re-commander, ajouter cette quantité à la valeur de la colonne Quantité Demande de Prix."
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: code:addons/purchase_suggest_supplierinfo_on_product/wizard/purchase_suggest.py:95
|
||||||
|
#, python-format
|
||||||
|
msgid "There are no purchase suggestions to generate."
|
||||||
|
msgstr "Aucune suggestion d'achat à faire."
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: view:purchase.suggest:purchase_suggest_supplierinfo_on_product.purchase_suggest_tree
|
||||||
|
msgid "context.get('purchase_suggest_supplier')"
|
||||||
|
msgstr "context.get('purchase_suggest_supplier')"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: view:purchase.suggest.generate:purchase_suggest_supplierinfo_on_product.purchase_suggest_generate_form
|
||||||
|
msgid "if found product then it will create a purchase suggestion line"
|
||||||
|
msgstr "il sera créé autant de lignes de suggestion d'achat que de produits trouvés"
|
||||||
|
|
||||||
|
#. module: purchase_suggest_supplierinfo_on_product
|
||||||
|
#: view:purchase.suggest.generate:purchase_suggest_supplierinfo_on_product.purchase_suggest_generate_form
|
||||||
|
msgid "it will search all the products linked to the selected stock location and suppliers, limited to the product categories if some were selected"
|
||||||
|
msgstr "il recherchera tous les produits pour les emplacements et les fournisseurs sélectionnés, en filtrant également sur la catégorie si l'option a été renseignée"
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2016 Chafique DELLI @ Akretion
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
|
||||||
|
from . import purchase_suggest
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2016 Chafique DELLI @ Akretion
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from openerp import models, fields, api, _
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseSuggestionGenerate(models.TransientModel):
|
||||||
|
_inherit = 'purchase.suggest.generate'
|
||||||
|
|
||||||
|
seller_ids = fields.Many2many(
|
||||||
|
required=True,
|
||||||
|
domain=[('supplier', '=', True), ('parent_id', '=', False)])
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _prepare_suggest_line(self, product_id, qty_dict):
|
||||||
|
sline = super(PurchaseSuggestionGenerate, self)._prepare_suggest_line(
|
||||||
|
product_id, qty_dict)
|
||||||
|
sline['company_id'] = self.env.user.company_id.id
|
||||||
|
sline['qty_to_order'] = 0.0
|
||||||
|
if sline['seller_id'] not in self.seller_ids.ids:
|
||||||
|
product = self.env['product.product'].browse(sline['product_id'])
|
||||||
|
for supplierinfo in product.seller_ids:
|
||||||
|
if supplierinfo.name in self.seller_ids:
|
||||||
|
sline['seller_id'] = supplierinfo.name.id
|
||||||
|
porderlines = self.env['purchase.order.line'].search([
|
||||||
|
('state', 'not in', ('draft', 'cancel')),
|
||||||
|
('product_id', '=', product_id),
|
||||||
|
('partner_id', '=', sline['seller_id'])],
|
||||||
|
order='id desc', limit=1)
|
||||||
|
if not porderlines:
|
||||||
|
sline['last_po_line_id'] = False
|
||||||
|
return sline
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def generate_products_dict(self):
|
||||||
|
ppo = self.env['product.product']
|
||||||
|
products = {}
|
||||||
|
product_domain = self._prepare_product_domain()
|
||||||
|
product_domain.append(('purchase_ok', '=', True))
|
||||||
|
product_to_analyse = ppo.search(product_domain)
|
||||||
|
for product in product_to_analyse:
|
||||||
|
products[product.id] = {
|
||||||
|
'min_qty': 0.0,
|
||||||
|
'max_qty': 0.0,
|
||||||
|
'draft_po_qty': 0.0, # This value is set later on
|
||||||
|
'orderpoint': False,
|
||||||
|
'product': product,
|
||||||
|
}
|
||||||
|
return products
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def run(self):
|
||||||
|
self.ensure_one()
|
||||||
|
pso = self.env['purchase.suggest']
|
||||||
|
polo = self.env['purchase.order.line']
|
||||||
|
puo = self.env['product.uom']
|
||||||
|
p_suggest_lines = []
|
||||||
|
products = self.generate_products_dict()
|
||||||
|
polines = polo.search([
|
||||||
|
('state', '=', 'draft'), ('product_id', 'in', products.keys())])
|
||||||
|
for line in polines:
|
||||||
|
qty_product_po_uom = puo._compute_qty_obj(
|
||||||
|
line.product_uom, line.product_qty, line.product_id.uom_id)
|
||||||
|
products[line.product_id.id]['draft_po_qty'] += qty_product_po_uom
|
||||||
|
virtual_qties = self.pool['product.product']._product_available(
|
||||||
|
self._cr, self._uid, products.keys(),
|
||||||
|
context={'location': self.location_id.id})
|
||||||
|
for product_id, qty_dict in products.iteritems():
|
||||||
|
qty_dict['virtual_available'] =\
|
||||||
|
virtual_qties[product_id]['virtual_available']
|
||||||
|
qty_dict['incoming_qty'] =\
|
||||||
|
virtual_qties[product_id]['incoming_qty']
|
||||||
|
qty_dict['outgoing_qty'] =\
|
||||||
|
virtual_qties[product_id]['outgoing_qty']
|
||||||
|
qty_dict['qty_available'] =\
|
||||||
|
virtual_qties[product_id]['qty_available']
|
||||||
|
vals = self._prepare_suggest_line(product_id, qty_dict)
|
||||||
|
if vals:
|
||||||
|
p_suggest_lines.append(vals)
|
||||||
|
p_suggest_lines_sorted = sorted(
|
||||||
|
p_suggest_lines, key=lambda to_sort: to_sort['seller_id'])
|
||||||
|
if p_suggest_lines_sorted:
|
||||||
|
p_suggest_ids = []
|
||||||
|
for p_suggest_line in p_suggest_lines_sorted:
|
||||||
|
p_suggest = pso.create(p_suggest_line)
|
||||||
|
p_suggest_ids.append(p_suggest.id)
|
||||||
|
action = self.env['ir.actions.act_window'].for_xml_id(
|
||||||
|
'purchase_suggest', 'purchase_suggest_action')
|
||||||
|
action.update({
|
||||||
|
'target': 'current',
|
||||||
|
'domain': [('id', 'in', p_suggest_ids)],
|
||||||
|
'context': {'purchase_suggest_supplier': True}
|
||||||
|
})
|
||||||
|
return action
|
||||||
|
else:
|
||||||
|
raise Warning(_(
|
||||||
|
"There are no purchase suggestions to generate."))
|
||||||
|
|
||||||
|
|
||||||
|
class PurchaseSuggest(models.TransientModel):
|
||||||
|
_inherit = 'purchase.suggest'
|
||||||
|
|
||||||
|
draft_po_qty = fields.Float(readonly=False)
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def write(self, vals):
|
||||||
|
#vals['qty_to_order'] = 0.0
|
||||||
|
if 'draft_po_qty' in vals:
|
||||||
|
if vals['draft_po_qty'] > self.draft_po_qty:
|
||||||
|
vals['qty_to_order'] = vals['draft_po_qty'] - self.draft_po_qty
|
||||||
|
else:
|
||||||
|
raise Warning(_('The new quantity for the existing '
|
||||||
|
'purchase order line can not be less than '
|
||||||
|
'the old quantity'))
|
||||||
|
super(PurchaseSuggest, self).write(vals)
|
||||||
|
return True
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<record id="purchase_suggest_tree" model="ir.ui.view">
|
||||||
|
<field name="model">purchase.suggest</field>
|
||||||
|
<field name="inherit_id" ref="purchase_suggest.purchase_suggest_tree"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//tree[@string='Purchase Suggestions']/field[@name='min_qty']" position="attributes">
|
||||||
|
<attribute name="invisible">context.get('purchase_suggest_supplier')</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//tree[@string='Purchase Suggestions']/field[@name='max_qty']" position="attributes">
|
||||||
|
<attribute name="invisible">context.get('purchase_suggest_supplier')</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//tree[@string='Purchase Suggestions']/field[@name='qty_to_order']" position="attributes">
|
||||||
|
<attribute name="invisible">context.get('purchase_suggest_supplier')</attribute>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="purchase_suggest_generate_form" model="ir.ui.view">
|
||||||
|
<field name="model">purchase.suggest.generate</field>
|
||||||
|
<field name="inherit_id" ref="purchase_suggest.purchase_suggest_generate_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//form[@string='Generate Purchase Suggestions']/ol" position="replace">
|
||||||
|
<ol>
|
||||||
|
<li>it will search all the products linked to the selected stock location and suppliers, limited to the product categories if some were selected</li>
|
||||||
|
<li>if found product then it will create a purchase suggestion line</li>
|
||||||
|
</ol>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//form[@string='Generate Purchase Suggestions']/p[2]" position="replace">
|
||||||
|
<p>The purchase suggestion lines display as much information as possible to help you take the decision on the quantity that you would like to re-order. When you have decided the quantity you want to re-order, add the quantity at the value in the Draft PO Quantity column.</p>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//form[@string='Generate Purchase Suggestions']/p[3]" position="replace">
|
||||||
|
<p>Once you have changed the Draft PO Quantity for all the lines you would like to re-order, select this lines and click on <i>More</i> > <i>Create Purchase Orders</i></p>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</data>
|
||||||
|
</openerp>
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
|
# -*- encoding: utf-8 -*-
|
||||||
from . import purchase
|
from . import purchase
|
||||||
from . import supplierinfo
|
|
||||||
|
|||||||
@@ -1,7 +1,24 @@
|
|||||||
# coding: utf-8
|
# -*- encoding: utf-8 -*-
|
||||||
# Copyright (C) 2015 Akretion (http://www.akretion.com)
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Purchase Usability Extension module for OpenERP
|
||||||
|
# Copyright (C) 2014 Akretion (http://www.akretion.com)
|
||||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -14,19 +31,15 @@
|
|||||||
Purchase Usability Extension
|
Purchase Usability Extension
|
||||||
============================
|
============================
|
||||||
|
|
||||||
- Display Invoices and Incoming Shipments on Purchase Order form view
|
Display Invoices and Incoming Shipments on Purchase Order form view (in dedicated tabs).
|
||||||
(in dedicated tabs).
|
|
||||||
- Add a dedicated menu and tree view to Product Supplier Info model.
|
|
||||||
|
|
||||||
Please contact Alexis de Lattre from Akretion <alexis.delattre@akretion.com>
|
Please contact Alexis de Lattre from Akretion <alexis.delattre@akretion.com> for any help or question about this module.
|
||||||
for any help or question about this module.
|
|
||||||
""",
|
""",
|
||||||
'author': 'Akretion',
|
'author': 'Akretion',
|
||||||
'website': 'http://www.akretion.com',
|
'website': 'http://www.akretion.com',
|
||||||
'depends': ['purchase'],
|
'depends': ['purchase'],
|
||||||
'data': [
|
'data': [
|
||||||
'purchase_view.xml',
|
'purchase_view.xml',
|
||||||
'supplierinfo_view.xml',
|
|
||||||
],
|
],
|
||||||
'active': False,
|
'active': False,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,123 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * purchase_usability_extension
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-11-16 16:58+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-11-16 18:01+0100\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
"Language: fr\n"
|
|
||||||
"X-Generator: Poedit 1.8.7.1\n"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Delay"
|
|
||||||
msgstr "Delay"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "Deliveries"
|
|
||||||
msgstr "Livraisons"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "Deliveries & Invoices"
|
|
||||||
msgstr "Livraisons & Factures"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Delivery"
|
|
||||||
msgstr "Livraison"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.view_purchase_order_filter
|
|
||||||
msgid "Fully Received"
|
|
||||||
msgstr "Complètement reçue"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Group by..."
|
|
||||||
msgstr "Grouper par..."
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "Invoices"
|
|
||||||
msgstr "Factures"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.view_purchase_order_filter
|
|
||||||
msgid "Not Fully Received"
|
|
||||||
msgstr "Pas Complètement Reçue"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "Other Information"
|
|
||||||
msgstr "Autre information"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.model,name:purchase_usability_extension.model_res_partner
|
|
||||||
msgid "Partner"
|
|
||||||
msgstr "Partenaire"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Product"
|
|
||||||
msgstr "Article :"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Product (code or name)"
|
|
||||||
msgstr "Article (code ou nom)"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.ui.menu,name:purchase_usability_extension.product_supplierinfo_menu
|
|
||||||
msgid "Product Supplier"
|
|
||||||
msgstr "Article Fournisseur"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.actions.act_window,name:purchase_usability_extension.product_supplierinfo_action
|
|
||||||
msgid "Product Supplier Info"
|
|
||||||
msgstr "Product Supplier Info"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.model,name:purchase_usability_extension.model_purchase_order
|
|
||||||
msgid "Purchase Order"
|
|
||||||
msgstr "Commande d'Achat"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.model,name:purchase_usability_extension.model_purchase_order_line
|
|
||||||
msgid "Purchase Order Line"
|
|
||||||
msgstr "Ligne de commande d'achat"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Quantity"
|
|
||||||
msgstr "Quantité"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: field:purchase.order.line,sequence:0
|
|
||||||
msgid "Sequence"
|
|
||||||
msgstr "Séquence"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Supplier"
|
|
||||||
msgstr "Fournisseur"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_tree
|
|
||||||
msgid "Supplier Code"
|
|
||||||
msgstr "Code Fournisseur"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "selection"
|
|
||||||
msgstr "sélection"
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * purchase_usability_extension
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-11-16 16:58+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-11-16 16:58+0000\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Delay"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "Deliveries"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "Deliveries & Invoices"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Delivery"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.view_purchase_order_filter
|
|
||||||
msgid "Fully Received"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Group by..."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "Invoices"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.view_purchase_order_filter
|
|
||||||
msgid "Not Fully Received"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "Other Information"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.model,name:purchase_usability_extension.model_res_partner
|
|
||||||
msgid "Partner"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Product"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Product (code or name)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.ui.menu,name:purchase_usability_extension.product_supplierinfo_menu
|
|
||||||
msgid "Product Supplier"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.actions.act_window,name:purchase_usability_extension.product_supplierinfo_action
|
|
||||||
msgid "Product Supplier Info"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.model,name:purchase_usability_extension.model_purchase_order
|
|
||||||
msgid "Purchase Order"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: model:ir.model,name:purchase_usability_extension.model_purchase_order_line
|
|
||||||
msgid "Purchase Order Line"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Quantity"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: field:purchase.order.line,sequence:0
|
|
||||||
msgid "Sequence"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_filter
|
|
||||||
msgid "Supplier"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:product.supplierinfo:purchase_usability_extension.product_supplierinfo_view_tree
|
|
||||||
msgid "Supplier Code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: purchase_usability_extension
|
|
||||||
#: view:purchase.order:purchase_usability_extension.purchase_order_form
|
|
||||||
msgid "selection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
@@ -1,7 +1,24 @@
|
|||||||
# coding: utf-8
|
# -*- encoding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Purchase Usability Extension module for Odoo
|
||||||
# Copyright (C) 2015 Akretion (http://www.akretion.com)
|
# Copyright (C) 2015 Akretion (http://www.akretion.com)
|
||||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
from openerp import models, fields, api
|
from openerp import models, fields, api
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,5 @@
|
|||||||
<field name="context">{'search_default_draft': True}</field>
|
<field name="context">{'search_default_draft': True}</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -1,12 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
# © 2015 David BEAL @ Akretion
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
|
|
||||||
from openerp import models, fields
|
|
||||||
|
|
||||||
|
|
||||||
class ProductSupplierinfo(models.Model):
|
|
||||||
_inherit = 'product.supplierinfo'
|
|
||||||
|
|
||||||
supplier_is_company = fields.Boolean(
|
|
||||||
comodel_name='res.partner', related='name.is_company')
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<record id="product_supplierinfo_view_tree" model="ir.ui.view">
|
|
||||||
<field name="model">product.supplierinfo</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<tree>
|
|
||||||
<field name="sequence" widget="handle"/>
|
|
||||||
<field name="name"/>
|
|
||||||
<field name="product_name"/>
|
|
||||||
<field name="product_code" string="Supplier Code"/>
|
|
||||||
<field name="min_qty"/>
|
|
||||||
<field name="delay"/>
|
|
||||||
<field name="product_uom"/>
|
|
||||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
|
||||||
</tree>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="product_supplierinfo_view_filter" model="ir.ui.view">
|
|
||||||
<field name="model">product.supplierinfo</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<search string="Product">
|
|
||||||
<field name="name" string="Product (code or name)"
|
|
||||||
filter_domain="['|',('product_code','ilike',self),('product_name','ilike',self)]"/>
|
|
||||||
<field name="name" string="Supplier" filter_domain="[('name','ilike',self)]"/>
|
|
||||||
<filter name="supplier_not_company" string="Supplier is not a company" domain="[('supplier_is_company','=',False)]"/>
|
|
||||||
<group expand='0' string='Group by...'>
|
|
||||||
<filter string='Supplier' domain="[]" context="{'group_by' : 'name'}"/>
|
|
||||||
<filter string='Quantity' domain="[]" context="{'group_by' : 'min_qty'}"/>
|
|
||||||
<filter string='Delay' domain="[]" context="{'group_by' : 'delay'}"/>
|
|
||||||
</group>
|
|
||||||
</search>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="product_supplierinfo_action" model="ir.actions.act_window">
|
|
||||||
<field name="name">Product Supplier Info</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">product.supplierinfo</field>
|
|
||||||
<field name="view_mode">tree,form</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="product_supplierinfo_menu"
|
|
||||||
name="Product Supplier"
|
|
||||||
parent="purchase.menu_procurement_management_product"
|
|
||||||
action="product_supplierinfo_action"
|
|
||||||
sequence="50"/>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -1,55 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * sale_stock_usability
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-07-13 12:36+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-07-13 14:37+0200\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
"Language: fr\n"
|
|
||||||
"X-Generator: Poedit 1.8.7.1\n"
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: view:sale.order:sale_stock_usability.view_order_form_inherit
|
|
||||||
msgid "Delivery Orders"
|
|
||||||
msgstr "Livraisons"
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: view:procurement.group:sale_stock_usability.procurement_group_form_view
|
|
||||||
#: field:procurement.group,picking_ids:0
|
|
||||||
msgid "Pickings"
|
|
||||||
msgstr "Préparations"
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: model:ir.model,name:sale_stock_usability.model_procurement_group
|
|
||||||
msgid "Procurement Requisition"
|
|
||||||
msgstr "Demande d'approvisionnement"
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: view:procurement.group:sale_stock_usability.procurement_group_form_view
|
|
||||||
#: field:procurement.group,sale_ids:0
|
|
||||||
msgid "Sale Orders"
|
|
||||||
msgstr "Sale Orders"
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: model:ir.model,name:sale_stock_usability.model_sale_order
|
|
||||||
msgid "Sales Order"
|
|
||||||
msgstr "Bon de commande"
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: model:ir.model,name:sale_stock_usability.model_sale_order_line
|
|
||||||
msgid "Sales Order Line"
|
|
||||||
msgstr "Ligne de commandes de vente"
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: view:stock.picking:sale_stock_usability.view_picking_internal_search_inherit
|
|
||||||
msgid "[('invoice_state', '=', '2binvoiced'), ('state', '=', 'done')]"
|
|
||||||
msgstr "[('invoice_state', '=', '2binvoiced'), ('state', '=', 'done')]"
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * sale_stock_usability
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-07-13 12:36+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-07-13 12:36+0000\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: view:sale.order:sale_stock_usability.view_order_form_inherit
|
|
||||||
msgid "Delivery Orders"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: view:procurement.group:sale_stock_usability.procurement_group_form_view
|
|
||||||
#: field:procurement.group,picking_ids:0
|
|
||||||
msgid "Pickings"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: model:ir.model,name:sale_stock_usability.model_procurement_group
|
|
||||||
msgid "Procurement Requisition"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: view:procurement.group:sale_stock_usability.procurement_group_form_view
|
|
||||||
#: field:procurement.group,sale_ids:0
|
|
||||||
msgid "Sale Orders"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: model:ir.model,name:sale_stock_usability.model_sale_order
|
|
||||||
msgid "Sales Order"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: model:ir.model,name:sale_stock_usability.model_sale_order_line
|
|
||||||
msgid "Sales Order Line"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_stock_usability
|
|
||||||
#: view:stock.picking:sale_stock_usability.view_picking_internal_search_inherit
|
|
||||||
msgid "[('invoice_state', '=', '2binvoiced'), ('state', '=', 'done')]"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -1,49 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * sale_usability_extension
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-07-13 11:01+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-07-13 13:03+0200\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
"Language: fr\n"
|
|
||||||
"X-Generator: Poedit 1.8.7.1\n"
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: model:ir.model,name:sale_usability_extension.model_account_invoice_line
|
|
||||||
msgid "Invoice Line"
|
|
||||||
msgstr "Lignes de facture"
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: view:sale.order:sale_usability_extension.view_order_form
|
|
||||||
msgid "Invoices"
|
|
||||||
msgstr "Factures"
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: field:account.invoice.line,sale_line_ids:0
|
|
||||||
msgid "Sale Order Lines"
|
|
||||||
msgstr "Lignes de Vente"
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: model:ir.model,name:sale_usability_extension.model_sale_order
|
|
||||||
msgid "Sales Order"
|
|
||||||
msgstr "Bon de commande"
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: view:sale.order:sale_usability_extension.view_order_tree
|
|
||||||
#: view:sale.order:sale_usability_extension.view_quotation_tree
|
|
||||||
msgid "Total Untaxed"
|
|
||||||
msgstr "Total HT"
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: view:sale.order:sale_usability_extension.view_order_form
|
|
||||||
msgid "selection"
|
|
||||||
msgstr "selection"
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * sale_usability_extension
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-07-13 11:01+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-07-13 11:01+0000\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: model:ir.model,name:sale_usability_extension.model_account_invoice_line
|
|
||||||
msgid "Invoice Line"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: view:sale.order:sale_usability_extension.view_order_form
|
|
||||||
msgid "Invoices"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: field:account.invoice.line,sale_line_ids:0
|
|
||||||
msgid "Sale Order Lines"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: model:ir.model,name:sale_usability_extension.model_sale_order
|
|
||||||
msgid "Sales Order"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: view:sale.order:sale_usability_extension.view_order_tree
|
|
||||||
#: view:sale.order:sale_usability_extension.view_quotation_tree
|
|
||||||
msgid "Total Untaxed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: sale_usability_extension
|
|
||||||
#: view:sale.order:sale_usability_extension.view_order_form
|
|
||||||
msgid "selection"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
<field name="model">stock.picking</field>
|
<field name="model">stock.picking</field>
|
||||||
<field name="inherit_id" ref="stock.view_picking_form" />
|
<field name="inherit_id" ref="stock.view_picking_form" />
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="origin" position="after">
|
<field name="group_id" position="before">
|
||||||
<field name="sale_id" readonly="1" attrs="{'invisible': [('picking_type_code', '!=', 'outgoing')]}"/>
|
<field name="sale_id" readonly="1" attrs="{'invisible': [('picking_type_code', '!=', 'outgoing')]}"/>
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
from . import stock
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
# © 2016 David BEAL
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
|
|
||||||
{
|
|
||||||
'name': 'Stock Picking Zip',
|
|
||||||
'summary': "Allow to group picking list by zip code",
|
|
||||||
'version': '8.0.0.0.1',
|
|
||||||
'category': 'stock',
|
|
||||||
'author': 'Akretion',
|
|
||||||
'description': """
|
|
||||||
Allow to group picking list by zip code
|
|
||||||
|
|
||||||
|
|
||||||
Author: David BEAL
|
|
||||||
""",
|
|
||||||
'depends': [
|
|
||||||
'stock',
|
|
||||||
],
|
|
||||||
'website': 'http://www.akretion.com/',
|
|
||||||
'data': [
|
|
||||||
'stock_view.xml',
|
|
||||||
],
|
|
||||||
'installable': True,
|
|
||||||
'license': 'AGPL-3',
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * stock_picking_zip
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-09-21 10:46+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-09-21 12:47+0200\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
"Language: fr\n"
|
|
||||||
"X-Generator: Poedit 1.8.7.1\n"
|
|
||||||
|
|
||||||
#. module: stock_picking_zip
|
|
||||||
#: view:stock.picking:stock_picking_zip.view_picking_internal_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "Grouper par"
|
|
||||||
|
|
||||||
#. module: stock_picking_zip
|
|
||||||
#: model:ir.model,name:stock_picking_zip.model_stock_picking
|
|
||||||
msgid "Picking List"
|
|
||||||
msgstr "Liste de livraison"
|
|
||||||
|
|
||||||
#. module: stock_picking_zip
|
|
||||||
#: help:stock.picking,short_zip:0
|
|
||||||
msgid "Troncated zip code to a limited chars number allowing group by"
|
|
||||||
msgstr "Code postal tronqué permettant de faire des regroupements"
|
|
||||||
|
|
||||||
#. module: stock_picking_zip
|
|
||||||
#: view:stock.picking:stock_picking_zip.view_picking_internal_search
|
|
||||||
#: field:stock.picking,short_zip:0
|
|
||||||
msgid "Zip"
|
|
||||||
msgstr "Code Postal"
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * stock_picking_zip
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-09-21 10:46+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-09-21 10:46+0000\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: stock_picking_zip
|
|
||||||
#: view:stock.picking:stock_picking_zip.view_picking_internal_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_picking_zip
|
|
||||||
#: model:ir.model,name:stock_picking_zip.model_stock_picking
|
|
||||||
msgid "Picking List"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_picking_zip
|
|
||||||
#: help:stock.picking,short_zip:0
|
|
||||||
msgid "Troncated zip code to a limited chars number allowing group by"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_picking_zip
|
|
||||||
#: view:stock.picking:stock_picking_zip.view_picking_internal_search
|
|
||||||
#: field:stock.picking,short_zip:0
|
|
||||||
msgid "Zip"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
# © 2016 David BEAL @ Akretion <david.beal@akretion.com>
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
|
|
||||||
from openerp import models, fields, api
|
|
||||||
|
|
||||||
|
|
||||||
class StockPicking(models.Model):
|
|
||||||
_inherit = 'stock.picking'
|
|
||||||
|
|
||||||
short_zip = fields.Char(
|
|
||||||
string='Zip', compute='_compute_short_zip', store=True,
|
|
||||||
help="Troncated zip code to a limited chars number allowing group by")
|
|
||||||
|
|
||||||
def _set_short_zip_size(self):
|
|
||||||
""" if zip is 69100, then short zip is 69 """
|
|
||||||
return 2
|
|
||||||
|
|
||||||
@api.depends('partner_id')
|
|
||||||
@api.multi
|
|
||||||
def _compute_short_zip(self):
|
|
||||||
for rec in self:
|
|
||||||
if rec.partner_id and rec.partner_id.zip:
|
|
||||||
rec.short_zip = rec.partner_id.zip[:self._set_short_zip_size()]
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
|
|
||||||
<record id="vpicktree" model="ir.ui.view">
|
|
||||||
<field name="model">stock.picking</field>
|
|
||||||
<field name="inherit_id" ref="stock.vpicktree"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="partner_id" position="after">
|
|
||||||
<field name="short_zip"/>
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="view_picking_internal_search" model="ir.ui.view">
|
|
||||||
<field name="model">stock.picking</field>
|
|
||||||
<field name="inherit_id" ref="stock.view_picking_internal_search"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<group string="Group By" position="inside">
|
|
||||||
<filter string="Zip" domain="[]" context="{'group_by':'short_zip'}"/>
|
|
||||||
</group>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
@@ -1,258 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * stock_usability
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-11-11 20:54+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-11-11 21:56+0100\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
"Language: fr\n"
|
|
||||||
"X-Generator: Poedit 1.8.7.1\n"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "\"{'group_by': 'min_date:day'}\""
|
|
||||||
msgstr "\"{'group_by': 'min_date:day'}\""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.move:stock_usability.view_move_form
|
|
||||||
#: view:stock.move:stock_usability.view_move_picking_form
|
|
||||||
msgid "Advanced Parameters"
|
|
||||||
msgstr "Paramètres Avancées"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: sql_constraint:stock.warehouse.orderpoint:0
|
|
||||||
msgid "An orderpoint already exists for the same company, same warehouse, same stock location and same product."
|
|
||||||
msgstr "An orderpoint already exists for the same company, same warehouse, same stock location and same product."
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,company_id:0
|
|
||||||
msgid "Company"
|
|
||||||
msgstr "Société"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,create_uid:0
|
|
||||||
msgid "Created by"
|
|
||||||
msgstr "Créé par"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,create_date:0
|
|
||||||
msgid "Created on"
|
|
||||||
msgstr "Créé le"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "Date Done"
|
|
||||||
msgstr "Date Terminé"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: help:stock.quant,uom_id:0
|
|
||||||
msgid "Default Unit of Measure used for all stock operation."
|
|
||||||
msgstr "Default Unit of Measure used for all stock operation."
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,display_name:0
|
|
||||||
msgid "Display Name"
|
|
||||||
msgstr "Nom Affiché"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "Expected Date"
|
|
||||||
msgstr "Date prévue"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.location:stock_usability.view_location_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "Groupé par"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,id:0
|
|
||||||
msgid "ID"
|
|
||||||
msgstr "ID"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_incoterms
|
|
||||||
msgid "Incoterms"
|
|
||||||
msgstr "Incoterms"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_inventory
|
|
||||||
msgid "Inventory"
|
|
||||||
msgstr "Inventaire"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_location
|
|
||||||
msgid "Inventory Locations"
|
|
||||||
msgstr "Emplacements de stock"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_location_route
|
|
||||||
msgid "Inventory Routes"
|
|
||||||
msgstr "Routes logistiques"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,__last_update:0
|
|
||||||
msgid "Last Modified on"
|
|
||||||
msgstr "Modifié le"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,write_uid:0
|
|
||||||
msgid "Last Updated by"
|
|
||||||
msgstr "Mis à jour par"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,write_date:0
|
|
||||||
msgid "Last Updated on"
|
|
||||||
msgstr "Modifié le"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.location:stock_usability.view_location_search
|
|
||||||
msgid "Location Type"
|
|
||||||
msgstr "Type d'Emplacement"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_procurement_scheduler_log
|
|
||||||
msgid "Logs of the Procurement Scheduler"
|
|
||||||
msgstr "Logs of the Procurement Scheduler"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_warehouse_orderpoint
|
|
||||||
msgid "Minimum Inventory Rule"
|
|
||||||
msgstr "Règle de stock minimum"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.move:stock_usability.view_move_form
|
|
||||||
#: view:stock.move:stock_usability.view_move_picking_form
|
|
||||||
msgid "Notes"
|
|
||||||
msgstr "Notes"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "Origin"
|
|
||||||
msgstr "Origine"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "Partner"
|
|
||||||
msgstr "Partenaire"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_picking
|
|
||||||
msgid "Picking List"
|
|
||||||
msgstr "Liste de livraison"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.warehouse:stock_usability.view_warehouse
|
|
||||||
msgid "Picking Types"
|
|
||||||
msgstr "Types de préparation"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_procurement_order
|
|
||||||
msgid "Procurement"
|
|
||||||
msgstr "Approvisionnement"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:procurement.scheduler.log:stock_usability.procurement_scheduler_log_tree
|
|
||||||
msgid "Procurement Scheduler Logs"
|
|
||||||
msgstr "Procurement Scheduler Logs"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.actions.act_window,name:stock_usability.stock_location_path_action
|
|
||||||
#: model:ir.ui.menu,name:stock_usability.stock_location_path_menu
|
|
||||||
msgid "Push Rules"
|
|
||||||
msgstr "Push Rules"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_quant
|
|
||||||
msgid "Quants"
|
|
||||||
msgstr "Quants"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:stock.location,quant_ids:0
|
|
||||||
msgid "Related Quants"
|
|
||||||
msgstr "Related Quants"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.warehouse:stock_usability.view_warehouse
|
|
||||||
msgid "Routes"
|
|
||||||
msgstr "Routes"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:procurement.scheduler.log:stock_usability.procurement_scheduler_log_tree
|
|
||||||
msgid "Scheduler End Time"
|
|
||||||
msgstr "Scheduler End Time"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:procurement.scheduler.log:stock_usability.procurement_scheduler_log_tree
|
|
||||||
msgid "Scheduler Executed by"
|
|
||||||
msgstr "Scheduler Executed by"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.actions.act_window,name:stock_usability.procurement_scheduler_log_action
|
|
||||||
#: model:ir.ui.menu,name:stock_usability.procurement_scheduler_log_menu
|
|
||||||
msgid "Scheduler Logs"
|
|
||||||
msgstr "Scheduler Logs"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,start_datetime:0
|
|
||||||
msgid "Start Date"
|
|
||||||
msgstr "Date de Début"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_move
|
|
||||||
msgid "Stock Move"
|
|
||||||
msgstr "Mouvement de stock"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:procurement.order:stock_usability.view_procurement_form_stock_inherit
|
|
||||||
msgid "Stock Moves"
|
|
||||||
msgstr "Mouvements de stock"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:stock.move,product_supplier_code:0
|
|
||||||
msgid "Supplier Code"
|
|
||||||
msgstr "Code Fournisseur"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: help:stock.move,product_supplier_code:0
|
|
||||||
msgid "Supplier product code if Partner is the supplier"
|
|
||||||
msgstr "Code produit du fournisseur si le partenaire est le fournisseur"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_picking_type
|
|
||||||
msgid "The picking type determines the picking view"
|
|
||||||
msgstr "Le type de préparation détermine la vue de préparation"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.transfer_details:stock_usability.view_stock_enter_transfer_details
|
|
||||||
msgid "Total"
|
|
||||||
msgstr "Total"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.quant:stock_usability.view_stock_quant_tree
|
|
||||||
msgid "Total Qty"
|
|
||||||
msgstr "Qté Total"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.stock_picking_graph
|
|
||||||
msgid "Transfers"
|
|
||||||
msgstr "Transferts"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:stock.quant,uom_id:0
|
|
||||||
msgid "Unit of Measure"
|
|
||||||
msgstr "Unité de Mesure"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.move:stock_usability.view_move_form
|
|
||||||
#: view:stock.move:stock_usability.view_move_picking_tree
|
|
||||||
msgid "Unreserve"
|
|
||||||
msgstr "Déréserver"
|
|
||||||
@@ -1,257 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * stock_usability
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2016-11-11 20:54+0000\n"
|
|
||||||
"PO-Revision-Date: 2016-11-11 20:54+0000\n"
|
|
||||||
"Last-Translator: <>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "\"{'group_by': 'min_date:day'}\""
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.move:stock_usability.view_move_form
|
|
||||||
#: view:stock.move:stock_usability.view_move_picking_form
|
|
||||||
msgid "Advanced Parameters"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: sql_constraint:stock.warehouse.orderpoint:0
|
|
||||||
msgid "An orderpoint already exists for the same company, same warehouse, same stock location and same product."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,company_id:0
|
|
||||||
msgid "Company"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,create_uid:0
|
|
||||||
msgid "Created by"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,create_date:0
|
|
||||||
msgid "Created on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "Date Done"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: help:stock.quant,uom_id:0
|
|
||||||
msgid "Default Unit of Measure used for all stock operation."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,display_name:0
|
|
||||||
msgid "Display Name"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "Expected Date"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.location:stock_usability.view_location_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,id:0
|
|
||||||
msgid "ID"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_incoterms
|
|
||||||
msgid "Incoterms"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_inventory
|
|
||||||
msgid "Inventory"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_location
|
|
||||||
msgid "Inventory Locations"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_location_route
|
|
||||||
msgid "Inventory Routes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,__last_update:0
|
|
||||||
msgid "Last Modified on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,write_uid:0
|
|
||||||
msgid "Last Updated by"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,write_date:0
|
|
||||||
msgid "Last Updated on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.location:stock_usability.view_location_search
|
|
||||||
msgid "Location Type"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_procurement_scheduler_log
|
|
||||||
msgid "Logs of the Procurement Scheduler"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_warehouse_orderpoint
|
|
||||||
msgid "Minimum Inventory Rule"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.move:stock_usability.view_move_form
|
|
||||||
#: view:stock.move:stock_usability.view_move_picking_form
|
|
||||||
msgid "Notes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "Origin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.view_picking_internal_search
|
|
||||||
msgid "Partner"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_picking
|
|
||||||
msgid "Picking List"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.warehouse:stock_usability.view_warehouse
|
|
||||||
msgid "Picking Types"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_procurement_order
|
|
||||||
msgid "Procurement"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:procurement.scheduler.log:stock_usability.procurement_scheduler_log_tree
|
|
||||||
msgid "Procurement Scheduler Logs"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.actions.act_window,name:stock_usability.stock_location_path_action
|
|
||||||
#: model:ir.ui.menu,name:stock_usability.stock_location_path_menu
|
|
||||||
msgid "Push Rules"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_quant
|
|
||||||
msgid "Quants"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:stock.location,quant_ids:0
|
|
||||||
msgid "Related Quants"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.warehouse:stock_usability.view_warehouse
|
|
||||||
msgid "Routes"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:procurement.scheduler.log:stock_usability.procurement_scheduler_log_tree
|
|
||||||
msgid "Scheduler End Time"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:procurement.scheduler.log:stock_usability.procurement_scheduler_log_tree
|
|
||||||
msgid "Scheduler Executed by"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.actions.act_window,name:stock_usability.procurement_scheduler_log_action
|
|
||||||
#: model:ir.ui.menu,name:stock_usability.procurement_scheduler_log_menu
|
|
||||||
msgid "Scheduler Logs"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:procurement.scheduler.log,start_datetime:0
|
|
||||||
msgid "Start Date"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_move
|
|
||||||
msgid "Stock Move"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:procurement.order:stock_usability.view_procurement_form_stock_inherit
|
|
||||||
msgid "Stock Moves"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:stock.move,product_supplier_code:0
|
|
||||||
msgid "Supplier Code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: help:stock.move,product_supplier_code:0
|
|
||||||
msgid "Supplier product code if Partner is the supplier"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: model:ir.model,name:stock_usability.model_stock_picking_type
|
|
||||||
msgid "The picking type determines the picking view"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.transfer_details:stock_usability.view_stock_enter_transfer_details
|
|
||||||
msgid "Total"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.quant:stock_usability.view_stock_quant_tree
|
|
||||||
msgid "Total Qty"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.picking:stock_usability.stock_picking_graph
|
|
||||||
msgid "Transfers"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: field:stock.quant,uom_id:0
|
|
||||||
msgid "Unit of Measure"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: stock_usability
|
|
||||||
#: view:stock.move:stock_usability.view_move_form
|
|
||||||
#: view:stock.move:stock_usability.view_move_picking_tree
|
|
||||||
msgid "Unreserve"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_procurement_scheduler_log_full,Full access on procurement.scheduler.log to System group,model_procurement_scheduler_log,base.group_system,1,1,1,1
|
access_procurement_scheduler_log_full,Full access on procurement.scheduler.log to System group,model_procurement_scheduler_log,base.group_system,1,1,1,1
|
||||||
access_procurement_scheduler_log_user,Read/Create procurement.scheduler.log to Stock user,model_procurement_scheduler_log,stock.group_stock_user,1,0,1,0
|
|
||||||
access_procurement_scheduler_log_read,Read access on procurement.scheduler.log to Employee,model_procurement_scheduler_log,base.group_user,1,0,0,0
|
access_procurement_scheduler_log_read,Read access on procurement.scheduler.log to Employee,model_procurement_scheduler_log,base.group_user,1,0,0,0
|
||||||
|
|||||||
|
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -20,7 +20,7 @@
|
|||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from openerp import models, fields, api
|
from openerp import models, fields
|
||||||
import openerp.addons.decimal_precision as dp
|
import openerp.addons.decimal_precision as dp
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@@ -77,11 +77,6 @@ class StockWarehouseOrderpoint(models.Model):
|
|||||||
class StockMove(models.Model):
|
class StockMove(models.Model):
|
||||||
_inherit = 'stock.move'
|
_inherit = 'stock.move'
|
||||||
|
|
||||||
product_supplier_code = fields.Char(
|
|
||||||
string='Supplier Code', compute='_compute_supplier_code',
|
|
||||||
store=True, readonly=True,
|
|
||||||
help="Supplier product code if Partner is the supplier")
|
|
||||||
|
|
||||||
# It seems that it is not necessary any more to
|
# It seems that it is not necessary any more to
|
||||||
# have the digits= on these 2 fields to fix the bug
|
# have the digits= on these 2 fields to fix the bug
|
||||||
# https://github.com/odoo/odoo/pull/10038
|
# https://github.com/odoo/odoo/pull/10038
|
||||||
@@ -90,17 +85,6 @@ class StockMove(models.Model):
|
|||||||
# availability = fields.Float(
|
# availability = fields.Float(
|
||||||
# digits=dp.get_precision('Product Unit of Measure'))
|
# digits=dp.get_precision('Product Unit of Measure'))
|
||||||
|
|
||||||
@api.multi
|
|
||||||
@api.depends('product_id', 'picking_id.partner_id')
|
|
||||||
def _compute_supplier_code(self):
|
|
||||||
for rec in self:
|
|
||||||
supplier_code = False
|
|
||||||
if rec.picking_id.partner_id and rec.product_id:
|
|
||||||
for supplier_info in rec.product_id.seller_ids:
|
|
||||||
if supplier_info.name == rec.picking_id.partner_id:
|
|
||||||
supplier_code = supplier_info.product_code
|
|
||||||
rec.product_supplier_code = supplier_code
|
|
||||||
|
|
||||||
def name_get(self, cr, uid, ids, context=None):
|
def name_get(self, cr, uid, ids, context=None):
|
||||||
'''name_get of stock_move is important for the reservation of the
|
'''name_get of stock_move is important for the reservation of the
|
||||||
quants: so want to add the name of the customer and the expected date
|
quants: so want to add the name of the customer and the expected date
|
||||||
@@ -126,14 +110,3 @@ class StockQuant(models.Model):
|
|||||||
|
|
||||||
uom_id = fields.Many2one(
|
uom_id = fields.Many2one(
|
||||||
'product.uom', related='product_id.uom_id', readonly=True)
|
'product.uom', related='product_id.uom_id', readonly=True)
|
||||||
|
|
||||||
|
|
||||||
class StockIncoterms(models.Model):
|
|
||||||
_inherit = 'stock.incoterms'
|
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def name_get(self):
|
|
||||||
res = []
|
|
||||||
for inco in self:
|
|
||||||
res.append((inco.id, u'[%s] %s' % (inco.code, inco.name)))
|
|
||||||
return res
|
|
||||||
|
|||||||
@@ -161,9 +161,6 @@
|
|||||||
icon="STOCK_UNDO" groups="stock.group_stock_user"
|
icon="STOCK_UNDO" groups="stock.group_stock_user"
|
||||||
states="confirmed,assigned"/>
|
states="confirmed,assigned"/>
|
||||||
</field>
|
</field>
|
||||||
<field name="product_id" position="after">
|
|
||||||
<field name="product_supplier_code"/>
|
|
||||||
</field>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
|
|
||||||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
|
||||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
||||||
:alt: License: AGPL-3
|
|
||||||
|
|
||||||
======================
|
|
||||||
Web Sheet Width Custom
|
|
||||||
======================
|
|
||||||
|
|
||||||
Allow to modify form width with a field selection in the form view.
|
|
||||||
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
To configure this module, you need to:
|
|
||||||
|
|
||||||
#. Apply 'Technical Features' rights to your user
|
|
||||||
|
|
||||||
#. Go to the form view of your choice with the menu
|
|
||||||
(Settings > Technical > User Interface > Views)
|
|
||||||
|
|
||||||
#. Apply a value in the 'Form Width' field.
|
|
||||||
|
|
||||||
.. figure:: web_sheet_width_custom/static/description/img1.png
|
|
||||||
:alt: Set full width
|
|
||||||
:width: 600 px
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Install the 'web_sheet_full_width' module if you want to have a full screen
|
|
||||||
behaviour in all sheets.
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
=====
|
|
||||||
|
|
||||||
To use this module, you need to configure the form view of your choice
|
|
||||||
as explained above.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Known issues / Roadmap
|
|
||||||
======================
|
|
||||||
|
|
||||||
* add other css styles to have more choice on width.
|
|
||||||
|
|
||||||
Bug Tracker
|
|
||||||
===========
|
|
||||||
|
|
||||||
Bugs are tracked on `GitHub Issues
|
|
||||||
<https://github.com/akretion/odoo-usability/issues>`_. In case of trouble, please
|
|
||||||
check there if your issue has already been reported. If you spotted it first,
|
|
||||||
help us smashing it by providing a detailed and welcomed feedback.
|
|
||||||
|
|
||||||
Credits
|
|
||||||
=======
|
|
||||||
|
|
||||||
Images
|
|
||||||
------
|
|
||||||
|
|
||||||
Icon courtesy of http://www.picol.org/ (size_width.svg)
|
|
||||||
|
|
||||||
|
|
||||||
Contributors
|
|
||||||
------------
|
|
||||||
|
|
||||||
* David Béal <david.beal@akretion.com>
|
|
||||||
|
|
||||||
|
|
||||||
Idea
|
|
||||||
----
|
|
||||||
|
|
||||||
Idea comes from module web_sheet_full_width (Luc De Meyer)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
from . import models
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
# © 2016 David BEAL @ Akretion
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
|
|
||||||
{
|
|
||||||
'name': 'Web Sheet width Custom',
|
|
||||||
'summary': 'Choose a dedicated width for your form view',
|
|
||||||
'version': '8.0.1.0.0',
|
|
||||||
'license': 'AGPL-3',
|
|
||||||
'author': 'Akretion',
|
|
||||||
'category': 'web',
|
|
||||||
'depends': [
|
|
||||||
'web',
|
|
||||||
],
|
|
||||||
'data': [
|
|
||||||
'views/sheet.xml',
|
|
||||||
'views/ui_view.xml',
|
|
||||||
],
|
|
||||||
'installable': True,
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
from . import model
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
# coding: utf-8
|
|
||||||
# © 2016 David BEAL @ Akretion
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
||||||
|
|
||||||
from lxml import etree
|
|
||||||
|
|
||||||
from openerp import models, api, fields
|
|
||||||
from openerp.osv import orm
|
|
||||||
from openerp import SUPERUSER_ID
|
|
||||||
|
|
||||||
|
|
||||||
class IrUiView(models.Model):
|
|
||||||
_inherit = 'ir.ui.view'
|
|
||||||
|
|
||||||
def _get_form_width(self):
|
|
||||||
return [('oe_form_sheet_full_screen', 'Full Screen'), ]
|
|
||||||
|
|
||||||
form_width = fields.Selection(
|
|
||||||
string='Form Width', selection='_get_form_width',
|
|
||||||
help="Allow to set the form view to the max width "
|
|
||||||
"to have a better usability on data entry")
|
|
||||||
|
|
||||||
|
|
||||||
class ModelExtended(models.Model):
|
|
||||||
_inherit = 'ir.model'
|
|
||||||
|
|
||||||
def _css_class_to_apply(self, node, css_class):
|
|
||||||
""" Complete class if exist """
|
|
||||||
existing_class = [
|
|
||||||
x[1] for x in node.items()
|
|
||||||
if x[0] == 'class']
|
|
||||||
if existing_class:
|
|
||||||
css_class = '%s %s' % (
|
|
||||||
css_class, existing_class[0])
|
|
||||||
return css_class
|
|
||||||
|
|
||||||
def _register_hook(self, cr, ids=None):
|
|
||||||
|
|
||||||
def make_fields_view_get():
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def fields_view_get(self, view_id=None, view_type='form',
|
|
||||||
toolbar=False, submenu=False):
|
|
||||||
# Perform standard fields_view_get
|
|
||||||
res = fields_view_get.origin(
|
|
||||||
self, view_id=view_id, view_type=view_type,
|
|
||||||
toolbar=toolbar, submenu=submenu)
|
|
||||||
# customize xml output
|
|
||||||
if view_type == 'form' and res.get('view_id'):
|
|
||||||
view = self.env['ir.ui.view'].browse(res.get('view_id'))
|
|
||||||
if view.form_width:
|
|
||||||
model_m = self.env['ir.model']
|
|
||||||
doc = etree.XML(res['arch'])
|
|
||||||
node = doc.xpath('//sheet')
|
|
||||||
if node:
|
|
||||||
css_class = view.form_width
|
|
||||||
for current_node in node:
|
|
||||||
new_css = model_m._css_class_to_apply(
|
|
||||||
current_node, css_class)
|
|
||||||
current_node.set('class', new_css)
|
|
||||||
orm.setup_modifiers(current_node)
|
|
||||||
res['arch'] = etree.tostring(doc, pretty_print=True)
|
|
||||||
return res
|
|
||||||
|
|
||||||
return fields_view_get
|
|
||||||
|
|
||||||
if ids is None:
|
|
||||||
ids = self.search(cr, SUPERUSER_ID, [])
|
|
||||||
for model in self.browse(cr, SUPERUSER_ID, ids):
|
|
||||||
Model = self.pool.get(model.model)
|
|
||||||
if Model:
|
|
||||||
Model._patch_method('fields_view_get', make_fields_view_get())
|
|
||||||
return super(ModelExtended, self)._register_hook(cr)
|
|
||||||
|
Before Width: | Height: | Size: 411 B |
|
Before Width: | Height: | Size: 132 KiB |
@@ -1,4 +0,0 @@
|
|||||||
.openerp .oe_form_sheet_full_screen {
|
|
||||||
max-width: none;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<template id="assets_backend" name="form_sheet_full_screen assets" inherit_id="web.assets_backend">
|
|
||||||
<xpath expr="." position="inside">
|
|
||||||
<link rel="stylesheet" href="/web_sheet_width_custom/static/src/css/sheet.css"/>
|
|
||||||
</xpath>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<record id="view_view_form" model="ir.ui.view">
|
|
||||||
<field name="model">ir.ui.view</field>
|
|
||||||
<field name="inherit_id" ref="base.view_view_form"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="priority" position="after">
|
|
||||||
<field name="form_width"
|
|
||||||
attrs="{'invisible': [('type', '!=', 'form')]}"/>
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||