diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-04-24 17:42:41 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-04-24 17:42:41 +0200 |
| commit | b192431aeecc59b48898ce9c6f276b82d65cbfa6 (patch) | |
| tree | 598ec468eac64914858e24d2235827d905692c80 /addons | |
| parent | ddf601d44367a791848da38df9cff02b3e32b95b (diff) | |
| parent | ec5e27bb7cc7808d7128eae4e7e67910f40492c0 (diff) | |
[MERGE] forward port branch saas-11.3 up to ec5e27bb7cc
Diffstat (limited to 'addons')
109 files changed, 1698 insertions, 745 deletions
diff --git a/addons/account/i18n/pt_BR.po b/addons/account/i18n/pt_BR.po index b18ae9875d8..0060a5cf8de 100644 --- a/addons/account/i18n/pt_BR.po +++ b/addons/account/i18n/pt_BR.po @@ -17,7 +17,7 @@ # Luiz Carlos de Lima <luiz.carlos@akretion.com.br>, 2016 # Ademílson F. Tonato <apraqueisso@gmail.com>, 2016 # Kayky de Brito <kayky_debritodossantos@hotmail.com>, 2016 -# THIAGO MACÊDO <thiago95macedo@gmail.com>, 2016 +# Thiago MACÊDO <thiago95macedo@gmail.com>, 2016 # Manel Tinoco <maneltinoco@gmail.com>, 2016 # Fábio Novais <fabionovais@aptu.com.br>, 2016 # zimbora <alexandre.ruffer@tkobr.com>, 2016 @@ -30,13 +30,14 @@ # mariana rodrigues <mariana12v@gmail.com>, 2017 # Raphael Rodrigues <raphael0608@gmail.com>, 2018 # Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018 +# Diego Bittencourt <diegomb86@gmail.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018\n" +"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7260,6 +7261,8 @@ msgid "" "Please install a chart of accounts or create a miscellaneous journal before " "proceeding." msgstr "" +"Por favor instale o plano de contas ou crie um lançamento contábil variado " +"antes de proceder" #. module: account #: model:ir.ui.view,arch_db:account.view_account_form @@ -10601,6 +10604,8 @@ msgid "" "You cannot change the currency of the company since some journal items " "already exist" msgstr "" +"Você não pode alterar a moeda da empresa desde que já exista algum " +"lançamento contábil" #. module: account #: code:addons/account/models/account.py:271 diff --git a/addons/account/i18n/zh_CN.po b/addons/account/i18n/zh_CN.po index 3c27eac763d..037958561e2 100644 --- a/addons/account/i18n/zh_CN.po +++ b/addons/account/i18n/zh_CN.po @@ -47,13 +47,14 @@ # e2f_cn c5 <jarvisn@ecinnovations.com>, 2018 # sunny sun <sunxiaoxia@inspur.com>, 2018 # John Lin <linyinhuan@139.com>, 2018 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: John Lin <linyinhuan@139.com>, 2018\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1175,17 +1176,17 @@ msgstr "添加退款单" #. module: account #: model:ir.actions.act_window,help:account.action_account_journal_form msgid "Add a journal" -msgstr "" +msgstr "添加一个日记账" #. module: account #: model:ir.actions.act_window,help:account.action_account_form msgid "Add a new account" -msgstr "" +msgstr "添加一个新账户" #. module: account #: model:ir.actions.act_window,help:account.account_tag_action msgid "Add a new tag" -msgstr "" +msgstr "添加一个新标签" #. module: account #: selection:account.cash.rounding,strategy:0 @@ -1219,7 +1220,7 @@ msgstr "额外的备注..." #: selection:account.tax,type_tax_use:0 #: selection:account.tax.template,type_tax_use:0 msgid "Adjustment" -msgstr "" +msgstr "调整" #. module: account #: model:ir.model.fields,field_description:account.field_tax_adjustments_wizard__tax_id @@ -1452,12 +1453,12 @@ msgstr "总额" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_line__price_total msgid "Amount (with Taxes)" -msgstr "" +msgstr "金额 (含税)" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_line__price_subtotal msgid "Amount (without Taxes)" -msgstr "" +msgstr "金额 (不含税)" #. module: account #: model:ir.model.fields,field_description:account.field_account_bank_statement_line__amount_currency @@ -2909,7 +2910,7 @@ msgstr "" #. module: account #: model:ir.actions.act_window,help:account.action_invoice_tree1 msgid "Create a customer invoice" -msgstr "" +msgstr "创建一个客户发票" #. module: account #: selection:account.invoice.refund,filter_refund:0 @@ -2955,7 +2956,7 @@ msgstr "" #. module: account #: model:ir.actions.act_window,help:account.action_tax_form msgid "Create a new tax" -msgstr "" +msgstr "创建一个新的税项" #. module: account #: model:ir.actions.act_window,help:account.action_invoice_in_refund @@ -5778,7 +5779,7 @@ msgstr "负债" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_report__nbr msgid "Line Count" -msgstr "" +msgstr "行数" #. module: account #: model:ir.model.fields,help:account.field_account_invoice__move_id diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py index 7e6f9bdf20e..2c0da345e3f 100644 --- a/addons/account/models/account_invoice.py +++ b/addons/account/models/account_invoice.py @@ -553,7 +553,10 @@ class AccountInvoice(models.Model): """ self.ensure_one() self.sent = True - return self.env.ref('account.account_invoices').report_action(self) + if self.user_has_groups('account.group_account_invoice'): + return self.env.ref('account.account_invoices').report_action(self) + else: + return self.env.ref('account.account_invoices_without_payment').report_action(self) @api.multi def action_invoice_sent(self): diff --git a/addons/account/models/chart_template.py b/addons/account/models/chart_template.py index 7832a2354aa..69413f6bd66 100644 --- a/addons/account/models/chart_template.py +++ b/addons/account/models/chart_template.py @@ -853,7 +853,7 @@ class WizardMultiChartsAccounts(models.TransientModel): @api.multi def existing_accounting(self, company_id): - model_to_check = ['account.move.line', 'account.invoice', 'account.move', 'account.payment', 'account.bank.statement'] + model_to_check = ['account.move.line', 'account.invoice', 'account.payment', 'account.bank.statement'] for model in model_to_check: if len(self.env[model].search([('company_id', '=', company_id.id)])) > 0: return True @@ -888,7 +888,7 @@ class WizardMultiChartsAccounts(models.TransientModel): accounting_props.unlink() # delete account, journal, tax, fiscal position and reconciliation model - models_to_delete = ['account.reconcile.model', 'account.fiscal.position', 'account.tax', 'account.journal'] + models_to_delete = ['account.reconcile.model', 'account.fiscal.position', 'account.tax', 'account.move', 'account.journal'] for model in models_to_delete: res = self.env[model].search([('company_id', '=', self.company_id.id)]) if len(res): diff --git a/addons/account/models/reconciliation_widget.py b/addons/account/models/reconciliation_widget.py index 8cd405ac5be..b0ce440093f 100644 --- a/addons/account/models/reconciliation_widget.py +++ b/addons/account/models/reconciliation_widget.py @@ -338,6 +338,7 @@ class AccountReconciliation(models.AbstractModel): partner_id = is_partner and row['partner_id'] or None rec_prop = self._get_move_line_reconciliation_proposition(account.id, partner_id) row['reconciliation_proposition'] = self._prepare_move_lines(rec_prop, target_currency=currency) + row['company_id'] = account.company_id.id return rows @api.model diff --git a/addons/account/views/account_report.xml b/addons/account/views/account_report.xml index 2ba116e884a..8918d2763e7 100644 --- a/addons/account/views/account_report.xml +++ b/addons/account/views/account_report.xml @@ -11,6 +11,7 @@ file="account.report_invoice_with_payments" attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/','')+'.pdf')" print_report_name="(object._get_printed_report_name())" + groups="account.group_account_invoice" /> <report diff --git a/addons/account_check_printing/i18n/pt_BR.po b/addons/account_check_printing/i18n/pt_BR.po index e1096daea52..2cfe7bed05b 100644 --- a/addons/account_check_printing/i18n/pt_BR.po +++ b/addons/account_check_printing/i18n/pt_BR.po @@ -9,13 +9,14 @@ # falexandresilva <falexandresilva@gmail.com>, 2016 # danimaribeiro <danimaribeiro@gmail.com>, 2016 # Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatic4@gmail.com>, 2017 +# Diego Bittencourt <diegomb86@gmail.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatic4@gmail.com>, 2017\n" +"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -86,7 +87,7 @@ msgstr "Impressão de Cheque" #. module: account_check_printing #: model:ir.model.fields,field_description:account_check_printing.field_account_journal__check_printing_payment_method_selected msgid "Check Printing Payment Method Selected" -msgstr "" +msgstr "Verifique a impressão do método de pagamento selecionada" #. module: account_check_printing #: model:ir.model.fields,field_description:account_check_printing.field_res_config_settings__account_check_printing_margin_right diff --git a/addons/account_check_printing/models/account_payment.py b/addons/account_check_printing/models/account_payment.py index 9bd4a429cf5..b195814843f 100644 --- a/addons/account_check_printing/models/account_payment.py +++ b/addons/account_check_printing/models/account_payment.py @@ -11,7 +11,7 @@ class AccountRegisterPayments(models.TransientModel): _inherit = "account.register.payments" check_amount_in_words = fields.Char(string="Amount in Words") - check_manual_sequencing = fields.Boolean(related='journal_id.check_manual_sequencing') + check_manual_sequencing = fields.Boolean(related='journal_id.check_manual_sequencing', readonly=1) # Note: a check_number == 0 means that it will be attributed when the check is printed check_number = fields.Integer(string="Check Number", readonly=True, copy=False, default=0, help="Number of the check corresponding to this payment. If your pre-printed check are not already numbered, " @@ -34,7 +34,6 @@ class AccountRegisterPayments(models.TransientModel): res = super(AccountRegisterPayments, self)._prepare_payment_vals(invoices) if self.payment_method_id == self.env.ref('account_check_printing.account_payment_method_check'): res.update({ - 'check_amount_in_words': self.currency_id.amount_to_text(res['amount']) if self.multi else self.check_amount_in_words, 'check_manual_sequencing': self.check_manual_sequencing, }) return res diff --git a/addons/account_payment/i18n/pt_BR.po b/addons/account_payment/i18n/pt_BR.po index 22f9bcf3401..197bbaf9e39 100644 --- a/addons/account_payment/i18n/pt_BR.po +++ b/addons/account_payment/i18n/pt_BR.po @@ -9,13 +9,14 @@ # danimaribeiro <danimaribeiro@gmail.com>, 2017 # mariana rodrigues <mariana12v@gmail.com>, 2018 # Raphael Rodrigues <raphael0608@gmail.com>, 2018 +# Diego Bittencourt <diegomb86@gmail.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Raphael Rodrigues <raphael0608@gmail.com>, 2018\n" +"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -236,4 +237,4 @@ msgstr "Transações" #. module: account_payment #: model:ir.ui.view,arch_db:account_payment.payment_confirmation_status msgid "Your payment has been authorized." -msgstr "" +msgstr "Seu pagamento foi autorizado." diff --git a/addons/analytic/i18n/pt_BR.po b/addons/analytic/i18n/pt_BR.po index 2bbda639a67..8588a418666 100644 --- a/addons/analytic/i18n/pt_BR.po +++ b/addons/analytic/i18n/pt_BR.po @@ -9,13 +9,14 @@ # Martin Trigaux, 2016 # Luiz Carlos de Lima <luiz.carlos@akretion.com.br>, 2016 # falexandresilva <falexandresilva@gmail.com>, 2018 +# Diego Bittencourt <diegomb86@gmail.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: falexandresilva <falexandresilva@gmail.com>, 2018\n" +"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -146,7 +147,7 @@ msgstr "Saldo" #. module: analytic #: model:ir.ui.view,arch_db:analytic.view_account_analytic_account_kanban msgid "Balance:" -msgstr "" +msgstr "Saldo:" #. module: analytic #: model:ir.actions.act_window,name:analytic.action_analytic_account_form @@ -298,6 +299,8 @@ msgid "" " analytic accounts. You can track costs and revenues to analyse\n" " your margins easily." msgstr "" +"No Odoo, ordens de vendas e projetos são implementados usando\n" +"o analisador de contas. Você pode rastrear os custos e receitas para analisar suas margens facilmente." #. module: analytic #: model:ir.model.fields,field_description:analytic.field_account_analytic_account____last_update @@ -388,6 +391,10 @@ msgid "" " (fixed price invoices), on timesheets (based on the work done) or\n" " on expenses (e.g. reinvoicing of travel costs)." msgstr "" +"Receitas serão criadas automaticamente quando você cria uma fatura\n" +"para o cliente. As faturas podem ser criadas baseadas em ordens de venda\n" +"(faturas com preço fixo), no apontamento de horas (baseado no trabalho feito) ou \n" +"nas despesas (ex. reembolso de viagem)." #. module: analytic #: model:ir.model.fields,field_description:analytic.field_account_analytic_group__parent_right diff --git a/addons/analytic/i18n/zh_CN.po b/addons/analytic/i18n/zh_CN.po index 55b2ae65ae3..b4064414908 100644 --- a/addons/analytic/i18n/zh_CN.po +++ b/addons/analytic/i18n/zh_CN.po @@ -8,13 +8,14 @@ # Martin Trigaux, 2018 # liAnGjiA <liangjia@qq.com>, 2018 # 老窦 北京 <2662059195@qq.com>, 2018 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,7 +38,7 @@ msgstr "" #. module: analytic #: model:ir.actions.act_window,help:analytic.account_analytic_tag_action msgid "Add a new tag" -msgstr "" +msgstr "添加一个新标签" #. module: analytic #: model:ir.model.fields,field_description:analytic.field_account_analytic_line__amount diff --git a/addons/base_import_module/models/ir_module.py b/addons/base_import_module/models/ir_module.py index d9c3d4092a2..df7ad832d86 100644 --- a/addons/base_import_module/models/ir_module.py +++ b/addons/base_import_module/models/ir_module.py @@ -24,6 +24,13 @@ class IrModule(models.Model): imported = fields.Boolean(string="Imported Module") + @api.depends('name') + def _get_latest_version(self): + imported_modules = self.filtered(lambda m: m.imported and m.latest_version) + for module in imported_modules: + module.installed_version = module.latest_version + super(IrModule, self - imported_modules)._get_latest_version() + @api.multi def _import_module(self, module, path, force=False): known_mods = self.search([]) @@ -32,6 +39,8 @@ class IrModule(models.Model): terp = load_information_from_description_file(module, mod_path=path) values = self.get_values_from_terp(terp) + if 'version' in terp: + values['latest_version'] = terp['version'] unmet_dependencies = set(terp['depends']).difference(installed_mods) diff --git a/addons/contacts/i18n/zh_CN.po b/addons/contacts/i18n/zh_CN.po index f29d9053840..c81dd186e3a 100644 --- a/addons/contacts/i18n/zh_CN.po +++ b/addons/contacts/i18n/zh_CN.po @@ -5,13 +5,14 @@ # Translators: # Jeffery CHEN Fan <jeffery9@gmail.com>, 2016 # Martin Trigaux, 2017 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Martin Trigaux, 2017\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -65,7 +66,7 @@ msgstr "国家组" #. module: contacts #: model:ir.actions.act_window,help:contacts.action_contacts msgid "Create a contact in your address book" -msgstr "" +msgstr "在你的地址簿中创建一个联系人" #. module: contacts #: model:ir.ui.menu,name:contacts.menu_country_state_partner @@ -80,7 +81,7 @@ msgstr "定位" #. module: contacts #: model:ir.actions.act_window,help:contacts.action_contacts msgid "Odoo helps you to easily track all activities related to a customer." -msgstr "" +msgstr "Odoo 帮助您轻松跟进与客户相关的所有活动。" #. module: contacts #: model:ir.ui.menu,name:contacts.res_partner_industry_menu diff --git a/addons/crm/i18n/zh_CN.po b/addons/crm/i18n/zh_CN.po index e06041ecba2..de3540a7eaf 100644 --- a/addons/crm/i18n/zh_CN.po +++ b/addons/crm/i18n/zh_CN.po @@ -16,13 +16,14 @@ # e2f <projects@e2f.com>, 2018 # e2f_cn c5 <jarvisn@ecinnovations.com>, 2018 # mrshelly <mrshelly@hotmail.com>, 2018 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:09+0000\n" "PO-Revision-Date: 2018-03-22 14:09+0000\n" -"Last-Translator: mrshelly <mrshelly@hotmail.com>, 2018\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -163,7 +164,7 @@ msgstr "# 活动" #: code:addons/crm/static/src/js/tour.js:22 #, python-format msgid "<b>Choose a name</b> for your opportunity." -msgstr "" +msgstr "为你的商机 <b>选择一个名字</b>" #. module: crm #. openerp-web @@ -475,7 +476,7 @@ msgstr "归类和分析线索/商机类别, 例如:培训,服务" #: code:addons/crm/static/src/js/tour.js:26 #, python-format msgid "Click here to <b>add your opportunity</b>." -msgstr "" +msgstr "点击这里 <b>添加你的商机</b>." #. module: crm #. openerp-web @@ -670,7 +671,7 @@ msgstr "" #. module: crm #: model:ir.actions.act_window,help:crm.crm_lead_tag_action msgid "Create a new tag for your opportunities" -msgstr "" +msgstr "为你的商机创建一个新的标签" #. module: crm #: model:ir.actions.act_window,name:crm.create_opportunity_simplified @@ -681,7 +682,7 @@ msgstr "创建商机" #. module: crm #: model:ir.actions.act_window,help:crm.relate_partner_opportunities msgid "Create an new opportunity related to this customer" -msgstr "" +msgstr "创建一个新的商机关联到此客户" #. module: crm #: model:ir.actions.act_window,help:crm.crm_lead_tag_action @@ -826,7 +827,7 @@ msgstr "默认值" #. module: crm #: model:ir.actions.act_window,help:crm.crm_lost_reason_action msgid "Define a new lost reason" -msgstr "" +msgstr "定义一个丢失的理由。" #. module: crm #: model:ir.ui.view,arch_db:crm.crm_case_kanban_view_leads @@ -935,7 +936,7 @@ msgstr "预期结束日期" #. module: crm #: selection:crm.team,dashboard_graph_group_pipeline:0 msgid "Expected Closing Day" -msgstr "" +msgstr "预计截止日" #. module: crm #: selection:crm.team,dashboard_graph_group_pipeline:0 @@ -965,7 +966,7 @@ msgstr "预期收益" #. module: crm #: model:ir.model.fields,field_description:crm.field_crm_team__dashboard_graph_period_pipeline msgid "Expected to Close" -msgstr "" +msgstr "预计关闭" #. module: crm #: model:ir.ui.view,arch_db:crm.crm_opportunity_report_view_search @@ -1581,7 +1582,7 @@ msgstr "无主题" #. module: crm #: model:ir.actions.act_window,help:crm.crm_lead_action_activities msgid "No next activity" -msgstr "" +msgstr "没有下一个活动" #. module: crm #: selection:crm.lead,kanban_state:0 @@ -1634,7 +1635,7 @@ msgstr "Odoo帮助您追踪销售漏斗,关注潜在销售并更好的预测æœ #. module: crm #: model:ir.ui.view,arch_db:crm.crm_team_salesteams_view_kanban msgid "Open Opportunities" -msgstr "" +msgstr "打开商机" #. module: crm #: model:ir.ui.view,arch_db:crm.crm_team_salesteams_view_kanban @@ -2067,7 +2068,7 @@ msgstr "选择商机/线索" #. module: crm #: model:ir.actions.act_window,name:crm.action_lead_mass_mail msgid "Send an email" -msgstr "" +msgstr "发送电子邮件" #. module: crm #: model:ir.model.fields,field_description:crm.field_crm_stage__sequence @@ -2544,7 +2545,7 @@ msgstr "网站" #. module: crm #: model:ir.model.fields,help:crm.field_crm_lead__website msgid "Website of the contact" -msgstr "" +msgstr "联系人网站" #. module: crm #: model:ir.ui.view,arch_db:crm.res_config_settings_view_form @@ -2679,7 +2680,7 @@ msgstr "例如:www.odoo.com" #: code:addons/crm/models/crm_lead.py:926 #, python-format msgid "or send an email to %s" -msgstr "" +msgstr "或者发送电子邮件给 %s" #. module: crm #: model:ir.model,name:crm.model_res_config_settings diff --git a/addons/crm_phone_validation/i18n/tr.po b/addons/crm_phone_validation/i18n/tr.po index 83ffe7f249b..05c08061670 100644 --- a/addons/crm_phone_validation/i18n/tr.po +++ b/addons/crm_phone_validation/i18n/tr.po @@ -4,14 +4,14 @@ # # Translators: # Murat Kaplan <muratk@projetgrup.com>, 2017 -# Martin Trigaux <mat@odoo.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-24 09:00+0000\n" -"PO-Revision-Date: 2017-10-24 09:00+0000\n" -"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n" +"POT-Creation-Date: 2018-03-22 14:11+0000\n" +"PO-Revision-Date: 2018-03-22 14:11+0000\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,12 +20,14 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: crm_phone_validation -#: model:ir.model.fields,help:crm_phone_validation.field_res_config_settings_crm_phone_valid_method +#: model:ir.model.fields,help:crm_phone_validation.field_res_config_settings__crm_phone_valid_method msgid "" "Always encode phone numbers using international format. Otherwise numbers " "coming from the company's country are nationaly formatted. International " "numbers are always using international format." msgstr "" +"Her zaman telefon numaraları uluslararası formatta kodlanır. Yoksa " +"numaralar, şirketin bağlı olduğu ülkeden ulusal formatta alınır." #. module: crm_phone_validation #: model:ir.model,name:crm_phone_validation.model_res_partner @@ -38,9 +40,9 @@ msgid "Lead/Opportunity" msgstr "Aday/Fırsat" #. module: crm_phone_validation -#: model:ir.model.fields,field_description:crm_phone_validation.field_res_config_settings_crm_phone_valid_method +#: model:ir.model.fields,field_description:crm_phone_validation.field_res_config_settings__crm_phone_valid_method msgid "Local Numbers" -msgstr "" +msgstr "Yerel Numaralar" #. module: crm_phone_validation #: model:ir.model,name:crm_phone_validation.model_res_config_settings diff --git a/addons/delivery/i18n/fr.po b/addons/delivery/i18n/fr.po index a38bfb1d348..f34c03d935d 100644 --- a/addons/delivery/i18n/fr.po +++ b/addons/delivery/i18n/fr.po @@ -24,13 +24,14 @@ # fr trans <e2ftrans1@yahoo.com>, 2017 # fr rev <e2ffr02@hotmail.com>, 2017 # e2f <projects@e2f.com>, 2018 +# Cécile Collart <cco@odoo.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: e2f <projects@e2f.com>, 2018\n" +"Last-Translator: Cécile Collart <cco@odoo.com>, 2018\n" "Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -884,7 +885,7 @@ msgstr "" #: model:ir.ui.view,arch_db:delivery.report_package_barcode_delivery #: model:ir.ui.view,arch_db:delivery.report_package_barcode_small_delivery msgid "Weight:" -msgstr "" +msgstr "Poids:" #. module: delivery #: model:ir.model.fields,field_description:delivery.field_product_packaging__width diff --git a/addons/fleet/i18n/zh_CN.po b/addons/fleet/i18n/zh_CN.po index 04a464def91..6e72eb28ebe 100644 --- a/addons/fleet/i18n/zh_CN.po +++ b/addons/fleet/i18n/zh_CN.po @@ -9,13 +9,14 @@ # liAnGjiA <liangjia@qq.com>, 2017 # 老窦 北京 <2662059195@qq.com>, 2018 # e2f <projects@e2f.com>, 2018 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:11+0000\n" "PO-Revision-Date: 2018-03-22 14:11+0000\n" -"Last-Translator: e2f <projects@e2f.com>, 2018\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -60,7 +61,7 @@ msgstr "有效" #. module: fleet #: model:ir.actions.act_window,help:fleet.fleet_vehicle_tag_action msgid "Add a new tag" -msgstr "" +msgstr "添加一个新标签" #. module: fleet #: model:ir.ui.view,arch_db:fleet.fleet_vehicle_log_fuel_view_form diff --git a/addons/hr/i18n/zh_CN.po b/addons/hr/i18n/zh_CN.po index ae922b1b3e0..e33bb2666db 100644 --- a/addons/hr/i18n/zh_CN.po +++ b/addons/hr/i18n/zh_CN.po @@ -12,13 +12,14 @@ # Martin Trigaux, 2017 # nle_odoo, 2018 # fausthuang, 2018 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: fausthuang, 2018\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,7 +72,7 @@ msgstr "有效" #: model:ir.actions.act_window,help:hr.act_employee_from_department #: model:ir.actions.act_window,help:hr.open_view_employee_list_my msgid "Add a new employee" -msgstr "" +msgstr "添加一个新的员工" #. module: hr #: model:ir.ui.view,arch_db:hr.view_department_filter @@ -153,7 +154,7 @@ msgstr "合同信息" #. module: hr #: model:ir.actions.act_window,help:hr.open_module_tree_department msgid "Create a new department" -msgstr "" +msgstr "创建一个新的部门" #. module: hr #: model:ir.model.fields,field_description:hr.field_hr_department__create_uid @@ -443,12 +444,12 @@ msgstr "最后更新时间" #. module: hr #: selection:hr.employee,marital:0 msgid "Legal Cohabitant" -msgstr "" +msgstr "合法同居者" #. module: hr #: model:ir.actions.act_window,help:hr.action_hr_job msgid "Let's create a job position." -msgstr "" +msgstr "让我们创建一个工作职位" #. module: hr #: selection:hr.employee,gender:0 @@ -595,7 +596,7 @@ msgstr "个人隐私信息" #. module: hr #: model:ir.actions.act_window,help:hr.action_hr_job msgid "Ready to recruit more efficiently?" -msgstr "" +msgstr "准备更有效地招聘?" #. module: hr #: model:ir.ui.view,arch_db:hr.view_hr_job_form @@ -755,14 +756,14 @@ msgstr "公司内部门的工作岗位名称必须唯一!" #. module: hr #: model:res.groups,comment:hr.group_hr_user msgid "The user will be able to approve document created by employees." -msgstr "" +msgstr "此用户将能审批员工创建的单据" #. module: hr #: model:res.groups,comment:hr.group_hr_manager msgid "" "The user will have an access to the human resources configuration as well as" " statistic reports." -msgstr "" +msgstr "此用户将有权限访问人力资源配置以及统计报表。" #. module: hr #: model:ir.model.fields,help:hr.field_hr_employee__image diff --git a/addons/hr_attendance/i18n/tr.po b/addons/hr_attendance/i18n/tr.po index 484e98b7b62..6ce3df77fde 100644 --- a/addons/hr_attendance/i18n/tr.po +++ b/addons/hr_attendance/i18n/tr.po @@ -12,13 +12,14 @@ # UNIBRAVO SOFTWARE <unibravo@gmail.com>, 2017 # Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017 # İlknur Püskül <ilknurpuskull@gmail.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: İlknur Püskül <ilknurpuskull@gmail.com>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -61,14 +62,14 @@ msgstr "" #: code:addons/hr_attendance/static/src/js/greeting_message.js:117 #, python-format msgid "An apple a day keeps the doctor away" -msgstr "" +msgstr "Günlük bir elma doktoru uzakta tutar." #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/js/greeting_message.js:106 #, python-format msgid "Another good day's work! See you soon!" -msgstr "" +msgstr "Çalışmak için başka iyi bir gün! Yakında görüşürüz!" #. module: hr_attendance #: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances @@ -128,7 +129,7 @@ msgstr "" #: code:addons/hr_attendance/models/hr_employee.py:108 #, python-format msgid "Cannot perform check in or check out on multiple employees." -msgstr "" +msgstr "Birden fazla personelin girişini ya da çıkışını yapamazsınız." #. module: hr_attendance #: code:addons/hr_attendance/models/hr_employee.py:122 @@ -142,48 +143,48 @@ msgstr "" #. module: hr_attendance #: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__check_in msgid "Check In" -msgstr "" +msgstr "Giriş" #. module: hr_attendance #: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances msgid "Check In / Check Out" -msgstr "" +msgstr "Giriş/Çıkış" #. module: hr_attendance #: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__check_out msgid "Check Out" -msgstr "" +msgstr "Çıkış" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:53 #, python-format msgid "Check in" -msgstr "" +msgstr "Giriş" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:49 #, python-format msgid "Check out" -msgstr "" +msgstr "Çıkış" #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form msgid "Check-In/Out" -msgstr "" +msgstr "Giriş/Çıkış" #. module: hr_attendance #: selection:hr.employee,attendance_state:0 msgid "Checked in" -msgstr "" +msgstr "Giriş Yapıldı" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:109 #, python-format msgid "Checked in at" -msgstr "" +msgstr "Kayıt yapıldı" #. module: hr_attendance #: selection:hr.employee,attendance_state:0 @@ -195,21 +196,21 @@ msgstr "" #: code:addons/hr_attendance/static/src/xml/attendance.xml:97 #, python-format msgid "Checked out at" -msgstr "" +msgstr "Çıkış kaydı yapıldı" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:27 #, python-format msgid "Click to check in" -msgstr "" +msgstr "Giriş yapmak için tıklayınız" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:31 #, python-format msgid "Click to check out" -msgstr "" +msgstr "Çıkış yapmak için tıklayınız" #. module: hr_attendance #. openerp-web @@ -260,6 +261,7 @@ msgstr "Görünüm Adı" #, python-format msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise" msgstr "" +"Erken yatmak ve erken kalkmak insanı sağlıklı, zengin ve akıllı yapar." #. module: hr_attendance #. openerp-web @@ -278,13 +280,13 @@ msgstr "Personel" #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.print_employee_badge msgid "Employee Image" -msgstr "" +msgstr "Personel Resmi" #. module: hr_attendance #: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings__group_attendance_use_pin #: model:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form msgid "Employee PIN" -msgstr "" +msgstr "Personel PIN" #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form @@ -306,49 +308,49 @@ msgstr "Personeller" #. module: hr_attendance #: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin msgid "Enable PIN use" -msgstr "" +msgstr "PIN kullanımını etkinleştir" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/js/my_attendances.js:29 #, python-format msgid "Error : Could not find employee linked to user" -msgstr "" +msgstr "Hata: Kullanıcıya bağlı personel bulunamadı" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:35 #, python-format msgid "Error : Could not find employee linked to user." -msgstr "" +msgstr "Hata: Kullanıcıya bağlı personel bulunamadı" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:81 #, python-format msgid "Error: could not find corresponding employee." -msgstr "" +msgstr "Hata: Personel uyuşması bulunamadı" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/js/greeting_message.js:70 #, python-format msgid "First come, first served" -msgstr "" +msgstr "İlk geliş, ilk hizmet." #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/js/greeting_message.js:85 #, python-format msgid "Glad to have you back, it's been a while!" -msgstr "" +msgstr "Geri döndüğüne sevindim, uzun zaman olmuştu!" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/js/greeting_message.js:76 #, python-format msgid "Good afternoon" -msgstr "" +msgstr "İyi Günler" #. module: hr_attendance #. openerp-web @@ -362,7 +364,7 @@ msgstr "" #: code:addons/hr_attendance/static/src/js/greeting_message.js:73 #, python-format msgid "Good morning" -msgstr "" +msgstr "Günaydın" #. module: hr_attendance #. openerp-web @@ -370,14 +372,14 @@ msgstr "" #: code:addons/hr_attendance/static/src/js/greeting_message.js:80 #, python-format msgid "Good night" -msgstr "" +msgstr "İyi geceler" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:100 #, python-format msgid "Goodbye" -msgstr "" +msgstr "Hoşçakal" #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter @@ -389,7 +391,7 @@ msgstr "Grupla" #: code:addons/hr_attendance/static/src/js/greeting_message.js:120 #, python-format msgid "Have a good afternoon" -msgstr "" +msgstr "İyi günler dilerim." #. module: hr_attendance #. openerp-web @@ -403,14 +405,14 @@ msgstr "" #: code:addons/hr_attendance/static/src/js/greeting_message.js:125 #, python-format msgid "Have a good evening" -msgstr "" +msgstr "İyi akşamlar dilerim." #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/js/greeting_message.js:113 #, python-format msgid "Have a nice lunch!" -msgstr "" +msgstr "Öğle yemeğiniz iyi geçsin." #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter @@ -432,24 +434,24 @@ msgstr "" #: code:addons/hr_attendance/static/src/js/greeting_message.js:88 #, python-format msgid "If a job is worth doing, it is worth doing well!" -msgstr "" +msgstr "Bir iş yapmaya değer ise, iyi yapmaya değer!" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:120 #, python-format msgid "Invalid request, please return to the main menu." -msgstr "" +msgstr "Geçersiz talep, lütfen ana menüye geri dönün." #. module: hr_attendance #: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode msgid "Kiosk Mode" -msgstr "" +msgstr "Kiosk Modu" #. module: hr_attendance #: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__last_attendance_id msgid "Last Attendance" -msgstr "" +msgstr "Son Katılım" #. module: hr_attendance #: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update @@ -469,7 +471,7 @@ msgstr "Son Güncelleme" #. module: hr_attendance #: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances msgid "Manage Attendances" -msgstr "" +msgstr "Katılımları Yönet" #. module: hr_attendance #: model:res.groups,name:hr_attendance.group_hr_attendance_manager @@ -480,7 +482,7 @@ msgstr "Yönetici" #: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__manual_attendance #: model:res.groups,name:hr_attendance.group_hr_attendance msgid "Manual Attendance" -msgstr "" +msgstr "Manuel Katılım" #. module: hr_attendance #: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message @@ -500,7 +502,7 @@ msgstr "" #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter msgid "No Check Out" -msgstr "" +msgstr "Çıkış kaydı yok" #. module: hr_attendance #: model:ir.actions.act_window,help:hr_attendance.hr_attendance_action @@ -526,7 +528,7 @@ msgstr "Memur" #. module: hr_attendance #: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__pin msgid "PIN" -msgstr "" +msgstr "PIN" #. module: hr_attendance #: model:ir.model.fields,help:hr_attendance.field_hr_employee__pin @@ -545,7 +547,7 @@ msgstr "" #: code:addons/hr_attendance/static/src/xml/attendance.xml:59 #, python-format msgid "Please enter your PIN to check out" -msgstr "" +msgstr "Lütfen çıkış için PIN girin" #. module: hr_attendance #. openerp-web @@ -557,7 +559,7 @@ msgstr "" #. module: hr_attendance #: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge msgid "Print Badge" -msgstr "" +msgstr "Rozeti Yazdır" #. module: hr_attendance #: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report @@ -569,19 +571,19 @@ msgstr "Raporlama" #: code:addons/hr_attendance/static/src/xml/attendance.xml:13 #, python-format msgid "Scan your badge" -msgstr "" +msgstr "Rozetinizi Tarayın" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:15 #, python-format msgid "Select Employee" -msgstr "" +msgstr "Personel Seç" #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form msgid "Set PIN codes in the employee detail form (in HR Settings tab)." -msgstr "" +msgstr "Personel detay formunda PIN kodlarını ayarla (İK Ayarları sekmesinde)" #. module: hr_attendance #: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings @@ -603,26 +605,26 @@ msgstr "" msgid "" "The Badge ID must be unique, this one is already assigned to another " "employee." -msgstr "" +msgstr "Rozet ID eşsiz olmalıdır, bu başka bir personele daha önce atanmış." #. module: hr_attendance #: code:addons/hr_attendance/models/hr_employee.py:63 #, python-format msgid "The PIN must be a sequence of digits." -msgstr "" +msgstr "PIN rakamlardan oluşmalıdır." #. module: hr_attendance #: model:ir.actions.act_window,help:hr_attendance.hr_attendance_action #: model:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee msgid "The attendance records of your employees will be displayed here." -msgstr "" +msgstr "Personelinizin katılım kayıtları burada gösterilecektir." #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/js/greeting_message.js:68 #, python-format msgid "The early bird catches the worm" -msgstr "" +msgstr "Erken kalkan yol alır" #. module: hr_attendance #: model:ir.model.fields,help:hr_attendance.field_hr_employee__manual_attendance @@ -630,6 +632,8 @@ msgid "" "The employee will have access to the \"My Attendances\" menu to check in and" " out from his session" msgstr "" +"Personel kendi oturumlarının giriş/çıkışlarına \"Katılımlarım\" menüsünden " +"ulaşabilecek." #. module: hr_attendance #: model:res.groups,comment:hr_attendance.group_hr_attendance @@ -644,6 +648,8 @@ msgid "" "The user will have to enter his PIN to check in and out manually at the " "company screen." msgstr "" +"Kullanıcı, şirket ekranında manuel olarak giriş/çıkışlarını kontrol etmek " +"için PIN kodunu girmelidir." #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter @@ -653,7 +659,7 @@ msgstr "Bugün" #. module: hr_attendance #: model:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form msgid "Use PIN codes to check in in Kiosk Mode" -msgstr "" +msgstr "Kiosk Modu'nda giriş için PIN kodu kullanın" #. module: hr_attendance #. openerp-web @@ -689,25 +695,25 @@ msgstr "Çalışılan Saatler" #: code:addons/hr_attendance/models/hr_employee.py:79 #, python-format msgid "Wrong PIN" -msgstr "" +msgstr "nlış PIN" #. module: hr_attendance #: code:addons/hr_attendance/models/hr_attendance.py:106 #, python-format msgid "You cannot duplicate an attendance." -msgstr "" +msgstr "Bir katılımı çoğaltamazsınız." #. module: hr_attendance #: model:ir.model.fields,help:hr_attendance.field_hr_employee__attendance_ids msgid "list of attendances for the employee" -msgstr "" +msgstr "Personel için katılım listesi" #. module: hr_attendance #. openerp-web #: code:addons/hr_attendance/static/src/xml/attendance.xml:123 #, python-format msgid "ok" -msgstr "" +msgstr "Tamam" #. module: hr_attendance #. openerp-web diff --git a/addons/hr_expense/security/ir.model.access.csv b/addons/hr_expense/security/ir.model.access.csv index c059ed5d393..b0e187d617f 100644 --- a/addons/hr_expense/security/ir.model.access.csv +++ b/addons/hr_expense/security/ir.model.access.csv @@ -14,4 +14,4 @@ access_account_invoice_tax_user,account.invoice.tax.user,account.model_account_i access_account_move_user,account.move.user,account.model_account_move,hr_expense.group_hr_expense_user,1,0,0,0
access_account_move_line_user,account.move.line.user,account.model_account_move_line,hr_expense.group_hr_expense_user,1,0,0,0
access_account_analytic_line_user,account.analytic.line.user,account.model_account_analytic_line,hr_expense.group_hr_expense_user,1,1,1,1
-access_mail_activity_type_expense_user,mail.activity.type.expense.user,mail.model_mail_activity_type,hr_expense.group_hr_expense_user,1,1,1,1
+access_mail_activity_type_expense_user,mail.activity.type.expense.user,mail.model_mail_activity_type,hr_expense.group_hr_expense_manager,1,1,1,1
diff --git a/addons/hr_holidays/i18n/tr.po b/addons/hr_holidays/i18n/tr.po index 2252af18bba..fed53503b27 100644 --- a/addons/hr_holidays/i18n/tr.po +++ b/addons/hr_holidays/i18n/tr.po @@ -18,13 +18,14 @@ # UNIBRAVO SOFTWARE <unibravo@gmail.com>, 2017 # Esin Kandemir <esaykandemir@gmail.com>, 2017 # Levent Karakaş <levent@mektup.at>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Levent Karakaş <levent@mektup.at>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1016,7 +1017,7 @@ msgstr "Yönetici" #. module: hr_holidays #: model:ir.ui.menu,name:hr_holidays.menu_hr_holidays_approvals msgid "Managers" -msgstr "" +msgstr "Yöneticiler" #. module: hr_holidays #: model:ir.ui.view,arch_db:hr_holidays.hr_holiday_status_view_kanban diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 377e6d7d640..57595b2643e 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -209,7 +209,7 @@ class HolidaysRequest(models.Model): if nholidays: raise ValidationError(_('You can not have 2 leaves that overlaps on same day!')) - @api.constrains('state', 'number_of_days_temp') + @api.constrains('state', 'number_of_days_temp', 'holiday_status_id') def _check_holidays(self): for holiday in self: if holiday.holiday_type != 'employee' or not holiday.employee_id or holiday.holiday_status_id.limit: diff --git a/addons/hr_holidays/views/hr_leave_allocation_views.xml b/addons/hr_holidays/views/hr_leave_allocation_views.xml index 5dc76e7d752..efc3b36879e 100644 --- a/addons/hr_holidays/views/hr_leave_allocation_views.xml +++ b/addons/hr_holidays/views/hr_leave_allocation_views.xml @@ -139,6 +139,7 @@ Create a new leave allocation request </p> </field> + <field name="context">{}</field> <field name="domain">[('employee_id.user_id', '=', uid)]</field> <field name="view_id" ref="edit_new_allocation"/> <field name="search_view_id" ref="view_hr_leave_allocation_filter"/> @@ -151,6 +152,7 @@ <field name="context">{ 'search_default_approve':1, }</field> + <field name="domain">[]</field> <field name="view_id" ref="edit_new_allocation"/> <field name="search_view_id" ref="view_hr_leave_allocation_filter"/> </record> @@ -161,6 +163,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form,kanban</field> <field name="context">{'search_default_department':1, 'search_default_approve':1}</field> + <field name="domain">[]</field> <field name="help" type="html"> <p class="o_view_nocontent_smiling_face"> Create a new leave allocation @@ -179,6 +182,7 @@ 'default_department_id': active_id, 'search_default_approve':1} </field> + <field name="domain">[]</field> <field name="search_view_id" ref="view_hr_leave_allocation_filter"/> </record> diff --git a/addons/hr_holidays/views/hr_leave_views.xml b/addons/hr_holidays/views/hr_leave_views.xml index f1b990a88cb..1b210c22eb4 100644 --- a/addons/hr_holidays/views/hr_leave_views.xml +++ b/addons/hr_holidays/views/hr_leave_views.xml @@ -210,6 +210,7 @@ <field name="res_model">hr.leave</field> <field name="view_type">form</field> <field name="view_id" ref="edit_holiday_new_request"/> + <field name="context">{}</field> <field name="domain">[('user_id', '=', uid)]</field> <field name="search_view_id" ref="view_hr_holidays_filter"/> <field name="help" type="html"> @@ -262,6 +263,8 @@ Create a new leave request </p> </field> + <field name="context">{}</field> + <field name="domain">[]</field> <field name="search_view_id" ref="view_hr_holidays_filter"/> </record> @@ -271,6 +274,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form,calendar,kanban</field> <field name="context">{'search_default_department':1, 'search_default_approve':1}</field> + <field name="domain">[]</field> <field name="help" type="html"> <p class="o_view_nocontent_smiling_face"> Create a new leave request @@ -338,6 +342,7 @@ 'default_department_id': active_id, 'search_default_approve':1} </field> + <field name="domain">[]</field> <field name="view_id" ref="view_holiday"/> <field name="search_view_id" ref="view_hr_holidays_filter"/> </record> diff --git a/addons/hr_payroll/i18n/fr.po b/addons/hr_payroll/i18n/fr.po index 1dd19e13e45..4b4d95b2b45 100644 --- a/addons/hr_payroll/i18n/fr.po +++ b/addons/hr_payroll/i18n/fr.po @@ -24,13 +24,14 @@ # e2f <projects@e2f.com>, 2018 # Clo <clo@odoo.com>, 2018 # nthnnl <nathan070@me.com>, 2018 +# Cécile Collart <cco@odoo.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: nthnnl <nathan070@me.com>, 2018\n" +"Last-Translator: Cécile Collart <cco@odoo.com>, 2018\n" "Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -241,7 +242,7 @@ msgstr "Basique" #. module: hr_payroll #: model:hr.salary.rule,name:hr_payroll.hr_rule_basic msgid "Basic Salary" -msgstr "" +msgstr "Salaire de Base" #. module: hr_payroll #: model:ir.model.fields,field_description:hr_payroll.field_res_config_settings__module_l10n_be_hr_payroll @@ -925,7 +926,7 @@ msgstr "Net" #. module: hr_payroll #: model:hr.salary.rule,name:hr_payroll.hr_rule_net msgid "Net Salary" -msgstr "" +msgstr "Salaire Net" #. module: hr_payroll #: code:addons/hr_payroll/models/hr_payslip.py:199 diff --git a/addons/hr_payroll/i18n/tr.po b/addons/hr_payroll/i18n/tr.po index 1b7c2c5b5d2..1d754ddd66d 100644 --- a/addons/hr_payroll/i18n/tr.po +++ b/addons/hr_payroll/i18n/tr.po @@ -13,13 +13,14 @@ # Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017 # Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017 # cagri erarslan <cagri.erarslan@mechsoft.com.tr>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: cagri erarslan <cagri.erarslan@mechsoft.com.tr>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -44,6 +45,10 @@ msgid "" " \n" "* When user cancel payslip the status is 'Rejected'." msgstr "" +"* Bordro oluşturulduğunda durum 'Taslak' dır. \n" +"* Eğer bordro onaylanmadıysa, durum 'Bekliyor' dur.\n" +"* Eğer bordro doğrulandıysa, durum 'Yapıldı' olarak ayarlanır.\n" +"* Kullanıcı bordroyu iptal ederse durum 'İptal Edildi' olur." #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.report_payslip @@ -163,7 +168,7 @@ msgstr "Bir iç not ekle..." #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.hr_contract_advantage_template_view_form msgid "Advantage Name" -msgstr "" +msgstr "Yan Hak Adı" #. module: hr_payroll #: model:ir.actions.act_window,name:hr_payroll.act_children_salary_rules @@ -226,12 +231,12 @@ msgstr "Temel" #. module: hr_payroll #: model:hr.salary.rule,name:hr_payroll.hr_rule_basic msgid "Basic Salary" -msgstr "" +msgstr "Temel Maaş" #. module: hr_payroll #: model:ir.model.fields,field_description:hr_payroll.field_res_config_settings__module_l10n_be_hr_payroll msgid "Belgium Payroll" -msgstr "" +msgstr "Belçika Bordrosu" #. module: hr_payroll #: selection:hr.contract,schedule_pay:0 @@ -262,7 +267,7 @@ msgstr "Bordro İptal" #: code:addons/hr_payroll/models/hr_payslip.py:98 #, python-format msgid "Cannot cancel a payslip that is done." -msgstr "" +msgstr "Yapılan bordrolar iptal edilemez." #. module: hr_payroll #: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip_line__category_id @@ -296,7 +301,7 @@ msgstr "Alt Tanımı" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form msgid "Choose a Payroll Localization" -msgstr "" +msgstr "Bir Bordro Yerelleştirmesi seçiniz." #. module: hr_payroll #: selection:hr.payslip.run,state:0 @@ -322,7 +327,7 @@ msgstr "Kod" #: model:ir.ui.view,arch_db:hr_payroll.hr_payroll_structure_view_kanban #: model:ir.ui.view,arch_db:hr_payroll.hr_salary_rule_view_kanban msgid "Code:" -msgstr "" +msgstr "Kod:" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.view_hr_payslip_filter @@ -604,7 +609,7 @@ msgstr "Personel Bordroları" #. module: hr_payroll #: model:ir.model,name:hr_payroll.model_hr_contract_advantage_template msgid "Employee's Advantage on Contract" -msgstr "" +msgstr "Sözleşmedeki Personel Yan Hakları" #. module: hr_payroll #: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip_employees__employee_ids @@ -676,7 +681,7 @@ msgstr "Seçilen tüm personeller için maaş bordroları oluşturma" #: model:hr.salary.rule,name:hr_payroll.hr_rule_taxable #: model:hr.salary.rule.category,name:hr_payroll.GROSS msgid "Gross" -msgstr "" +msgstr "Brüt" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.view_hr_payslip_filter @@ -762,7 +767,7 @@ msgid "" "It is used in computation for percentage and fixed amount. For e.g. A rule " "for Meal Voucher having fixed amount of 1€ per worked day can have its " "quantity defined in expression like worked_days.WORK100.number_of_days." -msgstr "" +msgstr "Bu, yüzde ve sabitlenmiş miktarların hesabı için kullanıldı." #. module: hr_payroll #: model:ir.model.fields,help:hr_payroll.field_hr_payslip_input__amount @@ -843,7 +848,7 @@ msgstr "" #. module: hr_payroll #: model:ir.model.fields,help:hr_payroll.field_hr_contract_advantage_template__lower_bound msgid "Lower bound authorized by the employer for this advantage" -msgstr "" +msgstr "Bu yan hak için işveren tarafından yetki verilen alt sınır." #. module: hr_payroll #: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip__paid @@ -899,7 +904,7 @@ msgstr "Net" #. module: hr_payroll #: model:hr.salary.rule,name:hr_payroll.hr_rule_net msgid "Net Salary" -msgstr "" +msgstr "Net Maaş" #. module: hr_payroll #: code:addons/hr_payroll/models/hr_payslip.py:199 @@ -1004,12 +1009,12 @@ msgstr "Bordro" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form msgid "Payroll Entries" -msgstr "" +msgstr "Ödeme Kayıtları" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form msgid "Payroll Rules" -msgstr "" +msgstr "Bordro Kuralları" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.view_hr_payroll_structure_filter @@ -1019,7 +1024,7 @@ msgstr "Bordro Yapısı" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form msgid "Payroll rules that apply to your country" -msgstr "" +msgstr "Ülkenizde uygulanan bordro kuralları." #. module: hr_payroll #: model:ir.actions.report,name:hr_payroll.action_report_payslip @@ -1140,7 +1145,7 @@ msgstr "Dönem" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form msgid "Post payroll slips in accounting" -msgstr "" +msgstr "Muhasebedeki bordro fişlerini postala" #. module: hr_payroll #: model:ir.ui.view,arch_db:hr_payroll.view_payslip_lines_contribution_register @@ -1454,12 +1459,12 @@ msgstr "Toplam Çalışma Günleri" #. module: hr_payroll #: model:ir.model.fields,field_description:hr_payroll.field_hr_contract_advantage_template__upper_bound msgid "Upper Bound" -msgstr "" +msgstr "Üst Sınır" #. module: hr_payroll #: model:ir.model.fields,help:hr_payroll.field_hr_contract_advantage_template__upper_bound msgid "Upper bound authorized by the employer for this advantage" -msgstr "" +msgstr "Bu yan hak için işveren tarafından izin verilen üst sınır." #. module: hr_payroll #: model:ir.model.fields,help:hr_payroll.field_hr_payslip_line__sequence diff --git a/addons/hr_recruitment/i18n/zh_CN.po b/addons/hr_recruitment/i18n/zh_CN.po index 21ad666086b..45c9d3bacc1 100644 --- a/addons/hr_recruitment/i18n/zh_CN.po +++ b/addons/hr_recruitment/i18n/zh_CN.po @@ -14,13 +14,14 @@ # fausthuang, 2017 # e2f <projects@e2f.com>, 2018 # e2f_cn c5 <jarvisn@ecinnovations.com>, 2018 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: e2f_cn c5 <jarvisn@ecinnovations.com>, 2018\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -788,7 +789,7 @@ msgstr "有效" #. module: hr_recruitment #: model:ir.actions.act_window,help:hr_recruitment.action_hr_job_no_employee msgid "Add a new employee" -msgstr "" +msgstr "添加一个新的员工" #. module: hr_recruitment #: model:ir.actions.act_window,help:hr_recruitment.hr_job_stage_act @@ -799,7 +800,7 @@ msgstr "" #. module: hr_recruitment #: model:ir.actions.act_window,help:hr_recruitment.hr_applicant_category_action msgid "Add a new tag" -msgstr "" +msgstr "添加一个新标签" #. module: hr_recruitment #: model:ir.model.fields,help:hr_recruitment.field_hr_job__address_id @@ -1816,7 +1817,7 @@ msgstr "在网站上发布现有职位" #: model:ir.actions.act_window,help:hr_recruitment.action_hr_job #: model:ir.actions.act_window,help:hr_recruitment.action_hr_job_config msgid "Ready to recruit more efficiently?" -msgstr "" +msgstr "准备更有效地招聘?" #. module: hr_recruitment #: model:ir.model.fields,field_description:hr_recruitment.field_hr_job__alias_force_thread_id diff --git a/addons/hr_timesheet/i18n/tr.po b/addons/hr_timesheet/i18n/tr.po index 7b6c0fe98ca..e7a8190db86 100644 --- a/addons/hr_timesheet/i18n/tr.po +++ b/addons/hr_timesheet/i18n/tr.po @@ -13,13 +13,14 @@ # UNIBRAVO SOFTWARE <unibravo@gmail.com>, 2017 # Levent Karakaş <levent@mektup.at>, 2017 # Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -87,12 +88,12 @@ msgstr "Analitik Satırı" #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form msgid "Apple App Store" -msgstr "" +msgstr "Apple App Store" #. module: hr_timesheet #: model:ir.model.fields,field_description:hr_timesheet.field_res_config_settings__module_project_timesheet_synchro msgid "Awesome Timesheet" -msgstr "" +msgstr "Mükemmel Zaman Çizelgesi" #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form @@ -115,7 +116,7 @@ msgstr "Projeye göre" #: model:ir.actions.act_window,name:hr_timesheet.timesheet_action_report_by_task #: model:ir.ui.menu,name:hr_timesheet.timesheet_menu_report_timesheet_by_task msgid "By Task" -msgstr "" +msgstr "Görev" #. module: hr_timesheet #: model:ir.model.fields,help:hr_timesheet.field_project_task__total_hours_spent @@ -174,12 +175,12 @@ msgstr "Personel" #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form msgid "Google Chrome Store" -msgstr "" +msgstr "Google Chrome Store" #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form msgid "Google Play Store" -msgstr "" +msgstr "Google Play Store" #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.hr_timesheet_line_search @@ -270,11 +271,15 @@ msgid "" "Timesheets app and invoice them based on a fixed price (ordered quantity) or" " on the time spent (delivered quantity)" msgstr "" +"Zaman çizelgesi uygulamasını kullanarak satış hizmetleri (örn. Proje, " +"bakım), harcama sürelerini kaydedin ve bunları belirlenen fiyata (sipariş " +"edilen miktar) veya harcanan süreye (teslim edilen miktar) göre " +"faturalandırın." #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form msgid "Sell services and invoice time spent" -msgstr "" +msgstr "Hizmet satın ve harcanan zamanı faturalandır" #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.hr_timesheet_config_settings_action @@ -300,7 +305,7 @@ msgstr "" #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form msgid "Synchronize time spent with web/mobile app" -msgstr "" +msgstr "Web/mobil ile zaman harcamalarını senkronize et." #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_project_task @@ -329,7 +334,7 @@ msgstr "Bu Hafta" #: code:addons/hr_timesheet/models/project.py:63 #, python-format msgid "This task must have a project since they are linked to timesheets." -msgstr "" +msgstr "Bu görev, zaman çizelgesine bağlanmış bir projeye sahip olmalı." #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.report_timesheet @@ -344,7 +349,7 @@ msgstr "" #. module: hr_timesheet #: model:ir.model.fields,field_description:hr_timesheet.field_res_config_settings__module_sale_timesheet msgid "Time Billing" -msgstr "" +msgstr "Saat Faturalaması" #. module: hr_timesheet #: model:ir.ui.menu,name:hr_timesheet.menu_hr_time_tracking @@ -363,7 +368,7 @@ msgstr "Zaman Çizelgesi Aktiviteler" #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form msgid "Timesheet Apps" -msgstr "" +msgstr "Zaman Çizelgesi Uygulaması" #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.project_task_action_view_timesheet @@ -412,7 +417,7 @@ msgstr "Kullanıcı" #. module: hr_timesheet #: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form msgid "Validated leaves create timesheets automatically." -msgstr "" +msgstr "Onaylanmış izinler otomatik olarak zaman çizelgesine yansır." #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.act_hr_timesheet_line @@ -425,6 +430,9 @@ msgid "" " day. Every time spent on a project will become a cost and can be re-invoiced to\n" " customers if required." msgstr "" +"Çalışma saatlerinizi proje tarafından her gün kaydedebilir ve " +"izleyebilirsiniz. Projede harcanan bütün zamanlar, bir maliyet olacak ve " +"eğer müşteri arzu ederse yeniden faturalanacaktır." #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_res_config_settings diff --git a/addons/hr_timesheet_attendance/i18n/tr.po b/addons/hr_timesheet_attendance/i18n/tr.po index 79f4cee2130..5588db3e311 100644 --- a/addons/hr_timesheet_attendance/i18n/tr.po +++ b/addons/hr_timesheet_attendance/i18n/tr.po @@ -8,13 +8,14 @@ # Martin Trigaux, 2017 # Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017 # gezgin biri <gezginbiri@hotmail.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: gezgin biri <gezginbiri@hotmail.com>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -60,7 +61,7 @@ msgstr "Bu Hafta" #. module: hr_timesheet_attendance #: model:ir.ui.menu,name:hr_timesheet_attendance.menu_hr_timesheet_attendance_report msgid "Timesheet / Attendance" -msgstr "" +msgstr "Zaman Çizelgesi / Katılım" #. module: hr_timesheet_attendance #: model:ir.model.fields,field_description:hr_timesheet_attendance.field_hr_timesheet_attendance_report__total_attendance @@ -91,4 +92,4 @@ msgstr "" #: model:ir.ui.view,arch_db:hr_timesheet_attendance.view_hr_timesheet_attendance_report_pivot #: model:ir.ui.view,arch_db:hr_timesheet_attendance.view_hr_timesheet_attendance_report_search msgid "timesheet attendance" -msgstr "" +msgstr "Zaman çizelgesi katılımı" diff --git a/addons/iap/i18n/tr.po b/addons/iap/i18n/tr.po index 480fc6face2..117e4b5bf1c 100644 --- a/addons/iap/i18n/tr.po +++ b/addons/iap/i18n/tr.po @@ -4,13 +4,14 @@ # # Translators: # Murat Kaplan <muratk@projetgrup.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Murat Kaplan <muratk@projetgrup.com>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -65,19 +66,19 @@ msgstr "Görünüm Adı" #. module: iap #: model:ir.ui.menu,name:iap.iap_root_menu msgid "IAP" -msgstr "" +msgstr "IAP" #. module: iap #: model:ir.actions.act_window,name:iap.iap_account_action #: model:ir.ui.view,arch_db:iap.iap_account_view_form msgid "IAP Account" -msgstr "" +msgstr "IAP Hesabı" #. module: iap #: model:ir.ui.menu,name:iap.iap_account_menu #: model:ir.ui.view,arch_db:iap.iap_account_view_tree msgid "IAP Accounts" -msgstr "" +msgstr "IAP Hesabı" #. module: iap #: model:ir.model.fields,field_description:iap.field_iap_account__id @@ -89,14 +90,14 @@ msgstr "ID" #: code:addons/iap/static/src/xml/iap_templates.xml:23 #, python-format msgid "In-App Purchases" -msgstr "" +msgstr "Satın Alma Uygulamalarında" #. module: iap #. openerp-web #: code:addons/iap/static/src/js/crash_manager.js:37 #, python-format msgid "Insufficient Balance" -msgstr "" +msgstr "Yetersiz Bakiye" #. module: iap #. openerp-web @@ -123,7 +124,7 @@ msgstr "Son Güncelleme" #. module: iap #: model:ir.model.fields,field_description:iap.field_iap_account__service_name msgid "Service Name" -msgstr "" +msgstr "Hizmet Adı" #. module: iap #: model:ir.model,name:iap.model_iap_account diff --git a/addons/im_livechat/i18n/tr.po b/addons/im_livechat/i18n/tr.po index 7025a38b92c..996f2a4e8a3 100644 --- a/addons/im_livechat/i18n/tr.po +++ b/addons/im_livechat/i18n/tr.po @@ -13,13 +13,14 @@ # Emre Akayoğlu <emre.akayoglu@mechsoft.com.tr>, 2017 # Ramiz Deniz Öner <deniz@denizoner.com>, 2017 # Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:11+0000\n" "PO-Revision-Date: 2018-03-22 14:11+0000\n" -"Last-Translator: Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -218,7 +219,7 @@ msgstr "Kopyalandı!" #: code:addons/im_livechat/static/src/xml/copy_clipboard.xml:12 #, python-format msgid "Copy Text" -msgstr "" +msgstr "Metni Kopyala" #. module: im_livechat #: model:ir.ui.view,arch_db:im_livechat.im_livechat_channel_view_form @@ -502,7 +503,7 @@ msgstr "Kanaldan Ayrıl" #. module: im_livechat #: model:ir.model,name:im_livechat.model_mail_channel_partner msgid "Listeners of a Channel" -msgstr "" +msgstr "Bir Kanal Dinleyicileri" #. module: im_livechat #: model:ir.ui.menu,name:im_livechat.menu_livechat_root @@ -704,17 +705,17 @@ msgstr "Değerlendirme: :rating_%d" #. module: im_livechat #: model:ir.ui.view,arch_db:im_livechat.im_livechat_channel_view_kanban msgid "Rating: Bad" -msgstr "" +msgstr "Not: Kötü" #. module: im_livechat #: model:ir.ui.view,arch_db:im_livechat.im_livechat_channel_view_kanban msgid "Rating: Great" -msgstr "" +msgstr "Not: İyi" #. module: im_livechat #: model:ir.ui.view,arch_db:im_livechat.im_livechat_channel_view_kanban msgid "Rating: Okay" -msgstr "" +msgstr "Puan: Fena Değil" #. module: im_livechat #: model:ir.actions.act_window,name:im_livechat.rating_rating_action_view_livechat_rating diff --git a/addons/l10n_mx/data/account_tag_data.xml b/addons/l10n_mx/data/account_tag_data.xml index 5160151c821..244c9b65ff3 100644 --- a/addons/l10n_mx/data/account_tag_data.xml +++ b/addons/l10n_mx/data/account_tag_data.xml @@ -5399,7 +5399,7 @@ <field name='name'>802.02 Contra cuenta CUFIN</field> <field name='color'>4</field> <field name='applicability'>accounts</field> - <field name='nature'>D</field> + <field name='nature'>A</field> </record> <record id='account_tag_803_01' model='account.account.tag'> <field name='name'>803.01 CUFIN de ejercicios anteriores</field> diff --git a/addons/link_tracker/i18n/tr.po b/addons/link_tracker/i18n/tr.po index 7019333aea2..21f4defb143 100644 --- a/addons/link_tracker/i18n/tr.po +++ b/addons/link_tracker/i18n/tr.po @@ -10,13 +10,14 @@ # gezgin biri <gezginbiri@hotmail.com>, 2017 # Ediz Duman <neps1192@gmail.com>, 2017 # Emre Akayoğlu <emre.akayoglu@mechsoft.com.tr>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Emre Akayoğlu <emre.akayoglu@mechsoft.com.tr>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -79,17 +80,17 @@ msgstr "Görünüm Adı" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker__favicon msgid "Favicon" -msgstr "" +msgstr "Sık Kullanılan İkonu" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker__icon_src msgid "Favicon Source" -msgstr "" +msgstr "Sık Kullanılan İkon Kaynağı" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker__short_url_host msgid "Host of the short URL" -msgstr "" +msgstr "Kısa URL sunucusu" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker__id @@ -101,7 +102,7 @@ msgstr "ID" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker_click__ip msgid "Internet Protocol" -msgstr "" +msgstr "İnternet Protokolü" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker____last_update @@ -149,7 +150,7 @@ msgstr "Sayfa Başlığı" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker__redirected_url msgid "Redirected URL" -msgstr "" +msgstr "Yönlendirilmiş URL" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker_code__code @@ -159,12 +160,12 @@ msgstr "Kısa URL Kodu " #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker__code msgid "Short URL code" -msgstr "" +msgstr "Kısa URL kodu" #. module: link_tracker #: model:ir.actions.act_window,name:link_tracker.action_view_click_statistics msgid "Statistics of Clicks" -msgstr "" +msgstr "Tıklanma İstatistikleri" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker__url @@ -174,28 +175,28 @@ msgstr "" #. module: link_tracker #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_filter msgid "Title and URL" -msgstr "" +msgstr "Başlı ve URL" #. module: link_tracker #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_filter msgid "Tracked Link" -msgstr "" +msgstr "İzlenen Bağlantı" #. module: link_tracker #: model:ir.model.fields,field_description:link_tracker.field_link_tracker__short_url msgid "Tracked URL" -msgstr "" +msgstr "İzlenen URL" #. module: link_tracker #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_form msgid "Visit Page" -msgstr "" +msgstr "Sayfayı Ziyaret Et" #. module: link_tracker #: code:addons/link_tracker/models/link_tracker.py:141 #, python-format msgid "Visit Webpage" -msgstr "" +msgstr "Web Sayfasını Ziyaret Et" #. module: link_tracker #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_form @@ -206,23 +207,23 @@ msgstr "" #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_click_form #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_click_graph msgid "Website Link Clicks" -msgstr "" +msgstr "Website Link Tıklamaları" #. module: link_tracker #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_form_stats msgid "Website Link Graph" -msgstr "" +msgstr "Website Link Grafiği" #. module: link_tracker #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_graph #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_tree msgid "Website Links" -msgstr "" +msgstr "Website Linkleri" #. module: link_tracker #: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_click_tree msgid "Website Links Clicks" -msgstr "" +msgstr "Website Link Tıklamaları" #. module: link_tracker #: model:ir.model,name:link_tracker.model_link_tracker diff --git a/addons/lunch/i18n/tr.po b/addons/lunch/i18n/tr.po index 6e924877da9..6fd066e863d 100644 --- a/addons/lunch/i18n/tr.po +++ b/addons/lunch/i18n/tr.po @@ -51,7 +51,7 @@ msgstr "" #. module: lunch #: model:ir.actions.act_window,help:lunch.lunch_product_action msgid "A product is defined by its name, category, price and vendor." -msgstr "" +msgstr "Bir ürün ismi, kategorisi, fiyatı ve tedarikçisi ile tanımlanır." #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_alert__active @@ -85,6 +85,9 @@ msgid "" "Alerts are used to warn employee from possible issues concerning the lunch orders.\n" " To create a lunch alert you have to define its recurrence, the time interval during which the alert should be executed and the message to display." msgstr "" +"Uyarılar, çalışanı öğle yemeği siparişleriyle ilgili olası sorunlara karşı uyarmak için kullanılır.\n" +"\n" +"Bir öğle yemeği uyarısı oluşturmak için, tekrarlamasını, uyarının gerçekleştirileceği zaman aralığını ve görüntülenecek mesajı tanımlamanız gerekir." #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_cashmove__amount @@ -105,7 +108,7 @@ msgstr "Arşivlenmiş" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_order__balance_visible msgid "Balance Visible" -msgstr "" +msgstr "Görünür Bakiye" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_alert__start_hour @@ -115,7 +118,7 @@ msgstr "Arasında" #. module: lunch #: model:ir.ui.view,arch_db:lunch.view_lunch_alert_kanban msgid "Between:" -msgstr "" +msgstr "Arasında:" #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_cashmove_view_search_2 @@ -125,7 +128,7 @@ msgstr "Çalışan tarafından" #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search msgid "By Order" -msgstr "" +msgstr "Siparişe Göre" #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_cashmove_view_search @@ -135,12 +138,12 @@ msgstr "Kullanıcıya Göre" #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search msgid "By Vendor" -msgstr "" +msgstr "Tedarikçiye göre" #. module: lunch #: model:ir.model.fields,help:lunch.field_lunch_cashmove__description msgid "Can be an order or a payment" -msgstr "" +msgstr "Bir sipariş ya da bir ödeme olabilir." #. module: lunch #: model:ir.model.fields,help:lunch.field_lunch_cashmove__amount @@ -148,6 +151,8 @@ msgid "" "Can be positive (payment) or negative (order or payment if user wants to get" " his money back)" msgstr "" +"Pozitif (ödeme) ya da negatif (eğer kullanıcı parasını geri " +"istediyse,sipariş ya da ödeme) olabilir." #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_kanban @@ -170,7 +175,7 @@ msgstr "Nakit Hareketi" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_order__cash_move_balance msgid "Cash Move Balance" -msgstr "" +msgstr "Nakit Hareket Dengesi " #. module: lunch #: model:ir.actions.act_window,help:lunch.lunch_order_line_action_control_suppliers @@ -207,7 +212,7 @@ msgstr "Denetim Hesapları" #. module: lunch #: model:ir.actions.act_window,name:lunch.lunch_order_line_action_control_suppliers msgid "Control Vendors" -msgstr "" +msgstr "Tedarikçi Kontrolü" #. module: lunch #: model:ir.actions.act_window,help:lunch.lunch_alert_action @@ -308,6 +313,8 @@ msgstr "Çalışan Ödemeleri" #: model:ir.model.fields,help:lunch.field_lunch_order_line_lucky__is_max_budget msgid "Enable this option to set a maximal budget for your lucky order." msgstr "" +"Şanslı siparişinizin maksimum bütçesini ayarlamak için bu seçeneği " +"etkinleştirin." #. module: lunch #: selection:lunch.alert,alert_type:0 @@ -331,7 +338,7 @@ msgstr "" #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_order_view_form msgid "Feeling Lucky" -msgstr "" +msgstr "Şanslı Hisset" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_alert__friday @@ -359,11 +366,14 @@ msgstr "" #: model:ir.actions.act_window,help:lunch.lunch_product_category_action msgid "Here you can access all categories for the lunch products." msgstr "" +"Öğle yemeği ürünleri ile ilgili bütün kategorilere buradan ulaşabilirsiniz." #. module: lunch #: model:ir.actions.act_window,help:lunch.lunch_order_line_action_by_supplier msgid "Here you can see today's orders grouped by vendors." msgstr "" +"Burada tedarikçiler tarafından gruplanmış bugünün siparişlerini " +"görebilirsiniz." #. module: lunch #: model:ir.actions.act_window,help:lunch.lunch_cashmove_action_account @@ -375,7 +385,7 @@ msgstr "" #. module: lunch #: model:ir.ui.view,arch_db:lunch.view_lunch_order_line_lucky msgid "I'm feeling lucky" -msgstr "" +msgstr "Kendimi şanslı hissediyorum." #. module: lunch #: model:ir.actions.act_window,name:lunch.action_lunch_order_line_lucky @@ -457,7 +467,7 @@ msgstr "Öğle yemeği Uyarısı" #: code:addons/lunch/models/lunch.py:265 #, python-format msgid "Lunch Cashmove" -msgstr "" +msgstr "Öğle Yemeği Nakit Hareketi" #. module: lunch #: code:addons/lunch/models/lunch.py:66 @@ -476,22 +486,22 @@ msgstr "" #. module: lunch #: model:ir.actions.server,name:lunch.action_server_lunch_archive_product msgid "Lunch: Archive/Restore products" -msgstr "" +msgstr "Öğle Yemeği: Ürünleri Arşivle/Restore Et" #. module: lunch #: model:ir.actions.server,name:lunch.lunch_order_line_action_cancel msgid "Lunch: Cancel meals" -msgstr "" +msgstr "Öğle Yemeği: Yemek İptali" #. module: lunch #: model:ir.actions.server,name:lunch.lunch_order_line_action_order msgid "Lunch: Order meals" -msgstr "" +msgstr "Öğle Yemeği: Yemek Siparişi" #. module: lunch #: model:ir.actions.server,name:lunch.lunch_order_line_action_confirm msgid "Lunch: Receive meals" -msgstr "" +msgstr "Öğle Yemeği:Yemeği Teslim Al" #. module: lunch #: model:ir.ui.menu,name:lunch.menu_lunch_admin @@ -502,7 +512,7 @@ msgstr "Yönetici" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_order_line_lucky__max_budget msgid "Max Budget" -msgstr "" +msgstr "Maksimum Bütçe" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_alert__message @@ -523,7 +533,7 @@ msgstr "Hesaplarım gruplandı" #. module: lunch #: model:ir.ui.menu,name:lunch.menu_lunch_title msgid "My Lunch" -msgstr "" +msgstr "Öğle Yemeğim" #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search @@ -565,7 +575,7 @@ msgstr "" #: code:addons/lunch/wizard/lucky_order.py:39 #, python-format msgid "No product is matching your request. Now you will starve to death." -msgstr "" +msgstr "Hiçbir ürün isteğinizle uyuşmadı. Şimdi açlıktan öleceksin." #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search @@ -586,19 +596,19 @@ msgstr "" #: code:addons/lunch/models/lunch.py:225 #, python-format msgid "Only your lunch manager cancels the orders." -msgstr "" +msgstr "Sadece senin öğle yemeği yöneticin siparişleri iptal edebilir." #. module: lunch #: code:addons/lunch/models/lunch.py:194 #, python-format msgid "Only your lunch manager processes the orders." -msgstr "" +msgstr "Sadece senin öğle yemeği yöneticin siparişleri verebilir." #. module: lunch #: code:addons/lunch/models/lunch.py:214 #, python-format msgid "Only your lunch manager sets the orders as received." -msgstr "" +msgstr "Sadece senin öğle yemeği yöneticin siparişleri alındı olarak ayarlar." #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_cashmove__order_id @@ -639,7 +649,7 @@ msgstr "Sipariş Ağacı" #: model:ir.actions.act_window,name:lunch.lunch_order_line_action_by_supplier #: model:ir.ui.menu,name:lunch.lunch_order_line_menu_control_suppliers msgid "Orders by Vendor" -msgstr "" +msgstr "Tedarikçi Siparişleri" #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_cashmove_view_search @@ -657,12 +667,12 @@ msgstr "" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_order__previous_order_ids msgid "Previous Order" -msgstr "" +msgstr "Önceki Sipariş" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_order__previous_order_widget msgid "Previous Order Widget" -msgstr "" +msgstr "Önceki Sipariş Widget'ı" #. module: lunch #: model:ir.ui.menu,name:lunch.lunch_order_menu_tree @@ -815,7 +825,7 @@ msgstr "Durum" #. module: lunch #: model:ir.actions.act_window,help:lunch.lunch_order_line_action_control_suppliers msgid "Summary of all lunch orders, grouped by vendor and by date." -msgstr "" +msgstr "Tüm siparişlerinizin özeti tedarikçiye ve tarihe göre gruplanır." #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_alert__sunday @@ -831,7 +841,7 @@ msgstr "Kullanıcının halihazırda çalıştığı firma" #: code:addons/lunch/models/lunch.py:129 #, python-format msgid "The date of your order is in the past." -msgstr "" +msgstr "Sipariş tarihiniz geçmişte kalmıştır" #. module: lunch #: model:ir.actions.act_window,help:lunch.lunch_order_line_action @@ -839,6 +849,8 @@ msgid "" "There is no previous order recorded. Click on \"My Lunch\" and then create a" " new lunch order." msgstr "" +"Önceki sipariş kaydı bulunamamıştır. 'Benim Öğle Yemeğim'i tıklayın ve yeni " +"bir yemek siparişi verin." #. module: lunch #. openerp-web @@ -860,7 +872,7 @@ msgstr "Bugün" #. module: lunch #: model:ir.ui.menu,name:lunch.lunch_order_line_menu_by_supplier msgid "Today's Orders" -msgstr "" +msgstr "Bugünün Siğarişleri" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_order__total @@ -900,7 +912,7 @@ msgstr "Tedarikçi" #. module: lunch #: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search msgid "Vendor Orders by Month" -msgstr "" +msgstr "Aylara Göre Siparişlerin Tedarikçisi" #. module: lunch #: model:ir.model.fields,field_description:lunch.field_lunch_alert__wednesday diff --git a/addons/mail/i18n/tr.po b/addons/mail/i18n/tr.po index 65f6a140a96..b989dc5f3bd 100644 --- a/addons/mail/i18n/tr.po +++ b/addons/mail/i18n/tr.po @@ -24,13 +24,14 @@ # Mehmet Demirel <mdemirell@gmail.com>, 2017 # İlknur Püskül <ilknurpuskull@gmail.com>, 2017 # Levent Karakaş <levent@mektup.at>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Levent Karakaş <levent@mektup.at>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -678,6 +679,8 @@ msgid "" "Answers do not go in the original document discussion thread. This has an " "impact on the generated message-id." msgstr "" +"Cevaplar orijinal belge tartışma dizisine gitmiyor. Bunun oluşturulan mesaj " +"kimliği üzerinde bir etkisi vardır." #. module: mail #: model:ir.model.fields,field_description:mail.field_email_template_preview__model_id @@ -1569,7 +1572,7 @@ msgstr "Hata, bir iş ortağı aynı nesneyi iki defa izleyemez." #: sql_constraint:mail.followers:0 msgid "" "Error: A follower must be either a partner or a channel (but not both)." -msgstr "" +msgstr "Hata: Takipçi ya partner ya da kanal olmak zorunda (ikisi olamaz)" #. module: mail #: selection:mail.alias,alias_contact:0 selection:mail.channel,public:0 @@ -1614,6 +1617,8 @@ msgid "" "Failure reason. This is usually the exception thrown by the email server, " "stored to ease the debugging of mailing issues." msgstr "" +"Arıza nedeni. Arıza nedeni. Bu genellikle e-posta sunucusu tarafından " +"atılan, e-posta sorunlarının ayıklanmasını kolaylaştırmak için saklanır." #. module: mail #: model:ir.model.fields,field_description:mail.field_mail_compose_message__starred_partner_ids @@ -2383,7 +2388,7 @@ msgstr "Davet sihirbazı" #. module: mail #: selection:mail.channel,public:0 msgid "Invited people only" -msgstr "" +msgstr "Sadece Davet Edilen Kişiler" #. module: mail #: model:ir.model.fields,field_description:mail.field_account_analytic_account__message_is_follower @@ -2593,7 +2598,7 @@ msgstr "" #: model:ir.model.fields,help:mail.field_mail_wizard_invite__channel_ids msgid "" "List of channels that will be added as listeners of the current document." -msgstr "" +msgstr "Kanalları listesi güncel doküman dinleyicisi olarak eklenmiş olacak." #. module: mail #: model:ir.model.fields,help:mail.field_mail_wizard_invite__partner_ids @@ -2620,7 +2625,7 @@ msgstr "Dinleyeciler" #. module: mail #: model:ir.model,name:mail.model_mail_channel_partner msgid "Listeners of a Channel" -msgstr "" +msgstr "Bir Kanal Dinleyicileri" #. module: mail #: selection:mail.channel,channel_type:0 @@ -2862,7 +2867,7 @@ msgstr "Mesaj referansları, tanımlayıcılar ya da önceki mesajlar" #: code:addons/mail/static/src/xml/discuss.xml:124 #, python-format msgid "Message sent in \"" -msgstr "" +msgstr "Mesaj gönderildi" #. module: mail #: model:ir.model.fields,help:mail.field_mail_message_subtype__name @@ -3123,17 +3128,17 @@ msgstr "" #. module: mail #: model:ir.model.fields,field_description:mail.field_mail_tracking_value__new_value_datetime msgid "New Value Datetime" -msgstr "" +msgstr "Yeni Değerleme Zamanı" #. module: mail #: model:ir.model.fields,field_description:mail.field_mail_tracking_value__new_value_float msgid "New Value Float" -msgstr "" +msgstr "Yeni Değer Kaydırma" #. module: mail #: model:ir.model.fields,field_description:mail.field_mail_tracking_value__new_value_integer msgid "New Value Integer" -msgstr "" +msgstr "Yeni Tam Sayı Değeri" #. module: mail #: model:ir.model.fields,field_description:mail.field_mail_tracking_value__new_value_monetary diff --git a/addons/mail/models/res_users.py b/addons/mail/models/res_users.py index 40032cac40f..2068e66c834 100644 --- a/addons/mail/models/res_users.py +++ b/addons/mail/models/res_users.py @@ -53,7 +53,10 @@ class Users(models.Model): msg = _("You cannot create a new user from here.\n To create new user please go to configuration panel.") raise exceptions.RedirectWarning(msg, action.id, _('Go to the configuration panel')) - return super(Users, self).create(values) + user = super(Users, self).create(values) + # Auto-subscribe to channels + self.env['mail.channel'].search([('group_ids', 'in', user.groups_id.ids)])._subscribe_users() + return user @api.multi def write(self, vals): diff --git a/addons/mail/static/src/js/systray.js b/addons/mail/static/src/js/systray.js index 5a4c8ea4675..1c320515fa9 100644 --- a/addons/mail/static/src/js/systray.js +++ b/addons/mail/static/src/js/systray.js @@ -139,7 +139,7 @@ var MessagingMenu = Widget.extend({ this.do_action('mail.mail_channel_action_client_chat', {clear_breadcrumbs: true}) .then(function () { self.trigger_up('hide_home_menu'); // we cannot 'go back to previous page' otherwise - core.bus.trigger('change_menu_section', self.call('chat_manager', 'getDiscussMenuID').bind(self)); + core.bus.trigger('change_menu_section', self.call('chat_manager', 'getDiscussMenuID')); }); } } else { @@ -284,8 +284,9 @@ var ActivityMenu = Widget.extend({ SystrayMenu.Items.push(MessagingMenu); SystrayMenu.Items.push(ActivityMenu); -// to test activity menu in qunit test cases we need it +// to test activity and messaging menus in qunit test cases we need it return { ActivityMenu: ActivityMenu, + MessagingMenu: MessagingMenu, }; }); diff --git a/addons/mail/static/src/js/utils.js b/addons/mail/static/src/js/utils.js index 43f4ae2a477..16507035982 100644 --- a/addons/mail/static/src/js/utils.js +++ b/addons/mail/static/src/js/utils.js @@ -18,7 +18,7 @@ function _parse_and_transform(nodes, transform_function) { // Suggested URL Javascript regex of http://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url // Adapted to make http(s):// not required if (and only if) www. is given. So `should.notmatch` does not match. -var url_regexp = /\b(?:https?:\/\/\d{1,3}(?:\.\d{1,3}){3}|(?:https?:\/\/|(?:www\.))[-a-z0-9@:%._\+~#=]{2,256}\.[a-z]{2,13})\b(?:[-a-z0-9@:%_\+.~#?&//=]*)/gi; +var url_regexp = /\b(?:https?:\/\/\d{1,3}(?:\.\d{1,3}){3}|(?:https?:\/\/|(?:www\.))[-a-z0-9@:%._\+~#=]{2,256}\.[a-z]{2,13})\b(?:[-a-z0-9@:%_\+.~#?&'$//=]*)/gi; function linkify(text, attrs) { attrs = attrs || {}; if (attrs.target === undefined) { diff --git a/addons/mail/static/src/scss/composer.scss b/addons/mail/static/src/scss/composer.scss index 59f529789ab..e7caf3821d0 100644 --- a/addons/mail/static/src/scss/composer.scss +++ b/addons/mail/static/src/scss/composer.scss @@ -43,11 +43,15 @@ .o_composer { .o_composer_input[contenteditable=true]:empty:before { content: attr(placeholder); - opacity: 0.75; + opacity: 0.4; } .o_composer_input { + border: none; + box-shadow: none; + cursor: text; display: inline-block; height: 100%; + padding: 0px 0px $o-mail-chatter-gap; white-space: pre-wrap; word-break: break-all; } @@ -172,8 +176,6 @@ } .o_composer_text_field { @include o-flex(1, 1, 50%); - margin: -4px 7px 5px 0px; - padding: 2.5px 0px 0px 5px; } .o_chatter_composer_tools { @include o-flex(0, 1, auto); diff --git a/addons/mail/static/tests/helpers/mock_server.js b/addons/mail/static/tests/helpers/mock_server.js index 08766126717..22c1783f5a3 100644 --- a/addons/mail/static/tests/helpers/mock_server.js +++ b/addons/mail/static/tests/helpers/mock_server.js @@ -12,7 +12,7 @@ MockServer.include({ * handled as a model definition. * * @override - * @param {Object} [data.initMessaging] + * @param {Object} [data.initMessaging] */ init: function (data, options) { if (data && data.initMessaging) { @@ -23,6 +23,25 @@ MockServer.include({ }, /** + * Simulate the '/mail.channel/channel_fetch_preview' route + * + * @private + * @return {$.Promise<Object[]>} resolved with list of channels previews + */ + _mockChannelFetchPreview: function (args) { + var self = this; + var ids = args.args[0]; // list of channel ids to fetch preview + var model = args.model; + var channels = this._getRecords(model, [['id', 'in', ids]]); + var previews = _.map(channels, function (channel) { + var maxMessageID = _.max(channel.channel_message_ids); + var lastMessage = self._getRecords('mail.message', [['id', '=', maxMessageID]])[0]; + channel.last_message = lastMessage; + return channel; + }); + return $.when(previews); + }, + /** * Simulate the '/mail/init_messaging' route * * @private @@ -73,6 +92,9 @@ MockServer.include({ if (args.method === 'channel_seen') { return $.when(); } + if (args.method === 'channel_fetch_preview') { + return this._mockChannelFetchPreview(args); + } return this._super(route, args); }, }); diff --git a/addons/mail/static/tests/mail_utils_tests.js b/addons/mail/static/tests/mail_utils_tests.js index e8ec776a8d5..9bb8271e990 100644 --- a/addons/mail/static/tests/mail_utils_tests.js +++ b/addons/mail/static/tests/mail_utils_tests.js @@ -8,7 +8,7 @@ QUnit.module('mail', {}, function () { QUnit.module('Mail utils'); QUnit.test('add_link utility function', function (assert) { - assert.expect(7); + assert.expect(15); var testInputs = { 'http://admin:password@example.com:8/%2020': true, @@ -18,12 +18,15 @@ QUnit.test('add_link utility function', function (assert) { 'www.127.0.0.5': false, 'should.notmatch': false, 'fhttps://test.example.com/test': false, + "https://www.transifex.com/odoo/odoo-11/translate/#fr/lunch?q=text%3A'La+Tartiflette'": true, + 'https://www.transifex.com/odoo/odoo-11/translate/#fr/$/119303430?q=text%3ATartiflette': true, }; _.each(testInputs, function (willLinkify, content) { var output = utils.parse_and_transform(content, utils.add_link); if (willLinkify) { assert.strictEqual(output.indexOf('<a '), 0, "There should be a link"); + assert.strictEqual(output.indexOf('</a>'), (output.length - 4), "Link should match the whole text"); } else { assert.strictEqual(output.indexOf('<a '), -1, "There should be no link"); } diff --git a/addons/mail/static/tests/systray_tests.js b/addons/mail/static/tests/systray_tests.js index f8585d37699..b6161453d33 100644 --- a/addons/mail/static/tests/systray_tests.js +++ b/addons/mail/static/tests/systray_tests.js @@ -5,6 +5,7 @@ var ChatManager = require('mail.ChatManager'); var systray = require('mail.systray'); var mailTestUtils = require('mail.testUtils'); +var Bus = require('web.Bus'); var testUtils = require('web.test_utils'); var createBusService = mailTestUtils.createBusService; @@ -126,4 +127,197 @@ QUnit.test('activity menu widget: activity menu with 3 records', function (asser activityMenu.destroy(); }); }); + +QUnit.module('MessagingMenu', { + beforeEach: function () { + // patch _.debounce and _.throttle to be fast and synchronous + this.underscoreDebounce = _.debounce; + this.underscoreThrottle = _.throttle; + _.debounce = _.identity; + _.throttle = _.identity; + + this.data = { + 'mail.channel': { + fields: { + name: { + string: "Name", + type: "char", + required: true, + }, + channel_type: { + string: "Channel Type", + type: "selection", + }, + channel_message_ids: { + string: "Messages", + type: "many2many", + relation: 'mail.message' + }, + }, + records: [{ + id: 1, + name: "general", + channel_type: "channel", + channel_message_ids: [1], + }], + }, + 'mail.message': { + fields: { + body: { + string: "Contents", + type: 'html', + }, + author_id: { + string: "Author", + relation: 'res.partner', + }, + channel_ids: { + string: "Channels", + type: 'many2many', + relation: 'mail.channel', + }, + starred: { + string: "Starred", + type: 'boolean', + }, + needaction: { + string: "Need Action", + type: 'boolean', + }, + starred_partner_ids: { + string: "partner ids", + type: 'integer', + } + }, + records: [{ + id: 1, + author_id: ['1', 'Me'], + body: '<p>test</p>', + channel_ids: [1], + }], + }, + initMessaging: { + channel_slots: { + channel_channel: [{ + id: 1, + channel_type: "channel", + name: "general", + }], + }, + }, + }; + this.services = [ChatManager, createBusService()]; + }, + afterEach: function () { + // unpatch _.debounce and _.throttle + _.debounce = this.underscoreDebounce; + _.throttle = this.underscoreThrottle; + } +}); + +QUnit.test('messaging menu widget: menu with no records', function (assert) { + assert.expect(1); + + var messagingMenu = new systray.MessagingMenu(); + testUtils.addMockEnvironment(messagingMenu, { + services: this.services, + mockRPC: function (route, args) { + if (args.method === 'message_fetch') { + return $.when([]); + } + return this._super.apply(this, arguments); + } + }); + messagingMenu.appendTo($('#qunit-fixture')); + messagingMenu.$('.dropdown-toggle').click(); + assert.ok(messagingMenu.$('.o_no_activity').hasClass('o_no_activity'), "should not have instance of widget"); + messagingMenu.destroy(); +}); + +QUnit.test('messaging menu widget: messaging menu with 1 record', function (assert) { + assert.expect(3); + var messagingMenu = new systray.MessagingMenu(); + testUtils.addMockEnvironment(messagingMenu, { + services: this.services, + data: this.data, + }); + messagingMenu.appendTo($('#qunit-fixture')); + + messagingMenu.$('.dropdown-toggle').click(); + + assert.strictEqual(messagingMenu.$('.o_mail_channel_preview').length, 1, + "should display a channel preview"); + assert.strictEqual(messagingMenu.$('.o_channel_name').text().trim(), "general", + "should display correct name of channel in channel preview"); + + // remove any space-character inside text + var lastMessagePreviewText = + messagingMenu.$('.o_last_message_preview').text().replace(/\s/g, ""); + assert.strictEqual(lastMessagePreviewText, + "Me:test", + "should display correct last message preview in channel preview"); + + messagingMenu.destroy(); +}); + +QUnit.test('messaging menu widget: no crash when clicking on inbox notification not associated to a document', function (assert) { + assert.expect(3); + + var bus = new Bus(); + + var messagingMenu = new systray.MessagingMenu(); + testUtils.addMockEnvironment(messagingMenu, { + services: [ChatManager, createBusService(bus)], + data: this.data, + session: { + partner_id: 1, + }, + intercepts: { + /** + * Simulate action 'mail.mail_channel_action_client_chat' + * successfully performed. + * + * @param {OdooEvent} ev + * @param {function} ev.data.on_success called when success action performed + */ + do_action: function (ev) { + ev.data.on_success(); + }, + }, + }); + messagingMenu.appendTo($('#qunit-fixture')); + + // Simulate received needaction message without associated document, + // so that we have a message in inbox without a model and a resID + var message = { + id: 2, + author_id: [1, "Me"], + body: '<p>test</p>', + channel_ids: [], + needaction_partner_ids: [1], + }; + var notifications = [ + [['myDB', 'ir.needaction'], message] + ]; + bus.trigger('notification', notifications); + + // Open messaging menu + messagingMenu.$('.dropdown-toggle').click(); + + var $firstChannelPreview = + messagingMenu.$('.o_mail_channel_preview').first(); + + assert.strictEqual($firstChannelPreview.length, 1, + "should have at least one channel preview"); + assert.strictEqual($firstChannelPreview.data('channel_id'), + 'channel_inbox', + "should be a preview from channel inbox"); + try { + $firstChannelPreview.click(); + assert.ok(true, "should not have crashed when clicking on needaction preview message"); + } finally { + messagingMenu.destroy(); + } +}); + });
\ No newline at end of file diff --git a/addons/maintenance/i18n/tr.po b/addons/maintenance/i18n/tr.po index b14a78028d2..bbac3f16eee 100644 --- a/addons/maintenance/i18n/tr.po +++ b/addons/maintenance/i18n/tr.po @@ -16,13 +16,14 @@ # Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017 # Ramiz Deniz Öner <deniz@denizoner.com>, 2017 # Levent Karakaş <levent@mektup.at>, 2018 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:11+0000\n" "PO-Revision-Date: 2018-03-22 14:11+0000\n" -"Last-Translator: Levent Karakaş <levent@mektup.at>, 2018\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -155,7 +156,7 @@ msgstr "Hepsi" #. module: maintenance #: sql_constraint:maintenance.equipment:0 msgid "Another asset already exists with this serial number!" -msgstr "" +msgstr "Başka bir varlık bu seri numarası ile zaten var." #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_request__archive @@ -189,7 +190,7 @@ msgstr "Atanmış" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment__assign_date msgid "Assigned Date" -msgstr "" +msgstr "Atama Tarihi" #. module: maintenance #: model:ir.ui.view,arch_db:maintenance.hr_equipment_view_search @@ -387,6 +388,8 @@ msgid "" "Email alias for this equipment category. New emails will automatically " "create new maintenance request for this equipment category." msgstr "" +"Bu ekipman kategorisi için eposta takma adı. Yeni epostalar bu ekipman " +"kategorisi için otomatik olarak bakım talebi oluşturacaklar. " #. module: maintenance #: model:ir.model,name:maintenance.model_maintenance_equipment @@ -401,14 +404,14 @@ msgstr "Ekipman" #: model:mail.message.subtype,name:maintenance.mt_cat_mat_assign #: model:mail.message.subtype,name:maintenance.mt_mat_assign msgid "Equipment Assigned" -msgstr "" +msgstr "Atanmış Ekipman" #. module: maintenance #: model:ir.actions.act_window,name:maintenance.hr_equipment_category_action #: model:ir.ui.menu,name:maintenance.menu_maintenance_cat #: model:ir.ui.view,arch_db:maintenance.hr_equipment_category_view_form msgid "Equipment Categories" -msgstr "" +msgstr "Ekipman Kategorileri" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment__category_id @@ -418,7 +421,7 @@ msgstr "Ekipman Kategorisi" #. module: maintenance #: model:res.groups,name:maintenance.group_equipment_manager msgid "Equipment Manager" -msgstr "" +msgstr "Ekipman Yöneticisi" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment__name @@ -451,7 +454,7 @@ msgstr "Bakım Kanalında Katlanmış" #: model:ir.actions.act_window,help:maintenance.maintenance_request_action_reports msgid "" "Follow the process of the request and communicate with the collaborator." -msgstr "" +msgstr "Gerekli işlemleri takip edin ve çalışanlarla iletişimde olun." #. module: maintenance #: model:ir.ui.view,arch_db:maintenance.hr_equipment_request_view_search @@ -500,12 +503,12 @@ msgstr "Devam Eden" #. module: maintenance #: model:maintenance.team,name:maintenance.equipment_team_maintenance msgid "Internal Maintenance" -msgstr "" +msgstr "İç Bakım" #. module: maintenance #: model:ir.ui.view,arch_db:maintenance.hr_equipment_request_view_form msgid "Internal Note ......." -msgstr "" +msgstr "İç Not" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_request__kanban_state @@ -681,7 +684,7 @@ msgstr "Aktivitelerim" #. module: maintenance #: model:ir.ui.view,arch_db:maintenance.hr_equipment_view_search msgid "My Equipments" -msgstr "" +msgstr "Ekipmanlarım" #. module: maintenance #: model:ir.ui.view,arch_db:maintenance.hr_equipment_request_view_search @@ -720,27 +723,27 @@ msgstr "Bilgi" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count msgid "Number of Requests" -msgstr "" +msgstr "Talep Sayısı" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count_block msgid "Number of Requests Blocked" -msgstr "" +msgstr "Engellenen İstek Sayısı" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count_date msgid "Number of Requests Scheduled" -msgstr "" +msgstr "Planlanan İstek Sayısı" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count_unscheduled msgid "Number of Requests Unscheduled" -msgstr "" +msgstr "Planlanmayan İstek Sayısı" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count_high_priority msgid "Number of Requests in High Priority" -msgstr "" +msgstr "Yüksek Öncelikli İhtiyaç Sayısı" #. module: maintenance #: model:ir.model.fields,help:maintenance.field_maintenance_equipment_category__alias_force_thread_id @@ -892,7 +895,7 @@ msgstr "Talep Eden :" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_ids msgid "Requests" -msgstr "" +msgstr "Talepler" #. module: maintenance #: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment_category__technician_user_id @@ -1047,7 +1050,7 @@ msgstr "" #. module: maintenance #: model:res.groups,comment:maintenance.group_equipment_manager msgid "The user will be able to manage equipments." -msgstr "" +msgstr "Kullanıcı, ekipmanları yönetebilecek." #. module: maintenance #: model:ir.ui.view,arch_db:maintenance.maintenance_team_kanban @@ -1134,6 +1137,8 @@ msgid "" "You cannot delete an equipment category containing equipments or maintenance" " requests." msgstr "" +"Ekipman içeren ya da bakım talebi olan bir ekipman kategorisini " +"silemezsiniz." #. module: maintenance #: model:ir.ui.view,arch_db:maintenance.hr_equipment_view_form diff --git a/addons/mass_mailing/i18n/tr.po b/addons/mass_mailing/i18n/tr.po index 7bb803e7f05..6df27d5b6b1 100644 --- a/addons/mass_mailing/i18n/tr.po +++ b/addons/mass_mailing/i18n/tr.po @@ -17,13 +17,14 @@ # UNIBRAVO SOFTWARE <unibravo@gmail.com>, 2017 # Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017 # İlknur Püskül <ilknurpuskull@gmail.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:11+0000\n" "PO-Revision-Date: 2018-03-22 14:11+0000\n" -"Last-Translator: İlknur Püskül <ilknurpuskull@gmail.com>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -219,7 +220,7 @@ msgstr "" #. module: mass_mailing #: model:ir.ui.view,arch_db:mass_mailing.s_mail_block_three_cols msgid "A short description" -msgstr "" +msgstr "Kısa tanımlama" #. module: mass_mailing #: model:ir.ui.view,arch_db:mass_mailing.s_mail_block_text_image @@ -548,7 +549,7 @@ msgstr "E-posta gönderilmiyor önde gelen teknik hata tarihi" #. module: mass_mailing #: model:ir.model.fields,help:mass_mailing.field_mail_mail_statistics__clicked msgid "Date when customer clicked on at least one tracked link" -msgstr "" +msgstr "Müşterini en az bir izlenen bağlantıyı tıkladığı tarih" #. module: mass_mailing #: model:ir.model.fields,help:mass_mailing.field_mail_mail_statistics__scheduled @@ -1509,7 +1510,7 @@ msgstr "Aylık Planlanan" #. module: mass_mailing #: model:ir.model.fields,field_description:mass_mailing.field_mail_mass_mailing__next_departure msgid "Scheduled date" -msgstr "" +msgstr "Planlanan tarih" #. module: mass_mailing #: model:ir.ui.view,arch_db:mass_mailing.email_designer_snippets @@ -1654,7 +1655,7 @@ msgstr "İstatistikler" #: model:ir.actions.act_window,name:mass_mailing.action_view_mass_mailing_links_statistics #: model:ir.actions.act_window,name:mass_mailing.dropdb snipp msgid "Statistics of Clicks" -msgstr "" +msgstr "Tıklanma İstatistikleri" #. module: mass_mailing #: model:ir.model.fields,field_description:mass_mailing.field_mail_mass_mailing__state diff --git a/addons/mass_mailing/i18n/zh_CN.po b/addons/mass_mailing/i18n/zh_CN.po index 6116a01beb5..6badf4f3721 100644 --- a/addons/mass_mailing/i18n/zh_CN.po +++ b/addons/mass_mailing/i18n/zh_CN.po @@ -19,13 +19,14 @@ # e2f <projects@e2f.com>, 2018 # liAnGjiA <liangjia@qq.com>, 2018 # e2f_cn c7 <e2f_cn_c7@outlook.com>, 2018 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:11+0000\n" "PO-Revision-Date: 2018-03-22 14:11+0000\n" -"Last-Translator: e2f_cn c7 <e2f_cn_c7@outlook.com>, 2018\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -245,7 +246,7 @@ msgstr "有效" #. module: mass_mailing #: model:ir.actions.act_window,help:mass_mailing.mass_mailing_tag_action msgid "Add a new tag" -msgstr "" +msgstr "添加一个新标签" #. module: mass_mailing #: model:ir.model.fields,field_description:mass_mailing.field_mail_mass_mailing_campaign__unique_ab_testing @@ -457,7 +458,7 @@ msgstr "" #. module: mass_mailing #: model:ir.actions.act_window,help:mass_mailing.action_view_mass_mailing_contacts msgid "Create a contact in your address book" -msgstr "" +msgstr "在你的地址簿中创建一个联系人" #. module: mass_mailing #: model:ir.actions.act_window,help:mass_mailing.action_create_ab_mass_mailings_from_campaign diff --git a/addons/mrp/i18n/tr.po b/addons/mrp/i18n/tr.po index 0baf4258661..accf6afbdc9 100644 --- a/addons/mrp/i18n/tr.po +++ b/addons/mrp/i18n/tr.po @@ -7,13 +7,14 @@ # Ediz Duman <neps1192@gmail.com>, 2017 # Martin Trigaux, 2017 # Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:09+0000\n" "PO-Revision-Date: 2018-03-22 14:09+0000\n" -"Last-Translator: Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1229,6 +1230,8 @@ msgid "" " the raw materials of that product will be added to the\n" " manufacturing order of the final product." msgstr "" +"Eğer ürün tam olarak bitmemişse: bileşen olarak bu ürünü içeren üretim emri " +"işlemi, bu ürünün hamaddesi son ürünün üretim siparişine eklenecektir. " #. module: mrp #: model:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban @@ -1255,7 +1258,7 @@ msgstr "Bilgilendirici, eşleştirmede kullanılmaz" #: code:addons/mrp/models/mrp_unbuild.py:210 #, python-format msgid "Insufficient Quantity" -msgstr "" +msgstr "Yetersiz Miktar" #. module: mrp #: model:ir.ui.view,arch_db:mrp.mrp_message_view_form @@ -1299,7 +1302,7 @@ msgstr "Bu genel belgemi" #. module: mrp #: model:ir.model.fields,field_description:mrp.field_mrp_workorder__is_user_working msgid "Is the Current User Working" -msgstr "" +msgstr "Mevctu Kullanıcı Çalışıyor Mu?" #. module: mrp #: code:addons/mrp/models/mrp_workcenter.py:162 @@ -1314,6 +1317,9 @@ msgid "" "Set a location if you produce at a fixed location. This can be a partner " "location if you subcontract the manufacturing operations." msgstr "" +"Hammaddeleri bulduğunuz konumda üretiyorsanız boş bırakın. Sabit konumda " +"üretiyorsanız konum ekleyin. Eğer alt yüklenici ile üretim operasyonu " +"yapıyorsanız partnerinizin konumunu ekleyebilirsin." #. module: mrp #: model:ir.ui.view,arch_db:mrp.view_mrp_bom_filter selection:mrp.bom,type:0 @@ -2600,6 +2606,9 @@ msgid "" "to produce after the quantity set in 'Quantity To Process' has been " "produced." msgstr "" +"Önceki iş emrinden sonra, sıradaki iş emrini planlamak için ayarınızı " +"'hayır' olarak yapın. 'İşlenecek Miktar' dan üretim yapmak için ayarınızı " +"'evet' olarak yapın." #. module: mrp #: selection:mrp.routing.workcenter,time_mode:0 @@ -2677,7 +2686,7 @@ msgstr "Stok Hareketi" #. module: mrp #: model:ir.model.fields,field_description:mrp.field_mrp_production__move_dest_ids msgid "Stock Movements of Produced Goods" -msgstr "" +msgstr "Üretilen Malların Stok Hareketi" #. module: mrp #: model:ir.actions.act_window,name:mrp.action_mrp_unbuild_moves @@ -2790,7 +2799,7 @@ msgstr "1. operasyonun bileşenleri" #. module: mrp #: model:ir.model.fields,help:mrp.field_mrp_document__res_model msgid "The database object this attachment will be attached to." -msgstr "" +msgstr "Bu eki içeren veritabanı eklenecektir." #. module: mrp #: model:ir.model.fields,help:mrp.field_mrp_production__routing_id @@ -2859,7 +2868,7 @@ msgstr "Üretilecek miktar pozitif olmalıdır!" #. module: mrp #: model:ir.model.fields,help:mrp.field_mrp_document__res_id msgid "The record id this is attached to." -msgstr "" +msgstr "Kayıtlı ID eklenmiştir." #. module: mrp #: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__routing_id @@ -2868,6 +2877,8 @@ msgid "" "create work orders afterwards which alters the execution of the " "manufacturing order." msgstr "" +"Rota, kullanılan tüm Çalışma Merkezlerini ve ne kadar kullanıldığını içerir." +" Bu daha sonra üretim emrini değiştirecek işler oluşturacaktır." #. module: mrp #: code:addons/mrp/models/procurement.py:20 @@ -3053,7 +3064,7 @@ msgstr "Toplam Çalışan Siparişler" #. module: mrp #: model:ir.ui.view,arch_db:mrp.mrp_production_workcenter_form_view_inherit msgid "Total duration" -msgstr "" +msgstr "Toplam Süre" #. module: mrp #: model:ir.ui.view,arch_db:mrp.mrp_production_form_view @@ -3142,6 +3153,7 @@ msgid "" "Unlock the manufacturing order to correct what has been consumed or " "produced." msgstr "" +"Üretilen ya da tüketilen şeyi düzeltmek için üretim emrinin kilidini aç." #. module: mrp #: model:ir.ui.view,arch_db:mrp.mrp_production_form_view @@ -3188,7 +3200,7 @@ msgstr "" #: model:ir.ui.view,arch_db:mrp.product_product_form_view_bom_button #: model:ir.ui.view,arch_db:mrp.product_template_form_view_bom_button msgid "Used In" -msgstr "" +msgstr "Burada Kullanıldı" #. module: mrp #: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__user_id @@ -3520,6 +3532,8 @@ msgid "" "You can either upload a file from your computer or copy/paste an internet " "link to your file." msgstr "" +"Bilgisayarınızdan bir dosya yükleyebilir ya da dosyanıza internet " +"bağlantınızı kopyalayıp yapıştırabilirsiniz." #. module: mrp #: code:addons/mrp/models/mrp_production.py:523 @@ -3583,7 +3597,7 @@ msgstr "" #: code:addons/mrp/models/mrp_unbuild.py:93 #, python-format msgid "You cannot unbuild a undone manufacturing order." -msgstr "" +msgstr "Yapılmamış bir üretim emri oluşturamazsınız." #. module: mrp #: code:addons/mrp/wizard/change_production_qty.py:46 diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py index 337a7798ad0..aee988d09f8 100644 --- a/addons/mrp/models/mrp_production.py +++ b/addons/mrp/models/mrp_production.py @@ -388,7 +388,7 @@ class MrpProduction(models.Model): source_location = routing.location_id else: source_location = self.location_src_id - original_quantity = self.product_qty - self.qty_produced + original_quantity = (self.product_qty - self.qty_produced) or 1.0 data = { 'sequence': bom_line.sequence, 'name': self.name, diff --git a/addons/mrp/report/mrp_report_bom_structure.py b/addons/mrp/report/mrp_report_bom_structure.py index f60c0693ff4..03d193cb7b5 100644 --- a/addons/mrp/report/mrp_report_bom_structure.py +++ b/addons/mrp/report/mrp_report_bom_structure.py @@ -120,9 +120,9 @@ class ReportBomStructure(models.AbstractModel): price = line.product_id.uom_id._compute_price(line.product_id.standard_price, line.product_uom_id) * line_quantity if line.child_bom_id: factor = line.product_uom_id._compute_quantity(line_quantity, line.child_bom_id.product_uom_id) * line.child_bom_id.product_qty - total = self._get_price(line.child_bom_id, factor) + sub_total = self._get_price(line.child_bom_id, factor) else: - total = price + sub_total = price components.append({ 'prod_id': line.product_id.id, 'prod_name': line.product_id.display_name, @@ -132,11 +132,11 @@ class ReportBomStructure(models.AbstractModel): 'parent_id': bom.id, 'line_id': line.id, 'level': level or 0, - 'total': total, + 'total': sub_total, 'child_bom': line.child_bom_id.id, 'phantom_bom': line.child_bom_id and line.child_bom_id.type == 'phantom' or False, }) - total += total + total += sub_total return components, total def _get_operation_line(self, routing, qty, level): diff --git a/addons/mrp/wizard/change_production_qty.py b/addons/mrp/wizard/change_production_qty.py index 5c3aeb07dd2..eac470a8be5 100644 --- a/addons/mrp/wizard/change_production_qty.py +++ b/addons/mrp/wizard/change_production_qty.py @@ -43,7 +43,8 @@ class ChangeProductionQty(models.TransientModel): production = wizard.mo_id produced = sum(production.move_finished_ids.filtered(lambda m: m.product_id == production.product_id).mapped('quantity_done')) if wizard.product_qty < produced: - raise UserError(_("You have already processed %d. Please input a quantity higher than %d ")%(produced, produced)) + format_qty = '%.{precision}f'.format(precision=precision) + raise UserError(_("You have already processed %s. Please input a quantity higher than %s ") % (format_qty % produced, format_qty % produced)) production.write({'product_qty': wizard.product_qty}) done_moves = production.move_finished_ids.filtered(lambda x: x.state == 'done' and x.product_id == production.product_id) qty_produced = production.product_id.uom_id._compute_quantity(sum(done_moves.mapped('product_qty')), production.product_uom_id) diff --git a/addons/note/i18n/zh_CN.po b/addons/note/i18n/zh_CN.po index d779217fa4f..638ff66582c 100644 --- a/addons/note/i18n/zh_CN.po +++ b/addons/note/i18n/zh_CN.po @@ -7,13 +7,14 @@ # liulixia <liu.lixia@elico-corp.com>, 2017 # 卓忆科技 <zhanghao@jointd.com>, 2017 # 老窦 北京 <2662059195@qq.com>, 2017 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2017\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,7 +36,7 @@ msgstr "" #. module: note #: model:ir.actions.act_window,help:note.note_tag_action msgid "Add a new tag" -msgstr "" +msgstr "添加一个新标签" #. module: note #: model:ir.ui.view,arch_db:note.view_note_note_filter diff --git a/addons/pad_project/i18n/tr.po b/addons/pad_project/i18n/tr.po index 4639f6e8dfd..c23adbe0106 100644 --- a/addons/pad_project/i18n/tr.po +++ b/addons/pad_project/i18n/tr.po @@ -4,14 +4,16 @@ # # Translators: # Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017 +# Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017 # Murat Kaplan <muratk@projetgrup.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:53+0000\n" -"PO-Revision-Date: 2017-09-20 09:53+0000\n" -"Last-Translator: Murat Kaplan <muratk@projetgrup.com>, 2017\n" +"POT-Creation-Date: 2018-03-22 14:10+0000\n" +"PO-Revision-Date: 2018-03-22 14:10+0000\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +22,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: pad_project -#: model:ir.model.fields,field_description:pad_project.field_project_task_description_pad +#: model:ir.model.fields,field_description:pad_project.field_project_task__description_pad msgid "Pad URL" msgstr "PAD adresi" @@ -35,17 +37,17 @@ msgid "Task" msgstr "Görev" #. module: pad_project -#: model:ir.model.fields,field_description:pad_project.field_project_task_use_pad +#: model:ir.model.fields,field_description:pad_project.field_project_task__use_pad msgid "Use collaborative pad" -msgstr "" +msgstr "Ortak çalışma pedi kullan" #. module: pad_project -#: model:ir.model.fields,help:pad_project.field_project_project_use_pads -#: model:ir.model.fields,help:pad_project.field_project_task_use_pad +#: model:ir.model.fields,help:pad_project.field_project_project__use_pads +#: model:ir.model.fields,help:pad_project.field_project_task__use_pad msgid "Use collaborative pad for the tasks on this project." -msgstr "" +msgstr "Bu projedeki görevler için ortak çalışma pedi kullan" #. module: pad_project -#: model:ir.model.fields,field_description:pad_project.field_project_project_use_pads +#: model:ir.model.fields,field_description:pad_project.field_project_project__use_pads msgid "Use collaborative pads" msgstr "" diff --git a/addons/payment/i18n/fr.po b/addons/payment/i18n/fr.po index 7ebb308a396..2333f80df5f 100644 --- a/addons/payment/i18n/fr.po +++ b/addons/payment/i18n/fr.po @@ -29,13 +29,14 @@ # fr trans <e2ftrans1@yahoo.com>, 2017 # e2f <projects@e2f.com>, 2018 # Olivier Dony <odo@odoo.com>, 2018 +# Cécile Collart <cco@odoo.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Olivier Dony <odo@odoo.com>, 2018\n" +"Last-Translator: Cécile Collart <cco@odoo.com>, 2018\n" "Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1077,6 +1078,7 @@ msgstr "Veuillez sélectionner une méthode de paiement." #, python-format msgid "Please select the option to add a new payment method." msgstr "" +"Veuillez sélectionner l'option d'ajouter une nouvelle méthode de paiement." #. module: payment #: model:payment.acquirer,post_msg:payment.payment_acquirer_custom diff --git a/addons/payment/i18n/pt_BR.po b/addons/payment/i18n/pt_BR.po index 1c833e2d527..3fafeafcf3a 100644 --- a/addons/payment/i18n/pt_BR.po +++ b/addons/payment/i18n/pt_BR.po @@ -13,13 +13,14 @@ # Fábio Novais <fabionovais@aptu.com.br>, 2017 # Marcos Abreu <marcoos.abreu@gmail.com>, 2017 # Caio Leonardo Mendes de Sousa <caleozao@gmail.com>, 2017 +# Diego Bittencourt <diegomb86@gmail.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Caio Leonardo Mendes de Sousa <caleozao@gmail.com>, 2017\n" +"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1444,7 +1445,7 @@ msgstr "" #. module: payment #: model:ir.ui.view,arch_db:payment.payment_confirmation_status msgid "Your payment has been authorized." -msgstr "" +msgstr "Seu pagamento foi autorizado." #. module: payment #: model:ir.ui.view,arch_db:payment.transaction_form diff --git a/addons/payment/i18n/tr.po b/addons/payment/i18n/tr.po index 8861f5568e4..2f65714d7fe 100644 --- a/addons/payment/i18n/tr.po +++ b/addons/payment/i18n/tr.po @@ -217,7 +217,7 @@ msgstr "Alıcının Referansı" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_icon__acquirer_ids msgid "Acquirers" -msgstr "" +msgstr "Alıcılar" #. module: payment #: model:ir.ui.view,arch_db:payment.payment_icon_form_view @@ -266,7 +266,7 @@ msgstr "Tutar" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__authorize_implemented msgid "Authorize Mechanism Supported" -msgstr "" +msgstr "Yetkili Mekanizma Desteklendi" #. module: payment #: model:payment.acquirer,name:payment.payment_acquirer_authorize @@ -277,7 +277,7 @@ msgstr "Authorize.Net" #. module: payment #: selection:payment.transaction,state:0 msgid "Authorized" -msgstr "" +msgstr "Yetkili" #. module: payment #: model:payment.acquirer,post_msg:payment.payment_acquirer_custom @@ -294,12 +294,12 @@ msgstr "Buckaroo" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_transaction__callback_res_id msgid "Callback Document ID" -msgstr "" +msgstr "Dokuman ID'sini Geri Çağır" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_transaction__callback_model_id msgid "Callback Document Model" -msgstr "" +msgstr "Geri Arama Dokuman Modeli" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_transaction__callback_hash @@ -309,7 +309,7 @@ msgstr "" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_transaction__callback_method msgid "Callback Method" -msgstr "" +msgstr "Geri Çağırma Yöntemi" #. module: payment #. openerp-web @@ -333,7 +333,7 @@ msgstr "İptal Edildi" #: code:addons/payment/static/src/js/payment_form.js:189 #, python-format msgid "Cannot set-up the payment" -msgstr "" +msgstr "Ödeme ayarlanamadı." #. module: payment #: code:addons/payment/controllers/portal.py:110 @@ -344,17 +344,17 @@ msgstr "" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__capture_manually msgid "Capture Amount Manually" -msgstr "" +msgstr "Miktarı Manuel Yakala" #. module: payment #: model:ir.ui.view,arch_db:payment.transaction_form msgid "Capture Transaction" -msgstr "" +msgstr "İşlem Yakala" #. module: payment #: model:ir.model.fields,help:payment.field_payment_acquirer__capture_manually msgid "Capture the amount from Odoo, when the delivery is completed." -msgstr "" +msgstr "Teslimat tamamlandığında, Odoo'dan miktarı yakalayın." #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_transaction__partner_city @@ -388,7 +388,7 @@ msgstr "Yapılandırma" #: code:addons/payment/static/src/js/payment_form.js:358 #, python-format msgid "Confirm Deletion" -msgstr "" +msgstr "Silme İşlemini Onayla" #. module: payment #: model:ir.model,name:payment.model_res_partner @@ -398,7 +398,7 @@ msgstr "Kontak" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__module_id msgid "Corresponding Module" -msgstr "" +msgstr "İlgili Modül" #. module: payment #: model:ir.model.fields,field_description:payment.field_res_partner__payment_token_count @@ -551,7 +551,7 @@ msgstr "Hata Mesajı" #: code:addons/payment/static/src/js/payment_form.js:423 #, python-format msgid "Error: " -msgstr "" +msgstr "Hata:" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_transaction__fees @@ -561,7 +561,7 @@ msgstr "Ücret" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__fees_implemented msgid "Fees Computation Supported" -msgstr "" +msgstr "Ücret Hesaplama Desteği" #. module: payment #: model:ir.model.fields,help:payment.field_payment_transaction__fees @@ -598,7 +598,7 @@ msgstr "Düğme Form Şablonu" #. module: payment #: selection:payment.transaction,type:0 msgid "Form with tokenization" -msgstr "" +msgstr "Fiş ile form" #. module: payment #: model:ir.ui.view,arch_db:payment.confirm @@ -629,6 +629,7 @@ msgid "" "If you leave it empty, the payment acquirer will be available for all the " "countries." msgstr "" +"Eğer boş bırakırsanız, ödeme alıcısı tüm ülkeler için uygun olacaktır." #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__image @@ -644,7 +645,7 @@ msgstr "" #. module: payment #: model:payment.acquirer,name:payment.payment_acquirer_ogone msgid "Ingenico" -msgstr "" +msgstr "Ingenico" #. module: payment #: model:ir.ui.view,arch_db:payment.acquirer_form @@ -655,7 +656,7 @@ msgstr "Kur" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__module_state msgid "Installation State" -msgstr "" +msgstr "Yükleme Durumu" #. module: payment #: model:ir.model.fields,help:payment.field_payment_transaction__reference @@ -694,12 +695,12 @@ msgstr "Son Güncelleme" #. module: payment #: selection:payment.acquirer,save_token:0 msgid "Let the customer decide" -msgstr "" +msgstr "Müşteri kararına izin ver." #. module: payment #: model:ir.model.fields,help:payment.field_payment_icon__acquirer_ids msgid "List of Acquirers supporting this payment icon." -msgstr "" +msgstr "Bu ödeme ikonunu destekleyen alıcıların listesi." #. module: payment #: model:ir.model.fields,help:payment.field_payment_acquirer__website_published @@ -709,7 +710,7 @@ msgstr "Bu ödeme alıcısını kullanılabilir yap (Müşteri faturaları, vb.) #. module: payment #: model:ir.ui.view,arch_db:payment.pay_methods msgid "Manage your Payment Methods" -msgstr "" +msgstr "Ödeme Yöntemlerinizi yönetin" #. module: payment #: model:ir.ui.view,arch_db:payment.pay_meth_link @@ -790,7 +791,7 @@ msgstr "Mesajlar" #: code:addons/payment/models/payment_acquirer.py:389 #, python-format msgid "Missing partner reference when trying to create a new payment token" -msgstr "" +msgstr "Yeni ödeme fişi oluşturmaya çalışırken, kaçan partner referansı" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__name @@ -805,7 +806,7 @@ msgstr "İsim" #. module: payment #: model:ir.model.fields,help:payment.field_payment_token__name msgid "Name of the payment token" -msgstr "" +msgstr "Ödeme fişinin adı" #. module: payment #: selection:payment.acquirer,save_token:0 @@ -823,7 +824,7 @@ msgstr "" #: code:addons/payment/static/src/js/payment_form.js:309 #, python-format msgid "No payment method selected" -msgstr "" +msgstr "Ödeme yöntemi seçilmedi." #. module: payment #: model:ir.model.fields,help:payment.field_account_payment__payment_token_id @@ -838,6 +839,8 @@ msgid "" "Note: Subscriptions does not take this field in account, it uses server to " "server by default." msgstr "" +"Not: Abonelikler hesapta bu alanı dikkate almaz, o varsayılan sunucuyu " +"kullanır." #. module: payment #: selection:payment.acquirer,provider:0 @@ -855,13 +858,13 @@ msgstr "Tamam" #: code:addons/payment/models/payment_acquirer.py:754 #, python-format msgid "Only transactions in the Authorized status can be captured." -msgstr "" +msgstr "Sadece Yetkili durumundaki işlemler yakalanabilir." #. module: payment #: code:addons/payment/models/payment_acquirer.py:761 #, python-format msgid "Only transactions in the Authorized status can be voided." -msgstr "" +msgstr "Sadece Yetkili durumundaki işlemler iptal edilebilir." #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_token__partner_id @@ -877,7 +880,7 @@ msgstr "İş Ortağı Adı" #: model:payment.acquirer,name:payment.payment_acquirer_payu #: selection:payment.acquirer,provider:0 msgid "PayUmoney" -msgstr "" +msgstr "PayUmoney" #. module: payment #: model:ir.ui.view,arch_db:payment.confirm @@ -901,13 +904,13 @@ msgstr "Ödeme Alıcısı" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__payment_flow msgid "Payment Flow" -msgstr "" +msgstr "Ödeme Akışı" #. module: payment #: model:ir.model,name:payment.model_payment_icon #: model:ir.ui.view,arch_db:payment.payment_icon_form_view msgid "Payment Icon" -msgstr "" +msgstr "Ödeme İkonu" #. module: payment #: model:ir.actions.act_window,name:payment.action_payment_icon @@ -958,7 +961,7 @@ msgstr "Ödeme İşlemleri" #. module: payment #: selection:payment.acquirer,payment_flow:0 msgid "Payment from Odoo" -msgstr "" +msgstr "Odoo'dan Ödeme" #. module: payment #: code:addons/payment/models/account_payment.py:59 @@ -991,6 +994,14 @@ msgid "" " reconcile the bank statement line with this temporary transfer account. Use reconciliation\n" " templates to do it in one-click." msgstr "" +"Ödemeler bu yevmiyeye kaydedilecektir. Eğer ödemenizi direk banka " +"hesabınızdan yaparsanız, banka hesabınızı seçin. Eğer ödemenizi birçok işlem" +" için mevduata alıyorsanız, banka uzlaştırması kolayca yönetmek için özel " +"bir ödeme yevmiyesi oluşturun. Defterinizin geçici transfer hesabında tutun " +"(ödeme yevmiyesi oluşturduğunuzda otomatik olarak oluşur). Daha sonra ödeme " +"alıcısı tarafından banka hesabınıza ödemeyi aldığınızda, banka hesap özetini" +" geçici transfer hesabı ile uzlaştırın. Bir tık ile uzlaştırma şablonunu " +"kullanarak bu işlemi yapın." #. module: payment #: model:payment.acquirer,name:payment.payment_acquirer_paypal @@ -1030,24 +1041,24 @@ msgstr "Lütfen bir ödeme yöntemi seçin." #: code:addons/payment/static/src/js/payment_form.js:310 #, python-format msgid "Please select the option to add a new payment method." -msgstr "" +msgstr "Yeni ödeme yöntemi ekleme için lütfen seçenekleri seçin." #. module: payment #: model:payment.acquirer,post_msg:payment.payment_acquirer_custom #: model:payment.acquirer,post_msg:payment.payment_acquirer_transfer msgid "Please use the following transfer details" -msgstr "" +msgstr "Lütfen devam eden transfer detaylarını kullanın." #. module: payment #: model:payment.acquirer,post_msg:payment.payment_acquirer_custom #: model:payment.acquirer,post_msg:payment.payment_acquirer_transfer msgid "Please use the order name as communication reference." -msgstr "" +msgstr "Lütfen iletişim referansı olarak sipariş adı kullanın." #. module: payment #: model:ir.ui.view,arch_db:payment.confirm msgid "Processed by" -msgstr "" +msgstr "Tarafından işlenen " #. module: payment #: selection:payment.acquirer,environment:0 @@ -1064,7 +1075,7 @@ msgstr "Sağlayıcı" #. module: payment #: selection:payment.acquirer,payment_flow:0 msgid "Redirection to the acquirer website" -msgstr "" +msgstr "Alıcı websitesine yönlendir" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_transaction__reference @@ -1080,12 +1091,12 @@ msgstr "Alıcı veritabanında tutulan TX referansı" #. module: payment #: selection:payment.transaction,state:0 msgid "Refunded" -msgstr "" +msgstr "İade Edildi" #. module: payment #: selection:payment.transaction,state:0 msgid "Refunding" -msgstr "" +msgstr "İade Etme" #. module: payment #: constraint:payment.acquirer:0 @@ -1100,12 +1111,12 @@ msgstr "S2S Form Şablonu" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__save_token msgid "Save Cards" -msgstr "" +msgstr "Kartları Kaydet" #. module: payment #: model:ir.ui.view,arch_db:payment.payment_tokens_list msgid "Save my payment data" -msgstr "" +msgstr "Ödeme bilgilerimi kaydet" #. module: payment #: model:ir.actions.act_window,name:payment.payment_token_action @@ -1116,12 +1127,12 @@ msgstr "Kaydedilen Ödeme Verisi" #. module: payment #: model:ir.model.fields,field_description:payment.field_account_payment__payment_token_id msgid "Saved payment token" -msgstr "" +msgstr "Ödeme fişlerimi kaydet" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__token_implemented msgid "Saving Card Data supported" -msgstr "" +msgstr "Kaydedilen Kart Bilgisi desteklendi" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__sequence @@ -1151,18 +1162,18 @@ msgstr "Sunucudan Sunucuya" #: code:addons/payment/static/src/js/payment_form.js:301 #, python-format msgid "Server error" -msgstr "" +msgstr "Sunucu hatas" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_token__short_name msgid "Short name" -msgstr "" +msgstr "Kısa ad" #. module: payment #: model:payment.acquirer,name:payment.payment_acquirer_sips #: selection:payment.acquirer,provider:0 msgid "Sips" -msgstr "" +msgstr "Sips" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__image_small @@ -1194,12 +1205,12 @@ msgstr "Durum" #: model:payment.acquirer,name:payment.payment_acquirer_stripe #: selection:payment.acquirer,provider:0 msgid "Stripe" -msgstr "" +msgstr "Stripe" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__payment_icon_ids msgid "Supported Payment Icons" -msgstr "" +msgstr "Desteklenen Ödeme İkonları" #. module: payment #: model:ir.model.fields,help:payment.field_payment_acquirer__registration_view_template_id @@ -1242,6 +1253,7 @@ msgid "" "This field holds the image used for this payment icon, limited to " "1024x1024px" msgstr "" +"Bu alan 1024x1024 px ile sınırlı ödeme ikonu için kullanılan resmi tutar. " #. module: payment #: model:ir.model.fields,help:payment.field_payment_acquirer__image @@ -1259,6 +1271,10 @@ msgid "" " invoicing), you need it to automatically charge the customer when you issue" " an invoice." msgstr "" +"Bu seçenek müşterilere bir ödeme fişi olarak kredi kartlarını kaydetmelerine" +" ve onları daha sonraki satın almalarda kullanmalarına izin verir. Eğer " +"aboneliklerinizi yönetiyorsanız (yinelenen faturalar), bir fatura " +"düzenlediğiniz zaman, müşteriyi otomatik olarak ücretlendirmeniz gerekir. " #. module: payment #: model:ir.model.fields,help:payment.field_payment_acquirer__country_ids @@ -1273,12 +1289,14 @@ msgid "" "This template renders the acquirer button with all necessary values.\n" " It is rendered with qWeb with the following evaluation context:" msgstr "" +"Bu şablon, tüm gerekli değerler ile alıcı düğmesine dönüşür. Aşağıdaki " +"değerlendirme bağlamında qWeb ile oluşturulur:" #. module: payment #: model:payment.acquirer,pre_msg:payment.payment_acquirer_transfer msgid "" "Transfer information will be provided after choosing the payment aquirer." -msgstr "" +msgstr "Ödeme alıcısı seçildikten sonra transfer bilgiler sağlanacaktır." #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_transaction__type @@ -1293,7 +1311,7 @@ msgstr "Geçerlilik Tarihi" #. module: payment #: selection:payment.transaction,type:0 msgid "Validation of the bank card" -msgstr "" +msgstr "Banka kartının onayı" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__fees_dom_var @@ -1308,7 +1326,7 @@ msgstr "Değişken uluslararası ücretler (yüzde olarak)" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_token__verified msgid "Verified" -msgstr "" +msgstr "Doğrulanmış" #. module: payment #: model:ir.model.fields,field_description:payment.field_payment_acquirer__website_published @@ -1318,7 +1336,7 @@ msgstr "Portalda / Wesitesinde görünür" #. module: payment #: model:ir.ui.view,arch_db:payment.transaction_form msgid "Void Transaction" -msgstr "" +msgstr "Geçersiz İşlem" #. module: payment #. openerp-web @@ -1332,7 +1350,7 @@ msgstr "Uyarı!" #: code:addons/payment/static/src/js/payment_form.js:136 #, python-format msgid "We are not able to add your payment method at the moment." -msgstr "" +msgstr "Şuanda ödeme metodunuzu ekleyemiyoruz." #. module: payment #. openerp-web @@ -1347,28 +1365,28 @@ msgstr "" #: code:addons/payment/static/src/js/payment_form.js:369 #, python-format msgid "We are not able to delete your payment method at the moment." -msgstr "" +msgstr "Şuanda ödeme metodunuzu silemiyoruz." #. module: payment #. openerp-web #: code:addons/payment/static/src/js/payment_form.js:175 #, python-format msgid "We are not able to redirect you to the payment form." -msgstr "" +msgstr "Ödeme formuna yönlendiremiyoruz." #. module: payment #. openerp-web #: code:addons/payment/static/src/js/payment_form.js:181 #, python-format msgid "We are not able to redirect you to the payment form.<" -msgstr "" +msgstr "Ödeme formuna yönlendiremiyoruz.<" #. module: payment #. openerp-web #: code:addons/payment/static/src/js/payment_form.js:190 #, python-format msgid "We're unable to process your payment." -msgstr "" +msgstr "Ödemenizi işleyemiyoruz." #. module: payment #: model:payment.acquirer,name:payment.payment_acquirer_transfer @@ -1387,6 +1405,7 @@ msgid "" "You will be redirected to the Adyen website after clicking on the payment " "button." msgstr "" +"Ödeme butonuna tıkladıktan sonra Adyen websitesine yönlendirileceksiniz." #. module: payment #: model:payment.acquirer,pre_msg:payment.payment_acquirer_authorize @@ -1394,6 +1413,8 @@ msgid "" "You will be redirected to the Authorize website after clicking on the " "payment button." msgstr "" +"Ödeme butonuna tıkladıktan sonra Yetkilendirme websiteye " +"yönlendirileceksiniz." #. module: payment #: model:payment.acquirer,pre_msg:payment.payment_acquirer_buckaroo @@ -1401,6 +1422,7 @@ msgid "" "You will be redirected to the Buckaroo website after clicking on the payment" " button." msgstr "" +"Ödeme butonuna tıkladıktan sonra Buckaroo websitesine yönlendirileceksiniz" #. module: payment #: model:payment.acquirer,pre_msg:payment.payment_acquirer_ogone @@ -1408,6 +1430,7 @@ msgid "" "You will be redirected to the Ingenico website after clicking on the payment" " button." msgstr "" +"Ödeme butonuna tıkladıktan sonra Ingenico websitesine yönlendirileceksiniz." #. module: payment #: model:payment.acquirer,pre_msg:payment.payment_acquirer_payu @@ -1415,6 +1438,8 @@ msgid "" "You will be redirected to the PayUmoney website after clicking on the " "payment button." msgstr "" +"Ödeme butonuna taıkladıktan sonra PayUmoney websitesine " +"yönlendirileceksiniz." #. module: payment #: model:payment.acquirer,pre_msg:payment.payment_acquirer_paypal @@ -1422,12 +1447,14 @@ msgid "" "You will be redirected to the Paypal website after clicking on the payment " "button." msgstr "" +"Ödeme butonuna tıkladıktan sonra PayPal websitesine yönlendirileceksiniz." #. module: payment #: model:payment.acquirer,pre_msg:payment.payment_acquirer_sips msgid "" "You will be redirected to the Sips website after clicking on payment button." msgstr "" +"Ödeme butonuna tıkladıktan sonra Sips websitesine yönlendirileceksiniz." #. module: payment #: model:ir.ui.view,arch_db:payment.payment_confirmation_status @@ -1475,7 +1502,7 @@ msgstr "para birimi: kayıtlardaki işlem para birimi" #: code:addons/payment/static/src/js/payment_form.js:287 #, python-format msgid "e.g. Your credit card details are wrong. Please verify." -msgstr "" +msgstr "örn: Kredi kartı detaylarınız yanlış. Lütfen doğrulayın." #. module: payment #: model:ir.ui.view,arch_db:payment.acquirer_form diff --git a/addons/payment_adyen/i18n/tr.po b/addons/payment_adyen/i18n/tr.po index d0a968cd457..257fb6789b4 100644 --- a/addons/payment_adyen/i18n/tr.po +++ b/addons/payment_adyen/i18n/tr.po @@ -5,14 +5,15 @@ # Translators: # Ediz Duman <neps1192@gmail.com>, 2017 # Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017 -# Martin Trigaux <mat@odoo.com>, 2017 +# Martin Trigaux, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:53+0000\n" -"PO-Revision-Date: 2017-09-20 09:53+0000\n" -"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n" +"POT-Creation-Date: 2018-03-22 14:10+0000\n" +"PO-Revision-Date: 2018-03-22 14:10+0000\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -36,7 +37,7 @@ msgstr "; sipariş bulunmadı" #: code:addons/payment_adyen/models/payment.py:234 #, python-format msgid "Adyen: feedback error" -msgstr "" +msgstr "Adyen: Geri bildirim hatası" #. module: payment_adyen #: code:addons/payment_adyen/models/payment.py:196 @@ -61,10 +62,10 @@ msgstr "" #. module: payment_adyen #: model:ir.ui.view,arch_db:payment_adyen.acquirer_form_adyen msgid "How to configure your Adyen account?" -msgstr "" +msgstr "Adyen hesabı nasıl konfigüre edilir?" #. module: payment_adyen -#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer_adyen_merchant_account +#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer__adyen_merchant_account msgid "Merchant Account" msgstr "Ticari Kimliği (Merchant ID)" @@ -79,11 +80,11 @@ msgid "Payment Transaction" msgstr "Ödeme İşlemi" #. module: payment_adyen -#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer_adyen_skin_code +#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer__adyen_skin_code msgid "Skin Code" msgstr "Skin Kodu" #. module: payment_adyen -#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer_adyen_skin_hmac_key +#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer__adyen_skin_hmac_key msgid "Skin HMAC Key" msgstr "Skin HMAC Anahtarı" diff --git a/addons/payment_authorize/i18n/fr.po b/addons/payment_authorize/i18n/fr.po index f09b9687ff8..5520b96f53b 100644 --- a/addons/payment_authorize/i18n/fr.po +++ b/addons/payment_authorize/i18n/fr.po @@ -11,13 +11,14 @@ # Richard Mathot <rim@odoo.com>, 2017 # Florian Hatat, 2017 # e2f <projects@e2f.com>, 2018 +# Cécile Collart <cco@odoo.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: e2f <projects@e2f.com>, 2018\n" +"Last-Translator: Cécile Collart <cco@odoo.com>, 2018\n" "Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -97,13 +98,13 @@ msgstr "Transaction" #: code:addons/payment_authorize/controllers/main.py:63 #, python-format msgid "Please complete your profile. " -msgstr "" +msgstr "Complétez votre profil s'il vous plaît." #. module: payment_authorize #: code:addons/payment_authorize/controllers/main.py:58 #, python-format msgid "Please sign in to complete your profile." -msgstr "" +msgstr "Veuillez vous connecter afin de compléter votre profil." #. module: payment_authorize #: model:ir.model.fields,field_description:payment_authorize.field_payment_token__provider diff --git a/addons/payment_authorize/i18n/tr.po b/addons/payment_authorize/i18n/tr.po index aeda6e41716..f7d758f56d1 100644 --- a/addons/payment_authorize/i18n/tr.po +++ b/addons/payment_authorize/i18n/tr.po @@ -7,13 +7,14 @@ # Ediz Duman <neps1192@gmail.com>, 2017 # Hüseyin Cem Aras <hcemaras@gmail.com>, 2017 # Murat Kaplan <muratk@projetgrup.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Murat Kaplan <muratk@projetgrup.com>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -59,12 +60,12 @@ msgstr "Kart numarası" #. module: payment_authorize #: model:ir.ui.view,arch_db:payment_authorize.authorize_s2s_form msgid "Cardholder name" -msgstr "" +msgstr "Kart Sahibinin Adı" #. module: payment_authorize #: model:ir.ui.view,arch_db:payment_authorize.authorize_s2s_form msgid "Expires (MM / YY)" -msgstr "" +msgstr "Son Kullanma Tarihi (AA/YY)" #. module: payment_authorize #: model:ir.ui.view,arch_db:payment_authorize.acquirer_form_authorize @@ -78,6 +79,8 @@ msgid "" "If you don't have any account, please ask your salesperson to update your " "profile. " msgstr "" +"Eğer hiç hesabınız yoksa, lütfen satış personeli ile profilinizi güncellemek" +" için görüşün." #. module: payment_authorize #: model:ir.model,name:payment_authorize.model_payment_acquirer @@ -93,7 +96,7 @@ msgstr "Ödeme İşlemi" #: code:addons/payment_authorize/controllers/main.py:63 #, python-format msgid "Please complete your profile. " -msgstr "" +msgstr "Lütfen profilinizi tamamlayınız." #. module: payment_authorize #: code:addons/payment_authorize/controllers/main.py:58 @@ -109,7 +112,7 @@ msgstr "Sağlayıcı" #. module: payment_authorize #: model:ir.model.fields,field_description:payment_authorize.field_payment_token__save_token msgid "Save Cards" -msgstr "" +msgstr "Kartları Kaydet" #. module: payment_authorize #: code:addons/payment_authorize/models/payment.py:383 @@ -142,6 +145,10 @@ msgid "" " invoicing), you need it to automatically charge the customer when you issue" " an invoice." msgstr "" +"Bu seçenek müşterilere bir ödeme fişi olarak kredi kartlarını kaydetmelerine" +" ve onları daha sonraki satın almalarda kullanmalarına izin verir. Eğer " +"aboneliklerinizi yönetiyorsanız (yinelenen faturalar), bir fatura " +"düzenlediğiniz zaman, müşteriyi otomatik olarak ücretlendirmeniz gerekir. " #. module: payment_authorize #: model:ir.model,name:payment_authorize.model_payment_token diff --git a/addons/payment_ogone/i18n/tr.po b/addons/payment_ogone/i18n/tr.po index 0949f1a3856..62d6105cf8c 100644 --- a/addons/payment_ogone/i18n/tr.po +++ b/addons/payment_ogone/i18n/tr.po @@ -3,17 +3,18 @@ # * payment_ogone # # Translators: -# Martin Trigaux <mat@odoo.com>, 2017 +# Martin Trigaux, 2017 +# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017 # Ediz Duman <neps1192@gmail.com>, 2017 # Murat Kaplan <muratk@projetgrup.com>, 2017 -# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:53+0000\n" -"PO-Revision-Date: 2017-09-20 09:53+0000\n" -"Last-Translator: Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017\n" +"POT-Creation-Date: 2018-03-22 14:10+0000\n" +"PO-Revision-Date: 2018-03-22 14:10+0000\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,29 +23,29 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: payment_ogone -#: code:addons/payment_ogone/models/payment.py:240 +#: code:addons/payment_ogone/models/payment.py:242 #, python-format msgid "; multiple order found" msgstr "; birden çok emir bulundu" #. module: payment_ogone -#: code:addons/payment_ogone/models/payment.py:238 +#: code:addons/payment_ogone/models/payment.py:240 #, python-format msgid "; no order found" msgstr "; sipariş bulunmadı" #. module: payment_ogone -#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_userid +#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_userid msgid "API User ID" msgstr "API Kullanıcı Kimliği (ID)" #. module: payment_ogone -#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_password +#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_password msgid "API User Password" msgstr "API Kullanıcı Şifresi" #. module: payment_ogone -#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_alias_usage +#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_alias_usage msgid "Alias Usage" msgstr "" @@ -61,39 +62,42 @@ msgstr "Kart numarası" #. module: payment_ogone #: model:ir.ui.view,arch_db:payment_ogone.ogone_s2s_form msgid "Cardholder name" -msgstr "" +msgstr "Kart Sahibinin Adı" #. module: payment_ogone #: model:ir.ui.view,arch_db:payment_ogone.ogone_s2s_form msgid "Expires (MM / YY)" -msgstr "" +msgstr "Son Kullanma Tarihi (AA/YY)" #. module: payment_ogone #: model:ir.ui.view,arch_db:payment_ogone.acquirer_form_ogone msgid "How to configure your Ogone account?" -msgstr "" +msgstr "Ogone hesabınız nasıl ayarlanı?" #. module: payment_ogone -#: model:ir.model.fields,help:payment_ogone.field_payment_acquirer_ogone_alias_usage +#: model:ir.model.fields,help:payment_ogone.field_payment_acquirer__ogone_alias_usage msgid "" "If you want to use Ogone Aliases, this default Alias Usage will be presented" " to the customer as the reason you want to keep his payment data" msgstr "" +"Ogone Aliases'i kullanmak isterseniz, bu varsayılan Alias Kullanımı, " +"müşteri ödeme verilerini saklamak isteme nedeni olarak müşteriye " +"sunulacaktır." #. module: payment_ogone -#: code:addons/payment_ogone/models/payment.py:247 +#: code:addons/payment_ogone/models/payment.py:249 #, python-format msgid "Ogone: invalid shasign, received %s, computed %s, for data %s" msgstr "" #. module: payment_ogone -#: code:addons/payment_ogone/models/payment.py:236 +#: code:addons/payment_ogone/models/payment.py:238 #, python-format msgid "Ogone: received data for reference %s" msgstr "" #. module: payment_ogone -#: code:addons/payment_ogone/models/payment.py:229 +#: code:addons/payment_ogone/models/payment.py:231 #, python-format msgid "" "Ogone: received data with missing reference (%s) or pay_id (%s) or shasign " @@ -101,7 +105,7 @@ msgid "" msgstr "" #. module: payment_ogone -#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_pspid +#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_pspid msgid "PSPID" msgstr "PSPID" @@ -116,12 +120,12 @@ msgid "Payment Transaction" msgstr "Ödeme İşlemi" #. module: payment_ogone -#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_shakey_in +#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_shakey_in msgid "SHA Key IN" msgstr "SHA Giriş Anahtarı" #. module: payment_ogone -#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_shakey_out +#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_shakey_out msgid "SHA Key OUT" msgstr "SHA Çıkış Anahtarı" diff --git a/addons/payment_paypal/i18n/tr.po b/addons/payment_paypal/i18n/tr.po index 6b909710c75..9ed39bc7fd5 100644 --- a/addons/payment_paypal/i18n/tr.po +++ b/addons/payment_paypal/i18n/tr.po @@ -3,16 +3,17 @@ # * payment_paypal # # Translators: -# Martin Trigaux <mat@odoo.com>, 2017 +# Martin Trigaux, 2017 # Ediz Duman <neps1192@gmail.com>, 2017 # Murat Kaplan <muratk@projetgrup.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~18\n" +"Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-09-20 09:53+0000\n" -"PO-Revision-Date: 2017-09-20 09:53+0000\n" -"Last-Translator: Murat Kaplan <muratk@projetgrup.com>, 2017\n" +"POT-Creation-Date: 2018-03-22 14:10+0000\n" +"PO-Revision-Date: 2018-03-22 14:10+0000\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,19 +22,19 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_access_token +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_access_token msgid "Access Token" msgstr "Acess Token" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_access_token_validity +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_access_token_validity msgid "Access Token Validity" msgstr "Access Token Geçerliliği" #. module: payment_paypal #: model:ir.ui.view,arch_db:payment_paypal.acquirer_form_paypal msgid "How to configure your paypal account?" -msgstr "" +msgstr "Paypal hesabınız nasıl ayarlanır?" #. module: payment_paypal #: model:ir.model,name:payment_paypal.model_payment_acquirer @@ -41,11 +42,13 @@ msgid "Payment Acquirer" msgstr "Ödeme Alıcısı" #. module: payment_paypal -#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer_paypal_pdt_token +#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer__paypal_pdt_token msgid "" "Payment Data Transfer allows you to receive notification of successful " "payments as they are made." msgstr "" +"Payment Bilgi Transferi, başarılı ödemeler oldukça sizin bildirim almanıza " +"izin verir." #. module: payment_paypal #: model:ir.model,name:payment_paypal.model_payment_transaction @@ -53,24 +56,24 @@ msgid "Payment Transaction" msgstr "Ödeme İşlemi" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_email_account +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_email_account msgid "Paypal Email ID" msgstr "Paypal Email Kimliği (ID)" #. module: payment_paypal -#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer_paypal_use_ipn +#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer__paypal_use_ipn msgid "Paypal Instant Payment Notification" msgstr "Paypal Ödeme Bildirimi" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_seller_account +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_seller_account msgid "Paypal Merchant ID" msgstr "Paypal Ticari Kimliği (Merchant ID)" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_pdt_token +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_pdt_token msgid "Paypal PDT Token" -msgstr "" +msgstr "Paypal PDT Fişi" #. module: payment_paypal #: code:addons/payment_paypal/models/payment.py:138 @@ -79,33 +82,33 @@ msgid "Paypal: received data with missing reference (%s) or txn_id (%s)" msgstr "" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_password +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_password msgid "Rest API Password" msgstr "Rest API Şifresi" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_username +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_username msgid "Rest API Username" msgstr "Rest API Kullanıcı Adı" #. module: payment_paypal -#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer_paypal_seller_account +#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer__paypal_seller_account msgid "" "The Merchant ID is used to ensure communications coming from Paypal are " "valid and secured." msgstr "Paypal'dan gelen ticari kimlik bilgileri doğru ve güvenli." #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_transaction_paypal_txn_type +#: model:ir.model.fields,field_description:payment_paypal.field_payment_transaction__paypal_txn_type msgid "Transaction type" msgstr "İşlem Tipi" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_use_ipn +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_use_ipn msgid "Use IPN" msgstr "IPN Kullan" #. module: payment_paypal -#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_enabled +#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_enabled msgid "Use Rest API" msgstr "Rest API Kullan" diff --git a/addons/payment_sips/i18n/tr.po b/addons/payment_sips/i18n/tr.po index 3491d1fd61e..bdcdc3855ef 100644 --- a/addons/payment_sips/i18n/tr.po +++ b/addons/payment_sips/i18n/tr.po @@ -6,13 +6,14 @@ # Ediz Duman <neps1192@gmail.com>, 2017 # Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017 # Martin Trigaux, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Martin Trigaux, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,17 +43,17 @@ msgstr "" #: code:addons/payment_sips/models/payment.py:55 #, python-format msgid "Incorrect payment acquirer provider" -msgstr "" +msgstr "Yanlış ödeme alıcısı sağlayıcı" #. module: payment_sips #: model:ir.model.fields,field_description:payment_sips.field_payment_acquirer__sips_version msgid "Interface Version" -msgstr "" +msgstr "Arayüz Sürümü" #. module: payment_sips #: model:ir.model.fields,field_description:payment_sips.field_payment_acquirer__sips_merchant_id msgid "Merchant ID" -msgstr "" +msgstr "Ticari ID" #. module: payment_sips #: model:ir.model,name:payment_sips.model_payment_acquirer @@ -88,4 +89,4 @@ msgstr "" #. module: payment_sips #: model:ir.model.fields,help:payment_sips.field_payment_acquirer__sips_merchant_id msgid "Used for production only" -msgstr "" +msgstr "Sadece üretim için kullanılır" diff --git a/addons/payment_stripe/i18n/tr.po b/addons/payment_stripe/i18n/tr.po index c55b0dccdfb..037efb3529e 100644 --- a/addons/payment_stripe/i18n/tr.po +++ b/addons/payment_stripe/i18n/tr.po @@ -4,15 +4,16 @@ # # Translators: # Ediz Duman <neps1192@gmail.com>, 2017 -# Martin Trigaux <mat@odoo.com>, 2017 +# Martin Trigaux, 2017 # Murat Kaplan <muratk@projetgrup.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-24 09:00+0000\n" -"PO-Revision-Date: 2017-10-24 09:00+0000\n" -"Last-Translator: Murat Kaplan <muratk@projetgrup.com>, 2017\n" +"POT-Creation-Date: 2018-03-22 14:10+0000\n" +"PO-Revision-Date: 2018-03-22 14:10+0000\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,12 +29,15 @@ msgid "×" msgstr "×" #. module: payment_stripe -#: model:ir.model.fields,help:payment_stripe.field_payment_acquirer_stripe_image_url +#: model:ir.model.fields,help:payment_stripe.field_payment_acquirer__stripe_image_url msgid "" "A relative or absolute URL pointing to a square image of your brand or " "product. As defined in your Stripe profile. See: " "https://stripe.com/docs/checkout" msgstr "" +"Markanızın veya ürünün kare resmine yönlendiren ilişkili veya mutlak bir " +"URL. Stripe porfilinde tanımladığınız gibi. See: " +"https://stripe.com/docs/checkout" #. module: payment_stripe #: model:ir.ui.view,arch_db:payment_stripe.stripe_s2s_form @@ -48,10 +52,10 @@ msgstr "Kart numarası" #. module: payment_stripe #: model:ir.ui.view,arch_db:payment_stripe.stripe_s2s_form msgid "Cardholder name" -msgstr "" +msgstr "Kart Sahibinin Adı" #. module: payment_stripe -#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer_stripe_image_url +#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer__stripe_image_url msgid "Checkout Image URL" msgstr "" @@ -72,14 +76,14 @@ msgstr "Hata" #. module: payment_stripe #: model:ir.ui.view,arch_db:payment_stripe.stripe_s2s_form msgid "Expires (MM / YY)" -msgstr "" +msgstr "Son Kullanma Tarihi (AA/YY)" #. module: payment_stripe #. openerp-web -#: code:addons/payment_stripe/static/src/js/stripe.js:32 +#: code:addons/payment_stripe/static/src/js/stripe.js:33 #, python-format msgid "Just one more second, confirming your payment..." -msgstr "" +msgstr "Lütfen bekleyiniz, ödemeniz onaylanıyor" #. module: payment_stripe #: model:ir.model,name:payment_stripe.model_payment_acquirer @@ -93,52 +97,54 @@ msgstr "Ödeme İşlemi" #. module: payment_stripe #. openerp-web -#: code:addons/payment_stripe/static/src/js/stripe.js:57 +#: code:addons/payment_stripe/static/src/js/stripe.js:59 #, python-format msgid "Payment error" -msgstr "" +msgstr "Ödeme hatası" #. module: payment_stripe -#: code:addons/payment_stripe/models/payment.py:167 +#: code:addons/payment_stripe/models/payment.py:175 #, python-format msgid "" "Perhaps the problem can be solved by double-checking your credit card " "details, or contacting your bank?" msgstr "" +"Belki problem kredi kartı bilgilerinizi ya da bankanızla anlaşmanızı bir kez" +" daha kontrol ederek çözülebilir? " #. module: payment_stripe -#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer_stripe_publishable_key +#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer__stripe_publishable_key msgid "Stripe Publishable Key" -msgstr "" +msgstr "Stripe yayınlanabilir şifre" #. module: payment_stripe -#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer_stripe_secret_key +#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer__stripe_secret_key msgid "Stripe Secret Key" msgstr "" #. module: payment_stripe -#: code:addons/payment_stripe/models/payment.py:165 +#: code:addons/payment_stripe/models/payment.py:173 #, python-format msgid "Stripe gave us the following info about the problem: '%s'" msgstr "" #. module: payment_stripe -#: code:addons/payment_stripe/models/payment.py:177 +#: code:addons/payment_stripe/models/payment.py:185 #, python-format msgid "Stripe: %s orders found for reference %s" msgstr "" #. module: payment_stripe -#: code:addons/payment_stripe/models/payment.py:173 +#: code:addons/payment_stripe/models/payment.py:181 #, python-format msgid "Stripe: no order found for reference %s" msgstr "" #. module: payment_stripe -#: code:addons/payment_stripe/models/payment.py:163 +#: code:addons/payment_stripe/models/payment.py:171 #, python-format msgid "We're sorry to report that the transaction has failed." -msgstr "" +msgstr "Bu işlem başarısız olduğu için üzgünüz." #. module: payment_stripe #: model:ir.model,name:payment_stripe.model_payment_token diff --git a/addons/payment_stripe/models/payment.py b/addons/payment_stripe/models/payment.py index 9645a5e4288..80450d5fa5a 100644 --- a/addons/payment_stripe/models/payment.py +++ b/addons/payment_stripe/models/payment.py @@ -8,6 +8,7 @@ from odoo import api, fields, models, _ from odoo.addons.payment.models.payment_acquirer import ValidationError from odoo.exceptions import UserError from odoo.tools.safe_eval import safe_eval +from odoo.tools.float_utils import float_round _logger = logging.getLogger(__name__) @@ -106,7 +107,7 @@ class PaymentTransactionStripe(models.Model): def _create_stripe_charge(self, acquirer_ref=None, tokenid=None, email=None): api_url_charge = 'https://%s/charges' % (self.acquirer_id._get_stripe_api_url()) charge_params = { - 'amount': int(self.amount if self.currency_id.name in INT_CURRENCIES else self.amount*100), + 'amount': int(self.amount if self.currency_id.name in INT_CURRENCIES else float_round(self.amount * 100, 2)), 'currency': self.currency_id.name, 'metadata[reference]': self.reference, 'description': self.reference, @@ -139,7 +140,7 @@ class PaymentTransactionStripe(models.Model): refund_params = { 'charge': self.acquirer_reference, - 'amount': int(self.amount*100), # by default, stripe refund the full amount (we don't really need to specify the value) + 'amount': int(float_round(self.amount * 100, 2)), # by default, stripe refund the full amount (we don't really need to specify the value) 'metadata[reference]': self.reference, } diff --git a/addons/phone_validation/i18n/tr.po b/addons/phone_validation/i18n/tr.po index 07914ca0754..d154d793e22 100644 --- a/addons/phone_validation/i18n/tr.po +++ b/addons/phone_validation/i18n/tr.po @@ -4,13 +4,14 @@ # # Translators: # Murat Kaplan <muratk@projetgrup.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-24 09:00+0000\n" -"PO-Revision-Date: 2017-10-24 09:00+0000\n" -"Last-Translator: Murat Kaplan <muratk@projetgrup.com>, 2017\n" +"POT-Creation-Date: 2018-03-22 14:11+0000\n" +"PO-Revision-Date: 2018-03-22 14:11+0000\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,15 +22,17 @@ msgstr "" #. module: phone_validation #: selection:res.company,phone_international_format:0 msgid "Add international prefix" -msgstr "" +msgstr "Uluslararası kodu ekleyin" #. module: phone_validation -#: model:ir.model.fields,help:phone_validation.field_res_company_phone_international_format +#: model:ir.model.fields,help:phone_validation.field_res_company__phone_international_format msgid "" "Always encode phone numbers using international format. Otherwise numbers " "coming from the company's country are nationaly formatted. International " "numbers are always using international format." msgstr "" +"Her zaman telefon numaraları uluslararası formatta kodlanır. Yoksa " +"numaralar, şirketin bağlı olduğu ülkeden ulusal formatta alınır." #. module: phone_validation #: model:ir.model,name:phone_validation.model_res_company @@ -37,12 +40,12 @@ msgid "Companies" msgstr "Şirketler" #. module: phone_validation -#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin_display_name +#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin__display_name msgid "Display Name" msgstr "Görünüm Adı" #. module: phone_validation -#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin_id +#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin__id msgid "ID" msgstr "ID" @@ -59,19 +62,19 @@ msgid "Invalid number %s: probably incorrect prefix" msgstr "" #. module: phone_validation -#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin___last_update +#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin____last_update msgid "Last Modified on" msgstr "Son Güncelleme" #. module: phone_validation -#: model:ir.model.fields,field_description:phone_validation.field_res_company_phone_international_format +#: model:ir.model.fields,field_description:phone_validation.field_res_company__phone_international_format msgid "Local Numbers" -msgstr "" +msgstr "Yerel Numaralar" #. module: phone_validation #: selection:res.company,phone_international_format:0 msgid "No prefix" -msgstr "" +msgstr "Kod yok" #. module: phone_validation #: code:addons/phone_validation/tools/phone_validation.py:44 diff --git a/addons/point_of_sale/i18n/tr.po b/addons/point_of_sale/i18n/tr.po index 834bae301b6..555c69377cb 100644 --- a/addons/point_of_sale/i18n/tr.po +++ b/addons/point_of_sale/i18n/tr.po @@ -23,13 +23,14 @@ # eren b <inactive+erenbn@transifex.com>, 2017 # Levent Karakaş <levent@mektup.at>, 2017 # Saban Yildiz <sabany@projetgrup.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Saban Yildiz <sabany@projetgrup.com>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -290,6 +291,8 @@ msgid "" "A globally unique identifier for this pos configuration, used to prevent " "conflicts in client-generated data." msgstr "" +"Müşteri tarafından oluşturulan verilerin çakışmasını önlemek için bu pos " +"yapılandırması için küresel olarak benzersiz bir tanımlayıcı." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_session__login_number @@ -319,12 +322,12 @@ msgstr "Oturum için benzersiz sipariş sıra numarası" #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__receipt_footer msgid "A short text that will be inserted as a footer in the printed receipt." -msgstr "" +msgstr "Yazdırılan makbuzda altbilgi olarak eklenecek kısa bir metin." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__receipt_header msgid "A short text that will be inserted as a header in the printed receipt." -msgstr "" +msgstr "Yazdırılan makbuzda üst bilgi olarak eklenecek kısa bir metin" #. module: point_of_sale #. openerp-web @@ -408,6 +411,9 @@ msgid "" "the Sales Journal set on this point of sale if you use the Accounting " "application." msgstr "" +"Tüm erişilebilir fiyat listeleri, eğer Muhasebe uygulamasını kullanıyorsanız" +" ya Satış Yevmiyesinde belirlenmiş olan para birimini ya da şirketin para " +"birimi ile aynı birimi kullanmalı." #. module: point_of_sale #: code:addons/point_of_sale/models/pos_config.py:256 @@ -493,6 +499,8 @@ msgstr "Nitelikler" #: model:ir.model.fields,help:point_of_sale.field_pos_session__rescue msgid "Auto-generated session for orphan orders, ignored in constraints" msgstr "" +"Kısıtlamalarda yok sayılan yetim siparişleri için otomatik olarak " +"oluşturulan oturum" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__iface_print_auto @@ -502,7 +510,7 @@ msgstr "Otomatik Makbuz Yazdırma" #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_cashdrawer msgid "Automatically open the cashdrawer." -msgstr "" +msgstr "Otomatik olarak nakit çekici açılır." #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__journal_ids @@ -668,7 +676,7 @@ msgstr "Nakit Kasa Satırı" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.account_cashbox_line_view_tree msgid "Cashbox balance" -msgstr "" +msgstr "Kasa Bakiyesi" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__iface_cashdrawer @@ -764,6 +772,8 @@ msgstr "" msgid "" "Check if you want to group products of this category in point of sale orders" msgstr "" +"İsterseniz, satış noktası siparişlerinde, bu kategorinin ürün gruplarını " +"kontrol edebilirsiniz." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__cash_control @@ -785,6 +795,8 @@ msgid "" "Check this if you want to group the Journal Items by Product while closing a" " Session." msgstr "" +"Bir oturum kapanırken, Yevmiye Kalemlerini, Ürüne göre gruplandırmak " +"istiyorsanız bunu işaretleyin." #. module: point_of_sale #. openerp-web @@ -809,11 +821,13 @@ msgid "" "Choose a specific tax regime at the order depending on the kind of customer " "(tax exempt, onsite vs. takeaway, etc.)." msgstr "" +"Müşteriye türüne bağlı olarak, siparişleriniz için özel vergi düzeni seçin " +"(vergi muafiyeti, yerinde ya da hızlı alım gibi)" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form msgid "Choose among several tax regimes when processing an order" -msgstr "" +msgstr "Siparişiniz işlenirken vergi düzeni içinden seçim yapın" #. module: point_of_sale #. openerp-web @@ -1002,7 +1016,7 @@ msgstr "Şu Anki Oturum" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__current_session_state msgid "Current Session State" -msgstr "" +msgstr "Mevcut Oturum Durumu" #. module: point_of_sale #. openerp-web @@ -1024,7 +1038,7 @@ msgstr "Müşteri Ekranı" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__iface_customer_facing_display msgid "Customer Facing Display" -msgstr "" +msgstr "Müşteri Yüz Ekranı" #. module: point_of_sale #: code:addons/point_of_sale/models/pos_order.py:545 @@ -1036,7 +1050,7 @@ msgstr "Müşteri Faturası" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__customer_facing_display_html msgid "Customer facing display content" -msgstr "" +msgstr "Müşteri yüze ekranı içeriği" #. module: point_of_sale #: model:ir.ui.menu,name:point_of_sale.menu_pos_dashboard @@ -1073,7 +1087,7 @@ msgstr "Varsayılan Mali Koşul" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form msgid "Default Opening" -msgstr "" +msgstr "Varsayılan Açılış" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__pricelist_id @@ -1097,6 +1111,8 @@ msgid "" "Defines what kind of barcodes are available and how they are assigned to " "products, customers and cashiers." msgstr "" +"Hangi çeşit barkotların erişilebilir olduğunu ve ürünlere, müşterilere, " +"kasiyere nasıl atanacağını tanımla. " #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_report_pos_order__delay_validation @@ -1247,6 +1263,8 @@ msgid "" "Don't turn this option on if you take orders on smartphones or tablets. Such" " devices already benefit from a native keyboard." msgstr "" +"Akıllı telefonlarda veya tabletlerde sipariş alırsanız bu seçeneği açmayın. " +"Bu tür cihazlar zaten bir yerel klavyeden faydalanır." #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.view_pos_order_filter @@ -1316,21 +1334,22 @@ msgstr "Boş Seri/Lot Numarası" #: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_scan_via_proxy msgid "Enable barcode scanning with a remotely connected barcode scanner." msgstr "" +"Uzaktan bağlı bir barkod tarayıcı ile barkod taramasını etkinleştirin." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_electronic_scale msgid "Enables Electronic Scale integration." -msgstr "" +msgstr "Elektronik Ölçek Entegrasyonunu etkinleştir" #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_payment_terminal msgid "Enables Payment Terminal integration." -msgstr "" +msgstr "Ödeme Terminali Entegrasyonunu etkinleştir." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_invoicing msgid "Enables invoice generation from the Point of Sale." -msgstr "" +msgstr "Satış Noktasından fatura oluşturmayı etkinleştir." #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_details_wizard__end_date @@ -1431,7 +1450,7 @@ msgstr "Altbilgi" #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_big_scrollbars msgid "For imprecise industrial touchscreens." -msgstr "" +msgstr "Kesin olmayan endüstriyel dokunmatik ekranlar için." #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.view_pos_pos_form @@ -1452,6 +1471,11 @@ msgid "" "recommended for an easy review of your journal entries when managing lots of" " orders." msgstr "" +"Ürün başına bir yevmiye kalemi almak yerine makbuz satırı başına yevmiye " +"kalemi alın. Bu iş her sipariş işin geçerlidir. Eğer müşteri sipariş " +"üzerinde ayarlama yaparsa, her makbuz satırı için bir yevmiye kalemi " +"oluşturulur. Bu seçenek, bir çok siparişi yönetirken yevmiye kayıtlarını " +"kolayca gözden geçirmek için önerilir." #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form @@ -1491,7 +1515,7 @@ msgstr "Grup Yevmiye Kalemleri" #: model:ir.model.fields,field_description:point_of_sale.field_product_uom__is_pos_groupable #: model:ir.model.fields,field_description:point_of_sale.field_product_uom_categ__is_pos_groupable msgid "Group Products in POS" -msgstr "" +msgstr "POS da grup ürünleri" #. module: point_of_sale #. openerp-web @@ -1726,7 +1750,7 @@ msgstr "Son Oturum Kapatma Sırasındaki Nakit" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__last_session_closing_date msgid "Last Session Closing Date" -msgstr "" +msgstr "Son Oturumun Kapanış Tarihi" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_category__write_uid @@ -1823,7 +1847,7 @@ msgstr "Sadakat Programı" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form msgid "Loyalty program to use for this point of sale." -msgstr "" +msgstr "Satış noktası için kullanılan sadakat programı." #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.view_pos_payment @@ -1838,12 +1862,16 @@ msgid "" "be valid, this pricelist must be listed here as an available pricelist. " "Otherwise the default pricelist will apply." msgstr "" +"Satış Noktası'nda erişilebilir bir çok fiyat listesi yapın. Ayrıca " +"kontaklarınızdan belirli müşteriler için belirli fiyat listeleri " +"uygulayabilirsiniz (Satış sekmesinde). Bu fiyat listesi erişilebilir fiyat " +"listesi olarak onaylanmak için listelenmeli." #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.customer_facing_display_html #: model:pos.config,customer_facing_display_html:point_of_sale.pos_config_main msgid "Malibu Drink" -msgstr "" +msgstr "Malibu Drink" #. module: point_of_sale #: model:res.groups,name:point_of_sale.group_pos_manager @@ -2039,6 +2067,8 @@ msgid "" "Only users with Manager access rights for PoS app can modify the product " "prices on orders." msgstr "" +"Sadece Yetkili erişim hakkı ile kullanıcılar ürün fiyatlarını ya da " +"siparişlerini POS uygulaması için değiştirebilir." #. module: point_of_sale #. openerp-web @@ -2078,7 +2108,7 @@ msgstr "Kasa Aç" #. module: point_of_sale #: model:ir.model,name:point_of_sale.model_pos_details_wizard msgid "Open Sales Details Report" -msgstr "" +msgstr "Açık Satış Detay Raporu" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.view_pos_config_kanban @@ -2113,7 +2143,7 @@ msgstr "Açılış Tarihi" #: model:ir.actions.act_window,name:point_of_sale.account_cashbox_line_action #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form msgid "Opening/Closing Values" -msgstr "" +msgstr "Açılış/Kapanış Değerleri" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__picking_type_id @@ -2166,7 +2196,7 @@ msgstr "Satış Noktası Arayüzü" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__sequence_line_id msgid "Order Line IDs Sequence" -msgstr "" +msgstr "Sipariş Satırı ID Dizisi" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_order__lines @@ -2846,7 +2876,7 @@ msgstr "Makbuz Ref" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_session__rescue msgid "Recovery Session" -msgstr "" +msgstr "Kurtarma Oturumu" #. module: point_of_sale #. openerp-web @@ -2880,7 +2910,7 @@ msgstr "Sorumlu" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__restrict_price_control msgid "Restrict Price Modifications to Managers" -msgstr "" +msgstr "Fiyat Değişikliklerini Yöneticilere Sınırla" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form @@ -2958,6 +2988,7 @@ msgstr "Kaydet" #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form msgid "Save this configuration to see and edit the customer display" msgstr "" +"Müşteri ekranını düzenlemek ve görmek için bu yapılandırmayı kaydedin." #. module: point_of_sale #. openerp-web @@ -3159,7 +3190,7 @@ msgstr "Mağazaya özel fiyatlar ayarlayın. (Sezonluk indirimler vb.)" #: code:addons/point_of_sale/static/src/js/pos.web_editor.js:33 #, python-format msgid "Set your customized advertisement here" -msgstr "" +msgstr "Özel reklamlarınızı burada ayarlayın." #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.view_pos_config_kanban @@ -3224,7 +3255,7 @@ msgstr "Başlama Tarih" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form msgid "Start selling from a default product category" -msgstr "" +msgstr "Varsayılan bir ürün kategorisinde satışa başla." #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_session__cash_register_balance_start @@ -3373,7 +3404,7 @@ msgstr "Vergi Rejimi" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__tax_regime_selection msgid "Tax Regime Selection value" -msgstr "" +msgstr "Vergi Yönetim Seçimi değeri" #. module: point_of_sale #: selection:pos.config,iface_tax_included:0 @@ -3451,7 +3482,7 @@ msgstr "Firma ödeme yöntemi firma satış noktası olandan farklıdır" #, python-format msgid "" "The company of the sales journal is different than the one of point of sale" -msgstr "" +msgstr "Satış yevmiyesi şirketi, bir satış noktasından farklıdır." #. module: point_of_sale #: code:addons/point_of_sale/models/pos_config.py:228 @@ -3464,7 +3495,7 @@ msgstr "Stok konumu firma satış noktası'dan farklı" #: code:addons/point_of_sale/models/pos_config.py:248 #, python-format msgid "The default pricelist must be included in the available pricelists." -msgstr "" +msgstr "Varsayılan fiyat listesi mevcut fiyat listesine dahil edilmelidir." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__proxy_ip @@ -3472,6 +3503,8 @@ msgid "" "The hostname or ip address of the hardware proxy, Will be autodetected if " "left empty." msgstr "" +"Donanım proxysinin sunucu adı ya da ip adresleri eğer boş bırakılırsa " +"otomatik olarak belirlenecektir." #. module: point_of_sale #: code:addons/point_of_sale/models/pos_config.py:238 @@ -3497,7 +3530,7 @@ msgstr "Bu POS Oturum adı benzersiz olmalıdır!" #: model:ir.model.fields,help:point_of_sale.field_res_partner__pos_order_count #: model:ir.model.fields,help:point_of_sale.field_res_users__pos_order_count msgid "The number of point of sales orders related to this customer" -msgstr "" +msgstr "Bu müşteri ile ilgili satış noktası siparişlerinin sayısı" #. module: point_of_sale #. openerp-web @@ -3519,6 +3552,8 @@ msgid "" "The payment input will behave similarily to bank payment input, and will be " "prefilled with the exact due amount." msgstr "" +"Ödeme girdileri, banka ödeme girdileri ile benzer şekilde davranacaktır ve " +"kesin tutarla daha önceden doldurulacaktır." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_order__config_id @@ -3532,6 +3567,8 @@ msgid "" "The point of sale will display this product category by default. If no " "category is specified, all available products will be shown." msgstr "" +"Satış noktası varsayılan bu ürün kategorilerini gösterecektir. Eğer " +"özelleşmiş kategori yoksa, tüm erişilir ürünler gösterilecektir." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__pricelist_id @@ -3539,6 +3576,8 @@ msgid "" "The pricelist used if no customer is selected or if the customer has no Sale" " Pricelist configured." msgstr "" +"Eğer hiç bir müşteri seçilmedi ise ya da müşteri ayarlanmış Satış Fiyat " +"Listesine sahip değilse, var olan fiyat listesi kullanılır." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_display_categ_images @@ -3562,7 +3601,7 @@ msgstr "Fiş otomatik yazdırılabiliyorsa önizleme ekranı gösterilmeyecektir #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_print_auto msgid "The receipt will automatically be printed at the end of each order." -msgstr "" +msgstr "Makbuz her siparişin sonunda otomatik olarak yazdırılır" #. module: point_of_sale #. openerp-web @@ -3691,6 +3730,8 @@ msgid "" "This field is there to pass the id of the pos manager group to the point of " "sale client." msgstr "" +"Bu alan pos yönetim grubunun kimliğini satış noktası müşterisine taşımak " +"için var." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__group_pos_user_id @@ -3715,6 +3756,8 @@ msgid "" "This is useful for restaurants with onsite and take-away services that imply" " specific tax rates." msgstr "" +"Yerinde ya da take-away servislerle ve özel vergi oranları ile çalışan " +"restoranlar için çok faydalıdır." #. module: point_of_sale #. openerp-web @@ -3740,7 +3783,7 @@ msgstr "" #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__tip_product_id msgid "This product is used as reference on customer receipts." -msgstr "" +msgstr "Bu ürün müşteri makbuzu üzerinde referans olarak kullanılır." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__sequence_line_id @@ -3748,6 +3791,9 @@ msgid "" "This sequence is automatically created by Odoo but you can change it to " "customize the reference numbers of your orders lines." msgstr "" +"Bu satır Odoo tarafından otomatik olarak oluşturulur ancak sipariş " +"satırlarınızın referans numaralarının özelleştirmek için bunu " +"değiştirebilirsiniz." #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_config__sequence_id @@ -3854,7 +3900,7 @@ msgstr "Vergiler Toplamı" #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_session__cash_register_total_entry_encoding msgid "Total of all paid sales orders" -msgstr "" +msgstr "Satış noktalarındaki tüm ödemelerin toplamı" #. module: point_of_sale #: model:ir.model.fields,help:point_of_sale.field_pos_session__cash_register_balance_end_real @@ -3894,6 +3940,7 @@ msgid "" "Unable to open the session. You have to assign a sales journal to your point" " of sale." msgstr "" +"Oturum açılamıyor. Satış noktanıza bir satış yevmiyesi atamanız gerekiyor" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_order_line__price_unit @@ -3924,7 +3971,7 @@ msgstr "Desteklenmeyen Dosya Biçimi" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.view_pos_config_kanban msgid "Unused" -msgstr "" +msgstr "Kullanılmayan" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__use_existing_lots @@ -3939,7 +3986,7 @@ msgstr "Varsayılan mali koşulu ayarlayın" #. module: point_of_sale #: model:ir.model.fields,field_description:point_of_sale.field_pos_config__use_pricelist msgid "Use a pricelist." -msgstr "" +msgstr "Bir fiyat listesi kullan." #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form @@ -4044,6 +4091,9 @@ msgid "" "accounting journal for all the orders not invoiced. Invoices are recorded in" " accounting separately." msgstr "" +"Bir oturum kapatılıyorsa, tüm faturalanmayan siparişler için, takip eden " +"muhasebe yevmiyesinde bir kayıt oluşturulur. Faturalar muhasebede ayrı ayrı " +"kaydedilir." #. module: point_of_sale #. openerp-web @@ -4156,7 +4206,7 @@ msgstr "Bu POS için Satış Yevmiyesi beliremelisiniz:%s" #: code:addons/point_of_sale/wizard/pos_details.py:48 #, python-format msgid "You have to set a logo or a layout for your company." -msgstr "" +msgstr "Şirketiniz için bir logo ya da bir layout ayarlamalısınız." #. module: point_of_sale #: code:addons/point_of_sale/wizard/pos_details.py:50 @@ -4287,12 +4337,12 @@ msgstr "indirim" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form msgid "e.g. Company Address, Website" -msgstr "" +msgstr "Örn: Şirket Adersi, Website" #. module: point_of_sale #: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form msgid "e.g. Return Policy, Thanks for shopping with us!" -msgstr "" +msgstr "Örn: Geri Dönüş Poliçesi," #. module: point_of_sale #. openerp-web diff --git a/addons/portal/i18n/tr.po b/addons/portal/i18n/tr.po index a05a3e4b593..fff747eca1c 100644 --- a/addons/portal/i18n/tr.po +++ b/addons/portal/i18n/tr.po @@ -12,13 +12,14 @@ # Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017 # Saban Yildiz <sabany@projetgrup.com>, 2017 # Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:11+0000\n" "PO-Revision-Date: 2018-03-22 14:11+0000\n" -"Last-Translator: Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -154,7 +155,7 @@ msgstr "Oluşturulma zamanı" #: model:ir.model.fields,help:portal.field_project_task__portal_url #: model:ir.model.fields,help:portal.field_sale_order__portal_url msgid "Customer Portal URL" -msgstr "" +msgstr "Müşteri Portal URL" #. module: portal #: model:ir.model.fields,field_description:portal.field_portal_mixin__display_name @@ -168,7 +169,7 @@ msgstr "Görünüm Adı" #: code:addons/portal/static/src/xml/portal_signature.xml:14 #, python-format msgid "Draw your signature" -msgstr "" +msgstr "İmzanızı çizi" #. module: portal #: model:ir.model.fields,field_description:portal.field_portal_wizard_user__email @@ -281,7 +282,7 @@ msgstr "Portal Giriş Yönetimi" #: model:ir.model.fields,field_description:portal.field_project_task__portal_url #: model:ir.model.fields,field_description:portal.field_sale_order__portal_url msgid "Portal Access URL" -msgstr "" +msgstr "Portal Erişim URL" #. module: portal #: model:ir.model,name:portal.model_portal_wizard_user @@ -357,14 +358,14 @@ msgstr "Sokak/Cadde" #: code:addons/portal/static/src/xml/portal_signature.xml:25 #, python-format msgid "Thank You !" -msgstr "" +msgstr "Teşekkürler !" #. module: portal #. openerp-web #: code:addons/portal/static/src/xml/portal_chatter.xml:11 #, python-format msgid "There are no comments for now." -msgstr "" +msgstr "Burada şimdilik hiç yorum yok." #. module: portal #: model:ir.ui.view,arch_db:portal.wizard_view @@ -562,7 +563,7 @@ msgstr "" #. module: portal #: model:ir.ui.view,arch_db:portal.portal_my_details msgid "Your Contact Details" -msgstr "" +msgstr "Bağlantı Detayları" #. module: portal #: model:ir.ui.view,arch_db:portal.portal_layout @@ -573,7 +574,7 @@ msgstr "Detaylarınız" #. module: portal #: model:ir.ui.view,arch_db:portal.portal_my_home msgid "Your Documents" -msgstr "" +msgstr "Dokumanlarınız" #. module: portal #. openerp-web @@ -598,7 +599,7 @@ msgstr "Posta Kodu" #: code:addons/portal/static/src/xml/portal_chatter.xml:56 #, python-format msgid "avatar" -msgstr "" +msgstr "avatar" #. module: portal #. openerp-web @@ -619,7 +620,7 @@ msgstr "Yorumlar" #: code:addons/portal/static/src/xml/portal_chatter.xml:21 #, python-format msgid "logged in" -msgstr "" +msgstr "oturum açıldı" #. module: portal #: model:ir.model,name:portal.model_portal_mixin @@ -636,4 +637,4 @@ msgstr "Seçin ..." #: code:addons/portal/static/src/xml/portal_chatter.xml:21 #, python-format msgid "to post a comment." -msgstr "" +msgstr "bir yorum gönder" diff --git a/addons/portal/views/portal_templates.xml b/addons/portal/views/portal_templates.xml index 2d7ec49ca90..abdfada255a 100644 --- a/addons/portal/views/portal_templates.xml +++ b/addons/portal/views/portal_templates.xml @@ -198,6 +198,21 @@ </li> </ul> </div> + <div t-if="searchbar_groupby" class="dropdown pull-right mr4"> + <button id="portal_searchbar_groupby" class="o_portal_search_panel_fixed_width btn btn-default" type="button" data-toggle="dropdown"> + <span class="fa fa-bars fa-lg" /> + <span class='hidden-xs hidden-sm hidden-md' t-esc="searchbar_groupby[groupby].get('label', 'None')"/> + <span class="caret"></span> + </button> + <ul class="dropdown-menu" aria-labelledby="portal_searchbar_groupby"> + <li t-foreach="searchbar_groupby" t-as="option" t-att-class="groupby == option and 'active'"> + <a t-att-href="default_url + '?' + keep_query('*', groupby=option)"> + <span t-esc="searchbar_groupby[option].get('label')"/> + </a> + </li> + </ul> + </div> + </template> <template id="portal_contact" name="Contact"> diff --git a/addons/pos_cache/i18n/tr.po b/addons/pos_cache/i18n/tr.po index 9176ef577fb..85565d72609 100644 --- a/addons/pos_cache/i18n/tr.po +++ b/addons/pos_cache/i18n/tr.po @@ -6,14 +6,15 @@ # Murat Kaplan <muratk@projetgrup.com>, 2017 # gezgin biri <gezginbiri@hotmail.com>, 2017 # Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017 -# Martin Trigaux <mat@odoo.com>, 2017 +# Martin Trigaux, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" -"Project-Id-Version: Odoo Server saas~11.1\n" +"Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-13 14:37+0000\n" -"PO-Revision-Date: 2017-12-13 14:37+0000\n" -"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n" +"POT-Creation-Date: 2018-03-22 14:10+0000\n" +"PO-Revision-Date: 2018-03-22 14:10+0000\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,58 +23,58 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_config_cache_ids +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__cache +#: model:ir.model.fields,field_description:pos_cache.field_pos_config__cache_ids msgid "Cache" msgstr "Önbellek" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_compute_user_id +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__compute_user_id msgid "Cache compute user" -msgstr "" +msgstr "Kullanıcı ön belleğini hesapla" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_config_id +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__config_id msgid "Config" msgstr "" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_create_uid +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__create_uid msgid "Created by" msgstr "Oluşturan" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_create_date +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__create_date msgid "Created on" msgstr "Oluşturulma" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_display_name +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__display_name msgid "Display Name" msgstr "Görünüm Adı" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_id +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__id msgid "ID" msgstr "ID" #. module: pos_cache #: model:ir.ui.view,arch_db:pos_cache.pos_config_view_form_inherit_pos_cache msgid "Invalidate cache" -msgstr "" +msgstr "Ön belleği iptal et" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache___last_update +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache____last_update msgid "Last Modified on" msgstr "Son Güncelleme" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_write_uid +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__write_uid msgid "Last Updated by" msgstr "Son Güncelleyen" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_write_date +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__write_date msgid "Last Updated on" msgstr "Son Güncelleme" @@ -85,7 +86,7 @@ msgid "Loading" msgstr "Yükleniyor" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_config_oldest_cache_time +#: model:ir.model.fields,field_description:pos_cache.field_pos_config__oldest_cache_time msgid "Oldest cache time" msgstr "" @@ -94,17 +95,17 @@ msgstr "" #: model:ir.cron,cron_name:pos_cache.refresh_pos_cache_cron #: model:ir.cron,name:pos_cache.refresh_pos_cache_cron msgid "PoS: refresh cache" -msgstr "" +msgstr "PoS: Önbelleği güncelle" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_product_domain +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__product_domain msgid "Product Domain" -msgstr "" +msgstr "Ürün Domaini" #. module: pos_cache -#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_product_fields +#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__product_fields msgid "Product Fields" -msgstr "" +msgstr "Ürün Alanı" #. module: pos_cache #: model:ir.model,name:pos_cache.model_pos_cache diff --git a/addons/pos_discount/i18n/tr.po b/addons/pos_discount/i18n/tr.po index 905684109d9..df6a84914b7 100644 --- a/addons/pos_discount/i18n/tr.po +++ b/addons/pos_discount/i18n/tr.po @@ -6,13 +6,14 @@ # Martin Trigaux, 2017 # Ramiz Deniz Öner <deniz@denizoner.com>, 2017 # Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:09+0000\n" "PO-Revision-Date: 2018-03-22 14:09+0000\n" -"Last-Translator: Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,7 +36,7 @@ msgstr "İndirim" #. module: pos_discount #: model:ir.ui.view,arch_db:pos_discount.pos_config_view_form_inherit_pos_discount msgid "Discount %" -msgstr "" +msgstr "İndirim %" #. module: pos_discount #. openerp-web diff --git a/addons/pos_mercury/i18n/tr.po b/addons/pos_mercury/i18n/tr.po index 2c385b22ff2..30887742167 100644 --- a/addons/pos_mercury/i18n/tr.po +++ b/addons/pos_mercury/i18n/tr.po @@ -9,13 +9,14 @@ # gezgin biri <gezginbiri@hotmail.com>, 2017 # Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017 # Martin Trigaux, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:09+0000\n" "PO-Revision-Date: 2018-03-22 14:09+0000\n" -"Last-Translator: Martin Trigaux, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -108,7 +109,7 @@ msgstr "" #: code:addons/pos_mercury/static/src/js/pos_mercury.js:360 #, python-format msgid "Could not read card" -msgstr "" +msgstr "Kart okunamadı." #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__create_uid @@ -165,20 +166,23 @@ msgid "" " (without having pressed anything else) will charge the full amount of the order to\n" " the card." msgstr "" +"Siparişleri hızlı bir şekilde ele almak için: Sadece ödeme ekranındayken " +"(başka bir şeye basmadan) kredi kartı geçmek, siparişin tamamını kartta " +"tahsil edecektir." #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/js/pos_mercury.js:256 #, python-format msgid "Go to payment screen to use cards" -msgstr "" +msgstr "Kart kullanmak için ödeme ekranına git" #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/js/pos_mercury.js:396 #, python-format msgid "Handling transaction..." -msgstr "" +msgstr "İşlem gerçekleştiriliyor" #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__id @@ -190,6 +194,8 @@ msgstr "ID" #: model:ir.model.fields,help:pos_mercury.field_pos_mercury_configuration__merchant_id msgid "ID of the merchant to authenticate him on the payment provider server" msgstr "" +"Ödeme sağlayıcı sunucusunda satıcının kimliğini doğrulamak için satıcı " +"kimliği" #. module: pos_mercury #: model:ir.ui.view,arch_db:pos_mercury.view_pos_mercury_configuration_form @@ -197,11 +203,13 @@ msgid "" "If you don't already have a Mercury account, contact Mercury at +1 (800) 846-4472\n" " to create one." msgstr "" +"Eğer bir Mercury hesabınız yoksa, oluşturmak için Mercury ile bağlantıya " +"geçiniz +1 (800) 846-4472" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_invoice_no msgid "Invoice number from Mercury Pay" -msgstr "" +msgstr "Mercury Ödeme'den fatura numarası" #. module: pos_mercury #: model:ir.model,name:pos_mercury.model_account_journal @@ -229,12 +237,12 @@ msgstr "Son Güncelleme" #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__merchant_id msgid "Merchant ID" -msgstr "" +msgstr "Ticari ID" #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__merchant_pwd msgid "Merchant Password" -msgstr "" +msgstr "Satıcı Şifresi" #. module: pos_mercury #: model:ir.actions.act_window,name:pos_mercury.action_configuration_form @@ -245,22 +253,22 @@ msgstr "" #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_account_journal__pos_mercury_config_id msgid "Mercury Credentials" -msgstr "" +msgstr "Mercury Kimlik Bilgileri" #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_account_bank_statement_line__mercury_invoice_no msgid "Mercury invoice number" -msgstr "" +msgstr "Mercury fatura numarası" #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_account_bank_statement_line__mercury_record_no msgid "Mercury record number" -msgstr "" +msgstr "Mercury Kayıt Numarası" #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_account_bank_statement_line__mercury_ref_no msgid "Mercury reference number" -msgstr "" +msgstr "Mercury Referans Numarası" #. module: pos_mercury #: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__name @@ -270,13 +278,13 @@ msgstr "İsim" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_pos_mercury_configuration__name msgid "Name of this Mercury configuration" -msgstr "" +msgstr "Mercury yapılandırmasının adı" #. module: pos_mercury #: code:addons/pos_mercury/models/pos_mercury_transaction.py:33 #, python-format msgid "No Mercury configuration associated with the journal." -msgstr "" +msgstr "Yevmiye ile bağlı bir Mercury yapılandırması bulunmuyor." #. module: pos_mercury #: code:addons/pos_mercury/models/pos_mercury_transaction.py:21 @@ -289,14 +297,14 @@ msgstr "" #: code:addons/pos_mercury/static/src/js/pos_mercury.js:328 #, python-format msgid "No response from Mercury (Mercury down?)" -msgstr "" +msgstr "Mercury'den cevap yok (Mercury çöktü mü?)" #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/js/pos_mercury.js:330 #, python-format msgid "No response from server (connected to network?)" -msgstr "" +msgstr "Mercury'den cevap yok (Ağa bağlı mı?)" #. module: pos_mercury #. openerp-web @@ -304,44 +312,44 @@ msgstr "" #: code:addons/pos_mercury/static/src/js/pos_mercury.js:576 #, python-format msgid "Odoo error while processing transaction." -msgstr "" +msgstr "İşlem yapılırken Odoo hata verdi." #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/js/pos_mercury.js:651 #, python-format msgid "One credit card swipe already pending." -msgstr "" +msgstr "Bir kredi kartı okutması zaten bekliyor." #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/js/pos_mercury.js:469 #, python-format msgid "Partially approved" -msgstr "" +msgstr "Kısmen onaylanmış" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_pos_mercury_configuration__merchant_pwd msgid "" "Password of the merchant to authenticate him on the payment provider server" -msgstr "" +msgstr "Ödeme sağlayıcı sunucusunda satıcının kimliğini doğrulama şifresi." #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_record_no msgid "Payment record number from Mercury Pay" -msgstr "" +msgstr "Mercury Ödemesi'nden ödeme kaydı numarası" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_ref_no msgid "Payment reference number from Mercury Pay" -msgstr "" +msgstr "Öercury Ödemesi'nden ödeme referans numarası" #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/js/pos_mercury.js:416 #, python-format msgid "Please setup your Mercury merchant account." -msgstr "" +msgstr "Lütfen Mercury satıcı hesabınızı kurun." #. module: pos_mercury #: model:ir.model,name:pos_mercury.model_pos_order @@ -360,14 +368,14 @@ msgstr "" #: code:addons/pos_mercury/static/src/js/pos_mercury.js:548 #, python-format msgid "Reversal failed, sending VoidSale..." -msgstr "" +msgstr "Ters kayıt başarısız oldu, VoidSale gönderiliyor." #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/js/pos_mercury.js:590 #, python-format msgid "Reversal succeeded" -msgstr "" +msgstr "Ters Kayıt başarılı oldu." #. module: pos_mercury #. openerp-web @@ -381,7 +389,7 @@ msgstr "" #: code:addons/pos_mercury/static/src/xml/pos_mercury.xml:47 #, python-format msgid "TO CARDHOLDER AGREEMENT" -msgstr "" +msgstr "Kart Sahibi Sözleşmesi" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_card_brand @@ -391,17 +399,17 @@ msgstr "Ödeme kartının markası (örn. Visa, AMEX, ...)" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_prefixed_card_number msgid "The card number used for the payment." -msgstr "" +msgstr "Ödeme için kullanılan kart numarası" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_account_journal__pos_mercury_config_id msgid "The configuration of Mercury used for this journal" -msgstr "" +msgstr "Bu yevmiye için kullanılan Mercury yapılandırması" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_card_number msgid "The last 4 numbers of the card used to pay" -msgstr "" +msgstr "Ödeme için kullanılan kartın son 4 numarası" #. module: pos_mercury #: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_card_owner_name @@ -416,6 +424,8 @@ msgid "" "This can be caused by a badly executed swipe or by not having your keyboard " "layout set to US QWERTY (not US International)." msgstr "" +"Bu kötü gerçekleştirilmiş bir kart işleminden ya da klavyenizin US QWERTY " +"olarak ayarlanmadığından olabilir. (US International değil)" #. module: pos_mercury #. openerp-web @@ -432,25 +442,28 @@ msgid "" " just like on any other payment line. Whenever the payment line is set up, a card\n" " can be swiped through the card reader device." msgstr "" +"Satış Noktasında, Mercury entegrasyonu kullanmak basittir: Sadece ilişkili " +"ödeme yöntemine basın. Sonra tutar ayarlanmış olacaktır (örn. Para üstü). " +"Ödeme satırı ne zaman kurulursa, kart okuyucudan kartla işlem yapılabilir." #. module: pos_mercury #: model:ir.ui.view,arch_db:pos_mercury.pos_config_view_form_inherit_pos_mercury msgid "Vantiv Accounts" -msgstr "" +msgstr "Vantiv Hesabı" #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/js/pos_mercury.js:598 #, python-format msgid "VoidSale succeeded" -msgstr "" +msgstr "VoidSale Başarıyla Gerçekleşti" #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/xml/pos_mercury.xml:17 #, python-format msgid "WAITING FOR SWIPE" -msgstr "" +msgstr "KART İŞLEMİ İÇİN BEKLEYİNİZ" #. module: pos_mercury #: model:ir.ui.view,arch_db:pos_mercury.view_pos_mercury_configuration_form @@ -458,13 +471,15 @@ msgid "" "We currently support the MagTek Dynamag card reader device. It can be connected\n" " directly to the Point Of Sale device or it can be connected to the POSBox." msgstr "" +"Biz şu anda MagTek Dynamag kart okuyucu cihazları destekliyoruz.Cihaz Satış " +"Noktasına ya da POSBox'a bağlanmış olabilir." #. module: pos_mercury #. openerp-web #: code:addons/pos_mercury/static/src/xml/pos_mercury.xml:50 #, python-format msgid "X______________________________" -msgstr "" +msgstr "X_______________________________" #. module: pos_mercury #: model:ir.model,name:pos_mercury.model_barcode_rule diff --git a/addons/pos_restaurant/i18n/tr.po b/addons/pos_restaurant/i18n/tr.po index f712c79e3d9..f403a4cc836 100644 --- a/addons/pos_restaurant/i18n/tr.po +++ b/addons/pos_restaurant/i18n/tr.po @@ -12,13 +12,14 @@ # gezgin biri <gezginbiri@hotmail.com>, 2017 # Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017 # Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:09+0000\n" "PO-Revision-Date: 2018-03-22 14:09+0000\n" -"Last-Translator: Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -51,11 +52,15 @@ msgid "" "A restaurant floor represents the place where customers are served, this is where you can\n" " define and position the tables." msgstr "" +"Bir restoran katı, müşterilerin hizmet edildiği yeri temsil eder, burası " +"tabloları tanımlayıp konumlandırabileceğiniz yerdir." #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant msgid "Accept customer tips or convert their change to a tip" msgstr "" +"Müşteri bahşişlerini kabul edin ya da değişikleri bir bahşiş olarak " +"değiştirin" #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_table__active @@ -87,12 +92,12 @@ msgstr "" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_pos_config__iface_orderline_notes msgid "Allow custom notes on Orderlines." -msgstr "" +msgstr "Sipariş Satırlarına özel notlara izin verin" #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant msgid "Allow to print bill before payment" -msgstr "" +msgstr "Ödemeden önce fatura yazdırılmasına izin ver" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_pos_config__iface_printbill @@ -112,7 +117,7 @@ msgstr "Yazıcının iç kimliği" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor__name msgid "An internal identification of the restaurant floor" -msgstr "" +msgstr "Restoran katının iç kimliği" #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.view_restaurant_table_form @@ -231,11 +236,15 @@ msgid "" " An Order Printer will only print updates for products belonging to one of\n" " its categories." msgstr "" +"Her Sipariş Yazıcısı, yazıcının ve bir ürün kategori listesinin " +"bulunabileceği, PosBox/Donanım Proxy si tarafından tanımlanan bir IP " +"adresine sahiptir. Bir Sipariş Yazıcısı ait olduğu kategorilerinden " +"birindeki güncellemeler için çıktı alacaktır" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_pos_config__iface_splitbill msgid "Enables Bill Splitting in the Point of Sale." -msgstr "" +msgstr "Satış Noktasında Fatura Bölmeyi Etkinleştir" #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_table__floor_id @@ -256,7 +265,7 @@ msgstr "Kat Planı" #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant msgid "Floors" -msgstr "" +msgstr "Katlar" #. module: pos_restaurant #. openerp-web @@ -304,6 +313,8 @@ msgid "" "If false, the table is deactivated and will not be available in the point of" " sale" msgstr "" +"Eğer yanlışsa, masa iptal etkin değildir ve satış noktası için erişilebilir " +"olmayacaktır." #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_floor____last_update @@ -329,7 +340,7 @@ msgstr "Son Güncelleme" #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant msgid "Manage table orders" -msgstr "" +msgstr "Masa Siparişlerini Yönet" #. module: pos_restaurant #. openerp-web @@ -392,6 +403,8 @@ msgid "" "Order Printers are used by restaurants and bars to print the\n" " order updates in the kitchen/bar when the waiter updates the order." msgstr "" +"Sipariş Yazıcılar, garson siparişi güncellediğinde mutfakta / barda sipariş " +"güncellemelerini yazdırmak için restoranlar ve barlar tarafından kullanılır." #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_pos_config__iface_orderline_notes @@ -430,7 +443,7 @@ msgstr "Yazdır" #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant msgid "Print orders at the kitchen, at the bar, etc." -msgstr "" +msgstr "Mutfakta, barda siparişleri yazdır." #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_printer__product_categories_ids @@ -445,7 +458,7 @@ msgstr "Yazıcı Adı" #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant msgid "Printers" -msgstr "" +msgstr "Yazıcılar" #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_printer__proxy_ip @@ -517,7 +530,7 @@ msgstr "Böl" #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant msgid "Split total or order lines" -msgstr "" +msgstr "Bölünmüş toplam ya da sipariş satırları" #. module: pos_restaurant #: selection:restaurant.table,shape:0 @@ -546,7 +559,7 @@ msgstr "Tablo" #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_pos_config__is_table_management msgid "Table Management" -msgstr "" +msgstr "Masa Yönetimi" #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_table__name @@ -581,7 +594,7 @@ msgstr "Yazıcının proxy donanımının ip adresi veya hostname'i" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_pos_order__customer_count msgid "The amount of customers that have been served by this order." -msgstr "" +msgstr "Bu sipariş ile hizmet edilen müşteri sayısı" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor__background_color @@ -589,11 +602,12 @@ msgid "" "The background color of the floor layout, (must be specified in a html-" "compatible format)" msgstr "" +"Zemin düzeninin arka plan rengi, (html uyumlu bir biçimde belirtilmelidir)" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__seats msgid "The default number of customer served at this table." -msgstr "" +msgstr "Bu masadaki müşteri hizmetinin varsayılan numarası." #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor__table_ids @@ -603,18 +617,19 @@ msgstr "Bu Kattaki masa listesi" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_pos_config__floor_ids msgid "The restaurant floors served by this point of sale." -msgstr "" +msgstr "Restoran katına bu satış noktası tarafından hizmet verilmiştir." #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_pos_order__table_id msgid "The table where this order was served" -msgstr "" +msgstr "Bu siparişin servis edildiği masa." #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__color msgid "" "The table's color, expressed as a valid 'background' CSS property value" msgstr "" +"Geçerli bir 'arka plan' CSS özellik değeri olarak ifade edilen masanın rengi" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__height @@ -627,29 +642,30 @@ msgid "" "The table's horizontal position from the left side to the table's center, in" " pixels" msgstr "" +"Masanın piksel olarak yatay pozisyonda sol tarafından merkezine konumu." #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__position_v msgid "" "The table's vertical position from the top to the table's center, in pixels" -msgstr "" +msgstr "Masanın piksel olarak dikey olarak " #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__width msgid "The table's width in pixels" -msgstr "" +msgstr "Piksel olarak masanın genişliği" #. module: pos_restaurant #. openerp-web #: code:addons/pos_restaurant/static/src/xml/floors.xml:106 #, python-format msgid "This floor has no tables yet, use the" -msgstr "" +msgstr "Bu zeminde henüz masalar yok, kullanın" #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant msgid "This product is used as reference on customer receipts." -msgstr "" +msgstr "Bu ürün müşteri makbuzu üzerinde referans olarak kullanılır." #. module: pos_restaurant #: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant @@ -671,7 +687,7 @@ msgstr "Transfer" #. module: pos_restaurant #: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor__sequence msgid "Used to sort Floors" -msgstr "" +msgstr "Kullanılmış Zemin Çeşitleri" #. module: pos_restaurant #: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_table__position_v @@ -697,7 +713,7 @@ msgstr "bir ile" #: code:addons/pos_restaurant/static/src/js/floors.js:426 #, python-format msgid "You must be connected to the internet to save your changes." -msgstr "" +msgstr "Değişikliklerinizi kaydetmek için internete bağlı olmalısınız." #. module: pos_restaurant #. openerp-web @@ -712,14 +728,14 @@ msgstr "de" #: code:addons/pos_restaurant/static/src/xml/floors.xml:17 #, python-format msgid "at table" -msgstr "" +msgstr "Masada" #. module: pos_restaurant #. openerp-web #: code:addons/pos_restaurant/static/src/xml/floors.xml:107 #, python-format msgid "button in the editing toolbar to create new tables." -msgstr "" +msgstr "Yeni masalar oluşturmak için düzenleme araç çubuğundaki buton" #. module: pos_restaurant #. openerp-web diff --git a/addons/product/i18n/tr.po b/addons/product/i18n/tr.po index 5e673cd87b1..b0d08e45a04 100644 --- a/addons/product/i18n/tr.po +++ b/addons/product/i18n/tr.po @@ -12,13 +12,14 @@ # Levent Karakaş <levent@mektup.at>, 2018 # Saban Yildiz <sabany@projetgrup.com>, 2018 # Ramiz Deniz Öner <deniz@denizoner.com>, 2018 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Ramiz Deniz Öner <deniz@denizoner.com>, 2018\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -125,7 +126,7 @@ msgstr "" #. module: product #: sql_constraint:product.product:0 msgid "A barcode can only be assigned to one product !" -msgstr "" +msgstr "Bir barkod sadece bir ürüne atanabilir!" #. module: product #: model:ir.model.fields,help:product.field_product_product__description_sale @@ -245,7 +246,7 @@ msgstr "Arşiv" #. module: product #: model:ir.model.fields,help:product.field_product_supplierinfo__sequence msgid "Assigns the priority to the list of product vendor." -msgstr "" +msgstr "Ürün tedarikçi listesine öncelik atar." #. module: product #: model:ir.model.fields,field_description:product.field_product_attribute_line__attribute_id @@ -300,7 +301,7 @@ msgstr "Barkod" #. module: product #: model:ir.model.fields,help:product.field_product_packaging__barcode msgid "Barcode used for packaging identification." -msgstr "" +msgstr "Paketleme tanımlaması için kullanılan barkod" #. module: product #: model:ir.model.fields,help:product.field_product_pricelist_item__base @@ -310,6 +311,8 @@ msgid "" "Cost Price : The base price will be the cost price.\n" "Other Pricelist : Computation of the base price based on another Pricelist." msgstr "" +"Hesaplama için temel fiyat.\n" +"Genel Liste Fiyatı: Temel fiyat Satış/Genel Liste Fiyatı olacak." #. module: product #: model:ir.model.fields,help:product.field_product_product__list_price @@ -392,6 +395,8 @@ msgstr "Kategori: %s" #: model:ir.model.fields,help:product.field_product_attribute__create_variant msgid "Check this if you want to create multiple variants for this attribute." msgstr "" +"Bu eğiliminiz için bir çok değişiklik oluşturmak istiyorsunuz bunu " +"işaretleyiniz." #. module: product #: model:ir.model.fields,field_description:product.field_product_category__child_id @@ -412,7 +417,7 @@ msgstr "Renk İndeksi" #. module: product #: model:ir.ui.view,arch_db:product.res_config_settings_view_form msgid "Common Product Catalog" -msgstr "" +msgstr "Yaygın Ürün Kataloğu" #. module: product #: model:ir.model,name:product.model_res_company @@ -491,6 +496,9 @@ msgid "" "in average/fifo. Also used as a base price for pricelists. Expressed in the " "default unit of measure of the product." msgstr "" +"Standart fiyat ve ilk fiyat olarak stok değerlemesi için kullanılan maliyet," +" ortalama/fifo olarak ayarlanır. Ayrıca fiyat listesi için temel fiyat " +"olarak da kullanılır. Varsayılan ürün ölçü biriminde ifade edilir." #. module: product #: model:ir.model.fields,help:product.field_product_template__standard_price @@ -499,6 +507,9 @@ msgid "" "in average/fifo. Also used as a base price for pricelists. Expressed in the " "default unit of measure of the product. " msgstr "" +"Standart fiyat ve ilk fiyat olarak stok değerlemesi için kullanılan maliyet," +" ortalama/fifo olarak ayarlanır. Ayrıca fiyat listesi için temel fiyat " +"olarak da kullanılır. Varsayılan ürün ölçü biriminde ifade edilir." #. module: product #: model:ir.model,name:product.model_res_country_group @@ -631,7 +642,7 @@ msgstr "Açıklama" #. module: product #: model:ir.ui.view,arch_db:product.product_template_form_view msgid "Description for Customers" -msgstr "" +msgstr "Müşteri İçin Tanımlama" #. module: product #: model:ir.model.fields,help:product.field_product_attribute__sequence @@ -678,7 +689,7 @@ msgstr "" #. module: product #: model:ir.model.fields,help:product.field_product_pricelist_item__date_end msgid "Ending valid for the pricelist item validation" -msgstr "" +msgstr "Fiyat listesi öğe doğrulaması için geçerli bitiş." #. module: product #: code:addons/product/models/product.py:56 @@ -699,6 +710,8 @@ msgid "" "Error! It is not allowed to choose more than one value for a given " "attribute." msgstr "" +"Hata! Belirli bir özellik için birden fazla değerin seçilmesine izin " +"verilmez." #. module: product #: code:addons/product/models/product_pricelist.py:427 @@ -748,6 +761,8 @@ msgid "" "For the rule to apply, bought/sold quantity must be greater than or equal to the minimum quantity specified in this field.\n" "Expressed in the default unit of measure of the product." msgstr "" +"Kuralın uygulanması için, satın alınan/satılan miktar, bu alanda belirlenen " +"minimum miktardan daha fazla ya da eşit olmalıdır." #. module: product #: selection:product.pricelist.item,compute_price:0 @@ -774,7 +789,7 @@ msgstr "Bir ürün için farklı paketleme yolları tanımlayın" #: model:ir.model.fields,help:product.field_product_product__sequence #: model:ir.model.fields,help:product.field_product_template__sequence msgid "Gives the sequence order when displaying a product list" -msgstr "" +msgstr "Ürün listesi gösterildiğinde sıralama emri ver." #. module: product #: selection:product.pricelist.item,applied_on:0 @@ -803,6 +818,8 @@ msgid "" "How many times this Unit of Measure is bigger than the reference Unit of " "Measure in this category: 1 * (this unit) = ratio * (reference unit)" msgstr "" +"Bu kategoride bu birim ölçüleri, referans birim ölçülerinden kaç kat daha " +"büyüktür: 1*(bu birim)= oran*(referans birim)" #. module: product #: model:ir.model.fields,help:product.field_product_uom__factor @@ -810,6 +827,8 @@ msgid "" "How much bigger or smaller this unit is compared to the reference Unit of " "Measure for this category: 1 * (reference unit) = ratio * (this unit)" msgstr "" +"Bu kategoride bu birim referans birim ölçüleri ile kıyaslandığında ne kadar " +"büyük ya da küçük: 1* (referans birim)=oran*(bu birim)" #. module: product #: model:ir.model.fields,field_description:product.field_product_attribute__id @@ -889,7 +908,7 @@ msgstr "" #. module: product #: model:ir.model,name:product.model_product_supplierinfo msgid "Information about a product vendor" -msgstr "" +msgstr "Ürün tedarikçisi hakkında bilgi" #. module: product #: model:ir.model.fields,field_description:product.field_product_product__default_code @@ -1224,7 +1243,7 @@ msgstr "Fiyat Listesi Öğesi" #. module: product #: model:ir.model.fields,help:product.field_product_pricelist_item__applied_on msgid "Pricelist Item applicable on selected option" -msgstr "" +msgstr "Seçilen seçeneğe uygulanabilen Fiyat Listesi Öğeleri" #. module: product #: model:ir.model.fields,field_description:product.field_product_pricelist__item_ids @@ -1616,6 +1635,9 @@ msgid "" " * Checked : Product are visible for every company, even if a company is defined on the partner.\n" " * Unchecked : Each company can see only its product (product where company is defined). Product not related to a company are visible for all companies." msgstr "" +"İş ortaklarını, tanımlı tüm şirketlerle paylaş.\n" +" * İşaretlenmiş : Bir şirketinizde iş ortağı olarak tanımlı olsa bile tüm şirketlerinizde görünür.\n" +" * İşaretlenmemiş : Her şirket yalnız kendi tanımlı iş ortaklarını görür. Bir şirketle ilişkilendirilmemiş iş ortakları tüm şirketlere görünür." #. module: product #: model:ir.ui.view,arch_db:product.product_template_search_view @@ -1719,7 +1741,7 @@ msgstr "" #. module: product #: model:ir.model.fields,help:product.field_product_pricelist_item__date_start msgid "Starting date for the pricelist item validation" -msgstr "" +msgstr "Fiyat listesi öğe doğrulaması için başlangıç tarihi" #. module: product #: selection:product.template,type:0 @@ -1759,7 +1781,7 @@ msgstr "Ölçü birimi çevrimi için çevrim oranı 0 olamaz !" #. module: product #: model:ir.model.fields,help:product.field_product_packaging__sequence msgid "The first in the sequence is the default one." -msgstr "" +msgstr "İlk sırada olan varsayılan bir tanedir." #. module: product #: model:ir.model.fields,help:product.field_product_supplierinfo__min_qty @@ -1768,13 +1790,16 @@ msgid "" "Product Unit of Measure if not any, in the default unit of measure of the " "product otherwise." msgstr "" +"Tedarikçi Ürün Birim Ölçülerinde belirtilen ya da belirtilmeyen, bu " +"tedarikçiden alınacak minimum miktar, eğer belirtilmezse varsayılan ürün " +"ölçü birimi kullanılır." #. module: product #: model:ir.model.fields,help:product.field_product_category__product_count msgid "" "The number of products under this category (Does not consider the children " "categories)" -msgstr "" +msgstr "Bu kategori altındaki ürün sayısı (Çocuk kategorisini içermez)" #. module: product #: code:addons/product/models/product_attribute.py:74 @@ -1783,11 +1808,13 @@ msgid "" "The operation cannot be completed:\n" "You are trying to delete an attribute value with a reference on a product variant." msgstr "" +"Operasyon tamamlanamadı.\n" +"Bir nitelik değerini ürün varyantı üzerindeki referansı ile silmeye çalışıyorsunuz." #. module: product #: model:ir.model.fields,help:product.field_product_supplierinfo__price msgid "The price to purchase a product" -msgstr "" +msgstr "Bir ürün satın alma fiyatı" #. module: product #: sql_constraint:product.uom:0 @@ -1806,7 +1833,7 @@ msgstr "" #. module: product #: model:ir.model.fields,help:product.field_product_packaging__qty msgid "The total number of products you can have per pallet or box." -msgstr "" +msgstr "Palet ya da kutu başına sahip olabileceğiniz ürünlerin toplam sayısı." #. module: product #: model:ir.model.fields,help:product.field_product_product__volume @@ -2120,7 +2147,7 @@ msgstr "" #: code:addons/product/wizard/product_price_list.py:26 #, python-format msgid "You have to set a logo or a layout for your company." -msgstr "" +msgstr "Şirketiniz için bir logo ya da bir layout ayarlamalısınız." #. module: product #: code:addons/product/wizard/product_price_list.py:28 diff --git a/addons/product/i18n/zh_CN.po b/addons/product/i18n/zh_CN.po index 57b05f6aee6..f322a82f49a 100644 --- a/addons/product/i18n/zh_CN.po +++ b/addons/product/i18n/zh_CN.po @@ -34,7 +34,7 @@ msgstr "" #: code:addons/product/static/src/js/product_template_import.js:13 #, python-format msgid " Import Template for Products" -msgstr "" +msgstr "产品导入模板" #. module: product #: selection:product.pricelist.item,applied_on:0 @@ -514,7 +514,7 @@ msgstr "创建变体" #. module: product #: model:ir.actions.act_window,help:product.product_pricelist_action2 msgid "Create a new pricelist" -msgstr "" +msgstr "创建一个新的价目表" #. module: product #: model:ir.actions.act_window,help:product.product_template_action @@ -1331,7 +1331,7 @@ msgstr "产品包装" #: model:ir.model.fields,field_description:product.field_res_config_settings__group_stock_packaging #: model:ir.ui.view,arch_db:product.product_packaging_tree_view msgid "Product Packagings" -msgstr "" +msgstr "产品包装" #. module: product #: model:ir.model,name:product.model_product_template @@ -2216,7 +2216,7 @@ msgstr "盎司" #: code:addons/product/models/product_template.py:479 #, python-format msgid "product" -msgstr "" +msgstr "产品" #. module: product #: model:ir.model,name:product.model_product_attribute_line diff --git a/addons/project/controllers/portal.py b/addons/project/controllers/portal.py index e847875f2d1..105e90e9fba 100644 --- a/addons/project/controllers/portal.py +++ b/addons/project/controllers/portal.py @@ -2,10 +2,12 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from collections import OrderedDict +from operator import itemgetter from odoo import http, _ from odoo.http import request from odoo.addons.portal.controllers.portal import get_records_pager, CustomerPortal, pager as portal_pager +from odoo.tools import groupby as groupbyelem from odoo.osv.expression import OR @@ -78,6 +80,7 @@ class CustomerPortal(CustomerPortal): @http.route(['/my/tasks', '/my/tasks/page/<int:page>'], type='http', auth="user", website=True) def portal_my_tasks(self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, search=None, search_in='content', **kw): + groupby = kw.get('groupby', 'project') #TODO master fix this values = self._prepare_portal_layout_values() searchbar_sortings = { 'date': {'label': _('Newest'), 'order': 'create_date desc'}, @@ -95,6 +98,10 @@ class CustomerPortal(CustomerPortal): 'stage': {'input': 'stage', 'label': _('Search in Stages')}, 'all': {'input': 'all', 'label': _('Search in All')}, } + searchbar_groupby = { + 'none': {'input': 'none', 'label': _('None')}, + 'project': {'input': 'project', 'label': _('Project')}, + } # extends filterby criteria with project (criteria name is the project id) # Note: portal users can't view projects they don't follow projects = request.env['project.project'].sudo().search([('privacy_visibility', '=', 'portal')]) @@ -142,22 +149,31 @@ class CustomerPortal(CustomerPortal): step=self._items_per_page ) # content according to pager and archive selected + if groupby == 'project': + order = "project_id, %s" % order # force sort on project first to group by project in view tasks = request.env['project.task'].search(domain, order=order, limit=self._items_per_page, offset=pager['offset']) request.session['my_tasks_history'] = tasks.ids[:100] + if groupby == 'project': + grouped_tasks = [request.env['project.task'].concat(*g) for k, g in groupbyelem(tasks, itemgetter('project_id'))] + else: + grouped_tasks = [tasks] values.update({ 'date': date_begin, 'date_end': date_end, 'projects': projects, - 'tasks': tasks, + 'tasks': tasks, #TODO master remove this, grouped_tasks is enough + 'grouped_tasks': grouped_tasks, 'page_name': 'task', 'archive_groups': archive_groups, 'default_url': '/my/tasks', 'pager': pager, 'searchbar_sortings': searchbar_sortings, + 'searchbar_groupby': searchbar_groupby, 'searchbar_inputs': searchbar_inputs, 'search_in': search_in, 'sortby': sortby, + 'groupby': groupby, 'searchbar_filters': OrderedDict(sorted(searchbar_filters.items())), 'filterby': filterby, }) diff --git a/addons/project/i18n/zh_CN.po b/addons/project/i18n/zh_CN.po index 0e0d4569f37..21651cc370f 100644 --- a/addons/project/i18n/zh_CN.po +++ b/addons/project/i18n/zh_CN.po @@ -827,7 +827,7 @@ msgstr "合同/分析" #: code:addons/project/static/src/js/project_task_kanban_examples.js:64 #, python-format msgid "Copywriting" -msgstr "" +msgstr "文案" #. module: project #: model:ir.model.fields,field_description:project.field_project_task__displayed_image_id @@ -853,17 +853,17 @@ msgstr "创建项目" #: model:ir.actions.act_window,help:project.open_view_project_all #: model:ir.actions.act_window,help:project.open_view_project_all_config msgid "Create a new project" -msgstr "" +msgstr "创建一个新的项目" #. module: project #: model:ir.actions.act_window,help:project.open_task_type_form msgid "Create a new stage in the task pipeline" -msgstr "" +msgstr "在任务管道创建一个新阶段" #. module: project #: model:ir.actions.act_window,help:project.project_tags_action msgid "Create a new tag" -msgstr "" +msgstr "创建一个新标签" #. module: project #: model:ir.actions.act_window,help:project.action_view_task @@ -936,7 +936,7 @@ msgstr "客户邮件" #: code:addons/project/static/src/js/project_task_kanban_examples.js:44 #, python-format msgid "Customer Feedback" -msgstr "" +msgstr "客户反馈" #. module: project #: model:ir.actions.act_window,name:project.rating_rating_action_project_report @@ -2521,7 +2521,7 @@ msgstr "任务分析" #. module: project #: model:ir.ui.view,arch_db:project.res_config_settings_view_form msgid "Tasks Management" -msgstr "" +msgstr "任务管理" #. module: project #: model:ir.model.fields,field_description:project.field_project_project__type_ids @@ -2532,7 +2532,7 @@ msgstr "任务阶段" #. module: project #: model:ir.model,name:project.model_project_tags msgid "Tasks Tags" -msgstr "" +msgstr "任务标签" #. module: project #: model:ir.model,name:project.model_report_project_task_user @@ -2980,7 +2980,7 @@ msgstr "设置-基础设置" #: code:addons/project/models/project.py:690 #, python-format msgid "task" -msgstr "" +msgstr "任务" #. module: project #: model:ir.actions.act_window,help:project.open_view_project_all diff --git a/addons/project/views/project_portal_templates.xml b/addons/project/views/project_portal_templates.xml index cc8ef10df57..c9b54dda06f 100644 --- a/addons/project/views/project_portal_templates.xml +++ b/addons/project/views/project_portal_templates.xml @@ -120,36 +120,41 @@ <h3>Tasks <t t-call="portal.portal_searchbar"/> </h3> - <t t-if="not tasks"> + <t t-if="not grouped_tasks"> <div class="alert alert-warning mt8" role="alert"> There are no tasks. </div> </t> - <div t-if="tasks" class="panel panel-default"> - <div class="table-responsive"><table class="table table-hover o_portal_my_doc_table"> - <thead> - <tr class="active"> - <th class="col-md-9">Task</th> - <th class="col-md-2">Stage</th> - <th>Ref</th> - </tr> - </thead> - <tbody> - <t t-foreach="tasks" t-as="task"> - <tr> - <td> - <a t-attf-href="/my/task/#{task.id}?{{ keep_query() }}"><span t-field="task.name"/></a> - </td> - <td> - <span class="label label-info" title="Current stage of the task" t-esc="task.stage_id.name" /> - </td> - <td> - <span t-esc="task.id"/> - </td> - </tr> - </t> - </tbody> - </table></div> + <div t-if="grouped_tasks" class="panel panel-default"> + <div class="table-responsive"> + <t t-foreach="grouped_tasks" t-as="tasks"> + <table class="table table-hover o_portal_my_doc_table"> + <thead> + <tr class="active"> + <th t-if="groupby == 'none'" class="col-md-9">Name</th> + <th t-else="" class="col-md-9"><span t-field="tasks[0].project_id.label_tasks"/> for project: <span t-field="tasks[0].project_id.name"/></th> + <th class="col-md-2">Stage</th> + <th>Ref</th> + </tr> + </thead> + <tbody> + <t t-foreach="tasks" t-as="task"> + <tr> + <td> + <a t-attf-href="/my/task/#{task.id}?{{ keep_query() }}"><span t-field="task.name"/></a> + </td> + <td> + <span class="label label-info" title="Current stage of the task" t-esc="task.stage_id.name" /> + </td> + <td> + <span t-esc="task.id"/> + </td> + </tr> + </t> + </tbody> + </table> + </t> + </div> </div> <div t-if="pager" class="o_portal_pager text-center"> <t t-call="portal.pager"/> diff --git a/addons/purchase_requisition/i18n/tr.po b/addons/purchase_requisition/i18n/tr.po index 3cbbcf82248..fb968a38fe4 100644 --- a/addons/purchase_requisition/i18n/tr.po +++ b/addons/purchase_requisition/i18n/tr.po @@ -14,13 +14,14 @@ # Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017 # Fırat Kaya <firat.kaya@mechsoft.com.tr>, 2017 # Levent Karakaş <levent@mektup.at>, 2018 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Levent Karakaş <levent@mektup.at>, 2018\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -304,7 +305,7 @@ msgstr "" #. module: purchase_requisition #: model:ir.model,name:purchase_requisition.model_product_supplierinfo msgid "Information about a product vendor" -msgstr "" +msgstr "Ürün tedarikçisi hakkında bilgi" #. module: purchase_requisition #: model:ir.model.fields,field_description:purchase_requisition.field_purchase_requisition____last_update diff --git a/addons/repair/i18n/tr.po b/addons/repair/i18n/tr.po index f3676d83223..88357d2a8f6 100644 --- a/addons/repair/i18n/tr.po +++ b/addons/repair/i18n/tr.po @@ -9,13 +9,14 @@ # Levent Karakaş <levent@mektup.at>, 2018 # Murat Kaplan <muratk@projetgrup.com>, 2018 # Ramiz Deniz Öner <deniz@denizoner.com>, 2018 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:11+0000\n" "PO-Revision-Date: 2018-03-22 14:11+0000\n" -"Last-Translator: Ramiz Deniz Öner <deniz@denizoner.com>, 2018\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -568,7 +569,7 @@ msgstr "İş Ortağı" #: model:ir.model.fields,field_description:repair.field_repair_order__operations #: model:ir.ui.view,arch_db:repair.view_repair_order_form msgid "Parts" -msgstr "" +msgstr "Parçalar" #. module: repair #: model:ir.ui.view,arch_db:repair.report_repairorder @@ -716,7 +717,7 @@ msgstr "Onarım Referansı" #: code:addons/repair/models/repair.py:196 #, python-format msgid "Repair must be canceled in order to reset it to draft." -msgstr "" +msgstr "Taslak sıfırlanması için tamir iptal olmalı." #. module: repair #: code:addons/repair/models/repair.py:401 @@ -728,13 +729,13 @@ msgstr "Onarıma başlamadan önce onay gereklidir." #: code:addons/repair/models/repair.py:429 #, python-format msgid "Repair must be repaired in order to make the product moves." -msgstr "" +msgstr "Ürün hareketi için tamir iptal olmalı." #. module: repair #: code:addons/repair/models/repair.py:412 #, python-format msgid "Repair must be under repair in order to end reparation." -msgstr "" +msgstr "Tamirin sona ermesi için tamir durumu altında olmalıdır." #. module: repair #: code:addons/repair/models/repair.py:244 diff --git a/addons/sale/i18n/pt_BR.po b/addons/sale/i18n/pt_BR.po index 24cc143b3b7..a91aeb2dec7 100644 --- a/addons/sale/i18n/pt_BR.po +++ b/addons/sale/i18n/pt_BR.po @@ -15,13 +15,14 @@ # Anderson Fratuci <ander.frat@gmail.com>, 2017 # mariana rodrigues <mariana12v@gmail.com>, 2018 # Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018 +# lukasgarcya <lukasgarcya@hotmail.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018\n" +"Last-Translator: lukasgarcya <lukasgarcya@hotmail.com>, 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1831,7 +1832,7 @@ msgstr "Cotação / Pedido" #. module: sale #: model:ir.ui.view,arch_db:sale.view_quotation_tree msgid "Quotation Date" -msgstr "" +msgstr "Data da cotação" #. module: sale #: model:ir.ui.view,arch_db:sale.view_quotation_tree @@ -2246,7 +2247,7 @@ msgstr "Configurações" #. module: sale #: model:ir.ui.view,arch_db:sale.view_order_form msgid "Setup default terms and conditions in your sales settings" -msgstr "" +msgstr "Definir os termos e as condições padrão nas configurações de vendas" #. module: sale #: model:ir.ui.view,arch_db:sale.res_config_settings_view_form diff --git a/addons/sale_payment/i18n/pt_BR.po b/addons/sale_payment/i18n/pt_BR.po index ed02fbf5735..2a33df4577f 100644 --- a/addons/sale_payment/i18n/pt_BR.po +++ b/addons/sale_payment/i18n/pt_BR.po @@ -10,13 +10,14 @@ # mariana rodrigues <mariana12v@gmail.com>, 2018 # Raphael Rodrigues <raphael0608@gmail.com>, 2018 # Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018 +# Diego Bittencourt <diegomb86@gmail.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:10+0000\n" "PO-Revision-Date: 2018-03-22 14:10+0000\n" -"Last-Translator: Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018\n" +"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -278,4 +279,4 @@ msgstr "Transações" #. module: sale_payment #: model:ir.ui.view,arch_db:sale_payment.payment_confirmation_status msgid "Your payment has been authorized." -msgstr "" +msgstr "Seu pagamento foi autorizado." diff --git a/addons/stock/i18n/tr.po b/addons/stock/i18n/tr.po index 2df60064c66..0c1443817db 100644 --- a/addons/stock/i18n/tr.po +++ b/addons/stock/i18n/tr.po @@ -11,13 +11,14 @@ # Levent Karakaş <levent@mektup.at>, 2017 # Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2018 # Saban Yildiz <sabany@projetgrup.com>, 2018 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:09+0000\n" "PO-Revision-Date: 2018-03-22 14:09+0000\n" -"Last-Translator: Saban Yildiz <sabany@projetgrup.com>, 2018\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -2336,7 +2337,7 @@ msgstr "Giriş Konumu" #: code:addons/stock/models/stock_scrap.py:135 #, python-format msgid "Insufficient Quantity" -msgstr "" +msgstr "Yetersiz Miktar" #. module: stock #: model:stock.location,name:stock.stock_location_inter_wh diff --git a/addons/stock/i18n/zh_CN.po b/addons/stock/i18n/zh_CN.po index 7c16067af50..cfdf61faf36 100644 --- a/addons/stock/i18n/zh_CN.po +++ b/addons/stock/i18n/zh_CN.po @@ -26,13 +26,14 @@ # 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018 # e2f <projects@e2f.com>, 2018 # e2f_cn c5 <jarvisn@ecinnovations.com>, 2018 +# Maie <m@maie.name>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:09+0000\n" "PO-Revision-Date: 2018-03-22 14:09+0000\n" -"Last-Translator: e2f_cn c5 <jarvisn@ecinnovations.com>, 2018\n" +"Last-Translator: Maie <m@maie.name>, 2018\n" "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4055,7 +4056,7 @@ msgstr "产品移动" #: model:ir.ui.menu,name:stock.menu_product_packagings #: model:ir.ui.view,arch_db:stock.res_config_settings_view_form msgid "Product Packagings" -msgstr "" +msgstr "产品包装" #. module: stock #: model:ir.model,name:stock.model_product_template diff --git a/addons/stock/models/product.py b/addons/stock/models/product.py index 89284e61147..4146e2ef586 100644 --- a/addons/stock/models/product.py +++ b/addons/stock/models/product.py @@ -218,6 +218,19 @@ class Product(models.Model): domain + loc_domain + ['!'] + dest_loc_domain if dest_loc_domain else domain + loc_domain ) + def _search_qty_available(self, operator, value): + # In the very specific case we want to retrieve products with stock available, we only need + # to use the quants, not the stock moves. Therefore, we bypass the usual + # '_search_product_quantity' method and call '_search_qty_available_new' instead. This + # allows better performances. + if value == 0.0 and operator == '>' and not ({'from_date', 'to_date'} & set(self.env.context.keys())): + product_ids = self._search_qty_available_new( + operator, value, self.env.context.get('lot_id'), self.env.context.get('owner_id'), + self.env.context.get('package_id') + ) + return [('id', 'in', product_ids)] + return self._search_product_quantity(operator, value, 'qty_available') + def _search_virtual_available(self, operator, value): # TDE FIXME: should probably clean the search methods return self._search_product_quantity(operator, value, 'virtual_available') @@ -242,24 +255,13 @@ class Product(models.Model): # TODO: Still optimization possible when searching virtual quantities ids = [] - for product in self.search([]): + for product in self.with_context(prefetch_fields=False).search([]): if OPERATORS[operator](product[field], value): ids.append(product.id) return [('id', 'in', ids)] - def _search_qty_available(self, operator, value): - # TDE FIXME: should probably clean the search methods - if value == 0.0 and operator in ('=', '>=', '<='): - return self._search_product_quantity(operator, value, 'qty_available') - product_ids = self._search_qty_available_new(operator, value, self._context.get('lot_id'), self._context.get('owner_id'), self._context.get('package_id')) - if (value > 0 and operator in ('<=', '<')) or (value < 0 and operator in ('>=', '>')): - # include also unavailable products - domain = self._search_product_quantity(operator, value, 'qty_available') - product_ids += domain[0][2] - return [('id', 'in', product_ids)] - def _search_qty_available_new(self, operator, value, lot_id=False, owner_id=False, package_id=False): - # TDE FIXME: should probably clean the search methods + ''' Optimized method which doesn't search on stock.moves, only on stock.quants. ''' product_ids = set() domain_quant = self._get_domain_locations()[0] if lot_id: diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index 5ea5f48c4cb..78b6f34c938 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -244,14 +244,23 @@ class StockMove(models.Model): """ This will return the move lines to consider when applying _quantity_done_compute on a stock.move. In some context, such as MRP, it is necessary to compute quantity_done on filtered sock.move.line.""" self.ensure_one() - return self.move_line_ids + return self.move_line_ids or self.move_line_nosuggest_ids - @api.depends('move_line_ids.qty_done', 'move_line_ids.product_uom_id') + @api.depends('move_line_ids.qty_done', 'move_line_ids.product_uom_id', 'move_line_nosuggest_ids.qty_done') def _quantity_done_compute(self): + """ This field represents the sum of the move lines `qty_done`. It allows the user to know + if there is still work to do. + + We take care of rounding this value at the general decimal precision and not the rounding + of the move's UOM to make sure this value is really close to the real sum, because this + field will be used in `_action_done` in order to know if the move will need a backorder or + an extra move. + """ for move in self: + quantity_done = 0 for move_line in move._get_move_lines(): - # Transform the move_line quantity_done into the move uom. - move.quantity_done += move_line.product_uom_id._compute_quantity(move_line.qty_done, move.product_uom) + quantity_done += move_line.product_uom_id._compute_quantity(move_line.qty_done, move.product_uom, round=False) + move.quantity_done = quantity_done def _quantity_done_set(self): quantity_done = self[0].quantity_done # any call to create will invalidate `move.quantity_done` @@ -827,12 +836,22 @@ class StockMove(models.Model): taken_quantity = min(available_quantity, need) + # `taken_quantity` is in the quants unit of measure. There's a possibility that the move's + # unit of measure won't be respected if we blindly reserve this quantity, a common usecase + # is if the move's unit of measure's rounding does not allow fractional reservation. We chose + # to convert `taken_quantity` to the move's unit of measure with a down rounding method and + # then get it back in the quants unit of measure with an half-up rounding_method. This + # way, we'll never reserve more than allowed. + taken_quantity_move_uom = self.product_id.uom_id._compute_quantity(taken_quantity, self.product_uom, rounding_method='DOWN') + taken_quantity = self.product_uom._compute_quantity(taken_quantity_move_uom, self.product_id.uom_id, rounding_method='HALF-UP') + quants = [] try: - quants = self.env['stock.quant']._update_reserved_quantity( - self.product_id, location_id, taken_quantity, lot_id=lot_id, - package_id=package_id, owner_id=owner_id, strict=strict - ) + if not float_is_zero(taken_quantity, precision_rounding=self.product_id.uom_id.rounding): + quants = self.env['stock.quant']._update_reserved_quantity( + self.product_id, location_id, taken_quantity, lot_id=lot_id, + package_id=package_id, owner_id=owner_id, strict=strict + ) except UserError: # If it raises here, it means that the `available_quantity` brought by a done move line # is not available on the quants itself. This could be the result of an inventory @@ -893,6 +912,8 @@ class StockMove(models.Model): continue need = move.product_qty - move.reserved_availability taken_quantity = move._update_reserved_quantity(need, available_quantity, move.location_id, strict=False) + if float_is_zero(taken_quantity, precision_rounding=move.product_id.uom_id.rounding): + continue if need == taken_quantity: assigned_moves |= move else: @@ -949,6 +970,8 @@ class StockMove(models.Model): for (location_id, lot_id, package_id, owner_id), quantity in available_move_lines.items(): need = move.product_qty - sum(move.move_line_ids.mapped('product_qty')) taken_quantity = move._update_reserved_quantity(need, quantity, location_id, lot_id, package_id, owner_id) + if float_is_zero(taken_quantity, precision_rounding=move.product_id.uom_id.rounding): + continue if need - taken_quantity == 0.0: assigned_moves |= move break @@ -1052,8 +1075,10 @@ class StockMove(models.Model): # Split moves where necessary and move quants for move in moves_todo: - rounding = move.product_uom.rounding - if float_compare(move.quantity_done, move.product_uom_qty, precision_rounding=rounding) < 0: + # To know whether we need to create a backorder or not, round to the general product's + # decimal precision and not the product's UOM. + rounding = self.env['decimal.precision'].precision_get('Product Unit of Measure') + if float_compare(move.quantity_done, move.product_uom_qty, precision_digits=rounding) < 0: # Need to do some kind of conversion here qty_split = move.product_uom._compute_quantity(move.product_uom_qty - move.quantity_done, move.product_id.uom_id, rounding_method='HALF-UP') new_move = move._split(qty_split) @@ -1097,15 +1122,17 @@ class StockMove(models.Model): self.mapped('move_line_ids').unlink() return super(StockMove, self).unlink() - def _prepare_move_split_vals(self, uom_qty): + def _prepare_move_split_vals(self, qty): vals = { - 'product_uom_qty': uom_qty, + 'product_uom_qty': qty, 'procure_method': 'make_to_stock', 'move_dest_ids': [(4, x.id) for x in self.move_dest_ids if x.state not in ('done', 'cancel')], 'move_orig_ids': [(4, x.id) for x in self.move_orig_ids], 'origin_returned_move_id': self.origin_returned_move_id.id, 'price_unit': self.price_unit, } + if self.env.context.get('force_split_uom_id'): + vals['product_uom'] = self.env.context['force_split_uom_id'] return vals def _split(self, qty, restrict_partner_id=False): @@ -1124,9 +1151,18 @@ class StockMove(models.Model): raise UserError(_('You cannot split a draft move. It needs to be confirmed first.')) if float_is_zero(qty, precision_rounding=self.product_id.uom_id.rounding) or self.product_qty <= qty: return self.id - # HALF-UP rounding as only rounding errors will be because of propagation of error from default UoM + + decimal_precision = self.env['decimal.precision'].precision_get('Product Unit of Measure') + + # `qty` passed as argument is the quantity to backorder and is always expressed in the + # quants UOM. If we're able to convert back and forth this quantity in the move's and the + # quants UOM, the backordered move can keep the UOM of the move. Else, we'll create is in + # the UOM of the quants. uom_qty = self.product_id.uom_id._compute_quantity(qty, self.product_uom, rounding_method='HALF-UP') - defaults = self._prepare_move_split_vals(uom_qty) + if float_compare(qty, self.product_uom._compute_quantity(uom_qty, self.product_id.uom_id, rounding_method='HALF-UP'), precision_digits=decimal_precision) == 0: + defaults = self._prepare_move_split_vals(uom_qty) + else: + defaults = self.with_context(force_split_uom_id=self.product_id.uom_id.id)._prepare_move_split_vals(qty) if restrict_partner_id: defaults['restrict_partner_id'] = restrict_partner_id @@ -1135,21 +1171,15 @@ class StockMove(models.Model): if self.env.context.get('source_location_id'): defaults['location_id'] = self.env.context['source_location_id'] new_move = self.with_context(rounding_method='HALF-UP').copy(defaults) - # ctx = context.copy() - # TDE CLEANME: used only in write in this file, to clean - # ctx['do_not_propagate'] = True # FIXME: pim fix your crap - self.with_context(do_not_propagate=True, do_not_unreserve=True, rounding_method='HALF-UP').write({'product_uom_qty': self.product_uom_qty - uom_qty}) - - # if self.move_dest_id and self.propagate and self.move_dest_id.state not in ('done', 'cancel'): - # new_move_prop = self.move_dest_id.split(qty) - # new_move.write({'move_dest_id': new_move_prop}) - # returning the first element of list returned by action_confirm is ok because we checked it wouldn't be exploded (and - # thus the result of action_confirm should always be a list of 1 element length) - # In this case we don't merge move since the new move with 0 quantity done will be used for the backorder. + # Update the original `product_qty` of the move. Use the general product's decimal + # precision and not the move's UOM to handle case where the `quantity_done` is not + # compatible with the move's UOM. + new_product_qty = self.product_id.uom_id._compute_quantity(self.product_qty - qty, self.product_uom, round=False) + new_product_qty = float_round(new_product_qty, precision_digits=self.env['decimal.precision'].precision_get('Product Unit of Measure')) + self.with_context(do_not_propagate=True, do_not_unreserve=True, rounding_method='HALF-UP').write({'product_uom_qty': new_product_qty}) new_move = new_move._action_confirm(merge=False) - # TDE FIXME: due to action confirm change return new_move.id def _recompute_state(self): diff --git a/addons/stock/models/stock_move_line.py b/addons/stock/models/stock_move_line.py index fccfcf11e91..3344ed00ed9 100644 --- a/addons/stock/models/stock_move_line.py +++ b/addons/stock/models/stock_move_line.py @@ -369,6 +369,15 @@ class StockMoveLine(models.Model): # `action_done` on the next move lines. ml_to_delete = self.env['stock.move.line'] for ml in self: + # Check here if `ml.qty_done` respects the rounding of `ml.product_uom_id`. + uom_qty = float_round(ml.qty_done, precision_rounding=ml.product_uom_id.rounding, rounding_method='HALF-UP') + precision_digits = self.env['decimal.precision'].precision_get('Product Unit of Measure') + qty_done = float_round(ml.qty_done, precision_digits=precision_digits, rounding_method='HALF-UP') + if float_compare(uom_qty, qty_done, precision_digits=precision_digits) != 0: + raise UserError(_('The quantity done for the product "%s" doesn\'t respect the rounding precision \ + defined on the unit of measure "%s". Please change the quantity done or the \ + rounding precision of your unit of measure.') % (ml.product_id.display_name, ml.product_uom_id.name)) + qty_done_float_compared = float_compare(ml.qty_done, 0, precision_rounding=ml.product_uom_id.rounding) if qty_done_float_compared > 0: if ml.product_id.tracking != 'none': diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py index 02278e5c71a..a928857ab9e 100644 --- a/addons/stock/models/stock_picking.py +++ b/addons/stock/models/stock_picking.py @@ -694,7 +694,8 @@ class Picking(models.Model): # If no lots when needed, raise error picking_type = self.picking_type_id - no_quantities_done = all(float_is_zero(move_line.qty_done, precision_rounding=move_line.product_uom_id.rounding) for move_line in self.move_line_ids) + precision_digits = self.env['decimal.precision'].precision_get('Product Unit of Measure') + no_quantities_done = all(float_is_zero(move_line.qty_done, precision_digits=precision_digits) for move_line in self.move_line_ids) no_reserved_quantities = all(float_is_zero(move_line.product_qty, precision_rounding=move_line.product_uom_id.rounding) for move_line in self.move_line_ids) if no_reserved_quantities and no_quantities_done: raise UserError(_('You cannot validate a transfer if no quantites are reserved nor done. To force the transfer, switch in edit more and encode the done quantities.')) diff --git a/addons/stock/tests/test_move.py b/addons/stock/tests/test_move.py index 620bb7a4097..a98ed3fd72c 100644 --- a/addons/stock/tests/test_move.py +++ b/addons/stock/tests/test_move.py @@ -976,6 +976,63 @@ class StockMove(TransactionCase): self.assertEqual(len(move.move_line_ids), 4.0) + def test_availability_6(self): + """ Check that, in the scenario where a move is in a bigger uom than the uom of the quants + and this uom only allows entire numbers, we don't make a partial reservation when the + quantity available is not enough to reserve the move. Check also that it is not possible + to set `quantity_done` with a value not honouring the UOM's rounding. + """ + # on the dozen uom, set the rounding set 1.0 + self.uom_dozen.rounding = 1 + + # 6 units are available in stock + self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 6.0) + + # the move should not be reserved + move = self.env['stock.move'].create({ + 'name': 'test_availability_6', + 'location_id': self.stock_location.id, + 'location_dest_id': self.customer_location.id, + 'product_id': self.product1.id, + 'product_uom': self.uom_dozen.id, + 'product_uom_qty': 1, + }) + move._action_confirm() + move._action_assign() + self.assertEqual(move.state, 'confirmed') + + # the quants should be left untouched + self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.stock_location), 6.0) + + # make 8 units available, the move should again not be reservabale + self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 2.0) + move._action_assign() + self.assertEqual(move.state, 'confirmed') + self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.stock_location), 8.0) + + # make 12 units available, this time the move should be reservable + self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 4.0) + move._action_assign() + self.assertEqual(move.state, 'assigned') + self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.stock_location), 0.0) + + # Check it isn't possible to set any value to quantity_done + with self.assertRaises(UserError): + move.quantity_done = 0.1 + move._action_done() + + with self.assertRaises(UserError): + move.quantity_done = 1.1 + move._action_done() + + with self.assertRaises(UserError): + move.quantity_done = 0.9 + move._action_done() + + move.quantity_done = 1 + move._action_done() + self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.customer_location), 12.0) + def test_unreserve_1(self): """ Check that unreserving a stock move sets the products reserved as available and set the state back to confirmed. @@ -1505,6 +1562,108 @@ class StockMove(TransactionCase): self.assertEqual(move_stock_stock_1.state, 'assigned') self.assertEqual(move_stock_stock_2.state, 'waiting') + def test_link_assign_7(self): + # on the dozen uom, set the rounding set 1.0 + self.uom_dozen.rounding = 1 + + # 6 units are available in stock + self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 6.0) + + # create pickings and moves for a pick -> pack mto scenario + picking_stock_pack = self.env['stock.picking'].create({ + 'location_id': self.stock_location.id, + 'location_dest_id': self.pack_location.id, + 'picking_type_id': self.env.ref('stock.picking_type_internal').id, + }) + move_stock_pack = self.env['stock.move'].create({ + 'name': 'test_link_assign_7', + 'location_id': self.stock_location.id, + 'location_dest_id': self.pack_location.id, + 'product_id': self.product1.id, + 'product_uom': self.uom_dozen.id, + 'product_uom_qty': 1.0, + 'picking_id': picking_stock_pack.id, + }) + picking_pack_cust = self.env['stock.picking'].create({ + 'location_id': self.pack_location.id, + 'location_dest_id': self.customer_location.id, + 'picking_type_id': self.env.ref('stock.picking_type_out').id, + }) + move_pack_cust = self.env['stock.move'].create({ + 'name': 'test_link_assign_7', + 'location_id': self.pack_location.id, + 'location_dest_id': self.customer_location.id, + 'product_id': self.product1.id, + 'product_uom': self.uom_dozen.id, + 'product_uom_qty': 1.0, + 'picking_id': picking_pack_cust.id, + }) + move_stock_pack.write({'move_dest_ids': [(4, move_pack_cust.id, 0)]}) + move_pack_cust.write({'move_orig_ids': [(4, move_stock_pack.id, 0)]}) + (move_stock_pack + move_pack_cust)._action_confirm() + + # the pick should not be reservable because of the rounding of the dozen + move_stock_pack._action_assign() + self.assertEqual(move_stock_pack.state, 'confirmed') + move_pack_cust._action_assign() + self.assertEqual(move_pack_cust.state, 'waiting') + + # move the 6 units by adding an unreserved move line + move_stock_pack.write({'move_line_ids': [(0, 0, { + 'product_id': self.product1.id, + 'product_uom_id': self.uom_unit.id, + 'qty_done': 6, + 'product_uom_qty': 0, + 'lot_id': False, + 'package_id': False, + 'result_package_id': False, + 'location_id': move_stock_pack.location_id.id, + 'location_dest_id': move_stock_pack.location_dest_id.id, + 'picking_id': picking_stock_pack.id, + })]}) + + # the quantity done on the move should not respect the rounding of the move line + self.assertEqual(move_stock_pack.quantity_done, 0.5) + + # create the backorder in the uom of the quants + backorder_wizard_dict = picking_stock_pack.button_validate() + backorder_wizard = self.env[backorder_wizard_dict['res_model']].browse(backorder_wizard_dict['res_id']) + backorder_wizard.process() + self.assertEqual(move_stock_pack.state, 'done') + self.assertEqual(move_stock_pack.quantity_done, 0.5) + self.assertEqual(move_stock_pack.product_uom_qty, 0.5) + + # the second move should not be reservable because of the rounding on the dozen + move_pack_cust._action_assign() + self.assertEqual(move_pack_cust.state, 'waiting') + + # move a dozen on the backorder to see how we handle the extra move + backorder = self.env['stock.picking'].search([('backorder_id', '=', picking_stock_pack.id)]) + backorder.move_lines.write({'move_line_ids': [(0, 0, { + 'product_id': self.product1.id, + 'product_uom_id': self.uom_dozen.id, + 'qty_done': 1, + 'product_uom_qty': 0, + 'lot_id': False, + 'package_id': False, + 'result_package_id': False, + 'location_id': backorder.location_id.id, + 'location_dest_id': backorder.location_dest_id.id, + 'picking_id': backorder.id, + })]}) + overprocessed_wizard_dict = backorder.button_validate() + overprocessed_wizard = self.env[overprocessed_wizard_dict['res_model']].browse(overprocessed_wizard_dict['res_id']) + overprocessed_wizard.action_confirm() + backorder_move = backorder.move_lines + self.assertEqual(backorder_move.state, 'done') + self.assertEqual(backorder_move.quantity_done, 12.0) + self.assertEqual(backorder_move.product_uom_qty, 12.0) + self.assertEqual(backorder_move.product_uom, self.uom_unit) + + # the second move should now be reservable + move_pack_cust._action_assign() + self.assertEqual(move_pack_cust.state, 'assigned') + def test_use_unreserved_move_line_1(self): """ Test that validating a stock move linked to an untracked product reserved by another one correctly unreserves the other one. diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index c1eb41ac13e..709fbb61d9c 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -28,6 +28,7 @@ import werkzeug.wsgi from collections import OrderedDict from werkzeug.urls import url_decode, iri_to_uri from xml.etree import ElementTree +import unicodedata import odoo @@ -1110,20 +1111,27 @@ class Binary(http.Controller): </script>""" args = [] for ufile in files: + + filename = ufile.filename + if request.httprequest.user_agent.browser == 'safari': + # Safari sends NFD UTF-8 (where é is composed by 'e' and [accent]) + # we need to send it the same stuff, otherwise it'll fail + filename = unicodedata.normalize('NFD', ufile.filename).encode('UTF-8') + try: attachment = Model.create({ - 'name': ufile.filename, + 'name': filename, 'datas': base64.encodestring(ufile.read()), - 'datas_fname': ufile.filename, + 'datas_fname': filename, 'res_model': model, 'res_id': int(id) }) except Exception: - args = args.append({'error': _("Something horrible happened")}) + args.append({'error': _("Something horrible happened")}) _logger.exception("Fail to upload attachment %s" % ufile.filename) else: args.append({ - 'filename': ufile.filename, + 'filename': filename, 'mimetype': ufile.content_type, 'id': attachment.id }) diff --git a/addons/web/i18n/fr.po b/addons/web/i18n/fr.po index acefde7c3b1..9f9d154f062 100644 --- a/addons/web/i18n/fr.po +++ b/addons/web/i18n/fr.po @@ -4,9 +4,9 @@ # # Translators: # Xavier Belmere <Info@cartmeleon.com>, 2016 +# Martin Trigaux, 2016 # Lionel Sausin <ls@numerigraphe.com>, 2017 # Melanie Bernard <mbe@odoo.com>, 2017 -# Martin Trigaux, 2017 # Olivier Lenoir <olivier.lenoir@free.fr>, 2017 # Maxime Chambreuil <mchambreuil@ursainfosystems.com>, 2017 # Olivier Dony <odo@odoo.com>, 2017 @@ -2256,7 +2256,7 @@ msgstr "Rechercher %(value)s dans %(field)s" #: code:addons/web/static/src/js/fields/relational_fields.js:400 #, python-format msgid "Search More..." -msgstr "Chercher plus..." +msgstr "Recherche avancée..." #. module: web #. openerp-web diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js index 0ed909e2512..e040096f60b 100644 --- a/addons/web/static/src/js/chrome/action_manager_act_window.js +++ b/addons/web/static/src/js/chrome/action_manager_act_window.js @@ -615,7 +615,14 @@ ActionManager.include({ }; var controllerDef = action.controllers[viewType]; - if (!controllerDef) { + if (!controllerDef || controllerDef.state() === 'rejected') { + // if the controllerDef is rejected, it probably means that the js + // code or the requests made to the server crashed. In that case, + // if we reuse the same deferred, then the switch to the view is + // definitely blocked. We want to use a new controller, even though + // it is very likely that it will recrash again. At least, it will + // give more feedback to the user, and it could happen that one + // record crashes, but not another. controllerDef = newController(); } else { controllerDef = controllerDef.then(function (controller) { diff --git a/addons/web/static/src/js/fields/field_registry.js b/addons/web/static/src/js/fields/field_registry.js index 53a12fc8944..135243398fe 100644 --- a/addons/web/static/src/js/fields/field_registry.js +++ b/addons/web/static/src/js/fields/field_registry.js @@ -26,6 +26,7 @@ registry .add('datetime', basic_fields.FieldDateTime) .add('domain', basic_fields.FieldDomain) .add('text', basic_fields.FieldText) + .add('html', basic_fields.FieldText) .add('float', basic_fields.FieldFloat) .add('char', basic_fields.FieldChar) .add('link_button', basic_fields.LinkButton) diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 45d698cd75b..ec0fad66a06 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -358,6 +358,7 @@ var BasicModel = AbstractModel.extend({ var element = this.localData[id]; var isNew = this.isNew(id); var rollback = 'rollback' in options ? options.rollback : isNew; + var initialOffset = element.offset; this._visitChildren(element, function (elem) { if (rollback && elem._savePoint) { if (elem._savePoint instanceof Array) { @@ -376,6 +377,7 @@ var BasicModel = AbstractModel.extend({ delete elem.tempLimitIncrement; } }); + element.offset = initialOffset; }, /** * Duplicate a record (by calling the 'copy' route) @@ -3667,7 +3669,7 @@ var BasicModel = AbstractModel.extend({ r._changes[fieldName] = rec.id; many2ones[fieldName] = true; } else if (_.contains(['one2many', 'many2many'], fieldType)) { - var x2mCommands = commands[0][2][fieldName]; + var x2mCommands = value[2][fieldName]; defs.push(self._processX2ManyCommands(r, fieldName, x2mCommands)); } else { r._changes[fieldName] = self._parseServerValue(field, r._changes[fieldName]); diff --git a/addons/web/static/src/js/views/calendar/calendar_model.js b/addons/web/static/src/js/views/calendar/calendar_model.js index b847d7ca391..240beb9f1dc 100644 --- a/addons/web/static/src/js/views/calendar/calendar_model.js +++ b/addons/web/static/src/js/views/calendar/calendar_model.js @@ -559,6 +559,7 @@ return AbstractModel.extend({ }); var fs = []; + var undefined_fs = []; _.each(events, function (event) { var data = event.record[fieldName]; if (!_.contains(['many2many', 'one2many'], field.type)) { @@ -568,15 +569,18 @@ return AbstractModel.extend({ } _.each(data, function (_value) { var value = _.isArray(_value) ? _value[0] : _value; - fs.push({ + var f = { 'color_index': self.model_color === (field.relation || element.model) ? value : false, 'value': value, - 'label': fieldUtils.format[field.type](_value, field), + 'label': fieldUtils.format[field.type](_value, field) || _t("Undefined"), 'avatar_model': field.relation || element.model, - }); + }; + // if field used as color does not have value then push filter in undefined_fs, + // such filters should come last in filter list with Undefined string, later merge it with fs + value ? fs.push(f) : undefined_fs.push(f); }); }); - _.each(fs, function (f) { + _.each(_.union(fs, undefined_fs), function (f) { var f1 = _.findWhere(filter.filters, f); if (f1) { f1.display = true; diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js index 5e8bcbf963f..986fff3a53e 100644 --- a/addons/web/static/src/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/js/views/kanban/kanban_controller.js @@ -79,6 +79,16 @@ var KanbanController = BasicController.extend({ return this.renderer.updateRecord(this.model.get(id)); }, /** + * @param {number[]} ids + * @private + * @returns {Deferred} + */ + _resequenceColumns: function (ids) { + var state = this.model.get(this.handle, {raw: true}); + var model = state.fields[state.groupedBy[0]].relation; + return this.model.resequence(model, ids, this.handle); + }, + /** * This method calls the server to ask for a resequence. Note that this * does not rerender the user interface, because in most case, the * resequencing operation has already been displayed by the renderer. @@ -134,6 +144,10 @@ var KanbanController = BasicController.extend({ _onAddColumn: function (event) { var self = this; this.model.createGroup(event.data.value, this.handle).then(function () { + var state = self.model.get(self.handle, {raw: true}); + var ids = _.pluck(state.data, 'res_id').filter(_.isNumber); + return self._resequenceColumns(ids); + }).then(function () { return self.update({}, {reload: false}); }).then(function () { self._updateButtons(); @@ -396,9 +410,7 @@ var KanbanController = BasicController.extend({ */ _onResequenceColumn: function (event) { var self = this; - var state = this.model.get(this.handle, {raw: true}); - var model = state.fields[state.groupedBy[0]].relation; - this.model.resequence(model, event.data.ids, this.handle).then(function () { + this._resequenceColumns(event.data.ids).then(function () { self._updateEnv(); }); }, diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 656bc3b8e42..dfafdc85801 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -3197,6 +3197,45 @@ QUnit.module('ActionManager', { delete core.action_registry.ClientAction; }); + QUnit.test('web client is not deadlocked when a view crashes', function (assert) { + assert.expect(3); + + var readOnFirstRecordDef = $.Deferred(); + + var actionManager = createActionManager({ + actions: this.actions, + archs: this.archs, + data: this.data, + mockRPC: function (route, args) { + if (args.method === 'read' && args.args[0][0] === 1) { + return readOnFirstRecordDef; + } + return this._super.apply(this, arguments); + } + }); + + actionManager.doAction(3); + + // open first record in form view. this will crash and will not + // display a form view + actionManager.$('.o_list_view .o_data_row:first').click(); + + readOnFirstRecordDef.reject("not working as intended"); + + assert.strictEqual(actionManager.$('.o_list_view').length, 1, + "there should still be a list view in dom"); + + // open another record, the read will not crash + actionManager.$('.o_list_view .o_data_row:eq(2)').click(); + + assert.strictEqual(actionManager.$('.o_list_view').length, 0, + "there should not be a list view in dom"); + + assert.strictEqual(actionManager.$('.o_form_view').length, 1, + "there should be a form view in dom"); + + actionManager.destroy(); + }); }); }); diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index 01739c7888c..4ba6c124db2 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -7109,7 +7109,7 @@ QUnit.module('relational_fields', { }); QUnit.test('nested x2many default values', function (assert) { - assert.expect(2); + assert.expect(3); var form = createView({ View: FormView, @@ -7124,18 +7124,23 @@ QUnit.module('relational_fields', { '</form>', mockRPC: function (route, args) { if (args.model === 'partner' && args.method === 'default_get') { - return $.when({turtles: [[0, 0, { - partner_ids: [[6, 0, [4]]], - }]]}); + return $.when({ + turtles: [ + [0, 0, {partner_ids: [[6, 0, [4]]]}], + [0, 0, {partner_ids: [[6, 0, [1]]]}], + ], + }); } return this._super.apply(this, arguments); }, }); - assert.strictEqual(form.$('.o_list_view .o_field_many2manytags[name="partner_ids"] .badge').length, 1, - "m2mtags should contain one tag"); + assert.strictEqual(form.$('.o_list_view .o_data_row').length, 2, + "one2many list should contain 2 rows"); + assert.strictEqual(form.$('.o_list_view .o_field_many2manytags[name="partner_ids"] .badge').length, 2, + "m2mtags should contain two tags"); assert.strictEqual(form.$('.o_list_view .o_field_many2manytags[name="partner_ids"] .o_badge_text').text(), - 'aaa', "tag name should have been correctly loaded"); + 'aaafirst record', "tag names should have been correctly loaded"); form.destroy(); }); diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index a66f78ff159..148b7452678 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -1015,6 +1015,9 @@ var MockServer = Class.extend({ case '/web/dataset/search_read': return $.when(this._mockSearchReadController(args)); + + case '/web/dataset/resequence': + return $.when(); } if (route.indexOf('/web/image') >= 0 || _.contains(['.png', '.jpg'], route.substr(route.length - 4))) { return $.when(); diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js index bc92254d2ad..f24039f2d8d 100644 --- a/addons/web/static/tests/views/calendar_tests.js +++ b/addons/web/static/tests/views/calendar_tests.js @@ -124,7 +124,19 @@ QUnit.module('Views', { }; QUnit.test('simple calendar rendering', function (assert) { - assert.expect(22); + assert.expect(24); + + this.data.event.records.push({ + id: 7, + user_id: session.uid, + partner_id: false, + name: "event 7", + start: "2016-12-18 09:00:00", + stop: "2016-12-18 10:00:00", + allday: false, + partner_ids: [2], + type: 1 + }); var calendar = createView({ View: CalendarView, @@ -165,7 +177,7 @@ QUnit.module('Views', { assert.strictEqual($sidebar.find('.o_selected_range').length, 1, "should highlight the target day in mini calendar"); calendar.$buttons.find('.o_calendar_button_month').trigger('click'); // display all the month - assert.strictEqual(calendar.$('.fc-event').length, 6, "should display 6 events on the month (5 events + 2 week event - 1 'event 6' is filtered)"); + assert.strictEqual(calendar.$('.fc-event').length, 7, "should display 7 events on the month (5 events + 2 week event - 1 'event 6' is filtered + 1 'Undefined event')"); assert.strictEqual($sidebar.find('.o_selected_range').length, 31, "month scale should highlight all days in mini calendar"); // test filters @@ -174,15 +186,19 @@ QUnit.module('Views', { var $typeFilter = $sidebar.find('.o_calendar_filter:has(h3:contains(user))'); assert.ok($typeFilter.length, "should display 'user' filter"); - assert.strictEqual($typeFilter.find('.o_calendar_filter_item').length, 2, "should display 2 filter items for 'user'"); + assert.strictEqual($typeFilter.find('.o_calendar_filter_item').length, 3, "should display 3 filter items for 'user'"); + + // filters which has no value should show with string "Undefined" and should show at the last + assert.strictEqual($typeFilter.find('.o_calendar_filter_item:last').data('value'), false, "filters having false value should be displayed at last in filter items"); + assert.strictEqual($typeFilter.find('.o_calendar_filter_item:last > span').text(), "Undefined", "filters having false value should display 'Undefined' string"); var $attendeesFilter = $sidebar.find('.o_calendar_filter:has(h3:contains(attendees))'); assert.ok($attendeesFilter.length, "should display 'attendees' filter"); assert.strictEqual($attendeesFilter.find('.o_calendar_filter_item').length, 3, "should display 3 filter items for 'attendees' who use write_model (2 saved + Everything)"); assert.ok($attendeesFilter.find('.o_field_many2one').length, "should display one2many search bar for 'attendees' filter"); - assert.strictEqual(calendar.$('.fc-event').length, 6, - "should display 6 events ('event 5' counts for 2 because it spans two weeks and thus generate two fc-event elements)"); + assert.strictEqual(calendar.$('.fc-event').length, 7, + "should display 7 events ('event 5' counts for 2 because it spans two weeks and thus generate two fc-event elements)"); calendar.$('.o_calendar_filter .o_checkbox input').first().click(); // Disable first filter assert.strictEqual(calendar.$('.fc-event').length, 4, "should now only display 4 event"); calendar.$('.o_calendar_filter .o_checkbox input').eq(1).click(); // Disable second filter diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 76c97b10d70..4468897010f 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -6584,6 +6584,35 @@ QUnit.module('Views', { testUtils.unpatch(mixins.ParentedMixin); }); + QUnit.test('do not change pager when discarding current record', function (assert) { + assert.expect(2); + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="foo"/>' + + '</form>', + viewOptions: { + ids: [1, 2], + index: 0, + }, + res_id: 2, + }); + + assert.strictEqual(form.pager.$('.o_pager_counter').text().trim(), '2 / 2', + 'pager should indicate that we are on second record'); + + form.$buttons.find('.o_form_button_edit').click(); + form.$buttons.find('.o_form_button_cancel').click(); + + assert.strictEqual(form.pager.$('.o_pager_counter').text().trim(), '2 / 2', + 'pager should not have changed'); + + form.destroy(); + }); + QUnit.test('edition in form view on a "noCache" model', function (assert) { assert.expect(4); diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index fbe345887f3..c5e5f606f61 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -1579,7 +1579,7 @@ QUnit.module('Views', { }); QUnit.test('create a column in grouped on m2o', function (assert) { - assert.expect(13); + assert.expect(14); var nbRPCs = 0; var kanban = createView({ @@ -1598,6 +1598,11 @@ QUnit.module('Views', { if (args.method === 'name_create') { assert.ok(true, "should call name_create"); } + //Create column will call resequence to set column order + if (route === '/web/dataset/resequence') { + assert.ok(true, "should call resequence"); + return $.when(true); + } return this._super(route, args); }, }); @@ -1679,7 +1684,7 @@ QUnit.module('Views', { }); QUnit.test('delete a column in grouped on m2o', function (assert) { - assert.expect(28); + assert.expect(29); testUtils.patch(KanbanRenderer, { _renderGrouped: function () { diff --git a/addons/web/views/report_templates.xml b/addons/web/views/report_templates.xml index 6e4cb28702e..9347dff1c07 100644 --- a/addons/web/views/report_templates.xml +++ b/addons/web/views/report_templates.xml @@ -68,6 +68,12 @@ <t t-call-assets="web_editor.summernote" t-css="false"/> <t t-call-assets="web_editor.assets_editor" t-css="false"/> <t t-call-assets="web.report_assets_editor" t-css="false"/> + + <script type="text/javascript" src="/web/static/src/js/services/session.js"></script> + <script type="text/javascript" src="/web_editor/static/src/js/content/body_manager.js"/> + <script type="text/javascript" src="/web_editor/static/src/js/root_widget.js"/> + <script type="text/javascript" src="/web_editor/static/src/js/iframe.js"></script> + <script t-if="enable_editor and inline_mode" type="text/javascript" src="/web_editor/static/src/js/inline.js"></script> </t> </head> <body class="container"> diff --git a/addons/web_editor/i18n/tr.po b/addons/web_editor/i18n/tr.po index fc757d677a0..619a84af27d 100644 --- a/addons/web_editor/i18n/tr.po +++ b/addons/web_editor/i18n/tr.po @@ -15,13 +15,14 @@ # Saban Yildiz <sabany@projetgrup.com>, 2017 # Cem Uygur <cemuygur.beb@gmail.com>, 2017 # İlknur Püskül <ilknurpuskull@gmail.com>, 2017 +# Umur Akın <umura@projetgrup.com>, 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server saas~11.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-03-22 14:11+0000\n" "PO-Revision-Date: 2018-03-22 14:11+0000\n" -"Last-Translator: İlknur Püskül <ilknurpuskull@gmail.com>, 2017\n" +"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n" "Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1219,7 +1220,7 @@ msgstr "" #: code:addons/web_editor/static/src/js/widgets/ace.js:572 #, python-format msgid "Server error" -msgstr "" +msgstr "Sunucu hatas" #. module: web_editor #. openerp-web diff --git a/addons/web_editor/static/src/js/editor/editor.js b/addons/web_editor/static/src/js/editor/editor.js index 353104c2c93..95831dd306a 100644 --- a/addons/web_editor/static/src/js/editor/editor.js +++ b/addons/web_editor/static/src/js/editor/editor.js @@ -47,8 +47,8 @@ var EditorMenuBar = Widget.extend({ var self = this; var defs = [this._super.apply(this, arguments)]; - core.bus.on('editor_save_request', this, this._onSaveRequest); - core.bus.on('editor_discard_request', this, this._onDiscardRequest); + core.bus.on('editor_save_request', this, this.save); + core.bus.on('editor_discard_request', this, this.cancel); $('.dropdown-toggle').dropdown(); diff --git a/addons/web_editor/static/src/js/editor/rte.summernote.js b/addons/web_editor/static/src/js/editor/rte.summernote.js index f6e2ac63aa9..ddf588eb569 100644 --- a/addons/web_editor/static/src/js/editor/rte.summernote.js +++ b/addons/web_editor/static/src/js/editor/rte.summernote.js @@ -665,7 +665,15 @@ function summernote_mousedown(event) { } // restore range if range lost after clicking on non-editable area - r = range.create(); + try { + r = range.create(); + } catch (e) { + // If this code is running inside an iframe-editor and that the range + // is outside of this iframe, this will fail as the iframe does not have + // the permission to check the outside content this way. In that case, + // we simply ignore the exception as it is as if there was no range. + return; + } var editables = $(".o_editable[contenteditable], .note-editable[contenteditable]"); var r_editable = editables.has((r||{}).sc); if (!r_editable.closest('.note-editor').is($editable) && !r_editable.filter('.o_editable').is(editables)) { diff --git a/addons/web_editor/static/src/js/editor/transcoder.js b/addons/web_editor/static/src/js/editor/transcoder.js index 1a77b3d19e7..4fa30978f84 100644 --- a/addons/web_editor/static/src/js/editor/transcoder.js +++ b/addons/web_editor/static/src/js/editor/transcoder.js @@ -105,25 +105,47 @@ function getMatchedCSSRules(a) { delete style.display; } - _.each(['margin', 'padding'], function (p) { - if (style[p+'-top'] || style[p+'-right'] || style[p+'-bottom'] || style[p+'-left']) { - if (style[p+'-top'] === style[p+'-right'] && style[p+'-top'] === style[p+'-bottom'] && style[p+'-top'] === style[p+'-left']) { + // The css generates all the attributes separately and not in simplified form. + // In order to have a better compatibility (outlook for example) we simplify the css tags. + // e.g. border-left-style: none; border-bottom-s .... will be simplified in border-style = none + _.each([['margin'], ['padding'], ['border', 'style']], function (attr) { + var p = attr[0]; + var e = attr[1] ? '-' + attr[1] : ''; + + if (style[p+'-top'+e] || style[p+'-right'+e] || style[p+'-bottom'+e] || style[p+'-left'+e]) { + if (style[p+'-top'+e] === style[p+'-right'+e] && style[p+'-top'+e] === style[p+'-bottom'+e] && style[p+'-top'+e] === style[p+'-left'+e]) { // keep => property: [top/right/bottom/left value]; - style[p] = style[p+'-top']; + style[p+e] = style[p+'-top'+e]; } else { // keep => property: [top value] [right value] [bottom value] [left value]; - style[p] = (style[p+'-top'] || 0) + ' ' + (style[p+'-right'] || 0) + ' ' + (style[p+'-bottom'] || 0) + ' ' + (style[p+'-left'] || 0); - if (style[p].indexOf('inherit') !== -1 || style[p].indexOf('initial') !== -1) { + style[p+e] = (style[p+'-top'+e] || 0) + ' ' + (style[p+'-right'+e] || 0) + ' ' + (style[p+'-bottom'+e] || 0) + ' ' + (style[p+'-left'+e] || 0); + if (style[p+e].indexOf('inherit') !== -1 || style[p+e].indexOf('initial') !== -1) { // keep => property-top: [top value]; property-right: [right value]; property-bottom: [bottom value]; property-left: [left value]; - delete style[p]; + delete style[p+e]; return; } } - delete style[p+'-top']; - delete style[p+'-right']; - delete style[p+'-bottom']; - delete style[p+'-left']; + delete style[p+'-top'+e]; + delete style[p+'-right'+e]; + delete style[p+'-bottom'+e]; + delete style[p+'-left'+e]; + } + }); + + if (style['border-bottom-left-radius']) { + style['border-radius'] = style['border-bottom-left-radius']; + delete style['border-bottom-left-radius']; + delete style['border-bottom-right-radius']; + delete style['border-top-left-radius']; + delete style['border-top-right-radius']; + } + + // if the border styling is initial we remove it to simplify the css tags for compatibility. + // Also, since we do not send a css style tag, the initial value of the border is useless. + _.each(_.keys(style), function (k) { + if (k.indexOf('border') !== -1 && style[k] === 'initial') { + delete style[k]; } }); @@ -229,6 +251,33 @@ function classToStyle($editable) { } else { $target.attr('style', style); } + // Apple Mail + if (this.nodeName === 'TD' && !this.childNodes.length) { + this.innerHTML = ' '; + } + + // Outlook + if (this.nodeName === 'A' && $target.hasClass('btn') && !$target.children().length) { + var $hack = $('<table class="o_outlook_hack"><tr><td></td></tr></table>'); + $hack.find('td') + .attr('height', $target.outerHeight()) + .css({ + 'margin': $target.css('padding'), + 'border-radius': $target.css('border-radius'), + 'background-color': $target.css('background-color'), + }); + $target.after($hack); + $target.appendTo($hack.find('td')); + // the space add a line when it's a table but it's invisible when it's a link + var node = $hack[0].previousSibling; + if (node && node.nodeType === Node.TEXT_NODE && !node.textContent.match(/\S/)) { + $(node).remove(); + } + node = $hack[0].nextSibling; + if (node && node.nodeType === Node.TEXT_NODE && !node.textContent.match(/\S/)) { + $(node).remove(); + } + } }); } @@ -239,6 +288,11 @@ function classToStyle($editable) { * @param {jQuery} $editable */ function styleToClass($editable) { + // Outlook revert + $editable.find('table.o_outlook_hack').each(function () { + $(this).after($('a', this)); + }).remove(); + getMatchedCSSRules($editable[0]); var $c = $('<span/>').appendTo(document.body); diff --git a/addons/website/static/src/scss/website.ui.scss b/addons/website/static/src/scss/website.ui.scss index a87be36a855..319dc591dbb 100644 --- a/addons/website/static/src/scss/website.ui.scss +++ b/addons/website/static/src/scss/website.ui.scss @@ -108,7 +108,7 @@ body .modal { @include o-w-preserve-modals; @include o-w-preserve-tabs; - button.close { + &:not(.oe_mobile_preview) button.close { @include o-w-close-icon(12px); margin-right: -2px; } diff --git a/addons/website_blog/static/src/js/website_blog.editor.js b/addons/website_blog/static/src/js/website_blog.editor.js index 3cf1b92647f..b5ca03689b0 100644 --- a/addons/website_blog/static/src/js/website_blog.editor.js +++ b/addons/website_blog/static/src/js/website_blog.editor.js @@ -132,7 +132,11 @@ options.registry.blog_cover = options.Class.extend({ this.$image.css("background-image", ""); }, change: function (previewMode, value, $li) { - var $image = $("<img/>", {src: this.$image.css("background-image")}); + var $image = $("<img/>"); + var background = this.$image.css("background-image"); + if (background && background !== "none") { + $image.attr('src', background.match(/^url\(["']?(.+?)["']?\)$/)[1]); + } var editor = new weWidgets.MediaDialog(this, { onlyImages: true, diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 8ea0fab72d0..41b45932c15 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -2,7 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. import json import logging -from werkzeug.exceptions import Forbidden +from werkzeug.exceptions import Forbidden, NotFound from odoo import fields, http, tools, _ from odoo.http import request @@ -220,6 +220,11 @@ class WebsiteSale(http.Controller): else: ppg = PPG + if category: + category = request.env['product.public.category'].search([('id', '=', int(category))], limit=1) + if not category: + raise NotFound() + attrib_list = request.httprequest.args.getlist('attrib') attrib_values = [[int(x) for x in v.split("-")] for v in attrib_list if v] attributes_ids = {v[0] for v in attrib_values} @@ -236,9 +241,6 @@ class WebsiteSale(http.Controller): url = "/shop" if search: post["search"] = search - if category: - category = request.env['product.public.category'].browse(int(category)) - url = "/shop/category/%s" % slug(category) if attrib_list: post['attrib'] = attrib_list @@ -247,6 +249,7 @@ class WebsiteSale(http.Controller): parent_category_ids = [] if category: + url = "/shop/category/%s" % slug(category) parent_category_ids = [category.id] current_category = category while current_category.parent_id: diff --git a/addons/website_sale/models/res_config_settings.py b/addons/website_sale/models/res_config_settings.py index a5eae035448..9de089dee86 100644 --- a/addons/website_sale/models/res_config_settings.py +++ b/addons/website_sale/models/res_config_settings.py @@ -44,7 +44,12 @@ class ResConfigSettings(models.TransientModel): default=_default_order_mail_template, domain="[('model', '=', 'sale.order')]", help="Email sent to customer at the end of the checkout process") - automatic_invoice = fields.Boolean("Automatic Invoice") + automatic_invoice = fields.Boolean("Automatic Invoice", + help="The invoice is generated automatically and available in the customer portal " + "when the transaction is confirmed by the payment acquirer.\n" + "The invoice is marked as paid and the payment is registered in the payment journal " + "defined in the configuration of the payment acquirer.\n" + "This mode is advised if you issue the final invoice at the order and not after the delivery.") module_l10n_eu_service = fields.Boolean(string="EU Digital Goods VAT") diff --git a/addons/website_sale/views/sale_order_views.xml b/addons/website_sale/views/sale_order_views.xml index ac90ec39db6..848ce6106d4 100644 --- a/addons/website_sale/views/sale_order_views.xml +++ b/addons/website_sale/views/sale_order_views.xml @@ -222,17 +222,9 @@ <field name="model">sale.order</field> <field name="inherit_id" ref="sale.view_order_form"/> <field name="arch" type="xml"> - <xpath expr="//button[@name='action_quotation_send']" position="after"> - <button name="action_mark_as_paid" type="object" - string="Mark as Paid" class="btn-primary" - attrs="{'invisible': ['|', ('can_directly_mark_as_paid', '=', False), ('state', 'not in', ['sent', 'sale'])]}"/> - </xpath> <field name="partner_id" position="after"> <field name="can_directly_mark_as_paid" invisible="1"/> </field> - <xpath expr="//button[@id='action_confirm']" position="attributes"> - <attribute name="attrs">{'invisible': ['|',('can_directly_mark_as_paid', '=', True), ('state', 'not in', ['sent'])]}</attribute> - </xpath> </field> </record> |
