[MERGE] merge with lp:openobject-addons

bzr revid: cha@tinyerp.com-20130313130410-kovoq936lua9yugo
This commit is contained in:
Ajay Chauhan (OpenERP) 2013-03-13 18:34:10 +05:30
commit 1cb664ea4f
44 changed files with 8220 additions and 453 deletions

View File

@ -922,7 +922,7 @@
</group>
<group string="Invoices">
<field name="account_collected_id" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<field name="account_analytic_collected_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', company_id), ('parent_id', '&lt;&gt;', False)]" groups="analytic.group_analytic_accounting"/>
<field name="account_analytic_collected_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', company_id)]" groups="analytic.group_analytic_accounting"/>
<field name="base_code_id"/>
<field name="base_sign"/>
@ -932,7 +932,7 @@
</group>
<group string="Refunds">
<field name="account_paid_id" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<field name="account_analytic_paid_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', company_id), ('parent_id', '&lt;&gt;', False)]" groups="analytic.group_analytic_accounting"/>
<field name="account_analytic_paid_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', company_id)]" groups="analytic.group_analytic_accounting"/>
<field name="ref_base_code_id"/>
<field name="ref_base_sign"/>
@ -1039,7 +1039,7 @@
<field name="blocked"/>
</group>
<group groups="analytic.group_analytic_accounting" string="Analytic">
<field name="analytic_account_id" domain="[('parent_id','!=',False)]"/>
<field name="analytic_account_id" domain="[('type','in',('normal','contract'))]"/>
</group>
</group>
<field name="narration" colspan="4" nolabel="1" placeholder="Add an internal note..."/>
@ -1084,7 +1084,7 @@
<field name="blocked"/>
<newline/>
<field name="account_tax_id" domain="[('parent_id','=',False)]"/>
<field name="analytic_account_id" domain="[('parent_id','!=',False)]" groups="analytic.group_analytic_accounting"/>
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
<separator colspan="4" string="Status"/>
<newline/>
<field name="reconcile_id"/>
@ -1336,7 +1336,7 @@
</group>
<group groups="analytic.group_analytic_accounting" string="Analytic">
<field name="analytic_account_id" domain="[('parent_id','!=',False)]"/>
<field name="analytic_account_id"/>
</group>
</group>
<separator string="Internal Note"/>
@ -1355,7 +1355,7 @@
<field name="date_maturity"/>
<field name="debit" sum="Total Debit"/>
<field name="credit" sum="Total Credit"/>
<field name="analytic_account_id" domain="[('parent_id','!=',False)]" groups="analytic.group_analytic_accounting"/>
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
<field name="amount_currency"/>
<field name="currency_id" groups="base.group_multi_currency"/>
<field name="tax_code_id"/>

View File

@ -11,8 +11,8 @@
<field name="complete_name"/>
<field name="partner_id"/>
<field name="code"/>
<field name="date"/>
<field name="date_start"/>
<field name="date"/>
<field name="user_id" invisible="1"/>
<field name="manager_id"/>
<field name="parent_id" invisible="1"/>

View File

@ -0,0 +1,23 @@
# Spanish (Colombia) translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2013-03-11 19:01+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Spanish (Colombia) <es_CO@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-12 04:47+0000\n"
"X-Generator: Launchpad (build 16524)\n"
#. module: account_accountant
#: model:ir.actions.client,name:account_accountant.action_client_account_menu
msgid "Open Accounting Menu"
msgstr "Abrir Menú de Contabilidad"

View File

@ -45,6 +45,7 @@ Adds menu to show relevant information to each manager.You can also view the rep
'static/src/css/analytic.css'
],
'demo': ['analytic_account_demo.xml'],
'test': ['test/account_analytic_analysis.yml'],
'installable': True,
'auto_install': False,
}

View File

@ -18,6 +18,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from dateutil.relativedelta import relativedelta
import datetime
import logging
import time
@ -31,6 +32,58 @@ from openerp.addons.decimal_precision import decimal_precision as dp
_logger = logging.getLogger(__name__)
class account_analytic_invoice_line(osv.osv):
_name = "account.analytic.invoice.line"
def _amount_line(self, cr, uid, ids, prop, unknow_none, unknow_dict, context=None):
res = {}
for line in self.browse(cr, uid, ids, context=context):
res[line.id] = line.quantity * line.price_unit
if line.analytic_account_id.pricelist_id:
cur = line.analytic_account_id.pricelist_id.currency_id
res[line.id] = self.pool.get('res.currency').round(cr, uid, cur, res[line.id])
return res
_columns = {
'product_id': fields.many2one('product.product','Product',required=True),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
'name': fields.text('Description', required=True),
'quantity': fields.float('Quantity', required=True),
'uom_id': fields.many2one('product.uom', 'Unit of Measure',required=True),
'price_unit': fields.float('Unit Price', required=True),
'price_subtotal': fields.function(_amount_line, string='Sub Total', type="float",digits_compute= dp.get_precision('Account')),
}
_defaults = {
'quantity' : 1,
}
def product_id_change(self, cr, uid, ids, product, uom_id, qty=0, name='', partner_id=False, price_unit=False, pricelist_id=False, company_id=None, context=None):
context = context or {}
uom_obj = self.pool.get('product.uom')
company_id = company_id or False
context.update({'company_id': company_id, 'force_company': company_id, 'pricelist_id': pricelist_id})
if not product:
return {'value': {'price_unit': 0.0}, 'domain':{'product_uom':[]}}
if partner_id:
part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
if part.lang:
context.update({'lang': part.lang})
result = {}
res = self.pool.get('product.product').browse(cr, uid, product, context=context)
result.update({'name':res.partner_ref or False,'uom_id': uom_id or res.uom_id.id or False, 'price_unit': res.list_price or 0.0})
if res.description:
result['name'] += '\n'+res.description
res_final = {'value':result}
if result['uom_id'] != res.uom_id.id:
selected_uom = uom_obj.browse(cr, uid, result['uom_id'], context=context)
new_price = uom_obj._compute_price(cr, uid, res.uom_id.id, res_final['value']['price_unit'], result['uom_id'])
res_final['value']['price_unit'] = new_price
return res_final
class account_analytic_account(osv.osv):
_name = "account.analytic.account"
_inherit = "account.analytic.account"
@ -215,6 +268,8 @@ class account_analytic_account(osv.osv):
GROUP BY account_analytic_line.account_id", (child_ids,))
for account_id, sum in cr.fetchall():
res[account_id] = round(sum,2)
for acc in self.browse(cr, uid, res.keys(), context=context):
res[acc.id] = res[acc.id] - (acc.timesheet_ca_invoiced or 0.0)
res_final = res
return res_final
@ -295,7 +350,7 @@ class account_analytic_account(osv.osv):
res = {}
for account in self.browse(cr, uid, ids, context=context):
res[account.id] = 0.0
sale_ids = sale_obj.search(cr, uid, [('project_id','=', account.id), ('partner_id', '=', account.partner_id.id)], context=context)
sale_ids = sale_obj.search(cr, uid, [('project_id','=', account.id), ('state', '=', 'manual')], context=context)
for sale in sale_obj.browse(cr, uid, sale_ids, context=context):
if not sale.invoiced:
res[account.id] += sale.amount_untaxed
@ -456,6 +511,22 @@ class account_analytic_account(osv.osv):
'invoiced_total' : fields.function(_sum_of_fields, type="float",multi="sum_of_all", string="Total Invoiced"),
'remaining_total' : fields.function(_sum_of_fields, type="float",multi="sum_of_all", string="Total Remaining", help="Expectation of remaining income for this contract. Computed as the sum of remaining subtotals which, in turn, are computed as the maximum between '(Estimation - Invoiced)' and 'To Invoice' amounts"),
'toinvoice_total' : fields.function(_sum_of_fields, type="float",multi="sum_of_all", string="Total to Invoice", help=" Sum of everything that could be invoiced for this contract."),
'recurring_invoice_line_ids': fields.one2many('account.analytic.invoice.line', 'analytic_account_id', 'Invoice Lines'),
'recurring_invoices' : fields.boolean('Generate recurring invoices automatically'),
'recurring_rule_type': fields.selection([
('daily', 'Day(s)'),
('weekly', 'Week(s)'),
('monthly', 'Month(s)'),
('yearly', 'Year(s)'),
], 'Recurrency', help="Invoice automatically repeat at specified interval"),
'recurring_interval': fields.integer('Repeat Every', help="Repeat every (Days/Week/Month/Year)"),
'recurring_next_date': fields.date('Date of Next Invoice'),
}
_defaults = {
'recurring_interval': 1,
'recurring_next_date': lambda *a: time.strftime('%Y-%m-%d'),
'recurring_rule_type':'monthly'
}
def open_sale_order_lines(self,cr,uid,ids,context=None):
@ -478,17 +549,38 @@ class account_analytic_account(osv.osv):
def on_change_template(self, cr, uid, ids, template_id, context=None):
if not template_id:
return {}
obj_analytic_line = self.pool.get('account.analytic.invoice.line')
res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context)
if template_id and 'value' in res:
template = self.browse(cr, uid, template_id, context=context)
res['value']['fix_price_invoices'] = template.fix_price_invoices
res['value']['invoice_on_timesheets'] = template.invoice_on_timesheets
res['value']['hours_qtt_est'] = template.hours_qtt_est
res['value']['amount_max'] = template.amount_max
res['value']['to_invoice'] = template.to_invoice.id
res['value']['pricelist_id'] = template.pricelist_id.id
template = self.browse(cr, uid, template_id, context=context)
invoice_line_ids = []
for x in template.recurring_invoice_line_ids:
invoice_line_ids.append((0, 0, {
'product_id': x.product_id.id,
'uom_id': x.uom_id.id,
'name': x.name,
'quantity': x.quantity,
'price_unit': x.price_unit,
'analytic_account_id': x.analytic_account_id and x.analytic_account_id.id or False,
}))
res['value']['fix_price_invoices'] = template.fix_price_invoices
res['value']['invoice_on_timesheets'] = template.invoice_on_timesheets
res['value']['hours_qtt_est'] = template.hours_qtt_est
res['value']['amount_max'] = template.amount_max
res['value']['to_invoice'] = template.to_invoice.id
res['value']['pricelist_id'] = template.pricelist_id.id
res['value']['recurring_invoices'] = template.recurring_invoices
res['value']['recurring_interval'] = template.recurring_interval
res['value']['recurring_rule_type'] = template.recurring_rule_type
res['value']['recurring_invoice_line_ids'] = invoice_line_ids
return res
def onchange_recurring_invoices(self, cr, uid, ids, recurring_invoices, date_start=False, context=None):
value = {}
if date_start and recurring_invoices:
value = {'value': {'recurring_next_date': date_start}}
return value
def cron_account_analytic_account(self, cr, uid, context=None):
if context is None:
context = {}
@ -527,10 +619,101 @@ class account_analytic_account(osv.osv):
for user_id, data in remind.items():
context["data"] = data
_logger.debug("Sending reminder to uid %s", user_id)
self.pool.get('email.template').send_mail(cr, uid, template_id, user_id, context=context)
self.pool.get('email.template').send_mail(cr, uid, template_id, user_id, force_send=True, context=context)
return True
def onchange_invoice_on_timesheets(self, cr, uid, ids, invoice_on_timesheets, context=None):
if not invoice_on_timesheets:
return {}
result = {'value': {'use_timesheets': True}}
try:
to_invoice = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'hr_timesheet_invoice', 'timesheet_invoice_factor1')
result['value']['to_invoice'] = to_invoice[1]
except ValueError:
pass
return result
def _prepare_invoice(self, cr, uid, contract, context=None):
context = context or {}
inv_obj = self.pool.get('account.invoice')
journal_obj = self.pool.get('account.journal')
fpos_obj = self.pool.get('account.fiscal.position')
if not contract.partner_id:
raise osv.except_osv(_('No Customer Defined !'),_("You must first select a Customer for Contract %s!") % contract.name )
fpos = contract.partner_id.property_account_position.id or False
journal_ids = journal_obj.search(cr, uid, [('type', '=','sale'),('company_id', '=', contract.company_id.id or False)], limit=1)
if not journal_ids:
raise osv.except_osv(_('Error!'),
_('Please define a sale journal for the company "%s".') % (contract.company_id.name or '', ))
partner_payment_term = contract.partner_id.property_payment_term and contract.partner_id.property_payment_term.id or False
inv_data = {
'reference': contract.code or False,
'account_id': contract.partner_id.property_account_receivable.id,
'type': 'out_invoice',
'partner_id': contract.partner_id.id,
'currency_id': contract.partner_id.property_product_pricelist.id or False,
'journal_id': len(journal_ids) and journal_ids[0] or False,
'date_invoice': contract.recurring_next_date,
'origin': contract.name,
'fiscal_position': fpos,
'payment_term': partner_payment_term,
'company_id': contract.company_id.id or False,
}
invoice_id = inv_obj.create(cr, uid, inv_data, context=context)
for line in contract.recurring_invoice_line_ids:
res = line.product_id
account_id = res.property_account_income.id
if not account_id:
account_id = res.categ_id.property_account_income_categ.id
account_id = fpos_obj.map_account(cr, uid, fpos, account_id)
taxes = res.taxes_id and res.taxes_id or False
tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes)
invoice_line_vals = {
'name': line.name,
'account_id': account_id,
'account_analytic_id': contract.id,
'price_unit': line.price_unit or 0.0,
'quantity': line.quantity,
'uos_id': line.uom_id.id or False,
'product_id': line.product_id.id or False,
'invoice_id' : invoice_id,
'invoice_line_tax_id': [(6, 0, tax_id)],
}
self.pool.get('account.invoice.line').create(cr, uid, invoice_line_vals, context=context)
inv_obj.button_compute(cr, uid, [invoice_id], context=context)
return invoice_id
def recurring_create_invoice(self, cr, uid, automatic=False, context=None):
context = context or {}
current_date = time.strftime('%Y-%m-%d')
contract_ids = self.search(cr, uid, [('recurring_next_date','<=', current_date), ('state','=', 'open'), ('recurring_invoices','=', True)])
for contract in self.browse(cr, uid, contract_ids, context=context):
invoice_id = self._prepare_invoice(cr, uid, contract, context=context)
next_date = datetime.datetime.strptime(contract.recurring_next_date or current_date, "%Y-%m-%d")
interval = contract.recurring_interval
if contract.recurring_rule_type == 'daily':
new_date = next_date+relativedelta(days=+interval)
elif contract.recurring_rule_type == 'weekly':
new_date = next_date+relativedelta(weeks=+interval)
else:
new_date = next_date+relativedelta(months=+interval)
self.write(cr, uid, [contract.id], {'recurring_next_date': new_date.strftime('%Y-%m-%d')}, context=context)
return True
class account_analytic_account_summary_user(osv.osv):
_name = "account_analytic_analysis.summary.user"
_description = "Hours Summary by User"

View File

@ -73,5 +73,16 @@ Hello ${object.name},
<field name="function" eval="'cron_account_analytic_account'"/>
<field name="args" eval="'()'" />
</record>
<record model="ir.cron" id="account_analytic_cron_for_invoice">
<field name="name">Generate Recurring Invoices from Contracts</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="model" eval="'account.analytic.account'"/>
<field name="function" eval="'recurring_create_invoice'"/>
<field name="args" eval="'()'"/>
</record>
</data>
</openerp>

View File

@ -5,6 +5,15 @@
<field name="name">Sales Orders</field>
<field name="res_model">sale.order</field>
<field name="src_model">account.analytic.account</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a quotation that can be converted into a sales
order.
</p><p>
Use sale orders to track everything that should be invoiced
at a fix price on a contract.
</p>
</field>
</record>
<!-- Inherited Analytic Account form for contracts -->
@ -26,6 +35,9 @@
</div>
</div>
</xpath>
<field name="partner_id" position="attributes">
<attribute name="attrs">{'required': [('type','=','contract'),'|','|',('fix_price_invoices','=',True), ('invoice_on_timesheets', '=', True), ('recurring_invoices', '=', True)]}</attribute>
</field>
<xpath expr='//group[@name="invoice_on_timesheets"]' position="replace">
</xpath>
<xpath expr='//separator[@name="description"]' position='before'>
@ -62,20 +74,20 @@
or view
</span>
<span attrs="{'invisible': ['|',('fix_price_to_invoice','&lt;&gt;',0.0 ),('partner_id','=',False)]}" class="oe_grey">
<span attrs="{'invisible': [('fix_price_to_invoice','&lt;&gt;',0.0 )]}" class="oe_grey">
No order to invoice, create
</span>
<button name="%(action_sales_order)d" string="Sale Orders"
<button name="%(action_sales_order)d" string="Sales Orders"
type="action"
class="oe_link"
context="{'default_partner_id': [partner_id], 'search_default_partner_id': [partner_id],'search_default_project_id': [active_id],'default_project_id': [active_id]}"
context="{'default_partner_id': [partner_id], 'search_default_project_id': [active_id],'default_project_id': [active_id]}"
/>
</td>
</tr><tr>
<td class="oe_timesheet_grey">
<label for="invoice_on_timesheets"/>
</td><td class="oe_timesheet_grey">
<field name="invoice_on_timesheets"/>
<field name="invoice_on_timesheets" on_change="onchange_invoice_on_timesheets(invoice_on_timesheets)"/>
</td><td>
<field class="oe_inline" name="hours_qtt_est" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
</td><td>
@ -84,7 +96,7 @@
<field class="oe_inline" name="remaining_hours_to_invoice" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
</td><td>
<field class="oe_inline" name="ca_to_invoice" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
</td><td class="oe_timesheet_action" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}">
</td><td class="oe_timesheet_action" attrs="{'invisible': ['|',('invoice_on_timesheets','=',False),('type','=','template')]}">
<span attrs="{'invisible': [('ca_to_invoice','=',0.0)]}" class="oe_grey">
<button name="%(hr_timesheet_invoice.action_hr_timesheet_invoice_create_final)d"
type="action"
@ -117,8 +129,8 @@
</td>
</tr>
</table>
<group name='invoice_on_timesheets' attrs="{'invisible': [('invoice_on_timesheets','=',False)]}">
<p class="oe_grey oe_edit_only" colspan="2">
<group name='invoice_on_timesheets'>
<p class="oe_grey oe_edit_only" colspan="2" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}">
When invoicing on timesheet, OpenERP uses the
pricelist of the contract which uses the price
defined on the product related to each employee to
@ -131,9 +143,36 @@
<field name="to_invoice"
class="oe_inline"
widget="selection"
attrs="{'required': [('invoice_on_timesheets', '=', True)]}"/>
attrs="{'required': [('invoice_on_timesheets', '=', True)], 'invisible': [('invoice_on_timesheets','=',False)]}"/>
</group>
</group>
<separator string="Recurring Invoices" attrs="{'invisible': [('recurring_invoices','!=',True)]}"/>
<div>
<field name="recurring_invoices" on_change="onchange_recurring_invoices(recurring_invoices, date_start)" class="oe_inline"/>
<label for="recurring_invoices" />
<button class="oe_link" name="recurring_create_invoice" attrs="{'invisible': [('recurring_invoices','!=',True)]}" string="⇒ create invoices" type="object" groups="base.group_no_one"/>
</div>
<group attrs="{'invisible': [('recurring_invoices','!=',True)]}">
<label for="recurring_interval"/>
<div>
<field name="recurring_interval" class="oe_inline" attrs="{'required': [('recurring_invoices', '=', True)]}"/>
<field name="recurring_rule_type" class="oe_inline" attrs="{'required': [('recurring_invoices', '=', True)]}"/>
</div>
<field name="recurring_next_date"/>
</group>
<label for="recurring_invoice_line_ids" attrs="{'invisible': [('recurring_invoices','=',False)]}"/>
<div attrs="{'invisible': [('recurring_invoices','=',False)]}">
<field name="recurring_invoice_line_ids">
<tree string="Account Analytic Lines" editable="bottom">
<field name="product_id" on_change="product_id_change(product_id, uom_id, quantity, name, parent.partner_id, price_unit, parent.pricelist_id, parent.company_id)"/>
<field name="name"/>
<field name="quantity"/>
<field name="uom_id"/>
<field name="price_unit"/>
<field name="price_subtotal"/>
</tree>
</field>
</div>
</xpath>
</field>
</record>
@ -157,7 +196,7 @@
<field name="model">account.analytic.account</field>
<field name="inherit_id" ref="account.view_account_analytic_account_list"/>
<field name="arch" type="xml">
<field name="date" position="before">
<field name="date_start" position="before">
<field name="last_invoice_date"/>
<field name="toinvoice_total"/>
<field name="remaining_hours"/>

View File

@ -33,9 +33,11 @@
<record id="sale.sale_order_6" model="sale.order">
<field name="project_id" ref="account.analytic_super_product_trainings"/>
<field name="partner_id" ref="base.res_partner_1"/>
</record>
<record id="account.analytic_support_internal" model="account.analytic.account">
<field name="partner_id" ref="base.res_partner_1"/>
<field name="use_timesheets">True</field>
<field name="invoice_on_timesheets">True</field>
<field name="hours_qtt_est">100</field>

View File

@ -8,7 +8,7 @@
<record id="group_template_required" model="res.groups">
<field name="name">Mandatory use of templates in contracts</field>
<field name="category_id" ref="base.module_category_sales_management"/>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="comment">the field template of the analytic accounts and contracts will be required.</field>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>

View File

@ -1,5 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_analytic_analysis_summary_user_sale,account_analytic_analysis.summary.user sale,model_account_analytic_analysis_summary_user,base.group_sale_salesman,1,0,0,0
access_account_analytic_analysis_summary_month_sale,account_analytic_analysis.summary.month sale,model_account_analytic_analysis_summary_month,base.group_sale_salesman,1,0,0,0
access_account_analytic_analysis_summary_user,account_analytic_analysis.summary.user,model_account_analytic_analysis_summary_user,account.group_account_manager,1,0,0,0
access_account_analytic_analysis_summary_month,account_analytic_analysis.summary.month,model_account_analytic_analysis_summary_month,account.group_account_manager,1,0,0,0
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_analytic_analysis_summary_user_sale,account_analytic_analysis.summary.user sale,model_account_analytic_analysis_summary_user,base.group_sale_salesman,1,0,0,0
access_account_analytic_analysis_summary_month_sale,account_analytic_analysis.summary.month sale,model_account_analytic_analysis_summary_month,base.group_sale_salesman,1,0,0,0
access_account_analytic_analysis_summary_user,account_analytic_analysis.summary.user,model_account_analytic_analysis_summary_user,account.group_account_manager,1,0,0,0
access_account_analytic_analysis_summary_month,account_analytic_analysis.summary.month,model_account_analytic_analysis_summary_month,account.group_account_manager,1,0,0,0
access_edi_edi,access_edi_edi,edi.model_edi_edi,account.group_account_manager,1,1,1,1
access_account_analytic_invoice_line,account_analytic_invoice_line.user,model_account_analytic_invoice_line,account.group_account_user,1,1,1,1
access_account_analytic_invoice_line,account_analytic_invoice_line.user,model_account_analytic_invoice_line,base.group_sale_salesman,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_account_analytic_analysis_summary_user_sale account_analytic_analysis.summary.user sale model_account_analytic_analysis_summary_user base.group_sale_salesman 1 0 0 0
3 access_account_analytic_analysis_summary_month_sale account_analytic_analysis.summary.month sale model_account_analytic_analysis_summary_month base.group_sale_salesman 1 0 0 0
4 access_account_analytic_analysis_summary_user account_analytic_analysis.summary.user model_account_analytic_analysis_summary_user account.group_account_manager 1 0 0 0
5 access_account_analytic_analysis_summary_month account_analytic_analysis.summary.month model_account_analytic_analysis_summary_month account.group_account_manager 1 0 0 0
6 access_edi_edi access_edi_edi edi.model_edi_edi account.group_account_manager 1 1 1 1
7 access_account_analytic_invoice_line account_analytic_invoice_line.user model_account_analytic_invoice_line account.group_account_user 1 1 1 1
8 access_account_analytic_invoice_line account_analytic_invoice_line.user model_account_analytic_invoice_line base.group_sale_salesman 1 1 1 1

View File

@ -0,0 +1,44 @@
-
In order to test Contract Recurrent Invoice I create a new Contract Template
-
!record {model: account.analytic.account, id: contract_template}:
name: Maintenance of Servers
company_id: base.main_company
partner_id: base.main_partner
type: template
recurring_invoices : 1
recurring_interval : 1
recurring_invoice_line_ids:
- quantity: 2.0
price_unit: 75.0
name: Database Administration
product_id: product.product_product_consultant
uom_id: product.product_uom_hour
-
I create a contract based on this template
-
!record {model: account.analytic.account, id: contract_main}:
partner_id: base.main_partner
template_id: account_analytic_analysis.contract_template
-
I check that the contract inherited from data of the template
-
!python {model: account.analytic.account}: |
contract = self.browse(cr, uid, ref('account_analytic_analysis.contract_main'))
template = self.browse(cr, uid, ref('account_analytic_analysis.contract_template'))
assert template.recurring_interval == contract.recurring_interval, "The recurring interval of the contract does not match with the contract template"
assert template.recurring_invoices == contract.recurring_invoices, "Invoice method of contract does not match with the contract template"
-
I generate all invoices from contracts having recurring invoicing
-
!python {model: account.analytic.account}: |
self.recurring_create_invoice(cr, uid)
-
I test the generated invoice
-
!python {model: account.invoice}: |
aid = ref('account_analytic_analysis.contract_main')
ids = self.search(cr, uid, [('invoice_line.account_analytic_id','=',aid)], context=context)
assert len(ids)>=1, 'No invoice created for the contract'
for invoice in self.browse(cr, uid, ids,context=context):
assert invoice.amount_untaxed == 150.0, "The invoice total is different than 150!"

View File

@ -7,7 +7,7 @@
<field name="arch" type="xml">
<tree string="Analytic Defaults">
<field name="sequence"/>
<field name="analytic_id" required="0" domain="[('parent_id','!=',False)]" groups="analytic.group_analytic_accounting"/>
<field name="analytic_id" required="0" groups="analytic.group_analytic_accounting"/>
<field name="product_id"/>
<field name="partner_id"/>
<field name="user_id"/>
@ -24,7 +24,7 @@
<field name="arch" type="xml">
<form string="Analytic Defaults" version="7.0">
<group col="4">
<field name="analytic_id" required="1" domain="[('parent_id','!=',False)]" groups="analytic.group_analytic_accounting"/>
<field name="analytic_id" required="1" groups="analytic.group_analytic_accounting"/>
<field name="sequence"/>
<separator string="Conditions" colspan="4"/>
<field name="product_id"/>

View File

@ -60,7 +60,7 @@
<field name="crossovered_budget_line" widget="one2many_list" mode="tree">
<tree string="Budget Lines" editable="top">
<field name="crossovered_budget_id"/>
<field name="analytic_account_id" groups="analytic.group_analytic_accounting" domain="[('parent_id','!=',False)]"/>
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
<field name="date_from"/>
<field name="date_to"/>
<field name="paid_date"/>
@ -72,7 +72,7 @@
<form string="Budget Lines" version="7.0">
<group col="4">
<field name="crossovered_budget_id"/>
<field name="analytic_account_id" groups="analytic.group_analytic_accounting" domain="[('parent_id','!=',False)]" />
<field name="analytic_account_id" groups="analytic.group_analytic_accounting"/>
<field name="date_from"/>
<field name="date_to"/>
<field name="paid_date"/>

View File

@ -194,7 +194,7 @@ class account_analytic_account(osv.osv):
'user_id': fields.many2one('res.users', 'Project Manager'),
'manager_id': fields.many2one('res.users', 'Account Manager'),
'date_start': fields.date('Start Date'),
'date': fields.date('Date End', select=True),
'date': fields.date('End Date', select=True),
'company_id': fields.many2one('res.company', 'Company', required=False), #not required because we want to allow different companies to use the same chart of account, except for leaf accounts.
'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'),('pending','To Renew'),('close','Closed'),('cancelled', 'Cancelled')], 'Status', required=True, track_visibility='onchange'),
'currency_id': fields.function(_currency, fnct_inv=_set_company_currency, #the currency_id field is readonly except if it's a view account and if there is no company

View File

@ -22,6 +22,8 @@ from openerp.osv import fields, osv
from openerp.osv.orm import intersect
from openerp.tools.translate import _
from openerp.addons.decimal_precision import decimal_precision as dp
class account_analytic_account(osv.osv):
_name = "account.analytic.account"
_inherit = "account.analytic.account"
@ -91,6 +93,11 @@ class account_analytic_account(osv.osv):
res[account.id] += line.invoice_id.amount_untaxed
return res
def _ca_invoiced_calc(self, cr, uid, ids, name, arg, context=None):
result = super(account_analytic_account, self)._ca_invoiced_calc(cr, uid, ids, name, arg, context=context)
for acc in self.browse(cr, uid, result.keys(), context=context):
result[acc.id] = result[acc.id] - (acc.expense_invoiced or 0.0)
return result
_columns = {
'charge_expenses' : fields.boolean('Charge Expenses'),
@ -98,6 +105,9 @@ class account_analytic_account(osv.osv):
'expense_to_invoice' : fields.function(_expense_to_invoice_calc, type='float'),
'remaining_expense' : fields.function(_remaining_expnse_calc, type="float"),
'est_expenses': fields.float('Estimation of Expenses to Invoice'),
'ca_invoiced': fields.function(_ca_invoiced_calc, type='float', string='Invoiced Amount',
help="Total customer invoiced amount for this account.",
digits_compute=dp.get_precision('Account')),
}
def on_change_template(self, cr, uid, id, template_id, context=None):

View File

@ -42,12 +42,12 @@ class analytic_user_funct_grid(osv.osv):
return {}
value = {}
if product_id:
prod = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
emp = emp_obj.browse(cr, uid, emp_id[0], context=context)
if emp.product_id and not product_id:
value['product_id'] = emp.product_id.id
prod = emp.product_id
if product_id:
prod = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
if prod:
value['price'] = prod.list_price
value['uom_id'] = prod.uom_id.id

View File

@ -11,7 +11,7 @@
<field name="user_id" on_change="onchange_user_product_id(user_id, product_id)"/>
<field name="product_id" on_change="onchange_user_product_id(user_id, product_id)" domain="[('type','=','service')]"/>
<field name="price"/>
<field name="uom_id"/>
<field name="uom_id" groups="product.group_uom"/>
</tree>
</field>
</record>
@ -25,7 +25,7 @@
<field name="user_id" on_change="onchange_user_product_id(user_id, product_id)"/>
<field name="product_id" domain="[('type','=','service')]" on_change="onchange_user_product_id(user_id, product_id)"/>
<field name="price"/>
<field name="uom_id"/>
<field name="uom_id" groups="product.group_uom"/>
</group>
</form>
</field>

159
addons/auth_ldap/i18n/mk.po Normal file
View File

@ -0,0 +1,159 @@
# Macedonian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-07 08:03+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-08 04:37+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: auth_ldap
#: field:res.company.ldap,user:0
msgid "Template User"
msgstr ""
#. module: auth_ldap
#: help:res.company.ldap,ldap_tls:0
msgid ""
"Request secure TLS/SSL encryption when connecting to the LDAP server. This "
"option requires a server with STARTTLS enabled, otherwise all authentication "
"attempts will fail."
msgstr ""
#. module: auth_ldap
#: view:res.company:0
#: view:res.company.ldap:0
msgid "LDAP Configuration"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_binddn:0
msgid "LDAP binddn"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,company:0
msgid "Company"
msgstr "Компанија"
#. module: auth_ldap
#: field:res.company.ldap,ldap_server:0
msgid "LDAP Server address"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_server_port:0
msgid "LDAP Server port"
msgstr ""
#. module: auth_ldap
#: help:res.company.ldap,create_user:0
msgid ""
"Automatically create local user accounts for new users authenticating via "
"LDAP"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_base:0
msgid "LDAP base"
msgstr ""
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "User Information"
msgstr "Информации за корисникот"
#. module: auth_ldap
#: field:res.company.ldap,ldap_password:0
msgid "LDAP password"
msgstr ""
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_company
msgid "Companies"
msgstr "Компании"
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "Process Parameter"
msgstr ""
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_company_ldap
msgid "res.company.ldap"
msgstr "res.company.ldap"
#. module: auth_ldap
#: help:res.company.ldap,user:0
msgid "User to copy when creating new users"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,ldap_tls:0
msgid "Use TLS"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,sequence:0
msgid "Sequence"
msgstr "Секвенца"
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "Login Information"
msgstr "Информации за најава"
#. module: auth_ldap
#: view:res.company.ldap:0
msgid "Server Information"
msgstr "Информации за сервер"
#. module: auth_ldap
#: model:ir.actions.act_window,name:auth_ldap.action_ldap_installer
msgid "Setup your LDAP Server"
msgstr ""
#. module: auth_ldap
#: view:res.company:0
#: field:res.company,ldaps:0
msgid "LDAP Parameters"
msgstr ""
#. module: auth_ldap
#: help:res.company.ldap,ldap_password:0
msgid ""
"The password of the user account on the LDAP server that is used to query "
"the directory."
msgstr ""
#. module: auth_ldap
#: help:res.company.ldap,ldap_binddn:0
msgid ""
"The user account on the LDAP server that is used to query the directory. "
"Leave empty to connect anonymously."
msgstr ""
#. module: auth_ldap
#: model:ir.model,name:auth_ldap.model_res_users
msgid "Users"
msgstr "Корисници"
#. module: auth_ldap
#: field:res.company.ldap,ldap_filter:0
msgid "LDAP filter"
msgstr ""
#. module: auth_ldap
#: field:res.company.ldap,create_user:0
msgid "Create user"
msgstr ""

View File

@ -21,7 +21,7 @@
<!-- add Reset Password button -->
<xpath expr="//div[@class='oe_right oe_button_box']" position="replace">
<div class="oe_right oe_button_box">
<button string="Send reset password instructions by email"
<button string="Send Reset Password Instructions"
type="object" name="action_reset_password" />
</div>
</xpath>

921
addons/crm_claim/i18n/mk.po Normal file
View File

@ -0,0 +1,921 @@
# Macedonian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-07 14:43+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-08 04:36+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: crm_claim
#: help:crm.claim.stage,fold:0
msgid ""
"This stage is not visible, for example in status bar or kanban view, when "
"there are no records in that stage to display."
msgstr ""
"Ова ниво е скриено, на пример во статусната странична лента или Kanban "
"преглед, кога нема записи од тоа ниво за прикажување."
#. module: crm_claim
#: field:crm.claim.report,nbr:0
msgid "# of Cases"
msgstr "# од случаи"
#. module: crm_claim
#: view:crm.claim:0
#: view:crm.claim.report:0
msgid "Group By..."
msgstr "Групирај по..."
#. module: crm_claim
#: view:crm.claim:0
msgid "Responsibilities"
msgstr "Одговорности"
#. module: crm_claim
#: help:sale.config.settings,fetchmail_claim:0
msgid ""
"Allows you to configure your incoming mail server, and create claims from "
"incoming emails."
msgstr ""
"Ви овозможува да го конфигурирате серверот за влезна пошта, и да креирате "
"рекламации од влезните е-пошти"
#. module: crm_claim
#: model:ir.model,name:crm_claim.model_crm_claim_stage
msgid "Claim stages"
msgstr "Етапи на рекламација"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "March"
msgstr "Март"
#. module: crm_claim
#: field:crm.claim.report,delay_close:0
msgid "Delay to close"
msgstr "Одолжување до затварање"
#. module: crm_claim
#: field:crm.claim,message_unread:0
msgid "Unread Messages"
msgstr "Непрочитани Пораки"
#. module: crm_claim
#: field:crm.claim,resolution:0
msgid "Resolution"
msgstr "Резолуција"
#. module: crm_claim
#: field:crm.claim,company_id:0
#: view:crm.claim.report:0
#: field:crm.claim.report,company_id:0
msgid "Company"
msgstr ""
#. module: crm_claim
#: model:ir.actions.act_window,help:crm_claim.crm_claim_categ_action
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a claim category.\n"
" </p><p>\n"
" Create claim categories to better manage and classify your\n"
" claims. Some example of claims can be: preventive action,\n"
" corrective action.\n"
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Кликнете за да креирате категорија на рекламација.\n"
" </p><p>\n"
" Креирајте категории на рекламации за подобро да ги "
"менаџирате и класифицирате вашите\n"
" рекламации. Некои примери на рекламации може да бидат: "
"превентивна акција,\n"
" корективна акција.\n"
" </p>\n"
" "
#. module: crm_claim
#: view:crm.claim.report:0
msgid "#Claim"
msgstr "#Рекламација"
#. module: crm_claim
#: field:crm.claim.stage,name:0
msgid "Stage Name"
msgstr "Име на етапа"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Salesperson"
msgstr "Продавач"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "Highest"
msgstr "Највисоко"
#. module: crm_claim
#: view:crm.claim.report:0
#: field:crm.claim.report,day:0
msgid "Day"
msgstr "Ден"
#. module: crm_claim
#: view:crm.claim:0
msgid "Claim Description"
msgstr "Опис на рекламација"
#. module: crm_claim
#: field:crm.claim,message_ids:0
msgid "Messages"
msgstr "Пораки"
#. module: crm_claim
#: model:crm.case.categ,name:crm_claim.categ_claim1
msgid "Factual Claims"
msgstr "Фактички рекламации"
#. module: crm_claim
#: selection:crm.claim,state:0
#: selection:crm.claim.report,state:0
#: selection:crm.claim.stage,state:0
msgid "Cancelled"
msgstr "Откажано"
#. module: crm_claim
#: model:crm.case.resource.type,name:crm_claim.type_claim2
msgid "Preventive"
msgstr "Превентивно"
#. module: crm_claim
#: help:crm.claim,message_unread:0
msgid "If checked new messages require your attention."
msgstr "Доколку е штиклирано, новите пораки го бараат вашето вниманите."
#. module: crm_claim
#: field:crm.claim.report,date_closed:0
msgid "Close Date"
msgstr "Затвори датум"
#. module: crm_claim
#: view:res.partner:0
msgid "False"
msgstr "Неточно"
#. module: crm_claim
#: field:crm.claim,ref:0
msgid "Reference"
msgstr "Референца"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Date of claim"
msgstr "Датум на рекламација"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "# Mails"
msgstr "# Пошти"
#. module: crm_claim
#: help:crm.claim,message_summary:0
msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Прикажува резиме на конверзација (број на пораки, ...). Ова резиме е "
"директно во html формат со цел да биде вметнато во kanban преглед."
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,date_deadline:0
#: field:crm.claim.report,date_deadline:0
msgid "Deadline"
msgstr "Краен рок"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,partner_id:0
#: view:crm.claim.report:0
#: field:crm.claim.report,partner_id:0
#: model:ir.model,name:crm_claim.model_res_partner
msgid "Partner"
msgstr "Партнер"
#. module: crm_claim
#: view:crm.claim:0
msgid "Follow Up"
msgstr "Следи"
#. module: crm_claim
#: selection:crm.claim,type_action:0
#: selection:crm.claim.report,type_action:0
msgid "Preventive Action"
msgstr "Превентивна акција"
#. module: crm_claim
#: field:crm.claim.report,section_id:0
msgid "Section"
msgstr "Секција"
#. module: crm_claim
#: view:crm.claim:0
msgid "Root Causes"
msgstr ""
#. module: crm_claim
#: field:crm.claim,user_fault:0
msgid "Trouble Responsible"
msgstr ""
#. module: crm_claim
#: field:crm.claim,priority:0
#: view:crm.claim.report:0
#: field:crm.claim.report,priority:0
msgid "Priority"
msgstr "Приоритет"
#. module: crm_claim
#: field:crm.claim.stage,fold:0
msgid "Hide in Views when Empty"
msgstr ""
#. module: crm_claim
#: field:crm.claim,message_follower_ids:0
msgid "Followers"
msgstr "Пратители"
#. module: crm_claim
#: view:crm.claim:0
#: selection:crm.claim,state:0
#: view:crm.claim.report:0
#: model:crm.claim.stage,name:crm_claim.stage_claim1
#: selection:crm.claim.stage,state:0
msgid "New"
msgstr "Ново"
#. module: crm_claim
#: field:crm.claim.stage,section_ids:0
msgid "Sections"
msgstr "Секции"
#. module: crm_claim
#: field:crm.claim,email_from:0
msgid "Email"
msgstr "Е-пошта"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "Lowest"
msgstr "Најниско"
#. module: crm_claim
#: field:crm.claim,action_next:0
msgid "Next Action"
msgstr "Следна акција"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "My Sales Team(s)"
msgstr "Мојот продажен тим(ови)"
#. module: crm_claim
#: field:crm.claim,create_date:0
msgid "Creation Date"
msgstr "Датум на креирање"
#. module: crm_claim
#: field:crm.claim,name:0
msgid "Claim Subject"
msgstr "Предмет на рекламација"
#. module: crm_claim
#: model:crm.claim.stage,name:crm_claim.stage_claim3
msgid "Rejected"
msgstr "Одбиено"
#. module: crm_claim
#: field:crm.claim,date_action_next:0
msgid "Next Action Date"
msgstr "Датум на следна акција"
#. module: crm_claim
#: model:ir.actions.act_window,help:crm_claim.action_report_crm_claim
msgid ""
"Have a general overview of all claims processed in the system by sorting "
"them with specific criteria."
msgstr ""
"Дава општ преглед на сите рекламации јои се обработени во системот преку "
"нивно сортирање со специфичен критериум."
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "July"
msgstr "Јули"
#. module: crm_claim
#: view:crm.claim.stage:0
#: model:ir.actions.act_window,name:crm_claim.crm_claim_stage_act
msgid "Claim Stages"
msgstr "Етапи на рекламација"
#. module: crm_claim
#: model:ir.ui.menu,name:crm_claim.menu_crm_case_claim-act
msgid "Categories"
msgstr "Категории"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,stage_id:0
#: view:crm.claim.report:0
#: field:crm.claim.report,stage_id:0
msgid "Stage"
msgstr "Етапа"
#. module: crm_claim
#: view:crm.claim:0
msgid "Dates"
msgstr "Датуми"
#. module: crm_claim
#: help:crm.claim,email_from:0
msgid "Destination email for email gateway."
msgstr ""
#. module: crm_claim
#: code:addons/crm_claim/crm_claim.py:194
#, python-format
msgid "No Subject"
msgstr "Без тема"
#. module: crm_claim
#: help:crm.claim.stage,state:0
msgid ""
"The related status for the stage. The status of your document will "
"automatically change regarding the selected stage. For example, if a stage "
"is related to the status 'Close', when your document reaches this stage, it "
"will be automatically have the 'closed' status."
msgstr ""
#. module: crm_claim
#: view:crm.claim:0
msgid "Settle"
msgstr ""
#. module: crm_claim
#: model:ir.ui.menu,name:crm_claim.menu_claim_stage_view
msgid "Stages"
msgstr ""
#. module: crm_claim
#: model:ir.actions.act_window,name:crm_claim.action_report_crm_claim
#: model:ir.ui.menu,name:crm_claim.menu_report_crm_claim_tree
msgid "Claims Analysis"
msgstr "Анализи на рекламации"
#. module: crm_claim
#: help:crm.claim.report,delay_close:0
msgid "Number of Days to close the case"
msgstr "Број на денови за затварање на случај"
#. module: crm_claim
#: model:ir.model,name:crm_claim.model_crm_claim_report
msgid "CRM Claim Report"
msgstr ""
#. module: crm_claim
#: view:sale.config.settings:0
msgid "Configure"
msgstr "Конфигурирај"
#. module: crm_claim
#: model:crm.case.resource.type,name:crm_claim.type_claim1
msgid "Corrective"
msgstr "Корективно"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "September"
msgstr "Септември"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "December"
msgstr "Декември"
#. module: crm_claim
#: view:crm.claim.report:0
#: field:crm.claim.report,month:0
msgid "Month"
msgstr "Месец"
#. module: crm_claim
#: field:crm.claim,type_action:0
#: view:crm.claim.report:0
#: field:crm.claim.report,type_action:0
msgid "Action Type"
msgstr "Тип на Акција"
#. module: crm_claim
#: field:crm.claim,write_date:0
msgid "Update Date"
msgstr "Датум на ажурирање"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Year of claim"
msgstr "Година на рекламација"
#. module: crm_claim
#: help:crm.claim.stage,case_default:0
msgid ""
"If you check this field, this stage will be proposed by default on each "
"sales team. It will not assign this stage to existing teams."
msgstr ""
"Доколку го означите ова поле, оваа етапа по правило ќе биде предложена на "
"секој продажен тим. Нема да се додели оваа етапа на постојните тимови."
#. module: crm_claim
#: field:crm.claim,categ_id:0
#: view:crm.claim.report:0
#: field:crm.claim.report,categ_id:0
msgid "Category"
msgstr "Категорија"
#. module: crm_claim
#: model:crm.case.categ,name:crm_claim.categ_claim2
msgid "Value Claims"
msgstr "Вредносни рекламации"
#. module: crm_claim
#: view:crm.claim:0
msgid "Responsible User"
msgstr "Одговорен корисник"
#. module: crm_claim
#: field:crm.claim,email_cc:0
msgid "Watchers Emails"
msgstr "Мејлови на набљудувачите"
#. module: crm_claim
#: help:crm.claim,email_cc:0
msgid ""
"These email addresses will be added to the CC field of all inbound and "
"outbound emails for this record before being sent. Separate multiple email "
"addresses with a comma"
msgstr ""
"Овие емаил адреси ќе бидат додадени во полето CC на сите влезни и излезни е-"
"пошти за овој запис пред да биде испратен. Одделете ги емаил адресите со "
"запирка."
#. module: crm_claim
#: selection:crm.claim.report,state:0
msgid "Draft"
msgstr "Нацрт"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "Low"
msgstr "Ниско"
#. module: crm_claim
#: field:crm.claim,date_closed:0
#: selection:crm.claim,state:0
#: selection:crm.claim.report,state:0
#: selection:crm.claim.stage,state:0
msgid "Closed"
msgstr "Затворено"
#. module: crm_claim
#: view:crm.claim:0
msgid "Reject"
msgstr "Одбиј"
#. module: crm_claim
#: view:res.partner:0
msgid "Partners Claim"
msgstr "Рекламација на партнери"
#. module: crm_claim
#: view:crm.claim.stage:0
msgid "Claim Stage"
msgstr "Етапа на рекламација"
#. module: crm_claim
#: view:crm.claim:0
#: selection:crm.claim,state:0
#: view:crm.claim.report:0
#: selection:crm.claim.report,state:0
#: selection:crm.claim.stage,state:0
msgid "Pending"
msgstr "Чекам"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,state:0
#: view:crm.claim.report:0
#: field:crm.claim.report,state:0
#: field:crm.claim.stage,state:0
msgid "Status"
msgstr "Статус"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "August"
msgstr "Август"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "Normal"
msgstr "Нормално"
#. module: crm_claim
#: help:crm.claim.stage,sequence:0
msgid "Used to order stages. Lower is better."
msgstr ""
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "June"
msgstr "Јуни"
#. module: crm_claim
#: field:crm.claim,id:0
msgid "ID"
msgstr "ID"
#. module: crm_claim
#: field:crm.claim,partner_phone:0
msgid "Phone"
msgstr "Телефон"
#. module: crm_claim
#: field:crm.claim,message_is_follower:0
msgid "Is a Follower"
msgstr "Пратител"
#. module: crm_claim
#: field:crm.claim.report,user_id:0
msgid "User"
msgstr "Корисник"
#. module: crm_claim
#: model:ir.actions.act_window,help:crm_claim.crm_claim_stage_act
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to setup a new stage in the processing of the claims. "
"\n"
" </p><p>\n"
" You can create claim stages to categorize the status of "
"every\n"
" claim entered in the system. The stages define all the "
"steps\n"
" required for the resolution of a claim.\n"
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Кликнете за да поставите нова етапа во обработката на "
"рекламациите. \n"
" </p><p>\n"
" Можете да креирате етапи на рекламација за да го "
"категоризирате статусот на секоја\n"
" рекламација внесена во системот. Етапите ги дефинираат сите "
"чекори\n"
" потребни за решавање на рекламацијата.\n"
" </p>\n"
" "
#. module: crm_claim
#: help:crm.claim,state:0
msgid ""
"The status is set to 'Draft', when a case is created. "
"If the case is in progress the status is set to 'Open'. "
"When the case is over, the status is set to 'Done'. If "
"the case needs to be reviewed then the status is set "
"to 'Pending'."
msgstr ""
"Статусот е подесен на 'Нацрт' кога случајот е креиран. Доколку случајот е во "
"тек, статусот се подесува на 'Отворено'. По завршувањето на случајот, "
"статусот се подесува на 'Завршено'. Доколку е потребно да се изврши проверка "
"на случајот тогаш статусот се подесува на 'Чекање'."
#. module: crm_claim
#: field:crm.claim,active:0
msgid "Active"
msgstr "Активен"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "November"
msgstr "Ноември"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Extended Filters..."
msgstr "Проширени филтри..."
#. module: crm_claim
#: view:crm.claim:0
msgid "Closure"
msgstr "Затварање"
#. module: crm_claim
#: help:crm.claim,section_id:0
msgid ""
"Responsible sales team. Define Responsible user and Email account for mail "
"gateway."
msgstr ""
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "October"
msgstr "октомври"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "January"
msgstr "Јануари"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,date:0
msgid "Claim Date"
msgstr "Датум на рекламација"
#. module: crm_claim
#: field:crm.claim,message_summary:0
msgid "Summary"
msgstr "Резиме"
#. module: crm_claim
#: model:ir.actions.act_window,name:crm_claim.crm_claim_categ_action
msgid "Claim Categories"
msgstr "Категории на рекламација"
#. module: crm_claim
#: field:crm.claim.stage,case_default:0
msgid "Common to All Teams"
msgstr "Заедничко за сите тимови"
#. module: crm_claim
#: view:crm.claim:0
#: view:crm.claim.report:0
#: model:ir.actions.act_window,name:crm_claim.act_claim_partner
#: model:ir.actions.act_window,name:crm_claim.crm_case_categ_claim0
#: model:ir.ui.menu,name:crm_claim.menu_crm_case_claims
#: view:res.partner:0
#: field:res.partner,claims_ids:0
msgid "Claims"
msgstr "Рекламации"
#. module: crm_claim
#: selection:crm.claim,type_action:0
#: selection:crm.claim.report,type_action:0
msgid "Corrective Action"
msgstr "Корективна акција"
#. module: crm_claim
#: model:crm.case.categ,name:crm_claim.categ_claim3
msgid "Policy Claims"
msgstr "Политика на рекламации"
#. module: crm_claim
#: view:crm.claim:0
msgid "Date Closed"
msgstr "Датум на затварање"
#. module: crm_claim
#: view:crm.claim:0
#: model:ir.model,name:crm_claim.model_crm_claim
#: model:ir.ui.menu,name:crm_claim.menu_config_claim
msgid "Claim"
msgstr "Рекламација"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "My Company"
msgstr "Мојата компанија"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Done"
msgstr "Завршено"
#. module: crm_claim
#: view:crm.claim:0
msgid "Claim Reporter"
msgstr ""
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Cancel"
msgstr "Откажи"
#. module: crm_claim
#: view:crm.claim.report:0
#: selection:crm.claim.report,state:0
msgid "Open"
msgstr "Отвори"
#. module: crm_claim
#: view:crm.claim:0
msgid "New Claims"
msgstr "Нови рекламации"
#. module: crm_claim
#: view:crm.claim:0
#: selection:crm.claim,state:0
#: model:crm.claim.stage,name:crm_claim.stage_claim5
#: selection:crm.claim.stage,state:0
msgid "In Progress"
msgstr "Во тек"
#. module: crm_claim
#: view:crm.claim:0
#: field:crm.claim,user_id:0
msgid "Responsible"
msgstr "Одговорен"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Search"
msgstr "Пребарувај"
#. module: crm_claim
#: view:crm.claim:0
msgid "Unassigned Claims"
msgstr "Недоделени рекламации"
#. module: crm_claim
#: field:crm.claim.report,delay_expected:0
msgid "Overpassed Deadline"
msgstr "Пречекорен краен рок"
#. module: crm_claim
#: field:crm.claim,cause:0
msgid "Root Cause"
msgstr ""
#. module: crm_claim
#: view:crm.claim:0
msgid "Claim/Action Description"
msgstr "Опис на рекламација/акција"
#. module: crm_claim
#: field:crm.claim,description:0
msgid "Description"
msgstr "Опис"
#. module: crm_claim
#: view:crm.claim:0
msgid "Search Claims"
msgstr "Барај рекламации"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "May"
msgstr "Мај"
#. module: crm_claim
#: view:crm.claim:0
#: view:crm.claim.report:0
msgid "Type"
msgstr "Tип"
#. module: crm_claim
#: view:crm.claim:0
msgid "Resolution Actions"
msgstr ""
#. module: crm_claim
#: field:crm.claim.stage,case_refused:0
msgid "Refused stage"
msgstr "Одбиена етапа"
#. module: crm_claim
#: model:ir.actions.act_window,help:crm_claim.crm_case_categ_claim0
msgid ""
"Record and track your customers' claims. Claims may be linked to a sales "
"order or a lot. You can send emails with attachments and keep the full "
"history for a claim (emails sent, intervention type and so on). Claims may "
"automatically be linked to an email address using the mail gateway module."
msgstr ""
#. module: crm_claim
#: field:crm.claim.report,email:0
msgid "# Emails"
msgstr "# Е-пошти"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Month of claim"
msgstr "Месец на рекламација"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "February"
msgstr "Февруари"
#. module: crm_claim
#: model:ir.model,name:crm_claim.model_sale_config_settings
msgid "sale.config.settings"
msgstr "sale.config.settings"
#. module: crm_claim
#: view:crm.claim.report:0
#: field:crm.claim.report,name:0
msgid "Year"
msgstr "Година"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "My company"
msgstr "Мојата компанија"
#. module: crm_claim
#: selection:crm.claim.report,month:0
msgid "April"
msgstr "Април"
#. module: crm_claim
#: view:crm.claim.report:0
msgid "My Case(s)"
msgstr "Мој случај (и)"
#. module: crm_claim
#: model:crm.claim.stage,name:crm_claim.stage_claim2
msgid "Settled"
msgstr ""
#. module: crm_claim
#: help:crm.claim,message_ids:0
msgid "Messages and communication history"
msgstr "Историја на пораки и комуникација"
#. module: crm_claim
#: field:sale.config.settings,fetchmail_claim:0
msgid "Create claims from incoming mails"
msgstr "Креира рекламации од влезни пошти"
#. module: crm_claim
#: field:crm.claim.stage,sequence:0
msgid "Sequence"
msgstr "Секвенца"
#. module: crm_claim
#: view:crm.claim:0
msgid "Actions"
msgstr "Дејства"
#. module: crm_claim
#: selection:crm.claim,priority:0
#: selection:crm.claim.report,priority:0
msgid "High"
msgstr "Високо"
#. module: crm_claim
#: field:crm.claim,section_id:0
#: view:crm.claim.report:0
msgid "Sales Team"
msgstr "Продажен тим"
#. module: crm_claim
#: field:crm.claim.report,create_date:0
msgid "Create Date"
msgstr "Креирај датум"
#. module: crm_claim
#: view:crm.claim:0
msgid "In Progress Claims"
msgstr "Рекламации во тек"
#. module: crm_claim
#: help:crm.claim.stage,section_ids:0
msgid ""
"Link between stages and sales teams. When set, this limitate the current "
"stage to the selected sales teams."
msgstr ""
"Линк помеѓу етапите и тимовите за продажба. Кога е подесено, ова ја "
"ограничува тековната етапа на селектираните тимови за продажба."
#. module: crm_claim
#: help:crm.claim.stage,case_refused:0
msgid "Refused stages are specific stages for done."
msgstr "Одбиените етапи се специфични етапи за завршување."

View File

@ -19,29 +19,36 @@
#
##############################################################################
import urllib
import random
try:
import simplejson as json
except ImportError:
import json # noqa
from openerp.osv import osv
from openerp.osv import fields
import urllib,re
import random, time
from openerp.tools.translate import _
from openerp import tools
def geo_find(addr):
addr = addr.encode('utf8')
regex = '<coordinates>([+-]?[0-9\.]+),([+-]?[0-9\.]+),([+-]?[0-9\.]+)</coordinates>'
url = 'http://maps.google.com/maps/geo?q=' + urllib.quote(addr) + '&output=xml&oe=utf8&sensor=false'
url = 'https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address='
url += urllib.quote(addr.encode('utf8'))
try:
xml = urllib.urlopen(url).read()
result = json.load(urllib.urlopen(url))
except Exception, e:
raise osv.except_osv(_('Network error'),
_('Cannot contact geolocation servers. Please make sure that your internet connection is up and running (%s).') % e)
if result['status'] != 'OK':
return None
if '<error>' in xml:
try:
geo = result['results'][0]['geometry']['location']
return float(geo['lat']), float(geo['lng'])
except (KeyError, ValueError):
return None
result = re.search(regex, xml, re.M|re.I)
if not result:
return None
return float(result.group(2)),float(result.group(1))
def geo_query_address(street=None, zip=None, city=None, state=None, country=None):
if country and ',' in country and (country.endswith(' of') or country.endswith(' of the')):

View File

@ -10,8 +10,8 @@
-
!python {model: res.partner}: |
partner = self.browse(cr, uid, ref('base.res_partner_2'))
assert 50 < partner.partner_latitude < 51 , "Latitude is wrong"
assert 3 < partner.partner_longitude < 5 , "Longitude is wrong"
assert 50 < partner.partner_latitude < 51, "Latitude is wrong: 50 < %s < 51" % partner.partner_latitude
assert 3 < partner.partner_longitude < 5, "Longitude is wrong: 3 < %s < 5" % partner.partner_longitude
-
I assign nearest partner to opportunity.
-
@ -23,8 +23,8 @@
!python {model: crm.lead}: |
lead = self.browse(cr, uid, ref('crm.crm_case_19'))
assert lead.partner_assigned_id.id == ref('base.res_partner_15') , "Opportuniy is not assigned nearest partner"
assert 50 < lead.partner_latitude < 55 , "Latitude is wrong"
assert -5 < lead.partner_longitude < 0, "Longitude is wrong"
assert 50 < lead.partner_latitude < 55, "Latitude is wrong: 50 < %s < 55" % lead.partner_latitude
assert -4 < lead.partner_longitude < -1, "Longitude is wrong: -4 < %s < -1" % lead.partner_longitude
-
I forward this opportunity to its nearest partner.
-

View File

@ -0,0 +1,200 @@
# Macedonian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-07 14:36+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-08 04:36+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: crm_profiling
#: view:crm_profiling.questionnaire:0
msgid "Questions List"
msgstr "Листа на прашања"
#. module: crm_profiling
#: view:crm_profiling.question:0
#: field:crm_profiling.question,answers_ids:0
msgid "Avalaible Answers"
msgstr "Достапни одговори"
#. module: crm_profiling
#: model:ir.actions.act_window,help:crm_profiling.open_questionnaires
msgid ""
"You can create specific topic-related questionnaires to guide your team(s) "
"in the sales cycle by helping them to ask the right questions. The "
"segmentation tool allows you to automatically assign a partner to a category "
"according to his answers to the different questionnaires."
msgstr ""
#. module: crm_profiling
#: field:crm_profiling.answer,question_id:0
#: field:crm_profiling.question,name:0
#: model:ir.model,name:crm_profiling.model_crm_profiling_question
#: field:open.questionnaire.line,question_id:0
msgid "Question"
msgstr "Прашање"
#. module: crm_profiling
#: model:ir.actions.act_window,name:crm_profiling.action_open_questionnaire
#: view:open.questionnaire:0
msgid "Open Questionnaire"
msgstr "Отвори прашалник"
#. module: crm_profiling
#: field:crm.segmentation,child_ids:0
msgid "Child Profiles"
msgstr ""
#. module: crm_profiling
#: view:crm.segmentation:0
msgid "Partner Segmentations"
msgstr "Сегментации на партнер"
#. module: crm_profiling
#: field:crm_profiling.answer,name:0
#: model:ir.model,name:crm_profiling.model_crm_profiling_answer
#: field:open.questionnaire.line,answer_id:0
msgid "Answer"
msgstr "Одговор"
#. module: crm_profiling
#: model:ir.model,name:crm_profiling.model_open_questionnaire_line
msgid "open.questionnaire.line"
msgstr "open.questionnaire.line"
#. module: crm_profiling
#: model:ir.model,name:crm_profiling.model_crm_segmentation
msgid "Partner Segmentation"
msgstr "Сегментација на партнер"
#. module: crm_profiling
#: view:res.partner:0
msgid "Profiling"
msgstr "Профилирање"
#. module: crm_profiling
#: view:crm_profiling.questionnaire:0
#: field:crm_profiling.questionnaire,description:0
msgid "Description"
msgstr "Опис"
#. module: crm_profiling
#: field:crm.segmentation,answer_no:0
msgid "Excluded Answers"
msgstr "Исклучени одговори"
#. module: crm_profiling
#: view:crm_profiling.answer:0
#: view:crm_profiling.question:0
#: field:res.partner,answers_ids:0
msgid "Answers"
msgstr "Одговори"
#. module: crm_profiling
#: model:ir.model,name:crm_profiling.model_open_questionnaire
msgid "open.questionnaire"
msgstr "отвори.прашалник"
#. module: crm_profiling
#: field:open.questionnaire,questionnaire_id:0
msgid "Questionnaire name"
msgstr "Име на прашалник"
#. module: crm_profiling
#: view:res.partner:0
msgid "Use a questionnaire"
msgstr "Употреби прашалник"
#. module: crm_profiling
#: field:open.questionnaire,question_ans_ids:0
msgid "Question / Answers"
msgstr "Прашање / Одговори"
#. module: crm_profiling
#: view:crm_profiling.questionnaire:0
#: model:ir.actions.act_window,name:crm_profiling.open_questionnaires
#: model:ir.ui.menu,name:crm_profiling.menu_segm_questionnaire
#: view:open.questionnaire:0
msgid "Questionnaires"
msgstr "Прашалници"
#. module: crm_profiling
#: help:crm.segmentation,profiling_active:0
msgid ""
"Check this box if you want to use this tab as "
"part of the segmentation rule. If not checked, "
"the criteria beneath will be ignored"
msgstr ""
"Означете го ова поле доколку сакате да го употребите ова јазиче како дел од "
"правилото за сегментација. Доколку не е означено, критериумот подолу ќе биде "
"игнориран"
#. module: crm_profiling
#: field:crm.segmentation,profiling_active:0
msgid "Use The Profiling Rules"
msgstr "Употреби правила за профилирање"
#. module: crm_profiling
#: constraint:crm.segmentation:0
msgid "Error ! You cannot create recursive profiles."
msgstr "Грешка ! Не може да креирате рекурсивни профили"
#. module: crm_profiling
#: field:crm.segmentation,answer_yes:0
msgid "Included Answers"
msgstr "Вклучени одговори"
#. module: crm_profiling
#: view:crm_profiling.question:0
#: field:crm_profiling.questionnaire,questions_ids:0
#: model:ir.actions.act_window,name:crm_profiling.open_questions
#: model:ir.ui.menu,name:crm_profiling.menu_segm_answer
msgid "Questions"
msgstr "Прашања"
#. module: crm_profiling
#: field:crm.segmentation,parent_id:0
msgid "Parent Profile"
msgstr "Профил на Родител"
#. module: crm_profiling
#: view:open.questionnaire:0
msgid "Cancel"
msgstr "Откажи"
#. module: crm_profiling
#: model:ir.model,name:crm_profiling.model_res_partner
msgid "Partner"
msgstr "Партнер"
#. module: crm_profiling
#: code:addons/crm_profiling/wizard/open_questionnaire.py:77
#: field:crm_profiling.questionnaire,name:0
#: model:ir.model,name:crm_profiling.model_crm_profiling_questionnaire
#: view:open.questionnaire:0
#: view:open.questionnaire.line:0
#: field:open.questionnaire.line,wizard_id:0
#, python-format
msgid "Questionnaire"
msgstr "Прашалник"
#. module: crm_profiling
#: view:open.questionnaire:0
msgid "Save Data"
msgstr "Зачувај податок"
#. module: crm_profiling
#: view:open.questionnaire:0
msgid "or"
msgstr "или"

View File

@ -0,0 +1,85 @@
# Hungarian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-10 21:58+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian <hu@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-11 04:55+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_project_task
msgid "Task"
msgstr "Feladat"
#. module: crm_todo
#: view:crm.lead:0
msgid "Timebox"
msgstr "Időkorlát"
#. module: crm_todo
#: view:crm.lead:0
msgid "Lead"
msgstr "Érdeklődő"
#. module: crm_todo
#: view:crm.lead:0
msgid "For cancelling the task"
msgstr "A munka visszavonásához"
#. module: crm_todo
#: view:crm.lead:0
msgid "Next"
msgstr "Következő"
#. module: crm_todo
#: model:ir.actions.act_window,name:crm_todo.crm_todo_action
#: model:ir.ui.menu,name:crm_todo.menu_crm_todo
msgid "My Tasks"
msgstr "Feladataim"
#. module: crm_todo
#: view:crm.lead:0
#: field:crm.lead,task_ids:0
msgid "Tasks"
msgstr "Feladatok"
#. module: crm_todo
#: view:crm.lead:0
msgid "Done"
msgstr "Elvégezve"
#. module: crm_todo
#: view:crm.lead:0
msgid "Cancel"
msgstr "Visszavonás"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_crm_lead
msgid "Lead/Opportunity"
msgstr "Lehetőség/Esély"
#. module: crm_todo
#: field:project.task,lead_id:0
msgid "Lead / Opportunity"
msgstr "Lehetőség/Esély"
#. module: crm_todo
#: view:crm.lead:0
msgid "For changing to done state"
msgstr "Elvégezve szintre váltáshoz"
#. module: crm_todo
#: view:crm.lead:0
msgid "Previous"
msgstr "Előző"

View File

@ -0,0 +1,124 @@
# Macedonian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-07 07:50+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-08 04:37+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Configure FTP Server"
msgstr ""
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_configuration
msgid "Auto Directory Configuration"
msgstr ""
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid ""
"Indicate the network address on which your OpenERP server should be "
"reachable for end-users. This depends on your network topology and "
"configuration, and will only affect the links displayed to the users. The "
"format is HOST:PORT and the default host (localhost) is only suitable for "
"access from the server machine itself.."
msgstr ""
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_knowledge_config_settings
msgid "knowledge.config.settings"
msgstr "knowledge.config.settings"
#. module: document_ftp
#: model:ir.actions.act_url,name:document_ftp.action_document_browse
msgid "Browse Files"
msgstr ""
#. module: document_ftp
#: help:knowledge.config.settings,document_ftp_url:0
msgid "Click the url to browse the documents"
msgstr ""
#. module: document_ftp
#: field:document.ftp.browse,url:0
msgid "FTP Server"
msgstr "FTP сервер"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_config_auto_directory
msgid "FTP Server Configuration"
msgstr ""
#. module: document_ftp
#: field:knowledge.config.settings,document_ftp_url:0
msgid "Browse Documents"
msgstr ""
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Browse"
msgstr "_Прегледај"
#. module: document_ftp
#: help:document.ftp.configuration,host:0
msgid ""
"Server address or IP and port to which users should connect to for DMS access"
msgstr ""
#. module: document_ftp
#: model:ir.ui.menu,name:document_ftp.menu_document_browse
msgid "Shared Repository (FTP)"
msgstr ""
#. module: document_ftp
#: field:document.ftp.configuration,host:0
msgid "Address"
msgstr "Адреса"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "Cancel"
msgstr "Откажи"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_browse
msgid "Document FTP Browse"
msgstr ""
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Knowledge Application Configuration"
msgstr "Конфигурација за апликација на знаење"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
msgid "Document Browse"
msgstr ""
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "or"
msgstr "или"
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "Browse Document"
msgstr ""
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "res_config_contents"
msgstr "res_config_contents"

View File

@ -0,0 +1,164 @@
# Macedonian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-07 12:27+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-08 04:36+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: document_webdav
#: field:document.webdav.dir.property,create_date:0
#: field:document.webdav.file.property,create_date:0
msgid "Date Created"
msgstr "Датумот е креиран"
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_document_props
msgid "Documents"
msgstr ""
#. module: document_webdav
#: view:document.webdav.dir.property:0
msgid "Document property"
msgstr "Сопственост на документ"
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Search Document properties"
msgstr ""
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: field:document.webdav.dir.property,namespace:0
#: view:document.webdav.file.property:0
#: field:document.webdav.file.property,namespace:0
msgid "Namespace"
msgstr "Простор за имиња"
#. module: document_webdav
#: field:document.directory,dav_prop_ids:0
msgid "DAV properties"
msgstr "DAV својства"
#. module: document_webdav
#: model:ir.model,name:document_webdav.model_document_webdav_file_property
msgid "document.webdav.file.property"
msgstr "document.webdav.file.property"
#. module: document_webdav
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Group By..."
msgstr "Групирај по..."
#. module: document_webdav
#: view:document.directory:0
msgid "These properties will be added to WebDAV requests"
msgstr "Овие својства ќе бидат додадени на WebDAV барањата"
#. module: document_webdav
#: model:ir.actions.act_window,name:document_webdav.action_file_props_form
msgid "DAV Properties for Documents"
msgstr "DAV својства за документи"
#. module: document_webdav
#: view:document.webdav.file.property:0
#: field:document.webdav.file.property,file_id:0
msgid "Document"
msgstr "Документ"
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_folder_props
msgid "Folders"
msgstr "Папки"
#. module: document_webdav
#: view:document.directory:0
msgid "WebDAV properties"
msgstr "WebDAV својства"
#. module: document_webdav
#: model:ir.actions.act_window,name:document_webdav.action_dir_props_form
msgid "DAV Properties for Folders"
msgstr "DAV својства за папки"
#. module: document_webdav
#: view:document.directory:0
#: view:document.webdav.dir.property:0
#: view:document.webdav.file.property:0
msgid "Properties"
msgstr "Својства"
#. module: document_webdav
#: field:document.webdav.dir.property,name:0
#: field:document.webdav.file.property,name:0
msgid "Name"
msgstr "Име"
#. module: document_webdav
#: model:ir.model,name:document_webdav.model_document_webdav_dir_property
msgid "document.webdav.dir.property"
msgstr "document.webdav.dir.property"
#. module: document_webdav
#: field:document.webdav.dir.property,value:0
#: field:document.webdav.file.property,value:0
msgid "Value"
msgstr "Вредност"
#. module: document_webdav
#: field:document.webdav.dir.property,dir_id:0
#: model:ir.model,name:document_webdav.model_document_directory
msgid "Directory"
msgstr "Директориум"
#. module: document_webdav
#: field:document.webdav.dir.property,write_uid:0
#: field:document.webdav.file.property,write_uid:0
msgid "Last Modification User"
msgstr "Корисник на последна измена"
#. module: document_webdav
#: view:document.webdav.dir.property:0
msgid "Dir"
msgstr "Дир."
#. module: document_webdav
#: field:document.webdav.dir.property,write_date:0
#: field:document.webdav.file.property,write_date:0
msgid "Date Modified"
msgstr "Изменет датум"
#. module: document_webdav
#: field:document.webdav.dir.property,create_uid:0
#: field:document.webdav.file.property,create_uid:0
msgid "Creator"
msgstr "Креатор"
#. module: document_webdav
#: view:document.webdav.file.property:0
msgid "Document Property"
msgstr ""
#. module: document_webdav
#: model:ir.ui.menu,name:document_webdav.menu_properties
msgid "DAV Properties"
msgstr ""
#. module: document_webdav
#: field:document.webdav.dir.property,do_subst:0
#: field:document.webdav.file.property,do_subst:0
msgid "Substitute"
msgstr ""

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-10 09:05+0000\n"
"Last-Translator: Fekete Mihai <mihai@erpsystems.ro>\n"
"PO-Revision-Date: 2013-03-12 12:56+0000\n"
"Last-Translator: Simonel Criste <simi@erpsystems.ro>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-12-22 05:58+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-03-13 04:37+0000\n"
"X-Generator: Launchpad (build 16532)\n"
#. module: email_template
#: field:email.template,email_from:0
@ -37,13 +37,13 @@ msgstr "Buton bara laterala pentru a deschide actiunea barei laterale"
#. module: email_template
#: field:res.partner,opt_out:0
msgid "Opt-Out"
msgstr ""
msgstr "Nu participati"
#. module: email_template
#: field:email.template,email_to:0
#: field:email_template.preview,email_to:0
msgid "To (Emails)"
msgstr ""
msgstr "Destinatar (Email-uri)"
#. module: email_template
#: field:email.template,mail_server_id:0
@ -76,7 +76,7 @@ msgstr "Adresa expeditorului (aici pot fi folositi inlocuitori)"
#. module: email_template
#: view:email.template:0
msgid "Remove context action"
msgstr ""
msgstr "Sterge actiunea cadru"
#. module: email_template
#: help:email.template,mail_server_id:0
@ -97,7 +97,7 @@ msgstr "Raport nume fisier"
#. module: email_template
#: view:email.template:0
msgid "Preview"
msgstr ""
msgstr "Previzualizare"
#. module: email_template
#: field:email.template,reply_to:0
@ -187,7 +187,7 @@ msgstr ""
"trimiteti un e-mail. Daca nu este setata, va fi folosita versiunea in limba "
"engleza. Aceasta ar trebui de obicei sa fie o expresie inlocuitoare care "
"furnizeaza codul limbii corespunzatoare, de exemplu "
"${obiect.partener_id.cod.limba}."
"${object.partner_id.lang.code}."
#. module: email_template
#: field:email_template.preview,res_id:0
@ -209,7 +209,7 @@ msgstr ""
#. module: email_template
#: view:email.template:0
msgid "Dynamic Value Builder"
msgstr ""
msgstr "Creare Valoare Dinamica"
#. module: email_template
#: model:ir.actions.act_window,name:email_template.wizard_email_template_preview
@ -227,6 +227,8 @@ msgid ""
"Display an option on related documents to open a composition wizard with "
"this template"
msgstr ""
"Afiseaza o optiune in documentele asociate pentru a deschide un wizard de "
"compoziite cu acest sablon"
#. module: email_template
#: help:email.template,email_cc:0
@ -249,7 +251,7 @@ msgstr "Avansat"
#. module: email_template
#: view:email_template.preview:0
msgid "Preview of"
msgstr ""
msgstr "Previzualizare a"
#. module: email_template
#: view:email_template.preview:0
@ -297,7 +299,7 @@ msgstr ""
#: field:email.template,copyvalue:0
#: field:email_template.preview,copyvalue:0
msgid "Placeholder Expression"
msgstr ""
msgstr "Expresie Substituenta"
#. module: email_template
#: field:email.template,sub_object:0
@ -321,7 +323,7 @@ msgstr "Adresa de raspuns preferata (aici pot fi folositi inlocuitori)"
#: field:email.template,ref_ir_value:0
#: field:email_template.preview,ref_ir_value:0
msgid "Sidebar Button"
msgstr ""
msgstr "Buton Bara laterala"
#. module: email_template
#: field:email.template,report_template:0
@ -344,24 +346,24 @@ msgstr "Model"
#. module: email_template
#: model:ir.model,name:email_template.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
msgstr "Wizard de compozitie email-uri"
#. module: email_template
#: view:email.template:0
msgid "Add context action"
msgstr ""
msgstr "Adauga contextul actiunii"
#. module: email_template
#: help:email.template,model_id:0
#: help:email_template.preview,model_id:0
msgid "The kind of document with with this template can be used"
msgstr ""
msgstr "Tipul de document cu care poate fi utilizat acest sablon"
#. module: email_template
#: field:email.template,email_recipients:0
#: field:email_template.preview,email_recipients:0
msgid "To (Partners)"
msgstr ""
msgstr "Destinatar (Parteneri)"
#. module: email_template
#: field:email.template,auto_delete:0
@ -382,7 +384,7 @@ msgstr ""
#: field:email.template,model:0
#: field:email_template.preview,model:0
msgid "Related Document Model"
msgstr ""
msgstr "Model Document Asociat"
#. module: email_template
#: view:email.template:0
@ -395,6 +397,8 @@ msgstr "Adresare"
msgid ""
"Comma-separated ids of recipient partners (placeholders may be used here)"
msgstr ""
"Id-uri despartite prin virgule ale partenerilor destinatari (aici pot fi "
"folositi substituenti)"
#. module: email_template
#: field:email.template,attachment_ids:0
@ -418,7 +422,7 @@ msgstr "Cc (copie carbon)"
#: field:email.template,model_id:0
#: field:email_template.preview,model_id:0
msgid "Applies to"
msgstr ""
msgstr "Se aplica pentru"
#. module: email_template
#: field:email.template,sub_model_object_field:0
@ -490,7 +494,7 @@ msgstr "Partener"
#: field:email.template,null_value:0
#: field:email_template.preview,null_value:0
msgid "Default Value"
msgstr ""
msgstr "Valoarea Implicita"
#. module: email_template
#: help:email.template,attachment_ids:0
@ -512,7 +516,7 @@ msgstr ""
#. module: email_template
#: view:email.template:0
msgid "Contents"
msgstr ""
msgstr "Cuprins"
#. module: email_template
#: field:email.template,subject:0

1130
addons/event/i18n/mk.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,187 @@
# Macedonian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-08 14:43+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-09 05:14+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Connection with username and password"
msgstr "Конекција со корисничко име и лозинка"
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_moodle_config_wiz
msgid "event.moodle.config.wiz"
msgstr "event.moodle.config.wiz"
#. module: event_moodle
#: help:event.moodle.config.wiz,server_moodle:0
msgid ""
"URL where you have your moodle server. For exemple: 'http://127.0.0.1' or "
"'http://localhost'"
msgstr ""
#. module: event_moodle
#: field:event.registration,moodle_user_password:0
msgid "Password for Moodle User"
msgstr "Лозинка за Moodle корисник"
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_password:0
msgid "Moodle Password"
msgstr "Moodle лозинка"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:137
#, python-format
msgid "Your email '%s' is wrong."
msgstr "Вашата е-пошта '%s' е погрешна."
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Connection with a Token"
msgstr "Конекција со токен"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid ""
"The easiest way to connect OpenERP with a moodle server is to create a "
"'token' in Moodle. It will be used to authenticate OpenERP as a trustable "
"application."
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,url:0
msgid "URL to Moodle Server"
msgstr "URL на Moodle Сервер"
#. module: event_moodle
#: help:event.moodle.config.wiz,url:0
msgid "The url that will be used for the connection with moodle in xml-rpc"
msgstr ""
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_registration
msgid "Event Registration"
msgstr "Регистрација на настан"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid ""
"Another approach is to create a user for OpenERP in Moodle. If you do so, "
"make sure that this user has appropriate access rights."
msgstr ""
#. module: event_moodle
#: field:event.registration,moodle_uid:0
msgid "Moodle User ID"
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,server_moodle:0
msgid "Moodle Server"
msgstr "Moodle Сервер"
#. module: event_moodle
#: field:event.event,moodle_id:0
msgid "Moodle ID"
msgstr "Moodle ID"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Server"
msgstr "Сервер"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:57
#: code:addons/event_moodle/event_moodle.py:105
#: code:addons/event_moodle/event_moodle.py:137
#, python-format
msgid "Error!"
msgstr "Грешка!"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:105
#, python-format
msgid "You must configure your moodle connection."
msgstr ""
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_username:0
#: field:event.registration,moodle_username:0
msgid "Moodle Username"
msgstr "Moodle корисничко име"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
#: model:ir.actions.act_window,name:event_moodle.configure_moodle
msgid "Configure Moodle"
msgstr "Конфигурирај Moodle"
#. module: event_moodle
#: field:event.moodle.config.wiz,moodle_token:0
msgid "Moodle Token"
msgstr "Moodle Токен"
#. module: event_moodle
#: help:event.moodle.config.wiz,moodle_username:0
msgid ""
"You can also connect with your username that you define when you create a "
"token"
msgstr ""
"Можете да се конектирате со вашето корисничко име што го дефинирате кога "
"креирате токен"
#. module: event_moodle
#: help:event.event,moodle_id:0
msgid "The identifier of this event in Moodle"
msgstr "Идентификувач на овој настан во Moodle"
#. module: event_moodle
#: help:event.moodle.config.wiz,moodle_token:0
msgid "Put your token that you created in your moodle server"
msgstr ""
#. module: event_moodle
#: model:ir.ui.menu,name:event_moodle.wizard_moodle
msgid "Moodle Configuration"
msgstr "Moodle Конфигурација"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "or"
msgstr "или"
#. module: event_moodle
#: code:addons/event_moodle/event_moodle.py:57
#, python-format
msgid "First configure your moodle connection."
msgstr ""
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Apply"
msgstr "Примени"
#. module: event_moodle
#: view:event.moodle.config.wiz:0
msgid "Cancel"
msgstr "Откажи"
#. module: event_moodle
#: model:ir.model,name:event_moodle.model_event_event
msgid "Event"
msgstr "Настан"

1912
addons/fleet/i18n/ar.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,188 @@
# Macedonian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-08 14:39+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-09 05:14+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: google_docs
#: code:addons/google_docs/google_docs.py:167
#, python-format
msgid "Key Error!"
msgstr ""
#. module: google_docs
#: view:google.docs.config:0
msgid ""
"for a presentation (slide show) document with url like "
"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id"
".p`, the ID is `presentation:123456789`"
msgstr ""
#. module: google_docs
#: view:google.docs.config:0
msgid ""
"for a text document with url like "
"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is "
"`document:123456789`"
msgstr ""
#. module: google_docs
#: field:google.docs.config,gdocs_resource_id:0
msgid "Google Resource ID to Use as Template"
msgstr ""
#. module: google_docs
#: view:google.docs.config:0
msgid ""
"for a drawing document with url like "
"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is "
"`drawings:123456789`"
msgstr ""
#. module: google_docs
#. openerp-web
#: code:addons/google_docs/static/src/xml/gdocs.xml:6
#, python-format
msgid "Add Google Doc..."
msgstr "Додади Google док..."
#. module: google_docs
#: view:google.docs.config:0
msgid ""
"This is the id of the template document, on google side. You can find it "
"thanks to its URL:"
msgstr ""
#. module: google_docs
#: model:ir.model,name:google_docs.model_google_docs_config
msgid "Google Docs templates config"
msgstr ""
#. module: google_docs
#. openerp-web
#: code:addons/google_docs/static/src/js/gdocs.js:25
#, python-format
msgid ""
"The user google credentials are not set yet. Contact your administrator for "
"help."
msgstr ""
#. module: google_docs
#: view:google.docs.config:0
msgid ""
"for a spreadsheet document with url like "
"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, "
"the ID is `spreadsheet:123456789`"
msgstr ""
#. module: google_docs
#: code:addons/google_docs/google_docs.py:129
#, python-format
msgid ""
"Your resource id is not correct. You can find the id in the google docs URL."
msgstr ""
#. module: google_docs
#: code:addons/google_docs/google_docs.py:153
#, python-format
msgid "Creating google docs may only be done by one at a time."
msgstr ""
#. module: google_docs
#: code:addons/google_docs/google_docs.py:83
#: code:addons/google_docs/google_docs.py:129
#: code:addons/google_docs/google_docs.py:153
#, python-format
msgid "Google Docs Error!"
msgstr ""
#. module: google_docs
#: code:addons/google_docs/google_docs.py:83
#, python-format
msgid "Check your google configuration in Users/Users/Synchronization tab."
msgstr ""
#. module: google_docs
#: model:ir.ui.menu,name:google_docs.menu_gdocs_config
msgid "Google Docs configuration"
msgstr ""
#. module: google_docs
#: model:ir.actions.act_window,name:google_docs.action_google_docs_users_config
#: model:ir.ui.menu,name:google_docs.menu_gdocs_model_config
msgid "Models configuration"
msgstr ""
#. module: google_docs
#: field:google.docs.config,model_id:0
msgid "Model"
msgstr "Модел"
#. module: google_docs
#. openerp-web
#: code:addons/google_docs/static/src/js/gdocs.js:28
#, python-format
msgid "User Google credentials are not yet set."
msgstr ""
#. module: google_docs
#: code:addons/google_docs/google_docs.py:167
#, python-format
msgid "Your Google Doc Name Pattern's key does not found in object."
msgstr ""
#. module: google_docs
#: help:google.docs.config,name_template:0
msgid ""
"Choose how the new google docs will be named, on google side. Eg. "
"gdoc_%(field_name)s"
msgstr ""
#. module: google_docs
#: view:google.docs.config:0
msgid "Google Docs Configuration"
msgstr ""
#. module: google_docs
#: help:google.docs.config,gdocs_resource_id:0
msgid ""
"\n"
"This is the id of the template document, on google side. You can find it "
"thanks to its URL: \n"
"*for a text document with url like "
"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is "
"`document:123456789`\n"
"*for a spreadsheet document with url like "
"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, "
"the ID is `spreadsheet:123456789`\n"
"*for a presentation (slide show) document with url like "
"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id"
".p`, the ID is `presentation:123456789`\n"
"*for a drawing document with url like "
"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is "
"`drawings:123456789`\n"
"...\n"
msgstr ""
#. module: google_docs
#: model:ir.model,name:google_docs.model_ir_attachment
msgid "ir.attachment"
msgstr "ir.attachment"
#. module: google_docs
#: field:google.docs.config,name_template:0
msgid "Google Doc Name Pattern"
msgstr ""

File diff suppressed because one or more lines are too long

View File

@ -74,9 +74,6 @@ class account_analytic_account(osv.osv):
'to_invoice': fields.many2one('hr_timesheet_invoice.factor', 'Timesheet Invoicing Ratio',
help="You usually invoice 100% of the timesheets. But if you mix fixed price and timesheet invoicing, you may use another ratio. For instance, if you do a 20% advance invoice (fixed price, based on a sales order), you should invoice the rest on timesheet with a 80% ratio."),
}
_defaults = {
'pricelist_id': lambda self, cr, uid, ctx: ctx.get('pricelist_id', False),
}
def on_change_partner_id(self, cr, uid, ids, partner_id, name, context=None):
res = super(account_analytic_account, self).on_change_partner_id(cr, uid, ids, partner_id, name, context=context)

49
addons/mrp_jit/i18n/mk.po Normal file
View File

@ -0,0 +1,49 @@
# Macedonian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2013-03-08 14:47+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-09 05:13+0000\n"
"X-Generator: Launchpad (build 16523)\n"
#. module: mrp_jit
#: model:ir.module.module,shortdesc:mrp_jit.module_meta_information
msgid "MRP JIT"
msgstr "MRP JIT"
#. module: mrp_jit
#: model:ir.module.module,description:mrp_jit.module_meta_information
msgid ""
"\n"
" This module allows Just In Time computation of procurement orders.\n"
"\n"
" If you install this module, you will not have to run the regular "
"procurement \n"
" scheduler anymore (but you still need to run the minimum order point "
"rule \n"
" scheduler, or for example let it run daily.)\n"
" All procurement orders will be processed immediately, which could in "
"some\n"
" cases entail a small performance impact.\n"
"\n"
" It may also increase your stock size because products are reserved as "
"soon\n"
" as possible and the scheduler time range is not taken into account "
"anymore. \n"
" In that case, you can not use priorities any more on the different "
"picking.\n"
" \n"
" \n"
" "
msgstr ""

View File

@ -253,7 +253,11 @@
<field name="view_type">form</field>
<field name="view_id" ref="view_warehouse_orderpoint_tree"/>
<field name="search_view_id" ref="warehouse_orderpoint_search" />
<field name="help">You can define your minimum stock rules, so that OpenERP will automatically create draft manufacturing orders or purchase quotations according to the stock level. Once the virtual stock of a product (= stock on hand minus all confirmed orders and reservations) is below the minimum quantity, OpenERP will generate a procurement request to increase the stock up to the maximum quantity.</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a reordering rules.
</p><p>You can define your minimum stock rules, so that OpenERP will automatically create draft manufacturing orders or request for quotations according to the stock level. Once the virtual stock of a product (= stock on hand minus all confirmed orders and reservations) is below the minimum quantity, OpenERP will generate a procurement request to increase the stock up to the maximum quantity.</p>
</field>
</record>
<act_window

2154
addons/project/i18n/es_CO.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -101,7 +101,7 @@
<page string="Description">
<field name="description" placeholder="Add an internal note..." groups="base.group_user"/>
</page>
<page string="Extra Info" groups="project.group_project_manager">
<page string="Extra Info" groups="project.group_project_manager,project.group_project_user">
<group string="Statistics">
<field name="day_open"/>
<field name="day_close"/>
@ -156,7 +156,7 @@
<field name="model">project.issue</field>
<field name="arch" type="xml">
<search string="Issue Tracker Search">
<field name="name" string="Issue" filter_domain="['|', '|',('partner_id','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
<field name="name" string="Issue/Contact" filter_domain="['|', '|',('partner_id','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
<field name="id"/>
<filter icon="terp-mail-message-new" string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]"/>
<separator/>

File diff suppressed because one or more lines are too long

View File

@ -209,7 +209,7 @@
<field name="name"/>
<field name="date_planned"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="account_analytic_id" groups="purchase.group_analytic_accounting" domain="[('parent_id','!=',False)]"/>
<field name="account_analytic_id" groups="purchase.group_analytic_accounting" domain="[('type','in',('normal','contract'))]"/>
<field name="product_qty" on_change="onchange_product_id(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id,parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)"/>
<field name="product_uom" groups="product.group_uom" on_change="onchange_product_uom(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)"/>
<field name="price_unit"/>
@ -395,7 +395,7 @@
<group>
<field name="taxes_id" widget="many2many_tags" domain="[('parent_id','=',False),('type_tax_use','!=','sale')]"/>
<field name="date_planned" widget="date"/>
<field name="account_analytic_id" colspan="2" groups="purchase.group_analytic_accounting" domain="[('parent_id','!=',False)]" />
<field name="account_analytic_id" colspan="2" groups="purchase.group_analytic_accounting"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
</group>
@ -461,7 +461,7 @@
domain="[('parent_id','=',False),('type_tax_use','!=','sale')]"/>
<field name="date_planned" widget="date" readonly="1"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="account_analytic_id" colspan="4" groups="purchase.group_analytic_accounting" domain="[('parent_id','!=',False)]"/>
<field name="account_analytic_id" colspan="4" groups="purchase.group_analytic_accounting"/>
<field name="invoiced"/>
</group>
</group>

File diff suppressed because it is too large Load Diff

View File

@ -49,7 +49,7 @@ class sale_configuration(osv.osv_memory):
implied_group='product.group_sale_pricelist',
help="""Allows to manage different prices based on rules per category of customers.
Example: 10% for retailers, promotion of 5 EUR on this product, etc."""),
'group_uom':fields.boolean("Allow using different units of measures",
'group_uom':fields.boolean("Allow using different units of measure",
implied_group='product.group_uom',
help="""Allows you to select and maintain different units of measure for products."""),
'group_discount_per_so_line': fields.boolean("Allow setting a discount on the sales order lines",

View File

@ -704,7 +704,9 @@ class sale_order_line(osv.osv):
'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok', '=', True)], change_default=True),
'invoice_lines': fields.many2many('account.invoice.line', 'sale_order_line_invoice_rel', 'order_line_id', 'invoice_id', 'Invoice Lines', readonly=True),
'invoiced': fields.function(_fnct_line_invoiced, string='Invoiced', type='boolean',
store={'account.invoice': (_order_lines_from_invoice, ['state'], 10)}),
store={
'account.invoice': (_order_lines_from_invoice, ['state'], 10),
'sale.order.line': (lambda self,cr,uid,ids,ctx=None: ids, ['invoice_lines'], 10)}),
'price_unit': fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Product Price'), readonly=True, states={'draft': [('readonly', False)]}),
'type': fields.selection([('make_to_stock', 'from stock'), ('make_to_order', 'on order')], 'Procurement Method', required=True, readonly=True, states={'draft': [('readonly', False)]},
help="From stock: When needed, the product is taken from the stock or we wait for replenishment.\nOn order: When needed, the product is purchased or produced."),
@ -815,7 +817,7 @@ class sale_order_line(osv.osv):
vals = self._prepare_order_line_invoice_line(cr, uid, line, False, context)
if vals:
inv_id = self.pool.get('account.invoice.line').create(cr, uid, vals, context=context)
cr.execute('insert into sale_order_line_invoice_rel (order_line_id,invoice_id) values (%s,%s)', (line.id, inv_id))
self.write(cr, uid, [line.id], {'invoice_lines': [(4, inv_id)]}, context=context)
sales.add(line.order_id.id)
create_ids.append(inv_id)
# Trigger workflow events
@ -1021,17 +1023,4 @@ class account_invoice(osv.Model):
sale_order_obj.message_post(cr, uid, so_ids, body=_("Invoice paid"), context=context)
return res
class stock_picking(osv.osv):
_inherit = 'stock.picking'
def action_done(self, cr, uid, ids, context=None):
""" Changes picking state to done. This method is called at the end of
the workflow by the activity "done".
"""
for record in self.browse(cr, uid, ids, context):
if record.type == "out" and record.sale_id:
self.pool.get('sale.order').message_post(cr, uid, [record.sale_id.id], body=_("Products delivered"), context=context)
return super(stock_picking, self).action_done(cr, uid, ids, context=context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -156,7 +156,7 @@
<field name="partner_id" on_change="onchange_partner_id(partner_id, context)" domain="[('customer','=',True)]" context="{'search_default_customer':1, 'show_address': 1}" options='{"always_reload": True}'/>
<field name="partner_invoice_id" groups="sale.group_delivery_invoice_address" context="{'default_type':'invoice'}"/>
<field name="partner_shipping_id" groups="sale.group_delivery_invoice_address" context="{'default_type':'delivery'}"/>
<field name="project_id" context="{'partner_id':partner_id, 'pricelist_id':pricelist_id, 'default_name':name, 'default_type': 'contract'}" groups="sale.group_analytic_accounting" domain="[('type','in',['view','normal','contract'])]"/>
<field name="project_id" context="{'partner_id':partner_id, 'default_pricelist_id':pricelist_id, 'default_name':name, 'default_type': 'contract'}" groups="sale.group_analytic_accounting" domain="[('type','in',['view','normal','contract'])]"/>
</group>
<group>
<field name="date_order"/>

View File

@ -20,6 +20,7 @@
##############################################################################
from openerp.osv import fields, osv
from openerp.tools.translate import _
class stock_move(osv.osv):
_inherit = 'stock.move'
@ -119,6 +120,15 @@ class stock_picking(osv.osv):
'invoice_ids': [(4, invoice_id)],
})
return super(stock_picking, self)._invoice_hook(cursor, user, picking, invoice_id)
def action_done(self, cr, uid, ids, context=None):
""" Changes picking state to done. This method is called at the end of
the workflow by the activity "done".
"""
for record in self.browse(cr, uid, ids, context):
if record.type == "out" and record.sale_id:
self.pool.get('sale.order').message_post(cr, uid, [record.sale_id.id], body=_("Products delivered"), context=context)
return super(stock_picking, self).action_done(cr, uid, ids, context=context)
# Redefinition of the new field in order to update the model stock.picking.out in the orm
# FIXME: this is a temporary workaround because of a framework bug (ref: lp996816). It should be removed as soon as