[MERGE] forward port of branch 8.0 up to 0aab81c

This commit is contained in:
Christophe Simonis
2015-01-19 17:15:56 +01:00
272 changed files with 2480 additions and 1214 deletions
+1
View File
@@ -8,6 +8,7 @@ recursive-include openerp *.html
recursive-include openerp *.jpeg
recursive-include openerp *.jpg
recursive-include openerp *.js
recursive-include openerp *.less
recursive-include openerp *.md
recursive-include openerp *.png
recursive-include openerp *.po
-1
View File
@@ -48,7 +48,6 @@ Processes like maintaining general ledgers are done through the defined Financia
for a particular financial year and for preparation of vouchers there is a module named account_voucher.
""",
'website': 'https://www.odoo.com/page/billing',
'images' : ['images/accounts.jpeg','images/bank_statement.jpeg','images/cash_register.jpeg','images/chart_of_accounts.jpeg','images/customer_invoice.jpeg','images/journal_entries.jpeg'],
'depends' : ['base_setup', 'product', 'analytic', 'board', 'edi', 'report'],
'data': [
'security/account_security.xml',
+1 -1
View File
@@ -873,7 +873,7 @@ class account_bank_statement_line(osv.osv):
# Unfortunately, that spawns a "no access rights" error ; it shouldn't.
def _needaction_domain_get(self, cr, uid, context=None):
user = self.pool.get("res.users").browse(cr, uid, uid)
return ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id]), ('journal_entry_ids', '=', False)]
return ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id]), ('journal_entry_ids', '=', False), ('account_id', '=', False)]
_order = "statement_id desc, sequence"
_name = "account.bank.statement.line"
+1 -1
View File
@@ -2554,7 +2554,7 @@
<field name="sign"/>
<field name="style_overwrite"/>
</group>
<notebook attrs="{'invisible': [('type','not in',['accounts','account_type'])]}">
<notebook attrs="{'invisible': [('type','not in',['accounts','account_type', 'account_report'])]}">
<page string="Report">
<group>
<field name="display_detail" attrs="{'invisible': [('type','not in',['accounts','account_type'])]}"/>
@@ -55,6 +55,10 @@
top: 2px;
z-index: 10;
text-shadow: -1px -1px 0 #f5f5f5, 1px -1px 0 #f5f5f5, -1px 1px 0 #f5f5f5, 1px 1px 0 #f5f5f5; }
.openerp .oe_bank_statement_reconciliation .show_more_container {
text-align: center; }
.openerp .oe_bank_statement_reconciliation .show_more_container .show_more {
display: none; }
.openerp .oe_bank_statement_reconciliation .notification_area {
margin: 0 15px; }
.openerp .oe_bank_statement_reconciliation .interface_options {
@@ -92,6 +92,13 @@ $aestetic_animation_speed: 300ms;
}
}
.show_more_container {
text-align: center;
.show_more {
display: none;
}
}
.notification_area {
margin: 0 $actionColWidth;
}
+71 -39
View File
@@ -15,11 +15,13 @@ openerp.account = function (instance) {
"click .statement_name span": "statementNameClickHandler",
"keyup .change_statement_name_field": "changeStatementNameFieldHandler",
"click .change_statement_name_button": "changeStatementButtonClickHandler",
"click .show_more": "showMoreButtonClickHandler",
},
init: function(parent, context) {
this._super(parent);
this.max_reconciliations_displayed = 10;
// Number of reconciliations loaded initially and by clicking 'show more'
this.num_reconciliations_fetched_in_batch = 10;
if (context.context.statement_id) this.statement_ids = [context.context.statement_id];
if (context.context.statement_ids) this.statement_ids = context.context.statement_ids;
this.single_statement = this.statement_ids !== undefined && this.statement_ids.length === 1;
@@ -237,7 +239,7 @@ openerp.account = function (instance) {
total_lines: self.already_reconciled_lines+self.st_lines.length
}));
self.updateProgressbar();
var reconciliations_to_show = self.st_lines.slice(0, self.max_reconciliations_displayed);
var reconciliations_to_show = self.st_lines.slice(0, self.num_reconciliations_fetched_in_batch);
self.last_displayed_reconciliation_index = reconciliations_to_show.length;
self.$(".reconciliation_lines_container").css("opacity", 0);
@@ -251,6 +253,7 @@ openerp.account = function (instance) {
$.when.apply($, child_promises).then(function(){
self.$(".reconciliation_lines_container").animate({opacity: 1}, self.aestetic_animation_speed);
self.getChildren()[0].set("mode", "match");
self.updateShowMoreButton();
if (self.notifications) {
self.displayNotifications(self.notifications);
}
@@ -340,7 +343,7 @@ openerp.account = function (instance) {
var child = reconciliations[i];
data.push([child.st_line_id, child.makeMoveLineDicts()]);
}
var deferred_animation = self.$(".reconciliation_lines_container").fadeOut(self.aestetic_animation_speed);
var deferred_animation = self.$(".reconciliation_lines_container, .show_more_container").fadeOut(self.aestetic_animation_speed);
deferred_rpc = self.model_bank_statement_line.call("process_reconciliations", [data]);
return $.when(deferred_animation, deferred_rpc)
.done(function() {
@@ -359,48 +362,25 @@ openerp.account = function (instance) {
// Display new line if there are left
if (self.last_displayed_reconciliation_index < self.st_lines.length) {
var begin = self.last_displayed_reconciliation_index;
var end = Math.min((begin+self.max_reconciliations_displayed), self.st_lines.length);
var reconciliations_to_show = self.st_lines.slice(begin, end);
return self.model_bank_statement_line
.call("get_data_for_reconciliations", [reconciliations_to_show])
.then(function (data) {
var child_promises = [];
var datum;
while ((datum = data.shift()) !== undefined) {
var context = {
st_line_id: datum.st_line.id,
mode: 'inactive',
animate_entrance: false,
initial_data_provided: true,
st_line: datum.st_line,
reconciliation_proposition: datum.reconciliation_proposition,
};
var widget = new instance.web.account.bankStatementReconciliationLine(self, context);
child_promises.push(widget.appendTo(self.$(".reconciliation_lines_container")));
return self.displayReconciliations(self.num_reconciliations_fetched_in_batch).then(function() {
// Put the first line in match mode
if (self.reconciled_lines !== self.st_lines.length) {
var first_child = self.getChildren()[0];
if (first_child.get("mode") === "inactive") {
first_child.set("mode", "match");
}
self.last_displayed_reconciliation_index += reconciliations_to_show.length;
return $.when.apply($, child_promises).then(function() {
// Put the first line in match mode
if (self.reconciled_lines !== self.st_lines.length) {
var first_child = self.getChildren()[0];
if (first_child.get("mode") === "inactive") {
first_child.set("mode", "match");
}
}
self.$(".reconciliation_lines_container").fadeIn(self.aestetic_animation_speed);
});
});
}
self.$(".reconciliation_lines_container, .show_more_container").fadeIn(self.aestetic_animation_speed);
});
} else if (self.reconciled_lines === self.st_lines.length) {
// Congratulate the user if the work is done
self.displayDoneMessage();
} else {
// Some lines weren't persisted because they were't valid
self.$(".reconciliation_lines_container").fadeIn(self.aestetic_animation_speed);
self.$(".reconciliation_lines_container, .show_more_container").fadeIn(self.aestetic_animation_speed);
}
}).fail(function() {
self.$(".reconciliation_lines_container").fadeIn(self.aestetic_animation_speed);
self.$(".reconciliation_lines_container, .show_more_container").fadeIn(self.aestetic_animation_speed);
});
},
@@ -433,7 +413,8 @@ openerp.account = function (instance) {
// Update children if needed
_.each(self.getChildren(), function(child){
if ((child.partner_id === partner_id || child.st_line.has_no_partner) && child !== source_child) {
if (child === source_child || child.st_line === undefined) return;
if (child.partner_id === partner_id || child.st_line.has_no_partner) {
if (contains_lines(child.get("mv_lines_selected"), line_ids)) {
child.set("mv_lines_selected", _.filter(child.get("mv_lines_selected"), function(o){ return line_ids.indexOf(o.id) === -1 }));
} else if (contains_lines(child.mv_lines_deselected, line_ids)) {
@@ -457,6 +438,7 @@ openerp.account = function (instance) {
// Update children if needed
_.each(self.getChildren(), function(child){
if (child.st_line === undefined) return;
if (child.partner_id === partner_id && child !== source_child && (child.get("mode") === "match" || child.$el.hasClass("no_match")))
child.updateMatches();
if (child.st_line.has_no_partner && child.get("mode") === "match" || child.$el.hasClass("no_match"))
@@ -464,6 +446,42 @@ openerp.account = function (instance) {
});
},
displayReconciliations: function(number) {
var self = this;
var begin = self.last_displayed_reconciliation_index;
var end = Math.min((begin+number), self.st_lines.length);
var reconciliations_to_show = self.st_lines.slice(begin, end);
// Get ids of selected move lines (to exclude them from reconciliation proposition)
var excluded_move_lines_ids = [];
_.each(self.excluded_move_lines_ids, function(o){
excluded_move_lines_ids = excluded_move_lines_ids.concat(o);
});
return self.model_bank_statement_line
.call("get_data_for_reconciliations", [reconciliations_to_show, excluded_move_lines_ids])
.then(function (data) {
var child_promises = [];
var datum;
while ((datum = data.shift()) !== undefined) {
var context = {
st_line_id: datum.st_line.id,
mode: 'inactive',
animate_entrance: false,
initial_data_provided: true,
st_line: datum.st_line,
reconciliation_proposition: datum.reconciliation_proposition,
};
var widget = new instance.web.account.bankStatementReconciliationLine(self, context);
child_promises.push(widget.appendTo(self.$(".reconciliation_lines_container")));
}
self.last_displayed_reconciliation_index += reconciliations_to_show.length;
return $.when.apply($, child_promises).then(function(){
self.updateShowMoreButton();
});
});
},
displayReconciliation: function(st_line_id, mode, animate_entrance, initial_data_provided, st_line, reconciliation_proposition) {
var self = this;
animate_entrance = (animate_entrance === undefined ? true : animate_entrance);
@@ -489,7 +507,7 @@ openerp.account = function (instance) {
self.doReloadMenuReconciliation();
// Display new line if there are left
if (self.last_displayed_reconciliation_index < self.st_lines.length) {
if (self.last_displayed_reconciliation_index < self.st_lines.length && self.getChildren().length < self.num_reconciliations_fetched_in_batch) {
self.displayReconciliation(self.st_lines[self.last_displayed_reconciliation_index++], 'inactive');
}
// Congratulate the user if the work is done
@@ -504,6 +522,7 @@ openerp.account = function (instance) {
first_child.set("mode", "match");
}
}
self.updateShowMoreButton();
},
goBackToStatementsTreeView: function() {
@@ -557,6 +576,7 @@ openerp.account = function (instance) {
// Render it
self.$(".protip").hide();
self.updateShowMoreButton();
self.$(".oe_form_sheet").append(QWeb.render("bank_statement_reconciliation_done_message", {
title: title,
time_taken: time_taken,
@@ -606,7 +626,19 @@ openerp.account = function (instance) {
});
}
},
showMoreButtonClickHandler: function() {
this.displayReconciliations(this.num_reconciliations_fetched_in_batch);
},
updateShowMoreButton: function() {
var items_remaining = this.st_lines.length - this.last_displayed_reconciliation_index;
if (items_remaining > 0)
this.$(".show_more").show().find(".num_items_remaining").text(items_remaining);
else
this.$(".show_more").hide();
},
updateProgressbar: function() {
var self = this;
var done = self.already_reconciled_lines + self.reconciled_lines;
@@ -34,6 +34,7 @@
<div class="oe_clear"></div>
<div class="notification_area"></div>
<div class="reconciliation_lines_container"></div>
<div class="show_more_container"><button class="show_more">Show more... (<span class="num_items_remaining"></span> remaining)</button></div>
<p class='protip'>Tip : Hit ctrl-enter to validate the whole sheet.</p>
</div></div>
</t>
-6
View File
@@ -1,9 +1,3 @@
from . import test_tax
from . import test_search
from . import test_reconciliation
fast_suite = [
test_tax,
test_search,
test_reconciliation,
]
@@ -32,7 +32,6 @@ Adds menu to show relevant information to each manager.You can also view the rep
""",
'author': 'Camptocamp / Odoo',
'website': 'https://www.odoo.com/page/billing',
'images': ['images/bill_tasks_works.jpeg','images/overpassed_accounts.jpeg'],
'depends': ['hr_timesheet_invoice', 'sale'], #although sale is technically not required to install this module, all menuitems are located under 'Sales' application
'data': [
'security/ir.model.access.csv',
@@ -37,7 +37,6 @@ Allows to automatically select analytic accounts based on criterions:
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/analytic_defaults.jpeg'],
'depends': ['sale_stock'],
'data': [
'security/ir.model.access.csv',
@@ -64,7 +64,6 @@ The analytic plan validates the minimum and maximum percentage at the time of cr
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/analytic_plan.jpeg'],
'depends': ['account', 'account_analytic_default'],
'data': [
'security/account_analytic_plan_security.xml',
@@ -39,7 +39,6 @@ account when the invoice is created to transfer this amount to the
debtor or creditor account. Secondly, price differences between actual
purchase price and fixed product standard price are booked on a separate
account.""",
'images': ['images/account_anglo_saxon.jpeg'],
'depends': ['product', 'purchase'],
'category': 'Accounting & Finance',
'demo': [],
-1
View File
@@ -48,7 +48,6 @@ Three reports are available:
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/budget.jpeg','images/budgetary_position.jpeg'],
'depends': ['account'],
'data': [
'security/ir.model.access.csv',
-1
View File
@@ -32,7 +32,6 @@ This module adds 'Allow Canceling Entries' field on form view of account journal
If set to true it allows user to cancel entries & invoices.
""",
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/account_cancel.jpeg'],
'depends' : ['account'],
'data': ['account_cancel_view.xml' ],
'demo': [],
-1
View File
@@ -45,7 +45,6 @@ Note that if you want to check the follow-up level for a given partner/account e
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/billing',
'images': ['images/follow_ups.jpeg','images/send_followups.jpeg'],
'depends': ['account_accountant', 'mail'],
'data': [
'security/account_followup_security.xml',
@@ -20,6 +20,3 @@
##############################################################################
from . import test_account_followup
checks = [
test_account_followup,
]
-1
View File
@@ -42,7 +42,6 @@ when you get the confirmation from your bank that your order has been accepted
that you can book it in your accounting. To help you with that operation, you
have a new option to import payment orders as bank statement lines.
""",
'images': ['images/payment_mode.jpeg','images/payment_order.jpeg'],
'depends': ['account','account_voucher'],
'data': [
'security/account_payment_security.xml',
-1
View File
@@ -39,7 +39,6 @@ You can customize the following attributes of the sequence:
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com',
'images': ['images/internal_sequence_number.jpeg'],
'depends': ['account'],
'data': [
'account_sequence_data.xml',
-1
View File
@@ -42,7 +42,6 @@ This module manages:
'category': 'Accounting & Finance',
'sequence': 4,
'website' : 'https://www.odoo.com/page/billing',
'images' : ['images/customer_payment.jpeg','images/journal_voucher.jpeg','images/sales_receipt.jpeg','images/supplier_voucher.jpeg','images/customer_invoice.jpeg','images/customer_refunds.jpeg'],
'depends' : ['account'],
'demo' : [],
'data' : [
@@ -19,6 +19,24 @@
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_voucher_tree_nocreate">
<field name="name">account.voucher.tree_nocreate</field>
<field name="model">account.voucher</field>
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';gray:state == 'cancel';red:audit" string="Voucher Entries" create="0" edit="0">
<field name="date"/>
<field name="number"/>
<field name="reference"/>
<field name="partner_id"/>
<field name="journal_id" groups="account.group_account_user"/>
<field name="period_id" invisible="context.get('visible', True)"/>
<field name="type" invisible="context.get('visible', True)"/>
<field name="amount" sum="Total Amount"/>
<field name="audit" invisible="1"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_voucher_line_form">
<field name="name">account.voucher.line.form</field>
<field name="model">account.voucher.line</field>
@@ -40,7 +58,7 @@
<field name="name">account.voucher.form</field>
<field name="model">account.voucher</field>
<field name="arch" type="xml">
<form string="Accounting Voucher">
<form string="Accounting Voucher" create="0" edit="0">
<header>
<button name="proforma_voucher" string="Post" states="draft" class="oe_highlight"/>
<button name="cancel_voucher" string="Cancel Voucher" type="object" states="posted" confirm="Are you sure you want to unreconcile this record?"/>
@@ -160,12 +178,13 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="context">{}</field>
<field name="view_id" eval="view_voucher_tree"/>
<field name="view_id" eval="view_voucher_tree_nocreate"/>
<field name="search_view_id" ref="view_voucher_filter"/>
</record>
<record id="action_journal_voucher_tree" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_voucher_tree_nocreate"/>
<field name="act_window_id" ref="action_voucher_list"/>
</record>
<record id="action_journal_voucher_form" model="ir.actions.act_window.view">
@@ -396,7 +396,7 @@
</page>
</notebook>
<footer>
<button name="button_proforma_voucher" string="Pay" class="oe_highlight" type="object"/> or
<button name="button_proforma_voucher" string="Register Payment" class="oe_highlight" type="object"/> or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
@@ -39,7 +39,6 @@ compatible with older configurations.
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/employees',
'images': ['images/analytic_user_function.jpeg'],
'depends': ['hr_timesheet_sheet'],
'data': ['analytic_user_function_view.xml', 'security/ir.model.access.csv'],
'demo': [],
-1
View File
@@ -48,5 +48,4 @@ anonymization process to recover your previous data.
],
'installable': True,
'auto_install': False,
'images': ['images/anonymization1.jpeg','images/anonymization2.jpeg','images/anonymization3.jpeg'],
}
-1
View File
@@ -37,6 +37,5 @@ membership products (schemes).
'demo': [],
'installable': True,
'auto_install': False,
'images': ['images/association1.jpeg'],
'website': 'https://www.odoo.com'
}
-1
View File
@@ -22,7 +22,6 @@
'name' : 'Authentication via LDAP',
'version' : '1.0',
'depends' : ['base'],
'images' : ['images/ldap_configuration.jpeg'],
'author' : 'OpenERP SA',
#'description': < auto-loaded from README file
'website' : 'https://www.odoo.com',
+2 -2
View File
@@ -70,9 +70,9 @@ class OAuthLogin(Home):
return providers
def get_state(self, provider):
redirect = request.params.get('redirect', 'web')
redirect = request.params.get('redirect') or 'web'
if not redirect.startswith(('//', 'http://', 'https://')):
redirect = '%s%s' % (request.httprequest.url_root, redirect)
redirect = '%s%s' % (request.httprequest.url_root, redirect[1:] if redirect[0] == '/' else redirect)
state = dict(
d=request.session.db,
p=provider['id'],
-1
View File
@@ -44,5 +44,4 @@ trigger an automatic reminder email.
'demo': [],
'installable': True,
'auto_install': False,
'images': ['images/base_action_rule1.jpeg','images/base_action_rule2.jpeg','images/base_action_rule3.jpeg'],
}
@@ -20,6 +20,3 @@
##############################################################################
from . import base_action_rule_test
checks = [
base_action_rule_test,
]
-1
View File
@@ -38,5 +38,4 @@ Partners geolocalization
'test': [],
'installable': True,
'auto_install': False,
'images': [],
}
-1
View File
@@ -35,5 +35,4 @@ with a single statement.
'data': ['base_iban_data.xml' , 'base_iban_view.xml'],
'installable': True,
'auto_install': False,
'images': ['images/base_iban1.jpeg'],
}
-2
View File
@@ -1,3 +1 @@
from . import test_cases
checks = [test_cases]
-1
View File
@@ -44,5 +44,4 @@ Shows you a list of applications features to install from.
'demo': [],
'installable': True,
'auto_install': False,
'images': ['images/base_setup1.jpeg','images/base_setup2.jpeg','images/base_setup3.jpeg','images/base_setup4.jpeg',],
}
+1 -1
View File
@@ -32,7 +32,7 @@ class base_config_settings(osv.osv_memory):
help='Work in multi-company environments, with appropriate security access between companies.\n'
'-This installs the module multi_company.'),
'module_share': fields.boolean('Allow documents sharing',
help="""Share or embbed any screen of openerp."""),
help="""Share or embbed any screen of Odoo."""),
'module_portal': fields.boolean('Activate the customer portal',
help="""Give your customers access to their documents."""),
'module_auth_oauth': fields.boolean('Use external authentication providers, sign in with google, facebook, ...'),
-1
View File
@@ -58,5 +58,4 @@ only the country code will be validated.
'data': ['base_vat_view.xml'],
'installable': True,
'auto_install': False,
'images': ['images/1_partner_vat.jpeg'],
}
-1
View File
@@ -41,5 +41,4 @@ Allows users to create custom dashboard.
'qweb': ['static/src/xml/*.xml'],
'installable': True,
'auto_install': False,
'images': ['images/1_dashboard_definition.jpeg','images/2_publish_note.jpeg','images/3_admin_dashboard.jpeg',],
}
-1
View File
@@ -55,5 +55,4 @@ If you need to manage your meetings, you should install the CRM module.
'installable': True,
'application': True,
'auto_install': False,
'images': ['images/calendar1.jpeg', 'images/calendar2.jpeg', 'images/calendar3.jpeg', 'images/calendar4.jpeg'],
}
+16 -7
View File
@@ -852,10 +852,11 @@ class calendar_event(osv.Model):
if values.get('start_datetime') or values.get('start_date') or values.get('start') \
or values.get('stop_datetime') or values.get('stop_date') or values.get('stop'):
allday = values.get("allday", None)
event = self.browse(cr, uid, id, context=context)
if allday is None:
if id:
allday = self.read(cr, uid, [id], ['allday'], context=context)[0].get('allday')
allday = event.allday
else:
allday = False
_logger.debug("Calendar - All day is not specified, arbitrarily set to False")
@@ -872,10 +873,16 @@ class calendar_event(osv.Model):
values[fld] = values['%s_%s' % (fld, key)]
diff = False
if allday and values.get('stop_date') and values.get('start_date'):
diff = datetime.strptime(values['stop_date'].split(' ')[0], DEFAULT_SERVER_DATE_FORMAT) - datetime.strptime(values['start_date'].split(' ')[0], DEFAULT_SERVER_DATE_FORMAT)
elif values.get('stop_datetime') and values.get('start_datetime'):
diff = datetime.strptime(values['stop_datetime'].split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT) - datetime.strptime(values['start_datetime'].split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT)
if allday and (values.get('stop_date') or values.get('start_date')):
stop_date = values.get('stop_date') or event.stop_date
start_date = values.get('start_date') or event.start_date
if stop_date and start_date:
diff = datetime.strptime(stop_date.split(' ')[0], DEFAULT_SERVER_DATE_FORMAT) - datetime.strptime(start_date.split(' ')[0], DEFAULT_SERVER_DATE_FORMAT)
elif values.get('stop_datetime') or values.get('start_datetime'):
stop_datetime = values.get('stop_datetime') or event.stop_datetime
start_datetime = values.get('start_datetime') or event.start_datetime
if stop_datetime and start_datetime:
diff = datetime.strptime(stop_datetime.split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT) - datetime.strptime(start_datetime.split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT)
if diff:
duration = float(diff.days) * 24 + (float(diff.seconds) / 3600)
values['duration'] = round(duration, 2)
@@ -965,12 +972,14 @@ class calendar_event(osv.Model):
def _check_closing_date(self, cr, uid, ids, context=None):
for event in self.browse(cr, uid, ids, context=context):
if event.stop < event.start:
if event.start_datetime and event.stop_datetime < event.start_datetime:
return False
if event.start_date and event.stop_date < event.start_date:
return False
return True
_constraints = [
(_check_closing_date, 'Error ! End date cannot be set before start date.', ['start', 'stop'])
(_check_closing_date, 'Error ! End date cannot be set before start date.', ['start_datetime', 'stop_datetime', 'start_date', 'stop_date'])
]
def onchange_allday(self, cr, uid, ids, start=False, end=False, starttime=False, endtime=False, startdatetime=False, enddatetime=False, checkallday=False, context=None):
@@ -35,5 +35,4 @@ Adds a Claim link to the delivery order.
'claim_delivery_data.xml',],
'auto_install': False,
'installable': True,
'images': ['images/1_claim_link_delivery_order.jpeg'],
}
-1
View File
@@ -36,7 +36,6 @@ You can track your suppliers, customers and other contacts.
'data': [
'contacts_view.xml',
],
'images': ['images/contacts.jpeg'],
'installable': True,
'application': True,
'auto_install': True,
-11
View File
@@ -119,15 +119,4 @@ Dashboard for CRM will include:
'installable': True,
'application': True,
'auto_install': False,
'images': [
'images/customers.png',
'images/leads.png',
'images/opportunities_kanban.png',
'images/opportunities_form.png',
'images/opportunities_calendar.png',
'images/opportunities_graph.png',
'images/logged_calls.png',
'images/scheduled_calls.png',
'images/stages.png',
],
}
+13 -4
View File
@@ -113,10 +113,11 @@ class crm_lead2opportunity_partner(osv.osv_memory):
res = False
lead_ids = vals.get('lead_ids', [])
team_id = vals.get('team_id', False)
partner_id = vals.get('partner_id')
data = self.browse(cr, uid, ids, context=context)[0]
leads = lead.browse(cr, uid, lead_ids, context=context)
for lead_id in leads:
partner_id = self._create_partner(cr, uid, lead_id.id, data.action, lead_id.partner_id.id, context=context)
partner_id = self._create_partner(cr, uid, lead_id.id, data.action, partner_id or lead_id.partner_id.id, context=context)
res = lead.convert_opportunity(cr, uid, [lead_id.id], partner_id, [], False, context=context)
user_ids = vals.get('user_ids', False)
if context.get('no_force_assignation'):
@@ -139,18 +140,26 @@ class crm_lead2opportunity_partner(osv.osv_memory):
w = self.browse(cr, uid, ids, context=context)[0]
opp_ids = [o.id for o in w.opportunity_ids]
vals = {
'team_id': w.team_id.id,
}
if w.partner_id:
vals['partner_id'] = w.partner_id.id
if w.name == 'merge':
lead_id = lead_obj.merge_opportunity(cr, uid, opp_ids, context=context)
lead_ids = [lead_id]
lead = lead_obj.read(cr, uid, lead_id, ['type', 'user_id'], context=context)
if lead['type'] == "lead":
context = dict(context, active_ids=lead_ids)
self._convert_opportunity(cr, uid, ids, {'lead_ids': lead_ids, 'user_ids': [w.user_id.id], 'team_id': w.team_id.id}, context=context)
vals.update({'lead_ids': lead_ids, 'user_ids': [w.user_id.id]})
self._convert_opportunity(cr, uid, ids, vals, context=context)
elif not context.get('no_force_assignation') or not lead['user_id']:
lead_obj.write(cr, uid, lead_id, {'user_id': w.user_id.id, 'team_id': w.team_id.id}, context=context)
vals.update({'user_id': w.user_id.id})
lead_obj.write(cr, uid, lead_id, vals, context=context)
else:
lead_ids = context.get('active_ids', [])
self._convert_opportunity(cr, uid, ids, {'lead_ids': lead_ids, 'user_ids': [w.user_id.id], 'team_id': w.team_id.id}, context=context)
vals.update({'lead_ids': lead_ids, 'user_ids': [w.user_id.id]})
self._convert_opportunity(cr, uid, ids, vals, context=context)
return self.pool.get('crm.lead').redirect_opportunity_view(cr, uid, lead_ids[0], context=context)
-5
View File
@@ -51,9 +51,4 @@ automatically new claims based on incoming emails.
],
'installable': True,
'auto_install': False,
'images': [
'images/claim_categories.jpeg',
'images/claim_stages.jpeg',
'images/claims.jpeg'
],
}
-1
View File
@@ -47,5 +47,4 @@ and categorize your interventions with a channel and a priority level.
'test': ['test/process/help-desk.yml'],
'installable': True,
'auto_install': False,
'images': ['images/helpdesk_analysis.jpeg','images/helpdesk_categories.jpeg','images/helpdesk_requests.jpeg'],
}
+1 -1
View File
@@ -105,8 +105,8 @@
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
-1
View File
@@ -54,5 +54,4 @@ to an appropriate local partner, based on the distance and the weight that was a
'test': ['test/partner_assign.yml'],
'installable': True,
'auto_install': False,
'images': ['images/partner_geo_localization.jpeg','images/partner_grade.jpeg'],
}
-1
View File
@@ -37,5 +37,4 @@ The decimal precision is configured per company.
],
'demo': [],
'installable': True,
'images': ['images/1_decimal_accuracy_form.jpeg','images/1_decimal_accuracy_list.jpeg'],
}
+1 -5
View File
@@ -1,6 +1,2 @@
# -*- coding: utf-8 -*-
import test_qweb_float
checks = [
test_qweb_float
]
from . import test_qweb_float
-1
View File
@@ -44,5 +44,4 @@ invoices from picking, OpenERP is able to add and compute the shipping line.
'test': ['test/delivery_cost.yml'],
'installable': True,
'auto_install': False,
'images': ['images/1_delivery_method.jpeg','images/2_delivery_pricelist.jpeg'],
}
+3 -3
View File
@@ -54,7 +54,7 @@ class stock_picking(osv.osv):
_columns = {
'carrier_id':fields.many2one("delivery.carrier","Carrier"),
'volume': fields.float('Volume'),
'volume': fields.float('Volume', copy=False),
'weight': fields.function(_cal_weight, type='float', string='Weight', digits_compute= dp.get_precision('Stock Weight'), multi='_cal_weight',
store={
'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 40),
@@ -65,8 +65,8 @@ class stock_picking(osv.osv):
'stock.picking': (lambda self, cr, uid, ids, c={}: ids, ['move_lines'], 40),
'stock.move': (_get_picking_line, ['picking_id', 'product_id','product_uom_qty','product_uom'], 40),
}),
'carrier_tracking_ref': fields.char('Carrier Tracking Ref'),
'number_of_packages': fields.integer('Number of Packages'),
'carrier_tracking_ref': fields.char('Carrier Tracking Ref', copy=False),
'number_of_packages': fields.integer('Number of Packages', copy=False),
'weight_uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True,readonly="1",help="Unit of measurement for Weight",),
}
-1
View File
@@ -51,5 +51,4 @@ This is a complete document management system.
'test': ['test/document_test2.yml'],
'installable': True,
'auto_install': False,
'images': ['images/1_directories.jpeg','images/2_storage_media.jpeg','images/3_directories_structure.jpeg'],
}
-1
View File
@@ -37,5 +37,4 @@ Key Features
],
'installable': True,
'auto_install': False,
'images': ['images/1_event_type_list.jpeg', 'images/2_events.jpeg', 'images/3_registrations.jpeg', 'images/events_kanban.jpeg'],
}
-1
View File
@@ -64,5 +64,4 @@ For more specific needs, you may also assign custom-defined actions
'demo': [],
'installable': True,
'auto_install': True,
'images': ['images/1_email_servers.jpeg'],
}
+1 -2
View File
@@ -29,7 +29,7 @@
'description' : """
Vehicle, leasing, insurances, cost
==================================
With this module, OpenERP helps you managing all your vehicles, the
With this module, Odoo helps you managing all your vehicles, the
contracts associated to those vehicle as well as services, fuel log
entries, costs and many other features necessary to the management
of your fleet of vehicle(s)
@@ -56,7 +56,6 @@ Main Features
'fleet_data.xml',
'fleet_board_view.xml',
],
'images': ['images/costs_analysis.jpeg','images/indicative_costs_analysis.jpeg','images/vehicles.jpeg','images/vehicles_contracts.jpeg','images/vehicles_fuel.jpeg','images/vehicles_odometer.jpeg','images/vehicles_services.jpeg'],
'demo': ['fleet_demo.xml'],
+1 -1
View File
@@ -285,8 +285,8 @@
</group>
</sheet>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread" options='{"thread_level": 1}'/>
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread" options='{"thread_level": 1}'/>
</div>
</form>
</field>
-4
View File
@@ -20,7 +20,3 @@
##############################################################################
from . import test_challenge
checks = [
test_challenge,
]
-6
View File
@@ -42,12 +42,6 @@ You can manage:
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/employees',
'images': [
'images/hr_department.jpeg',
'images/hr_employee.jpeg',
'images/hr_job_position.jpeg',
'static/src/img/default_image.png',
],
'depends': ['base_setup','mail', 'resource', 'board'],
'data': [
'security/hr_security.xml',
-1
View File
@@ -33,7 +33,6 @@ actions(Sign in/Sign out) performed by them.
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/employees',
'images': ['images/hr_attendances.jpeg'],
'depends': ['hr', 'report'],
'data': [
'security/ir_rule.xml',
-1
View File
@@ -37,7 +37,6 @@ You can assign several contracts per employee.
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/employees',
'images': ['images/hr_contract.jpeg'],
'depends': ['base_action_rule', 'hr'],
'data': [
'security/ir.model.access.csv',
-3
View File
@@ -27,9 +27,6 @@
'sequence': 31,
'website': 'https://www.odoo.com/page/appraisal',
'summary': 'Periodical Evaluations, Appraisals, Surveys',
'images': ['images/hr_evaluation_analysis.jpeg',
'images/hr_evaluation.jpeg',
'images/hr_interview_requests.jpeg'],
'depends': ['hr', 'calendar', 'survey'],
'description': """
Periodical Employees evaluation and appraisals
-1
View File
@@ -45,7 +45,6 @@ This module also uses analytic accounting and is compatible with the invoice on
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/expenses',
'images': ['images/hr_expenses_analysis.jpeg', 'images/hr_expenses.jpeg'],
'depends': ['hr', 'account_accountant', 'report'],
'data': [
'security/ir.model.access.csv',
-1
View File
@@ -44,7 +44,6 @@ You can keep track of leaves in different ways by following reports:
A synchronization with an internal agenda (Meetings of the CRM module) is also possible in order to automatically create a meeting when a holiday request is accepted by setting up a type of meeting in Leave Type.
""",
'images': ['images/hr_allocation_requests.jpeg', 'images/hr_leave_requests.jpeg', 'images/leaves_analysis.jpeg'],
'depends': ['hr', 'calendar', 'resource'],
'data': [
'security/ir.model.access.csv',
+6 -6
View File
@@ -53,14 +53,14 @@ class hr_holidays_status(osv.osv):
# note: add only validated allocation even for the virtual
# count; otherwise pending then refused allocation allow
# the employee to create more leaves than possible
status_dict['virtual_remaining_leaves'] += holiday.number_of_days
status_dict['max_leaves'] += holiday.number_of_days
status_dict['remaining_leaves'] += holiday.number_of_days
status_dict['virtual_remaining_leaves'] += holiday.number_of_days_temp
status_dict['max_leaves'] += holiday.number_of_days_temp
status_dict['remaining_leaves'] += holiday.number_of_days_temp
elif holiday.type == 'remove': # number of days is negative
status_dict['virtual_remaining_leaves'] += holiday.number_of_days
status_dict['virtual_remaining_leaves'] -= holiday.number_of_days_temp
if holiday.state == 'validate':
status_dict['leaves_taken'] -= holiday.number_of_days
status_dict['remaining_leaves'] += holiday.number_of_days
status_dict['leaves_taken'] += holiday.number_of_days_temp
status_dict['remaining_leaves'] -= holiday.number_of_days_temp
return result
def _user_left_days(self, cr, uid, ids, name, args, context=None):
+1 -4
View File
@@ -19,8 +19,5 @@
#
##############################################################################
from openerp.addons.hr_holidays.tests import test_holidays_flow
from . import test_holidays_flow
checks = [
test_holidays_flow,
]
-6
View File
@@ -40,12 +40,6 @@ Generic Payroll system.
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/employees',
'images': [
'images/hr_company_contributions.jpeg',
'images/hr_salary_heads.jpeg',
'images/hr_salary_structure.jpeg',
'images/hr_employee_payslip.jpeg'
],
'depends': [
'hr',
'hr_contract',
-1
View File
@@ -32,7 +32,6 @@ Generic Payroll system Integrated with Accounting.
* Company Contribution Management
""",
'author':'OpenERP SA',
'images': ['images/hr_employee_payslip.jpeg'],
'website': 'https://www.odoo.com/page/employees',
'depends': [
'hr_payroll',
-2
View File
@@ -37,8 +37,6 @@ You can define the different phases of interviews and easily rate the applicant
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/recruitment',
'images': ['images/hr_recruitment_analysis.jpeg',
'images/hr_recruitment_applicants.jpeg'],
'depends': [
'decimal_precision',
'hr',
-1
View File
@@ -40,7 +40,6 @@ up a management by affair.
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/employees',
'images': ['images/hr_timesheet_lines.jpeg'],
'depends': ['account', 'hr', 'base', 'hr_attendance'],
'data': [
'security/ir.model.access.csv',
@@ -34,7 +34,6 @@ You can define price lists in analytic account, make some theoretical revenue
reports.""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/employees',
'images': ['images/hr_bill_task_work.jpeg','images/hr_type_of_invoicing.jpeg'],
'depends': ['account', 'hr_timesheet', 'report'],
'data': [
'security/ir.model.access.csv',
-1
View File
@@ -45,7 +45,6 @@ The validation can be configured in the company:
""",
'author': 'OpenERP SA',
'website': 'https://www.odoo.com/page/employees',
'images': ['images/hr_my_current_timesheet.jpeg','images/hr_timesheet_analysis.jpeg','images/hr_timesheet_sheet_analysis.jpeg','images/hr_timesheet_activity.jpeg'],
'depends': ['hr_timesheet', 'hr_timesheet_invoice'],
'data': [
'security/ir.model.access.csv',
@@ -228,7 +228,7 @@ class hr_timesheet_sheet(osv.osv):
def _sheet_date(self, cr, uid, ids, forced_user_id=False, context=None):
for sheet in self.browse(cr, uid, ids, context=context):
new_user_id = forced_user_id or sheet.user_id and sheet.user_id.id
new_user_id = forced_user_id or sheet.employee_id.user_id and sheet.employee_id.user_id.id
if new_user_id:
cr.execute('SELECT id \
FROM hr_timesheet_sheet_sheet \
@@ -591,16 +591,24 @@ class hr_timesheet_sheet_sheet_day(osv.osv):
) union (
select
-min(a.id) as id,
a.name::date as name,
(a.name AT TIME ZONE 'UTC' AT TIME ZONE coalesce(p.tz, 'UTC'))::date as name,
s.id as sheet_id,
0.0 as total_timesheet,
SUM(((EXTRACT(hour FROM a.name) * 60) + EXTRACT(minute FROM a.name)) * (CASE WHEN a.action = 'sign_in' THEN -1 ELSE 1 END)) as total_attendance
SUM(((EXTRACT(hour FROM (a.name AT TIME ZONE 'UTC' AT TIME ZONE coalesce(p.tz, 'UTC'))) * 60) + EXTRACT(minute FROM (a.name AT TIME ZONE 'UTC' AT TIME ZONE coalesce(p.tz, 'UTC')))) * (CASE WHEN a.action = 'sign_in' THEN -1 ELSE 1 END)) as total_attendance
from
hr_attendance a
LEFT JOIN hr_timesheet_sheet_sheet s
ON s.id = a.sheet_id
JOIN hr_employee e
ON a.employee_id = e.id
JOIN resource_resource r
ON e.resource_id = r.id
LEFT JOIN res_users u
ON r.user_id = u.id
LEFT JOIN res_partner p
ON u.partner_id = p.id
WHERE action in ('sign_in', 'sign_out')
group by a.name::date, s.id
group by (a.name AT TIME ZONE 'UTC' AT TIME ZONE coalesce(p.tz, 'UTC'))::date, s.id
)) AS foo
GROUP BY name, sheet_id
)) AS bar""")
@@ -31,8 +31,8 @@ index_template = """
<p>
The PosBox is an hardware adapter that allows you to use
receipt printers and barcode scanners with Odoo's Point of
Sale, <b>version 8.0 or later</b>. You can start an <a href='https://www.openerp.com/start'>online free trial</a>,
or <a href='https://www.openerp.com/start?download'>download and install</a> it yourself.
Sale, <b>version 8.0 or later</b>. You can start an <a href='https://www.odoo.com/start'>online free trial</a>,
or <a href='https://www.odoo.com/start?download'>download and install</a> it yourself.
</p>
<p>
For more information on how to setup the Point of Sale with
+1 -1
View File
@@ -98,7 +98,7 @@ class Proxy(http.Controller):
<p>
Copy and paste your printer's device description in the form below. You can find
your printer's description in the device list above. If you find that your printer works
well, please send your printer's description to <a href='mailto:support@openerp.com'>
well, please send your printer's description to <a href='mailto:support@odoo.com'>
support@openerp.com</a> so that we can add it to the default list of supported devices.
</p>
<form action='/hw_proxy/escpos/add_supported_device' method='GET'>
-1
View File
@@ -43,5 +43,4 @@ document and Wiki based Hidden.
'demo': ['knowledge_demo.xml'],
'installable': True,
'auto_install': False,
'images': ['images/1_config_knowledge.jpeg'],
}
-1
View File
@@ -41,5 +41,4 @@ Plan contable argentino e impuestos de acuerdo a disposiciones vigentes
'demo': [],
'active': False,
'installable': True,
'images': ['images/config_chart_l10n_ar.jpeg','images/l10n_ar_chart.jpeg'],
}
-1
View File
@@ -83,5 +83,4 @@ Wizards provided by this module:
'demo': [],
'installable': True,
'website': 'https://www.odoo.com/page/accounting',
'images': ['images/1_config_chart_l10n_be.jpeg','images/2_l10n_be_chart.jpeg'],
}
-1
View File
@@ -71,7 +71,6 @@ description provided by the CODA configuration tables is based upon the CODA
V2.2 specifications.
If required, you can manually adjust the descriptions via the CODA configuration menu.
''',
'images': ['images/coda_logs.jpeg', 'images/import_coda_logs.jpeg'],
'depends': ['account_voucher', 'base_iban', 'l10n_be_invoice_bba', 'account_bank_statement_import'],
'demo': ['l10n_be_coda_demo.xml'],
'data': [
@@ -57,6 +57,7 @@ class account_bank_statement_import(osv.TransientModel):
statement['version'] = line[127]
if statement['version'] not in ['1', '2']:
raise UserError(_('Error') + ' R001: ' + _('CODA V%s statements are not supported, please contact your bank') % statement['version'])
statement['globalisation_stack'] = []
statement['lines'] = []
statement['date'] = time.strftime(tools.DEFAULT_SERVER_DATE_FORMAT, time.strptime(rmspaces(line[5:11]), '%d%m%y'))
statement['separateApplication'] = rmspaces(line[83:88])
@@ -116,7 +117,11 @@ class account_bank_statement_import(osv.TransientModel):
statementLine['type'] = 'normal'
statementLine['globalisation'] = int(line[124])
if statementLine['globalisation'] > 0:
statementLine['type'] = 'globalisation'
if statementLine['globalisation'] in statement['globalisation_stack']:
statement['globalisation_stack'].remove(statementLine['globalisation'])
else:
statementLine['type'] = 'globalisation'
statement['globalisation_stack'].append(statementLine['globalisation'])
globalisation_comm[statementLine['ref_move']] = statementLine['communication']
if not statementLine.get('communication'):
statementLine['communication'] = globalisation_comm.get(statementLine['ref_move'], '')
+1 -2
View File
@@ -17,7 +17,7 @@
# 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/>.
#
##############################################################################
##############################################################################
{
"name": "Bolivia Localization Chart Account",
"version": "1.0",
@@ -46,6 +46,5 @@ Plan contable boliviano e impuestos de acuerdo a disposiciones vigentes
"active": False,
"installable": True,
"certificate" : "",
'images': ['images/config_chart_l10n_bo.jpeg','images/l10n_bo_chart.jpeg'],
}
-1
View File
@@ -75,5 +75,4 @@ position.
],
'demo': [],
'installable': True,
'images': ['images/config_chart_l10n_ca.jpeg','images/l10n_ca_chart.jpeg'],
}
-1
View File
@@ -70,5 +70,4 @@ https://github.com/OCA/l10n-switzerland
'test': [],
'auto_install': False,
'installable': True,
'images': ['images/config_chart_l10n_ch.jpeg', 'images/l10n_ch_chart.jpeg']
}
-1
View File
@@ -40,5 +40,4 @@ Plan contable chileno e impuestos de acuerdo a disposiciones vigentes
'demo': [],
'active': False,
'installable': True,
'images': ['images/config_chart_l10n_cl.jpeg','images/l10n_cl_chart.jpeg'],
}
-1
View File
@@ -49,5 +49,4 @@
'license': 'GPL-3',
'auto_install': False,
'installable': True,
'images': ['images/config_chart_l10n_cn.jpeg','images/l10n_cn_chart.jpeg'],
}
-1
View File
@@ -45,5 +45,4 @@
],
'demo': [],
'installable': True,
'images': [],
}
-1
View File
@@ -68,5 +68,4 @@ please go to http://translations.launchpad.net/openerp-costa-rica.
'license': 'Other OSI approved licence',
'installable': True,
'auto_install': False,
'images': ['images/config_chart_l10n_cr.jpeg','images/l10n_cr_chart.jpeg'],
}
-1
View File
@@ -148,5 +148,4 @@ German accounting chart and localization.
'l10n_de_wizard.xml',
],
'installable': True,
'images': ['images/config_chart_l10n_de.jpeg','images/l10n_de_chart.jpeg'],
}
-1
View File
@@ -42,5 +42,4 @@ Accounting chart and localization for Ecuador.
],
'demo': [],
'installable': True,
'images': ['images/config_chart_l10n_ec.jpeg','images/l10n_ec_chart.jpeg'],
}
-1
View File
@@ -73,5 +73,4 @@ configuration of their taxes and fiscal positions manually.
'demo': [],
'auto_install': False,
'installable': True,
'images': ['images/config_chart_l10n_fr.jpeg','images/l10n_fr_chart.jpeg'],
}
-1
View File
@@ -41,5 +41,4 @@ Greek accounting chart and localization.
'l10n_gr_wizard.xml'
],
'installable': True,
'images': ['images/config_chart_l10n_gr.jpeg','images/l10n_gr_chart.jpeg'],
}
-1
View File
@@ -54,5 +54,4 @@ taxes and the Quetzal currency.""",
],
'demo': [],
'installable': True,
'images': ['images/config_chart_l10n_gt.jpeg','images/l10n_gt_chart.jpeg'],
}
-1
View File
@@ -51,5 +51,4 @@ Sheet, now only Vertical format has been permitted Which is Supported By OpenERP
],
'auto_install': False,
'installable': True,
'images': ['images/config_chart_l10n_in.jpeg','images/l10n_in_chart.jpeg'],
}
-1
View File
@@ -52,5 +52,4 @@ Italian accounting chart and localization.
'demo': [],
'installable': True,
'auto_install': False,
'images': ['images/config_chart_l10n_it.jpeg','images/l10n_it_chart.jpeg'],
}
-1
View File
@@ -56,5 +56,4 @@ This is the base module to manage the accounting chart for Luxembourg.
'demo': [],
'installable': True,
'auto_install': False,
'images': ['images/config_chart_l10n_lu.jpeg','images/l10n_lu_chart.jpeg'],
}
-1
View File
@@ -46,5 +46,4 @@ Seddik au cours du troisième trimestre 2010.""",
'demo' : [],
'auto_install': False,
'installable': True,
'images': ['images/config_chart_l10n_ma.jpeg','images/l10n_ma_chart.jpeg'],
}
-1
View File
@@ -130,5 +130,4 @@ De extra cijfers worden dan achter het rekeningnummer aangevult met 'nullen'.
],
'demo' : [],
'installable': True,
'images': ['images/config_chart_l10n_nl.jpeg','images/l10n_nl_chart.jpeg'],
}
-1
View File
@@ -47,5 +47,4 @@ Con la Colaboración de
"active": False,
"installable": True,
"certificate" : "",
'images': ['images/config_chart_l10n_cl.jpeg','images/l10n_cl_chart.jpeg'],
}
-1
View File
@@ -42,5 +42,4 @@ SUNAT 2011 (PCGE 2010).
'demo': [],
'active': False,
'installable': True,
'images': ['images/config_chart_l10n_pe.jpeg','images/l10n_pe_chart.jpeg'],
}
-1
View File
@@ -34,5 +34,4 @@ Thai accounting chart and localization.
'depends': ['account_chart'],
'data': [ 'account_data.xml' ],
'installable': True,
'images': ['images/config_chart_l10n_th.jpeg','images/l10n_th_chart.jpeg'],
}
-1
View File
@@ -48,5 +48,4 @@ Bu modül kurulduktan sonra, Muhasebe yapılandırma sihirbazı çalışır
],
'demo': [],
'installable': True,
'images': ['images/chart_l10n_tr_1.jpg','images/chart_l10n_tr_2.jpg','images/chart_l10n_tr_3.jpg'],
}
-1
View File
@@ -44,5 +44,4 @@ This is the latest UK OpenERP localisation necessary to run OpenERP accounting f
],
'demo' : ['demo/demo.xml'],
'installable': 'True',
'images': ['images/config_chart_l10n_uk.jpeg','images/l10n_uk_chart.jpeg'],
}

Some files were not shown because too many files have changed in this diff Show More