diff --git a/.tx/config b/.tx/config index 291f7e4938b..674a24a43df 100644 --- a/.tx/config +++ b/.tx/config @@ -272,6 +272,11 @@ file_filter = addons/hr_expense/i18n/.po source_file = addons/hr_expense/i18n/hr_expense.pot source_lang = en +[odoo-master.hr_expense_check] +file_filter = addons/hr_expense_check/i18n/.po +source_file = addons/hr_expense_check/i18n/hr_expense_check.pot +source_lang = en + [odoo-master.hr_gamification] file_filter = addons/hr_gamification/i18n/.po source_file = addons/hr_gamification/i18n/hr_gamification.pot diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 87966a761fe..4bde8a3dee2 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -897,6 +897,11 @@ class AccountMoveLine(models.Model): @api.multi def reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False): + # Empty self can happen if the user tries to reconcile entries which are already reconciled. + # The calling method might have filtered out reconciled lines. + if not self: + return True + #Perform all checks on lines company_ids = set() all_accounts = [] @@ -1425,7 +1430,7 @@ class AccountPartialReconcile(models.Model): help='Utility field to express amount currency') company_id = fields.Many2one('res.company', related='debit_move_id.company_id', store=True, string='Currency') full_reconcile_id = fields.Many2one('account.full.reconcile', string="Full Reconcile", copy=False) - max_date = fields.Datetime(string='Max Date of Matched Lines', compute='_compute_max_date', + max_date = fields.Date(string='Max Date of Matched Lines', compute='_compute_max_date', readonly=True, copy=False, stored=True, help='Technical field used to determine at which date this reconciliation needs to be shown on the aged receivable/payable reports.') diff --git a/addons/account/report/account_aged_partner_balance.py b/addons/account/report/account_aged_partner_balance.py index 125021a1628..3380f876d63 100644 --- a/addons/account/report/account_aged_partner_balance.py +++ b/addons/account/report/account_aged_partner_balance.py @@ -2,6 +2,7 @@ import time from odoo import api, models, _ +from odoo.exceptions import UserError from odoo.tools import float_is_zero from datetime import datetime from dateutil.relativedelta import relativedelta @@ -196,6 +197,9 @@ class ReportAgedPartnerBalance(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not data.get('form') or not self.env.context.get('active_model') or not self.env.context.get('active_id'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + total = [] model = self.env.context.get('active_model') docs = self.env[model].browse(self.env.context.get('active_id')) diff --git a/addons/account/report/account_balance.py b/addons/account/report/account_balance.py index c4b2568bfa5..e8280c90128 100644 --- a/addons/account/report/account_balance.py +++ b/addons/account/report/account_balance.py @@ -2,6 +2,7 @@ import time from odoo import api, models +from odoo.exceptions import UserError class ReportTrialBalance(models.AbstractModel): @@ -50,13 +51,18 @@ class ReportTrialBalance(models.AbstractModel): res['balance'] = account_result[account.id].get('balance') if display_account == 'all': account_res.append(res) - if display_account in ['movement', 'not_zero'] and not currency.is_zero(res['balance']): + if display_account == 'not_zero' and not currency.is_zero(res['balance']): + account_res.append(res) + if display_account == 'movement' and (not currency.is_zero(res['debit']) or not currency.is_zero(res['credit'])): account_res.append(res) return account_res @api.model def get_report_values(self, docids, data=None): + if not data.get('form') or not self.env.context.get('active_model'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + self.model = self.env.context.get('active_model') docs = self.env[self.model].browse(self.env.context.get('active_ids', [])) display_account = data['form'].get('display_account') diff --git a/addons/account/report/account_general_ledger.py b/addons/account/report/account_general_ledger.py index 3f08209b129..1bd983a68ae 100644 --- a/addons/account/report/account_general_ledger.py +++ b/addons/account/report/account_general_ledger.py @@ -2,6 +2,7 @@ import time from odoo import api, models +from odoo.exceptions import UserError class ReportGeneralLedger(models.AbstractModel): @@ -109,6 +110,9 @@ class ReportGeneralLedger(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not data.get('form') or not self.env.context.get('active_model'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + self.model = self.env.context.get('active_model') docs = self.env[self.model].browse(self.env.context.get('active_ids', [])) diff --git a/addons/account/report/account_journal.py b/addons/account/report/account_journal.py index 4dfe7d970e5..0bb9bcedb99 100644 --- a/addons/account/report/account_journal.py +++ b/addons/account/report/account_journal.py @@ -2,6 +2,7 @@ import time from odoo import api, models +from odoo.exceptions import UserError class ReportJournal(models.AbstractModel): @@ -95,6 +96,9 @@ class ReportJournal(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not data.get('form'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + target_move = data['form'].get('target_move', 'all') sort_selection = data['form'].get('sort_selection', 'date') diff --git a/addons/account/report/account_partner_ledger.py b/addons/account/report/account_partner_ledger.py index 0ba3bfc5afa..b3e0b03b6ba 100644 --- a/addons/account/report/account_partner_ledger.py +++ b/addons/account/report/account_partner_ledger.py @@ -3,6 +3,7 @@ from datetime import datetime import time from odoo import api, models +from odoo.exceptions import UserError from odoo.tools import DEFAULT_SERVER_DATE_FORMAT @@ -69,6 +70,9 @@ class ReportPartnerLedger(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not data.get('form'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + data['computed'] = {} obj_partner = self.env['res.partner'] diff --git a/addons/account/report/account_report_financial.py b/addons/account/report/account_report_financial.py index bc6f9b53f1f..b0abf69de3d 100644 --- a/addons/account/report/account_report_financial.py +++ b/addons/account/report/account_report_financial.py @@ -2,6 +2,7 @@ import time from odoo import api, models +from odoo.exceptions import UserError from odoo.tools import pycompat @@ -145,6 +146,9 @@ class ReportFinancial(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not data.get('form') or not self.env.context.get('active_model') or not self.env.context.get('active_id'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + self.model = self.env.context.get('active_model') docs = self.env[self.model].browse(self.env.context.get('active_id')) report_lines = self.get_account_lines(data.get('form')) diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml index fa523b741c0..c4956b3567a 100644 --- a/addons/account/views/account_view.xml +++ b/addons/account/views/account_view.xml @@ -729,7 +729,7 @@ Bank Statement Lines account.bank.statement.line form - tree + tree,form [] {} diff --git a/addons/barcodes/static/src/js/barcode_parser.js b/addons/barcodes/static/src/js/barcode_parser.js index 9dd73bf060e..d834f3cbd27 100644 --- a/addons/barcodes/static/src/js/barcode_parser.js +++ b/addons/barcodes/static/src/js/barcode_parser.js @@ -109,7 +109,7 @@ var BarcodeParser = Class.extend({ ean = ean.substr(0,13); for(var n = 0, count = (13 - ean.length); n < count; n++){ - ean = ean + '0'; + ean = '0' + ean; } return ean.substr(0,12) + this.ean_checksum(ean); }, diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index c4992efff20..c3795afafe3 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -281,6 +281,11 @@ class Lead(models.Model): if vals.get('user_id') and 'date_open' not in vals: vals['date_open'] = fields.Datetime.now() + + if context.get('default_partner_id') and not vals.get('email_from'): + partner = self.env['res.partner'].browse(context['default_partner_id']) + vals['email_from'] = partner.email + # context: no_log, because subtype already handle this return super(Lead, self.with_context(context, mail_create_nolog=True)).create(vals) diff --git a/addons/hr_holidays/report/holidays_summary_report.py b/addons/hr_holidays/report/holidays_summary_report.py index d77e664c9e9..e9e166dc3a7 100644 --- a/addons/hr_holidays/report/holidays_summary_report.py +++ b/addons/hr_holidays/report/holidays_summary_report.py @@ -6,6 +6,7 @@ import calendar from datetime import timedelta from dateutil.relativedelta import relativedelta from odoo import api, fields, models +from odoo.exceptions import UserError class HrHolidaySummaryReport(models.AbstractModel): @@ -107,6 +108,9 @@ class HrHolidaySummaryReport(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not data.get('form'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + holidays_report = self.env['ir.actions.report']._get_report_from_name('hr_holidays.report_holidayssummary') holidays = self.env['hr.holidays'].browse(self.ids) return { diff --git a/addons/hr_payroll/report/report_contribution_register.py b/addons/hr_payroll/report/report_contribution_register.py index 7d6cdeef23d..27b0612e5f1 100644 --- a/addons/hr_payroll/report/report_contribution_register.py +++ b/addons/hr_payroll/report/report_contribution_register.py @@ -6,6 +6,7 @@ from datetime import datetime from dateutil.relativedelta import relativedelta from odoo import api, fields, models +from odoo.exceptions import UserError class ContributionRegisterReport(models.AbstractModel): @@ -29,6 +30,9 @@ class ContributionRegisterReport(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not data.get('form'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + register_ids = self.env.context.get('active_ids', []) contrib_registers = self.env['hr.contribution.register'].browse(register_ids) date_from = data['form'].get('date_from', fields.Date.today()) diff --git a/addons/l10n_ch/data/l10n_ch_chart_data.xml b/addons/l10n_ch/data/l10n_ch_chart_data.xml index 60b391a71f9..a69f96c8699 100644 --- a/addons/l10n_ch/data/l10n_ch_chart_data.xml +++ b/addons/l10n_ch/data/l10n_ch_chart_data.xml @@ -13,7 +13,7 @@ Plan comptable 2015 - 1 + 4 102 100 diff --git a/addons/l10n_fr/data/account_chart_template_data.xml b/addons/l10n_fr/data/account_chart_template_data.xml index 67deb80cc04..59fb761390d 100644 --- a/addons/l10n_fr/data/account_chart_template_data.xml +++ b/addons/l10n_fr/data/account_chart_template_data.xml @@ -216,7 +216,7 @@ - Actionnaires: capital souscrit - non appelé + Actionnaires : capital souscrit - non appelé 109 @@ -251,56 +251,56 @@ - État + Subventions d'équipement - État 1311 - Régions + Subventions d'équipement - Régions 1312 - Départements + Subventions d'équipement - Départements 1313 - Communes + Subventions d'équipement - Communes 1314 - Collectivités publiques + Subventions d'équipement - Collectivités publiques 1315 - Entreprises publiques + Subventions d'équipement - Entreprises publiques 1316 - Entreprises et organismes privés + Subventions d'équipement - Entreprises et organismes privés 1317 - Autres + Subventions d'équipement - Autres 1318 @@ -314,56 +314,56 @@ - Etat + Subventions d'équipement inscrites au compte de résultat - État 13911 - Régions + Subventions d'équipement inscrites au compte de résultat - Régions 13912 - Départements + Subventions d'équipement inscrites au compte de résultat - Départements 13913 - Communes + Subventions d'équipement inscrites au compte de résultat - Communes 13914 - Collectivités publiques + Subventions d'équipement inscrites au compte de résultat - Collectivités publiques 13915 - Entreprises publiques + Subventions d'équipement inscrites au compte de résultat - Entreprises publiques 13916 - Entreprises et organismes privés + Subventions d'équipement inscrites au compte de résultat - Entreprises et organismes privés 13917 - Autres + Subventions d'équipement inscrites au compte de résultat - Autres 13918 @@ -391,14 +391,14 @@ - Hausse des prix + Provisions réglementées relatives aux stocks - Hausse de prix 1431 - Fluctuation des cours + Provisions réglementées relatives aux stocks - Fluctuation des cours 1432 @@ -517,7 +517,7 @@ - Provisions pour gros entretien ou grandes révisions + Provisions pour charges à répartir sur plusieurs exercices - Gros entretien ou grandes révisions 1572 @@ -538,7 +538,7 @@ - Autres emprunts obligataires + Autres emprunts obligataires 163 @@ -566,105 +566,105 @@ - Comptes bloqués + Participation des salariés aux résultats - Comptes bloqués 1661 - Fonds de participation + Participation des salariés aux résultats - Fonds de participation 1662 - Emissions de titres participatifs + Emprunts et dettes assortis de conditions particulières - Emissions de titres participatifs 1671 - Avances conditionnées de l'État + Emprunts et dettes assortis de conditions particulières - Avances conditionnées de l'État 1674 - Emprunts participatifs + Emprunts et dettes assortis de conditions particulières - Emprunts participatifs 1675 - Autres emprunts + Autres emprunts et dettes assimilées - Autres emprunts 1681 - Rentes viagères capitalisées + Autres emprunts et dettes assimilées - Rentes viagères capitalisées 1685 - Autres dettes + Autres emprunts et dettes assimilées - Autres dettes 1687 - Sur emprunts obligataires convertibles + Intérêts courus sur emprunts obligataires convertibles 16881 - Sur autres emprunts obligataires + Intérêts courus sur autres emprunts obligataires 16883 - Sur emprunts auprès des établissements de crédit + Intérêts courus sur emprunts auprès des établissements de crédit 16884 - Sur dépôts et cautionnements reçus + Intérêts courus sur dépôts et cautionnements reçus 16885 - Sur participation des salariés aux résultats + Intérêts courus sur participation des salariés aux résultats 16886 - Sur emprunts et dettes assortis de conditions particulières + Intérêts courus sur emprunts et dettes assortis de conditions particulières 16887 - Sur autres emprunts et dettes assimilées + Intérêts courus sur autres emprunts et dettes assimilées 16888 @@ -692,14 +692,14 @@ - Principal + Dettes rattachées à des sociétés en participation - Principal 1781 - Intérêts courus + Dettes rattachées à des sociétés en participation - Intérêts courus 1788 @@ -734,56 +734,56 @@ - Frais de constitution + Immobilisations incorporelles - Frais d'établissement - Frais de constitution 2011 - Frais de prospection + Immobilisations incorporelles - Frais d'établissement - Frais de prospection 20121 - Frais de publicité + Immobilisations incorporelles - Frais d'établissement - Frais de publicité 20122 - Frais d'augmentation de capital et d'opérations diverses (fusions, scissions, transformations) + Immobilisations incorporelles - Frais d'augmentation de capital et d'opérations diverses (fusions, scissions, transformations) 2013 - Frais de recherche et de développement + Immobilisations incorporelles - Frais de recherche et de développement 203 - Concessions et droits similaires, brevets, licences, marques, procédés, logiciels, droits et valeurs similaires + Immobilisations incorporelles - Concessions et droits similaires, brevets, licences, marques, procédés, logiciels, droits et valeurs similaires 205 - Droit au bail + Immobilisations incorporelles - Droit au bail 206 - Fonds commercial + Immobilisations incorporelles - Fonds commercial 207 @@ -797,238 +797,238 @@ - Terrains nus + Immobilisations corporelles - Terrains nus 2111 - Terrains aménagés + Immobilisations corporelles - Terrains aménagés 2112 - Sous-sols et sur-sols + Immobilisations corporelles - Sous-sols et sur-sols 2113 - Carrières + Immobilisations corporelles - Carrières 21141 - Ensembles immobiliers industriels (A, B, ...) + Immobilisations corporelles - Terrains bâtis - Ensembles immobiliers industriels 21151 - Ensembles immobiliers administratifs et commerciaux (A, B, ...) + Immobilisations corporelles - Terrains bâtis - Ensembles immobiliers administratifs et commerciaux 21155 - Affectés aux opérations professionnelles (A, B, ...) + Immobilisations corporelles - Terrains bâtis affectés aux opérations professionnelles 211581 - Affectés aux opérations non professionnelles (A, B, ...) + Immobilisations corporelles - Terrains bâtis affectés aux opérations non professionnelles 211588 - Compte d'ordre sur immobilisations + Immobilisations corporelles - Compte d'ordre sur immobilisations 2116 - Agencements et aménagements de terrains (même ventilation que celle du compte 211) + Immobilisations corporelles - Agencements et aménagements de terrains (même ventilation que celle du compte 211) 212 - Ensembles immobiliers industriels (A, B, ...) + Immobilisations corporelles - Bâtiments - Ensembles immobiliers industriels 21311 - Ensembles immobiliers administratifs et commerciaux (A, B, ...) + Immobilisations corporelles - Bâtiments - Ensembles immobiliers administratifs et commerciaux 21315 - Affectés aux opérations professionnelles (A, B, ...) + Immobilisations corporelles - Bâtiments affectés aux opérations professionnelles 213181 - Affectés aux opérations non professionnelles (A, B, ...) + Immobilisations corporelles - Bâtiments affectés aux opérations non professionnelles 213188 - Installations générales agencements aménagements des constructions (même ventilation que celle du compte 2131) + Immobilisations corporelles - Installations générales, agencements, aménagements des constructions (même ventilation que celle du compte 2131) 2135 - Voies de terre + Immobilisations corporelles - Ouvrages d'infrastructure - Voies de terre 21381 - Voies de fer + Immobilisations corporelles - Ouvrages d'infrastructure - Voies de fer 21382 - Voies d'eau + Immobilisations corporelles - Ouvrages d'infrastructure - Voies d'eau 21383 - Barrages + Immobilisations corporelles - Ouvrages d'infrastructure - Barrages 21384 - Pistes d'aérodromes + Immobilisations corporelles - Ouvrages d'infrastructure - Pistes d'aérodromes 21385 - Constructions sur sol d'autrui (même ventilation que celle du compte 213) + Immobilisations corporelles - Constructions sur sol d'autrui (même ventilation que celle du compte 213) 214 - Sur sol propre + Immobilisations corporelles - Installations complexes spécialisées sur sol propre 21511 - Sur sol d'autrui + Immobilisations corporelles - Installations complexes spécialisées sur sol d'autrui 21514 - Sur sol propre + Immobilisations corporelles - Installations à caractère spécifique sur sol propre 21531 - Sur sol d'autrui + Immobilisations corporelles - Installations à caractère spécifique sur sol d'autrui 21534 - Matériel industriel + Immobilisations corporelles - Matériels industriels 2154 - Outillage industriel + Immobilisations corporelles - Outillage industriel 2155 - Agencements et aménagements du matériel et outillage industriels + Immobilisations corporelles - Agencements et aménagements des matériels et outillage industriels 2157 - Installations générales agencements aménagements divers + Immobilisations corporelles - Installations générales agencements aménagements divers 2181 - Matériel de transport + Immobilisations corporelles - Matériel de transport 2182 - Matériel de bureau et matériel informatique + Immobilisations corporelles - Matériel de bureau et matériel informatique 2183 - Mobilier + Immobilisations corporelles - Mobilier 2184 - Cheptel + Immobilisations corporelles - Cheptel 2185 - Emballages récupérables + Immobilisations corporelles - Emballages récupérables 2186 @@ -1042,7 +1042,7 @@ - Terrains + Immobilisations corporelles en cours - Terrains 2312 Pas d'amortissement sur les terrains @@ -1050,28 +1050,28 @@ - Constructions + Immobilisations corporelles en cours - Constructions 2313 - Installations techniques matériel et outillage industriels + Immobilisations corporelles en cours - Installations techniques matériel et outillage industriels 2315 - Autres immobilisations corporelles + Autres immobilisations corporelles en cours 2318 - Immobilisations incorporelles en cours + Immobilisations incorporelles en cours 232 @@ -1085,28 +1085,28 @@ - Terrains + Avances et acomptes versés sur commandes d'immobilisations corporelles - Terrains 2382 - Constructions + Avances et acomptes versés sur commandes d'immobilisations corporelles - Constructions 2383 - Installations techniques matériel et outillage industriels + Avances et acomptes versés sur commandes d'immobilisations corporelles - Installations techniques matériel et outillage industriels 2385 - Autres immobilisations corporelles + Avances et acomptes versés sur commandes d'immobilisations corporelles - Autres immobilisations corporelles 2388 @@ -1120,14 +1120,14 @@ - Actions + Titres de participation - Actions 2611 - Autres titres + Autres titres de participation 2618 @@ -1178,28 +1178,28 @@ - Autres créances rattachées à des participations + Autres créances rattachées à des participations 2677 - Intérêts courus + Créances rattachées à des participations - Intérêts courus 2678 - Principal + Créances rattachées à des sociétés en participation - Principal 2681 - Intérêts courus + Créances rattachées à des sociétés en participation - Intérêts courus 2688 @@ -1213,35 +1213,35 @@ - Actions + Titres immobilisés autres que les titres immobilisés de l'activité de portefeuille - Actions 2711 - Autres titres + Titres immobilisés autres que les titres immobilisés de l'activité de portefeuille - Autres titres 2718 - Obligations + Titres immobilisés - Obligations 2721 - Bons + Titres immobilisés - Bons 2722 - Titres immobilisés de l'activité de portefeuille (TIAP) + Titres immobilisés de l'activité de portefeuille 273 @@ -1290,35 +1290,35 @@ - Créances diverses + Autres créances immobilisées - Créances diverses 2761 - Sur titres immobilisés (droits de créance) + Autres créances immobilisées - Intérêts courus sur titres immobilisés (droits de créance) 27682 - Sur prêts + Autres créances immobilisées - Intérêts courus sur prêts 27684 - Sur dépôts et cautionnements + Autres créances immobilisées - Intérêts courus sur dépôts et cautionnements 27685 - Sur créances diverses + Autres créances immobilisées - Intérêts courus sur créances diverses 27688 @@ -1346,77 +1346,77 @@ - Frais d'établissement (même ventilation que celle du compte 201) + Amortissements des immobilisations incorporelles - Frais d'établissement (même ventilation que celle du compte 201) 2801 - Frais de recherche et de développement + Amortissements des immobilisations incorporelles - Frais de recherche et de développement 2803 - Concessions et droits similaires, brevets, licences, logiciels, droits et valeurs similaires + Amortissements des immobilisations incorporelles - Concessions et droits similaires, brevets, licences, logiciels, droits et valeurs similaires 2805 - Fonds commercial + Amortissements des immobilisations incorporelles - Fonds commercial 2807 - Autres immobilisations incorporelles + Amortissements des autres immobilisations incorporelles 2808 - Terrains de gisement + Amortissements des immobilisations corporelles - Terrains de gisement 2811 - Agencements aménagements de terrains (même ventilation que celle du compte 212) + Amortissements des immobilisations corporelles - Agencements aménagements de terrains (même ventilation que celle du compte 212) 2812 - Constructions (même ventilation que celle du compte 213) + Amortissements des immobilisations corporelles - Constructions (même ventilation que celle du compte 213) 2813 - Constructions sur sol d'autrui (même ventilation que celle du compte 214) + Amortissements des immobilisations corporelles - Constructions sur sol d'autrui (même ventilation que celle du compte 214) 2814 - Installations matériel et outillage industriels (même ventilation que celle du compte 215) + Amortissements des immobilisations corporelles - Installations matériel et outillage industriels (même ventilation que celle du compte 215) 2815 - Autres immobilisations corporelles (même ventilation que celle du compte 218) + Amortissements des autres immobilisations corporelles (même ventilation que celle du compte 218) 2818 @@ -1430,35 +1430,35 @@ - Marques, procédés, droits et valeurs similaires + Dépréciations des immobilisations incorporelles - Marques, procédés, droits et valeurs similaires 2905 - Droit au bail + Dépréciations des immobilisations incorporelles - Droit au bail 2906 - Fonds commercial + Dépréciations des immobilisations incorporelles - Fonds commercial 2907 - Autres immobilisations incorporelles + Dépréciations des autres immobilisations incorporelles 2908 - Terrains (autres que terrains de gisement) + Dépréciations des immobilisations corporelles - Terrains (autres que terrains de gisement) 2911 @@ -1472,97 +1472,97 @@ - Immobilisations corporelles en cours + Dépréciations des immobilisations corporelles en cours 2931 - Immobilisations incorporelles en cours + Dépréciations des immobilisations incorporelles en cours 2932 - Titres de participation + Provisions pour dépréciation des titres de participation 2961 - Autres formes de participation + Provisions pour dépréciation des autres formes de participation 2966 - Créances rattachées à des participations (même ventilation que celle du compte 267) + Provisions pour dépréciation des créances rattachées à des participations (même ventilation que celle du compte 267) 2967 - Créances rattachées à des sociétés en participation (même ventilation que celle du compte 268) + Provisions pour dépréciation des créances rattachées à des sociétés en participation (même ventilation que celle du compte 268) 2968 - Titres immobilisés autres que les titres immobilisés de l'activité de portefeuille - droit de propriété (ventilation : 271) + Provisions pour dépréciation des titres immobilisés autres que les titres immobilisés de l'activité de portefeuille - droit de propriété (ventilation : 271) 2971 - Titres immobilisés - droit de créance (même ventilation que celle du compte 272) + Provisions pour dépréciation des titres immobilisés - droit de créance (même ventilation que celle du compte 272) 2972 - Titres immobilisés de l'activité de portefeuille + Provisions pour dépréciation des titres immobilisés de l'activité de portefeuille 2973 - Prêts (même ventilation que celle du compte 274) + Provisions pour dépréciation des prêts (même ventilation que celle du compte 274) 2974 - Dépôts et cautionnements versés (même ventilation que celle du compte 275) + Provisions pour dépréciation des dépôts et cautionnements versés (même ventilation que celle du compte 275) 2975 - Autres créances immobilisées (même ventilation que celle du compte 276) + Provisions pour dépréciation des autres créances immobilisées (même ventilation que celle du compte 276) 2976 - Matière (ou groupe) A + Matières premières (ou groupe) A 311 - Matière (ou groupe) B + Matières premières (ou groupe) B 312 @@ -1576,14 +1576,14 @@ - Matière (ou groupe) C + Matières consommables (ou groupe) C 3211 - Matière (ou groupe) D + Matières consommables (ou groupe) D 3212 @@ -1688,63 +1688,63 @@ - Prestations de services S 1 + Prestations de services en cours S 1 3451 - Prestations de services S 2 + Prestations de services en cours S 2 3452 - Produits intermédiaires (ou groupe) A + Stocks produits intermédiaires (ou groupe) A 3511 - Produits intermédiaires (ou groupe) B + Stocks produits intermédiaires (ou groupe) B 3512 - Produits finis (ou groupe) A + Stocks produits finis (ou groupe) A 3551 - Produits finis (ou groupe) B + Stocks produits finis (ou groupe) B 3552 - Déchets + Stocks produits résiduels - Déchets 3581 - Rebuts + Stocks produits résiduels - Rebuts 3585 - Matières de récupération + Stocks produits résiduels - Matières de récupération 3586 @@ -1758,14 +1758,14 @@ - Marchandises (ou groupe) A + Stocks de marchandises (ou groupe) A 371 - Marchandises (ou groupe) B + Stocks de marchandises (ou groupe) B 372 @@ -1779,105 +1779,105 @@ - Matières (ou groupe) A + Provisions pour dépréciation des matières premières (ou groupe) A 3911 - Matières (ou groupe) B + Provisions pour dépréciation des matières premières (ou groupe) B 3912 - Fournitures A, B, C, .. + Provisions pour dépréciation des fournitures A, B, C, .. 3917 - Matières consommables (même ventilation que celle du compte 321) + Provisions pour dépréciation des matières consommables (même ventilation que celle du compte 321) 3921 - Fournitures consommables (même ventilation que celle du compte 322) + Provisions pour dépréciation des fournitures consommables (même ventilation que celle du compte 322) 3922 - Emballages (même ventilation que celle du compte 326) + Provisions pour dépréciation des emballages (même ventilation que celle du compte 326) 3926 - Produits en cours (même ventilation que celle du compte 331) + Provisions pour dépréciation des produits en cours (même ventilation que celle du compte 331) 3931 - Travaux en cours (même ventilation que celle du compte 335) + Provisions pour dépréciation des travaux en cours (même ventilation que celle du compte 335) 3935 - Études en cours (même ventilation que celle du compte 341) + Provisions pour dépréciation des études en cours (même ventilation que celle du compte 341) 3941 - Prestations de services en cours (même ventilation que celle du compte 345) + Provisions pour dépréciation des prestations de services en cours (même ventilation que celle du compte 345) 3945 - Produits intermédiaires (même ventilation que celle du compte 351) + Provisions pour dépréciation des produits intermédiaires (même ventilation que celle du compte 351) 3951 - Produits finis (même ventilation que celle du compte 355) + Provisions pour dépréciation des produits finis (même ventilation que celle du compte 355) 3955 - Marchandises (ou groupe) A + Provisions pour dépréciation des stocks de marchandises (ou groupe) A 3971 - Marchandises (ou groupe) B + Provisions pour dépréciation des stocks de marchandises (ou groupe) B 3972 - Fournisseurs et comptes rattachés + Fournisseurs et comptes rattachés 400 @@ -1933,7 +1933,7 @@ - Fournisseurs + Factures non parvenues - Fournisseurs 4081 @@ -1941,7 +1941,7 @@ - Fournisseurs d'immobilisations + Factures non parvenues - Fournisseurs d'immobilisations 4084 @@ -1949,7 +1949,7 @@ - Fournisseurs - Intérêts courus + Factures non parvenues - Fournisseurs - Intérêts courus 4088 @@ -1957,7 +1957,7 @@ - Fournisseurs - Créances pour emballages et matériel à rendre + Fournisseurs débiteurs - Créances pour emballages et matériel à rendre 4096 @@ -1965,7 +1965,7 @@ - Fournisseurs d'exploitation + Fournisseurs débiteurs - Autres avoirs des fournisseurs d'exploitation 40971 @@ -1973,7 +1973,7 @@ - Fournisseurs d'immobilisations + Fournisseurs débiteurs - Autres avoirs des fournisseurs d'immobilisations 40974 @@ -1981,7 +1981,7 @@ - Rabais, remises, ristournes à obtenir et autres avoirs non encore reçus + Fournisseurs débiteurs - Rabais, remises, ristournes à obtenir et autres avoirs non encore reçus 4098 @@ -1989,7 +1989,7 @@ - Clients et comptes rattachés + Clients et comptes rattachés 410 @@ -2030,7 +2030,7 @@ - Clients - Factures à établir + Clients - Factures à établir 4181 @@ -2038,7 +2038,7 @@ - Clients - Intérêts courus + Clients - Intérêts courus non encore facturés 4188 @@ -2046,7 +2046,7 @@ - Clients - Avances et acomptes reçus sur commandes + Clients créditeurs - Avances et acomptes reçus sur commandes 4191 @@ -2054,7 +2054,7 @@ - Clients - Dettes pour emballages et matériels consignés + Clients créditeurs - Dettes pour emballages et matériels consignés 4196 @@ -2062,7 +2062,7 @@ - Clients - Autres avoirs + Clients créditeurs - Autres avoirs 4197 @@ -2070,7 +2070,7 @@ - Rabais, remises, ristournes à accorder et autres avoirs à établir + Clients créditeurs - Rabais, remises, ristournes à accorder et autres avoirs à établir 4198 @@ -2086,7 +2086,7 @@ - Comités d'entreprise d'établissement + Comités d'entreprise, d'établissement 422 @@ -2094,7 +2094,7 @@ - Réserve spéciale + Participation des salariés aux résultats - Réserve spéciale 4246 @@ -2102,7 +2102,7 @@ - Comptes courants + Participation des salariés aux résultats - Comptes courants 4248 @@ -2134,7 +2134,7 @@ - Dettes provisionnées pour congés à payer + Personnel - Dettes provisionnées pour congés à payer 4282 @@ -2142,7 +2142,7 @@ - Dettes provisionnées pour participation des salariés aux résultats + Personnel - Dettes provisionnées pour participation des salariés aux résultats 4284 @@ -2150,7 +2150,7 @@ - Autres charges à payer + Personnel - Autres charges à payer 4286 @@ -2158,7 +2158,7 @@ - Produits à recevoir + Personnel - Produits à recevoir 4287 @@ -2182,7 +2182,7 @@ - Charges sociales sur congés à payer + Charges sociales sur congés à payer 4382 @@ -2190,7 +2190,7 @@ - Autres charges à payer + Organismes sociaux - Autres charges à payer 4386 @@ -2198,7 +2198,7 @@ - Produits à recevoir + Organismes sociaux - Produits à recevoir 4387 @@ -2206,7 +2206,7 @@ - Subventions d'investissement + État - Subventions à recevoir - Subventions d'investissement 4411 @@ -2214,7 +2214,7 @@ - Subventions d'exploitation + État - Subventions à recevoir - Subventions d'exploitation 4417 @@ -2222,7 +2222,7 @@ - Subventions d'équilibre + État - Subventions à recevoir - Subventions d'équilibre 4418 @@ -2230,7 +2230,7 @@ - Avances sur subventions + État - Subventions à recevoir - Avances sur subventions 4419 @@ -2238,7 +2238,7 @@ - Obligataires + État - Impôts et taxes recouvrables sur des tiers - Obligataires 4424 @@ -2246,7 +2246,7 @@ - Associés + État - Impôts et taxes recouvrables sur des tiers - Associés 4425 @@ -2262,7 +2262,7 @@ - Intérêts courus sur créances figurant au compte 4431 + État - Intérêts courus sur créances figurant au compte 4431 4438 @@ -2322,14 +2322,14 @@ - TVA sur immobilisations + TVA déductible sur immobilisations 44562 - TVA transférée par d'autres entreprises + TVA déductible transférée par d'autres entreprises 44563 @@ -2337,7 +2337,7 @@ - TVA sur autres biens et services + TVA déductible sur autres biens et services 44566 @@ -2367,7 +2367,7 @@ - Taxes assimilées à la TVA + Taxes déductibles assimilées à la TVA 44568 @@ -2396,7 +2396,7 @@ - Taxes assimilées à la TVA + Taxes collectées assimilées à la TVA 44578 @@ -2476,7 +2476,7 @@ - Charges fiscales sur congés à payer + État - Charges fiscales sur congés à payer 4482 @@ -2484,7 +2484,7 @@ - Charges à payer + État - Charges à payer 4486 @@ -2492,7 +2492,7 @@ - Produits à recevoir + État - Produits à recevoir 4487 @@ -2515,17 +2515,8 @@ - - Associés - Comptes courants - 455 - - Pour frais avancés personnellement - - - - - Principal + Associés - Comptes courants - Principal 4551 @@ -2533,7 +2524,7 @@ - Intérêts courus + Associés - Comptes courants - Intérêts courus 4558 @@ -2541,7 +2532,7 @@ - Apports en nature + Associés - Comptes d'apport en société - Apports en nature 45611 @@ -2549,7 +2540,7 @@ - Apports en numéraire + Associés - Comptes d'apport en société - Apports en numéraire 45615 @@ -2613,7 +2604,7 @@ - Opérations courantes + Associés - Opérations faites en commun et en GIE - Opérations courantes 4581 @@ -2621,7 +2612,7 @@ - Intérêts courus + Associés - Opérations faites en commun et en GIE - Intérêts courus 4588 @@ -2675,48 +2666,16 @@ - - Comptes d'attente 1 - 472 - - - - - - - Comptes d'attente 2 - 473 - - - - - - - Comptes d'attente 3 - 474 - - - - - - - Comptes d'attente 4 - 475 - - - - - - - Comptes d'attente 5 - 476 + + Compte d'attente + 471 - Diminution des créances + Différence de conversion - Actif - Diminution des créances 4761 @@ -2724,7 +2683,7 @@ - Augmentation des dettes + Différence de conversion - Actif - Augmentation des dettes 4762 @@ -2732,7 +2691,7 @@ - Différences compensées par couverture de change + Différence de conversion - Actif - Différences compensées par couverture de change 4768 @@ -2740,7 +2699,7 @@ - Augmentation des créances + Différences de conversion - Passif - Augmentation des créances 4771 @@ -2748,7 +2707,7 @@ - Diminution des dettes + Différences de conversion - Passif - Diminution des dettes 4772 @@ -2756,7 +2715,7 @@ - Différences compensées par couverture de change + Différences de conversion - Passif - Différences compensées par couverture de change 4778 @@ -2771,7 +2730,7 @@ - Frais d'émission des emprunts + Charges à répartir sur plusieurs exercices - Frais d'émission des emprunts 4816 @@ -2795,7 +2754,7 @@ - Charges + Comptes de répartition périodique des charges 4886 @@ -2803,7 +2762,7 @@ - Produits + Comptes de répartition périodique des produits 4887 @@ -2819,7 +2778,7 @@ - Dépréciation des comptes de clients + Provisions pour dépréciation des comptes de clients 491 @@ -2827,7 +2786,7 @@ - Comptes du groupe + Provisions pour dépréciation des comptes du groupe 4951 @@ -2835,7 +2794,7 @@ - Comptes courants des associés + Provisions pour dépréciation des comptes courants des associés 4955 @@ -2843,7 +2802,7 @@ - Opérations faites en commun et en GIE + Provisions pour dépréciation des opérations faites en commun et en GIE 4958 @@ -2851,7 +2810,7 @@ - Créances sur cessions d'immobilisations + Provisions pour dépréciation des créances sur cessions d'immobilisations 4962 @@ -2859,7 +2818,7 @@ - Créances sur cessions de valeurs mobilières de placement + Provisions pour dépréciation des créances sur cessions de valeurs mobilières de placement 4965 @@ -2867,7 +2826,7 @@ - Autres comptes débiteurs + Provisions pour dépréciation - Autres comptes débiteurs 4967 @@ -2875,35 +2834,35 @@ - Parts dans entreprises liées + Valeurs mobilières de placement - Parts dans entreprises liées 501 - Actions propres + Valeurs mobilières de placement - Actions propres 502 - Titres cotés + Valeurs mobilières de placement - Titres cotés 5031 - Titres non cotés + Valeurs mobilières de placement - Titres non cotés 5035 - Autres titres conférant un droit de propriété + Valeurs mobilières de placement - Autres titres conférant un droit de propriété 504 @@ -2917,14 +2876,14 @@ - Titres cotés + Obligations cotés 5061 - Titres non cotés + Obligations non cotés 5065 @@ -2938,7 +2897,7 @@ - Autres valeurs mobilières + Autres valeurs mobilières de placement 5081 @@ -2994,7 +2953,7 @@ - Comptes en devises + Banques - Comptes en devises 5124 @@ -3043,21 +3002,21 @@ - Crédit de mobilisation de créances commerciales (CMCC) + Concours bancaires courants - Crédit de mobilisation de créances commerciales (CMCC) 5191 - Mobilisation de créances nées à l'étranger + Concours bancaires courants - Mobilisation de créances nées à l'étranger 5193 - Intérêts courus sur concours bancaires courants + Concours bancaires courants - Intérêts courus sur concours bancaires courants 5198 @@ -3106,119 +3065,119 @@ - Actions + Provisions pour dépréciation des actions 5903 - Autres titres conférant un droit de propriété + Provisions pour dépréciation des autres titres conférant un droit de propriété 5904 - Obligations + Provisions pour dépréciation des obligations 5906 - Autres valeurs mobilières de placement et créances assimilées (provisions) + Provisions pour dépréciation des autres valeurs mobilières de placement et créances assimilées (provisions) 5908 - Matières (ou groupe) A + Achats stockés - Matières premières (ou groupe) A 6011 - Matières (ou groupe) B + Achats stockés - matières premières (ou groupe) B 6012 - Fournitures A, B, C, .. + Achats stockés - Fournitures A, B, C, .. 6017 - Matières (ou groupe) C + Achats stockés - Matières consommables (ou groupe) C 60211 - Matières (ou groupe) D + Achats stockés - Matières consommables (ou groupe) D 60212 - Combustibles + Achats stockés - Combustibles 60221 - Produits d'entretien + Achats stockés - Produits d'entretien 60222 - Fournitures d'atelier et d'usine + Achats stockés - Fournitures d'atelier et d'usine 60223 - Fournitures de magasin + Achats stockés - Fournitures de magasin 60224 - Fournitures de bureau + Achats stockés - Fournitures de bureau 60225 - Emballages perdus + Achats stockés - Emballages perdus 60261 - Emballages récupérables non identifiables + Achats stockés - Emballages récupérables non identifiables 60265 - Emballages à usage mixte + Achats stockés - Emballages à usage mixte 60267 @@ -3261,7 +3220,7 @@ - Fournitures non stockables (eau, énergie...) + Fournitures non stockables (eau, énergie...) 6061 @@ -3282,14 +3241,14 @@ - Autres matières et fournitures + Achats autres matières et fournitures 6068 - Marchandise (ou groupe) A + Achats de marchandises (ou groupe) A 6071 @@ -3297,7 +3256,7 @@ - Marchandise (ou groupe) B + Achats de marchandises (ou groupe) B 6072 Pour déclaration TVA intracommunautaire @@ -3312,42 +3271,42 @@ - - de matières premières (et fournitures) + Rabais, remises et ristournes obtenus sur achats de matières premières (et fournitures) 6091 - - d'autres approvisionnements stockés + Rabais, remises et ristournes obtenus sur achats d'autres approvisionnements stockés 6092 - - d'études et prestations de services + Rabais, remises et ristournes obtenus sur achats d'études et prestations de services 6094 - - de matériel, équipements et travaux + Rabais, remises et ristournes obtenus sur achats de matériel, équipements et travaux 6095 - - d'approvisionnements non stockés + Rabais, remises et ristournes obtenus sur achats d'approvisionnements non stockés 6096 - - de marchandises + Rabais, remises et ristournes obtenus sur achats de marchandises 6097 @@ -3368,14 +3327,14 @@ - Crédit-bail mobilier + Redevances de crédit-bail mobilier 6122 - Crédit-bail immobilier + Redevances de crédit-bail immobilier 6125 @@ -3396,7 +3355,7 @@ - Malis sur emballages + Locations malis sur emballages 6136 @@ -3410,14 +3369,14 @@ - - sur biens immobiliers + Entretien et réparations sur biens immobiliers 6152 - - sur biens mobiliers + Entretien et réparations sur biens mobiliers 6155 @@ -3431,14 +3390,14 @@ - Multirisques + Assurance multirisques 6161 - Assurance obligatoire dommage construction + Assurance obligatoire dommage construction 6162 @@ -3452,7 +3411,7 @@ - Assurance transportsur ventes + Assurance transport sur ventes 61637 @@ -3466,14 +3425,14 @@ - Risques d'exploitation + Assurance risques d'exploitation 6164 - Insolvabilité clients + Assurance insolvabilité clients 6165 @@ -3529,7 +3488,7 @@ - Commissions et courtages sur achats + Commissions et courtages sur achats 6221 @@ -3571,7 +3530,7 @@ - Divers + Rémunérations d'intermédiaires et honoraires - Divers 6228 @@ -3628,7 +3587,7 @@ - Divers (pourboires, dons courants...) + Publicité, publications, relations publiques - Divers (pourboires, dons courants...) 6238 @@ -3670,7 +3629,7 @@ - Divers + Transports divers 6248 @@ -3796,7 +3755,7 @@ - Autres + Autres impôts, taxes et versements assimilés sur rémunérations (administrations des impôts) 6318 @@ -3838,15 +3797,22 @@ - Autres + Autres impôts, taxes et versements assimilés sur rémunérations (autres organismes) 6338 - - Taxe professionnelle - 63511 + + Cotisation foncière des entreprises + 635111 + + + + + + Cotisation sur la valeur ajoutée des entreprises + 635112 @@ -3873,7 +3839,7 @@ - Taxes sur le chiffre d'affaires non récupérables + Taxes sur le chiffre d'affaires non récupérables 6352 @@ -3922,7 +3888,7 @@ - Taxes diverses + Taxes diverses (autres organismes) 6378 @@ -4041,7 +4007,7 @@ - Médecine du travail pharmacie + Médecine du travail, pharmacie 6475 @@ -4062,7 +4028,7 @@ - Redevances pour concessions brevets, licences, marques, procédés, logiciels + Redevances pour concessions brevets, licences, marques, procédés, logiciels 6511 @@ -4210,14 +4176,14 @@ - Pénalités sur marchés (et dédits payés sur achats et ventes) + Charges exceptionnelles - Pénalités sur marchés (et dédits payés sur achats et ventes) 6711 - Pénalités, amendes fiscales et pénales + Charges exceptionnelles - Pénalités, amendes fiscales et pénales 6712 PV code de la route non déductibles @@ -4225,28 +4191,28 @@ - Dons, libéralités + Charges exceptionnelles - Dons, libéralités 6713 - Créances devenues irrécouvrables dans l'exercice + Charges exceptionnelles - Créances devenues irrécouvrables dans l'exercice 6714 - Subventions accordées + Charges exceptionnelles - Subventions accordées 6715 - Rappels d'impôts (autres qu'impôts sur les bénéfices) + Charges exceptionnelles - Rappels d'impôts (autres qu'impôts sur les bénéfices) 6717 @@ -4260,56 +4226,56 @@ - Charges sur exercices antérieurs (en cours d'exercice seulement) + Charges exceptionnelles sur exercices antérieurs (en cours d'exercice seulement) 672 - Immobilisations incorporelles + Valeurs comptables des éléments d'actif cédés - Immobilisations incorporelles 6751 - Immobilisations corporelles + Valeurs comptables des éléments d'actif cédés - Immobilisations corporelles 6752 - Immobilisations financières + Valeurs comptables des éléments d'actif cédés - Immobilisations financières 6756 - Autres éléments d'actif + Valeurs comptables des éléments d'actif cédés - Autres éléments d'actif 6758 - Malis provenant de clauses d'indexation + Charges exceptionnelles - Malis provenant de clauses d'indexation 6781 - Lots + Charges exceptionnelles - Lots 6782 - Malis provenant du rachat par l'entreprise d'actions et obligations émises par elle-même + Charges exceptionnelles - Malis provenant du rachat par l'entreprise d'actions et obligations émises par elle-même 6783 @@ -4323,14 +4289,14 @@ - Immobilisations incorporelles + Dotations aux amortissements sur immobilisations incorporelles 68111 - Immobilisations corporelles + Dotations aux amortissements sur immobilisations corporelles 68112 @@ -4351,28 +4317,28 @@ - Immobilisations incorporelles + Dotations aux dépréciations des immobilisations incorporelles 68161 - Immobilisations corporelles + Dotations aux dépréciations des immobilisations corporelles 68162 - Stocks et en-cours + Dotations aux dépréciations des stocks et en-cours 68173 - Créances + Dotations aux dépréciations des créances 68174 @@ -4393,21 +4359,21 @@ - Immobilisations financières + Dotations aux dépréciations des immobilisations financières 68662 - Valeurs mobilières de placement + Dotations aux dépréciations des valeurs mobilières de placement 68665 - Autres dotations + Autres dotations aux amortissements, dépréciations et provisions - Charges financières 6868 @@ -4421,21 +4387,21 @@ - Amortissements dérogatoires + Dotations aux provisions réglementées exceptionnelles (immobilisations) - Amortissements dérogatoires 68725 - Dotations aux provisions réglementées (stocks) + Dotations aux provisions réglementées exceptionnelles (stocks) 6873 - Dotations aux autres provisions réglementées + Dotations aux autres provisions réglementées exceptionnelles 6874 @@ -4463,7 +4429,7 @@ - Impôts dus en France + Impôts sur les bénéfices dus en France 6951 @@ -4477,7 +4443,7 @@ - Impôts dus à l'étranger + Impôts sur les bénéfices dus à l'étranger 6954 @@ -4519,14 +4485,14 @@ - Produits finis (ou groupe) A + Ventes de produits finis (ou groupe) A 7011 - Produits finis (ou groupe) B + Ventes de produits finis (ou groupe) B 7012 @@ -4547,49 +4513,49 @@ - Travaux de catégorie (ou activité) A + Ventes de travaux de catégorie (ou activité) A 7041 - Travaux de catégorie (ou activité) B + Ventes de travaux de catégorie (ou activité) B 7042 - Études + Ventes d'études 705 - Prestations de services + Ventes de prestations de services 706 - Marchandises (ou groupe) A + Ventes de marchandises (ou groupe) A 7071 - Marchandises (ou groupe) B + Ventes de marchandises (ou groupe) B 7072 - Marchandises à l'exportation + Ventes de marchandises à l'exportation 7073 @@ -4617,7 +4583,7 @@ - Mise à disposition de personnel facturée + Mise à disposition de personnel facturée 7084 @@ -4652,112 +4618,112 @@ - - sur ventes de produits finis + Rabais, remises et ristournes sur ventes de produits finis 7091 - - sur ventes de produits intermédiaires + Rabais, remises et ristournes sur ventes de produits intermédiaires 7092 - - sur travaux + Rabais, remises et ristournes sur travaux 7094 - - sur études + Rabais, remises et ristournes sur études 7095 - - sur prestations de services + Rabais, remises et ristournes sur prestations de services 7096 - - sur ventes de marchandises + Rabais, remises et ristournes sur ventes de marchandises 7097 - - sur produits des activités annexes + Rabais, remises et ristournes sur produits des activités annexes 7098 - Produits en cours + Variation des en-cours de production de biens - Produits en cours 71331 - Travaux en cours + Variation des en-cours de production de biens - Travaux en cours 71335 - Études en cours + Variation des en-cours de production de services - Études en cours 71341 - Prestations de services en cours + Variation des en-cours de production de services - Prestations de services en cours 71345 - Produits intermédiaires + Variation des stocks de produits intermédiaires 71351 - Produits finis + Variation des stocks de produits finis 71355 - Produits résiduels + Variation des stocks de produits résiduels 71358 - Immobilisations incorporelles + Production immobilisée - Immobilisations incorporelles 721 - Immobilisations corporelles + Production immobilisée - Immobilisations corporelles 722 @@ -4771,7 +4737,7 @@ - Redevances pour concessions, brevets, licences, marques, procédés, logiciels + Redevances pour concessions, brevets, licences, marques, procédés, logiciels 7511 @@ -4785,7 +4751,7 @@ - Autres droits et valeurs similaires + Redevances pour autres droits et valeurs similaires 7518 @@ -4841,7 +4807,7 @@ - Revenus sur autres formes de participation + Revenus sur autres formes de participation 7616 @@ -4875,7 +4841,7 @@ - Revenus des créances commerciales + Revenus des créances commerciales 7631 @@ -4925,35 +4891,35 @@ - Dédits et pénalités perçus sur achats et sur ventes + Produits exceptionnels - Dédits et pénalités perçus sur achats et sur ventes 7711 - Libéralités reçues + Produits exceptionnels - Libéralités reçues 7713 - Rentrées sur créances amorties + Produits exceptionnels - Rentrées sur créances amorties 7714 - Subventions d'équilibre + Produits exceptionnels - Subventions d'équilibre 7715 - Dégrèvements d'impôts autres qu'impôts sur les bénéfices + Produits exceptionnels - Dégrèvements d'impôts autres qu'impôts sur les bénéfices 7717 @@ -4967,63 +4933,63 @@ - Produits sur exercices antérieurs (en cours d'exercice seulement) + Produits exceptionnels sur exercices antérieurs (en cours d'exercice seulement) 772 - Immobilisations incorporelles + Produits exceptionnels des cessions d'éléments d'actif - Immobilisations incorporelles 7751 - Immobilisations corporelles + Produits exceptionnels des cessions d'éléments d'actif - Immobilisations corporelles 7752 - Immobilisations financières + Produits exceptionnels des cessions d'éléments d'actif - Immobilisations financières 7756 - Autres éléments d'actif + Produits exceptionnels des cessions d'éléments d'actif - Autres éléments d'actif 7758 - Quote-part des subventions d'investissement virée au résultat de l'exercice + Produits exceptionnels - Quote-part des subventions d'investissement virée au résultat de l'exercice 777 - Bonis provenant de clauses d'indexation + Produits exceptionnels - Bonis provenant de clauses d'indexation 7781 - Lots + Produits exceptionnels - Lots 7782 - Bonis provenant du rachat par l'entreprise d'actions et d'obligations émises par elle-même + Produits exceptionnels - Bonis provenant du rachat par l'entreprise d'actions et d'obligations émises par elle-même 7783 @@ -5037,14 +5003,14 @@ - Immobilisations incorporelles + Reprises sur amortissements des immobilisations incorporelles 78111 - Immobilisations corporelles + Reprises sur amortissements des immobilisations corporelles 78112 @@ -5058,84 +5024,84 @@ - Immobilisations incorporelles + Reprises sur dépréciations des immobilisations incorporelles 78161 - Immobilisations corporelles + Reprises sur dépréciations des immobilisations corporelles 78162 - Stocks et en-cours + Reprises sur dépréciations des actifs circulants - Stocks et en-cours 78173 - Créances + Reprises sur dépréciations des actifs circulants - Créances 78174 - Reprises sur provisions financiers + Reprises sur provisions financières 7865 - Immobilisations financières + Reprises sur dépréciations des immobilisations financières 78662 - Valeurs mobilières de placement + Reprises sur dépréciations des valeurs mobilières de placement 78665 - Amortissements dérogatoires + Reprises sur provisions réglementées (immobilisations) - Amortissements dérogatoires 78725 - Provision spéciale de réévaluation + Reprises sur provisions réglementées (immobilisations) - Provision spéciale de réévaluation 78726 - Plus-values réinvesties + Reprises sur provisions réglementées (immobilisations) - Plus-values réinvesties 78727 - Reprises sur provisions réglementées (stocks) + Reprises sur provisions réglementées (stocks) 7873 - Reprises sur autres provisions réglementées + Reprises sur autres provisions réglementées 7874 @@ -5149,7 +5115,7 @@ - Reprises pour dépréciations exceptionnelles + Reprises sur dépréciations exceptionnelles 7876 diff --git a/addons/l10n_in_hr_payroll/report/report_hr_salary_employee_bymonth.py b/addons/l10n_in_hr_payroll/report/report_hr_salary_employee_bymonth.py index f6b458ebd4f..16e17b2fbba 100644 --- a/addons/l10n_in_hr_payroll/report/report_hr_salary_employee_bymonth.py +++ b/addons/l10n_in_hr_payroll/report/report_hr_salary_employee_bymonth.py @@ -4,6 +4,7 @@ from datetime import date from odoo import api, models +from odoo.exceptions import UserError class ReportHrSalaryEmployeeBymonth(models.AbstractModel): @@ -93,6 +94,9 @@ class ReportHrSalaryEmployeeBymonth(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not data.get('form') or not self.env.context.get('active_model') or not self.env.context.get('active_id'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + model = self.env.context.get('active_model') docs = self.env[model].browse(self.env.context.get('active_id')) get_periods, months, total_mnths = self.get_periods(data['form']) diff --git a/addons/l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.py b/addons/l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.py index 0464f8249ed..38cee62d220 100644 --- a/addons/l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.py +++ b/addons/l10n_in_hr_payroll/report/report_hr_yearly_salary_detail.py @@ -4,6 +4,7 @@ from datetime import date from odoo import api, models +from odoo.exceptions import UserError from odoo.tools import pycompat @@ -128,6 +129,9 @@ class EmployeesYearlySalaryReport(models.AbstractModel): @api.model def get_report_values(self, docids, data=None): + if not self.env.context.get('active_model') or not self.env.context.get('active_id'): + raise UserError(_("Some data are missing, this report cannot be printed.")) + model = self.env.context.get('active_model') docs = self.env[model].browse(self.env.context.get('active_id')) return { diff --git a/addons/lunch/models/lunch.py b/addons/lunch/models/lunch.py index f4e5b16430b..ee8bba3492e 100644 --- a/addons/lunch/models/lunch.py +++ b/addons/lunch/models/lunch.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from operator import itemgetter +from collections import OrderedDict import json import datetime @@ -94,9 +94,9 @@ class LunchOrder(models.Model): })) if self.previous_order_ids: - lunch_data = [] + lunch_data = {} for line in self.previous_order_ids: - lunch_data.append({ + lunch_data[line.id] = { 'line_id': line.id, 'product_id': line.product_id.id, 'product_name': line.product_id.name, @@ -105,8 +105,9 @@ class LunchOrder(models.Model): 'price': line.price, 'date': line.date, 'currency_id': line.currency_id.id, - }) - lunch_data.sort(key=itemgetter('date', 'line_id'), reverse=True) + } + # sort the old lunch orders by (date, id) + lunch_data = OrderedDict(sorted(lunch_data.items(), key=lambda t: (t[1]['date'], t[0]), reverse=True)) self.previous_order_widget = json.dumps(lunch_data) @api.one diff --git a/addons/mail/models/mail_tracking_value.py b/addons/mail/models/mail_tracking_value.py index da38a678d06..5fbe63d6a14 100644 --- a/addons/mail/models/mail_tracking_value.py +++ b/addons/mail/models/mail_tracking_value.py @@ -75,8 +75,14 @@ class MailTracking(models.Model): assert type in ('new', 'old') result = [] for record in self: - if record.field_type in ['integer', 'float', 'char', 'text', 'datetime', 'monetary']: + if record.field_type in ['integer', 'float', 'char', 'text', 'monetary']: result.append(getattr(record, '%s_value_%s' % (type, record.field_type))) + elif record.field_type == 'datetime': + if record['%s_value_datetime' % type]: + new_datetime = getattr(record, '%s_value_datetime' % type) + result.append('%sZ' % new_datetime) + else: + result.append(record['%s_value_datetime' % type]) elif record.field_type == 'date': if record['%s_value_datetime' % type]: new_date = datetime.strptime(record['%s_value_datetime' % type], tools.DEFAULT_SERVER_DATETIME_FORMAT).date() diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js index 3181f940e6e..f7aaf73637e 100644 --- a/addons/mail/static/src/js/chat_manager.js +++ b/addons/mail/static/src/js/chat_manager.js @@ -217,14 +217,22 @@ function make_message (data) { // can not be done in preprocess, since it alter the original value if (msg.tracking_value_ids && msg.tracking_value_ids.length) { _.each(msg.tracking_value_ids, function(f) { - if (_.contains(['date', 'datetime'], f.field_type)) { - var format = (f.field_type === 'date') ? 'LL' : 'LLL'; + if (f.field_type === 'datetime') { + var format = 'LLL'; if (f.old_value) { f.old_value = moment.utc(f.old_value).local().format(format); } if (f.new_value) { f.new_value = moment.utc(f.new_value).local().format(format); } + } else if (f.field_type === 'date') { + var format = 'LL'; + if (f.old_value) { + f.old_value = moment(f.old_value).local().format(format); + } + if (f.new_value) { + f.new_value = moment(f.new_value).local().format(format); + } } }); } diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py index 3eca7fe9dff..37d40718516 100644 --- a/addons/mass_mailing/models/mass_mailing.py +++ b/addons/mass_mailing/models/mass_mailing.py @@ -312,7 +312,7 @@ class MassMailing(models.Model): create_date = fields.Datetime(string='Creation Date') sent_date = fields.Datetime(string='Sent Date', oldname='date', copy=False) schedule_date = fields.Datetime(string='Schedule in the Future') - body_html = fields.Html(string='Body', translate=html_translate, sanitize_attributes=False) + body_html = fields.Html(string='Body', sanitize_attributes=False) attachment_ids = fields.Many2many('ir.attachment', 'mass_mailing_ir_attachments_rel', 'mass_mailing_id', 'attachment_id', string='Attachments') keep_archives = fields.Boolean(string='Keep Archives') diff --git a/addons/mass_mailing/static/src/js/mass_mailing.js b/addons/mass_mailing/static/src/js/mass_mailing.js index f01d4aff8d2..75a52a940f1 100644 --- a/addons/mass_mailing/static/src/js/mass_mailing.js +++ b/addons/mass_mailing/static/src/js/mass_mailing.js @@ -32,17 +32,13 @@ KanbanColumn.include({ }); FieldTextHtml.include({ - get_datarecord: function () { + getDatarecord: function () { /* Avoid extremely long URIs by whitelisting fields in the datarecord that get set as a get parameter */ var datarecord = this._super(); - if (this.view.model === 'mail.mass_mailing') { + if (this.model === 'mail.mass_mailing') { // these fields can potentially get very long, let's remove them - var blacklist = ['mailing_domain', 'contact_list_ids']; - for (var k in blacklist) { - delete datarecord[blacklist[k]]; - } - delete datarecord[this.name]; + datarecord = _.omit(datarecord, ['mailing_domain', 'contact_list_ids', 'body_html']); } return datarecord; }, diff --git a/addons/mass_mailing/static/src/js/mass_mailing_editor.js b/addons/mass_mailing/static/src/js/mass_mailing_editor.js index 5d475808589..593ed6140cd 100644 --- a/addons/mass_mailing/static/src/js/mass_mailing_editor.js +++ b/addons/mass_mailing/static/src/js/mass_mailing_editor.js @@ -170,6 +170,7 @@ snippets_editor.Class.include({ className: classname || "", img: $theme.data("img") || "", template: $theme.html().trim(), + nowrap: !!$theme.data('nowrap'), get_image_info: function (filename) { if (images_info[filename]) { return images_info[filename]; @@ -331,13 +332,20 @@ snippets_editor.Class.include({ var $old_layout = $editable_area.find(".o_layout"); // This wrapper structure is the only way to have a responsive and // centered fixed-width content column on all mail clients - var $new_wrapper = $('', {class: 'o_mail_wrapper'}); - var $new_wrapper_content = $("').append( - $("
", {class: 'o_mail_no_resize o_mail_wrapper_td oe_structure'}); - $new_wrapper.append($('
", {class: 'o_mail_no_resize'}), - $new_wrapper_content, - $("", {class: 'o_mail_no_resize'}) - )); + var $new_wrapper, $new_wrapper_content; + + if (theme_params.nowrap) { + $new_wrapper = $new_wrapper_content = $("
", {"class": "oe_structure"}); + } + else { + $new_wrapper = $('', {class: 'o_mail_wrapper'}); + $new_wrapper_content = $("').append( + $("
", {class: 'o_mail_no_resize o_mail_wrapper_td oe_structure'}); + $new_wrapper.append($('
", {class: 'o_mail_no_resize'}), + $new_wrapper_content, + $("", {class: 'o_mail_no_resize'}) + )); + } var $new_layout = $("
", {"class": "o_layout " + theme_params.className}).append($new_wrapper); var $contents; diff --git a/addons/mrp/models/mrp_bom.py b/addons/mrp/models/mrp_bom.py index e4fef9f58cd..64c1e723f92 100644 --- a/addons/mrp/models/mrp_bom.py +++ b/addons/mrp/models/mrp_bom.py @@ -117,26 +117,48 @@ class MrpBom(models.Model): Quantity describes the number of times you need the BoM: so the quantity divided by the number created by the BoM and converted into its UoM """ + from collections import defaultdict + + graph = defaultdict(list) + V = set() + + def check_cycle(v, visited, recStack, graph): + visited[v] = True + recStack[v] = True + for neighbour in graph[v]: + if visited[neighbour] == False: + if check_cycle(neighbour, visited, recStack, graph) == True: + return True + elif recStack[neighbour] == True: + return True + recStack[v] = False + return False + boms_done = [(self, {'qty': quantity, 'product': product, 'original_qty': quantity, 'parent_line': False})] lines_done = [] - templates_done = product.product_tmpl_id + V |= set([product.product_tmpl_id.id]) bom_lines = [(bom_line, product, quantity, False) for bom_line in self.bom_line_ids] + for bom_line in self.bom_line_ids: + V |= set([bom_line.product_id.product_tmpl_id.id]) + graph[product.product_tmpl_id.id].append(bom_line.product_id.product_tmpl_id.id) while bom_lines: current_line, current_product, current_qty, parent_line = bom_lines[0] bom_lines = bom_lines[1:] if current_line._skip_bom_line(current_product): continue - if current_line.product_id.product_tmpl_id in templates_done: - raise UserError(_('Recursion error! A product with a Bill of Material should not have itself in its BoM or child BoMs!')) line_quantity = current_qty * current_line.product_qty bom = self._bom_find(product=current_line.product_id, picking_type=picking_type or self.picking_type_id, company_id=self.company_id.id) if bom.type == 'phantom': converted_line_quantity = current_line.product_uom_id._compute_quantity(line_quantity / bom.product_qty, bom.product_uom_id) bom_lines = [(line, current_line.product_id, converted_line_quantity, current_line) for line in bom.bom_line_ids] + bom_lines - templates_done |= current_line.product_id.product_tmpl_id + for bom_line in bom.bom_line_ids: + graph[current_line.product_id.product_tmpl_id.id].append(bom_line.product_id.product_tmpl_id.id) + if bom_line.product_id.product_tmpl_id.id in V and check_cycle(bom_line.product_id.product_tmpl_id.id, {key: False for key in V}, {key: False for key in V}, graph): + raise UserError(_('Recursion error! A product with a Bill of Material should not have itself in its BoM or child BoMs!')) + V |= set([bom_line.product_id.product_tmpl_id.id]) boms_done.append((bom, {'qty': converted_line_quantity, 'product': current_product, 'original_qty': quantity, 'parent_line': current_line})) else: # We round up here because the user expects that if he has to consume a little more, the whole UOM unit diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py index 4f728d48698..1f59087a2c2 100644 --- a/addons/mrp/models/mrp_production.py +++ b/addons/mrp/models/mrp_production.py @@ -208,11 +208,8 @@ class MrpProduction(models.Model): @api.depends('move_raw_ids.quantity_done', 'move_finished_ids.quantity_done') def _compute_post_visible(self): for order in self: - if order.product_tmpl_id._is_cost_method_standard(): - order.post_visible = any((x.quantity_done > 0 and x.state not in ['done', 'cancel']) for x in order.move_raw_ids) or \ - any((x.quantity_done > 0 and x.state not in ['done' 'cancel']) for x in order.move_finished_ids) - else: - order.post_visible = any((x.quantity_done > 0 and x.state not in ['done' 'cancel']) for x in order.move_finished_ids) + order.post_visible = any(order.move_raw_ids.filtered(lambda x: (x.quantity_done) > 0 and (x.state not in ['done', 'cancel']))) or \ + any(order.move_finished_ids.filtered(lambda x: (x.quantity_done) > 0 and (x.state not in ['done', 'cancel']))) @api.multi @api.depends('workorder_ids.state', 'move_finished_ids') @@ -269,7 +266,10 @@ class MrpProduction(models.Model): @api.model def create(self, values): if not values.get('name', False) or values['name'] == _('New'): - values['name'] = self.env['ir.sequence'].next_by_code('mrp.production') or _('New') + if values.get('picking_type_id'): + values['name'] = self.env['stock.picking.type'].browse(values['picking_type_id']).sequence_id.next_by_id() + else: + values['name'] = self.env['ir.sequence'].next_by_code('mrp.production') or _('New') if not values.get('procurement_group_id'): values['procurement_group_id'] = self.env["procurement.group"].create({'name': values['name']}).id production = super(MrpProduction, self).create(values) diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index f0c7d4e4405..24bc802ec7b 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -391,9 +391,12 @@ class MrpWorkorder(models.Model): domain = [('workorder_id', 'in', self.ids), ('date_end', '=', False)] if not doall: domain.append(('user_id', '=', self.env.user.id)) + not_productive_timelines = timeline_obj.browse() for timeline in timeline_obj.search(domain, limit=None if doall else 1): wo = timeline.workorder_id - if timeline.loss_type != 'productive': + if wo.duration_expected <= wo.duration: + if timeline.loss_type == 'productive': + not_productive_timelines += timeline timeline.write({'date_end': fields.Datetime.now()}) else: maxdate = fields.Datetime.from_string(timeline.date_start) + relativedelta(minutes=wo.duration_expected - wo.duration) @@ -402,10 +405,12 @@ class MrpWorkorder(models.Model): timeline.write({'date_end': enddate}) else: timeline.write({'date_end': maxdate}) - loss_id = self.env['mrp.workcenter.productivity.loss'].search([('loss_type', '=', 'performance')], limit=1) - if not len(loss_id): - raise UserError(_("You need to define at least one unactive productivity loss in the category 'Performance'. Create one from the Manufacturing app, menu: Configuration / Productivity Losses.")) - timeline.copy({'date_start': maxdate, 'date_end': enddate, 'loss_id': loss_id.id}) + not_productive_timelines += timeline.copy({'date_start': maxdate, 'date_end': enddate}) + if not_productive_timelines: + loss_id = self.env['mrp.workcenter.productivity.loss'].search([('loss_type', '=', 'performance')], limit=1) + if not len(loss_id): + raise UserError(_("You need to define at least one unactive productivity loss in the category 'Performance'. Create one from the Manufacturing app, menu: Configuration / Productivity Losses.")) + not_productive_timelines.write({'loss_id': loss_id.id}) return True @api.multi diff --git a/addons/mrp/tests/test_bom.py b/addons/mrp/tests/test_bom.py index 4d54f23df0a..71421216411 100644 --- a/addons/mrp/tests/test_bom.py +++ b/addons/mrp/tests/test_bom.py @@ -131,7 +131,30 @@ class TestBoM(TestMrpCommon): self.assertEqual(set((test_bom_2 | self.bom_2).ids), set([b[0].id for b in boms])) self.assertEqual(set((test_bom_2_l1 | test_bom_2_l4 | self.bom_2.bom_line_ids).ids), set([l[0].id for l in lines])) - # check recursion - test_bom_2_l3.write({'attribute_value_ids': [(6, 0, [self.prod_attr1_v1.id])]}) + #check recursion + test_bom_3 = self.env['mrp.bom'].create({ + 'product_id': self.product_9.id, + 'product_tmpl_id': self.product_9.product_tmpl_id.id, + 'product_uom_id': self.product_9.uom_id.id, + 'product_qty': 1.0, + 'type': 'normal' + }) + test_bom_4 = self.env['mrp.bom'].create({ + 'product_id': self.product_10.id, + 'product_tmpl_id': self.product_10.product_tmpl_id.id, + 'product_uom_id': self.product_10.uom_id.id, + 'product_qty': 1.0, + 'type': 'phantom' + }) + test_bom_3_l1 = self.env['mrp.bom.line'].create({ + 'bom_id': test_bom_3.id, + 'product_id': self.product_10.id, + 'product_qty': 1.0, + }) + test_bom_4_l1 = self.env['mrp.bom.line'].create({ + 'bom_id': test_bom_4.id, + 'product_id': self.product_9.id, + 'product_qty': 1.0, + }) with self.assertRaises(exceptions.UserError): - test_bom_2.explode(self.product_7_1, 4) + test_bom_3.explode(self.product_9, 1) diff --git a/addons/mrp/views/mrp_production_views.xml b/addons/mrp/views/mrp_production_views.xml index e9b6935b9ec..25a9d56abed 100644 --- a/addons/mrp/views/mrp_production_views.xml +++ b/addons/mrp/views/mrp_production_views.xml @@ -48,7 +48,7 @@