diff --git a/__unported__/account_credit_control/account.py b/__unported__/account_credit_control/account.py
deleted file mode 100644
index 8fe57e27b..000000000
--- a/__unported__/account_credit_control/account.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-from openerp.osv import orm, fields
-
-
-class AccountAccount(orm.Model):
- """Add a link to a credit control policy on account.account"""
-
- _inherit = "account.account"
-
- _columns = {
- 'credit_control_line_ids': fields.one2many(
- 'credit.control.line',
- 'account_id',
- string='Credit Lines',
- readonly=True),
- }
-
- def copy_data(self, cr, uid, id, default=None, context=None):
- if default is None:
- default = {}
- else:
- default = default.copy()
- default['credit_control_line_ids'] = False
- return super(AccountAccount, self).copy_data(
- cr, uid, id, default=default, context=context)
diff --git a/__unported__/account_credit_control/i18n/de.po b/__unported__/account_credit_control/i18n/de.po
deleted file mode 100644
index 6f3eaaf27..000000000
--- a/__unported__/account_credit_control/i18n/de.po
+++ /dev/null
@@ -1,1045 +0,0 @@
-#. module: account_credit_control
-#: field:credit.control.policy.level,custom_text:0
-msgid "Custom Message"
-msgstr "Custom Message"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "More..."
-msgstr "More..."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Group By..."
-msgstr "Group By..."
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.credit_control_run
-#: model:ir.ui.menu,name:account_credit_control.credit_control_run_menu
-msgid "Credit Control Run"
-msgstr "Credit Control Run"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,computation_mode:0
-msgid "Compute Mode"
-msgstr "Compute Mode"
-
-#. module: account_credit_control
-#: field:credit.control.line,date_entry:0
-msgid "Entry date"
-msgstr "Entry date"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard_menu_action
-msgid "Send By Email"
-msgstr "Send By Email"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_line
-msgid "A credit control line"
-msgstr "A credit control line"
-
-#. module: account_credit_control
-#: field:credit.control.line,move_line_id:0
-msgid "Move line"
-msgstr "Move line"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_info
-msgid "Credit Control Info"
-msgstr "Credit Control Info"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_emailer
-msgid "Mass credit line emailer"
-msgstr "Mass credit line emailer"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 field:credit.control.line,account_id:0
-#: model:ir.model,name:account_credit_control.model_account_account
-msgid "Account"
-msgstr "Konto"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Due Date"
-msgstr "Due Date"
-
-#. module: account_credit_control
-#: field:credit.control.communication,current_policy_level:0
-#: view:credit.control.line:0 field:credit.control.line,level:0
-#: field:credit.control.policy.level,level:0
-msgid "Level"
-msgstr "Level"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,delay_days:0
-msgid "Delay (in days)"
-msgstr "Delay (in days)"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_communication
-msgid "credit control communication"
-msgstr "credit control communication"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Send emails for the selected lines"
-msgstr "Send emails for the selected lines"
-
-#. module: account_credit_control
-#: help:credit.control.policy,account_ids:0
-msgid "This policy will be active only for the selected accounts"
-msgstr "This policy will be active only for the selected accounts"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "These lines are ready to send by email or by letter using the Actions."
-msgstr "These lines are ready to send by email or by letter using the Actions."
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0
-msgid "Ignored"
-msgstr "Ignored"
-
-#. module: account_credit_control
-#: help:credit.control.printer,mark_as_sent:0
-msgid "Only letter lines will be marked."
-msgstr "Only letter lines will be marked."
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_marker
-msgid "Mass marker"
-msgstr "Mass marker"
-
-#. module: account_credit_control
-#: field:account.invoice,credit_policy_id:0
-#: field:res.company,credit_policy_id:0 field:res.partner,credit_policy_id:0
-msgid "Credit Control Policy"
-msgstr "Credit Control Policy"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_3
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,date_sent:0
-msgid "Sent date"
-msgstr "Sent date"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 field:credit.control.policy,account_ids:0
-msgid "Accounts"
-msgstr "Accounts"
-
-#. module: account_credit_control
-#: field:credit.control.communication,partner_id:0 view:credit.control.line:0
-#: field:credit.control.line,partner_id:0
-#: model:ir.model,name:account_credit_control.model_res_partner
-msgid "Partner"
-msgstr "Partner"
-
-#. module: account_credit_control
-#: view:credit.control.policy.level:0
-msgid "Credit control policy level"
-msgstr "Credit control policy level"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_3
-msgid ""
-"\n"
-" Our records indicate that we still have not received the payment of "
-"the above mentioned invoice despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"\n"
-" Our records indicate that we still have not received the payment of "
-"the above mentioned invoice despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard_menu_action
-msgid "Change Lines' State"
-msgstr "Change Lines' State"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,policy_id:0
-msgid "Related Policy"
-msgstr "Related Policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Mail and reporting"
-msgstr "Mail and reporting"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_2
-msgid ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice despite our first reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice despite our first reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: model:email.template,body_html:account_credit_control.email_template_credit_control_base
-msgid ""
-"\n"
-" Dear ${object.get_contact_address().name or ''}\n"
-"
\n"
-"
\n"
-" ${object.current_policy_level.custom_mail_text}\n"
-" "
-msgstr ""
-"\n"
-" Dear ${object.get_contact_address().name or ''}\n"
-"
\n"
-"
\n"
-" ${object.current_policy_level.custom_mail_text}\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Print"
-msgstr "Print"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 10 days.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 10 days.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: selection:credit.control.line,channel:0
-#: selection:credit.control.policy.level,channel:0
-msgid "Email"
-msgstr "Email"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 field:credit.control.line,channel:0
-#: field:credit.control.policy.level,channel:0
-msgid "Channel"
-msgstr "Channel"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_2
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice despite our reminder.\n"
-"\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice despite our reminder.\n"
-"\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-msgid "Lines marker"
-msgstr "Lines marker"
-
-
-#. module: account_credit_control
-#: code:addons/account_credit_control/invoice.py:35
-#, python-format
-msgid "You cannot cancel this invoice ! A payment reminder has already been sent to the customer.You must create a credit note and raise a new invoice."
-msgstr "You cannot cancel this invoice ! A payment reminder has already been sent to the customer.You must create a credit note and raise a new invoice."
-
-
-#. module: account_credit_control
-#: field:credit.control.printer,state:0
-msgid "state"
-msgstr "state"
-
-#. module: account_credit_control
-#: field:credit.control.run,report:0
-msgid "Report"
-msgstr "Report"
-
-#. module: account_credit_control
-#: field:credit.control.line,state:0 field:credit.control.run,state:0
-msgid "State"
-msgstr "State"
-
-#. module: account_credit_control
-#: help:credit.control.line,state:0
-msgid ""
-"Draft lines need to be triaged.\n"
-"Ignored lines are lines for which we do not want to send something.\n"
-"Draft and ignored lines will be generated again on the next run."
-msgstr ""
-"Draft lines need to be triaged.\n"
-"Ignored lines are lines for which we do not want to send something.\n"
-"Draft and ignored lines will be generated again on the next run."
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.2_time_1
-#: model:credit.control.policy.level,name:account_credit_control.3_time_2
-msgid "30 days end of month"
-msgstr "30 days end of month"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Due Date, End Of Month"
-msgstr "Due Date, End Of Month"
-
-#. module: account_credit_control
-#: field:credit.control.marker,name:0
-msgid "Mark as"
-msgstr "Mark as"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Credit control run"
-msgstr "Credit control run"
-
-#. module: account_credit_control
-#: view:credit.control.run:0 field:credit.control.run,policy_ids:0
-msgid "Policies"
-msgstr "Policies"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,date_due:0
-msgid "Due date"
-msgstr "Due date"
-
-#. module: account_credit_control
-#: field:credit.control.policy,do_nothing:0
-msgid "Do nothing"
-msgstr "Do nothing"
-
-#. module: account_credit_control
-#: field:credit.control.line,currency_id:0
-msgid "Currency"
-msgstr "Currency"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_printer
-msgid "Mass printer"
-msgstr "Mass printer"
-
-#. module: account_credit_control
-#: field:credit.control.communication,company_id:0
-#: field:credit.control.line,company_id:0
-#: field:credit.control.policy,company_id:0
-msgid "Company"
-msgstr "Company"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "An error has occured during the sending of the email."
-msgstr "An error has occured during the sending of the email."
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_marker_wizard
-msgid "Change the state of the selected lines."
-msgstr "Change the state of the selected lines."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Lines which have been ignored from previous runs."
-msgstr "Lines which have been ignored from previous runs."
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Print the selected lines"
-msgstr "Print the selected lines"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.run,state:0
-msgid "Draft"
-msgstr "Draft"
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-msgid "Warning: you will maybe not be able to revert this operation."
-msgstr "Warning: you will maybe not be able to revert this operation."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Credit policy"
-msgstr "Credit policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Delay Setting"
-msgstr "Delay Setting"
-
-#. module: account_credit_control
-#: field:credit.control.line,balance_due:0
-msgid "Due balance"
-msgstr "Due balance"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Credit policy level"
-msgstr "Credit policy level"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_run
-msgid "Credit control line generator"
-msgstr "Credit control line generator"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Credit control policy"
-msgstr "Credit control policy"
-
-#. module: account_credit_control
-#: field:credit.control.communication,user_id:0
-msgid "User"
-msgstr "User"
-
-#. module: account_credit_control
-#: selection:credit.control.line,channel:0
-#: selection:credit.control.policy.level,channel:0
-msgid "Letter"
-msgstr "Letter"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_account_move_line
-msgid "Journal Items"
-msgstr "Buchungen"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_printer_wizard
-msgid "Print selected lines"
-msgstr "Print selected lines"
-
-#. module: account_credit_control
-#: field:credit.control.emailer,line_ids:0
-#: field:credit.control.marker,line_ids:0
-#: field:credit.control.printer,line_ids:0
-#: model:ir.actions.act_window,name:account_credit_control.credit_control_line_action
-#: model:ir.ui.menu,name:account_credit_control.credit_control_line_action_menu
-#: field:res.partner,credit_control_line_ids:0
-msgid "Credit Control Lines"
-msgstr "Credit Control Lines"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard_menu_action
-msgid "Print Lines"
-msgstr "Print Lines"
-
-#. module: account_credit_control
-#: field:credit.control.run,date:0
-msgid "Controlling Date"
-msgstr "Controlling Date"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_policy
-msgid "Define a reminder policy"
-msgstr "Define a reminder policy"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Lines already sent."
-msgstr "Lines already sent."
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,email_template_id:0
-msgid "Email Template"
-msgstr "Email Template"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0
-msgid "Ready To Send"
-msgstr "Ready To Send"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_res_company
-msgid "Companies"
-msgstr "Unternehmen"
-
-#. module: account_credit_control
-#: field:credit.control.printer,mark_as_sent:0
-msgid "Mark letter lines as sent"
-msgstr "Mark letter lines as sent"
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Compute Credit Control Lines"
-msgstr "Compute Credit Control Lines"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Previous Reminder"
-msgstr "Previous Reminder"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-msgid "Error"
-msgstr "Error"
-
-#. module: account_credit_control
-#: field:credit.control.policy,level_ids:0
-msgid "Policy Levels"
-msgstr "Policy Levels"
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Report and Errors"
-msgstr "Report and Errors"
-
-#. module: account_credit_control
-#: model:email.template,subject:account_credit_control.email_template_credit_control_base
-msgid "Credit Control: (${object.current_policy_level.name or 'n/a'})"
-msgstr "Credit Control: (${object.current_policy_level.name or 'n/a'})"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,custom_mail_text:0
-msgid "Custom Mail Message"
-msgstr "Custom Mail Message"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_2
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our reminder.\n"
-"\n"
-"If payment have already been sent, please disregard this notice. If not, "
-"please proceed with payment.\n"
-"If your payment has not been received in the next 5 days, your file will be "
-"transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our reminder.\n"
-"\n"
-"If payment have already been sent, please disregard this notice. If not, "
-"please proceed with payment.\n"
-"If your payment has not been received in the next 5 days, your file will be "
-"transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: help:credit.control.run,manual_ids:0
-msgid ""
-"If a credit control line has been generatedon a policy and the policy has "
-"been changed in the meantime, it has to be handled manually"
-msgstr ""
-"If a credit control line has been generatedon a policy and the policy has "
-"been changed in the meantime, it has to be handled manually"
-
-#. module: account_credit_control
-#: field:account.account,credit_control_line_ids:0
-#: field:account.invoice,credit_control_line_ids:0
-#: field:credit.control.communication,credit_control_line_ids:0
-#: model:ir.actions.act_window,name:account_credit_control.act_account_credit_relation_relation
-#: model:ir.actions.act_window,name:account_credit_control.act_partner_credit_relation_relation
-msgid "Credit Lines"
-msgstr "Credit Lines"
-
-#. module: account_credit_control
-#: selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0 selection:credit.control.run,state:0
-msgid "Done"
-msgstr "Done"
-
-#. module: account_credit_control
-#: field:account.move.line,invoice_id:0 view:credit.control.line:0
-#: field:credit.control.line,invoice_id:0
-#: model:ir.model,name:account_credit_control.model_account_invoice
-msgid "Invoice"
-msgstr "Rechnung"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0 view:credit.control.marker:0
-#: view:credit.control.printer:0
-msgid "Cancel"
-msgstr "Cancel"
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Close"
-msgstr "Close"
-
-#. module: account_credit_control
-#: selection:credit.control.line,state:0
-msgid "Emailing Error"
-msgstr "Emailing Error"
-
-#. module: account_credit_control
-#: help:account.invoice,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used for this invoice. If nothing is defined, it "
-"will use the account setting or the partner setting."
-msgstr ""
-"The Credit Control Policy used for this invoice. If nothing is defined, it "
-"will use the account setting or the partner setting."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Run date"
-msgstr "Run date"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_user
-msgid "Credit Control User"
-msgstr "Credit Control User"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Policy level"
-msgstr "Policy level"
-
-#. module: account_credit_control
-#: field:credit.control.run,manual_ids:0
-msgid "Lines to handle manually"
-msgstr "Lines to handle manually"
-
-#. module: account_credit_control
-#: help:res.partner,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used for this partner. This setting can be forced "
-"on the invoice. If nothing is defined, it will use the company setting."
-msgstr ""
-"The Credit Control Policy used for this partner. This setting can be forced "
-"on the invoice. If nothing is defined, it will use the company setting."
-
-#. module: account_credit_control
-#: view:account.invoice:0
-#: model:ir.ui.menu,name:account_credit_control.base_credit_control_configuration_menu
-#: model:ir.ui.menu,name:account_credit_control.base_credit_control_menu
-msgid "Credit Control"
-msgstr "Credit Control"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_2
-msgid ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice (copy attached for your convenience) despite our first "
-"reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice (copy attached for your convenience) despite our first "
-"reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,policy_id:0
-msgid "Policy"
-msgstr "Policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Credit control policy Level"
-msgstr "Credit control policy Level"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Mailer"
-msgstr "Mailer"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Move lines To be treated manually"
-msgstr "Move lines To be treated manually"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.credit_policy_configuration_action
-#: model:ir.ui.menu,name:account_credit_control.credit_policy_configuration_action_menu
-msgid "Credit Control Policies"
-msgstr "Credit Control Policies"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_emailer_wizard
-msgid "Send an email for the selected lines."
-msgstr "Send an email for the selected lines."
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.3_time_3
-msgid "10 days last reminder"
-msgstr "10 days last reminder"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Sent"
-msgstr "Sent"
-
-#. module: account_credit_control
-#: constraint:credit.control.policy.level:0
-msgid "The smallest level can not be of type Previous Reminder"
-msgstr "The smallest level can not be of type Previous Reminder"
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Lines report"
-msgstr "Lines report"
-
-#. module: account_credit_control
-#: field:credit.control.printer,report_file:0
-msgid "Generated Report"
-msgstr "Generated Report"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.3_time_1
-msgid "10 days net"
-msgstr "10 days net"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Control Credit Lines"
-msgstr "Control Credit Lines"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_manager
-msgid "Credit Control Manager"
-msgstr "Credit Control Manager"
-
-#. module: account_credit_control
-#: field:credit.control.policy,name:0 field:credit.control.policy.level,name:0
-msgid "Name"
-msgstr "Name"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Send the emails"
-msgstr "Send the emails"
-
-#. module: account_credit_control
-#: field:credit.control.line,mail_message_id:0
-msgid "Sent Email"
-msgstr "Sent Email"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_mail_mail
-msgid "Outgoing Mails"
-msgstr "Postausgang"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_policy_level
-msgid "A credit control policy level"
-msgstr "A credit control policy level"
-
-#. module: account_credit_control
-#: model:ir.actions.report.xml,name:account_credit_control.report_webkit_html
-msgid "Credit Summary"
-msgstr "Credit Summary"
-
-#. module: account_credit_control
-#: field:credit.control.line,date:0
-msgid "Controlling date"
-msgstr "Controlling date"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Draft lines have to be triaged."
-msgstr "Draft lines have to be triaged."
-
-#. module: account_credit_control
-#: field:credit.control.line,amount_due:0
-msgid "Due Amount Tax incl."
-msgstr "Due Amount Tax incl."
-
-#. module: account_credit_control
-#: field:res.company,credit_control_tolerance:0
-msgid "Credit Control Tolerance"
-msgstr "Credit Control Tolerance"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Policy levels"
-msgstr "Policy levels"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.2_time_2
-msgid "60 days last reminder"
-msgstr "60 days last reminder"
-
-#. module: account_credit_control
-#: help:res.company,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used on partners by default. This setting can be "
-"overridden on partners or invoices."
-msgstr ""
-"The Credit Control Policy used on partners by default. This setting can be "
-"overridden on partners or invoices."
-
-#. module: account_credit_control
-#: field:credit.control.line,policy_level_id:0
-msgid "Overdue Level"
-msgstr "Overdue Level"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:167
-msgid "Reminder"
-msgstr "Reminder"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:170
-msgid "Dear"
-msgstr "Dear"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:177
-msgid "Summary"
-msgstr "Summary"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:179
-msgid "Invoice number"
-msgstr "Invoice number"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:180
-msgid "Invoice date"
-msgstr "Invoice date"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:181
-msgid "Date due"
-msgstr "Date due"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:182
-msgid "Invoiced amount"
-msgstr "Invoice amount"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:183
-msgid "Open amount"
-msgstr "Open amount"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:183
-msgid "Currency"
-msgstr "Currency"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:211
-msgid "If you have any question, do not hesitate to contact us."
-msgstr "If you have any question, do not hesitate to contact us."
diff --git a/__unported__/account_credit_control/i18n/en.po b/__unported__/account_credit_control/i18n/en.po
deleted file mode 100644
index 4ab005650..000000000
--- a/__unported__/account_credit_control/i18n/en.po
+++ /dev/null
@@ -1,1045 +0,0 @@
-#. module: account_credit_control
-#: field:credit.control.policy.level,custom_text:0
-msgid "Custom Message"
-msgstr "Custom Message"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "More..."
-msgstr "More..."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Group By..."
-msgstr "Group By..."
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.credit_control_run
-#: model:ir.ui.menu,name:account_credit_control.credit_control_run_menu
-msgid "Credit Control Run"
-msgstr "Credit Control Run"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,computation_mode:0
-msgid "Compute Mode"
-msgstr "Compute Mode"
-
-#. module: account_credit_control
-#: field:credit.control.line,date_entry:0
-msgid "Entry date"
-msgstr "Entry date"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard_menu_action
-msgid "Send By Email"
-msgstr "Send By Email"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_line
-msgid "A credit control line"
-msgstr "A credit control line"
-
-#. module: account_credit_control
-#: field:credit.control.line,move_line_id:0
-msgid "Move line"
-msgstr "Move line"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_info
-msgid "Credit Control Info"
-msgstr "Credit Control Info"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_emailer
-msgid "Mass credit line emailer"
-msgstr "Mass credit line emailer"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 field:credit.control.line,account_id:0
-#: model:ir.model,name:account_credit_control.model_account_account
-msgid "Account"
-msgstr "Account"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Due Date"
-msgstr "Due Date"
-
-#. module: account_credit_control
-#: field:credit.control.communication,current_policy_level:0
-#: view:credit.control.line:0 field:credit.control.line,level:0
-#: field:credit.control.policy.level,level:0
-msgid "Level"
-msgstr "Level"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,delay_days:0
-msgid "Delay (in days)"
-msgstr "Delay (in days)"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_communication
-msgid "credit control communication"
-msgstr "credit control communication"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Send emails for the selected lines"
-msgstr "Send emails for the selected lines"
-
-#. module: account_credit_control
-#: help:credit.control.policy,account_ids:0
-msgid "This policy will be active only for the selected accounts"
-msgstr "This policy will be active only for the selected accounts"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "These lines are ready to send by email or by letter using the Actions."
-msgstr "These lines are ready to send by email or by letter using the Actions."
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0
-msgid "Ignored"
-msgstr "Ignored"
-
-#. module: account_credit_control
-#: help:credit.control.printer,mark_as_sent:0
-msgid "Only letter lines will be marked."
-msgstr "Only letter lines will be marked."
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_marker
-msgid "Mass marker"
-msgstr "Mass marker"
-
-#. module: account_credit_control
-#: field:account.invoice,credit_policy_id:0
-#: field:res.company,credit_policy_id:0 field:res.partner,credit_policy_id:0
-msgid "Credit Control Policy"
-msgstr "Credit Control Policy"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_3
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,date_sent:0
-msgid "Sent date"
-msgstr "Sent date"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 field:credit.control.policy,account_ids:0
-msgid "Accounts"
-msgstr "Accounts"
-
-#. module: account_credit_control
-#: field:credit.control.communication,partner_id:0 view:credit.control.line:0
-#: field:credit.control.line,partner_id:0
-#: model:ir.model,name:account_credit_control.model_res_partner
-msgid "Partner"
-msgstr "Partner"
-
-#. module: account_credit_control
-#: view:credit.control.policy.level:0
-msgid "Credit control policy level"
-msgstr "Credit control policy level"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_3
-msgid ""
-"\n"
-" Our records indicate that we still have not received the payment of "
-"the above mentioned invoice despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"\n"
-" Our records indicate that we still have not received the payment of "
-"the above mentioned invoice despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard_menu_action
-msgid "Change Lines' State"
-msgstr "Change Lines' State"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,policy_id:0
-msgid "Related Policy"
-msgstr "Related Policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Mail and reporting"
-msgstr "Mail and reporting"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_2
-msgid ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice despite our first reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice despite our first reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: model:email.template,body_html:account_credit_control.email_template_credit_control_base
-msgid ""
-"\n"
-" Dear ${object.get_contact_address().name or ''}\n"
-"
\n"
-"
\n"
-" ${object.current_policy_level.custom_mail_text}\n"
-" "
-msgstr ""
-"\n"
-" Dear ${object.get_contact_address().name or ''}\n"
-"
\n"
-"
\n"
-" ${object.current_policy_level.custom_mail_text}\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Print"
-msgstr "Print"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 10 days.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 10 days.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: selection:credit.control.line,channel:0
-#: selection:credit.control.policy.level,channel:0
-msgid "Email"
-msgstr "Email"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 field:credit.control.line,channel:0
-#: field:credit.control.policy.level,channel:0
-msgid "Channel"
-msgstr "Channel"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_2
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice despite our reminder.\n"
-"\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice despite our reminder.\n"
-"\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-msgid "Lines marker"
-msgstr "Lines marker"
-
-
-#. module: account_credit_control
-#: code:addons/account_credit_control/invoice.py:35
-#, python-format
-msgid "You cannot cancel this invoice ! A payment reminder has already been sent to the customer.You must create a credit note and raise a new invoice."
-msgstr "You cannot cancel this invoice ! A payment reminder has already been sent to the customer.You must create a credit note and raise a new invoice."
-
-
-#. module: account_credit_control
-#: field:credit.control.printer,state:0
-msgid "state"
-msgstr "state"
-
-#. module: account_credit_control
-#: field:credit.control.run,report:0
-msgid "Report"
-msgstr "Report"
-
-#. module: account_credit_control
-#: field:credit.control.line,state:0 field:credit.control.run,state:0
-msgid "State"
-msgstr "State"
-
-#. module: account_credit_control
-#: help:credit.control.line,state:0
-msgid ""
-"Draft lines need to be triaged.\n"
-"Ignored lines are lines for which we do not want to send something.\n"
-"Draft and ignored lines will be generated again on the next run."
-msgstr ""
-"Draft lines need to be triaged.\n"
-"Ignored lines are lines for which we do not want to send something.\n"
-"Draft and ignored lines will be generated again on the next run."
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.2_time_1
-#: model:credit.control.policy.level,name:account_credit_control.3_time_2
-msgid "30 days end of month"
-msgstr "30 days end of month"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Due Date, End Of Month"
-msgstr "Due Date, End Of Month"
-
-#. module: account_credit_control
-#: field:credit.control.marker,name:0
-msgid "Mark as"
-msgstr "Mark as"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Credit control run"
-msgstr "Credit control run"
-
-#. module: account_credit_control
-#: view:credit.control.run:0 field:credit.control.run,policy_ids:0
-msgid "Policies"
-msgstr "Policies"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,date_due:0
-msgid "Due date"
-msgstr "Due date"
-
-#. module: account_credit_control
-#: field:credit.control.policy,do_nothing:0
-msgid "Do nothing"
-msgstr "Do nothing"
-
-#. module: account_credit_control
-#: field:credit.control.line,currency_id:0
-msgid "Currency"
-msgstr "Currency"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_printer
-msgid "Mass printer"
-msgstr "Mass printer"
-
-#. module: account_credit_control
-#: field:credit.control.communication,company_id:0
-#: field:credit.control.line,company_id:0
-#: field:credit.control.policy,company_id:0
-msgid "Company"
-msgstr "Company"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "An error has occured during the sending of the email."
-msgstr "An error has occured during the sending of the email."
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_marker_wizard
-msgid "Change the state of the selected lines."
-msgstr "Change the state of the selected lines."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Lines which have been ignored from previous runs."
-msgstr "Lines which have been ignored from previous runs."
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Print the selected lines"
-msgstr "Print the selected lines"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.run,state:0
-msgid "Draft"
-msgstr "Draft"
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-msgid "Warning: you will maybe not be able to revert this operation."
-msgstr "Warning: you will maybe not be able to revert this operation."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Credit policy"
-msgstr "Credit policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Delay Setting"
-msgstr "Delay Setting"
-
-#. module: account_credit_control
-#: field:credit.control.line,balance_due:0
-msgid "Due balance"
-msgstr "Due balance"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Credit policy level"
-msgstr "Credit policy level"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_run
-msgid "Credit control line generator"
-msgstr "Credit control line generator"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Credit control policy"
-msgstr "Credit control policy"
-
-#. module: account_credit_control
-#: field:credit.control.communication,user_id:0
-msgid "User"
-msgstr "User"
-
-#. module: account_credit_control
-#: selection:credit.control.line,channel:0
-#: selection:credit.control.policy.level,channel:0
-msgid "Letter"
-msgstr "Letter"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_account_move_line
-msgid "Journal Items"
-msgstr "Journal Items"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_printer_wizard
-msgid "Print selected lines"
-msgstr "Print selected lines"
-
-#. module: account_credit_control
-#: field:credit.control.emailer,line_ids:0
-#: field:credit.control.marker,line_ids:0
-#: field:credit.control.printer,line_ids:0
-#: model:ir.actions.act_window,name:account_credit_control.credit_control_line_action
-#: model:ir.ui.menu,name:account_credit_control.credit_control_line_action_menu
-#: field:res.partner,credit_control_line_ids:0
-msgid "Credit Control Lines"
-msgstr "Credit Control Lines"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard_menu_action
-msgid "Print Lines"
-msgstr "Print Lines"
-
-#. module: account_credit_control
-#: field:credit.control.run,date:0
-msgid "Controlling Date"
-msgstr "Controlling Date"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_policy
-msgid "Define a reminder policy"
-msgstr "Define a reminder policy"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Lines already sent."
-msgstr "Lines already sent."
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,email_template_id:0
-msgid "Email Template"
-msgstr "Email Template"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0
-msgid "Ready To Send"
-msgstr "Ready To Send"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_res_company
-msgid "Companies"
-msgstr "Companies"
-
-#. module: account_credit_control
-#: field:credit.control.printer,mark_as_sent:0
-msgid "Mark letter lines as sent"
-msgstr "Mark letter lines as sent"
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Compute Credit Control Lines"
-msgstr "Compute Credit Control Lines"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Previous Reminder"
-msgstr "Previous Reminder"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-msgid "Error"
-msgstr "Error"
-
-#. module: account_credit_control
-#: field:credit.control.policy,level_ids:0
-msgid "Policy Levels"
-msgstr "Policy Levels"
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Report and Errors"
-msgstr "Report and Errors"
-
-#. module: account_credit_control
-#: model:email.template,subject:account_credit_control.email_template_credit_control_base
-msgid "Credit Control: (${object.current_policy_level.name or 'n/a'})"
-msgstr "Credit Control: (${object.current_policy_level.name or 'n/a'})"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,custom_mail_text:0
-msgid "Custom Mail Message"
-msgstr "Custom Mail Message"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_2
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our reminder.\n"
-"\n"
-"If payment have already been sent, please disregard this notice. If not, "
-"please proceed with payment.\n"
-"If your payment has not been received in the next 5 days, your file will be "
-"transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our reminder.\n"
-"\n"
-"If payment have already been sent, please disregard this notice. If not, "
-"please proceed with payment.\n"
-"If your payment has not been received in the next 5 days, your file will be "
-"transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: help:credit.control.run,manual_ids:0
-msgid ""
-"If a credit control line has been generatedon a policy and the policy has "
-"been changed in the meantime, it has to be handled manually"
-msgstr ""
-"If a credit control line has been generatedon a policy and the policy has "
-"been changed in the meantime, it has to be handled manually"
-
-#. module: account_credit_control
-#: field:account.account,credit_control_line_ids:0
-#: field:account.invoice,credit_control_line_ids:0
-#: field:credit.control.communication,credit_control_line_ids:0
-#: model:ir.actions.act_window,name:account_credit_control.act_account_credit_relation_relation
-#: model:ir.actions.act_window,name:account_credit_control.act_partner_credit_relation_relation
-msgid "Credit Lines"
-msgstr "Credit Lines"
-
-#. module: account_credit_control
-#: selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0 selection:credit.control.run,state:0
-msgid "Done"
-msgstr "Done"
-
-#. module: account_credit_control
-#: field:account.move.line,invoice_id:0 view:credit.control.line:0
-#: field:credit.control.line,invoice_id:0
-#: model:ir.model,name:account_credit_control.model_account_invoice
-msgid "Invoice"
-msgstr "Invoice"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0 view:credit.control.marker:0
-#: view:credit.control.printer:0
-msgid "Cancel"
-msgstr "Cancel"
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Close"
-msgstr "Close"
-
-#. module: account_credit_control
-#: selection:credit.control.line,state:0
-msgid "Emailing Error"
-msgstr "Emailing Error"
-
-#. module: account_credit_control
-#: help:account.invoice,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used for this invoice. If nothing is defined, it "
-"will use the account setting or the partner setting."
-msgstr ""
-"The Credit Control Policy used for this invoice. If nothing is defined, it "
-"will use the account setting or the partner setting."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Run date"
-msgstr "Run date"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_user
-msgid "Credit Control User"
-msgstr "Credit Control User"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Policy level"
-msgstr "Policy level"
-
-#. module: account_credit_control
-#: field:credit.control.run,manual_ids:0
-msgid "Lines to handle manually"
-msgstr "Lines to handle manually"
-
-#. module: account_credit_control
-#: help:res.partner,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used for this partner. This setting can be forced "
-"on the invoice. If nothing is defined, it will use the company setting."
-msgstr ""
-"The Credit Control Policy used for this partner. This setting can be forced "
-"on the invoice. If nothing is defined, it will use the company setting."
-
-#. module: account_credit_control
-#: view:account.invoice:0
-#: model:ir.ui.menu,name:account_credit_control.base_credit_control_configuration_menu
-#: model:ir.ui.menu,name:account_credit_control.base_credit_control_menu
-msgid "Credit Control"
-msgstr "Credit Control"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_2
-msgid ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice (copy attached for your convenience) despite our first "
-"reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice (copy attached for your convenience) despite our first "
-"reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,policy_id:0
-msgid "Policy"
-msgstr "Policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Credit control policy Level"
-msgstr "Credit control policy Level"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Mailer"
-msgstr "Mailer"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Move lines To be treated manually"
-msgstr "Move lines To be treated manually"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.credit_policy_configuration_action
-#: model:ir.ui.menu,name:account_credit_control.credit_policy_configuration_action_menu
-msgid "Credit Control Policies"
-msgstr "Credit Control Policies"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_emailer_wizard
-msgid "Send an email for the selected lines."
-msgstr "Send an email for the selected lines."
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.3_time_3
-msgid "10 days last reminder"
-msgstr "10 days last reminder"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Sent"
-msgstr "Sent"
-
-#. module: account_credit_control
-#: constraint:credit.control.policy.level:0
-msgid "The smallest level can not be of type Previous Reminder"
-msgstr "The smallest level can not be of type Previous Reminder"
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Lines report"
-msgstr "Lines report"
-
-#. module: account_credit_control
-#: field:credit.control.printer,report_file:0
-msgid "Generated Report"
-msgstr "Generated Report"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.3_time_1
-msgid "10 days net"
-msgstr "10 days net"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Control Credit Lines"
-msgstr "Control Credit Lines"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_manager
-msgid "Credit Control Manager"
-msgstr "Credit Control Manager"
-
-#. module: account_credit_control
-#: field:credit.control.policy,name:0 field:credit.control.policy.level,name:0
-msgid "Name"
-msgstr "Name"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Send the emails"
-msgstr "Send the emails"
-
-#. module: account_credit_control
-#: field:credit.control.line,mail_message_id:0
-msgid "Sent Email"
-msgstr "Sent Email"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_mail_mail
-msgid "Outgoing Mails"
-msgstr "Outgoing Mails"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_policy_level
-msgid "A credit control policy level"
-msgstr "A credit control policy level"
-
-#. module: account_credit_control
-#: model:ir.actions.report.xml,name:account_credit_control.report_webkit_html
-msgid "Credit Summary"
-msgstr "Credit Summary"
-
-#. module: account_credit_control
-#: field:credit.control.line,date:0
-msgid "Controlling date"
-msgstr "Controlling date"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Draft lines have to be triaged."
-msgstr "Draft lines have to be triaged."
-
-#. module: account_credit_control
-#: field:credit.control.line,amount_due:0
-msgid "Due Amount Tax incl."
-msgstr "Due Amount Tax incl."
-
-#. module: account_credit_control
-#: field:res.company,credit_control_tolerance:0
-msgid "Credit Control Tolerance"
-msgstr "Credit Control Tolerance"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Policy levels"
-msgstr "Policy levels"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.2_time_2
-msgid "60 days last reminder"
-msgstr "60 days last reminder"
-
-#. module: account_credit_control
-#: help:res.company,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used on partners by default. This setting can be "
-"overridden on partners or invoices."
-msgstr ""
-"The Credit Control Policy used on partners by default. This setting can be "
-"overridden on partners or invoices."
-
-#. module: account_credit_control
-#: field:credit.control.line,policy_level_id:0
-msgid "Overdue Level"
-msgstr "Overdue Level"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:167
-msgid "Reminder"
-msgstr "Reminder"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:170
-msgid "Dear"
-msgstr "Dear"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:177
-msgid "Summary"
-msgstr "Summary"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:179
-msgid "Invoice number"
-msgstr "Invoice number"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:180
-msgid "Invoice date"
-msgstr "Invoice date"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:181
-msgid "Date due"
-msgstr "Date due"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:182
-msgid "Invoiced amount"
-msgstr "Invoice amount"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:183
-msgid "Open amount"
-msgstr "Open amount"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:183
-msgid "Currency"
-msgstr "Currency"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:211
-msgid "If you have any question, do not hesitate to contact us."
-msgstr "If you have any question, do not hesitate to contact us."
diff --git a/__unported__/account_credit_control/i18n/es.po b/__unported__/account_credit_control/i18n/es.po
deleted file mode 100644
index 76d47c904..000000000
--- a/__unported__/account_credit_control/i18n/es.po
+++ /dev/null
@@ -1,1043 +0,0 @@
-#. module: account_credit_control
-#: field:credit.control.policy.level,custom_text:0
-msgid "Custom Message"
-msgstr "Custom Message"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "More..."
-msgstr "More..."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Group By..."
-msgstr "Group By..."
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.credit_control_run
-#: model:ir.ui.menu,name:account_credit_control.credit_control_run_menu
-msgid "Credit Control Run"
-msgstr "Credit Control Run"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,computation_mode:0
-msgid "Compute Mode"
-msgstr "Compute Mode"
-
-#. module: account_credit_control
-#: field:credit.control.line,date_entry:0
-msgid "Entry date"
-msgstr "Entry date"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard_menu_action
-msgid "Send By Email"
-msgstr "Send By Email"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_line
-msgid "A credit control line"
-msgstr "A credit control line"
-
-#. module: account_credit_control
-#: field:credit.control.line,move_line_id:0
-msgid "Move line"
-msgstr "Move line"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_info
-msgid "Credit Control Info"
-msgstr "Credit Control Info"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_emailer
-msgid "Mass credit line emailer"
-msgstr "Mass credit line emailer"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 field:credit.control.line,account_id:0
-#: model:ir.model,name:account_credit_control.model_account_account
-msgid "Account"
-msgstr "Account"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Due Date"
-msgstr "Due Date"
-
-#. module: account_credit_control
-#: field:credit.control.communication,current_policy_level:0
-#: view:credit.control.line:0 field:credit.control.line,level:0
-#: field:credit.control.policy.level,level:0
-msgid "Level"
-msgstr "Level"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,delay_days:0
-msgid "Delay (in days)"
-msgstr "Delay (in days)"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_communication
-msgid "credit control communication"
-msgstr "credit control communication"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Send emails for the selected lines"
-msgstr "Send emails for the selected lines"
-
-#. module: account_credit_control
-#: help:credit.control.policy,account_ids:0
-msgid "This policy will be active only for the selected accounts"
-msgstr "This policy will be active only for the selected accounts"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "These lines are ready to send by email or by letter using the Actions."
-msgstr "These lines are ready to send by email or by letter using the Actions."
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0
-msgid "Ignored"
-msgstr "Ignored"
-
-#. module: account_credit_control
-#: help:credit.control.printer,mark_as_sent:0
-msgid "Only letter lines will be marked."
-msgstr "Only letter lines will be marked."
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_marker
-msgid "Mass marker"
-msgstr "Mass marker"
-
-#. module: account_credit_control
-#: field:account.invoice,credit_policy_id:0
-#: field:res.company,credit_policy_id:0 field:res.partner,credit_policy_id:0
-msgid "Credit Control Policy"
-msgstr "Credit Control Policy"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_3
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,date_sent:0
-msgid "Sent date"
-msgstr "Sent date"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 field:credit.control.policy,account_ids:0
-msgid "Accounts"
-msgstr "Accounts"
-
-#. module: account_credit_control
-#: field:credit.control.communication,partner_id:0 view:credit.control.line:0
-#: field:credit.control.line,partner_id:0
-#: model:ir.model,name:account_credit_control.model_res_partner
-msgid "Partner"
-msgstr "Partner"
-
-#. module: account_credit_control
-#: view:credit.control.policy.level:0
-msgid "Credit control policy level"
-msgstr "Credit control policy level"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_3
-msgid ""
-"\n"
-" Our records indicate that we still have not received the payment of "
-"the above mentioned invoice despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"\n"
-" Our records indicate that we still have not received the payment of "
-"the above mentioned invoice despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard_menu_action
-msgid "Change Lines' State"
-msgstr "Change Lines' State"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,policy_id:0
-msgid "Related Policy"
-msgstr "Related Policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Mail and reporting"
-msgstr "Mail and reporting"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_2
-msgid ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice despite our first reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice despite our first reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: model:email.template,body_html:account_credit_control.email_template_credit_control_base
-msgid ""
-"\n"
-" Dear ${object.get_contact_address().name or ''}\n"
-"
\n"
-"
\n"
-" ${object.current_policy_level.custom_mail_text}\n"
-" "
-msgstr ""
-"\n"
-" Dear ${object.get_contact_address().name or ''}\n"
-"
\n"
-"
\n"
-" ${object.current_policy_level.custom_mail_text}\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Print"
-msgstr "Print"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 10 days.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 10 days.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: selection:credit.control.line,channel:0
-#: selection:credit.control.policy.level,channel:0
-msgid "Email"
-msgstr "Email"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 field:credit.control.line,channel:0
-#: field:credit.control.policy.level,channel:0
-msgid "Channel"
-msgstr "Channel"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_2
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice despite our reminder.\n"
-"\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice despite our reminder.\n"
-"\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-msgid "Lines marker"
-msgstr "Lines marker"
-
-#. module: account_credit_control
-#: field:credit.control.printer,state:0
-msgid "state"
-msgstr "state"
-
-#. module: account_credit_control
-#: code:addons/account_credit_control/invoice.py:35
-#, python-format
-msgid "You cannot cancel this invoice ! A payment reminder has already been sent to the customer.You must create a credit note and raise a new invoice."
-msgstr "You cannot cancel this invoice ! A payment reminder has already been sent to the customer.You must create a credit note and raise a new invoice."
-
-#. module: account_credit_control
-#: field:credit.control.run,report:0
-msgid "Report"
-msgstr "Report"
-
-#. module: account_credit_control
-#: field:credit.control.line,state:0 field:credit.control.run,state:0
-msgid "State"
-msgstr "State"
-
-#. module: account_credit_control
-#: help:credit.control.line,state:0
-msgid ""
-"Draft lines need to be triaged.\n"
-"Ignored lines are lines for which we do not want to send something.\n"
-"Draft and ignored lines will be generated again on the next run."
-msgstr ""
-"Draft lines need to be triaged.\n"
-"Ignored lines are lines for which we do not want to send something.\n"
-"Draft and ignored lines will be generated again on the next run."
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.2_time_1
-#: model:credit.control.policy.level,name:account_credit_control.3_time_2
-msgid "30 days end of month"
-msgstr "30 days end of month"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Due Date, End Of Month"
-msgstr "Due Date, End Of Month"
-
-#. module: account_credit_control
-#: field:credit.control.marker,name:0
-msgid "Mark as"
-msgstr "Mark as"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Credit control run"
-msgstr "Credit control run"
-
-#. module: account_credit_control
-#: view:credit.control.run:0 field:credit.control.run,policy_ids:0
-msgid "Policies"
-msgstr "Policies"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,date_due:0
-msgid "Due date"
-msgstr "Due date"
-
-#. module: account_credit_control
-#: field:credit.control.policy,do_nothing:0
-msgid "Do nothing"
-msgstr "Do nothing"
-
-#. module: account_credit_control
-#: field:credit.control.line,currency_id:0
-msgid "Currency"
-msgstr "Currency"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_printer
-msgid "Mass printer"
-msgstr "Mass printer"
-
-#. module: account_credit_control
-#: field:credit.control.communication,company_id:0
-#: field:credit.control.line,company_id:0
-#: field:credit.control.policy,company_id:0
-msgid "Company"
-msgstr "Company"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "An error has occured during the sending of the email."
-msgstr "An error has occured during the sending of the email."
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_marker_wizard
-msgid "Change the state of the selected lines."
-msgstr "Change the state of the selected lines."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Lines which have been ignored from previous runs."
-msgstr "Lines which have been ignored from previous runs."
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Print the selected lines"
-msgstr "Print the selected lines"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.run,state:0
-msgid "Draft"
-msgstr "Draft"
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-msgid "Warning: you will maybe not be able to revert this operation."
-msgstr "Warning: you will maybe not be able to revert this operation."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Credit policy"
-msgstr "Credit policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Delay Setting"
-msgstr "Delay Setting"
-
-#. module: account_credit_control
-#: field:credit.control.line,balance_due:0
-msgid "Due balance"
-msgstr "Due balance"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Credit policy level"
-msgstr "Credit policy level"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_run
-msgid "Credit control line generator"
-msgstr "Credit control line generator"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Credit control policy"
-msgstr "Credit control policy"
-
-#. module: account_credit_control
-#: field:credit.control.communication,user_id:0
-msgid "User"
-msgstr "User"
-
-#. module: account_credit_control
-#: selection:credit.control.line,channel:0
-#: selection:credit.control.policy.level,channel:0
-msgid "Letter"
-msgstr "Letter"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_account_move_line
-msgid "Journal Items"
-msgstr "Journal Items"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_printer_wizard
-msgid "Print selected lines"
-msgstr "Print selected lines"
-
-#. module: account_credit_control
-#: field:credit.control.emailer,line_ids:0
-#: field:credit.control.marker,line_ids:0
-#: field:credit.control.printer,line_ids:0
-#: model:ir.actions.act_window,name:account_credit_control.credit_control_line_action
-#: model:ir.ui.menu,name:account_credit_control.credit_control_line_action_menu
-#: field:res.partner,credit_control_line_ids:0
-msgid "Credit Control Lines"
-msgstr "Credit Control Lines"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard_menu_action
-msgid "Print Lines"
-msgstr "Print Lines"
-
-#. module: account_credit_control
-#: field:credit.control.run,date:0
-msgid "Controlling Date"
-msgstr "Controlling Date"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_policy
-msgid "Define a reminder policy"
-msgstr "Define a reminder policy"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Lines already sent."
-msgstr "Lines already sent."
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,email_template_id:0
-msgid "Email Template"
-msgstr "Email Template"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0
-msgid "Ready To Send"
-msgstr "Ready To Send"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_res_company
-msgid "Companies"
-msgstr "Companies"
-
-#. module: account_credit_control
-#: field:credit.control.printer,mark_as_sent:0
-msgid "Mark letter lines as sent"
-msgstr "Mark letter lines as sent"
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Compute Credit Control Lines"
-msgstr "Compute Credit Control Lines"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Previous Reminder"
-msgstr "Previous Reminder"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-msgid "Error"
-msgstr "Error"
-
-#. module: account_credit_control
-#: field:credit.control.policy,level_ids:0
-msgid "Policy Levels"
-msgstr "Policy Levels"
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Report and Errors"
-msgstr "Report and Errors"
-
-#. module: account_credit_control
-#: model:email.template,subject:account_credit_control.email_template_credit_control_base
-msgid "Credit Control: (${object.current_policy_level.name or 'n/a'})"
-msgstr "Credit Control: (${object.current_policy_level.name or 'n/a'})"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,custom_mail_text:0
-msgid "Custom Mail Message"
-msgstr "Custom Mail Message"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_2
-msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our reminder.\n"
-"\n"
-"If payment have already been sent, please disregard this notice. If not, "
-"please proceed with payment.\n"
-"If your payment has not been received in the next 5 days, your file will be "
-"transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our reminder.\n"
-"\n"
-"If payment have already been sent, please disregard this notice. If not, "
-"please proceed with payment.\n"
-"If your payment has not been received in the next 5 days, your file will be "
-"transfered to our debt\n"
-" collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
-
-#. module: account_credit_control
-#: help:credit.control.run,manual_ids:0
-msgid ""
-"If a credit control line has been generatedon a policy and the policy has "
-"been changed in the meantime, it has to be handled manually"
-msgstr ""
-"If a credit control line has been generatedon a policy and the policy has "
-"been changed in the meantime, it has to be handled manually"
-
-#. module: account_credit_control
-#: field:account.account,credit_control_line_ids:0
-#: field:account.invoice,credit_control_line_ids:0
-#: field:credit.control.communication,credit_control_line_ids:0
-#: model:ir.actions.act_window,name:account_credit_control.act_account_credit_relation_relation
-#: model:ir.actions.act_window,name:account_credit_control.act_partner_credit_relation_relation
-msgid "Credit Lines"
-msgstr "Credit Lines"
-
-#. module: account_credit_control
-#: selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0 selection:credit.control.run,state:0
-msgid "Done"
-msgstr "Done"
-
-#. module: account_credit_control
-#: field:account.move.line,invoice_id:0 view:credit.control.line:0
-#: field:credit.control.line,invoice_id:0
-#: model:ir.model,name:account_credit_control.model_account_invoice
-msgid "Invoice"
-msgstr "Invoice"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0 view:credit.control.marker:0
-#: view:credit.control.printer:0
-msgid "Cancel"
-msgstr "Cancel"
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Close"
-msgstr "Close"
-
-#. module: account_credit_control
-#: selection:credit.control.line,state:0
-msgid "Emailing Error"
-msgstr "Emailing Error"
-
-#. module: account_credit_control
-#: help:account.invoice,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used for this invoice. If nothing is defined, it "
-"will use the account setting or the partner setting."
-msgstr ""
-"The Credit Control Policy used for this invoice. If nothing is defined, it "
-"will use the account setting or the partner setting."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Run date"
-msgstr "Run date"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_user
-msgid "Credit Control User"
-msgstr "Credit Control User"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Policy level"
-msgstr "Policy level"
-
-#. module: account_credit_control
-#: field:credit.control.run,manual_ids:0
-msgid "Lines to handle manually"
-msgstr "Lines to handle manually"
-
-#. module: account_credit_control
-#: help:res.partner,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used for this partner. This setting can be forced "
-"on the invoice. If nothing is defined, it will use the company setting."
-msgstr ""
-"The Credit Control Policy used for this partner. This setting can be forced "
-"on the invoice. If nothing is defined, it will use the company setting."
-
-#. module: account_credit_control
-#: view:account.invoice:0
-#: model:ir.ui.menu,name:account_credit_control.base_credit_control_configuration_menu
-#: model:ir.ui.menu,name:account_credit_control.base_credit_control_menu
-msgid "Credit Control"
-msgstr "Credit Control"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_2
-msgid ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice (copy attached for your convenience) despite our first "
-"reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice (copy attached for your convenience) despite our first "
-"reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,policy_id:0
-msgid "Policy"
-msgstr "Policy"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Credit control policy Level"
-msgstr "Credit control policy Level"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Mailer"
-msgstr "Mailer"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Move lines To be treated manually"
-msgstr "Move lines To be treated manually"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.credit_policy_configuration_action
-#: model:ir.ui.menu,name:account_credit_control.credit_policy_configuration_action_menu
-msgid "Credit Control Policies"
-msgstr "Credit Control Policies"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_emailer_wizard
-msgid "Send an email for the selected lines."
-msgstr "Send an email for the selected lines."
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.3_time_3
-msgid "10 days last reminder"
-msgstr "10 days last reminder"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Sent"
-msgstr "Sent"
-
-#. module: account_credit_control
-#: constraint:credit.control.policy.level:0
-msgid "The smallest level can not be of type Previous Reminder"
-msgstr "The smallest level can not be of type Previous Reminder"
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Lines report"
-msgstr "Lines report"
-
-#. module: account_credit_control
-#: field:credit.control.printer,report_file:0
-msgid "Generated Report"
-msgstr "Generated Report"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.3_time_1
-msgid "10 days net"
-msgstr "10 days net"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Control Credit Lines"
-msgstr "Control Credit Lines"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_manager
-msgid "Credit Control Manager"
-msgstr "Credit Control Manager"
-
-#. module: account_credit_control
-#: field:credit.control.policy,name:0 field:credit.control.policy.level,name:0
-msgid "Name"
-msgstr "Name"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Send the emails"
-msgstr "Send the emails"
-
-#. module: account_credit_control
-#: field:credit.control.line,mail_message_id:0
-msgid "Sent Email"
-msgstr "Sent Email"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_mail_mail
-msgid "Outgoing Mails"
-msgstr "Outgoing Mails"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_policy_level
-msgid "A credit control policy level"
-msgstr "A credit control policy level"
-
-#. module: account_credit_control
-#: model:ir.actions.report.xml,name:account_credit_control.report_webkit_html
-msgid "Credit Summary"
-msgstr "Credit Summary"
-
-#. module: account_credit_control
-#: field:credit.control.line,date:0
-msgid "Controlling date"
-msgstr "Controlling date"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Draft lines have to be triaged."
-msgstr "Draft lines have to be triaged."
-
-#. module: account_credit_control
-#: field:credit.control.line,amount_due:0
-msgid "Due Amount Tax incl."
-msgstr "Due Amount Tax incl."
-
-#. module: account_credit_control
-#: field:res.company,credit_control_tolerance:0
-msgid "Credit Control Tolerance"
-msgstr "Credit Control Tolerance"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Policy levels"
-msgstr "Policy levels"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.2_time_2
-msgid "60 days last reminder"
-msgstr "60 days last reminder"
-
-#. module: account_credit_control
-#: help:res.company,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used on partners by default. This setting can be "
-"overridden on partners or invoices."
-msgstr ""
-"The Credit Control Policy used on partners by default. This setting can be "
-"overridden on partners or invoices."
-
-#. module: account_credit_control
-#: field:credit.control.line,policy_level_id:0
-msgid "Overdue Level"
-msgstr "Overdue Level"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:167
-msgid "Reminder"
-msgstr "Reminder"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:170
-msgid "Dear"
-msgstr "Dear"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:177
-msgid "Summary"
-msgstr "Summary"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:179
-msgid "Invoice number"
-msgstr "Invoice number"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:180
-msgid "Invoice date"
-msgstr "Invoice date"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:181
-msgid "Date due"
-msgstr "Date due"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:182
-msgid "Invoiced amount"
-msgstr "Invoice amount"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:183
-msgid "Open amount"
-msgstr "Open amount"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:183
-msgid "Currency"
-msgstr "Currency"
-
-#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:211
-msgid "If you have any question, do not hesitate to contact us."
-msgstr "If you have any question, do not hesitate to contact us."
diff --git a/__unported__/account_credit_control/invoice.py b/__unported__/account_credit_control/invoice.py
deleted file mode 100644
index 805ae560c..000000000
--- a/__unported__/account_credit_control/invoice.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Vincent Renaville
-# Copyright 2013 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-from openerp.osv import orm, fields
-from openerp.tools.translate import _
-
-
-class AccountInvoice(orm.Model):
- """Check on cancelling of an invoice"""
- _inherit = 'account.invoice'
-
- _columns = {
- 'credit_policy_id': fields.many2one(
- 'credit.control.policy',
- 'Credit Control Policy',
- help=("The Credit Control Policy used for this "
- "invoice. If nothing is defined, it will "
- "use the account setting or the partner "
- "setting."),
- readonly=True,
- ),
- 'credit_control_line_ids': fields.one2many(
- 'credit.control.line',
- 'invoice_id',
- string='Credit Lines',
- readonly=True
- ),
- }
-
- def copy_data(self, cr, uid, id, default=None, context=None):
- """Ensure that credit lines and policy are not copied"""
- if default is None:
- default = {}
- else:
- default = default.copy()
- default['credit_control_line_ids'] = False
- default['credit_policy_id'] = False
- return super(AccountInvoice, self).copy_data(
- cr, uid, id, default=default, context=context)
-
- def action_cancel(self, cr, uid, ids, context=None):
- """Prevent to cancel invoice related to credit line"""
- # We will search if this invoice is linked with credit
- cc_line_obj = self.pool.get('credit.control.line')
- for invoice_id in ids:
- cc_nondraft_line_ids = cc_line_obj.search(
- cr, uid,
- [('invoice_id', '=', invoice_id),
- ('state', '!=', 'draft')],
- context=context)
- if cc_nondraft_line_ids:
- raise orm.except_orm(
- _('Error!'),
- _('You cannot cancel this invoice.\n'
- 'A payment reminder has already been '
- 'sent to the customer.\n'
- 'You must create a credit note and '
- 'issue a new invoice.')
- )
- cc_draft_line_ids = cc_line_obj.search(
- cr, uid,
- [('invoice_id', '=', invoice_id),
- ('state', '=', 'draft')],
- context=context)
- cc_line_obj.unlink(cr, uid,
- cc_draft_line_ids,
- context=context)
- return super(AccountInvoice, self).action_cancel(cr, uid, ids,
- context=context)
diff --git a/__unported__/account_credit_control/line.py b/__unported__/account_credit_control/line.py
deleted file mode 100644
index 964878fa4..000000000
--- a/__unported__/account_credit_control/line.py
+++ /dev/null
@@ -1,292 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-import logging
-
-from openerp.osv import orm, fields
-from openerp.tools.translate import _
-
-logger = logging.getLogger('credit.line.control')
-
-
-class CreditControlLine(orm.Model):
- """A credit control line describes an amount due by a customer for a due date.
-
- A line is created once the due date of the payment is exceeded.
- It is created in "draft" and some actions are available (send by email,
- print, ...)
- """
-
- _name = "credit.control.line"
- _description = "A credit control line"
- _rec_name = "id"
- _order = "date DESC"
- _columns = {
- 'date': fields.date(
- 'Controlling date',
- required=True,
- select=True
- ),
- # maturity date of related move line we do not use
- # a related field in order to
- # allow manual changes
- 'date_due': fields.date(
- 'Due date',
- required=True,
- readonly=True,
- states={'draft': [('readonly', False)]}
- ),
-
- 'date_entry': fields.related(
- 'move_line_id', 'date',
- type='date',
- string='Entry date',
- store=True, readonly=True
- ),
-
- 'date_sent': fields.date(
- 'Sent date',
- readonly=True,
- states={'draft': [('readonly', False)]}
- ),
-
- 'state': fields.selection(
- [('draft', 'Draft'),
- ('ignored', 'Ignored'),
- ('to_be_sent', 'Ready To Send'),
- ('sent', 'Done'),
- ('error', 'Error'),
- ('email_error', 'Emailing Error')],
- 'State', required=True, readonly=True,
- help=("Draft lines need to be triaged.\n"
- "Ignored lines are lines for which we do "
- "not want to send something.\n"
- "Draft and ignored lines will be "
- "generated again on the next run.")
- ),
-
- 'channel': fields.selection(
- [('letter', 'Letter'),
- ('email', 'Email')],
- 'Channel', required=True,
- readonly=True,
- states={'draft': [('readonly', False)]}
- ),
-
- 'invoice_id': fields.many2one(
- 'account.invoice',
- 'Invoice',
- readonly=True
- ),
-
- 'partner_id': fields.many2one(
- 'res.partner',
- "Partner",
- required=True
- ),
-
- 'amount_due': fields.float(
- 'Due Amount Tax incl.',
- required=True,
- readonly=True
- ),
-
- 'balance_due': fields.float(
- 'Due balance', required=True,
- readonly=True
- ),
-
- 'mail_message_id': fields.many2one(
- 'mail.mail',
- 'Sent Email',
- readonly=True
- ),
-
- 'move_line_id': fields.many2one(
- 'account.move.line',
- 'Move line',
- required=True,
- readonly=True
- ),
-
- 'account_id': fields.related(
- 'move_line_id',
- 'account_id',
- type='many2one',
- relation='account.account',
- string='Account',
- store=True,
- readonly=True
- ),
-
- 'currency_id': fields.related(
- 'move_line_id',
- 'currency_id',
- type='many2one',
- relation='res.currency',
- string='Currency',
- store=True,
- readonly=True
- ),
-
- 'company_id': fields.related(
- 'move_line_id', 'company_id',
- type='many2one',
- relation='res.company',
- string='Company',
- store=True, readonly=True
- ),
-
- # we can allow a manual change of policy in draft state
- 'policy_level_id': fields.many2one(
- 'credit.control.policy.level',
- 'Overdue Level',
- required=True,
- readonly=True,
- states={'draft': [('readonly', False)]}
- ),
-
- 'policy_id': fields.related(
- 'policy_level_id',
- 'policy_id',
- type='many2one',
- relation='credit.control.policy',
- string='Policy',
- store=True,
- readonly=True
- ),
-
- 'level': fields.related(
- 'policy_level_id',
- 'level',
- type='integer',
- relation='credit.control.policy',
- string='Level',
- store=True,
- readonly=True
- ),
-
- 'manually_overridden': fields.boolean('Manually overridden')
- }
-
- _defaults = {'state': 'draft'}
-
- def _prepare_from_move_line(self, cr, uid, move_line,
- level, controlling_date, open_amount,
- context=None):
- """Create credit control line"""
- data = {}
- data['date'] = controlling_date
- data['date_due'] = move_line.date_maturity
- data['state'] = 'draft'
- data['channel'] = level.channel
- data['invoice_id'] = (move_line.invoice.id if
- move_line.invoice else False)
- data['partner_id'] = move_line.partner_id.id
- data['amount_due'] = (move_line.amount_currency or move_line.debit or
- move_line.credit)
- data['balance_due'] = open_amount
- data['policy_level_id'] = level.id
- data['company_id'] = move_line.company_id.id
- data['move_line_id'] = move_line.id
- return data
-
- def create_or_update_from_mv_lines(self, cr, uid, ids, lines,
- level_id, controlling_date,
- check_tolerance=True, context=None):
- """Create or update line based on levels
-
- if check_tolerance is true credit line will not be
- created if open amount is too small.
- eg. we do not want to send a letter for 10 cents
- of open amount.
-
- :param lines: move.line id list
- :param level_id: credit.control.policy.level id
- :param controlling_date: date string of the credit controlling date.
- Generally it should be the same
- as create date
- :param check_tolerance: boolean if True credit line
- will not be generated if open amount
- is smaller than company defined
- tolerance
-
- :returns: list of created credit line ids
- """
- currency_obj = self.pool.get('res.currency')
- level_obj = self.pool.get('credit.control.policy.level')
- ml_obj = self.pool.get('account.move.line')
- user = self.pool.get('res.users').browse(cr, uid, uid)
- currency_ids = currency_obj.search(cr, uid, [], context=context)
-
- tolerance = {}
- tolerance_base = user.company_id.credit_control_tolerance
- for c_id in currency_ids:
- tolerance[c_id] = currency_obj.compute(
- cr, uid,
- c_id,
- user.company_id.currency_id.id,
- tolerance_base,
- context=context)
-
- level = level_obj.browse(cr, uid, level_id, context)
- line_ids = []
- for line in ml_obj.browse(cr, uid, lines, context):
-
- open_amount = line.amount_residual_currency
- cur_tolerance = tolerance.get(line.currency_id.id, tolerance_base)
- if check_tolerance and open_amount < cur_tolerance:
- continue
- vals = self._prepare_from_move_line(cr, uid,
- line,
- level,
- controlling_date,
- open_amount,
- context=context)
- line_id = self.create(cr, uid, vals, context=context)
- line_ids.append(line_id)
-
- # when we have lines generated earlier in draft,
- # on the same level, it means that we have left
- # them, so they are to be considered as ignored
- previous_draft_ids = self.search(
- cr, uid,
- [('move_line_id', '=', line.id),
- ('policy_level_id', '=', level.id),
- ('state', '=', 'draft'),
- ('id', '!=', line_id)],
- context=context)
- if previous_draft_ids:
- self.write(cr, uid, previous_draft_ids,
- {'state': 'ignored'}, context=context)
-
- return line_ids
-
- def unlink(self, cr, uid, ids, context=None, check=True):
- for line in self.browse(cr, uid, ids, context=context):
- if line.state != 'draft':
- raise orm.except_orm(
- _('Error !'),
- _('You are not allowed to delete a credit control '
- 'line that is not in draft state.')
- )
-
- return super(CreditControlLine, self).unlink(cr, uid, ids,
- context=context)
diff --git a/__unported__/account_credit_control/partner.py b/__unported__/account_credit_control/partner.py
deleted file mode 100644
index ebfee0f9e..000000000
--- a/__unported__/account_credit_control/partner.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-from openerp.osv import orm, fields
-
-
-class ResPartner(orm.Model):
- """Add a settings on the credit control policy to use on the partners,
- and links to the credit control lines."""
-
- _inherit = "res.partner"
-
- _columns = {
- 'credit_policy_id': fields.many2one(
- 'credit.control.policy',
- 'Credit Control Policy',
- domain="[('account_ids', 'in', property_account_receivable)]",
- help=("The Credit Control Policy used for this "
- "partner. This setting can be forced on the "
- "invoice. If nothing is defined, it will use "
- "the company setting.")
- ),
- 'credit_control_line_ids': fields.one2many(
- 'credit.control.line',
- 'invoice_id',
- string='Credit Control Lines',
- readonly=True
- )
- }
-
- def _check_credit_policy(self, cr, uid, part_ids, context=None):
- """Ensure that policy on partner are limited to the account policy"""
- if isinstance(part_ids, (int, long)):
- part_ids = [part_ids]
- policy_obj = self.pool['credit.control.policy']
- for partner in self.browse(cr, uid, part_ids, context):
- if not partner.property_account_receivable or \
- not partner.credit_policy_id:
- return True
- account = partner.property_account_receivable
- policy_obj.check_policy_against_account(
- cr, uid,
- account.id,
- partner.credit_policy_id.id,
- context=context
- )
- return True
-
- _constraints = [(_check_credit_policy,
- 'The policy must be related to the receivable account',
- ['credit_policy_id'])]
-
- def copy_data(self, cr, uid, id, default=None, context=None):
- """Remove credit lines when copying partner"""
- if default is None:
- default = {}
- else:
- default = default.copy()
- default['credit_control_line_ids'] = False
- return super(ResPartner, self).copy_data(
- cr, uid, id, default=default, context=context)
diff --git a/__unported__/account_credit_control/policy.py b/__unported__/account_credit_control/policy.py
deleted file mode 100644
index 0b4a5c8ca..000000000
--- a/__unported__/account_credit_control/policy.py
+++ /dev/null
@@ -1,464 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-from openerp.osv import orm, fields
-from openerp.tools.translate import _
-
-
-class CreditControlPolicy(orm.Model):
- """Define a policy of reminder"""
-
- _name = "credit.control.policy"
- _description = """Define a reminder policy"""
- _columns = {
- 'name': fields.char(
- 'Name',
- required=True,
- size=128
- ),
-
- 'level_ids': fields.one2many(
- 'credit.control.policy.level',
- 'policy_id',
- 'Policy Levels'
- ),
-
- 'do_nothing': fields.boolean(
- 'Do nothing',
- help='For policies which should not '
- 'generate lines or are obsolete'
- ),
-
- 'company_id': fields.many2one('res.company', 'Company'),
-
- 'account_ids': fields.many2many(
- 'account.account',
- string='Accounts',
- required=True,
- domain="[('type', '=', 'receivable')]",
- help="This policy will be active only"
- " for the selected accounts"
- ),
- 'active': fields.boolean('Active'),
- }
-
- _defaults = {
- 'active': True,
- }
-
- def _move_lines_domain(self, cr, uid, policy, controlling_date,
- context=None):
- """Build the default domain for searching move lines"""
- account_ids = [a.id for a in policy.account_ids]
- return [('account_id', 'in', account_ids),
- ('date_maturity', '<=', controlling_date),
- ('reconcile_id', '=', False),
- ('partner_id', '!=', False)]
-
- def _due_move_lines(self, cr, uid, policy, controlling_date, context=None):
- """ Get the due move lines for the policy of the company.
-
- The set of ids will be reduced and extended according
- to the specific policies defined on partners and invoices.
-
- Do not use direct SQL in order to respect security rules.
-
- Assume that only the receivable lines have a maturity date and that
- accounts used in the policy are reconcilable.
- """
- move_l_obj = self.pool.get('account.move.line')
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
- if user.company_id.credit_policy_id.id != policy.id:
- return set()
-
- domain_line = self._move_lines_domain(cr, uid, policy,
- controlling_date,
- context=context)
- return set(move_l_obj.search(cr, uid, domain_line, context=context))
-
- def _move_lines_subset(self, cr, uid, policy, controlling_date,
- model, move_relation_field, context=None):
- """ Get the move lines related to one model for a policy.
-
- Do not use direct SQL in order to respect security rules.
-
- Assume that only the receivable lines have a maturity date and that
- accounts used in the policy are reconcilable.
-
- The policy relation field must be named credit_policy_id.
-
- :param browse_record policy: policy
- :param str controlling_date: date of credit control
- :param str model: name of the model where is defined a credit_policy_id
- :param str move_relation_field: name of the field in account.move.line
- which is a many2one to `model`
- :return: set of ids to add in the process, set of ids to remove from
- the process
- """
- # MARK possible place for a good optimisation
- my_obj = self.pool.get(model)
- move_l_obj = self.pool.get('account.move.line')
-
- default_domain = self._move_lines_domain(cr, uid,
- policy,
- controlling_date,
- context=context)
- to_add_ids = set()
- to_remove_ids = set()
-
- # The lines which are linked to this policy have to be included in the
- # run for this policy.
- # If another object override the credit_policy_id (ie. invoice after
- add_obj_ids = my_obj.search(
- cr, uid,
- [('credit_policy_id', '=', policy.id)],
- context=context)
- if add_obj_ids:
- domain = list(default_domain)
- domain.append((move_relation_field, 'in', add_obj_ids))
- to_add_ids = set(move_l_obj.search(cr, uid, domain,
- context=context))
-
- # The lines which are linked to another policy do not have to be
- # included in the run for this policy.
- neg_obj_ids = my_obj.search(
- cr, uid,
- [('credit_policy_id', '!=', policy.id),
- ('credit_policy_id', '!=', False)],
- context=context)
- if neg_obj_ids:
- domain = list(default_domain)
- domain.append((move_relation_field, 'in', neg_obj_ids))
- to_remove_ids = set(move_l_obj.search(cr, uid, domain,
- context=context))
- return to_add_ids, to_remove_ids
-
- def _get_partner_related_lines(self, cr, uid, policy, controlling_date,
- context=None):
- """ Get the move lines for a policy related to a partner.
-
- :param browse_record policy: policy
- :param str controlling_date: date of credit control
- :param str model: name of the model where is defined a credit_policy_id
- :param str move_relation_field: name of the field in account.move.line
- which is a many2one to `model`
- :return: set of ids to add in the process, set of ids to remove from
- the process
- """
- return self._move_lines_subset(cr, uid, policy, controlling_date,
- 'res.partner', 'partner_id',
- context=context)
-
- def _get_invoice_related_lines(self, cr, uid, policy, controlling_date,
- context=None):
- """ Get the move lines for a policy related to an invoice.
-
- :param browse_record policy: policy
- :param str controlling_date: date of credit control
- :param str model: name of the model where is defined a credit_policy_id
- :param str move_relation_field: name of the field in account.move.line
- which is a many2one to `model`
- :return: set of ids to add in the process, set of ids to remove from
- the process
- """
- return self._move_lines_subset(cr, uid, policy, controlling_date,
- 'account.invoice', 'invoice',
- context=context)
-
- def _get_move_lines_to_process(self, cr, uid, policy_id, controlling_date,
- context=None):
- """Build a list of move lines ids to include in a run
- for a policy at a given date.
-
- :param int/long policy: id of the policy
- :param str controlling_date: date of credit control
- :return: set of ids to include in the run
- """
- assert not (isinstance(policy_id, list) and len(policy_id) > 1), \
- "policy_id: only one id expected"
- if isinstance(policy_id, list):
- policy_id = policy_id[0]
-
- policy = self.browse(cr, uid, policy_id, context=context)
- # there is a priority between the lines, depicted by the calls below
- # warning, side effect method called on lines
- lines = self._due_move_lines(cr, uid, policy, controlling_date,
- context=context)
- add_ids, remove_ids = self._get_partner_related_lines(cr, uid, policy,
- controlling_date,
- context=context)
- lines = lines.union(add_ids).difference(remove_ids)
- add_ids, remove_ids = self._get_invoice_related_lines(cr, uid, policy,
- controlling_date,
- context=context)
- lines = lines.union(add_ids).difference(remove_ids)
- return lines
-
- def _lines_different_policy(self, cr, uid, policy_id, lines, context=None):
- """ Return a set of move lines ids for which there is an existing credit line
- but with a different policy.
- """
- different_lines = set()
- if not lines:
- return different_lines
- assert not (isinstance(policy_id, list) and len(policy_id) > 1), \
- "policy_id: only one id expected"
- if isinstance(policy_id, list):
- policy_id = policy_id[0]
- cr.execute("SELECT move_line_id FROM credit_control_line"
- " WHERE policy_id != %s and move_line_id in %s"
- " AND manually_overridden IS false",
- (policy_id, tuple(lines)))
- res = cr.fetchall()
- if res:
- different_lines.update([x[0] for x in res])
- return different_lines
-
- def check_policy_against_account(self, cr, uid, account_id, policy_id,
- context=None):
- """Ensure that the policy corresponds to account relation"""
- policy = self.browse(cr, uid, policy_id, context=context)
- account = self.pool['account.account'].browse(cr, uid, account_id,
- context=context)
- policies_id = self.search(cr, uid, [],
- context=context)
- policies = self.browse(cr, uid, policies_id, context=context)
- allowed = [x for x in policies
- if account in x.account_ids or x.do_nothing]
- if policy not in allowed:
- allowed_names = u"\n".join(x.name for x in allowed)
- raise orm.except_orm(
- _('You can only use a policy set on '
- 'account %s') % account.name,
- _("Please choose one of the following "
- "policies:\n %s") % allowed_names
- )
- return True
-
-
-class CreditControlPolicyLevel(orm.Model):
- """Define a policy level. A level allows to determine if
- a move line is due and the level of overdue of the line"""
-
- _name = "credit.control.policy.level"
- _order = 'level'
- _description = """A credit control policy level"""
- _columns = {
- 'policy_id': fields.many2one('credit.control.policy',
- 'Related Policy', required=True),
- 'name': fields.char('Name', size=128, required=True,
- translate=True),
- 'level': fields.integer('Level', required=True),
-
- 'computation_mode': fields.selection(
- [('net_days', 'Due Date'),
- ('end_of_month', 'Due Date, End Of Month'),
- ('previous_date', 'Previous Reminder')],
- 'Compute Mode',
- required=True
- ),
-
- 'delay_days': fields.integer('Delay (in days)', required='True'),
- 'email_template_id': fields.many2one('email.template',
- 'Email Template',
- required=True),
- 'channel': fields.selection([('letter', 'Letter'),
- ('email', 'Email')],
- 'Channel', required=True),
- 'custom_text': fields.text('Custom Message',
- required=True,
- translate=True),
- 'custom_mail_text': fields.text('Custom Mail Message',
- required=True, translate=True),
-
- }
-
- def _check_level_mode(self, cr, uid, rids, context=None):
- """ The smallest level of a policy cannot be computed on the
- "previous_date". Return False if this happens. """
- if isinstance(rids, (int, long)):
- rids = [rids]
- for level in self.browse(cr, uid, rids, context):
- smallest_level_id = self.search(
- cr, uid,
- [('policy_id', '=', level.policy_id.id)],
- order='level asc', limit=1, context=context)
- smallest_level = self.browse(cr, uid, smallest_level_id[0],
- context)
- if smallest_level.computation_mode == 'previous_date':
- return False
- return True
-
- _sql_constraint = [('unique level',
- 'UNIQUE (policy_id, level)',
- 'Level must be unique per policy')]
-
- _constraints = [(_check_level_mode,
- 'The smallest level can not be of type Previous Reminder',
- ['level'])]
-
- def _previous_level(self, cr, uid, policy_level, context=None):
- """ For one policy level, returns the id of the previous level
-
- If there is no previous level, it returns None, it means that's the
- first policy level
-
- :param browse_record policy_level: policy level
- :return: previous level id or None if there is no previous level
- """
- previous_level_ids = self.search(
- cr,
- uid,
- [('policy_id', '=', policy_level.policy_id.id),
- ('level', '<', policy_level.level)],
- order='level desc',
- limit=1,
- context=context)
- return previous_level_ids[0] if previous_level_ids else None
-
- # ----- sql time related methods ---------
-
- def _net_days_get_boundary(self):
- return (" (mv_line.date_maturity + %(delay)s)::date <= "
- "date(%(controlling_date)s)")
-
- def _end_of_month_get_boundary(self):
- return ("(date_trunc('MONTH', (mv_line.date_maturity + %(delay)s))+"
- "INTERVAL '1 MONTH - 1 day')::date"
- "<= date(%(controlling_date)s)")
-
- def _previous_date_get_boundary(self):
- return "(cr_line.date + %(delay)s)::date <= date(%(controlling_date)s)"
-
- def _get_sql_date_boundary_for_computation_mode(self, cr, uid, level,
- controlling_date,
- context=None):
- """Return a where clauses statement for the given
- controlling date and computation mode of the level"""
- fname = "_%s_get_boundary" % (level.computation_mode,)
- if hasattr(self, fname):
- fnc = getattr(self, fname)
- return fnc()
- else:
- raise NotImplementedError(
- _('Can not get function for computation mode: '
- '%s is not implemented') % (fname,)
- )
-
- # -----------------------------------------
-
- def _get_first_level_move_line_ids(self, cr, uid, level, controlling_date,
- lines, context=None):
- """Retrieve all the move lines that are linked to a first level.
- We use Raw SQL for performance. Security rule where applied in
- policy object when the first set of lines were retrieved"""
- level_lines = set()
- if not lines:
- return level_lines
- sql = ("SELECT DISTINCT mv_line.id\n"
- " FROM account_move_line mv_line\n"
- " WHERE mv_line.id in %(line_ids)s\n"
- " AND NOT EXISTS (SELECT id\n"
- " FROM credit_control_line\n"
- " WHERE move_line_id = mv_line.id\n"
- # lines from a previous level with a draft or ignored state
- # or manually overridden
- # have to be generated again for the previous level
- " AND NOT manually_overridden\n"
- " AND state NOT IN ('draft', 'ignored'))"
- " AND (mv_line.debit IS NOT NULL AND mv_line.debit != 0.0)\n")
- sql += " AND"
- sql += self._get_sql_date_boundary_for_computation_mode(
- cr, uid, level,
- controlling_date, context
- )
- data_dict = {'controlling_date': controlling_date,
- 'line_ids': tuple(lines),
- 'delay': level.delay_days}
- cr.execute(sql, data_dict)
- res = cr.fetchall()
- if res:
- level_lines.update([x[0] for x in res])
- return level_lines
-
- def _get_other_level_move_line_ids(self, cr, uid, level, controlling_date,
- lines, context=None):
- """ Retrieve the move lines for other levels than first level.
- """
- level_lines = set()
- if not lines:
- return level_lines
- sql = ("SELECT mv_line.id\n"
- " FROM account_move_line mv_line\n"
- " JOIN credit_control_line cr_line\n"
- " ON (mv_line.id = cr_line.move_line_id)\n"
- " WHERE cr_line.id = (SELECT credit_control_line.id "
- " FROM credit_control_line\n"
- " WHERE credit_control_line.move_line_id = mv_line.id\n"
- " AND state != 'ignored'"
- " AND NOT manually_overridden"
- " ORDER BY credit_control_line.level desc limit 1)\n"
- " AND cr_line.level = %(previous_level)s\n"
- " AND (mv_line.debit IS NOT NULL AND mv_line.debit != 0.0)\n"
- # lines from a previous level with a draft or ignored state
- # or manually overridden
- # have to be generated again for the previous level
- " AND NOT manually_overridden\n"
- " AND cr_line.state NOT IN ('draft', 'ignored')\n"
- " AND mv_line.id in %(line_ids)s\n")
- sql += " AND "
- sql += self._get_sql_date_boundary_for_computation_mode(
- cr, uid, level,
- controlling_date,
- context
- )
- previous_level_id = self._previous_level(cr, uid, level,
- context=context)
- previous_level = self.browse(cr, uid, previous_level_id,
- context=context)
- data_dict = {'controlling_date': controlling_date,
- 'line_ids': tuple(lines),
- 'delay': level.delay_days,
- 'previous_level': previous_level.level}
-
- # print cr.mogrify(sql, data_dict)
- cr.execute(sql, data_dict)
- res = cr.fetchall()
- if res:
- level_lines.update([x[0] for x in res])
- return level_lines
-
- def get_level_lines(self, cr, uid, level_id, controlling_date, lines,
- context=None):
- """get all move lines in entry lines that match the current level"""
- assert not (isinstance(level_id, list) and len(level_id) > 1), \
- "level_id: only one id expected"
- if isinstance(level_id, list):
- level_id = level_id[0]
- matching_lines = set()
- level = self.browse(cr, uid, level_id, context=context)
- if self._previous_level(cr, uid, level, context=context) is None:
- method = self._get_first_level_move_line_ids
- else:
- method = self._get_other_level_move_line_ids
- matching_lines.update(method(cr, uid, level,
- controlling_date, lines,
- context=context))
- return matching_lines
diff --git a/__unported__/account_credit_control/report/__init__.py b/__unported__/account_credit_control/report/__init__.py
deleted file mode 100644
index b7e5edadc..000000000
--- a/__unported__/account_credit_control/report/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from . import credit_control_summary
diff --git a/__unported__/account_credit_control/report/credit_control_summary.html.mako b/__unported__/account_credit_control/report/credit_control_summary.html.mako
deleted file mode 100644
index 323838aa2..000000000
--- a/__unported__/account_credit_control/report/credit_control_summary.html.mako
+++ /dev/null
@@ -1,244 +0,0 @@
-## -*- coding: utf-8 -*-
-
-
-
-
-
-
- %for comm in objects :
- <% setLang(comm.get_contact_address().lang) %>
-
-
- <%
- add = comm.get_contact_address()
- %>
- %if comm.partner_id.id == add.id:
- | ${comm.partner_id.title and comm.partner_id.title.name or ''} ${comm.partner_id.name } |
- <% address_lines = comm.partner_id.contact_address.split("\n") %>
-
- %else:
- | ${comm.partner_id.name or ''} |
- | ${add.title and add.title.name or ''} ${add.name} |
- <% address_lines = add.contact_address.split("\n")[1:] %>
- %endif
- %for part in address_lines:
- %if part:
- | ${part} |
- %endif
- %endfor
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${_('Reminder')}: ${comm.current_policy_level.name or '' }
-
-
-
${_('Dear')},
-
${comm.current_policy_level.custom_text.replace('\n', '
')}
-
-
-
-
${_('Summary')}
-
-
- | ${_('Invoice number')} |
- ${_('Invoice date')} |
- ${_('Date due')} |
- ${_('Invoiced amount')} |
- ${_('Open amount')} |
- ${_('Currency')} |
-
-
-%for line in comm.credit_control_line_ids:
-
- %if line.invoice_id:
- ${line.invoice_id.number}
- %if line.invoice_id.name:
-
- ${line.invoice_id.name}
- %endif
- |
- %else:
- ${line.move_line_id.name} |
- %endif
- ${line.date_entry} |
- ${line.date_due} |
- ${line.amount_due} |
- ${line.balance_due} |
- ${line.currency_id.name or comm.company_id.currency_id.name} |
-
-%endfor
-
-
-
-<%doc>
-
-
${_('If you have any question, do not hesitate to contact us.')}
-
-
${comm.user_id.name} ${comm.user_id.email and '<%s>'%(comm.user_id.email) or ''}
- ${comm.company_id.name}
- % if comm.company_id.street:
- ${comm.company_id.street or ''}
-
- % endif
-
- % if comm.company_id.street2:
- ${comm.company_id.street2}
- % endif
- % if comm.company_id.city or comm.company_id.zip:
- ${comm.company_id.zip or ''} ${comm.company_id.city or ''}
- % endif
- % if comm.company_id.country_id:
- ${comm.company_id.state_id and ('%s, ' % comm.company_id.state_id.name) or ''} ${comm.company_id.country_id.name or ''}
- % endif
- % if comm.company_id.phone:
- Phone: ${comm.company_id.phone}
- % endif
- % if comm.company_id.website:
- ${comm.company_id.website or ''}
- % endif
-%doc>
-
-
- %endfor
-
-
-
diff --git a/__unported__/account_credit_control/report/report.xml b/__unported__/account_credit_control/report/report.xml
deleted file mode 100644
index dee64b896..000000000
--- a/__unported__/account_credit_control/report/report.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/__unported__/account_credit_control/run.py b/__unported__/account_credit_control/run.py
deleted file mode 100644
index fd32be1dc..000000000
--- a/__unported__/account_credit_control/run.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see
.
-#
-##############################################################################
-import logging
-
-from openerp.osv import orm, fields
-from openerp.tools.translate import _
-
-logger = logging.getLogger('credit.control.run')
-
-
-class CreditControlRun(orm.Model):
- """Credit Control run generate all credit control lines and reject"""
-
- _name = "credit.control.run"
- _rec_name = 'date'
- _description = """Credit control line generator"""
- _columns = {
- 'date': fields.date('Controlling Date', required=True),
- 'policy_ids': fields.many2many(
- 'credit.control.policy',
- rel="credit_run_policy_rel",
- id1='run_id', id2='policy_id',
- string='Policies',
- readonly=True,
- states={'draft': [('readonly', False)]}
- ),
-
- 'report': fields.text('Report', readonly=True),
-
- 'state': fields.selection([('draft', 'Draft'),
- ('done', 'Done')],
- string='State',
- required=True,
- readonly=True),
-
- 'manual_ids': fields.many2many(
- 'account.move.line',
- rel="credit_runreject_rel",
- string='Lines to handle manually',
- help=('If a credit control line has been generated'
- 'on a policy and the policy has been changed '
- 'in the meantime, it has to be handled '
- 'manually'),
- readonly=True
- ),
- }
-
- def copy_data(self, cr, uid, id, default=None, context=None):
- if default is None:
- default = {}
- else:
- default = default.copy()
- default.update({
- 'report': False,
- 'manual_ids': False,
- })
- return super(CreditControlRun, self).copy_data(
- cr, uid, id, default=default, context=context)
-
- def _get_policies(self, cr, uid, context=None):
- return self.pool['credit.control.policy'].search(cr, uid, [],
- context=context)
-
- _defaults = {'state': 'draft',
- 'policy_ids': _get_policies}
-
- def _check_run_date(self, cr, uid, ids, controlling_date, context=None):
- """Ensure that there is no credit line in the future
- using controlling_date
-
- """
- run_obj = self.pool['credit.control.run']
- runs = run_obj.search(cr, uid, [('date', '>', controlling_date)],
- order='date DESC', limit=1, context=context)
- if runs:
- run = run_obj.browse(cr, uid, runs[0], context=context)
- raise orm.except_orm(_('Error'),
- _('A run has already been executed more '
- 'recently than %s') % (run.date))
-
- line_obj = self.pool['credit.control.line']
- lines = line_obj.search(cr, uid, [('date', '>', controlling_date)],
- order='date DESC', limit=1, context=context)
- if lines:
- line = line_obj.browse(cr, uid, lines[0], context=context)
- raise orm.except_orm(_('Error'),
- _('A credit control line more '
- 'recent than %s exists at %s') %
- (controlling_date, line.date))
- return True
-
- def _generate_credit_lines(self, cr, uid, run_id, context=None):
- """ Generate credit control lines. """
- cr_line_obj = self.pool.get('credit.control.line')
- assert not (isinstance(run_id, list) and len(run_id) > 1), \
- "run_id: only one id expected"
- if isinstance(run_id, list):
- run_id = run_id[0]
-
- run = self.browse(cr, uid, run_id, context=context)
- manually_managed_lines = set() # line who changed policy
- credit_line_ids = [] # generated lines
- run._check_run_date(run.date, context=context)
-
- policies = run.policy_ids
- if not policies:
- raise orm.except_orm(_('Error'),
- _('Please select a policy'))
-
- report = ''
- generated_ids = []
- for policy in policies:
- if policy.do_nothing:
- continue
- lines = policy._get_move_lines_to_process(run.date,
- context=context)
- manual_lines = policy._lines_different_policy(lines,
- context=context)
- lines.difference_update(manual_lines)
- manually_managed_lines.update(manual_lines)
- policy_generated_ids = []
- if lines:
- # policy levels are sorted by level
- # so iteration is in the correct order
- for level in reversed(policy.level_ids):
- level_lines = level.get_level_lines(run.date, lines,
- context=context)
- policy_generated_ids += \
- cr_line_obj.create_or_update_from_mv_lines(
- cr, uid,
- [],
- list(level_lines),
- level.id,
- run.date,
- context=context
- )
- generated_ids.extend(policy_generated_ids)
- if policy_generated_ids:
- report += _("Policy \"%s\" has generated %d Credit Control Lines.\n") % \
- (policy.name, len(policy_generated_ids))
- credit_line_ids += policy_generated_ids
- else:
- report += _(
- "Policy \"%s\" has not generated any "
- "Credit Control Lines.\n" % policy.name
- )
-
- vals = {'state': 'done',
- 'report': report,
- 'manual_ids': [(6, 0, manually_managed_lines)]}
- run.write(vals, context=context)
- return generated_ids
-
- def generate_credit_lines(self, cr, uid, run_id, context=None):
- """Generate credit control lines
-
- Lock the ``credit_control_run`` Postgres table to avoid concurrent
- calls of this method.
- """
- try:
- cr.execute('SELECT id FROM credit_control_run'
- ' LIMIT 1 FOR UPDATE NOWAIT')
- except Exception:
- # In case of exception openerp will do a rollback
- # for us and free the lock
- raise orm.except_orm(_('Error'),
- _('A credit control run is already running'
- ' in background, please try later.'))
-
- self._generate_credit_lines(cr, uid, run_id, context)
- return True
diff --git a/__unported__/account_credit_control/scenarios/features/steps/account_voucher.py b/__unported__/account_credit_control/scenarios/features/steps/account_voucher.py
deleted file mode 100644
index a73c78fef..000000000
--- a/__unported__/account_credit_control/scenarios/features/steps/account_voucher.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# -*- coding: utf-8 -*-
-# flake8: noqa
-from support import *
-import datetime
-
-@step('I import invoice "{inv_name}" using import invoice button')
-def impl(ctx, inv_name):
- invoice = model('account.invoice').get([('name', '=', inv_name)])
- assert invoice
- bank_statement = ctx.found_item
- for line in bank_statement.line_ids:
- line.unlink()
- lines = model('account.move.line').browse([('move_id', '=', invoice.move_id.id),
- ('account_id', '=', invoice.account_id.id)])
-
- wizard = model('account.statement.from.invoice.lines').create({'line_ids': lines})
- wizard.populate_statement({'statement_id': bank_statement.id})
-
-@given(u'I should have a "account.bank.statement.line" with name: "{name}" and amount: "{amount}"')
-def impl(ctx, name, amount):
- assert ctx.found_item
- line = model('account.bank.statement.line').get([('name', '=', name),
- ('amount', '=', amount),
- ('statement_id', '=', ctx.found_item.id)])
- assert line
- ctx.line = line
-
-@given(u'I set the voucher paid amount to "{amount}"')
-def impl(ctx, amount):
- assert ctx.line
- voucher = model('account.voucher').get(ctx.line.voucher_id.id)
- assert voucher
-
- vals = voucher.onchange_amount(float(amount),
- voucher.payment_rate,
- voucher.partner_id.id,
- voucher.journal_id.id if voucher.journal_id else False,
- voucher.currency_id.id if voucher.currency_id else False,
- voucher.type,
- voucher.date,
- voucher.payment_rate,
- voucher.company_id.id if voucher.company_id else false)
- vals = vals['value']
- vals.update({'amount': ctx.line.voucher_id.amount})
- voucher_line_ids = []
- voucher_line_dr_ids = []
- v_l_obj = model('account.voucher.line')
- for v_line_vals in vals.get('line_cr_ids', []) or []:
- v_line_vals['voucher_id'] = voucher.id
- voucher_line_ids.append(v_l_obj.create(v_line_vals).id)
- vals['line_cr_ids'] = voucher_line_ids
-
- for v_line_vals in vals.get('line_dr_ids', []) or []:
- v_line_vals['voucher_id'] = voucher.id
- voucher_line_dr_ids.append(v_l_obj.create(v_line_vals).id)
- vals['line_dr_ids'] = voucher_line_ids
-
- voucher.write(vals)
- ctx.vals = vals
- ctx.voucher = voucher
-
-@given(u'I save the voucher')
-def impl(ctx):
- assert True
-
-@given(u'I modify the line amount to "{amount}"')
-@then(u'I modify the line amount to "{amount}"')
-def impl(ctx, amount):
- assert ctx.line
- # we have to change voucher amount before chaning statement line amount
- if ctx.line.voucher_id:
- model('account.voucher').write([ctx.line.voucher_id.id],
- {'amount': float(amount)})
- ctx.line.write({'amount': float(amount)})
-
-@step('My invoice "{inv_name}" is in state "{state}" reconciled with a residual amount of "{amount:f}"')
-def impl(ctx, inv_name, state, amount):
- invoice = model('account.invoice').get([('name', '=', inv_name)])
- assert_almost_equal(invoice.residual, amount)
- assert_equal(invoice.state, state)
-
-@step('I modify the bank statement line amount to {amount:f}')
-def impl(ctx, amount):
- line = ctx.found_item.voucher_id.line_cr_ids[0]
- #ctx.voucher = model('account.voucher').get(ctx.found_item.voucher_id.id)
- ctx.found_item.on_change('onchange_amount', 'amount', (), amount)
-
-@then(u'I set bank statement end-balance')
-@given(u'I set bank statement end-balance')
-def impl(ctx):
- assert ctx.found_item, "No statement found"
- ctx.found_item.write({'balance_end_real': ctx.found_item.balance_end})
- assert ctx.found_item.balance_end == ctx.found_item.balance_end_real
-
-@when(u'I confirm bank statement')
-def impl(ctx):
- assert ctx.found_item
- assert_equal(ctx.found_item._model._name, 'account.bank.statement')
- ctx.found_item.button_confirm_bank()
diff --git a/__unported__/account_credit_control/wizard/credit_control_communication.py b/__unported__/account_credit_control/wizard/credit_control_communication.py
deleted file mode 100644
index c33b818f5..000000000
--- a/__unported__/account_credit_control/wizard/credit_control_communication.py
+++ /dev/null
@@ -1,229 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see
.
-#
-##############################################################################
-import netsvc
-import logging
-from openerp.osv.orm import TransientModel, fields
-
-logger = logging.getLogger('credit.control.line.mailing')
-
-
-class CreditCommunication(TransientModel):
- """Shell class used to provide a base model to email template and reporting.
- Il use this approche in version 7 a browse record
- will exist even if not saved
-
- """
- _name = "credit.control.communication"
- _description = "credit control communication"
- _rec_name = 'partner_id'
- _columns = {
- 'partner_id': fields.many2one(
- 'res.partner',
- 'Partner',
- required=True
- ),
-
- 'current_policy_level': fields.many2one(
- 'credit.control.policy.level',
- 'Level',
- required=True
- ),
-
- 'credit_control_line_ids': fields.many2many(
- 'credit.control.line',
- rel='comm_credit_rel',
- string='Credit Lines'
- ),
-
- 'company_id': fields.many2one(
- 'res.company',
- 'Company',
- required=True
- ),
-
- 'user_id': fields.many2one('res.users', 'User')
- }
-
- def _get_comp(self, cr, uid, context=None):
- return self.pool.get('res.company')._company_default_get(
- cr, uid,
- 'credit.control.policy',
- context=context
- )
-
- _defaults = {
- 'company_id': _get_comp,
- 'user_id': lambda s, cr, uid, c: uid
- }
-
- def get_email(self, cr, uid, com_id, context=None):
- """Return a valid email for customer"""
- if isinstance(com_id, list):
- assert len(com_id) == 1, "get_email only support one id as param."
- com_id = com_id[0]
- form = self.browse(cr, uid, com_id, context=context)
- contact = form.get_contact_address()
- return contact.email
-
- def get_contact_address(self, cr, uid, com_id, context=None):
- pmod = self.pool['res.partner']
- if isinstance(com_id, list):
- com_id = com_id[0]
- form = self.browse(cr, uid, com_id, context=context)
- part = form.partner_id
- add_ids = part.address_get(adr_pref=['invoice']) or {}
- add_id = add_ids.get('invoice', add_ids.get('default', False))
- return pmod.browse(cr, uid, add_id, context)
-
- def _get_credit_lines(self, cr, uid, line_ids, partner_id, level_id,
- context=None):
- """Return credit lines related to a partner and a policy level"""
- cr_line_obj = self.pool.get('credit.control.line')
- cr_l_ids = cr_line_obj.search(cr,
- uid,
- [('id', 'in', line_ids),
- ('partner_id', '=', partner_id),
- ('policy_level_id', '=', level_id)],
- context=context)
- return cr_l_ids
-
- def _generate_comm_from_credit_line_ids(self, cr, uid, line_ids,
- context=None):
- """Aggregate credit control line by partner, level, and currency
- It also generate a communication object per aggregation.
- """
- if not line_ids:
- return []
- comms = []
- sql = (
- "SELECT distinct partner_id, policy_level_id, "
- " credit_control_line.currency_id, "
- " credit_control_policy_level.level"
- " FROM credit_control_line JOIN credit_control_policy_level "
- " ON (credit_control_line.policy_level_id = "
- " credit_control_policy_level.id)"
- " WHERE credit_control_line.id in %s"
- " ORDER by credit_control_policy_level.level, "
- " credit_control_line.currency_id"
- )
-
- cr.execute(sql, (tuple(line_ids),))
- res = cr.dictfetchall()
- for level_assoc in res:
- data = {}
- data['credit_control_line_ids'] = [
- (
- 6, 0, self._get_credit_lines(
- cr, uid, line_ids,
- level_assoc['partner_id'],
- level_assoc['policy_level_id'],
- context=context
- )
- )
- ]
- data['partner_id'] = level_assoc['partner_id']
- data['current_policy_level'] = level_assoc['policy_level_id']
- comm_id = self.create(cr, uid, data, context=context)
- comms.append(self.browse(cr, uid, comm_id, context=context))
- return comms
-
- def _generate_emails(self, cr, uid, comms, context=None):
- """Generate email message using template related to level"""
- cr_line_obj = self.pool.get('credit.control.line')
- email_temp_obj = self.pool.get('email.template')
- email_message_obj = self.pool.get('mail.mail')
- att_obj = self.pool.get('ir.attachment')
- email_ids = []
- essential_fields = ['subject',
- 'body_html',
- 'email_from',
- 'email_to']
-
- for comm in comms:
- # we want to use a local cr in order to send the maximum
- # of email
- template = comm.current_policy_level.email_template_id.id
- email_values = {}
- cl_ids = [cl.id for cl in comm.credit_control_line_ids]
- email_values = email_temp_obj.generate_email(cr, uid,
- template,
- comm.id,
- context=context)
- email_values['body_html'] = email_values['body']
- email_values['type'] = 'email'
-
- email_id = email_message_obj.create(cr, uid, email_values,
- context=context)
-
- state = 'sent'
- # The mail will not be send, however it will be in the pool, in an
- # error state. So we create it, link it with
- # the credit control line
- # and put this latter in a `email_error` state we not that we have
- # a problem with the email
- if any(not email_values.get(field) for field in essential_fields):
- state = 'email_error'
-
- cr_line_obj.write(
- cr, uid, cl_ids,
- {'mail_message_id': email_id,
- 'state': state},
- context=context
- )
- att_ids = []
- for att in email_values.get('attachments', []):
- attach_fname = att[0]
- attach_datas = att[1]
- data_attach = {
- 'name': attach_fname,
- 'datas': attach_datas,
- 'datas_fname': attach_fname,
- 'res_model': 'mail.mail',
- 'res_id': email_id,
- 'type': 'binary',
- }
- att_ids.append(
- att_obj.create(cr, uid, data_attach,
- context=context)
- )
- email_message_obj.write(cr, uid, [email_id],
- {'attachment_ids': [(6, 0, att_ids)]},
- context=context)
- email_ids.append(email_id)
- return email_ids
-
- def _generate_report(self, cr, uid, comms, context=None):
- """Will generate a report by inserting mako template
- of related policy template
-
- """
- service = netsvc.LocalService('report.credit_control_summary')
- ids = [x.id for x in comms]
- result, format = service.create(cr, uid, ids, {}, {})
- return result
-
- def _mark_credit_line_as_sent(self, cr, uid, comms, context=None):
- line_ids = []
- for comm in comms:
- line_ids += [x.id for x in comm.credit_control_line_ids]
- l_obj = self.pool.get('credit.control.line')
- l_obj.write(cr, uid, line_ids, {'state': 'sent'}, context=context)
- return line_ids
diff --git a/__unported__/account_credit_control/wizard/credit_control_emailer.py b/__unported__/account_credit_control/wizard/credit_control_emailer.py
deleted file mode 100644
index 17528ce71..000000000
--- a/__unported__/account_credit_control/wizard/credit_control_emailer.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see
.
-#
-##############################################################################
-
-from openerp.osv import orm, fields
-from openerp.tools.translate import _
-
-
-class CreditControlEmailer(orm.TransientModel):
- """Send emails for each selected credit control lines."""
-
- _name = "credit.control.emailer"
- _description = """Mass credit line emailer"""
- _rec_name = 'id'
-
- def _get_line_ids(self, cr, uid, context=None):
- if context is None:
- context = {}
- res = False
- if (context.get('active_model') == 'credit.control.line' and
- context.get('active_ids')):
- res = self._filter_line_ids(
- cr, uid,
- context['active_ids'],
- context=context
- )
- return res
-
- _columns = {
- 'line_ids': fields.many2many(
- 'credit.control.line',
- string='Credit Control Lines',
- domain=[('state', '=', 'to_be_sent'),
- ('channel', '=', 'email')]
- ),
- }
-
- _defaults = {
- 'line_ids': _get_line_ids,
- }
-
- def _filter_line_ids(self, cr, uid, active_ids, context=None):
- """filter lines to use in the wizard"""
- line_obj = self.pool.get('credit.control.line')
- domain = [('state', '=', 'to_be_sent'),
- ('id', 'in', active_ids),
- ('channel', '=', 'email')]
- return line_obj.search(cr, uid, domain, context=context)
-
- def email_lines(self, cr, uid, wiz_id, context=None):
- assert not (isinstance(wiz_id, list) and len(wiz_id) > 1), \
- "wiz_id: only one id expected"
- comm_obj = self.pool.get('credit.control.communication')
- if isinstance(wiz_id, list):
- wiz_id = wiz_id[0]
- form = self.browse(cr, uid, wiz_id, context)
-
- if not form.line_ids:
- raise orm.except_orm(
- _('Error'),
- _('No credit control lines selected.')
- )
-
- line_ids = [l.id for l in form.line_ids]
- filtered_ids = self._filter_line_ids(
- cr, uid, line_ids, context
- )
- comms = comm_obj._generate_comm_from_credit_line_ids(
- cr, uid, filtered_ids, context=context
- )
- comm_obj._generate_emails(cr, uid, comms, context=context)
- return {}
diff --git a/__unported__/account_credit_control/wizard/credit_control_marker.py b/__unported__/account_credit_control/wizard/credit_control_marker.py
deleted file mode 100644
index 525ba930e..000000000
--- a/__unported__/account_credit_control/wizard/credit_control_marker.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see
.
-#
-##############################################################################
-from openerp.osv import orm, fields
-from openerp.tools.translate import _
-
-
-class CreditControlMarker(orm.TransientModel):
- """Change the state of lines in mass"""
-
- _name = 'credit.control.marker'
- _description = 'Mass marker'
-
- def _get_line_ids(self, cr, uid, context=None):
- if context is None:
- context = {}
- res = False
- if (context.get('active_model') == 'credit.control.line' and
- context.get('active_ids')):
- res = self._filter_line_ids(
- cr, uid,
- context['active_ids'],
- context=context
- )
- return res
-
- _columns = {
- 'name': fields.selection([('ignored', 'Ignored'),
- ('to_be_sent', 'Ready To Send'),
- ('sent', 'Done')],
- 'Mark as',
- required=True),
- 'line_ids': fields.many2many(
- 'credit.control.line',
- string='Credit Control Lines',
- domain="[('state', '!=', 'sent')]"),
- }
-
- _defaults = {
- 'name': 'to_be_sent',
- 'line_ids': _get_line_ids,
- }
-
- def _filter_line_ids(self, cr, uid, active_ids, context=None):
- """get line to be marked filter done lines"""
- line_obj = self.pool.get('credit.control.line')
- domain = [('state', '!=', 'sent'), ('id', 'in', active_ids)]
- return line_obj.search(cr, uid, domain, context=context)
-
- def _mark_lines(self, cr, uid, filtered_ids, state, context=None):
- """write hook"""
- line_obj = self.pool.get('credit.control.line')
- if not state:
- raise ValueError(_('state can not be empty'))
- line_obj.write(cr, uid, filtered_ids,
- {'state': state},
- context=context)
- return filtered_ids
-
- def mark_lines(self, cr, uid, wiz_id, context=None):
- """Write state of selected credit lines to the one in entry
- done credit line will be ignored"""
- assert not (isinstance(wiz_id, list) and len(wiz_id) > 1), \
- "wiz_id: only one id expected"
- if isinstance(wiz_id, list):
- wiz_id = wiz_id[0]
- form = self.browse(cr, uid, wiz_id, context)
-
- if not form.line_ids:
- raise orm.except_orm(
- _('Error'),
- _('No credit control lines selected.')
- )
-
- line_ids = [l.id for l in form.line_ids]
-
- filtered_ids = self._filter_line_ids(cr, uid, line_ids, context)
- if not filtered_ids:
- raise orm.except_orm(
- _('Information'),
- _('No lines will be changed. '
- 'All the selected lines are already done.')
- )
-
- self._mark_lines(cr, uid, filtered_ids, form.name, context)
-
- return {'domain': unicode([('id', 'in', filtered_ids)]),
- 'view_type': 'form',
- 'view_mode': 'tree,form',
- 'view_id': False,
- 'res_model': 'credit.control.line',
- 'type': 'ir.actions.act_window'}
diff --git a/__unported__/account_credit_control/wizard/credit_control_policy_changer.py b/__unported__/account_credit_control/wizard/credit_control_policy_changer.py
deleted file mode 100644
index c4f2416e9..000000000
--- a/__unported__/account_credit_control/wizard/credit_control_policy_changer.py
+++ /dev/null
@@ -1,182 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi
-# Copyright 2014 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see
.
-#
-##############################################################################
-import logging
-from openerp.tools.translate import _
-from openerp.osv import orm, fields
-logger = logging.getLogger(__name__)
-
-
-class credit_control_policy_changer(orm.TransientModel):
- """Wizard that is run from invoices and allows to set manually a policy
- Policy are actually apply to related move lines availabe
- in selection widget
-
- """
- _name = "credit.control.policy.changer"
- _columns = {
- 'new_policy_id': fields.many2one('credit.control.policy',
- 'New Policy to Apply',
- required=True),
- 'new_policy_level_id': fields.many2one('credit.control.policy.level',
- 'New level to apply',
- required=True),
- # Only used to provide dynamic filtering on form
- 'do_nothing': fields.boolean('No follow policy'),
- 'move_line_ids': fields.many2many('account.move.line',
- rel='credit_changer_ml_rel',
- string='Move line to change'),
- }
-
- def _get_default_lines(self, cr, uid, context=None):
- """Get default lines for fields move_line_ids
- of wizard. Only take lines that are on the same account
- and move of the invoice and not reconciled
-
- :return: list of compliant move line ids
-
- """
- if context is None:
- context = {}
- active_ids = context.get('active_ids')
- selected_line_ids = []
- inv_model = self.pool['account.invoice']
- move_line_model = self.pool['account.move.line']
- if not active_ids:
- return False
- # raise ValueError('No active_ids passed in context')
- for invoice in inv_model.browse(cr, uid, active_ids, context=context):
- if invoice.type in ('in_invoice', 'in_refund', 'out_refund'):
- raise orm.except_orm(
- _('User error'),
- _('Please use wizard on cutomer invoices')
- )
-
- domain = [('account_id', '=', invoice.account_id.id),
- ('move_id', '=', invoice.move_id.id),
- ('reconcile_id', '=', False)]
- move_ids = move_line_model.search(cr, uid, domain, context=context)
- selected_line_ids.extend(move_ids)
- return selected_line_ids
-
- _defaults = {'move_line_ids': _get_default_lines}
-
- def onchange_policy_id(self, cr, uid, ids, new_policy_id, context=None):
- if not new_policy_id:
- return {}
- policy = self.pool['credit.control.policy'].browse(cr, uid,
- new_policy_id,
- context=context)
- return {'value': {'do_nothing': policy.do_nothing}}
-
- def _mark_as_overridden(self, cr, uid, move_lines, context=None):
- """Mark `move_lines` related credit control line as overridden
- This is done by setting manually_overridden fields to True
-
- :param move_lines: move line to mark as overridden
-
- :retun: list of credit line ids that where marked as overridden
-
- """
- credit_model = self.pool['credit.control.line']
- domain = [('move_line_id', 'in', [x.id for x in move_lines])]
- credits_ids = credit_model.search(cr, uid, domain, context=context)
- credit_model.write(cr, uid,
- credits_ids,
- {'manually_overridden': True},
- context)
- return credits_ids
-
- def _set_invoice_policy(self, cr, uid, move_line_ids, policy,
- context=None):
- """Force policy on invoice"""
- invoice_model = self.pool['account.invoice']
- invoice_ids = set([x.invoice.id for x in move_line_ids if x.invoice])
- invoice_model.write(cr, uid, list(invoice_ids),
- {'credit_policy_id': policy.id},
- context=context)
-
- def _check_accounts_policies(self, cr, uid, lines, policy, context=None):
- policy_obj = self.pool['credit.control.policy']
- for line in lines:
- policy_obj.check_policy_against_account(
- cr, uid,
- line.account_id.id,
- policy.id,
- context=context
- )
- return True
-
- def set_new_policy(self, cr, uid, wizard_id, context=None):
- """Set new policy on an invoice.
-
- This is done by creating a new credit control line
- related to the move line and the policy setted in
- the wizard form
-
- :return: ir.actions.act_windows dict
-
- """
- assert len(wizard_id) == 1, "Only one id expected"
- wizard_id = wizard_id[0]
-
- credit_line_model = self.pool['credit.control.line']
- ir_model = self.pool['ir.model.data']
- ui_act_model = self.pool['ir.actions.act_window']
- wizard = self.browse(cr, uid, wizard_id, context=context)
- controlling_date = fields.date.today()
- self._check_accounts_policies(
- cr,
- uid,
- wizard.move_line_ids,
- wizard.new_policy_id)
- self._mark_as_overridden(
- cr,
- uid,
- wizard.move_line_ids,
- context=context
- )
- # As disscused with business expert
- # draft lines should be passed to ignored
- # if same level as the new one
- # As it is a manual action
- # We also ignore rounding tolerance
- generated_ids = None
- generated_ids = credit_line_model.create_or_update_from_mv_lines(
- cr, uid, [],
- [x.id for x in wizard.move_line_ids],
- wizard.new_policy_level_id.id,
- controlling_date,
- check_tolerance=False,
- context=None
- )
- self._set_invoice_policy(cr, uid,
- wizard.move_line_ids,
- wizard.new_policy_id,
- context=context)
- if not generated_ids:
- return {}
- view_id = ir_model.get_object_reference(cr, uid,
- "account_credit_control",
- "credit_control_line_action")
- assert view_id, 'No view found'
- action = ui_act_model.read(cr, uid, view_id[1], context=context)
- action['domain'] = [('id', 'in', generated_ids)]
- return action
diff --git a/__unported__/account_credit_control/wizard/credit_control_printer.py b/__unported__/account_credit_control/wizard/credit_control_printer.py
deleted file mode 100644
index 7eb900611..000000000
--- a/__unported__/account_credit_control/wizard/credit_control_printer.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see
.
-#
-##############################################################################
-import base64
-
-from openerp.osv import orm, fields
-from openerp.tools.translate import _
-
-
-class CreditControlPrinter(orm.TransientModel):
- """Print lines"""
-
- _name = "credit.control.printer"
- _rec_name = 'id'
- _description = 'Mass printer'
-
- def _get_line_ids(self, cr, uid, context=None):
- if context is None:
- context = {}
- res = False
- if context.get('active_model') != 'credit.control.line':
- return res
- res = context.get('active_ids', False)
- return res
-
- _columns = {
- 'mark_as_sent': fields.boolean(
- 'Mark letter lines as sent',
- help="Only letter lines will be marked."
- ),
- 'report_file': fields.binary('Generated Report', readonly=True),
- 'report_name': fields.char('Report name'),
- 'state': fields.char('state', size=32),
- 'line_ids': fields.many2many(
- 'credit.control.line',
- string='Credit Control Lines'),
- }
-
- _defaults = {
- 'mark_as_sent': True,
- 'line_ids': _get_line_ids,
- }
-
- def _filter_line_ids(self, cr, uid, active_ids, context=None):
- """filter lines to use in the wizard"""
- line_obj = self.pool.get('credit.control.line')
- domain = [('state', '=', 'to_be_sent'),
- ('id', 'in', active_ids),
- ('channel', '=', 'letter')]
- return line_obj.search(cr, uid, domain, context=context)
-
- def _credit_line_predicate(self, cr, uid, line_record, context=None):
- return True
-
- def _get_line_ids(self, cr, uid, lines, predicate, context=None):
- return [l.id for l in lines if predicate(cr, uid, l, context)]
-
- def print_lines(self, cr, uid, wiz_id, context=None):
- assert not (isinstance(wiz_id, list) and len(wiz_id) > 1), \
- "wiz_id: only one id expected"
- comm_obj = self.pool.get('credit.control.communication')
- if isinstance(wiz_id, list):
- wiz_id = wiz_id[0]
- form = self.browse(cr, uid, wiz_id, context)
-
- if not form.line_ids and not form.print_all:
- raise orm.except_orm(_('Error'),
- _('No credit control lines selected.'))
-
- line_ids = self._get_line_ids(cr,
- uid,
- form.line_ids,
- self._credit_line_predicate,
- context=context)
-
- comms = comm_obj._generate_comm_from_credit_line_ids(cr, uid, line_ids,
- context=context)
- report_file = comm_obj._generate_report(cr, uid, comms,
- context=context)
-
- form.write({'report_file': base64.b64encode(report_file),
- 'report_name': ('credit_control_esr_bvr_%s.pdf' %
- fields.datetime.now()),
- 'state': 'done'})
-
- if form.mark_as_sent:
- comm_obj._mark_credit_line_as_sent(cr, uid, comms, context=context)
-
- return {'type': 'ir.actions.act_window',
- 'res_model': 'credit.control.printer',
- 'view_mode': 'form',
- 'view_type': 'form',
- 'res_id': form.id,
- 'views': [(False, 'form')],
- 'target': 'new',
- }
diff --git a/account_credit_control/README.rst b/account_credit_control/README.rst
new file mode 100644
index 000000000..4294fdb56
--- /dev/null
+++ b/account_credit_control/README.rst
@@ -0,0 +1,29 @@
+Credit Control
+==============
+
+Configuration
+-------------
+
+Configure the policies and policy levels in ``Accounting > Configuration >
+Credit Control > Credit Policies``.
+You can define as many policy levels as you need.
+
+Configure a tolerance for the Credit control and a default policy
+applied on all partners in each company, under the Accounting tab.
+
+You are able to specify a particular policy for one partner or one invoice.
+
+Usage
+-----
+
+Menu entries are located in ``Accounting > Periodical Processing > Credit
+Control``.
+
+Create a new "run" in the ``Credit Control Run`` menu with the controlling date.
+Then, use the ``Compute credit lines`` button. All the credit control lines will
+be generated. You can find them in the ``Credit Control Lines`` menu.
+
+On each generated line, you have many choices:
+ * Send a email
+ * Print a letter
+ * Change the state (so you can ignore or reopen lines)
diff --git a/__unported__/account_credit_control/__init__.py b/account_credit_control/__init__.py
similarity index 95%
rename from __unported__/account_credit_control/__init__.py
rename to account_credit_control/__init__.py
index 27a4fabc2..531c9f6d3 100644
--- a/__unported__/account_credit_control/__init__.py
+++ b/account_credit_control/__init__.py
@@ -2,7 +2,7 @@
##############################################################################
#
# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
+# Copyright 2012-2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -26,5 +26,4 @@ from . import partner
from . import policy
from . import company
from . import wizard
-from . import report
from . import invoice
diff --git a/__unported__/account_credit_control/__openerp__.py b/account_credit_control/__openerp__.py
similarity index 59%
rename from __unported__/account_credit_control/__openerp__.py
rename to account_credit_control/__openerp__.py
index afae1a61a..7239177b9 100644
--- a/__unported__/account_credit_control/__openerp__.py
+++ b/account_credit_control/__openerp__.py
@@ -2,7 +2,7 @@
##############################################################################
#
# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
+# Copyright 2012-2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -24,44 +24,13 @@
'maintainer': 'Camptocamp',
'category': 'Finance',
'complexity': "normal",
- 'depends': ['base', 'account',
- 'email_template', 'report_webkit'],
- 'description': """
-Credit Control
-==============
-
-Configuration
--------------
-
-Configure the policies and policy levels in ``Accounting > Configuration >
-Credit Control > Credit Policies``.
-You can define as many policy levels as you need.
-
-Configure a tolerance for the Credit control and a default policy
-applied on all partners in each company, under the Accounting tab.
-
-You are able to specify a particular policy for one partner or one invoice.
-
-Usage
------
-
-Menu entries are located in ``Accounting > Periodical Processing > Credit
-Control``.
-
-Create a new "run" in the ``Credit Control Run`` menu
-with the controlling date.
-
-Then, use the ``Compute credit lines`` button.
-All the credit control lines will be generated.
-You can find them in the ``Credit Control Lines`` menu.
-
-On each generated line, you have many choices:
- * Send a email
- * Print a letter
- * Change the state (so you can ignore or reopen lines)
- """,
+ 'depends': ['base',
+ 'account',
+ 'email_template',
+ ],
'website': 'http://www.camptocamp.com',
'data': ["report/report.xml",
+ "report/report_credit_control_summary.xml",
"data.xml",
"line_view.xml",
"account_view.xml",
@@ -74,9 +43,9 @@ On each generated line, you have many choices:
"wizard/credit_control_printer_view.xml",
"wizard/credit_control_policy_changer_view.xml",
"security/ir.model.access.csv"],
- 'demo_xml': ["credit_control_demo.xml"],
+ 'demo': ["credit_control_demo.xml"],
'tests': [],
- 'installable': False,
+ 'installable': True,
'license': 'AGPL-3',
'application': True
}
diff --git a/__unported__/account_credit_control/report/credit_control_summary.py b/account_credit_control/account.py
similarity index 59%
rename from __unported__/account_credit_control/report/credit_control_summary.py
rename to account_credit_control/account.py
index ffbc65116..de4758c5f 100644
--- a/__unported__/account_credit_control/report/credit_control_summary.py
+++ b/account_credit_control/account.py
@@ -2,7 +2,7 @@
##############################################################################
#
# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
+# Copyright 2012-2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -18,24 +18,15 @@
# along with this program. If not, see
.
#
##############################################################################
-import time
-
-from openerp.report import report_sxw
+from openerp import models, fields
-class CreditSummaryReport(report_sxw.rml_parse):
- def __init__(self, cr, uid, name, context):
- super(CreditSummaryReport, self).__init__(cr, uid, name,
- context=context)
- self.localcontext.update({
- 'time': time,
- 'cr': cr,
- 'uid': uid,
- })
+class AccountAccount(models.Model):
+ """ Add a link to a credit control policy on account.account """
-report_sxw.report_sxw(
- 'report.credit_control_summary',
- 'credit.control.communication',
- 'addons/account_credit_control/report/credit_control_summary.html.mako',
- parser=CreditSummaryReport
-)
+ _inherit = "account.account"
+
+ credit_control_line_ids = fields.One2many('credit.control.line',
+ 'account_id',
+ string='Credit Lines',
+ readonly=True)
diff --git a/__unported__/account_credit_control/account_view.xml b/account_credit_control/account_view.xml
similarity index 100%
rename from __unported__/account_credit_control/account_view.xml
rename to account_credit_control/account_view.xml
diff --git a/__unported__/account_credit_control/company.py b/account_credit_control/company.py
similarity index 53%
rename from __unported__/account_credit_control/company.py
rename to account_credit_control/company.py
index 790fc05f1..8deb708fa 100644
--- a/__unported__/account_credit_control/company.py
+++ b/account_credit_control/company.py
@@ -2,7 +2,7 @@
##############################################################################
#
# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
+# Copyright 2012-2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -18,24 +18,20 @@
# along with this program. If not, see
.
#
##############################################################################
-from openerp.osv import orm, fields
+from openerp import models, fields
-class ResCompany(orm.Model):
- """Add credit control parameters"""
+class ResCompany(models.Model):
+ """ Add credit control parameters """
_inherit = 'res.company'
- _columns = {
- 'credit_control_tolerance': fields.float('Credit Control Tolerance'),
- # This is not a property on the partner because we cannot search
- # on fields.property (subclass fields.function).
- 'credit_policy_id': fields.many2one(
- 'credit.control.policy',
- 'Credit Control Policy',
- help=("The Credit Control Policy used on partners"
- " by default. This setting can be overridden"
- " on partners or invoices.")
- ),
- }
-
- _defaults = {"credit_control_tolerance": 0.1}
+ credit_control_tolerance = fields.Float(string='Credit Control Tolerance',
+ default=0.1)
+ # This is not a property on the partner because we cannot search
+ # on fields.property (subclass fields.function).
+ credit_policy_id = fields.Many2one('credit.control.policy',
+ string='Credit Control Policy',
+ help="The Credit Control Policy used "
+ "on partners by default. "
+ "This setting can be overridden"
+ " on partners or invoices.")
diff --git a/__unported__/account_credit_control/company_view.xml b/account_credit_control/company_view.xml
similarity index 100%
rename from __unported__/account_credit_control/company_view.xml
rename to account_credit_control/company_view.xml
diff --git a/__unported__/account_credit_control/credit_control_demo.xml b/account_credit_control/credit_control_demo.xml
similarity index 100%
rename from __unported__/account_credit_control/credit_control_demo.xml
rename to account_credit_control/credit_control_demo.xml
diff --git a/__unported__/account_credit_control/data.xml b/account_credit_control/data.xml
similarity index 93%
rename from __unported__/account_credit_control/data.xml
rename to account_credit_control/data.xml
index 09fc3cced..c629232d4 100644
--- a/__unported__/account_credit_control/data.xml
+++ b/account_credit_control/data.xml
@@ -9,9 +9,9 @@
${object.get_contact_address().lang or 'en_US'}
-
+
${object.current_policy_level.custom_mail_text}
@@ -63,7 +63,7 @@ Thank you in advance for your anticipated cooperation in this matter.
Best regards
-
Our records indicate that we have not received the payment of the above mentioned invoice (copy attached for your convenience).
+ Our records indicate that we have not received the payment of the invoices mentioned in the attached document.
If it has already been sent, please disregard this notice. If not, please proceed with payment within 10 days.
@@ -89,7 +89,7 @@ Thank you in advance for your anticipated cooperation in this matter.
Best regards
- Our records indicate that we have not yet received the payment of the above mentioned invoice (copy attached for your convenience) despite our first reminder.
+ Our records indicate that we have not yet received the payment of the invoices mentioned in the attached document despite our first reminder.
If it has already been sent, please disregard this notice. If not, please proceed with payment within 5 days.
Thank you in advance for your anticipated cooperation in this matter.
@@ -120,7 +120,7 @@ Best regards
Best regards
-Our records indicate that we still have not received the payment of the above mentioned invoice (copy attached) despite our two reminders.
+Our records indicate that we still have not received the payment of the invoices mentioned in the attached document despite our two reminders.
If payment have already been sent, please disregard this notice. If not, please proceed with payment.
If your payment has not been received in the next 5 days, your file will be transfered to our debt collection agency.
@@ -155,7 +155,7 @@ Best regards
Best regards
- Our records indicate that we have not received the payment of the above mentioned invoice (copy attached for your convenience).
+ Our records indicate that we have not received the payment of the invoices mentioned in the attached document.
If it has already been sent, please disregard this notice. If not, please proceed with payment within 10 days.
Thank you in advance for your anticipated cooperation in this matter.
@@ -186,7 +186,7 @@ Best regards
Best regards
- Our records indicate that we still have not received the payment of the above mentioned invoice (copy attached) despite our reminder.
+ Our records indicate that we still have not received the payment of the invoices mentioned in the attached document despite our reminder.
If payment have already been sent, please disregard this notice. If not, please proceed with payment.
If your payment has not been received in the next 5 days, your file will be transfered to our debt
diff --git a/account_credit_control/i18n/account_credit_control.pot b/account_credit_control/i18n/account_credit_control.pot
new file mode 100644
index 000000000..9e221fb25
--- /dev/null
+++ b/account_credit_control/i18n/account_credit_control.pot
@@ -0,0 +1,1126 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_credit_control
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-10-30 14:59+0000\n"
+"PO-Revision-Date: 2014-10-30 14:59+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_3
+msgid "\n"
+" Our records indicate that we still have not received the payment of the above mentioned invoice despite our two reminders.\n"
+" If payment have already been sent, please disregard this notice. If not, please proceed with payment.\n"
+" If your payment has not been received in the next 5 days, your file will be transfered to our debt collection agency.\n"
+"\n"
+" Should you need us to arrange a payment plan for you, please advise.\n"
+" A customer account statement is enclosed for you convenience.\n"
+"\n"
+" Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+" Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:email.template,body_html:account_credit_control.email_template_credit_control_base
+msgid "\n"
+" Dear ${object.contact_address.name or ''}\n"
+"
\n"
+"
\n"
+" ${object.current_policy_level.custom_mail_text}\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.3_time_3
+msgid "10 days last reminder"
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.3_time_1
+msgid "10 days net"
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.2_time_1
+#: model:credit.control.policy.level,name:account_credit_control.3_time_2
+msgid "30 days end of month"
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.2_time_2
+msgid "60 days last reminder"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_line
+msgid "A credit control line"
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:87
+#, python-format
+msgid "A credit control line more recent than %s exists at %s"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_policy_level
+msgid "A credit control policy level"
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:154
+#, python-format
+msgid "A credit control run is already running in background, please try later."
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:80
+#, python-format
+msgid "A run has already been executed more recently than %s"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.line,account_id:0
+#: model:ir.model,name:account_credit_control.model_account_account
+msgid "Account"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: field:credit.control.policy,account_ids:0
+msgid "Accounts"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy,active:0
+msgid "Active"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,help:account_credit_control.action_wizard_credit_policy_changer
+msgid "Allows to manually change credit level"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "An error has occured during the sending of the email."
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/policy.py:308
+#, python-format
+msgid "Can not get function for computation mode: %s is not implemented"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Cancel"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard_menu_action
+msgid "Change Lines' State"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.action_wizard_credit_policy_changer
+#: model:ir.actions.act_window,name:account_credit_control.action_wizard_credit_policy_changer_menu_action
+msgid "Change current credit policy"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "Change the overdue level of current invoice"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+msgid "Change the state of the selected lines"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_marker_wizard
+msgid "Change the state of the selected lines."
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.line,channel:0
+#: field:credit.control.policy.level,channel:0
+msgid "Channel"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,company_id:0
+#: field:credit.control.line,company_id:0
+#: field:credit.control.policy,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+msgid "Compute Credit Control Lines"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,computation_mode:0
+msgid "Compute Mode"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,contact_address:0
+msgid "Contact Address"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_form
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: view:credit.control.line:account_credit_control.credit_control_line_tree
+msgid "Control Credit Lines"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.run,date:0
+msgid "Controlling Date"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,date:0
+msgid "Controlling date"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,create_uid:0
+#: field:credit.control.emailer,create_uid:0
+#: field:credit.control.line,create_uid:0
+#: field:credit.control.marker,create_uid:0
+#: field:credit.control.policy,create_uid:0
+#: field:credit.control.policy.changer,create_uid:0
+#: field:credit.control.policy.level,create_uid:0
+#: field:credit.control.printer,create_uid:0
+#: field:credit.control.run,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,create_date:0
+#: field:credit.control.emailer,create_date:0
+#: field:credit.control.line,create_date:0
+#: field:credit.control.marker,create_date:0
+#: field:credit.control.policy,create_date:0
+#: field:credit.control.policy.changer,create_date:0
+#: field:credit.control.policy.level,create_date:0
+#: field:credit.control.printer,create_date:0
+#: field:credit.control.run,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: account_credit_control
+#: view:account.invoice:account_credit_control.invoice_followup_form_view
+#: model:ir.ui.menu,name:account_credit_control.base_credit_control_configuration_menu
+#: model:ir.ui.menu,name:account_credit_control.base_credit_control_menu
+msgid "Credit Control"
+msgstr ""
+
+#. module: account_credit_control
+#: model:res.groups,name:account_credit_control.group_account_credit_control_info
+msgid "Credit Control Info"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.emailer,line_ids:0
+#: field:credit.control.marker,line_ids:0
+#: field:credit.control.printer,line_ids:0
+#: model:ir.actions.act_window,name:account_credit_control.credit_control_line_action
+#: model:ir.ui.menu,name:account_credit_control.credit_control_line_action_menu
+#: field:res.partner,credit_control_line_ids:0
+msgid "Credit Control Lines"
+msgstr ""
+
+#. module: account_credit_control
+#: model:res.groups,name:account_credit_control.group_account_credit_control_manager
+msgid "Credit Control Manager"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.credit_policy_configuration_action
+#: model:ir.ui.menu,name:account_credit_control.credit_policy_configuration_action_menu
+msgid "Credit Control Policies"
+msgstr ""
+
+#. module: account_credit_control
+#: field:account.invoice,credit_policy_id:0
+#: field:res.company,credit_policy_id:0
+#: field:res.partner,credit_policy_id:0
+msgid "Credit Control Policy"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.credit_control_run
+#: model:ir.ui.menu,name:account_credit_control.credit_control_run_menu
+msgid "Credit Control Run"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.report.xml,name:account_credit_control.credit_control_summary
+msgid "Credit Control Summary"
+msgstr ""
+
+#. module: account_credit_control
+#: field:res.company,credit_control_tolerance:0
+msgid "Credit Control Tolerance"
+msgstr ""
+
+#. module: account_credit_control
+#: model:res.groups,name:account_credit_control.group_account_credit_control_user
+msgid "Credit Control User"
+msgstr ""
+
+#. module: account_credit_control
+#: model:email.template,subject:account_credit_control.email_template_credit_control_base
+msgid "Credit Control: (${object.current_policy_level.name or 'n/a'})"
+msgstr ""
+
+#. module: account_credit_control
+#: field:account.account,credit_control_line_ids:0
+#: field:account.invoice,credit_control_line_ids:0
+#: field:credit.control.communication,credit_control_line_ids:0
+#: model:ir.actions.act_window,name:account_credit_control.act_account_credit_relation_relation
+#: model:ir.actions.act_window,name:account_credit_control.act_partner_credit_relation_relation
+msgid "Credit Lines"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_run
+msgid "Credit control line generator"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: view:credit.control.policy:account_credit_control.credit_control_policy_tree
+msgid "Credit control policy"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+msgid "Credit control policy Level"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy.level:account_credit_control.credit_control_policy_level_tree
+msgid "Credit control policy level"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+#: view:credit.control.run:account_credit_control.credit_control_run_tree
+msgid "Credit control run"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Credit policy"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Credit policy level"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,currency_id:0
+msgid "Currency"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,custom_mail_text:0
+msgid "Custom Mail Message"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,custom_text:0
+msgid "Custom Message"
+msgstr ""
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Date due"
+msgstr ""
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Dear,"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_policy
+msgid "Define a reminder policy"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,delay_days:0
+msgid "Delay (in days)"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: view:credit.control.policy.level:account_credit_control.credit_mangement_policy_level_form
+msgid "Delay Setting"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy,do_nothing:0
+msgid "Do nothing"
+msgstr ""
+
+#. module: account_credit_control
+#: selection:credit.control.line,state:0
+#: selection:credit.control.marker,name:0
+#: selection:credit.control.run,state:0
+msgid "Done"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: selection:credit.control.line,state:0
+#: selection:credit.control.run,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Draft lines have to be triaged."
+msgstr ""
+
+#. module: account_credit_control
+#: help:credit.control.line,state:0
+msgid "Draft lines need to be triaged.\n"
+"Ignored lines are lines for which we do not want to send something.\n"
+"Draft and ignored lines will be generated again on the next run."
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,amount_due:0
+msgid "Due Amount Tax incl."
+msgstr ""
+
+#. module: account_credit_control
+#: selection:credit.control.policy.level,computation_mode:0
+msgid "Due Date"
+msgstr ""
+
+#. module: account_credit_control
+#: selection:credit.control.policy.level,computation_mode:0
+msgid "Due Date, End Of Month"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,balance_due:0
+msgid "Due balance"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,date_due:0
+msgid "Due date"
+msgstr ""
+
+#. module: account_credit_control
+#: selection:credit.control.line,channel:0
+#: selection:credit.control.policy.level,channel:0
+msgid "Email"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,email_template_id:0
+msgid "Email Template"
+msgstr ""
+
+#. module: account_credit_control
+#: selection:credit.control.line,state:0
+msgid "Emailing Error"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,date_entry:0
+msgid "Entry date"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: selection:credit.control.line,state:0
+msgid "Error"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Filters"
+msgstr ""
+
+#. module: account_credit_control
+#: help:credit.control.policy,do_nothing:0
+msgid "For policies which should not generate lines or are obsolete"
+msgstr ""
+
+#. module: account_credit_control
+#: view:account.invoice:account_credit_control.invoice_followup_form_view
+msgid "Force credit control policy:"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Group By..."
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,id:0
+#: field:credit.control.emailer,id:0
+#: field:credit.control.line,id:0
+#: field:credit.control.marker,id:0
+#: field:credit.control.policy,id:0
+#: field:credit.control.policy.changer,id:0
+#: field:credit.control.policy.level,id:0
+#: field:credit.control.printer,id:0
+#: field:credit.control.run,id:0
+msgid "ID"
+msgstr ""
+
+#. module: account_credit_control
+#: help:credit.control.run,manual_ids:0
+msgid "If a credit control line has been generatedon a policy and the policy has been changed in the meantime, it has to be handled manually"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: selection:credit.control.line,state:0
+#: selection:credit.control.marker,name:0
+msgid "Ignored"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.line,invoice_id:0
+#: model:ir.model,name:account_credit_control.model_account_invoice
+msgid "Invoice"
+msgstr ""
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Invoice date"
+msgstr ""
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Invoice number"
+msgstr ""
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Invoiced amount"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,write_uid:0
+#: field:credit.control.emailer,write_uid:0
+#: field:credit.control.line,write_uid:0
+#: field:credit.control.marker,write_uid:0
+#: field:credit.control.policy,write_uid:0
+#: field:credit.control.policy.changer,write_uid:0
+#: field:credit.control.policy.level,write_uid:0
+#: field:credit.control.printer,write_uid:0
+#: field:credit.control.run,write_uid:0
+msgid "Last Updated by"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,write_date:0
+#: field:credit.control.emailer,write_date:0
+#: field:credit.control.line,write_date:0
+#: field:credit.control.marker,write_date:0
+#: field:credit.control.policy,write_date:0
+#: field:credit.control.policy.changer,write_date:0
+#: field:credit.control.policy.level,write_date:0
+#: field:credit.control.printer,write_date:0
+#: field:credit.control.run,write_date:0
+msgid "Last Updated on"
+msgstr ""
+
+#. module: account_credit_control
+#: selection:credit.control.line,channel:0
+#: selection:credit.control.policy.level,channel:0
+msgid "Letter"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,current_policy_level:0
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.policy.level,level:0
+msgid "Level"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Lines"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Lines already sent."
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+msgid "Lines marker"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Lines report"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.run,manual_ids:0
+msgid "Lines to handle manually"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Lines which have been ignored from previous runs."
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: view:credit.control.policy.level:account_credit_control.credit_mangement_policy_level_form
+msgid "Mail and reporting"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+msgid "Mailer"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Manual change"
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.no_follow_1
+#: model:credit.control.policy.level,custom_text:account_credit_control.no_follow_1
+msgid "Manual no follow"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,manually_overridden:0
+msgid "Manually overridden"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.marker,name:0
+msgid "Mark as"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.printer,mark_as_sent:0
+msgid "Mark letter lines as sent"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_emailer
+msgid "Mass credit line emailer"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_marker
+msgid "Mass marker"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_printer
+msgid "Mass printer"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "More..."
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,move_line_id:0
+msgid "Move line"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.changer,move_line_ids:0
+msgid "Move line to change"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+msgid "Move lines To be treated manually"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "Move lines to affect"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy,name:0
+#: field:credit.control.policy.level,name:0
+msgid "Name"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.changer,new_policy_id:0
+msgid "New Policy to Apply"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.changer,new_policy_level_id:0
+msgid "New level to apply"
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/wizard/credit_control_emailer.py:62
+#: code:addons/account_credit_control/wizard/credit_control_marker.py:74
+#: code:addons/account_credit_control/wizard/credit_control_printer.py:60
+#, python-format
+msgid "No credit control lines selected."
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.no_follow_1
+msgid "No follow"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy.changer,do_nothing:0
+msgid "No follow policy"
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/wizard/credit_control_marker.py:78
+#, python-format
+msgid "No lines will be changed. All the selected lines are already done."
+msgstr ""
+
+#. module: account_credit_control
+#: help:credit.control.printer,mark_as_sent:0
+msgid "Only letter lines will be marked."
+msgstr ""
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Open amount"
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_1
+msgid "Our records indicate that we have not received the payment of the above mentioned invoice.\n"
+" If it has already been sent, please disregard this notice. If not, please proceed with payment within 10 days.\n"
+"\n"
+" Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+" Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_1
+msgid "Our records indicate that we have not received the payment of the above mentioned invoice.\n"
+"If it has already been sent, please disregard this notice. If not, please proceed with payment within 10 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_1
+msgid "Our records indicate that we have not received the payment of the invoices mentioned in the attached document.\n"
+"\n"
+"If it has already been sent, please disregard this notice. If not, please proceed with payment within 10 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_1
+msgid "Our records indicate that we have not received the payment of the invoices mentioned in the attached document.\n"
+"If it has already been sent, please disregard this notice. If not, please proceed with payment within 10 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_2
+msgid "Our records indicate that we have not yet received the payment of the above mentioned invoice despite our first reminder.\n"
+" If it has already been sent, please disregard this notice. If not, please proceed with payment within 5 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_2
+msgid "Our records indicate that we have not yet received the payment of the invoices mentioned in the attached document despite our first reminder.\n"
+" If it has already been sent, please disregard this notice. If not, please proceed with payment within 5 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_2
+msgid "Our records indicate that we still have not received the payment of the above mentioned invoice despite our reminder.\n"
+"\n"
+" If payment have already been sent, please disregard this notice. If not, please proceed with payment.\n"
+" If your payment has not been received in the next 5 days, your file will be transfered to our debt\n"
+" collection agency.\n"
+"\n"
+" Should you need us to arrange a payment plan for you, please advise.\n"
+" A customer account statement is enclosed for you convenience.\n"
+"\n"
+" Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+" Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_2
+msgid "Our records indicate that we still have not received the payment of the invoices mentioned in the attached document despite our reminder.\n"
+"\n"
+"If payment have already been sent, please disregard this notice. If not, please proceed with payment.\n"
+"If your payment has not been received in the next 5 days, your file will be transfered to our debt\n"
+" collection agency.\n"
+"\n"
+" Should you need us to arrange a payment plan for you, please advise.\n"
+" A customer account statement is enclosed for you convenience.\n"
+"\n"
+" Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+" Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_3
+msgid "Our records indicate that we still have not received the payment of the invoices mentioned in the attached document despite our two reminders.\n"
+" If payment have already been sent, please disregard this notice. If not, please proceed with payment.\n"
+" If your payment has not been received in the next 5 days, your file will be transfered to our debt collection agency.\n"
+"\n"
+" Should you need us to arrange a payment plan for you, please advise.\n"
+" A customer account statement is enclosed for you convenience.\n"
+"\n"
+" Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+" Best regards\n"
+" "
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_mail_mail
+msgid "Outgoing Mails"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,policy_level_id:0
+msgid "Overdue Level"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,partner_id:0
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.line,partner_id:0
+#: model:ir.model,name:account_credit_control.model_res_partner
+msgid "Partner"
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:103
+#, python-format
+msgid "Please select a policy"
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/wizard/credit_control_policy_changer.py:61
+#, python-format
+msgid "Please use wizard on customer invoices"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+#: field:credit.control.run,policy_ids:0
+msgid "Policies"
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:126
+#, python-format
+msgid "Policy \"%s\" has generated %d Credit Control Lines.\n"
+""
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:130
+#, python-format
+msgid "Policy \"%s\" has not generated any Credit Control Lines.\n"
+""
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.policy,level_ids:0
+msgid "Policy Levels"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: view:credit.control.policy.level:account_credit_control.credit_mangement_policy_level_form
+msgid "Policy level"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+msgid "Policy levels"
+msgstr ""
+
+#. module: account_credit_control
+#: selection:credit.control.policy.level,computation_mode:0
+msgid "Previous Reminder"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Print"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard_menu_action
+msgid "Print Lines"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_printer_wizard
+msgid "Print selected lines"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Print the selected lines"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: selection:credit.control.line,state:0
+#: selection:credit.control.marker,name:0
+msgid "Ready To Send"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,policy_id:0
+#: field:credit.control.policy.level,policy_id:0
+msgid "Related Policy"
+msgstr ""
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Reminder"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.run,report:0
+msgid "Report"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+msgid "Report and Errors"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Run date"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard_menu_action
+msgid "Send By Email"
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_emailer_wizard
+msgid "Send an email for the selected lines."
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+msgid "Send emails for the selected lines"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+msgid "Send the emails"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Sent"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,mail_message_id:0
+msgid "Sent Email"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,date_sent:0
+msgid "Sent date"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "Set current credit level"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "Set new policy"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,state:0
+#: field:credit.control.run,state:0
+msgid "State"
+msgstr ""
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Summary"
+msgstr ""
+
+#. module: account_credit_control
+#: help:account.invoice,credit_policy_id:0
+msgid "The Credit Control Policy used for this invoice. If nothing is defined, it will use the account setting or the partner setting."
+msgstr ""
+
+#. module: account_credit_control
+#: help:res.partner,credit_policy_id:0
+msgid "The Credit Control Policy used for this partner. This setting can be forced on the invoice. If nothing is defined, it will use the company setting."
+msgstr ""
+
+#. module: account_credit_control
+#: help:res.company,credit_policy_id:0
+msgid "The Credit Control Policy used on partners by default. This setting can be overridden on partners or invoices."
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "The line was deprecated by a manual change of policy on invoice."
+msgstr ""
+
+#. module: account_credit_control
+#: help:credit.control.line,currency_id:0
+msgid "The optional other currency if it is a multi-currency entry."
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/policy.py:258
+#, python-format
+msgid "The smallest level can not be of type Previous Reminder"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "These lines are ready to send by email or by letter using the Actions."
+msgstr ""
+
+#. module: account_credit_control
+#: help:credit.control.policy,account_ids:0
+msgid "This policy will be active only for the selected accounts"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "This wizard will let you set the overdue policy and level for selected invoices"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,user_id:0
+msgid "User"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+msgid "Warning: you will maybe not be able to revert this operation."
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/line.py:224
+#, python-format
+msgid "You are not allowed to delete a credit control line that is not in draft state."
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/policy.py:203
+#, python-format
+msgid "You can only use a policy set on account %s.\n"
+"Please choose one of the following policies:\n"
+" %s"
+msgstr ""
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/invoice.py:57
+#, python-format
+msgid "You cannot cancel this invoice.\n"
+"A payment reminder has already been sent to the customer.\n"
+"You must create a credit note and issue a new invoice."
+msgstr ""
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_communication
+msgid "credit control communication"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.line,level:0
+msgid "credit.control.policy.level"
+msgstr ""
+
diff --git a/__unported__/account_credit_control/i18n/fr.po b/account_credit_control/i18n/fr.po
similarity index 56%
rename from __unported__/account_credit_control/i18n/fr.po
rename to account_credit_control/i18n/fr.po
index 6f0e83980..9858a6c0a 100644
--- a/__unported__/account_credit_control/i18n/fr.po
+++ b/account_credit_control/i18n/fr.po
@@ -1,178 +1,20 @@
-#. module: account_credit_control
-#: field:credit.control.policy.level,custom_text:0
-msgid "Custom Message"
-msgstr "Message personalisable"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "More..."
-msgstr "Plus..."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Group By..."
-msgstr "Grouper Par..."
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.credit_control_run
-#: model:ir.ui.menu,name:account_credit_control.credit_control_run_menu
-msgid "Credit Control Run"
-msgstr "Lancer le calcul des rappels"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,computation_mode:0
-msgid "Compute Mode"
-msgstr "Mode de calcul"
-
-#. module: account_credit_control
-#: field:credit.control.line,date_entry:0
-msgid "Entry date"
-msgstr "Date de l'écriture"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard_menu_action
-msgid "Send By Email"
-msgstr "Envoyer par email"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_line
-msgid "A credit control line"
-msgstr "Ligne de relance"
-
-#. module: account_credit_control
-#: field:credit.control.line,move_line_id:0
-msgid "Move line"
-msgstr "Ecriture financière"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_info
-msgid "Credit Control Info"
-msgstr "Info de rappel"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_emailer
-msgid "Mass credit line emailer"
-msgstr "Publipostage par mail des rappels"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 field:credit.control.line,account_id:0
-#: model:ir.model,name:account_credit_control.model_account_account
-msgid "Account"
-msgstr "Compte"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Due Date"
-msgstr "Date due"
-
-#. module: account_credit_control
-#: field:credit.control.communication,current_policy_level:0
-#: view:credit.control.line:0 field:credit.control.line,level:0
-#: field:credit.control.policy.level,level:0
-msgid "Level"
-msgstr "Niveau"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,delay_days:0
-msgid "Delay (in days)"
-msgstr "Retard (en jours)"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_communication
-msgid "credit control communication"
-msgstr "Lettre de relance"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Send emails for the selected lines"
-msgstr "Envoyer un email depuis les lignes de relances sélectionnées"
-
-#. module: account_credit_control
-#: help:credit.control.policy,account_ids:0
-msgid "This policy will be active only for the selected accounts"
-msgstr "Cette politique de relance sera active seulement pour les comptes sélectionnés"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "These lines are ready to send by email or by letter using the Actions."
-msgstr "Ces lignes sont prêtes à être traitées"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0
-msgid "Ignored"
-msgstr "Ignorée"
-
-#. module: account_credit_control
-#: help:credit.control.printer,mark_as_sent:0
-msgid "Only letter lines will be marked."
-msgstr "Seules les relances par courrier seront traitées."
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_marker
-msgid "Mass marker"
-msgstr "Traiter en masse"
-
-#. module: account_credit_control
-#: field:account.invoice,credit_policy_id:0
-#: field:res.company,credit_policy_id:0 field:res.partner,credit_policy_id:0
-msgid "Credit Control Policy"
-msgstr "Politique de relance"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_3
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_credit_control
+#
msgid ""
-"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our two reminders.\n"
-" If payment have already been sent, please disregard this notice. If "
-"not, please proceed with payment.\n"
-" If your payment has not been received in the next 5 days, your file "
-"will be transfered to our debt collection agency.\n"
-"\n"
-" Should you need us to arrange a payment plan for you, please "
-"advise.\n"
-" A customer account statement is enclosed for you convenience.\n"
-"\n"
-" Thank you in advance for your anticipated cooperation in this "
-"matter.\n"
-"\n"
-" Best regards\n"
-" "
msgstr ""
-"Notre comptabilité nous indique que vous avez encore des factures ouvertes"
-"malgré nos précédents rappels.\n"
-" Si ce courrier a croisé votre paiement veuillez le considérer comme nul et non avenu.\n"
-" Si le payment n'est pas effectué dans les 5 jours votre dossier sera transféré à une société de recouvrement.\n"
-"\n"
-" Si vous désirez un accord de paiement n'hésitez pas à nous contacter "
-"advise.\n"
-" Un décompte est disponible ci-joint.\n"
-"\n"
-" En vous remerciant de votre coopération \n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,date_sent:0
-msgid "Sent date"
-msgstr "Date d'envoi"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 field:credit.control.policy,account_ids:0
-msgid "Accounts"
-msgstr "Comptes"
-
-#. module: account_credit_control
-#: field:credit.control.communication,partner_id:0 view:credit.control.line:0
-#: field:credit.control.line,partner_id:0
-#: model:ir.model,name:account_credit_control.model_res_partner
-msgid "Partner"
-msgstr "Client"
-
-#. module: account_credit_control
-#: view:credit.control.policy.level:0
-msgid "Credit control policy level"
-msgstr "Niveau de relance"
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-10-30 14:59+0000\n"
+"PO-Revision-Date: 2014-10-30 14:59+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
#. module: account_credit_control
#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_3
@@ -195,80 +37,736 @@ msgid ""
" Best regards\n"
" "
msgstr ""
-"Notre comptabilité nous indique que vous avez encore des factures ouvertes"
-"malgré nos précédents rappels.\n"
-" Si ce courrier à croisé votre paiement veuillez le considérer comme nul et non avenu.\n"
-" Si le paiement n'est pas effectué dans les 5 jours votre dossier sera transféré à une société de recouvrement.\n"
+"\n"
+"Notre comptabilité nous indique que vous avez encore des factures "
+"ouvertes malgré nos précédents rappels.\n"
+" Si ce courrier à croisé votre paiement veuillez le considérer comme "
+"nul et non avenu.\n"
+" Si le paiement n'est pas effectué dans les 5 jours votre dossier "
+"sera transféré à une société de recouvrement.\n"
"\n"
" Si vous désirez un accord de payment n'hésitez pas à nous contacter "
"advise.\n"
" Un décompte est disponible ci-joint.\n"
"\n"
-" En vous remerciant de votre coopération "
-"\n"
+" En vous remerciant de votre coopération \n"
" "
#. module: account_credit_control
-#: view:credit.control.marker:0
+#: model:email.template,body_html:account_credit_control.email_template_credit_control_base
+#, fuzzy
+msgid ""
+"\n"
+" Dear ${object.contact_address.name or ''}\n"
+"
\n"
+"
\n"
+" ${object.current_policy_level.custom_mail_text}\n"
+" "
+msgstr ""
+"\n"
+" Cher/Chère ${object.contact_address.name or ''}\n"
+"
\n"
+"
\n"
+" ${object.current_policy_level.custom_mail_text}\n"
+" "
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.3_time_3
+msgid "10 days last reminder"
+msgstr "10 jours depuis la dernière relance"
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.3_time_1
+msgid "10 days net"
+msgstr "10 jours net"
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.2_time_1
+#: model:credit.control.policy.level,name:account_credit_control.3_time_2
+msgid "30 days end of month"
+msgstr "30 jours fin de mois"
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.2_time_2
+msgid "60 days last reminder"
+msgstr "Dernier rappel à 60 jours"
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_line
+msgid "A credit control line"
+msgstr "Ligne de relance"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:87
+#, python-format
+msgid "A credit control line more recent than %s exists at %s"
+msgstr "Une ligne plus récente que %s existe au %s"
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_policy_level
+msgid "A credit control policy level"
+msgstr "Une politique de relance"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:154
+#, python-format
+msgid ""
+"A credit control run is already running in background, please try later."
+msgstr "Un contrôle de relance est déjà en train de tourner en arrière-plan, merci d'essayer à nouveau plus tard."
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:80
+#, python-format
+msgid "A run has already been executed more recently than %s"
+msgstr "Un contrôle a déjà été exécuté plus récemment que le %s "
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.line,account_id:0
+#: model:ir.model,name:account_credit_control.model_account_account
+msgid "Account"
+msgstr "Compte"
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: field:credit.control.policy,account_ids:0
+msgid "Accounts"
+msgstr "Comptes"
+
+#. module: account_credit_control
+#: field:credit.control.policy,active:0
+msgid "Active"
+msgstr "Actif"
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,help:account_credit_control.action_wizard_credit_policy_changer
+msgid "Allows to manually change credit level"
+msgstr "Permet de changer manuellement le niveau de relance"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "An error has occured during the sending of the email."
+msgstr "Erreur lors de la génération des mails."
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/policy.py:308
+#, python-format
+msgid "Can not get function for computation mode: %s is not implemented"
+msgstr ""
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: account_credit_control
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard
#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_marker_wizard_menu_action
msgid "Change Lines' State"
msgstr "Modifier le statut des lignes"
#. module: account_credit_control
-#: field:credit.control.policy.level,policy_id:0
-msgid "Related Policy"
+#: model:ir.actions.act_window,name:account_credit_control.action_wizard_credit_policy_changer
+#: model:ir.actions.act_window,name:account_credit_control.action_wizard_credit_policy_changer_menu_action
+msgid "Change current credit policy"
+msgstr "Changer la politique de relance courante"
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "Change the overdue level of current invoice"
+msgstr "Changer le niveau de relance de la facture courante"
+
+#. module: account_credit_control
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+msgid "Change the state of the selected lines"
+msgstr "Modifier l'état des lignes sélectionnées."
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_marker_wizard
+msgid "Change the state of the selected lines."
+msgstr "Modifier l'état des lignes sélectionnées."
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.line,channel:0
+#: field:credit.control.policy.level,channel:0
+msgid "Channel"
+msgstr "Canal"
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_res_company
+msgid "Companies"
+msgstr "Société"
+
+#. module: account_credit_control
+#: field:credit.control.communication,company_id:0
+#: field:credit.control.line,company_id:0
+#: field:credit.control.policy,company_id:0
+msgid "Company"
+msgstr "Société"
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+msgid "Compute Credit Control Lines"
+msgstr "Calculer les relances"
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,computation_mode:0
+msgid "Compute Mode"
+msgstr "Mode de calcul"
+
+#. module: account_credit_control
+#: field:credit.control.communication,contact_address:0
+msgid "Contact Address"
+msgstr "Adresse de contact"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_form
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: view:credit.control.line:account_credit_control.credit_control_line_tree
+msgid "Control Credit Lines"
+msgstr "Lignes de relance"
+
+#. module: account_credit_control
+#: field:credit.control.run,date:0
+msgid "Controlling Date"
+msgstr "Date de contrôle"
+
+#. module: account_credit_control
+#: field:credit.control.line,date:0
+msgid "Controlling date"
+msgstr "Date de relance"
+
+#. module: account_credit_control
+#: field:credit.control.communication,create_uid:0
+#: field:credit.control.emailer,create_uid:0
+#: field:credit.control.line,create_uid:0
+#: field:credit.control.marker,create_uid:0
+#: field:credit.control.policy,create_uid:0
+#: field:credit.control.policy.changer,create_uid:0
+#: field:credit.control.policy.level,create_uid:0
+#: field:credit.control.printer,create_uid:0
+#: field:credit.control.run,create_uid:0
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: account_credit_control
+#: field:credit.control.communication,create_date:0
+#: field:credit.control.emailer,create_date:0
+#: field:credit.control.line,create_date:0
+#: field:credit.control.marker,create_date:0
+#: field:credit.control.policy,create_date:0
+#: field:credit.control.policy.changer,create_date:0
+#: field:credit.control.policy.level,create_date:0
+#: field:credit.control.printer,create_date:0
+#: field:credit.control.run,create_date:0
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: account_credit_control
+#: view:account.invoice:account_credit_control.invoice_followup_form_view
+#: model:ir.ui.menu,name:account_credit_control.base_credit_control_configuration_menu
+#: model:ir.ui.menu,name:account_credit_control.base_credit_control_menu
+msgid "Credit Control"
+msgstr "Relances Clients"
+
+#. module: account_credit_control
+#: model:res.groups,name:account_credit_control.group_account_credit_control_info
+msgid "Credit Control Info"
+msgstr "Informations de rappel"
+
+#. module: account_credit_control
+#: field:credit.control.emailer,line_ids:0
+#: field:credit.control.marker,line_ids:0
+#: field:credit.control.printer,line_ids:0
+#: model:ir.actions.act_window,name:account_credit_control.credit_control_line_action
+#: model:ir.ui.menu,name:account_credit_control.credit_control_line_action_menu
+#: field:res.partner,credit_control_line_ids:0
+msgid "Credit Control Lines"
+msgstr "Lignes de relance"
+
+#. module: account_credit_control
+#: model:res.groups,name:account_credit_control.group_account_credit_control_manager
+msgid "Credit Control Manager"
+msgstr "Responsable Relance client"
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.credit_policy_configuration_action
+#: model:ir.ui.menu,name:account_credit_control.credit_policy_configuration_action_menu
+msgid "Credit Control Policies"
+msgstr "Politique de relance"
+
+#. module: account_credit_control
+#: field:account.invoice,credit_policy_id:0
+#: field:res.company,credit_policy_id:0 field:res.partner,credit_policy_id:0
+msgid "Credit Control Policy"
+msgstr "Politique de relance"
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.credit_control_run
+#: model:ir.ui.menu,name:account_credit_control.credit_control_run_menu
+msgid "Credit Control Run"
+msgstr "Lancer le calcul des rappels"
+
+#. module: account_credit_control
+#: model:ir.actions.report.xml,name:account_credit_control.credit_control_summary
+msgid "Credit Control Summary"
+msgstr "Résumé des relances"
+
+#. module: account_credit_control
+#: field:res.company,credit_control_tolerance:0
+msgid "Credit Control Tolerance"
+msgstr "Pas de relance inférieure à : "
+
+#. module: account_credit_control
+#: model:res.groups,name:account_credit_control.group_account_credit_control_user
+msgid "Credit Control User"
+msgstr "Utilisateur du module de relance"
+
+#. module: account_credit_control
+#: model:email.template,subject:account_credit_control.email_template_credit_control_base
+msgid "Credit Control: (${object.current_policy_level.name or 'n/a'})"
+msgstr "Rappel: (${object.current_policy_level.name or 'n/a'})"
+
+#. module: account_credit_control
+#: field:account.account,credit_control_line_ids:0
+#: field:account.invoice,credit_control_line_ids:0
+#: field:credit.control.communication,credit_control_line_ids:0
+#: model:ir.actions.act_window,name:account_credit_control.act_account_credit_relation_relation
+#: model:ir.actions.act_window,name:account_credit_control.act_partner_credit_relation_relation
+msgid "Credit Lines"
+msgstr "Lignes de relance"
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_run
+msgid "Credit control line generator"
+msgstr "Générateur de relance"
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: view:credit.control.policy:account_credit_control.credit_control_policy_tree
+msgid "Credit control policy"
msgstr "Niveau de relance"
#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+msgid "Credit control policy Level"
+msgstr "Niveau de relance"
+
+#. module: account_credit_control
+#: view:credit.control.policy.level:account_credit_control.credit_control_policy_level_tree
+msgid "Credit control policy level"
+msgstr "Niveau de relance"
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+#: view:credit.control.run:account_credit_control.credit_control_run_tree
+msgid "Credit control run"
+msgstr "Passe de contrôle de relance"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Credit policy"
+msgstr "Politique de relance"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Credit policy level"
+msgstr "Niveau de relance"
+
+#. module: account_credit_control
+#: field:credit.control.line,currency_id:0
+msgid "Currency"
+msgstr "Devise"
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,custom_mail_text:0
+msgid "Custom Mail Message"
+msgstr "Email personnalisé"
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,custom_text:0
+msgid "Custom Message"
+msgstr "Message personnalisable"
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Date due"
+msgstr "Date d'échéance"
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Dear,"
+msgstr "Madame, Monsieur"
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_policy
+msgid "Define a reminder policy"
+msgstr "Définir une politique de relance"
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,delay_days:0
+msgid "Delay (in days)"
+msgstr "Retard (en jours)"
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: view:credit.control.policy.level:account_credit_control.credit_mangement_policy_level_form
+msgid "Delay Setting"
+msgstr "Paramétrages jours de retard"
+
+#. module: account_credit_control
+#: field:credit.control.policy,do_nothing:0
+msgid "Do nothing"
+msgstr "Ignorer"
+
+#. module: account_credit_control
+#: selection:credit.control.line,state:0
+#: selection:credit.control.marker,name:0 selection:credit.control.run,state:0
+msgid "Done"
+msgstr "Fait"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: selection:credit.control.line,state:0 selection:credit.control.run,state:0
+msgid "Draft"
+msgstr "Brouillon"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Draft lines have to be triaged."
+msgstr "Les lignes brouillon doivent être triées"
+
+#. module: account_credit_control
+#: help:credit.control.line,state:0
+msgid ""
+"Draft lines need to be triaged.\n"
+"Ignored lines are lines for which we do not want to send something.\n"
+"Draft and ignored lines will be generated again on the next run."
+msgstr ""
+"Lignes brouillons à traiter.\n"
+"Les lignes ignorées ne seront pas traitées.\n"
+"Les lignes brouillons ou ignorées seront régénérées lors du prochain "
+"contrôle."
+
+#. module: account_credit_control
+#: field:credit.control.line,amount_due:0
+msgid "Due Amount Tax incl."
+msgstr "Montant dû TTC."
+
+#. module: account_credit_control
+#: selection:credit.control.policy.level,computation_mode:0
+msgid "Due Date"
+msgstr "Date d'échéance"
+
+#. module: account_credit_control
+#: selection:credit.control.policy.level,computation_mode:0
+msgid "Due Date, End Of Month"
+msgstr "Date d'échéance, fin de mois"
+
+#. module: account_credit_control
+#: field:credit.control.line,balance_due:0
+msgid "Due balance"
+msgstr "Montant total"
+
+#. module: account_credit_control
+#: field:credit.control.line,date_due:0
+msgid "Due date"
+msgstr "Date d'échéance"
+
+#. module: account_credit_control
+#: selection:credit.control.line,channel:0
+#: selection:credit.control.policy.level,channel:0
+msgid "Email"
+msgstr "E-mail"
+
+#. module: account_credit_control
+#: field:credit.control.policy.level,email_template_id:0
+msgid "Email Template"
+msgstr "Modèle d'e-mail"
+
+#. module: account_credit_control
+#: selection:credit.control.line,state:0
+msgid "Emailing Error"
+msgstr "Erreur sur E-mail"
+
+#. module: account_credit_control
+#: field:credit.control.line,date_entry:0
+msgid "Entry date"
+msgstr "Date de l'écriture"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: selection:credit.control.line,state:0
+msgid "Error"
+msgstr "Erreur"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Filters"
+msgstr "Filtres"
+
+#. module: account_credit_control
+#: help:credit.control.policy,do_nothing:0
+msgid "For policies which should not generate lines or are obsolete"
+msgstr "Pour les politiques qui ne doivent pas générer de lignes ou sont obsolètes"
+
+#. module: account_credit_control
+#: view:account.invoice:account_credit_control.invoice_followup_form_view
+msgid "Force credit control policy:"
+msgstr "Forcer politique de relance:"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Group By..."
+msgstr "Grouper Par..."
+
+#. module: account_credit_control
+#: field:credit.control.communication,id:0 field:credit.control.emailer,id:0
+#: field:credit.control.line,id:0 field:credit.control.marker,id:0
+#: field:credit.control.policy,id:0 field:credit.control.policy.changer,id:0
+#: field:credit.control.policy.level,id:0 field:credit.control.printer,id:0
+#: field:credit.control.run,id:0
+msgid "ID"
+msgstr ""
+
+#. module: account_credit_control
+#: help:credit.control.run,manual_ids:0
+msgid ""
+"If a credit control line has been generatedon a policy and the policy has "
+"been changed in the meantime, it has to be handled manually"
+msgstr ""
+"Si la ligne a été générée avec une politique de relance différente elle doit "
+"être traitée manuellement"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: selection:credit.control.line,state:0
+#: selection:credit.control.marker,name:0
+msgid "Ignored"
+msgstr "Ignorée"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.line,invoice_id:0
+#: model:ir.model,name:account_credit_control.model_account_invoice
+msgid "Invoice"
+msgstr "Facture"
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Invoice date"
+msgstr "Date de facture"
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Invoice number"
+msgstr "Numéro de facture"
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Invoiced amount"
+msgstr "Total de la facture"
+
+#. module: account_credit_control
+#: field:credit.control.communication,write_uid:0
+#: field:credit.control.emailer,write_uid:0
+#: field:credit.control.line,write_uid:0
+#: field:credit.control.marker,write_uid:0
+#: field:credit.control.policy,write_uid:0
+#: field:credit.control.policy.changer,write_uid:0
+#: field:credit.control.policy.level,write_uid:0
+#: field:credit.control.printer,write_uid:0
+#: field:credit.control.run,write_uid:0
+msgid "Last Updated by"
+msgstr ""
+
+#. module: account_credit_control
+#: field:credit.control.communication,write_date:0
+#: field:credit.control.emailer,write_date:0
+#: field:credit.control.line,write_date:0
+#: field:credit.control.marker,write_date:0
+#: field:credit.control.policy,write_date:0
+#: field:credit.control.policy.changer,write_date:0
+#: field:credit.control.policy.level,write_date:0
+#: field:credit.control.printer,write_date:0
+#: field:credit.control.run,write_date:0
+msgid "Last Updated on"
+msgstr ""
+
+#. module: account_credit_control
+#: selection:credit.control.line,channel:0
+#: selection:credit.control.policy.level,channel:0
+msgid "Letter"
+msgstr "Lettre"
+
+#. module: account_credit_control
+#: field:credit.control.communication,current_policy_level:0
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.policy.level,level:0
+msgid "Level"
+msgstr "Niveau"
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Lines"
+msgstr "Lignes"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Lines already sent."
+msgstr "Lignes déjà traitées."
+
+#. module: account_credit_control
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+msgid "Lines marker"
+msgstr "Traiter les lignes"
+
+#. module: account_credit_control
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Lines report"
+msgstr "Lignes de relance"
+
+#. module: account_credit_control
+#: field:credit.control.run,manual_ids:0
+msgid "Lines to handle manually"
+msgstr "A traiter manuellement"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Lines which have been ignored from previous runs."
+msgstr "Lignes ignorées lors des relances précédentes."
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: view:credit.control.policy.level:account_credit_control.credit_mangement_policy_level_form
msgid "Mail and reporting"
msgstr "Lettres et e-mails"
#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_2
-msgid ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice despite our first reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Notre comptabilité nous informe que les factures ci-dessous "
-"n'ont pas été payées malgré un précédent rappel.\n"
-" Si ce courrier à croisé votre paiement veuillez le considérer comme nul et non avenu. Sinon, "
-"Merci de procéder au payment dans les 5 jours.\n"
-"\n"
-" En vous remerciant de votre coopération.\n"
-"\n"
-"Salutations\n"
-" "
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+msgid "Mailer"
+msgstr "Mailer"
#. module: account_credit_control
-#: model:email.template,body_html:account_credit_control.email_template_credit_control_base
-msgid ""
-"\n"
-" Dear ${object.get_contact_address().name or ''}\n"
-"
\n"
-"
\n"
-" ${object.current_policy_level.custom_mail_text}\n"
-" "
-msgstr ""
-"\n"
-" Cher/Chère ${object.get_contact_address().name or ''}\n"
-"
\n"
-"
\n"
-" ${object.current_policy_level.custom_mail_text}\n"
-" "
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Manual change"
+msgstr "Changement manuel"
#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Print"
-msgstr "Imprimer"
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.no_follow_1
+#: model:credit.control.policy.level,custom_text:account_credit_control.no_follow_1
+msgid "Manual no follow"
+msgstr "Ne pas suivre (Manuel)"
+
+#. module: account_credit_control
+#: field:credit.control.line,manually_overridden:0
+msgid "Manually overridden"
+msgstr "Mise à jour manuelle"
+
+#. module: account_credit_control
+#: field:credit.control.marker,name:0
+msgid "Mark as"
+msgstr "Marquer comme"
+
+#. module: account_credit_control
+#: field:credit.control.printer,mark_as_sent:0
+msgid "Mark letter lines as sent"
+msgstr "Marquer comme traitées"
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_emailer
+msgid "Mass credit line emailer"
+msgstr "Publipostage par e-mail des rappels"
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_marker
+msgid "Mass marker"
+msgstr "Traiter en masse"
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_printer
+msgid "Mass printer"
+msgstr "Imprimer en masse"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "More..."
+msgstr "Plus..."
+
+#. module: account_credit_control
+#: field:credit.control.line,move_line_id:0
+msgid "Move line"
+msgstr "Écriture comptable"
+
+#. module: account_credit_control
+#: field:credit.control.policy.changer,move_line_ids:0
+msgid "Move line to change"
+msgstr "Écriture comptable à changer"
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+msgid "Move lines To be treated manually"
+msgstr "A traiter manuellement"
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "Move lines to affect"
+msgstr "Écriture comptable à traiter"
+
+#. module: account_credit_control
+#: field:credit.control.policy,name:0 field:credit.control.policy.level,name:0
+msgid "Name"
+msgstr "Nom"
+
+#. module: account_credit_control
+#: field:credit.control.policy.changer,new_policy_id:0
+msgid "New Policy to Apply"
+msgstr "Nouvelle politique"
+
+#. module: account_credit_control
+#: field:credit.control.policy.changer,new_policy_level_id:0
+msgid "New level to apply"
+msgstr "Nouveau niveau de relance"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/wizard/credit_control_emailer.py:62
+#: code:addons/account_credit_control/wizard/credit_control_marker.py:74
+#: code:addons/account_credit_control/wizard/credit_control_printer.py:60
+msgid "No credit control lines selected."
+msgstr "Pas de ligne de relance sélectionnée"
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,name:account_credit_control.no_follow_1
+msgid "No follow"
+msgstr "Pas de suivi"
+
+#. module: account_credit_control
+#: field:credit.control.policy.changer,do_nothing:0
+msgid "No follow policy"
+msgstr "Politique sans suivi"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/wizard/credit_control_marker.py:78
+#, python-format
+msgid "No lines will be changed. All the selected lines are already done."
+msgstr "Aucune ligne ne sera modifiée. Toutes les lignes sélectionnées sont déjà terminées."
+
+#. module: account_credit_control
+#: help:credit.control.printer,mark_as_sent:0
+msgid "Only letter lines will be marked."
+msgstr "Seules les relances par courrier seront traitées."
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
+msgid "Open amount"
+msgstr "Restant dû"
#. module: account_credit_control
#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_1
@@ -284,10 +782,10 @@ msgid ""
" Best regards\n"
" "
msgstr ""
-"Notre comptabilité nous informe que les factures ci-dessous "
-"n'ont pas été payées malgré un précédent rappel.\n"
-" Si ce courrier à croisé votre paiement veuillez le considérer comme nul et non avenu. Sinon, "
-"Merci de procéder au paiement dans les 10 jours.\n"
+"Notre comptabilité nous informe que les factures ci-dessous n'ont pas été "
+"payées malgré un précédent rappel.\n"
+" Si ce courrier à croisé votre paiement veuillez le considérer comme "
+"nul et non avenu. Sinon, Merci de procéder au paiement dans les 10 jours.\n"
"\n"
" En vous remerciant de votre coopération.\n"
"\n"
@@ -295,16 +793,120 @@ msgstr ""
" "
#. module: account_credit_control
-#: selection:credit.control.line,channel:0
-#: selection:credit.control.policy.level,channel:0
-msgid "Email"
-msgstr "E-mail"
+#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_1
+msgid ""
+"Our records indicate that we have not received the payment of the above "
+"mentioned invoice.\n"
+"If it has already been sent, please disregard this notice. If not, please "
+"proceed with payment within 10 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+"Notre comptabilité nous informe que les factures ci-dessous n'ont pas été "
+"payées malgré un précédent rappel.\n"
+" Si ce courrier a croisé votre paiement veuillez le considérer comme "
+"nul et non avenu. Sinon, Merci de procéder au paiement dans les 10 jours.\n"
+"\n"
+" En vous remerciant de votre coopération.\n"
+"\n"
+"Salutations\n"
+" "
#. module: account_credit_control
-#: view:credit.control.line:0 field:credit.control.line,channel:0
-#: field:credit.control.policy.level,channel:0
-msgid "Channel"
-msgstr "Canal"
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_1
+msgid ""
+"Our records indicate that we have not received the payment of the invoices "
+"mentioned in the attached document.\n"
+"\n"
+"If it has already been sent, please disregard this notice. If not, please "
+"proceed with payment within 10 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+"Notre comptabilité nous informe que les factures mentionnées dans le document ci-joint n'ont pas été "
+"payées malgré un précédent rappel.\n"
+" Si ce courrier a croisé votre paiement veuillez le considérer comme "
+"nul et non avenu. Sinon, Merci de procéder au paiement dans les 10 jours.\n"
+"\n"
+" En vous remerciant de votre coopération.\n"
+"\n"
+"Salutations\n"
+" "
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_1
+msgid ""
+"Our records indicate that we have not received the payment of the invoices "
+"mentioned in the attached document.\n"
+"If it has already been sent, please disregard this notice. If not, please "
+"proceed with payment within 10 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+"Notre comptabilité nous informe que les factures mentionnées dans le document ci-joint n'ont pas été "
+"payées malgré un précédent rappel.\n"
+" Si ce courrier a croisé votre paiement veuillez le considérer comme "
+"nul et non avenu. Sinon, Merci de procéder au paiement dans les 10 jours.\n"
+"\n"
+" En vous remerciant de votre coopération.\n"
+"\n"
+"Salutations\n"
+" "
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_2
+msgid ""
+"Our records indicate that we have not yet received the payment of the above "
+"mentioned invoice despite our first reminder.\n"
+" If it has already been sent, please disregard this notice. If not, "
+"please proceed with payment within 5 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+"Notre comptabilité nous informe que les factures ci-dessous n'ont pas été "
+"payées malgré un précédent rappel.\n"
+" Si ce courrier à croisé votre paiement veuillez le considérer comme "
+"nul et non avenu. Sinon, Merci de procéder au paiement dans les 5 jours.\n"
+"\n"
+" En vous remerciant de votre coopération.\n"
+"\n"
+"Salutations\n"
+" "
+
+#. module: account_credit_control
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_2
+msgid ""
+"Our records indicate that we have not yet received the payment of the "
+"invoices mentioned in the attached document despite our first reminder.\n"
+" If it has already been sent, please disregard this notice. If not, "
+"please proceed with payment within 5 days.\n"
+"\n"
+"Thank you in advance for your anticipated cooperation in this matter.\n"
+"\n"
+"Best regards\n"
+" "
+msgstr ""
+"Notre comptabilité nous informe que les factures mentionnées dans le document ci-joint n'ont pas été "
+"payées malgré un précédent rappel.\n"
+" Si ce courrier à croisé votre paiement veuillez le considérer comme "
+"nul et non avenu. Sinon, Merci de procéder au paiement dans les 5 jours.\n"
+"\n"
+" En vous remerciant de votre coopération.\n"
+"\n"
+"Salutations\n"
+" "
#. module: account_credit_control
#: model:credit.control.policy.level,custom_text:account_credit_control.2_time_2
@@ -328,331 +930,25 @@ msgid ""
" Best regards\n"
" "
msgstr ""
-"Notre comptabilité nous indique que vous avez encore des factures ouvertes"
-"malgré nos précédents rappels.\n"
-" Si ce courrier a croisé votre paiement veuillez le considérer comme nul et non avenu.\n"
-" Si le payment n'est pas effectué dans les 5 jours votre dossier sera transféré à une société de recouvrement.\n"
+"Notre comptabilité nous indique que vous avez encore des factures "
+"ouvertes malgré nos précédents rappels.\n"
+" Si ce courrier a croisé votre paiement veuillez le considérer comme "
+"nul et non avenu.\n"
+" Si le paiement n'est pas effectué dans les 5 jours votre dossier sera "
+"transféré à une société de recouvrement.\n"
+"\n"
+" Si vous désirez un accord de paiement n'hésitez pas à nous contacter. "
"\n"
-" Si vous désirez un accord de paiement n'hésitez pas à nous contacter "
-"advise.\n"
" Un décompte est disponible ci-joint.\n"
"\n"
-" En vous remerciant de votre coopération\n "
-"\n"
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-msgid "Lines marker"
-msgstr "Traiter les lignes"
-
-#. module: account_credit_control
-#: code:addons/account_credit_control/invoice.py:35
-#, python-format
-msgid "You cannot cancel this invoice ! A payment reminder has already been sent to the customer.You must create a credit note and raise a new invoice."
-msgstr "Vous ne pouvez pas annuler cette facture ! Une lettre de relance a été envoyé au client. Vous devez créer un avoir et établir une nouvelle facture."
-
-
-#. module: account_credit_control
-#: field:credit.control.printer,state:0
-msgid "state"
-msgstr "Statut"
-
-#. module: account_credit_control
-#: field:credit.control.run,report:0
-msgid "Report"
-msgstr "Lettre"
-
-#. module: account_credit_control
-#: field:credit.control.line,state:0 field:credit.control.run,state:0
-msgid "State"
-msgstr "Statut"
-
-#. module: account_credit_control
-#: help:credit.control.line,state:0
-msgid ""
-"Draft lines need to be triaged.\n"
-"Ignored lines are lines for which we do not want to send something.\n"
-"Draft and ignored lines will be generated again on the next run."
-msgstr ""
-"Lignes brouillons à traiter.\n"
-"Les lignes ignorées ne seront pas traitées.\n"
-"Les lignes brouillons ou ignorées seront regénérées lors du prochain controle."
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.2_time_1
-#: model:credit.control.policy.level,name:account_credit_control.3_time_2
-msgid "30 days end of month"
-msgstr "30 jours fin de mois"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Due Date, End Of Month"
-msgstr "Date d'échéance, fin de mois"
-
-#. module: account_credit_control
-#: field:credit.control.marker,name:0
-msgid "Mark as"
-msgstr "Marquer comme"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
+" En vous remerciant de votre coopération\n"
" "
-msgstr ""
-"Notre comptabilité nous informe que les factures ci-jointes "
-"n'ont pas été payées.\n"
-" Si ce courrier a croisé votre paiement veuillez le considérer comme nul et non avenu. Sinon, "
-"Merci de procéder au paiement dans les 10 jours.\n"
-"\n"
-" En vous remerciant de votre coopération.\n"
-"\n"
-"Salutations\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Credit control run"
-msgstr "Passe de controle de relance"
-
-#. module: account_credit_control
-#: view:credit.control.run:0 field:credit.control.run,policy_ids:0
-msgid "Policies"
-msgstr "Politiques"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice (copy attached for your convenience).\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Notre comptabilité nous informe que les factures ci-jointes "
-"n'ont pas été payées.\n"
-" Si ce courrier a croisé votre payment veuillez le considérer comme nul et non avenu. Sinon, "
-"Merci de procéder au payment dans les 10 jours.\n"
-"\n"
-" En vous remerciant de votre coopération.\n"
-"\n"
-"Salutations\n"
-" "
-
-#. module: account_credit_control
-#: field:credit.control.line,date_due:0
-msgid "Due date"
-msgstr "Date due"
-
-#. module: account_credit_control
-#: field:credit.control.policy,do_nothing:0
-msgid "Do nothing"
-msgstr "Ignorer"
-
-#. module: account_credit_control
-#: field:credit.control.line,currency_id:0
-msgid "Currency"
-msgstr "Devise"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_printer
-msgid "Mass printer"
-msgstr "Imprimer en masse"
-
-#. module: account_credit_control
-#: field:credit.control.communication,company_id:0
-#: field:credit.control.line,company_id:0
-#: field:credit.control.policy,company_id:0
-msgid "Company"
-msgstr "Société"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "An error has occured during the sending of the email."
-msgstr "Erreur lors de la génération des mails."
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_marker_wizard
-msgid "Change the state of the selected lines."
-msgstr "Modifier le statut des lignes sélectionnées."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Lines which have been ignored from previous runs."
-msgstr "Lignes ignorées lors des relances précédentes."
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Print the selected lines"
-msgstr "Imprimer la sélection"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.run,state:0
-msgid "Draft"
-msgstr "Brouillon"
-
-#. module: account_credit_control
-#: view:credit.control.marker:0
-msgid "Warning: you will maybe not be able to revert this operation."
-msgstr "Attention: Cette opération ne peut pas être annulée"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Credit policy"
-msgstr "Politique de relance"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Delay Setting"
-msgstr "Paramètrages jours de retard"
-
-#. module: account_credit_control
-#: field:credit.control.line,balance_due:0
-msgid "Due balance"
-msgstr "Montant total"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Credit policy level"
-msgstr Niveau de relance"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_run
-msgid "Credit control line generator"
-msgstr "Générateur de relance"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Credit control policy"
-msgstr "Niveau de relance"
-
-#. module: account_credit_control
-#: field:credit.control.communication,user_id:0
-msgid "User"
-msgstr "Utilisateur"
-
-#. module: account_credit_control
-#: selection:credit.control.line,channel:0
-#: selection:credit.control.policy.level,channel:0
-msgid "Letter"
-msgstr "Lettre"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_account_move_line
-msgid "Journal Items"
-msgstr "Ecritures comptables"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_printer_wizard
-msgid "Print selected lines"
-msgstr "Imprimer la sélection"
-
-#. module: account_credit_control
-#: field:credit.control.emailer,line_ids:0
-#: field:credit.control.marker,line_ids:0
-#: field:credit.control.printer,line_ids:0
-#: model:ir.actions.act_window,name:account_credit_control.credit_control_line_action
-#: model:ir.ui.menu,name:account_credit_control.credit_control_line_action_menu
-#: field:res.partner,credit_control_line_ids:0
-msgid "Credit Control Lines"
-msgstr "Lignes de relance"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard
-#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard_menu_action
-msgid "Print Lines"
-msgstr "Imprimer la sélection"
-
-#. module: account_credit_control
-#: field:credit.control.run,date:0
-msgid "Controlling Date"
-msgstr "Date de contrôle"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_policy
-msgid "Define a reminder policy"
-msgstr "Defininir une politique de relance"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Lines already sent."
-msgstr "Lignes déjà traitées."
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,email_template_id:0
-msgid "Email Template"
-msgstr "Modèle d'e-mail"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0
-msgid "Ready To Send"
-msgstr "Prêt à l'envoi"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_res_company
-msgid "Companies"
-msgstr "Société"
-
-#. module: account_credit_control
-#: field:credit.control.printer,mark_as_sent:0
-msgid "Mark letter lines as sent"
-msgstr "Marquer comme traitées"
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Compute Credit Control Lines"
-msgstr "Calculer les relances"
-
-#. module: account_credit_control
-#: selection:credit.control.policy.level,computation_mode:0
-msgid "Previous Reminder"
-msgstr "Précédent rappel"
-
-#. module: account_credit_control
-#: view:credit.control.line:0 selection:credit.control.line,state:0
-msgid "Error"
-msgstr "Erreur"
-
-#. module: account_credit_control
-#: field:credit.control.policy,level_ids:0
-msgid "Policy Levels"
-msgstr "Niveau de relance"
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Report and Errors"
-msgstr "Résumé des erreurs"
-
-#. module: account_credit_control
-#: model:email.template,subject:account_credit_control.email_template_credit_control_base
-msgid "Credit Control: (${object.current_policy_level.name or 'n/a'})"
-msgstr "Rappel: (${object.current_policy_level.name or 'n/a'})"
-
-#. module: account_credit_control
-#: field:credit.control.policy.level,custom_mail_text:0
-msgid "Custom Mail Message"
-msgstr "Email personnalisé"
#. module: account_credit_control
#: model:credit.control.policy.level,custom_mail_text:account_credit_control.2_time_2
msgid ""
"Our records indicate that we still have not received the payment of the "
-"above mentioned invoice (copy attached) despite our reminder.\n"
+"invoices mentioned in the attached document despite our reminder.\n"
"\n"
"If payment have already been sent, please disregard this notice. If not, "
"please proceed with payment.\n"
@@ -670,305 +966,57 @@ msgid ""
" Best regards\n"
" "
msgstr ""
-"Notre comptabilité nous indique que vous avez encore des factures ouvertes"
-"malgré nos précédents rappels.\n"
-" Si ce courrier a croisé votre paiement veuillez le considérer comme nul et non avenu.\n"
-" Si le paiement n'est pas effectué dans les 5 jours votre dossier sera transféré à une société de recouvrement.\n"
+"Notre comptabilité nous indique que vous avez encore des factures "
+"ouvertes malgré nos précédents rappels.\n"
+" Si ce courrier a croisé votre paiement veuillez le considérer comme "
+"nul et non avenu.\n"
+" Si le paiement n'est pas effectué dans les 5 jours votre dossier "
+"sera transféré à une société de recouvrement.\n"
+"\n"
+" Si vous désirez un accord de paiement n'hésitez pas à nous contacter. "
"\n"
-" Si vous désirez un accord de paiement n'hésitez pas à nous contacter "
-"advise.\n"
" Un décompte est disponible ci-joint.\n"
"\n"
-" En vous remerciant de votre coopération "
-" "
+" En vous remerciant de votre coopération "
#. module: account_credit_control
-#: help:credit.control.run,manual_ids:0
+#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_3
msgid ""
-"If a credit control line has been generatedon a policy and the policy has "
-"been changed in the meantime, it has to be handled manually"
-msgstr ""
-"Si la ligne a été générée avec une politique de relance différente "
-"elle doit être traitée manuellement"
-
-#. module: account_credit_control
-#: field:account.account,credit_control_line_ids:0
-#: field:account.invoice,credit_control_line_ids:0
-#: field:credit.control.communication,credit_control_line_ids:0
-#: model:ir.actions.act_window,name:account_credit_control.act_account_credit_relation_relation
-#: model:ir.actions.act_window,name:account_credit_control.act_partner_credit_relation_relation
-msgid "Credit Lines"
-msgstr "Lignes de relance"
-
-#. module: account_credit_control
-#: selection:credit.control.line,state:0
-#: selection:credit.control.marker,name:0 selection:credit.control.run,state:0
-msgid "Done"
-msgstr "Fait"
-
-#. module: account_credit_control
-#: field:account.move.line,invoice_id:0 view:credit.control.line:0
-#: field:credit.control.line,invoice_id:0
-#: model:ir.model,name:account_credit_control.model_account_invoice
-msgid "Invoice"
-msgstr "Facture"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0 view:credit.control.marker:0
-#: view:credit.control.printer:0
-msgid "Cancel"
-msgstr "Annuler"
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Close"
-msgstr "Fermer"
-
-#. module: account_credit_control
-#: selection:credit.control.line,state:0
-msgid "Emailing Error"
-msgstr "Erreur sur E-mail"
-
-#. module: account_credit_control
-#: help:account.invoice,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used for this invoice. If nothing is defined, it "
-"will use the account setting or the partner setting."
-msgstr ""
-"Il s'agit de la politique de relance propre à cette facture "
-"Si vide, la politique de relance par défaut sera utilisée."
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Run date"
-msgstr "Date de relance"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_user
-msgid "Credit Control User"
-msgstr "Utilisateur du module de relance"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0 view:credit.control.policy.level:0
-msgid "Policy level"
-msgstr "Politique de relance"
-
-#. module: account_credit_control
-#: field:credit.control.run,manual_ids:0
-msgid "Lines to handle manually"
-msgstr "A traiter manuellement"
-
-#. module: account_credit_control
-#: help:res.partner,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used for this partner. This setting can be forced "
-"on the invoice. If nothing is defined, it will use the company setting."
-msgstr ""
-"Politique de relance utilisée pour ce client. (Vous pouvez aussi en définir une autre "
-"au niveau d'une des factures de ce client.) Si vide, la politique par défaut (au niveau de la société) sera apppliquée."
-
-#. module: account_credit_control
-#: view:account.invoice:0
-#: model:ir.ui.menu,name:account_credit_control.base_credit_control_configuration_menu
-#: model:ir.ui.menu,name:account_credit_control.base_credit_control_menu
-msgid "Credit Control"
-msgstr "Relances Clients"
-
-
-#. module: account_credit_control
-#: view:account.invoice:0
-msgid "Force credit control policy:"
-msgstr "Forcer politique de relance:"
-
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_mail_text:account_credit_control.3_time_2
-msgid ""
-"Our records indicate that we have not yet received the payment of the above "
-"mentioned invoice (copy attached for your convenience) despite our first "
-"reminder.\n"
-" If it has already been sent, please disregard this notice. If not, "
-"please proceed with payment within 5 days.\n"
+"Our records indicate that we still have not received the payment of the "
+"invoices mentioned in the attached document despite our two reminders.\n"
+" If payment have already been sent, please disregard this notice. If "
+"not, please proceed with payment.\n"
+" If your payment has not been received in the next 5 days, your file "
+"will be transfered to our debt collection agency.\n"
"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Notre comptabilité nous indique que vous avez encore des factures ouvertes"
-"malgré nos précédents rappels.\n"
-" Si ce courrier a croisé votre paiement veuillez le considérer comme nul et non avenu.\n"
-" Si le paiement n'est pas effectué dans les 5 jours votre dossier sera transférer à une société de recouvrement.\n"
-"\n"
-" Si vous désirez un accord de paiement n'hésitez pas à nous contacter "
+" Should you need us to arrange a payment plan for you, please "
"advise.\n"
+" A customer account statement is enclosed for you convenience.\n"
+"\n"
+" Thank you in advance for your anticipated cooperation in this "
+"matter.\n"
+"\n"
+" Best regards\n"
+" "
+msgstr ""
+"Notre comptabilité nous indique que vous avez encore des factures "
+"ouvertes malgré nos précédents rappels.\n"
+" Si ce courrier a croisé votre paiement veuillez le considérer comme "
+"nul et non avenu.\n"
+" Si le paiement n'est pas effectué dans les 5 jours votre dossier sera "
+"transféré à une société de recouvrement.\n"
+"\n"
+" Si vous désirez un accord de paiement n'hésitez pas à nous contacter. "
+"\n"
" Un décompte est disponible ci-joint.\n"
"\n"
" En vous remerciant de votre coopération \n"
" "
-#. module: account_credit_control
-#: field:credit.control.line,policy_id:0
-msgid "Policy"
-msgstr "Politique"
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Credit control policy Level"
-msgstr "Niveau de relance"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Mailer"
-msgstr "Mailer"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,custom_text:account_credit_control.3_time_1
-msgid ""
-"Our records indicate that we have not received the payment of the above "
-"mentioned invoice.\n"
-"If it has already been sent, please disregard this notice. If not, please "
-"proceed with payment within 10 days.\n"
-"\n"
-"Thank you in advance for your anticipated cooperation in this matter.\n"
-"\n"
-"Best regards\n"
-" "
-msgstr ""
-"Notre comptabilité nous informe que les factures ci-dessous "
-"n'ont pas été payées malgré un précédent rappel.\n"
-" Si ce courrier a croisé votre paiement veuillez le considérer comme nul et non avenu. Sinon, "
-"Merci de procéder au paiement dans les 10 jours.\n"
-"\n"
-" En vous remerciant de votre coopération.\n"
-"\n"
-"Salutations\n"
-" "
-
-#. module: account_credit_control
-#: view:credit.control.run:0
-msgid "Move lines To be treated manually"
-msgstr "A traiter manuellement"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,name:account_credit_control.credit_policy_configuration_action
-#: model:ir.ui.menu,name:account_credit_control.credit_policy_configuration_action_menu
-msgid "Credit Control Policies"
-msgstr "Politique de relance"
-
-#. module: account_credit_control
-#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_emailer_wizard
-msgid "Send an email for the selected lines."
-msgstr "Envoyer les rappels par email."
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.3_time_3
-msgid "10 days last reminder"
-msgstr "10 jours depuis la dernière relance"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Sent"
-msgstr "Envoyées"
-
-#. module: account_credit_control
-#: constraint:credit.control.policy.level:0
-msgid "The smallest level can not be of type Previous Reminder"
-msgstr "Le premier niveau ne peut pas être basé sur un précédent rappel"
-
-#. module: account_credit_control
-#: view:credit.control.printer:0
-msgid "Lines report"
-msgstr "Lignes de relance"
-
-#. module: account_credit_control
-#: field:credit.control.printer,report_file:0
-msgid "Generated Report"
-msgstr "Courrier généré"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.3_time_1
-msgid "10 days net"
-msgstr "10 jours net"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Control Credit Lines"
-msgstr "Lignes de relance"
-
-#. module: account_credit_control
-#: model:res.groups,name:account_credit_control.group_account_credit_control_manager
-msgid "Credit Control Manager"
-msgstr "Responsable Relance client"
-
-#. module: account_credit_control
-#: field:credit.control.policy,name:0 field:credit.control.policy.level,name:0
-msgid "Name"
-msgstr "Nom"
-
-#. module: account_credit_control
-#: view:credit.control.emailer:0
-msgid "Send the emails"
-msgstr "Envoyer les courriels"
-
-#. module: account_credit_control
-#: field:credit.control.line,mail_message_id:0
-msgid "Sent Email"
-msgstr "Courriels envoyés"
-
#. module: account_credit_control
#: model:ir.model,name:account_credit_control.model_mail_mail
msgid "Outgoing Mails"
-msgstr "Courriels envoyés"
-
-#. module: account_credit_control
-#: model:ir.model,name:account_credit_control.model_credit_control_policy_level
-msgid "A credit control policy level"
-msgstr "Une politique de relance"
-
-#. module: account_credit_control
-#: model:ir.actions.report.xml,name:account_credit_control.report_webkit_html
-msgid "Credit Summary"
-msgstr "Listes des rappels"
-
-#. module: account_credit_control
-#: field:credit.control.line,date:0
-msgid "Controlling date"
-msgstr "Date de relance"
-
-#. module: account_credit_control
-#: view:credit.control.line:0
-msgid "Draft lines have to be triaged."
-msgstr "Les lignes brouillon doivent être triées"
-
-#. module: account_credit_control
-#: field:credit.control.line,amount_due:0
-msgid "Due Amount Tax incl."
-msgstr "Montant dû TTC."
-
-#. module: account_credit_control
-#: field:res.company,credit_control_tolerance:0
-msgid "Credit Control Tolerance"
-msgstr "Pas de relance inférieure à : "
-
-#. module: account_credit_control
-#: view:credit.control.policy:0
-msgid "Policy levels"
-msgstr "Niveaux de relance"
-
-#. module: account_credit_control
-#: model:credit.control.policy.level,name:account_credit_control.2_time_2
-msgid "60 days last reminder"
-msgstr "Dernier rappel à 60 jours"
-
-#. module: account_credit_control
-#: help:res.company,credit_policy_id:0
-msgid ""
-"The Credit Control Policy used on partners by default. This setting can be "
-"overridden on partners or invoices."
-msgstr ""
-"Politique de relance par défaut du client. (Ce paramétrage peut être "
-"défini plus spécifiquement au niveau de la facture)."
+msgstr "Courriels envoyés"
#. module: account_credit_control
#: field:credit.control.line,policy_level_id:0
@@ -976,51 +1024,281 @@ msgid "Overdue Level"
msgstr "Niveau de relance"
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:167
+#: field:credit.control.communication,partner_id:0
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: field:credit.control.line,partner_id:0
+#: model:ir.model,name:account_credit_control.model_res_partner
+msgid "Partner"
+msgstr "Client"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:103
+#, python-format
+msgid "Please select a policy"
+msgstr "Choisissez une politique"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/wizard/credit_control_policy_changer.py:61
+#, python-format
+msgid "Please use wizard on customer invoices"
+msgstr "Utilisez l'action sur les factures clients"
+
+#. module: account_credit_control
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+#: field:credit.control.run,policy_ids:0
+msgid "Policies"
+msgstr "Politiques"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:126
+msgid "Policy \"%s\" has generated %d Credit Control Lines.\n"
+msgstr "La politique de relance \"%s\" a généré %d lignes de relance.\n"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/run.py:130
+#, python-format
+msgid "Policy \"%s\" has not generated any Credit Control Lines.\n"
+msgstr "La politique de relance \"%s\" n'a pas généré de lignes de relance.\n"
+
+#. module: account_credit_control
+#: field:credit.control.policy,level_ids:0
+msgid "Policy Levels"
+msgstr "Niveaux de relance"
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+#: view:credit.control.policy.level:account_credit_control.credit_mangement_policy_level_form
+msgid "Policy level"
+msgstr "Niveau de relance"
+
+#. module: account_credit_control
+#: view:credit.control.policy:account_credit_control.credit_control_policy_form
+msgid "Policy levels"
+msgstr "Niveaux de relance"
+
+#. module: account_credit_control
+#: selection:credit.control.policy.level,computation_mode:0
+msgid "Previous Reminder"
+msgstr "Précédent rappel"
+
+#. module: account_credit_control
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Print"
+msgstr "Imprimer"
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_printer_wizard_menu_action
+msgid "Print Lines"
+msgstr "Imprimer la sélection"
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_printer_wizard
+msgid "Print selected lines"
+msgstr "Imprimer la sélection"
+
+#. module: account_credit_control
+#: view:credit.control.printer:account_credit_control.credit_line_printer_form
+msgid "Print the selected lines"
+msgstr "Imprimer la sélection"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+#: selection:credit.control.line,state:0
+#: selection:credit.control.marker,name:0
+msgid "Ready To Send"
+msgstr "Prêt à l'envoi"
+
+#. module: account_credit_control
+#: field:credit.control.line,policy_id:0
+#: field:credit.control.policy.level,policy_id:0
+msgid "Related Policy"
+msgstr "Niveau de relance"
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
msgid "Reminder"
msgstr "Rappel"
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:170
-msgid "Dear"
-msgstr "Madame, Monsieur"
+#: field:credit.control.run,report:0
+msgid "Report"
+msgstr "Lettre"
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:177
+#: view:credit.control.run:account_credit_control.credit_control_run_form
+msgid "Report and Errors"
+msgstr "Résumé des erreurs"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Run date"
+msgstr "Date de relance"
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard
+#: model:ir.actions.act_window,name:account_credit_control.open_credit_line_emailer_wizard_menu_action
+msgid "Send By Email"
+msgstr "Envoyer par email"
+
+#. module: account_credit_control
+#: model:ir.actions.act_window,help:account_credit_control.open_credit_line_emailer_wizard
+msgid "Send an email for the selected lines."
+msgstr "Envoyer les rappels par email."
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+msgid "Send emails for the selected lines"
+msgstr "Envoyer un email depuis les lignes de relances sélectionnées"
+
+#. module: account_credit_control
+#: view:credit.control.emailer:account_credit_control.credit_line_emailer_form
+msgid "Send the emails"
+msgstr "Envoyer les courriels"
+
+#. module: account_credit_control
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "Sent"
+msgstr "Envoyées"
+
+#. module: account_credit_control
+#: field:credit.control.line,mail_message_id:0
+msgid "Sent Email"
+msgstr "Courriels envoyés"
+
+#. module: account_credit_control
+#: field:credit.control.line,date_sent:0
+msgid "Sent date"
+msgstr "Date d'envoi"
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "Set current credit level"
+msgstr "Définir le niveau de relance actuel"
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid "Set new policy"
+msgstr "Définir une nouvelle politique de relance"
+
+#. module: account_credit_control
+#: field:credit.control.line,state:0 field:credit.control.run,state:0
+msgid "State"
+msgstr "État"
+
+#. module: account_credit_control
+#: view:website:account_credit_control.report_credit_control_summary_document
msgid "Summary"
msgstr "Listes des factures en attente de règlement"
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:179
-msgid "Invoice number"
-msgstr "Numéro Facture"
+#: help:account.invoice,credit_policy_id:0
+msgid ""
+"The Credit Control Policy used for this invoice. If nothing is defined, it "
+"will use the account setting or the partner setting."
+msgstr ""
+"Il s'agit de la politique de relance propre à cette facture Si vide, la "
+"politique de relance par défaut sera utilisée."
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:180
-msgid "Invoice date"
-msgstr "Date Facture"
+#: help:res.partner,credit_policy_id:0
+msgid ""
+"The Credit Control Policy used for this partner. This setting can be forced "
+"on the invoice. If nothing is defined, it will use the company setting."
+msgstr ""
+"Politique de relance utilisée pour ce client. (Vous pouvez aussi en définir "
+"une autre au niveau d'une des factures de ce client.) Si vide, la politique "
+"par défaut (au niveau de la société) sera appliquée."
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:181
-msgid "Date due"
-msgstr "Date Echéance"
+#: help:res.company,credit_policy_id:0
+msgid ""
+"The Credit Control Policy used on partners by default. This setting can be "
+"overridden on partners or invoices."
+msgstr ""
+"Politique de relance par défaut du client. (Ce paramétrage peut être défini "
+"plus spécifiquement au niveau de la facture)."
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:182
-msgid "Invoiced amount"
-msgstr "Total Facture"
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "The line was deprecated by a manual change of policy on invoice."
+msgstr "La ligne a été remplacée par un changement manuel de politique sur la facture."
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:183
-msgid "Open amount"
-msgstr "Restant dû"
+#: help:credit.control.line,currency_id:0
+msgid "The optional other currency if it is a multi-currency entry."
+msgstr "Les autres devises optionnelles en cas de multi-devises."
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:183
-msgid "Currency"
-msgstr "Devise"
+#: code:addons/account_credit_control/policy.py:258
+#, python-format
+msgid "The smallest level can not be of type Previous Reminder"
+msgstr "Le premier niveau ne peut pas être basé sur un précédent rappel"
#. module: account_credit_control
-#: report:addons/account_credit_control/report/credit_control_summary.html.mako:211
-msgid "If you have any question, do not hesitate to contact us."
-msgstr "Si vous avez des questions, n'hésitez pas à nous contacter."
+#: view:credit.control.line:account_credit_control.credit_control_line_search
+msgid "These lines are ready to send by email or by letter using the Actions."
+msgstr "Ces lignes sont prêtes à être traitées"
+
+#. module: account_credit_control
+#: help:credit.control.policy,account_ids:0
+msgid "This policy will be active only for the selected accounts"
+msgstr ""
+"Cette politique de relance sera active seulement pour les comptes "
+"sélectionnés"
+
+#. module: account_credit_control
+#: view:credit.control.policy.changer:account_credit_control.credit_control_policy_changer_form
+msgid ""
+"This wizard will let you set the overdue policy and level for selected "
+"invoices"
+msgstr "Cette action vous permet de définir une politique et un niveau de relance pour les factures sélectionnées"
+
+#. module: account_credit_control
+#: field:credit.control.communication,user_id:0
+msgid "User"
+msgstr "Utilisateur"
+
+#. module: account_credit_control
+#: view:credit.control.marker:account_credit_control.credit_line_marker_form
+msgid "Warning: you will maybe not be able to revert this operation."
+msgstr "Attention: Cette opération ne peut pas être annulée"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/line.py:224
+#, python-format
+msgid ""
+"You are not allowed to delete a credit control line that is not in draft "
+"state."
+msgstr "Vous ne pouvez pas supprimer une ligne de relance qui n'est pas en brouillon"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/policy.py:203
+#, python-format
+msgid ""
+"You can only use a policy set on account %s.\n"
+"Please choose one of the following policies:\n"
+" %s"
+msgstr "Vous ne pouvez utiliser qu'une politique associée au compte %s."
+"Vous pouvez choisir une des politique suivantes:\n"
+" %s"
+
+#. module: account_credit_control
+#: code:addons/account_credit_control/invoice.py:57
+msgid ""
+"You cannot cancel this invoice.\n"
+"A payment reminder has already been sent to the customer.\n"
+"You must create a credit note and issue a new invoice."
+msgstr ""
+"Vous ne pouvez pas annuler cette facture ! Une lettre de relance a été "
+"envoyé au client. Vous devez créer un avoir et établir une nouvelle facture."
+
+#. module: account_credit_control
+#: model:ir.model,name:account_credit_control.model_credit_control_communication
+msgid "credit control communication"
+msgstr "Lettre de relance"
+
+#. module: account_credit_control
+#: field:credit.control.line,level:0
+msgid "credit.control.policy.level"
+msgstr "Une politique de relance"
diff --git a/account_credit_control/invoice.py b/account_credit_control/invoice.py
new file mode 100644
index 000000000..f74be82c0
--- /dev/null
+++ b/account_credit_control/invoice.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Vincent Renaville
+# Copyright 2013 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from openerp import models, fields, api, _
+
+
+class AccountInvoice(models.Model):
+ """Check on cancelling of an invoice"""
+ _inherit = 'account.invoice'
+
+ credit_policy_id = fields.Many2one(
+ 'credit.control.policy',
+ string='Credit Control Policy',
+ help="The Credit Control Policy used for this "
+ "invoice. If nothing is defined, it will "
+ "use the account setting or the partner "
+ "setting.",
+ readonly=True,
+ copy=False,
+ )
+
+ credit_control_line_ids = fields.One2many(
+ 'credit.control.line', 'invoice_id',
+ string='Credit Lines',
+ readonly=True,
+ copy=False,
+ )
+
+ @api.multi
+ def action_cancel(self):
+ """Prevent to cancel invoice related to credit line"""
+ # We will search if this invoice is linked with credit
+ cc_line_obj = self.env['credit.control.line']
+ for invoice in self:
+ nondraft_domain = [('invoice_id', '=', invoice.id),
+ ('state', '!=', 'draft')]
+ cc_nondraft_lines = cc_line_obj.search(nondraft_domain)
+ if cc_nondraft_lines:
+ raise api.Warning(
+ _('You cannot cancel this invoice.\n'
+ 'A payment reminder has already been '
+ 'sent to the customer.\n'
+ 'You must create a credit note and '
+ 'issue a new invoice.')
+ )
+ draft_domain = [('invoice_id', '=', invoice.id),
+ ('state', '=', 'draft')]
+ cc_draft_line = cc_line_obj.search(draft_domain)
+ cc_draft_line.unlink()
+ return super(AccountInvoice, self).action_cancel()
diff --git a/account_credit_control/line.py b/account_credit_control/line.py
new file mode 100644
index 000000000..d6a0d1d80
--- /dev/null
+++ b/account_credit_control/line.py
@@ -0,0 +1,228 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Nicolas Bessi, Guewen Baconnier
+# Copyright 2012-2014 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+import logging
+
+from openerp import models, fields, api, _
+
+logger = logging.getLogger('credit.line.control')
+
+
+class CreditControlLine(models.Model):
+ """ A credit control line describes an amount due by a customer for a due date.
+
+ A line is created once the due date of the payment is exceeded.
+ It is created in "draft" and some actions are available (send by email,
+ print, ...)
+ """
+
+ _name = "credit.control.line"
+ _description = "A credit control line"
+ _rec_name = "id"
+ _order = "date DESC"
+
+ date = fields.Date(string='Controlling date',
+ required=True,
+ select=True)
+ # maturity date of related move line we do not use
+ # a related field in order to
+ # allow manual changes
+ date_due = fields.Date(string='Due date',
+ required=True,
+ readonly=True,
+ states={'draft': [('readonly', False)]})
+
+ date_entry = fields.Date(string='Entry date',
+ related='move_line_id.date',
+ store=True,
+ readonly=True)
+
+ date_sent = fields.Date(string='Sent date',
+ readonly=True,
+ states={'draft': [('readonly', False)]})
+
+ state = fields.Selection([('draft', 'Draft'),
+ ('ignored', 'Ignored'),
+ ('to_be_sent', 'Ready To Send'),
+ ('sent', 'Done'),
+ ('error', 'Error'),
+ ('email_error', 'Emailing Error')],
+ 'State',
+ required=True,
+ readonly=True,
+ default='draft',
+ help="Draft lines need to be triaged.\n"
+ "Ignored lines are lines for which we do "
+ "not want to send something.\n"
+ "Draft and ignored lines will be "
+ "generated again on the next run.")
+
+ channel = fields.Selection([('letter', 'Letter'),
+ ('email', 'Email')],
+ string='Channel',
+ required=True,
+ readonly=True,
+ states={'draft': [('readonly', False)]})
+
+ invoice_id = fields.Many2one('account.invoice',
+ string='Invoice',
+ readonly=True)
+
+ partner_id = fields.Many2one('res.partner',
+ string='Partner',
+ required=True)
+
+ amount_due = fields.Float(string='Due Amount Tax incl.',
+ required=True, readonly=True)
+
+ balance_due = fields.Float(string='Due balance', required=True,
+ readonly=True)
+
+ mail_message_id = fields.Many2one('mail.mail', string='Sent Email',
+ readonly=True)
+
+ move_line_id = fields.Many2one('account.move.line',
+ string='Move line',
+ required=True,
+ readonly=True)
+
+ account_id = fields.Many2one('account.account',
+ related='move_line_id.account_id',
+ store=True,
+ readonly=True)
+
+ currency_id = fields.Many2one('res.currency',
+ related='move_line_id.currency_id',
+ store=True,
+ readonly=True)
+
+ company_id = fields.Many2one('res.company',
+ related='move_line_id.company_id',
+ store=True,
+ readonly=True)
+
+ # we can allow a manual change of policy in draft state
+ policy_level_id = fields.Many2one('credit.control.policy.level',
+ string='Overdue Level',
+ required=True,
+ readonly=True,
+ states={'draft': [('readonly', False)]})
+
+ policy_id = fields.Many2one('credit.control.policy',
+ related='policy_level_id.policy_id',
+ store=True,
+ readonly=True)
+
+ level = fields.Integer('credit.control.policy.level',
+ related='policy_level_id.level',
+ store=True,
+ readonly=True)
+
+ manually_overridden = fields.Boolean(string='Manually overridden')
+
+ @api.model
+ def _prepare_from_move_line(self, move_line, level, controlling_date,
+ open_amount):
+ """ Create credit control line """
+ data = {}
+ data['date'] = controlling_date
+ data['date_due'] = move_line.date_maturity
+ data['state'] = 'draft'
+ data['channel'] = level.channel
+ data['invoice_id'] = (move_line.invoice.id if
+ move_line.invoice else False)
+ data['partner_id'] = move_line.partner_id.id
+ data['amount_due'] = (move_line.amount_currency or move_line.debit or
+ move_line.credit)
+ data['balance_due'] = open_amount
+ data['policy_level_id'] = level.id
+ data['company_id'] = move_line.company_id.id
+ data['move_line_id'] = move_line.id
+ return data
+
+ @api.model
+ def create_or_update_from_mv_lines(self, lines, level, controlling_date,
+ check_tolerance=True):
+ """ Create or update line based on levels
+
+ if check_tolerance is true credit line will not be
+ created if open amount is too small.
+ eg. we do not want to send a letter for 10 cents
+ of open amount.
+
+ :param lines: move.line id recordset
+ :param level: credit.control.policy.level record
+ :param controlling_date: date string of the credit controlling date.
+ Generally it should be the same
+ as create date
+ :param check_tolerance: boolean if True credit line
+ will not be generated if open amount
+ is smaller than company defined
+ tolerance
+
+ :returns: recordset of created credit lines
+ """
+ currency_obj = self.env['res.currency']
+ user = self.env.user
+ currencies = currency_obj.search([])
+
+ tolerance = {}
+ tolerance_base = user.company_id.credit_control_tolerance
+ user_currency = user.company_id.currency_id
+ for currency in currencies:
+ tolerance[currency.id] = currency.compute(tolerance_base,
+ user_currency)
+
+ new_lines = self.browse()
+ for move_line in lines:
+ open_amount = move_line.amount_residual_currency
+ cur_tolerance = tolerance.get(move_line.currency_id.id,
+ tolerance_base)
+ if check_tolerance and open_amount < cur_tolerance:
+ continue
+ vals = self._prepare_from_move_line(move_line,
+ level,
+ controlling_date,
+ open_amount)
+ line = self.create(vals)
+ new_lines += line
+
+ # when we have lines generated earlier in draft,
+ # on the same level, it means that we have left
+ # them, so they are to be considered as ignored
+ previous_drafts = self.search([('move_line_id', '=', move_line.id),
+ ('policy_level_id', '=', level.id),
+ ('state', '=', 'draft'),
+ ('id', '!=', line.id)])
+ if previous_drafts:
+ previous_drafts.write({'state': 'ignored'})
+
+ return new_lines
+
+ @api.multi
+ def unlink(self):
+ for line in self:
+ if line.state != 'draft':
+ raise api.Warning(
+ _('You are not allowed to delete a credit control '
+ 'line that is not in draft state.')
+ )
+
+ return super(CreditControlLine, self).unlink()
diff --git a/__unported__/account_credit_control/line_view.xml b/account_credit_control/line_view.xml
similarity index 83%
rename from __unported__/account_credit_control/line_view.xml
rename to account_credit_control/line_view.xml
index 370a9a136..767f44921 100644
--- a/__unported__/account_credit_control/line_view.xml
+++ b/account_credit_control/line_view.xml
@@ -6,23 +6,41 @@
form
diff --git a/__unported__/account_credit_control/mail.py b/account_credit_control/mail.py
similarity index 80%
rename from __unported__/account_credit_control/mail.py
rename to account_credit_control/mail.py
index 25614913c..7ec9be86d 100644
--- a/__unported__/account_credit_control/mail.py
+++ b/account_credit_control/mail.py
@@ -2,7 +2,7 @@
##############################################################################
#
# Author: Nicolas Bessi, Guewen Baconnier
-# Copyright 2012 Camptocamp SA
+# Copyright 2012-2014 Camptocamp SA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -18,14 +18,12 @@
# along with this program. If not, see .
#
##############################################################################
-from openerp.osv import orm, fields
+from openerp import models, fields
-class Mail(orm.Model):
+class Mail(models.Model):
_inherit = 'mail.mail'
# use HTML fields instead of text
- _columns = {
- 'body_html': fields.html('Rich-text Contents',
- help="Rich-text/HTML message"),
- }
+ body_html = fields.Html('Rich-text Contents',
+ help="Rich-text/HTML message")
diff --git a/account_credit_control/partner.py b/account_credit_control/partner.py
new file mode 100644
index 000000000..d7669c101
--- /dev/null
+++ b/account_credit_control/partner.py
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Nicolas Bessi, Guewen Baconnier
+# Copyright 2012-2014 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from openerp import models, fields, api
+
+
+class ResPartner(models.Model):
+ """ Add a settings on the credit control policy to use on the partners,
+ and links to the credit control lines.
+ """
+
+ _inherit = "res.partner"
+
+ credit_policy_id = fields.Many2one(
+ 'credit.control.policy',
+ string='Credit Control Policy',
+ domain="[('account_ids', 'in', property_account_receivable)]",
+ help="The Credit Control Policy used for this "
+ "partner. This setting can be forced on the "
+ "invoice. If nothing is defined, it will use "
+ "the company setting.",
+ )
+ credit_control_line_ids = fields.One2many('credit.control.line',
+ 'invoice_id',
+ string='Credit Control Lines',
+ readonly=True)
+
+ @api.constrains('credit_policy_id')
+ def _check_credit_policy(self):
+ """ Ensure that policy on partner are limited to the account policy """
+ for partner in self:
+ if (not partner.property_account_receivable or
+ not partner.credit_policy_id):
+ continue
+ account = partner.property_account_receivable
+ policy = partner.credit_policy_id
+ try:
+ policy.check_policy_against_account(account)
+ except api.Warning as err:
+ # constrains should raise ValidationError exceptions
+ raise api.ValidationError(err)
diff --git a/__unported__/account_credit_control/partner_view.xml b/account_credit_control/partner_view.xml
similarity index 100%
rename from __unported__/account_credit_control/partner_view.xml
rename to account_credit_control/partner_view.xml
diff --git a/account_credit_control/policy.py b/account_credit_control/policy.py
new file mode 100644
index 000000000..0e2b03dfe
--- /dev/null
+++ b/account_credit_control/policy.py
@@ -0,0 +1,406 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Nicolas Bessi, Guewen Baconnier
+# Copyright 2012-2014 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from openerp import models, fields, api, _
+
+
+class CreditControlPolicy(models.Model):
+ """ Define a policy of reminder """
+
+ _name = "credit.control.policy"
+ _description = """Define a reminder policy"""
+
+ name = fields.Char('Name', required=True)
+ level_ids = fields.One2many('credit.control.policy.level',
+ 'policy_id',
+ string='Policy Levels')
+ do_nothing = fields.Boolean('Do nothing',
+ help='For policies which should not '
+ 'generate lines or are obsolete')
+ company_id = fields.Many2one('res.company', string='Company')
+ account_ids = fields.Many2many(
+ 'account.account',
+ string='Accounts',
+ required=True,
+ domain="[('type', '=', 'receivable')]",
+ help="This policy will be active only"
+ " for the selected accounts",
+ )
+ active = fields.Boolean('Active', default=True)
+
+ @api.multi
+ def _move_lines_domain(self, controlling_date):
+ """ Build the default domain for searching move lines """
+ self.ensure_one()
+ return [('account_id', 'in', self.account_ids.ids),
+ ('date_maturity', '<=', controlling_date),
+ ('reconcile_id', '=', False),
+ ('partner_id', '!=', False)]
+
+ @api.multi
+ @api.returns('account.move.line')
+ def _due_move_lines(self, controlling_date):
+ """ Get the due move lines for the policy of the company.
+
+ The set of ids will be reduced and extended according
+ to the specific policies defined on partners and invoices.
+
+ Do not use direct SQL in order to respect security rules.
+
+ Assume that only the receivable lines have a maturity date and that
+ accounts used in the policy are reconcilable.
+ """
+ self.ensure_one()
+ move_l_obj = self.env['account.move.line']
+ user = self.env.user
+ if user.company_id.credit_policy_id.id != self.id:
+ return move_l_obj.browse()
+ domain_line = self._move_lines_domain(controlling_date)
+ return move_l_obj.search(domain_line)
+
+ @api.multi
+ @api.returns('account.move.line')
+ def _move_lines_subset(self, controlling_date, model, move_relation_field):
+ """ Get the move lines related to one model for a policy.
+
+ Do not use direct SQL in order to respect security rules.
+
+ Assume that only the receivable lines have a maturity date and that
+ accounts used in the policy are reconcilable.
+
+ The policy relation field must be named credit_policy_id.
+
+ :param str controlling_date: date of credit control
+ :param str model: name of the model where is defined a credit_policy_id
+ :param str move_relation_field: name of the field in account.move.line
+ which is a many2one to `model`
+ :return: recordset to add in the process, recordset to remove from
+ the process
+ """
+ self.ensure_one()
+ # MARK possible place for a good optimisation
+ my_obj = self.env[model]
+ move_l_obj = self.env['account.move.line']
+ default_domain = self._move_lines_domain(controlling_date)
+
+ to_add = move_l_obj.browse()
+ to_remove = move_l_obj.browse()
+
+ # The lines which are linked to this policy have to be included in the
+ # run for this policy.
+ # If another object override the credit_policy_id (ie. invoice after
+ add_objs = my_obj.search([('credit_policy_id', '=', self.id)])
+ if add_objs:
+ domain = list(default_domain)
+ domain.append((move_relation_field, 'in', add_objs.ids))
+ to_add = move_l_obj.search(domain)
+
+ # The lines which are linked to another policy do not have to be
+ # included in the run for this policy.
+ neg_objs = my_obj.search([('credit_policy_id', '!=', self.id),
+ ('credit_policy_id', '!=', False)])
+ if neg_objs:
+ domain = list(default_domain)
+ domain.append((move_relation_field, 'in', neg_objs.ids))
+ to_remove = move_l_obj.search(domain)
+ return to_add, to_remove
+
+ @api.multi
+ @api.returns('account.move.line')
+ def _get_partner_related_lines(self, controlling_date):
+ """ Get the move lines for a policy related to a partner.
+
+ :param str controlling_date: date of credit control
+ :param str model: name of the model where is defined a credit_policy_id
+ :param str move_relation_field: name of the field in account.move.line
+ which is a many2one to `model`
+ :return: recordset to add in the process, recordset to remove from
+ the process
+ """
+ return self._move_lines_subset(controlling_date, 'res.partner',
+ 'partner_id')
+
+ @api.multi
+ @api.returns('account.move.line')
+ def _get_invoice_related_lines(self, controlling_date):
+ """ Get the move lines for a policy related to an invoice.
+
+ :param str controlling_date: date of credit control
+ :param str model: name of the model where is defined a credit_policy_id
+ :param str move_relation_field: name of the field in account.move.line
+ which is a many2one to `model`
+ :return: recordset to add in the process, recordset to remove from
+ the process
+ """
+ return self._move_lines_subset(controlling_date, 'account.invoice',
+ 'invoice')
+
+ @api.multi
+ @api.returns('account.move.line')
+ def _get_move_lines_to_process(self, controlling_date):
+ """ Build a list of move lines ids to include in a run
+ for a policy at a given date.
+
+ :param str controlling_date: date of credit control
+ :return: recordset to include in the run
+ """
+ self.ensure_one()
+ # there is a priority between the lines, depicted by the calls below
+ lines = self._due_move_lines(controlling_date)
+ to_add, to_remove = self._get_partner_related_lines(controlling_date)
+ lines = (lines | to_add) - to_remove
+ to_add, to_remove = self._get_invoice_related_lines(controlling_date)
+ lines = (lines | to_add) - to_remove
+ return lines
+
+ @api.multi
+ @api.returns('account.move.line')
+ def _lines_different_policy(self, lines):
+ """ Return a set of move lines ids for which there is an
+ existing credit line but with a different policy.
+ """
+ self.ensure_one()
+ move_line_obj = self.env['account.move.line']
+ different_lines = move_line_obj.browse()
+ if not lines:
+ return different_lines
+ cr = self.env.cr
+ cr.execute("SELECT move_line_id FROM credit_control_line"
+ " WHERE policy_id != %s and move_line_id in %s"
+ " AND manually_overridden IS false",
+ (self.id, tuple(lines.ids)))
+ res = cr.fetchall()
+ if res:
+ return move_line_obj.browse([row[0] for row in res])
+ return different_lines
+
+ @api.multi
+ def check_policy_against_account(self, account):
+ """ Ensure that the policy corresponds to account relation """
+ policies = self.search([])
+ allowed = [x for x in policies
+ if account in x.account_ids or x.do_nothing]
+ if self not in allowed:
+ allowed_names = u"\n".join(x.name for x in allowed)
+ raise api.Warning(
+ _('You can only use a policy set on '
+ 'account %s.\n'
+ 'Please choose one of the following '
+ 'policies:\n %s') % (account.name, allowed_names)
+ )
+ return True
+
+
+class CreditControlPolicyLevel(models.Model):
+ """Define a policy level. A level allows to determine if
+ a move line is due and the level of overdue of the line"""
+
+ _name = "credit.control.policy.level"
+ _order = 'level'
+ _description = """A credit control policy level"""
+
+ name = fields.Char(string='Name', required=True, translate=True)
+ policy_id = fields.Many2one('credit.control.policy',
+ string='Related Policy',
+ required=True)
+ level = fields.Integer(string='Level', required=True)
+ computation_mode = fields.Selection(
+ [('net_days', 'Due Date'),
+ ('end_of_month', 'Due Date, End Of Month'),
+ ('previous_date', 'Previous Reminder')],
+ string='Compute Mode',
+ required=True
+ )
+ delay_days = fields.Integer(string='Delay (in days)', required=True)
+ email_template_id = fields.Many2one('email.template',
+ string='Email Template',
+ required=True)
+ channel = fields.Selection([('letter', 'Letter'),
+ ('email', 'Email')],
+ string='Channel',
+ required=True)
+ custom_text = fields.Text(string='Custom Message',
+ required=True,
+ translate=True)
+ custom_mail_text = fields.Text(string='Custom Mail Message',
+ required=True, translate=True)
+
+ _sql_constraint = [('unique level',
+ 'UNIQUE (policy_id, level)',
+ 'Level must be unique per policy')]
+
+ @api.one
+ @api.constrains('level', 'computation_mode')
+ def _check_level_mode(self):
+ """ The smallest level of a policy cannot be computed on the
+ "previous_date".
+ """
+ smallest_level = self.search([('policy_id', '=', self.policy_id.id)],
+ order='level asc', limit=1)
+ if smallest_level.computation_mode == 'previous_date':
+ return api.ValidationError(_('The smallest level can not be of '
+ 'type Previous Reminder'))
+
+ @api.multi
+ def _previous_level(self):
+ """ For one policy level, returns the id of the previous level
+
+ If there is no previous level, it returns None, it means that's the
+ first policy level
+
+ :return: previous level or None if there is no previous level
+ """
+ self.ensure_one()
+ previous_levels = self.search([('policy_id', '=', self.policy_id.id),
+ ('level', '<', self.level)],
+ order='level desc',
+ limit=1)
+ if not previous_levels:
+ return None
+ return previous_levels
+
+ # ----- sql time related methods ---------
+
+ @staticmethod
+ def _net_days_get_boundary():
+ return (" (mv_line.date_maturity + %(delay)s)::date <= "
+ "date(%(controlling_date)s)")
+
+ @staticmethod
+ def _end_of_month_get_boundary():
+ return ("(date_trunc('MONTH', (mv_line.date_maturity + %(delay)s))+"
+ "INTERVAL '1 MONTH - 1 day')::date"
+ "<= date(%(controlling_date)s)")
+
+ @staticmethod
+ def _previous_date_get_boundary():
+ return "(cr_line.date + %(delay)s)::date <= date(%(controlling_date)s)"
+
+ @api.multi
+ def _get_sql_date_boundary_for_computation_mode(self, controlling_date):
+ """ Return a where clauses statement for the given controlling
+ date and computation mode of the level
+ """
+ self.ensure_one()
+ fname = "_%s_get_boundary" % (self.computation_mode, )
+ if hasattr(self, fname):
+ fnc = getattr(self, fname)
+ return fnc()
+ else:
+ raise NotImplementedError(
+ _('Can not get function for computation mode: '
+ '%s is not implemented') % (fname, )
+ )
+
+ # -----------------------------------------
+
+ @api.multi
+ @api.returns('account.move.line')
+ def _get_first_level_move_lines(self, controlling_date, lines):
+ """ Retrieve all the move lines that are linked to a first level.
+ We use Raw SQL for performance. Security rule where applied in
+ policy object when the first set of lines were retrieved
+ """
+ self.ensure_one()
+ move_line_obj = self.env['account.move.line']
+ if not lines:
+ return move_line_obj.browse()
+ cr = self.env.cr
+ sql = ("SELECT DISTINCT mv_line.id\n"
+ " FROM account_move_line mv_line\n"
+ " WHERE mv_line.id in %(line_ids)s\n"
+ " AND NOT EXISTS (SELECT id\n"
+ " FROM credit_control_line\n"
+ " WHERE move_line_id = mv_line.id\n"
+ # lines from a previous level with a draft or ignored state
+ # or manually overridden
+ # have to be generated again for the previous level
+ " AND NOT manually_overridden\n"
+ " AND state NOT IN ('draft', 'ignored'))"
+ " AND (mv_line.debit IS NOT NULL AND mv_line.debit != 0.0)\n")
+ sql += " AND"
+ _get_sql_date_part = self._get_sql_date_boundary_for_computation_mode
+ sql += _get_sql_date_part(controlling_date)
+ data_dict = {'controlling_date': controlling_date,
+ 'line_ids': tuple(lines.ids),
+ 'delay': self.delay_days}
+ cr.execute(sql, data_dict)
+ res = cr.fetchall()
+ if res:
+ return move_line_obj.browse([row[0] for row in res])
+ return move_line_obj.browse()
+
+ @api.multi
+ @api.returns('account.move.line')
+ def _get_other_level_move_lines(self, controlling_date, lines):
+ """ Retrieve the move lines for other levels than first level.
+ """
+ self.ensure_one()
+ move_line_obj = self.env['account.move.line']
+ if not lines:
+ return move_line_obj.browse()
+ cr = self.env.cr
+ sql = ("SELECT mv_line.id\n"
+ " FROM account_move_line mv_line\n"
+ " JOIN credit_control_line cr_line\n"
+ " ON (mv_line.id = cr_line.move_line_id)\n"
+ " WHERE cr_line.id = (SELECT credit_control_line.id "
+ " FROM credit_control_line\n"
+ " WHERE credit_control_line.move_line_id = mv_line.id\n"
+ " AND state != 'ignored'"
+ " AND NOT manually_overridden"
+ " ORDER BY credit_control_line.level desc limit 1)\n"
+ " AND cr_line.level = %(previous_level)s\n"
+ " AND (mv_line.debit IS NOT NULL AND mv_line.debit != 0.0)\n"
+ # lines from a previous level with a draft or ignored state
+ # or manually overridden
+ # have to be generated again for the previous level
+ " AND NOT manually_overridden\n"
+ " AND cr_line.state NOT IN ('draft', 'ignored')\n"
+ " AND mv_line.id in %(line_ids)s\n")
+ sql += " AND "
+ _get_sql_date_part = self._get_sql_date_boundary_for_computation_mode
+ sql += _get_sql_date_part(controlling_date)
+ previous_level = self._previous_level()
+ data_dict = {'controlling_date': controlling_date,
+ 'line_ids': tuple(lines.ids),
+ 'delay': self.delay_days,
+ 'previous_level': previous_level.level}
+
+ # print cr.mogrify(sql, data_dict)
+ cr.execute(sql, data_dict)
+ res = cr.fetchall()
+ if res:
+ return move_line_obj.browse([row[0] for row in res])
+ return move_line_obj.browse()
+
+ @api.multi
+ @api.returns('account.move.line')
+ def get_level_lines(self, controlling_date, lines):
+ """ get all move lines in entry lines that match the current level """
+ self.ensure_one()
+ move_line_obj = self.env['account.move.line']
+ matching_lines = move_line_obj.browse()
+ if self._previous_level() is None:
+ method = self._get_first_level_move_lines
+ else:
+ method = self._get_other_level_move_lines
+ matching_lines |= method(controlling_date, lines)
+ return matching_lines
diff --git a/__unported__/account_credit_control/policy_view.xml b/account_credit_control/policy_view.xml
similarity index 96%
rename from __unported__/account_credit_control/policy_view.xml
rename to account_credit_control/policy_view.xml
index 0dfdf1de8..cdab56d34 100644
--- a/__unported__/account_credit_control/policy_view.xml
+++ b/account_credit_control/policy_view.xml
@@ -7,10 +7,12 @@
form